next-auto-i18n 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/DOCUMENTATION.md +63 -8
  2. package/README.md +9 -5
  3. package/dist/cli/index.js +15 -7
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/injector/index.d.ts +14 -5
  6. package/dist/injector/index.d.ts.map +1 -1
  7. package/dist/injector/index.js +32 -17
  8. package/dist/injector/index.js.map +1 -1
  9. package/dist/injector/locale-structure-injector.d.ts +13 -0
  10. package/dist/injector/locale-structure-injector.d.ts.map +1 -0
  11. package/dist/injector/locale-structure-injector.js +156 -0
  12. package/dist/injector/locale-structure-injector.js.map +1 -0
  13. package/dist/injector/middleware-injector.d.ts.map +1 -1
  14. package/dist/injector/middleware-injector.js +47 -5
  15. package/dist/injector/middleware-injector.js.map +1 -1
  16. package/dist/injector/request-injector.d.ts +9 -0
  17. package/dist/injector/request-injector.d.ts.map +1 -0
  18. package/dist/injector/request-injector.js +37 -0
  19. package/dist/injector/request-injector.js.map +1 -0
  20. package/dist/injector/switcher-injector.d.ts +4 -0
  21. package/dist/injector/switcher-injector.d.ts.map +1 -1
  22. package/dist/injector/switcher-injector.js +7 -28
  23. package/dist/injector/switcher-injector.js.map +1 -1
  24. package/dist/scanner/filters.d.ts.map +1 -1
  25. package/dist/scanner/filters.js +19 -0
  26. package/dist/scanner/filters.js.map +1 -1
  27. package/dist/scanner/index.d.ts +2 -0
  28. package/dist/scanner/index.d.ts.map +1 -1
  29. package/dist/scanner/index.js +41 -4
  30. package/dist/scanner/index.js.map +1 -1
  31. package/dist/utils/deps.d.ts.map +1 -1
  32. package/dist/utils/deps.js +5 -3
  33. package/dist/utils/deps.js.map +1 -1
  34. package/package.json +1 -1
package/DOCUMENTATION.md CHANGED
@@ -117,12 +117,19 @@ npx next-auto-i18n init
117
117
  ▸ Rewriting components
118
118
  ✓ 47 replacements in 12 files
119
119
 
120
+ ▸ Checking dependencies
121
+ ✓ next-intl installed
122
+
123
+ ▸ Rewriting components
124
+ ✓ 47 replacements in 12 files
125
+
120
126
  ▸ Configuring Next.js
121
- ✓ layout.tsx configured
122
127
  ✓ next.config configured
123
128
  ✓ middleware.ts created
124
129
  ✓ i18n/routing.ts created
125
- LanguageSwitcher injected
130
+ i18n/request.ts created
131
+ ✓ LanguageSwitcher created
132
+ ✓ app/[locale]/ structured
126
133
 
127
134
  ✓ Internationalization configured successfully!
128
135
  Languages: fr → en, es
@@ -346,17 +353,54 @@ npx next-auto-i18n init
346
353
 
347
354
  ┌──────────────────────────────────────┐
348
355
  │ 7. Next.js Config Injection │
349
- │ • layout.tsx → NextIntlClientProvider │
350
356
  │ • next.config → createNextIntlPlugin │
351
- │ • middleware.ts routing
352
- │ • i18n/routing.ts → locale definitions
353
- │ • LanguageSwitcherfloating widget
357
+ │ • middleware.ts or proxy.ts
358
+ │ • i18n/routing.ts → locale list
359
+ │ • i18n/request.tsServer Components
360
+ │ • LanguageSwitcher.tsx → widget │
361
+ │ • app/[locale]/layout.tsx → provider │
362
+ │ • app/[locale]/page.tsx (moved) │
363
+ │ • app/layout.tsx → HTML shell │
354
364
  └──────────────────────────────────────┘
355
365
 
356
366
 
357
367
  ✓ i18n-ready site with language switcher
358
368
  ```
359
369
 
370
+ ### Generated Project Structure
371
+
372
+ After running `next-auto-i18n init`, your project will have this structure:
373
+
374
+ ```
375
+ your-project/
376
+ ├── app/
377
+ │ ├── layout.tsx ← Simplified to HTML shell (<html><body>{children}</body></html>)
378
+ │ ├── globals.css ← Untouched
379
+ │ └── [locale]/
380
+ │ ├── layout.tsx ← NEW — NextIntlClientProvider + LanguageSwitcher
381
+ │ └── page.tsx ← Moved from app/page.tsx
382
+
383
+ ├── components/
384
+ │ └── LanguageSwitcher.tsx ← NEW — floating language switcher widget
385
+
386
+ ├── i18n/
387
+ │ ├── routing.ts ← NEW — locale definitions
388
+ │ └── request.ts ← NEW — Server Component config (getRequestConfig)
389
+
390
+ ├── messages/
391
+ │ ├── fr.json ← NEW — source language keys
392
+ │ ├── en.json ← NEW — translated
393
+ │ └── es.json ← NEW — translated
394
+
395
+ ├── middleware.ts ← NEW — i18n routing (proxy.ts on Next.js >= 16)
396
+ ├── next.config.ts ← Modified — wrapped with createNextIntlPlugin
397
+ └── auto-i18n.config.json ← NEW — tool configuration
398
+ ```
399
+
400
+ All modified files have a `.backup` copy created automatically before any change.
401
+
402
+ ---
403
+
360
404
  ### AST Scanning
361
405
 
362
406
  The scanner uses [ts-morph](https://ts-morph.com/) to parse TypeScript/JSX via AST (Abstract Syntax Tree). This means it understands your code structure, not just raw text.
@@ -736,10 +780,16 @@ next-auto-i18n/
736
780
  │ ├── generator/ # Key generation + JSON file creation
737
781
  │ ├── translator/ # DeepL API client + translation orchestration
738
782
  │ ├── rewriter/ # JSX/attribute rewriting via AST
739
- │ ├── injector/ # Next.js config injection (layout, config, middleware, routing, switcher)
783
+ │ ├── injector/ # Next.js config injection:
784
+ │ │ ├── config-injector.ts # next.config wrapping
785
+ │ │ ├── middleware-injector.ts # middleware.ts / proxy.ts
786
+ │ │ ├── routing-injector.ts # i18n/routing.ts
787
+ │ │ ├── request-injector.ts # i18n/request.ts
788
+ │ │ ├── switcher-injector.ts # LanguageSwitcher component
789
+ │ │ ├── locale-structure-injector.ts # app/[locale]/ structure
790
+ │ │ └── layout-injector.ts # layout utilities
740
791
  │ └── utils/ # Config, env, logger, dependency utilities
741
792
  ├── tests/ # Vitest test suites (298 tests)
742
- ├── auto-i18n-specs.md # Project specifications
743
793
  └── DOCUMENTATION.md # This file
744
794
  ```
