PageSourceSearch

https://algomax.fr/assets/i18n-D1u94_7-.js

js algomax.fr collected 2026-09-25 20:23:20 UTC 25,048 bytes, 47 lines download raw bytes

1const v = { code: "en", label: "English", switch: "Fran\xE7ais" }, b = { language: v }, h = "Fran\xE7ais", f = "Former CTO. I take over Lovable/Bolt prototypes stuck in production, then deliver the next step: SaaS, mobile app, and CTO guidance. Based in Strasbourg.", k = "All rights reserved.", _ = { clients: "clients" }, y = { main: { title: "Navigation", links: { home: { title: "Home", link: "/" }, services: { title: "Services", link: "/services" }, comparatifs: { title: "Comparisons", link: "/comparatifs" }, tarifs: { title: "Pricing", link: "/tarifs" }, agence: { title: "Agency", link: "/agence" }, realisations: { title: "Case studies", link: "/realisations" }, blog: { title: "Blog", link: "/blog" } } }, services: { title: "Services", links: { vibecodingCleanup: { title: "Vibecoding Cleanup", link: "/realisations/vread" }, tarifsGlobaux: { title: "Global pricing", link: "/tarifs" }, prixAgentIa: { title: "AI agent pricing", link: "/prix-agent-ia" }, webAppSaas: { title: "Web App SaaS", link: "/services/application-saas" }, applicationMobile: { title: "Mobile app", link: "/services/application-mobile" }, migrationNextjs: { title: "Next.js migration", link: "/services/nextjs-migration" }, developpementReactRouter: { title: "React Router development", link: "/services/react-router-development" }, expertsTailwind: { title: "Tailwind CSS experts", link: "/services/tailwind-css-experts" }, prixSiteWeb: { title: "Website pricing", link: "/prix-site-web" }, prixApplicationWeb: { title: "Web app pricing", link: "/prix-application-web" } } }, comparatifs: { title: "Comparisons", links: { agentIaVsChatbot: { title: "AI agent vs chatbot", link: "/agent-ia-vs-chatbot" }, reactNativeVsFlutter: { title: "React Native vs Flutter", link: "/react-native-vs-flutter" }, n8nVsZapier: { title: "n8n vs Zapier", link: "/n8n-vs-zapier" }, monorepoRemixNestjs: { title: "Remix + NestJS monorepo", link: "/blog/comment-configurer-un-monorepo-avec-remix-nest-js-et-turborepo" } } }, realisations: { title: "Case studies", links: { vread: { title: "Vread", link: "/realisations/vread" }, blitzreels: { title: "BlitzReels", link: "/realisations/blitzreels" }, goodcollect: { title: "GoodCollect", link: "/realisations/goodcollect" } } }, products: { title: "Our products", links: { blitzreels: { title: "BlitzReels", link: "https://blitzreels.com", external: true }, linkrefine: { title: "LinkRefine", link: "https://linkrefine.com", external: true }, duckseoAi: { title: "DuckSEO AI", link: "https://duckseoai.com", external: true } } }, contact: { title: "Contact", links: { whatsapp: { title: "Chat on WhatsApp", link: "/contact", external: true }, googleReview: { title: "Google Review", link: "https://share.google/iKvFjl34nuCLdPLbn", external: true }
1, parrainage: { title: "Referral (10% commission)", link: "/parrainage" } } }, community: { title: "Community", links: { ressources: { title: "Free resources", link: "/ressources-gratuites" }, formations: { title: "Courses", link: "/formations" }, testimonial: { title: "Leave a testimonial", link: "/testimonial" }, newsletter: { title: "Newsletter", link: "/newsletter" }, communauteLink: { title: "Community", link: "/communaute" } } } }, w = { mentions: { title: "Legal notice", link: "/mentions-legales" }, privacy: { title: "Privacy policy", link: "/politique-de-confidentialite" }, cgv: { title: "Terms", link: "/cgv" } }, x = { kicker: "Discord server", title: "Join the Algomax Discord", description: "A small Discord server. A few free resources, and questions I answer when I have the time.", cta: "Join free", iframeTitle: "Discord \u2014 Algomax" }, A = { findUsOn: "Find us on", followers: "followers" }, S = { langToggle: h, tagline: f, copyright: k, ratings: _, categories: y, legal: w, discord: x, social: A }, C = { title: "Lovable/Bolt prototype stuck? Recovery in 14 days | Algomax", description: "Former CTO in Strasbourg. I take over unstable prototypes (web SaaS or mobile app), fix critical bugs, and deliver a clean production base in 14 days. Vread case: 3 Apple rejections, then approval." }, j = { headline_prefix: "We launch your app in ", headline_accent: "3 weeks", subtitle_build: "We build the", subtitle_app: "app", subtitle_rank: "get it ranked on", subtitle_create: "and create the", subtitle_content: "content", subtitle_bring: "to bring you", subtitle_customers: "customers", tooltip_app_title: "We build all types of products", tooltip_app_saas: "SaaS web applications", tooltip_app_mobile: "iOS & Android mobile apps", tooltip_app_ai: "AI agents & automations", tooltip_app_tools: "Internal tools & dashboards", tooltip_seo_title: "SEO: be found by your customers", tooltip_seo_keywords: "Keyword research for your market", tooltip_seo_pages: "Optimized pages that rank on Google", tooltip_seo_technical: "Technical SEO (speed, structure, meta)", tooltip_seo_tracking: "Monthly tracking & adjustments", tooltip_content_title: "Content that attracts & converts", tooltip_content_blog: "Blog articles optimized for SEO", tooltip_content_landing: "Landing pages that convert", tooltip_content_social: "Social media content strategy", tooltip_content_email: "Email sequences & nurturing", trust_on: "on", trust_clients: "clients", trust_your_code: "your code", cta_primary: "Contact me on WhatsApp", cta_secondary: "View our case studies", cta_micro_proof: "No commitment \xB7 Response within 2h", logos_label: "Trusted by founders and teams", vread_image_alt: "Virgile holding the Vread app on the App Store", vread_proof: "Real-world proof: Vread approved and live on the App Store." }, q = { slots_one: "{{count}} slot available in ", slots_other: "{{count}} slots available in " }, W = { badge: "Case study", quote: '"Without Virgile, the app would still be rejected by Apple."', author: "Tanguy Warsmann, founder of Vread", description: "His prototype was rejected by Apple 3 times. It was unstable and impossible to maintain. We rebuilt the foundation, and the app is now live on the App Store.", cta: "Read the case study", image_alt: "Vread mobile app", stats: [{ value: "3 Apple rejections", label: "Before takeover" }, { value: "iOS approval", label: "After Algomax" }, { value: "Still a client", label: "6 months later" }] }, R = { badge: "Client feedback", title: "Approved by founders" }, O = { title: "What's included", what_we_do: "What we do", also_included: "Also included", mobile_title: "Is your project a mobile app?", mobile_subtitle: "These extras are included in the Sprint", cta: "Start on WhatsApp" }, T = { badge: "14 days, end to end", title: "How it works.", subtitle: "From the first message to launch. Every step ends with a concrete deliverable.", deliverable: "Deliverable", cta_book: "Contact me on WhatsApp", cta_whatsapp: "Talk about your project", cta_case: "View Vread case", steps: [{ title: "First exchange", contactLink: "https://wa.me/33782200608?text=Bonjour%2C%20j%27ai%20visit%C3%A9%20le%20site%20Algomax%20et%20j%27aimerais%20%C3%A9changer%20avec%20vous.", description: "Message me on WhatsApp or by email. You show us your app, we identify blockers, and evaluate if the 14-day recovery fits your case.", details: ["Review of your stack and current project state", "Identification of critical blockers", "Feasibility estimate for a 14-day recovery", "Honest answer if we are not the right fit"], deliverable: "A clear feasibility verdict, no commitment required." }, { title: "Audit and diagnosis", description: "We access your code and audit it deeply: architecture, dependencies, tests, CI/CD, and security.", details: ["Complete review of the codebase and architecture", "Mapping of critical bugs and fragile zones", "Performance and security analysis", "Prioritized action plan by impact"], deliverable: "Detailed diagnostic report with prioritized action plan." }, { title: "Fixes and stabilization", description: "Execution starts. You see progress every day. We do not just patch issues: we clean, restructure, and harden.", details: ["Fix critical bugs crashing the app", "Clean fragile areas to prevent regressions", "Set up reliable deployment (CI/CD)", "Automated tests on key user flows", "Performance optimization where needed"], deliverable: "A stable app, tested and deployable in one click." }, { title: "Delivery and handoff", description: "We do not disappear after delivery. You receive everything for any developer to continue without us.", details: ["Clean code delivered in your Git repository (100% yours)", "Complete technical documentation", "Handoff video explaining decisions", "30 days of included 
1support", "App Store / Play Store checks for mobile apps"], deliverable: "Code, docs, and video. Fully in your hands.", final: true }] }, V = { title: "What you may be thinking.", subtitle: "We have heard these objections before. Here are our answers.", cta_long: "Request an action plan on WhatsApp", cta_short: "Chat on WhatsApp", items: [{ id: "too-expensive", objection: '"It is too expensive."', answer: "A critical production bug costs users every day. A 14-day recovery costs less than one month of a senior engineer salary and gives you a stable base." }, { id: "no-time", objection: '"We do not have time."', answer: "That is exactly why we work in 14 days. No endless meetings. One written exchange, then execution with daily visibility." }, { id: "bad-experience", objection: '"We already got burned by a developer."', answer: "Understood. Everything is scoped before start: scope, deadline, fixed price. And you keep 100% of the code." }, { id: "what-if-fail", objection: '"What if it fails?"', answer: "The 48-hour audit is there to decide. If the project is not recoverable, we tell you directly." }, { id: "dependency", objection: '"We will become dependent."', answer: "The goal is the opposite. We deliver clean documented code with handoff video so any developer can continue after us." }] }, z = { meta: C, hero: j, availability: q, vread: W, testimonials: R, offer: O, process: T, faq: V }, P = "en-US", E = { locale: P }, L = "Fran\xE7ais", I = { langToggle: L }, $ = { code: "fr", label: "Fran\xE7ais", switch: "English" }, F = { language: $ }, D = "English", N = "Ex-CTO, je reprends des prototypes Lovable/Bolt qui bloquent en production. Puis je livre la suite: SaaS web, app mobile et accompagnement CTO. Bas\xE9 \xE0 Strasbourg.", B = "Tous droits r\xE9serv\xE9s.", G = { clients: "clients" }, M = { main: { title: "Navigation", links: { home: { title: "Accueil", link: "/" }, services: { title: "Services", link: "/services" }, comparatifs: { title: "Comparatifs", link: "/comparatifs" }, tarifs: { title: "Tarifs", link: "/tarifs" }, agence: { title: "Agence", link: "/agence" }, realisations: { title: "R\xE9alisations", link: "/realisations" }, blog: { title: "Blog", link: "/blog" } } }, services: { title: "Services", links: { vibecodingCleanup: { title: "Vibecoding Cleanup", link: "/realisations/vread" }, tarifsGlobaux: { title: "Tarifs globaux", link: "/tarifs" }, prixAgentIa: { title: "Prix Agent IA", link: "/prix-agent-ia" }, webAppSaas: { title: "Web App SaaS", link: "/services/application-saas" }, applicationMobile: { title: "Application Mobile", link: "/services/application-mobile" }, migrationNextjs: { title: "Migration Next.js", link: "/services/nextjs-migration" }, developpementReactRouter: { title: "D\xE9veloppement React Router", link: "/services/react-router-development" }, expertsTailwind: { title: "Experts Tailwind CSS", link: "/services/tailwind-css-experts" }, prixSiteWeb: { title: "Prix site web", link: "/prix-site-web" }, prixApplicationWeb: { title: "Prix application web", link: "/prix-application-web" } } }, comparatifs: { title: "Comparatifs", links: { agentIaVsChatbot: { title: "Agent IA vs Chatbot", link: "/agent-ia-vs-chatbot" }, reactNativeVsFlutter: { title: "React Native vs Flutter", link: "/react-native-vs-flutter" }, n8nVsZapier: { title: "n8n vs Zapier", link: "/n8n-vs-zapier" }, monorepoRemixNestjs: { title: "Monorepo Remix + NestJS", link: "/blog/comment-configurer-un-monorepo-avec-remix-nest-js-et-turborepo" } } }, realisations: { title: "R\xE9alisations", links: { vread: { title: "Vread", link: "/realisations/vread" }, blitzreels: { title: "BlitzReels", link: "/realisations/blitzreels" }, goodcollect: { title: "GoodCollect", link: "/realisations/goodcollect" } } }, products: { title: "Nos Produits", links: { blitzreels: { title: "BlitzReels", link: "https://blitzreels.com", external: true }, linkrefine: { title: "LinkRefine", link: "https://linkrefine.com", external: true }, duckseoAi: { title: "DuckSEO AI", link: "https://duckseoai.com", external: true } } }, contact: { title: "Contact", links: { whatsapp: { title: "Discuter sur WhatsApp", link: "/contact", external: true }, googleReview: { title: "Avis Google", link: "https://share.google/iKvFjl34nuCLdPLbn", external: true }
1, parrainage: { title: "Parrainage (10% commission)", link: "/parrainage" } } }, community: { title: "Communaut\xE9", links: { ressources: { title: "Ressources gratuites", link: "/ressources-gratuites" }, formations: { title: "Formations", link: "/formations" }, testimonial: { title: "Laisser un t\xE9moignage", link: "/testimonial" }, newsletter: { title: "Newsletter", link: "/newsletter" }, communauteLink: { title: "Communaut\xE9", link: "/communaute" } } } }, U = { mentions: { title: "Mentions l\xE9gales", link: "/mentions-legales" }, privacy: { title: "Politique de confidentialit\xE9", link: "/politique-de-confidentialite" }, cgv: { title: "CGV", link: "/cgv" } }, H = { kicker: "Serveur Discord", title: "Rejoins le Discord Algomax", description: "Un petit serveur Discord. Quelques ressources gratuites et des questions auxquelles je r\xE9ponds quand j'ai le temps.", cta: "Rejoindre gratuitement", iframeTitle: "Discord \u2014 Algomax" }, J = { findUsOn: "Retrouve-nous sur", followers: "abonn\xE9s" }, Z = { langToggle: D, tagline: N, copyright: B, ratings: G, categories: M, legal: U, discord: H, social: J }, K = { title: "Prototype Lovable/Bolt bloqu\xE9 ? Reprise en 14 jours | Algomax", description: "Ex-CTO \xE0 Strasbourg. Je reprends votre prototype instable (SaaS web ou app mobile), corrige les bugs critiques et livre une base propre en 14 jours. Cas Vread: 3 refus Apple puis validation." }, Y = { headline_prefix: "On lance votre app en ", headline_accent: "3 semaines", subtitle_build: "On livre l\u2019", subtitle_app: "app", subtitle_rank: "on la r\xE9f\xE9rence sur", subtitle_create: "et on cr\xE9e le", subtitle_content: "contenu", subtitle_bring: "pour attirer vos", subtitle_customers: "clients", tooltip_app_title: "On construit tous types de produits", tooltip_app_saas: "Applications SaaS web", tooltip_app_mobile: "Apps mobiles iOS & Android", tooltip_app_ai: "Agents IA & automatisations", tooltip_app_tools: "Outils internes & tableaux de bord", tooltip_seo_title: "SEO\xA0: \xEAtre trouv\xE9 par vos clients", tooltip_seo_keywords: "Recherche de mots-cl\xE9s pour votre march\xE9", tooltip_seo_pages: "Pages optimis\xE9es qui remontent sur Google", tooltip_seo_technical: "SEO technique (vitesse, structure, balises)", tooltip_seo_tracking: "Suivi mensuel & ajustements", tooltip_content_title: "Du contenu qui attire & convertit", tooltip_content_blog: "Articles de blog optimis\xE9s SEO", tooltip_content_landing: "Landing pages qui convert
1issent", tooltip_content_social: "Strat\xE9gie de contenu r\xE9seaux sociaux", tooltip_content_email: "S\xE9quences email & nurturing", trust_on: "sur", trust_clients: "clients", trust_your_code: "votre code", cta_primary: "M'\xE9crire sur WhatsApp", cta_secondary: "Voir nos r\xE9alisations", cta_micro_proof: "Sans engagement \xB7 R\xE9ponse en moins de 2h", logos_label: "Ils nous ont fait confiance", vread_image_alt: "Virgile tient l'app Vread sur l'App Store", vread_proof: "Preuve en conditions r\xE9elles : app Vread valid\xE9e et en ligne sur l'App Store." }, Q = { slots_one: "{{count}} place dispo en ", slots_other: "{{count}} places dispo en " }, X = { badge: "\xC9tude de cas", quote: `"Sans Virgile, l'app serait encore refus\xE9e par Apple."`, author: "Tanguy Warsmann, fondateur de Vread", description: "Son prototype avait \xE9t\xE9 refus\xE9 3 fois par Apple. Instable, impossible \xE0 maintenir. On a tout repris, et l'app est en ligne sur l'App Store.", cta: "Lire l'\xE9tude de cas", image_alt: "Vread - Le Strava de la lecture", stats: [{ value: "3 refus Apple", label: "Avant reprise" }, { value: "Validation iOS", label: "Apr\xE8s Algomax" }, { value: "Toujours client", label: "6 mois apr\xE8s la reprise" }] }, ee = { badge: "Retours clients", title: "Approuv\xE9 par les fondateurs" }, te = { title: "Ce qui est inclus", what_we_do: "Ce qu'on fait", also_included: "En plus", mobile_title: "Votre projet est une app mobile ?", mobile_subtitle: "Ces extras sont inclus dans le Sprint", cta: "D\xE9marrer sur WhatsApp" }, ie = { badge: "14 jours, du d\xE9but \xE0 la fin", title: "Comment \xE7a se passe.", subtitle: "Du premier message \xE0 la mise en ligne. Chaque \xE9tape se termine par un livrable concret.", deliverable: "Livrable", cta_book: "M'\xE9crire sur WhatsApp", cta_whatsapp: "Parler de votre projet", cta_case: "Voir cas Vread", steps: [{ title: "Premier \xE9change", contactLink: "https://wa.me/33782200608?text=Bonjour%2C%20j%27ai%20visit%C3%A9%20le%20site%20Algomax%20et%20j%27aimerais%20%C3%A9changer%20avec%20vous.", description: "Vous m'\xE9crivez sur WhatsApp ou par email. Vous me montrez votre app, je comprends o\xF9 \xE7a bloque et j'\xE9value si la reprise en 14 jours est adapt\xE9e \xE0 votre situation.", details: ["Analyse de votre stack technique et de l'\xE9tat du projet", "Identification des blocages critiques", "Estimation de faisabilit\xE9 en 14 jours", "R\xE9ponse honn\xEAte : si on ne peut pas aider, on vous le dit"], deliverable: "Un avis clair sur la faisabilit\xE9, sans engagement." }, { title: "Audit et diagnostic", description: "On acc\xE8de \xE0 votre code et on l'analyse en profondeur. Pas un survol : on regarde l'architecture, les d\xE9pendances, les tests, la CI/CD, les failles de s\xE9curit\xE9.", details: ["Revue compl\xE8te du code source et de l'architecture", "Cartographie des bugs critiques et des zones fragiles", "Analyse des performances et des failles de s\xE9curit\xE9", "Plan d'action prioris\xE9 avec les corrections par ordre d'impact"], deliverable: "Un rapport de diagnostic d\xE9taill\xE9 avec le plan d'action prioris\xE9." }, { title: "Corrections et stabilisation", description: "On passe \xE0 l'action. Chaque jour, vous voyez les corrections avancer en temps r\xE9el. On ne se contente pas de patcher : on nettoie, on restructure, on s\xE9curise.", details: ["Correction des bugs critiques qui font planter votre app", "Nettoyage des zones fragiles pour \xE9viter les r\xE9gressions", "Mise en place d'un d\xE9ploiement fiable (CI/CD)", "Tests automatis\xE9s sur les parcours utilisateurs cl\xE9s", "Optimisation des performances si n\xE9cessaire"], deliverable: "Une app stable, test\xE9e, d\xE9ployable en un clic." }, { title: "Livraison et passation", description: "On ne dispara\xEEt pas apr\xE8s la livraison. Vous recevez tout ce qu'il faut pour que n'importe quel d\xE9veloppeur puisse reprendre le projet sans nous.", details: ["Code propre livr\xE9 sur votre d\xE9p\xF4t Git (100% propri\xE9taire)", "Documentation technique compl\xE8te", "Vid\xE9o de passation qui explique chaque d\xE9cision", "30 jours de support inclus apr\xE8s livraison", "V\xE9rification App Store / Play Store si app mobile"], deliverable: "Le code, la doc, la vid\xE9o. C'est chez vous, z\xE9ro d\xE9pendance.", final: true }] }, se = { title: "Ce que vous vous dites peut-\xEAtre.", subtitle: "On a d\xE9j\xE0 entendu ces objections. Voici nos r\xE9ponses.", cta_long: "Demander un plan d'action sur WhatsApp", cta_short: "Parler sur WhatsApp", items: [{ id: "trop-cher", objection: "\xABC'est trop cher.\xBB", answer: "Un bug critique en production vous co\xFBte des utilisateurs chaque jour. La reprise en 14 jours co\xFBte moins qu'un mois de salaire d'un d\xE9veloppeur senior, et vous repartez avec une base stable." }, { id: "pas-le-temps", objection: "\xABOn n'a pas le temps.\xBB", answer: "C'est justement pour \xE7a qu'on travaille en 14 jours. Pas de r\xE9unions interminables. Un \xE9change \xE9crit, puis on avance. Vous suivez en temps r\xE9el." }, { id: "fait-avoir", objection: "\xABOn s'est d\xE9j\xE0 fait avoir par un dev.\xBB", answer: "On comprend. C'est pour \xE7a que tout est cadr\xE9 avant de commencer : p\xE9rim\xE8tre, d\xE9lai, prix fixe. Et vou
1s gardez 100 % du code, z\xE9ro d\xE9pendance." }, { id: "marche-pas", objection: "\xABEt si \xE7a marche pas ?\xBB", answer: "L'audit de 48h est l\xE0 pour trancher. Si le projet n'est pas r\xE9cup\xE9rable, on vous le dit. Pas de surprise, pas de facture cach\xE9e." }, { id: "dependant", objection: "\xABOn va devenir d\xE9pendant.\xBB", answer: "L'objectif, c'est l'inverse. On livre un code propre, document\xE9, avec une vid\xE9o de passation. N'importe quel d\xE9veloppeur peut reprendre apr\xE8s nous." }] }, ae = { meta: K, hero: Y, availability: Q, vread: X, testimonials: ee, offer: te, process: ie, faq: se }, oe = "fr-FR", ne = { locale: oe }, re = "English", le = { langToggle: re }, ce = { fr: { common: F, home: ae, navigation: le, footer: Z, meta: ne }, en: { common: b, home: z, navigation: I, footer: S, meta: E } }, pe = Object.keys(ce), ue = "fr", de = /* @__PURE__ */ new Set(["/", "/auth/discord", "/auth/github", "/auth/google", "/agence", "/agence-strasbourg", "/agent-ia-vs-chatbot", "/blog", "/cancel", "/cgv", "/changelog", "/communaute", "/comparatifs", "/connect", "/contact", "/creer-ta-premiere-app-nextjs-15", "/discord", "/epic-stack", "/facebook", "/forgot-password", "/formation-react-router-7", "/formation-vibecoding", "/formations", "/forge42", "/hostinger", "/instagram", "/la-stack-algomax", "/linkedin", "/lovable-vs-developpeur", "/logout", "/magic-link-expired", "/magic-link-success", "/magic-login", "/mentions-legales", "/n8n-vs-zapier", "/newsletter", "/partenaires", "/parrainage", "/politique-de-confidentialite", "/prisma", "/prix-agent-ia", "/prix-application-mobile", "/prix-application-web", "/prix-site-web", "/react-native-vs-flutter", "/realisations", "/realisations/blitzreels", "/realisations/cliple", "/realisations/goodcollect", "/realisations/vread", "/register", "/resend-verification", "/reset-password", "/services", "/services/agent-ia", "/services/agent-ia-comptabilite", "/services/agent-ia-e-commerce", "/services/agent-ia-email", "/services/agent-ia-immobilier", "/services/agent-ia-juridique", "/services/agent-ia-recrutement", "/services/agent-ia-service-client", "/services/agent-ia-sur-mesure", "/services/agent-ia-telegram", "/services/agent-ia-vocal", "/services/agent-ia-whatsapp", "/services/application-mobile", "/services/application-mobile-ia", "/services/application-saas", "/services/application-saas-ia", "/services/audit-technique", "/services/automatisation-n8n", "/services/chatbot-ia", "/services/cto-freelance", "/services/developpement-fullstack", "/services/ia-generative", "/services/nextjs-migration", "/services/prix-agent-ia", "/services/react-router-development", "/services/site-web", "/services/tailwind-css-experts", "/services/vibe-coding-cleanup", "/signin", "/strapi", "/success", "/tarifs", "/testimonial", "/testimonials", "/tools/strapi", "/tiktok", "/twitter", "/verify", "/verify-email", "/webhooks", "/x", "/youtube"]), ge = ["/blog", "/auth", "/connect"];
2function u(e) {
3  return pe.includes(e);
4}
5function p(e) {
6  if (u(e)) return e;
7}
8function he(e) {
9  const i = e.split("/").filter(Boolean)[0];
10  return p(i);
11}
12function d(e) {
13  const i = e.split("/").filter(Boolean)[0];
14  if (!u(i)) return e || "/";
15  const t = e.replace(new RegExp(`^/${i}`), "") || "/";
16  return t.startsWith("/") ? t : `/${t}`;
17}
18function fe(e) {
19  return p(e) === "en" ? "en-US" : "fr-FR";
20}
21function g(e) {
22  return e ? e.startsWith("http://") || e.startsWith("https://") || e.startsWith("#") || e.startsWith("/") ? e : `/${e}` : "/";
23}
24function me(e) {
25  const i = e.indexOf("#"), t = i >= 0 ? e.slice(0, i) : e, s = t.indexOf("?");
26  return s >= 0 ? t.slice(0, s) : t;
27}
28function ve(e) {
29  const i = g(e);
30  if (i.startsWith("http://") || i.startsWith("https://") || i.startsWith("#")) return false;
31  const t = me(i), s = d(t || "/");
32  return de.has(s) ? true : ge.some((a) => s === a || s.startsWith(`${a}/`));
33}
34function ke({ lang: e, path: i }) {
35  const t = g(i), s = p(e) ?? ue;
36  if (t.startsWith("http://") || t.startsWith("https://") || t.startsWith("#")) return t;
37  const a = t.indexOf("#"), l = a >= 0 ? t.slice(a) : "", n = a >= 0 ? t.slice(0, a) : t, r = n.indexOf("?"), c = r >= 0 ? n.slice(r) : "", m = r >= 0 ? n.slice(0, r) : n, o = d(m || "/");
38  return s === "fr" ? `${o}${c}${l}` : ve(o) ? `${o === "/" ? "/en" : `/en${o}`}${c}${l}` : `${o}${c}${l}`;
39}
40export {
41  ue as D,
42  he as d,
43  fe as g,
44  ve as i,
45  ke as l,
46  d as s
47};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.