745
795
 
@@ -783,6 +833,11 @@ The test suite covers all modules:
783
833
  - [x] `next-auto-i18n missing` — report untranslated keys
784
834
  - [x] Floating language switcher widget (auto-injected, customizable)
785
835
  - [x] Automatic `next-intl` dependency installation
836
+ - [x] `app/[locale]/` structure auto-creation (required by next-intl App Router)
837
+ - [x] `i18n/request.ts` generation (required for Server Components)
838
+ - [x] Dynamic `<html lang>` attribute
839
+ - [x] Next.js 16 `proxy.ts` detection
840
+ - [x] Scan scope limited to Next.js conventional directories
786
841
  - [ ] `--watch` mode — auto-sync on file changes
787
842
  - [ ] Support for Vite + React (without Next.js)
788
843
  - [ ] Custom key naming strategies
package/README.md CHANGED
@@ -47,7 +47,9 @@ Et en quelques secondes :
47
47
  - Traduit automatiquement vers chaque langue cible
48
48
  - Installe `next-intl` automatiquement si absent
49
49
  - Remplace les strings en dur par `t("cle")`
50
- - Configure `layout.tsx`, `next.config`, `middleware.ts`, `i18n/routing.ts`
50
+ - Configure `next.config`, `middleware.ts` (ou `proxy.ts` sur Next.js 16+)
51
+ - Genere `i18n/routing.ts` + `i18n/request.ts` (requis pour les Server Components)
52
+ - Cree la structure `app/[locale]/` requise par le App Router next-intl
51
53
  - Injecte un **Language Switcher flottant** (personnalisable) pour changer de langue
52
54
 
53
55
  ## Commandes
@@ -148,15 +150,17 @@ Chaque string devient une cle i18n normalisee :
148
150
 
149
151
  ### 5. Injection config Next.js
150
152
 
151
- - `layout.tsx` : ajoute `NextIntlClientProvider` + `getMessages()`
152
153
  - `next.config` : wrappe avec `createNextIntlPlugin`
153
- - `middleware.ts` : cree avec le routing i18n
154
+ - `middleware.ts` / `proxy.ts` : routing i18n (proxy.ts si Next.js >= 16)
154
155
  - `i18n/routing.ts` : definit les locales
155
- - `LanguageSwitcher.tsx` : widget flottant pour changer de langue
156
+ - `i18n/request.ts` : configuration `getRequestConfig` pour les Server Components
157
+ - `app/[locale]/layout.tsx` : cree avec `NextIntlClientProvider` + `LanguageSwitcher`
158
+ - `app/[locale]/page.tsx` : la page existante est deplacee ici
159
+ - `app/layout.tsx` : simplifie en HTML shell (`<html><body>{children}</body></html>`)
156
160
 
157
161
  ### 6. Language Switcher
158
162
 
159
- Un composant flottant est automatiquement genere et injecte dans votre layout. Personnalisable via `SWITCHER_CONFIG` dans `components/LanguageSwitcher.tsx` : position, theme (light/dark), couleur d'accent, offset.
163
+ Un composant flottant est automatiquement genere dans `components/LanguageSwitcher.tsx` et inclus dans `app/[locale]/layout.tsx` (dans le provider). Personnalisable via `SWITCHER_CONFIG` : position, theme (light/dark), couleur d'accent, offset.
160
164
 
161
165
  ## Securite
162
166
 
package/dist/cli/index.js CHANGED
@@ -54,7 +54,9 @@ program
54
54
  logger.success(`${CONFIG_FILENAME} créé`);
55
55
  // 2. Scan
56
56
  logger.step('Scan du projet');
57
- const strings = await scanProject(projectRoot);
57
+ const strings = await scanProject(projectRoot, {
58
+ ignorePatterns: config.ignore,
59
+ });
58
60
  logger.success(`${strings.length} strings trouvées`);
59
61
  if (strings.length === 0) {
60
62
  logger.warn('Aucune string traduisible trouvée — arrêt');
@@ -133,10 +135,6 @@ program
133
135
  defaultLocale: sourceLocale,
134
136
  silent: true,
135
137
  });
136
- if (injResult.layout.ok)
137
- logger.success('layout.tsx configuré');
138
- else if (injResult.layout.error)
139
- logger.warn(`layout.tsx — ${injResult.layout.error}`);
140
138
  if (injResult.config.ok)
141
139
  logger.success('next.config configuré');
142
140
  else if (injResult.config.error)
@@ -149,10 +147,18 @@ program
149
147
  }
150
148
  if (injResult.routing.ok)
151
149
  logger.success('i18n/routing.ts créé');
150
+ if (injResult.request.ok)
151
+ logger.success('i18n/request.ts créé');
152
+ else if (injResult.request.error)
153
+ logger.warn(`i18n/request.ts — ${injResult.request.error}`);
152
154
  if (injResult.switcher.ok)
153
- logger.success('LanguageSwitcher injecté');
155
+ logger.success('LanguageSwitcher créé');
154
156
  else if (injResult.switcher.error)
155
157
  logger.warn(`LanguageSwitcher — ${injResult.switcher.error}`);
158
+ if (injResult.localeStructure.ok)
159
+ logger.success('app/[locale]/ structuré');
160
+ else if (injResult.localeStructure.error)
161
+ logger.warn(`app/[locale]/ — ${injResult.localeStructure.error}`);
156
162
  // Terminé
157
163
  logger.blank();
158
164
  logger.success('Internationalisation configurée avec succès !');
@@ -179,7 +185,9 @@ program
179
185
  }
180
186
  // Re-scan
181
187
  logger.step('Scan du projet');
182
- const strings = await scanProject(projectRoot);
188
+ const strings = await scanProject(projectRoot, {
189
+ ignorePatterns: config.ignore,
190
+ });
183
191
  logger.success(`${strings.length} strings trouvées`);
184
192
  if (strings.length === 0) {
185
193
  logger.warn('Aucune string trouvée');
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,WAAW,EAAE,yDAAyD,CAAC;KAC9E,MAAM,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE7B,MAAM,YAAY,GAAG,MAAM,eAAe,EAAE,CAAC;QAC7C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM;YAClC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC;YAC5F,CAAC,CAAC,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEzC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,IAAI,MAAM,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YAC3B,MAAM,eAAe,CAAC,WAAW,EAAE,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACxD,CAAC;QAED,aAAa;QACb,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;QAC7E,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,OAAO,CAAC,0BAA0B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChE,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QACxD,MAAM,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,eAAe,OAAO,CAAC,CAAC;QAE1C,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE;YAC7C,cAAc,EAAE,MAAM,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAChD,YAAY;YACZ,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,oBAAoB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAEpG,uDAAuD;QACvD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC;gBACrC,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM;gBACrD,cAAc,EAAE,WAAW,CAAC,IAAI;gBAChC,aAAa;aACd,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,OAAO;YACT,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY;YACZ,aAAa;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,oBAAoB,CAAC,CAAC;QACnE,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,yCAAyC;QACzC,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;YACnD,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CACT,qDAAqD,UAAU,YAAY,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAC9H,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAC5C,CAAC;QAED,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;gBAC7C,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YACH,MAAM,CAAC,OAAO,CACZ,GAAG,QAAQ,CAAC,aAAa,uBAAuB,QAAQ,CAAC,aAAa,WAAW,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CACT,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CACnF,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACtF,CAAC;QAED,8BAA8B;QAC9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC;YAChC,WAAW;YACX,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,aAAa,CAAC;YACzC,aAAa,EAAE,YAAY;YAC3B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;aAC5D,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAExF,IAAI,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;gBACvE,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAEjE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;aAC5D,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9F,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;aAC9D,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAEjG,IAAI,SAAS,CAAC,eAAe,CAAC,EAAE;YAAE,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;aACvE,IAAI,SAAS,CAAC,eAAe,CAAC,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC;QAE5G,UAAU;QACV,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,CAAC,aAAa,YAAY,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,qCAAqC,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,UAAU;QACV,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE;YAC7C,cAAc,EAAE,MAAM,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAErD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE;YAChD,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,WAAW,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAE3F,0BAA0B;QAC1B,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,WAAW,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,wBAAwB,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;IAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,CAAC,WAAW,CAAC,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,CAAC,SAAS,qCAAqC,CAAC,CAAC;YAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErD,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,mCAAmC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC5C,MAAM,UAAU,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,gBAAgB,aAAa,eAAe,EAAE,CAAC,CAAC;QAElE,WAAW;QACX,MAAM,CAAC,IAAI,CAAC,mBAAmB,gBAAgB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,aAAa,EAAE,CAAC,gBAAgB,CAAC;YACjC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM;SACP,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,eAAe,oBAAoB,CAAC,CAAC;QAEnE,sCAAsC;QACtC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAClE,MAAM,SAAS,CAAC;YACd,WAAW;YACX,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,YAAY,OAAO,CAAC,CAAC;QAEpE,IAAI,MAA8B,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC3D,MAAM,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC;YACvD,IAAI,MAAM,GAA2B,EAAE,CAAC;YAExC,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,8CAA8C,CAAC,CAAC;gBACrE,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,MAAM,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3H,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACzB,CAAC;gBACD,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,YAAY,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAClH,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -2,12 +2,16 @@ export { injectLayout } from './layout-injector.js';
2
2
  export { injectNextConfig } from './config-injector.js';
3
3
  export { injectMiddleware } from './middleware-injector.js';
4
4
  export { injectRouting } from './routing-injector.js';
5
+ export { injectRequest } from './request-injector.js';
5
6
  export { injectLanguageSwitcher } from './switcher-injector.js';
7
+ export { injectLocaleStructure } from './locale-structure-injector.js';
6
8
  export type { LayoutInjectorResult } from './layout-injector.js';
7
9
  export type { ConfigInjectorResult } from './config-injector.js';
8
10
  export type { MiddlewareInjectorResult } from './middleware-injector.js';
9
11
  export type { RoutingInjectorResult, RoutingConfig } from './routing-injector.js';
12
+ export type { RequestInjectorResult } from './request-injector.js';
10
13
  export type { SwitcherInjectorResult } from './switcher-injector.js';
14
+ export type { LocaleStructureResult } from './locale-structure-injector.js';
11
15
  export interface InjectOptions {
12
16
  /** Racine du projet Next.js cible. */
13
17
  projectRoot: string;
@@ -19,11 +23,6 @@ export interface InjectOptions {
19
23
  silent?: boolean;
20
24
  }
21
25
  export interface InjectAllResult {
22
- layout: {
23
- ok: boolean;
24
- skipped: boolean;
25
- error?: string;
26
- };
27
26
  config: {
28
27
  ok: boolean;
29
28
  skipped: boolean;
@@ -40,11 +39,21 @@ export interface InjectAllResult {
40
39
  skipped: boolean;
41
40
  error?: string;
42
41
  };
42
+ request: {
43
+ ok: boolean;
44
+ skipped: boolean;
45
+ error?: string;
46
+ };
43
47
  switcher: {
44
48
  ok: boolean;
45
49
  skipped: boolean;
46
50
  error?: string;
47
51
  };
52
+ localeStructure: {
53
+ ok: boolean;
54
+ skipped: boolean;
55
+ error?: string;
56
+ };
48
57
  }
49
58
  export declare function injectAll(options: InjectOptions): Promise<InjectAllResult>;
50
59
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,QAAQ,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CA6DhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAE5E,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,UAAU,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,QAAQ,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,eAAe,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACpE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAwEhF"}
@@ -1,34 +1,27 @@
1
- import { injectLayout } from './layout-injector.js';
2
1
  import { injectNextConfig } from './config-injector.js';
3
2
  import { injectMiddleware } from './middleware-injector.js';
4
3
  import { injectRouting } from './routing-injector.js';
4
+ import { injectRequest } from './request-injector.js';
5
5
  import { injectLanguageSwitcher } from './switcher-injector.js';
6
+ import { injectLocaleStructure } from './locale-structure-injector.js';
6
7
  export { injectLayout } from './layout-injector.js';
7
8
  export { injectNextConfig } from './config-injector.js';
8
9
  export { injectMiddleware } from './middleware-injector.js';
9
10
  export { injectRouting } from './routing-injector.js';
11
+ export { injectRequest } from './request-injector.js';
10
12
  export { injectLanguageSwitcher } from './switcher-injector.js';
13
+ export { injectLocaleStructure } from './locale-structure-injector.js';
11
14
  export async function injectAll(options) {
12
15
  const { projectRoot, locales, defaultLocale, silent = false } = options;
13
16
  const result = {
14
- layout: { ok: false, skipped: false },
15
17
  config: { ok: false, skipped: false },
16
18
  middleware: { ok: false, skipped: false },
17
19
  routing: { ok: false, skipped: false },
20
+ request: { ok: false, skipped: false },
18
21
  switcher: { ok: false, skipped: false },
22
+ localeStructure: { ok: false, skipped: false },
19
23
  };
20
- // 1. Layout
21
- try {
22
- const r = await injectLayout(projectRoot, { silent });
23
- result.layout = { ok: true, skipped: r.skipped };
24
- }
25
- catch (err) {
26
- const error = err instanceof Error ? err.message : String(err);
27
- if (!silent)
28
- console.error(` ✗ layout.tsx — ${error}`);
29
- result.layout = { ok: false, skipped: false, error };
30
- }
31
- // 2. Next config
24
+ // 1. Next config (createNextIntlPlugin)
32
25
  try {
33
26
  const r = await injectNextConfig(projectRoot, { silent });
34
27
  result.config = { ok: true, skipped: r.skipped };
@@ -39,7 +32,7 @@ export async function injectAll(options) {
39
32
  console.error(` ✗ next.config — ${error}`);
40
33
  result.config = { ok: false, skipped: false, error };
41
34
  }
42
- // 3. Middleware
35
+ // 2. Middleware
43
36
  try {
44
37
  const r = await injectMiddleware(projectRoot, { silent });
45
38
  result.middleware = { ok: true, skipped: r.skipped, warning: r.warning };
@@ -50,7 +43,7 @@ export async function injectAll(options) {
50
43
  console.error(` ✗ middleware.ts — ${error}`);
51
44
  result.middleware = { ok: false, skipped: false, error };
52
45
  }
53
- // 4. Routing
46
+ // 3. Routing (i18n/routing.ts)
54
47
  try {
55
48
  const r = await injectRouting(projectRoot, { locales, defaultLocale }, { silent });
56
49
  result.routing = { ok: true, skipped: r.skipped };
@@ -61,7 +54,18 @@ export async function injectAll(options) {
61
54
  console.error(` ✗ i18n/routing.ts — ${error}`);
62
55
  result.routing = { ok: false, skipped: false, error };
63
56
  }
64
- // 5. Language Switcher
57
+ // 4. Request config (i18n/request.ts) — requis pour les Server Components
58
+ try {
59
+ const r = await injectRequest(projectRoot, { silent });
60
+ result.request = { ok: true, skipped: r.skipped };
61
+ }
62
+ catch (err) {
63
+ const error = err instanceof Error ? err.message : String(err);
64
+ if (!silent)
65
+ console.error(` ✗ i18n/request.ts — ${error}`);
66
+ result.request = { ok: false, skipped: false, error };
67
+ }
68
+ // 5. Language Switcher component
65
69
  try {
66
70
  const r = await injectLanguageSwitcher(projectRoot, { silent });
67
71
  result.switcher = { ok: true, skipped: r.skipped };
@@ -72,6 +76,17 @@ export async function injectAll(options) {
72
76
  console.error(` ✗ LanguageSwitcher — ${error}`);
73
77
  result.switcher = { ok: false, skipped: false, error };
74
78
  }
79
+ // 6. Locale structure (app/[locale]/, root layout, locale layout)
80
+ try {
81
+ const r = await injectLocaleStructure(projectRoot, locales, defaultLocale, { silent });
82
+ result.localeStructure = { ok: true, skipped: r.skipped };
83
+ }
84
+ catch (err) {
85
+ const error = err instanceof Error ? err.message : String(err);
86
+ if (!silent)
87
+ console.error(` ✗ app/[locale]/ — ${error}`);
88
+ result.localeStructure = { ok: false, skipped: false, error };
89
+ }
75
90
  return result;
76
91
  }
77
92
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/injector/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface LocaleStructureResult {
2
+ modified: boolean;
3
+ skipped: boolean;
4
+ movedFiles: string[];
5
+ }
6
+ /**
7
+ * Crée la structure `app/[locale]/`, déplace les pages
8
+ * et génère un `[locale]/layout.tsx` avec le provider.
9
+ */
10
+ export declare function injectLocaleStructure(projectRoot: string, locales: string[], defaultLocale: string, options?: {
11
+ silent?: boolean;
12
+ }): Promise<LocaleStructureResult>;
13
+ //# sourceMappingURL=locale-structure-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-structure-injector.d.ts","sourceRoot":"","sources":["../../src/injector/locale-structure-injector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAeD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAwDhC"}
@@ -0,0 +1,156 @@
1
+ import { readdir, rename, mkdir, writeFile, access, readFile, copyFile } from 'fs/promises';
2
+ import { join } from 'path';
3
+ import { findLayoutFile } from './layout-injector.js';
4
+ /** Fichiers/dossiers qui restent à la racine de app/ et ne sont PAS déplacés. */
5
+ const ROOT_ONLY = new Set([
6
+ 'layout.tsx', 'layout.jsx', 'layout.js',
7
+ 'globals.css', 'global.css',
8
+ 'favicon.ico', 'icon.tsx', 'icon.jsx',
9
+ 'apple-icon.tsx', 'apple-icon.jsx',
10
+ 'opengraph-image.tsx', 'opengraph-image.jsx',
11
+ 'robots.ts', 'robots.txt',
12
+ 'sitemap.ts', 'sitemap.xml',
13
+ 'manifest.ts', 'manifest.json',
14
+ 'not-found.tsx', 'not-found.jsx',
15
+ ]);
16
+ /**
17
+ * Crée la structure `app/[locale]/`, déplace les pages
18
+ * et génère un `[locale]/layout.tsx` avec le provider.
19
+ */
20
+ export async function injectLocaleStructure(projectRoot, locales, defaultLocale, options = {}) {
21
+ const layoutPath = await findLayoutFile(projectRoot);
22
+ if (!layoutPath) {
23
+ throw new Error("layout.tsx introuvable — impossible de restructurer app/");
24
+ }
25
+ const useSrc = layoutPath.includes(join('src', 'app'));
26
+ const appDir = useSrc
27
+ ? join(projectRoot, 'src', 'app')
28
+ : join(projectRoot, 'app');
29
+ const localeDir = join(appDir, '[locale]');
30
+ // Si le dossier [locale] existe déjà, on skip
31
+ try {
32
+ await access(localeDir);
33
+ if (!options.silent)
34
+ console.log(` — ${localeDir} — déjà présent`);
35
+ return { modified: false, skipped: true, movedFiles: [] };
36
+ }
37
+ catch {
38
+ /* n'existe pas → on le crée */
39
+ }
40
+ await mkdir(localeDir, { recursive: true });
41
+ // Lister les entrées dans app/
42
+ const entries = await readdir(appDir, { withFileTypes: true });
43
+ const movedFiles = [];
44
+ for (const entry of entries) {
45
+ // Ne pas déplacer le dossier [locale] lui-même
46
+ if (entry.name === '[locale]')
47
+ continue;
48
+ // Ne pas déplacer les fichiers qui doivent rester à la racine
49
+ if (ROOT_ONLY.has(entry.name))
50
+ continue;
51
+ const src = join(appDir, entry.name);
52
+ const dest = join(localeDir, entry.name);
53
+ await rename(src, dest);
54
+ movedFiles.push(entry.name);
55
+ }
56
+ // Générer app/[locale]/layout.tsx avec le provider
57
+ const localeLayoutPath = join(localeDir, 'layout.tsx');
58
+ const routingImportPath = useSrc ? '../../i18n/routing' : '../../i18n/routing';
59
+ const switcherImportPath = useSrc ? '../../components/LanguageSwitcher' : '../../components/LanguageSwitcher';
60
+ await writeFile(localeLayoutPath, buildLocaleLayout(routingImportPath, switcherImportPath), 'utf-8');
61
+ // Simplifier le root layout : HTML shell pur
62
+ await rewriteRootLayout(layoutPath);
63
+ if (!options.silent) {
64
+ console.log(` ✓ app/[locale]/ créé — ${movedFiles.length} entrée(s) déplacée(s)`);
65
+ }
66
+ return { modified: true, skipped: false, movedFiles };
67
+ }
68
+ function buildLocaleLayout(routingImportPath, switcherImportPath) {
69
+ return `import { NextIntlClientProvider } from 'next-intl';
70
+ import { getMessages } from 'next-intl/server';
71
+ import { notFound } from 'next/navigation';
72
+ import { routing } from '${routingImportPath}';
73
+ import { LanguageSwitcher } from '${switcherImportPath}';
74
+
75
+ export default async function LocaleLayout({
76
+ children,
77
+ params,
78
+ }: {
79
+ children: React.ReactNode;
80
+ params: Promise<{ locale: string }>;
81
+ }) {
82
+ const { locale } = await params;
83
+
84
+ if (!routing.locales.includes(locale as any)) {
85
+ notFound();
86
+ }
87
+
88
+ const messages = await getMessages();
89
+
90
+ return (
91
+ <NextIntlClientProvider messages={messages}>
92
+ {children}
93
+ <LanguageSwitcher />
94
+ </NextIntlClientProvider>
95
+ );
96
+ }
97
+ `;
98
+ }
99
+ /**
100
+ * Réécrit le root layout pour en faire un HTML shell minimal.
101
+ * Préserve les imports CSS/fonts existants.
102
+ */
103
+ async function rewriteRootLayout(layoutPath) {
104
+ await copyFile(layoutPath, `${layoutPath}.backup`);
105
+ const content = await readFile(layoutPath, 'utf-8');
106
+ // Extraire les imports CSS/fonts existants (ex: import './globals.css')
107
+ const cssImports = [];
108
+ const fontImports = [];
109
+ const otherImports = [];
110
+ for (const line of content.split('\n')) {
111
+ const trimmed = line.trim();
112
+ if (/^import\s+['"]\..*\.css['"]/.test(trimmed) || /^import\s+['"]\.\/globals/.test(trimmed)) {
113
+ cssImports.push(trimmed);
114
+ }
115
+ else if (/from\s+['"]next\/font/.test(trimmed) || /from\s+['"]@next\/font/.test(trimmed)) {
116
+ fontImports.push(trimmed);
117
+ }
118
+ }
119
+ // Extraire les déclarations de font (ex: const inter = Inter({ ... }))
120
+ const fontDeclRegex = /^const\s+\w+\s*=\s*\w+\(\{[^}]*\}\);?\s*$/gm;
121
+ const fontDecls = [];
122
+ let match;
123
+ while ((match = fontDeclRegex.exec(content)) !== null) {
124
+ fontDecls.push(match[0]);
125
+ }
126
+ // Extraire l'ouverture complète du tag <body> (attributs préservés verbatim)
127
+ // On capture tout entre <body et le premier > non imbriqué dans {}
128
+ let bodyTag = '<body>';
129
+ const bodyTagMatch = content.match(/<body[^>]*>/);
130
+ if (bodyTagMatch) {
131
+ bodyTag = bodyTagMatch[0];
132
+ }
133
+ // Construire le nouveau root layout
134
+ const imports = [
135
+ ...cssImports,
136
+ ...fontImports,
137
+ ].filter(Boolean);
138
+ const importsStr = imports.length > 0 ? imports.join('\n') + '\n\n' : '';
139
+ const fontDeclsStr = fontDecls.length > 0 ? fontDecls.join('\n') + '\n\n' : '';
140
+ const newContent = `${importsStr}${fontDeclsStr}export default function RootLayout({
141
+ children,
142
+ }: {
143
+ children: React.ReactNode;
144
+ }) {
145
+ return (
146
+ <html>
147
+ ${bodyTag}
148
+ {children}
149
+ </body>
150
+ </html>
151
+ );
152
+ }
153
+ `;
154
+ await writeFile(layoutPath, newContent, 'utf-8');
155
+ }
156
+ //# sourceMappingURL=locale-structure-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locale-structure-injector.js","sourceRoot":"","sources":["../../src/injector/locale-structure-injector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-injector.d.ts","sourceRoot":"","sources":["../../src/injector/middleware-injector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAYD,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAiBnC"}
1
+ {"version":3,"file":"middleware-injector.d.ts","sourceRoot":"","sources":["../../src/injector/middleware-injector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsCD,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,wBAAwB,CAAC,CAmCnC"}
@@ -1,4 +1,4 @@
1
- import { writeFile, access } from 'fs/promises';
1
+ import { writeFile, readFile, access } from 'fs/promises';
2
2
  import { join } from 'path';
3
3
  const MIDDLEWARE_CONTENT = `import createMiddleware from 'next-intl/middleware';
4
4
  import { routing } from './i18n/routing';
@@ -9,12 +9,42 @@ export const config = {
9
9
  matcher: ['/((?!api|_next|_vercel|.*\\\\..*).*)'],
10
10
  };
11
11
  `;
12
+ const PROXY_CONTENT = `import createMiddleware from 'next-intl/middleware';
13
+ import { routing } from './i18n/routing';
14
+
15
+ export default createMiddleware(routing);
16
+
17
+ export const config = {
18
+ matcher: ['/((?!api|_next|_vercel|.*\\\\..*).*)'],
19
+ };
20
+ `;
21
+ /**
22
+ * Détecte la version majeure de Next.js installée dans le projet.
23
+ * Retourne null si non trouvée.
24
+ */
25
+ async function detectNextMajorVersion(projectRoot) {
26
+ try {
27
+ const pkgPath = join(projectRoot, 'node_modules', 'next', 'package.json');
28
+ const raw = await readFile(pkgPath, 'utf-8');
29
+ const pkg = JSON.parse(raw);
30
+ const major = parseInt(pkg.version?.split('.')[0], 10);
31
+ return isNaN(major) ? null : major;
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
12
37
  export async function injectMiddleware(projectRoot, options = {}) {
13
- const filePath = join(projectRoot, 'middleware.ts');
38
+ const nextVersion = await detectNextMajorVersion(projectRoot);
39
+ const useProxy = nextVersion !== null && nextVersion >= 16;
40
+ const fileName = useProxy ? 'proxy.ts' : 'middleware.ts';
41
+ const content = useProxy ? PROXY_CONTENT : MIDDLEWARE_CONTENT;
42
+ const filePath = join(projectRoot, fileName);
43
+ // Vérifier aussi l'ancien nom si on passe à proxy
44
+ const altPath = join(projectRoot, useProxy ? 'middleware.ts' : 'proxy.ts');
14
45
  try {
15
46
  await access(filePath);
16
- // Fichier existant avertissement sans modification
17
- const warning = `middleware.ts existe déjà — configuration manuelle requise`;
47
+ const warning = `${fileName} existe déjà — configuration manuelle requise`;
18
48
  if (!options.silent)
19
49
  console.log(` ⚠ ${filePath} — ${warning}`);
20
50
  return { modified: false, skipped: true, filePath, warning };
@@ -22,7 +52,19 @@ export async function injectMiddleware(projectRoot, options = {}) {
22
52
  catch {
23
53
  /* fichier absent → on le crée */
24
54
  }
25
- await writeFile(filePath, MIDDLEWARE_CONTENT, 'utf-8');
55
+ // Vérifier si l'alternative existe déjà
56
+ try {
57
+ await access(altPath);
58
+ const altName = useProxy ? 'middleware.ts' : 'proxy.ts';
59
+ const warning = `${altName} existe déjà — ${fileName} non créé`;
60
+ if (!options.silent)
61
+ console.log(` ⚠ ${warning}`);
62
+ return { modified: false, skipped: true, filePath: altPath, warning };
63
+ }
64
+ catch {
65
+ /* pas d'alternative non plus */
66
+ }
67
+ await writeFile(filePath, content, 'utf-8');
26
68
  if (!options.silent)
27
69
  console.log(` ✓ ${filePath} — créé`);
28
70
  return { modified: true, skipped: false, filePath };
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-injector.js","sourceRoot":"","sources":["../../src/injector/middleware-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,MAAM,kBAAkB,GAAG;;;;;;;;CAQ1B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,UAAgC,EAAE;IAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAEpD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,qDAAqD;QACrD,MAAM,OAAO,GAAG,4DAA4D,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,MAAM,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,MAAM,SAAS,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAEvD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,SAAS,CAAC,CAAC;IAC3D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"middleware-injector.js","sourceRoot":"","sources":["../../src/injector/middleware-injector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface RequestInjectorResult {
2
+ modified: boolean;
3
+ skipped: boolean;
4
+ filePath: string;
5
+ }
6
+ export declare function injectRequest(projectRoot: string, options?: {
7
+ silent?: boolean;
8
+ }): Promise<RequestInjectorResult>;
9
+ //# sourceMappingURL=request-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-injector.d.ts","sourceRoot":"","sources":["../../src/injector/request-injector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmBD,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAiBhC"}
@@ -0,0 +1,37 @@
1
+ import { writeFile, mkdir, access } from 'fs/promises';
2
+ import { join } from 'path';
3
+ function buildRequestContent() {
4
+ return `import { getRequestConfig } from 'next-intl/server';
5
+ import { routing } from './routing';
6
+
7
+ export default getRequestConfig(async ({ requestLocale }) => {
8
+ let locale = await requestLocale;
9
+ if (!locale || !routing.locales.includes(locale as any)) {
10
+ locale = routing.defaultLocale;
11
+ }
12
+ return {
13
+ locale,
14
+ messages: (await import(\`../messages/\${locale}.json\`)).default,
15
+ };
16
+ });
17
+ `;
18
+ }
19
+ export async function injectRequest(projectRoot, options = {}) {
20
+ const i18nDir = join(projectRoot, 'i18n');
21
+ const filePath = join(i18nDir, 'request.ts');
22
+ try {
23
+ await access(filePath);
24
+ if (!options.silent)
25
+ console.log(` — ${filePath} — déjà présent`);
26
+ return { modified: false, skipped: true, filePath };
27
+ }
28
+ catch {
29
+ /* fichier absent → on le crée */
30
+ }
31
+ await mkdir(i18nDir, { recursive: true });
32
+ await writeFile(filePath, buildRequestContent(), 'utf-8');
33
+ if (!options.silent)
34
+ console.log(` ✓ ${filePath} — créé`);
35
+ return { modified: true, skipped: false, filePath };
36
+ }
37
+ //# sourceMappingURL=request-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-injector.js","sourceRoot":"","sources":["../../src/injector/request-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,SAAS,mBAAmB;IAC1B,OAAO;;;;;;;;;;;;;CAaR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,UAAgC,EAAE;IAElC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,iBAAiB,CAAC,CAAC;QACnE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,SAAS,CAAC,QAAQ,EAAE,mBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC;IAE1D,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,SAAS,CAAC,CAAC;IAC3D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AACtD,CAAC"}
@@ -3,6 +3,10 @@ export interface SwitcherInjectorResult {
3
3
  skipped: boolean;
4
4
  filePath: string;
5
5
  }
6
+ /**
7
+ * Génère le composant LanguageSwitcher.tsx dans le projet cible.
8
+ * L'import dans le layout est géré par locale-structure-injector.
9
+ */
6
10
  export declare function injectLanguageSwitcher(projectRoot: string, options?: {
7
11
  silent?: boolean;
8
12
  }): Promise<SwitcherInjectorResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"switcher-injector.d.ts","sourceRoot":"","sources":["../../src/injector/switcher-injector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8TD,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAoCjC"}
1
+ {"version":3,"file":"switcher-injector.d.ts","sourceRoot":"","sources":["../../src/injector/switcher-injector.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6RD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAiCjC"}
@@ -1,4 +1,4 @@
1
- import { writeFile, readFile, mkdir, access } from 'fs/promises';
1
+ import { writeFile, mkdir, access } from 'fs/promises';
2
2
  import { join } from 'path';
3
3
  import { findLayoutFile } from './layout-injector.js';
4
4
  /* ------------------------------------------------------------------ */
@@ -68,7 +68,7 @@ export function LanguageSwitcher() {
68
68
  const pathname = usePathname();
69
69
  const router = useRouter();
70
70
 
71
- const locales = routing.locales as string[];
71
+ const locales = [...routing.locales] as string[];
72
72
  const segments = pathname.split('/');
73
73
  const currentLocale = locales.includes(segments[1])
74
74
  ? segments[1]
@@ -279,31 +279,12 @@ export function LanguageSwitcher() {
279
279
  `;
280
280
  }
281
281
  /* ------------------------------------------------------------------ */
282
- /* Layout injection (add <LanguageSwitcher /> + import) */
283
- /* ------------------------------------------------------------------ */
284
- async function injectSwitcherIntoLayout(layoutPath, useSrc) {
285
- let content = await readFile(layoutPath, 'utf-8');
286
- // Already present?
287
- if (content.includes('LanguageSwitcher'))
288
- return false;
289
- // 1. Add import after the last existing import statement
290
- const importLine = `import { LanguageSwitcher } from '../components/LanguageSwitcher';\n`;
291
- const lastImportIdx = content.lastIndexOf('\nimport ');
292
- if (lastImportIdx !== -1) {
293
- const endOfLine = content.indexOf('\n', lastImportIdx + 1);
294
- content = content.slice(0, endOfLine + 1) + importLine + content.slice(endOfLine + 1);
295
- }
296
- else {
297
- content = importLine + content;
298
- }
299
- // 2. Insert <LanguageSwitcher /> before </body>
300
- content = content.replace('</body>', ' <LanguageSwitcher />\n </body>');
301
- await writeFile(layoutPath, content, 'utf-8');
302
- return true;
303
- }
304
- /* ------------------------------------------------------------------ */
305
282
  /* Public API */
306
283
  /* ------------------------------------------------------------------ */
284
+ /**
285
+ * Génère le composant LanguageSwitcher.tsx dans le projet cible.
286
+ * L'import dans le layout est géré par locale-structure-injector.
287
+ */
307
288
  export async function injectLanguageSwitcher(projectRoot, options = {}) {
308
289
  // Detect project structure via layout location
309
290
  const layoutPath = await findLayoutFile(projectRoot);
@@ -330,10 +311,8 @@ export async function injectLanguageSwitcher(projectRoot, options = {}) {
330
311
  const routingImportPath = useSrc ? '../../i18n/routing' : '../i18n/routing';
331
312
  // Write the component file
332
313
  await writeFile(switcherPath, buildSwitcherComponent(routingImportPath), 'utf-8');
333
- // Inject into layout
334
- await injectSwitcherIntoLayout(layoutPath, useSrc);
335
314
  if (!options.silent)
336
- console.log(` ✓ ${switcherPath} — créé et injecté dans layout`);
315
+ console.log(` ✓ ${switcherPath} — créé`);
337
316
  return { modified: true, skipped: false, filePath: switcherPath };
338
317
  }
339
318
  //# sourceMappingURL=switcher-injector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"switcher-injector.js","sourceRoot":"","sources":["../../src/injector/switcher-injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"switcher-injector.js","sourceRoot":"","sources":["../../src/injector/switcher-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE,SAAS,sBAAsB,CAAC,iBAAyB;IACvD,OAAO;;;2BAGkB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Q3C,CAAC;AACF,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,wEAAwE;AAExE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,UAAgC,EAAE;IAElC,+CAA+C;IAC/C,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAEhE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAEjE,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,iBAAiB,CAAC,CAAC;QACvE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;IAC/B,CAAC;IAED,yCAAyC;IACzC,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,+CAA+C;IAC/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IAE5E,2BAA2B;IAC3B,MAAM,SAAS,CAAC,YAAY,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;IAElF,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,SAAS,CAAC,CAAC;IAC/D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/scanner/filters.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAuHD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAqB5E"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/scanner/filters.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AA2ID;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAuB5E"}
@@ -61,6 +61,21 @@ const TECHNICAL_KEYWORDS = new Set([
61
61
  ]);
62
62
  /** "42", "-7", "3.14" */
63
63
  const NUMERIC_RE = /^-?\d+(\.\d+)?$/;
64
+ /**
65
+ * Nombre avec préfixe/suffixe simple (currency, %, +).
66
+ * Ex: "29€", "1500+", "$99", "50%", "3×", "100k", "€29"
67
+ */
68
+ const NUMERIC_WITH_AFFIX_RE = /^[€$£¥₩₹฿]?\s*\d[\d\s.,]*\s*[€$£¥₩₹฿%+×xkKmMbB]*[+]?$|^[€$£¥₩₹฿]\s*\d[\d\s.,]*$/;
69
+ /**
70
+ * String composée uniquement d'emojis, symboles ou ponctuation (aucune lettre ni chiffre).
71
+ * Ex: "🏋️", "🥊", "✓", "★", "→"
72
+ */
73
+ function isSymbolOrEmojiOnly(value) {
74
+ if (!value.trim())
75
+ return false;
76
+ const stripped = value.replace(/[\p{Emoji_Presentation}\p{Extended_Pictographic}\p{Symbol}\s]/gu, '');
77
+ return stripped.length === 0;
78
+ }
64
79
  /** "16px", "2rem", "100vh", "0.5s" */
65
80
  const CSS_VALUE_RE = /^-?\d+(\.\d+)?(px|em|rem|vh|vw|vmin|vmax|pt|cm|mm|in|pc|ex|ch|%|s|ms)$/;
66
81
  /** "#fff", "#ffffff", "#ffffffff" */
@@ -131,6 +146,10 @@ export function shouldIgnore(value, options) {
131
146
  return true;
132
147
  if (ENV_VAR_RE.test(trimmed))
133
148
  return true;
149
+ if (NUMERIC_WITH_AFFIX_RE.test(trimmed))
150
+ return true;
151
+ if (isSymbolOrEmojiOnly(trimmed))
152
+ return true;
134
153
  if (TECHNICAL_KEYWORDS.has(trimmed))
135
154
  return true;
136
155
  if (isCamelCaseIdentifier(trimmed))
@@ -1 +1 @@
1
- {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/scanner/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/scanner/filters.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export type { ExtractedString, StringType } from './string-extractor.js';
4
4
  export interface ScanOptions {
5
5
  ignoreDirs?: string[];
6
6
  ignoreFiles?: string[];
7
+ /** Glob patterns à ignorer (ex: '**\/*.test.*') */
8
+ ignorePatterns?: string[];
7
9
  filter?: FilterOptions;
8
10
  }
9
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAqBzE,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAwCD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB5B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAoCzE,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AA+DD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,eAAe,EAAE,CAAC,CAgB5B"}
@@ -1,5 +1,5 @@
1
1
  import { readdir } from 'fs/promises';
2
- import { join, extname } from 'path';
2
+ import { join, extname, relative } from 'path';
3
3
  import { parseFile } from './ast-parser.js';
4
4
  import { extractStrings } from './string-extractor.js';
5
5
  import { shouldIgnore } from './filters.js';
@@ -7,6 +7,12 @@ const SCANNABLE_EXTENSIONS = new Set(['.tsx', '.jsx', '.ts', '.js', '.mjs']);
7
7
  const DEFAULT_IGNORE_DIRS = new Set([
8
8
  'node_modules', '.next', '.git', 'dist', 'build', 'out',
9
9
  '.turbo', '.cache', 'coverage', '.vercel', 'public',
10
+ 'i18n', 'messages',
11
+ ]);
12
+ /** Fichiers générés par next-auto-i18n — jamais scannés ni réécrits. */
13
+ const GENERATED_FILES = new Set([
14
+ 'LanguageSwitcher.tsx',
15
+ 'LanguageSwitcher.jsx',
10
16
  ]);
11
17
  const CONFIG_FILE_NAMES = new Set([
12
18
  'next.config.ts', 'next.config.js', 'next.config.mjs',
@@ -19,11 +25,31 @@ const CONFIG_FILE_NAMES = new Set([
19
25
  '.eslintrc.js', 'babel.config.js',
20
26
  'prettier.config.js', 'prettier.config.ts',
21
27
  ]);
28
+ /**
29
+ * Dossiers Next.js conventionnels contenant des composants.
30
+ * Les fichiers en dehors de ces dossiers (ex: scripts .mjs à la racine) sont ignorés.
31
+ */
32
+ const NEXT_APP_DIRS = new Set([
33
+ 'app', 'src', 'pages', 'components', 'lib', 'hooks', 'utils',
34
+ ]);
35
+ /**
36
+ * Convertit un glob pattern simple en RegExp.
37
+ * Supporte uniquement ** et * (couvre les cas courants).
38
+ */
39
+ function globToRegex(pattern) {
40
+ const escaped = pattern
41
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
42
+ .replace(/\*\*/g, '{{GLOBSTAR}}')
43
+ .replace(/\*/g, '[^/]*')
44
+ .replace(/\{\{GLOBSTAR\}\}/g, '.*');
45
+ return new RegExp(`^${escaped}$`);
46
+ }
22
47
  async function collectFiles(rootDir, options) {
23
48
  const ignoreDirs = new Set([...DEFAULT_IGNORE_DIRS, ...(options.ignoreDirs ?? [])]);
24
49
  const ignoreFiles = new Set(options.ignoreFiles ?? []);
50
+ const ignoreRegexes = (options.ignorePatterns ?? []).map(globToRegex);
25
51
  const files = [];
26
- async function walk(dir) {
52
+ async function walk(dir, depth) {
27
53
  let entries;
28
54
  try {
29
55
  entries = await readdir(dir, { withFileTypes: true });
@@ -36,7 +62,10 @@ async function collectFiles(rootDir, options) {
36
62
  continue;
37
63
  const fullPath = join(dir, entry.name);
38
64
  if (entry.isDirectory()) {
39
- await walk(fullPath);
65
+ // À la racine du projet, ne descendre que dans les dossiers Next.js conventionnels
66
+ if (depth === 0 && !NEXT_APP_DIRS.has(entry.name))
67
+ continue;
68
+ await walk(fullPath, depth + 1);
40
69
  continue;
41
70
  }
42
71
  if (!entry.isFile())
@@ -47,14 +76,22 @@ async function collectFiles(rootDir, options) {
47
76
  continue;
48
77
  if (ignoreFiles.has(entry.name))
49
78
  continue;
79
+ if (GENERATED_FILES.has(entry.name))
80
+ continue;
50
81
  if (entry.name.includes('.test.') || entry.name.includes('.spec.'))
51
82
  continue;
52
83
  if (entry.name.startsWith('.'))
53
84
  continue;
85
+ // Vérifier les glob patterns (chemin relatif depuis la racine)
86
+ if (ignoreRegexes.length > 0) {
87
+ const relPath = relative(rootDir, fullPath).replace(/\\/g, '/');
88
+ if (ignoreRegexes.some(re => re.test(relPath) || re.test(entry.name)))
89
+ continue;
90
+ }
54
91
  files.push(fullPath);
55
92
  }
56
93
  }
57
- await walk(rootDir);
94
+ await walk(rootDir, 0);
58
95
  return files;
59
96
  }
60
97
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/utils/deps.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAiBvF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/utils/deps.ts"],"names":[],"mappings":"AAOA,KAAK,cAAc,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAiBvF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUnG;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -44,10 +44,12 @@ export async function isPackageInstalled(projectRoot, packageName) {
44
44
  */
45
45
  export async function installPackage(projectRoot, packageName) {
46
46
  const pm = await detectPackageManager(projectRoot);
47
+ // Sur Windows, les exécutables npm/yarn/pnpm sont des scripts .cmd
48
+ const isWin = process.platform === 'win32';
47
49
  const commands = {
48
- npm: ['npm', ['install', packageName]],
49
- yarn: ['yarn', ['add', packageName]],
50
- pnpm: ['pnpm', ['add', packageName]],
50
+ npm: [isWin ? 'npm.cmd' : 'npm', ['install', packageName]],
51
+ yarn: [isWin ? 'yarn.cmd' : 'yarn', ['add', packageName]],
52
+ pnpm: [isWin ? 'pnpm.cmd' : 'pnpm', ['add', packageName]],
51
53
  };
52
54
  const [cmd, args] = commands[pm];
53
55
  await execFileAsync(cmd, args, { cwd: projectRoot });
@@ -1 +1 @@
1
- {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/utils/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAI1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IAC5D,MAAM,MAAM,GAA+B;QACzC,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;QACrB,CAAC,mBAAmB,EAAE,KAAK,CAAC;KAC7B,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,WAAmB;IAC/E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAC7D,OAAO,WAAW,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,WAAmB;IAEnB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAA+C;QAC3D,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KACrC,CAAC;IAEF,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"deps.js","sourceRoot":"","sources":["../../src/utils/deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAI1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,WAAmB;IAC5D,MAAM,MAAM,GAA+B;QACzC,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;QACrB,CAAC,mBAAmB,EAAE,KAAK,CAAC;KAC7B,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,WAAmB,EAAE,WAAmB;IAC/E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAC7D,OAAO,WAAW,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,WAAmB;IAEnB,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEnD,mEAAmE;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3C,MAAM,QAAQ,GAA+C;QAC3D,GAAG,EAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAE,CAAC,CAAC,KAAK,EAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAC1D,CAAC;IAEF,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;AACvD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-auto-i18n",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "description": "Automatically translate your Next.js project in under 5 minutes",
5
5
  "type": "module",
6
6
  "main": "./dist/cli/index.js",