@intlayer/engine 9.5.7 → 9.5.9-canary.0

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 (178) hide show
  1. package/dist/assets/installSkills/skills/angular.md +19 -68
  2. package/dist/assets/installSkills/skills/astro.md +38 -4
  3. package/dist/assets/installSkills/skills/backend.md +113 -0
  4. package/dist/assets/installSkills/skills/cli.md +29 -25
  5. package/dist/assets/installSkills/skills/compat.md +87 -0
  6. package/dist/assets/installSkills/skills/compiler.md +14 -4
  7. package/dist/assets/installSkills/skills/config.md +15 -5
  8. package/dist/assets/installSkills/skills/content.md +80 -6
  9. package/dist/assets/installSkills/skills/dev-tools.md +82 -0
  10. package/dist/assets/installSkills/skills/lit.md +115 -0
  11. package/dist/assets/installSkills/skills/markdown.md +96 -0
  12. package/dist/assets/installSkills/skills/next-js.md +21 -38
  13. package/dist/assets/installSkills/skills/preact.md +18 -0
  14. package/dist/assets/installSkills/skills/react.md +21 -4
  15. package/dist/assets/installSkills/skills/remix.md +95 -0
  16. package/dist/assets/installSkills/skills/remote-content.md +1 -1
  17. package/dist/assets/installSkills/skills/solid.md +21 -1
  18. package/dist/assets/installSkills/skills/svelte.md +22 -1
  19. package/dist/assets/installSkills/skills/usage.md +28 -0
  20. package/dist/assets/installSkills/skills/vanilla.md +108 -0
  21. package/dist/assets/installSkills/skills/vue.md +22 -0
  22. package/dist/cjs/_virtual/_utils_asset.cjs +1 -1
  23. package/dist/cjs/build.cjs +4 -4
  24. package/dist/cjs/buildIntlayerDictionary/writeDynamicDictionary.cjs +2 -2
  25. package/dist/cjs/buildIntlayerDictionary/writeFetchDictionary.cjs +3 -3
  26. package/dist/cjs/buildIntlayerDictionary/writeMergedDictionary.cjs +1 -1
  27. package/dist/cjs/buildIntlayerDictionary/writeNestedDictionary.cjs +3 -3
  28. package/dist/cjs/buildIntlayerDictionary/writeRemoteDictionary.cjs +2 -2
  29. package/dist/cjs/buildIntlayerDictionary/writeUnmergedDictionary.cjs +2 -2
  30. package/dist/cjs/cleanOutputDir.cjs +1 -1
  31. package/dist/cjs/cleanRemovedContentDeclaration.cjs +1 -1
  32. package/dist/cjs/cli.cjs +5 -3
  33. package/dist/cjs/createDictionaryEntryPoint/createDictionaryEntryPoint.cjs +1 -1
  34. package/dist/cjs/createDictionaryEntryPoint/getBuiltDictionariesPath.cjs +2 -2
  35. package/dist/cjs/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.cjs +2 -2
  36. package/dist/cjs/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.cjs +2 -2
  37. package/dist/cjs/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.cjs +2 -2
  38. package/dist/cjs/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.cjs +2 -2
  39. package/dist/cjs/createType/createModuleAugmentation.cjs +3 -3
  40. package/dist/cjs/createType/createType.cjs +1 -1
  41. package/dist/cjs/docReview/index.cjs +5 -5
  42. package/dist/cjs/docReview/pipeline.cjs +4 -4
  43. package/dist/cjs/fetchDistantDictionaries.cjs +1 -1
  44. package/dist/cjs/handleContentDeclarationFileChange.cjs +2 -2
  45. package/dist/cjs/handleUnlinkedContentDeclarationFile.cjs +1 -1
  46. package/dist/cjs/init/frameworkSetup/nextAppRouter/restructure.cjs +1 -1
  47. package/dist/cjs/init/frameworkSetup/tanstackStart/restructure.cjs +1 -1
  48. package/dist/cjs/init/index.cjs +305 -300
  49. package/dist/cjs/init/index.cjs.map +1 -1
  50. package/dist/cjs/init/upgradeIntlayerPackages.cjs +60 -0
  51. package/dist/cjs/init/upgradeIntlayerPackages.cjs.map +1 -0
  52. package/dist/cjs/init/utils/fileSystem.cjs +1 -1
  53. package/dist/cjs/init/utils/githubActions.cjs +1 -1
  54. package/dist/cjs/init/utils/index.cjs +13 -4
  55. package/dist/cjs/init/utils/intlayerDependencies.cjs +119 -0
  56. package/dist/cjs/init/utils/intlayerDependencies.cjs.map +1 -0
  57. package/dist/cjs/init/utils/packageManager.cjs +146 -95
  58. package/dist/cjs/init/utils/packageManager.cjs.map +1 -1
  59. package/dist/cjs/initConfig/index.cjs +1 -1
  60. package/dist/cjs/installLSP.cjs +1 -1
  61. package/dist/cjs/installMCP/installMCP.cjs +1 -1
  62. package/dist/cjs/installSkills/index.cjs +111 -20
  63. package/dist/cjs/installSkills/index.cjs.map +1 -1
  64. package/dist/cjs/listDictionariesPath.cjs +1 -1
  65. package/dist/cjs/listGitFiles.cjs +1 -1
  66. package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs +2 -2
  67. package/dist/cjs/loadDictionaries/index.cjs +1 -1
  68. package/dist/cjs/loadDictionaries/loadContentDeclaration.cjs +2 -2
  69. package/dist/cjs/loadDictionaries/loadDictionaries.cjs +1 -1
  70. package/dist/cjs/loadDictionaries/loadLocalDictionaries.cjs +1 -1
  71. package/dist/cjs/loadDictionaries/loadMarkdownContentDeclaration.cjs +1 -1
  72. package/dist/cjs/logConfigDetails.cjs +1 -1
  73. package/dist/cjs/prepareIntlayer.cjs +4 -4
  74. package/dist/cjs/scan/index.cjs +1 -1
  75. package/dist/cjs/scan/scanWebsite.cjs +1 -1
  76. package/dist/cjs/syncPluginKit/createFileAdapter.cjs +1 -1
  77. package/dist/cjs/syncPluginKit/index.cjs +1 -1
  78. package/dist/cjs/utils/buildComponentFilesList.cjs +1 -1
  79. package/dist/cjs/utils/contentWatcherLock.cjs +2 -2
  80. package/dist/cjs/utils/index.cjs +4 -4
  81. package/dist/cjs/utils/readDictionariesFromDisk.cjs +1 -1
  82. package/dist/cjs/utils/runOnce.cjs +1 -1
  83. package/dist/cjs/utils/runParallel/pidTree.cjs +1 -1
  84. package/dist/cjs/utils/withFileLock.cjs +1 -1
  85. package/dist/cjs/watcher.cjs +6 -6
  86. package/dist/cjs/writeConfiguration/index.cjs +1 -1
  87. package/dist/cjs/writeContentDeclaration/processContentDeclarationContent.cjs +2 -2
  88. package/dist/cjs/writeContentDeclaration/transformJSFile.cjs +1 -1
  89. package/dist/cjs/writeContentDeclaration/writeContentDeclaration.cjs +4 -4
  90. package/dist/cjs/writeContentDeclaration/writeJSFile.cjs +3 -3
  91. package/dist/cjs/writeContentDeclaration/writeMarkdownFile.cjs +1 -1
  92. package/dist/cjs/writeContentDeclaration/writeYamlFile.cjs +1 -1
  93. package/dist/cjs/writeFileIfChanged.cjs +1 -1
  94. package/dist/esm/_virtual/_utils_asset.mjs +1 -1
  95. package/dist/esm/build.mjs +4 -4
  96. package/dist/esm/buildIntlayerDictionary/writeDynamicDictionary.mjs +2 -2
  97. package/dist/esm/buildIntlayerDictionary/writeFetchDictionary.mjs +3 -3
  98. package/dist/esm/buildIntlayerDictionary/writeMergedDictionary.mjs +1 -1
  99. package/dist/esm/buildIntlayerDictionary/writeNestedDictionary.mjs +3 -3
  100. package/dist/esm/buildIntlayerDictionary/writeRemoteDictionary.mjs +2 -2
  101. package/dist/esm/buildIntlayerDictionary/writeUnmergedDictionary.mjs +2 -2
  102. package/dist/esm/cleanOutputDir.mjs +1 -1
  103. package/dist/esm/cleanRemovedContentDeclaration.mjs +1 -1
  104. package/dist/esm/cli.mjs +5 -4
  105. package/dist/esm/createDictionaryEntryPoint/createDictionaryEntryPoint.mjs +1 -1
  106. package/dist/esm/createDictionaryEntryPoint/getBuiltDictionariesPath.mjs +2 -2
  107. package/dist/esm/createDictionaryEntryPoint/getBuiltDynamicDictionariesPath.mjs +2 -2
  108. package/dist/esm/createDictionaryEntryPoint/getBuiltFetchDictionariesPath.mjs +2 -2
  109. package/dist/esm/createDictionaryEntryPoint/getBuiltRemoteDictionariesPath.mjs +2 -2
  110. package/dist/esm/createDictionaryEntryPoint/getBuiltUnmergedDictionariesPath.mjs +2 -2
  111. package/dist/esm/createType/createModuleAugmentation.mjs +3 -3
  112. package/dist/esm/createType/createType.mjs +1 -1
  113. package/dist/esm/docReview/index.mjs +5 -5
  114. package/dist/esm/docReview/pipeline.mjs +4 -4
  115. package/dist/esm/fetchDistantDictionaries.mjs +1 -1
  116. package/dist/esm/handleContentDeclarationFileChange.mjs +2 -2
  117. package/dist/esm/handleUnlinkedContentDeclarationFile.mjs +1 -1
  118. package/dist/esm/init/frameworkSetup/nextAppRouter/restructure.mjs +1 -1
  119. package/dist/esm/init/frameworkSetup/tanstackStart/restructure.mjs +1 -1
  120. package/dist/esm/init/index.mjs +306 -301
  121. package/dist/esm/init/index.mjs.map +1 -1
  122. package/dist/esm/init/upgradeIntlayerPackages.mjs +57 -0
  123. package/dist/esm/init/upgradeIntlayerPackages.mjs.map +1 -0
  124. package/dist/esm/init/utils/fileSystem.mjs +1 -1
  125. package/dist/esm/init/utils/githubActions.mjs +1 -1
  126. package/dist/esm/init/utils/index.mjs +3 -2
  127. package/dist/esm/init/utils/intlayerDependencies.mjs +110 -0
  128. package/dist/esm/init/utils/intlayerDependencies.mjs.map +1 -0
  129. package/dist/esm/init/utils/packageManager.mjs +143 -93
  130. package/dist/esm/init/utils/packageManager.mjs.map +1 -1
  131. package/dist/esm/initConfig/index.mjs +1 -1
  132. package/dist/esm/installLSP.mjs +1 -1
  133. package/dist/esm/installMCP/installMCP.mjs +1 -1
  134. package/dist/esm/installSkills/index.mjs +111 -20
  135. package/dist/esm/installSkills/index.mjs.map +1 -1
  136. package/dist/esm/listDictionariesPath.mjs +1 -1
  137. package/dist/esm/listGitFiles.mjs +1 -1
  138. package/dist/esm/loadDictionaries/getIntlayerBundle.mjs +2 -2
  139. package/dist/esm/loadDictionaries/index.mjs +1 -1
  140. package/dist/esm/loadDictionaries/loadContentDeclaration.mjs +2 -2
  141. package/dist/esm/loadDictionaries/loadDictionaries.mjs +1 -1
  142. package/dist/esm/loadDictionaries/loadLocalDictionaries.mjs +1 -1
  143. package/dist/esm/loadDictionaries/loadMarkdownContentDeclaration.mjs +1 -1
  144. package/dist/esm/logConfigDetails.mjs +1 -1
  145. package/dist/esm/prepareIntlayer.mjs +4 -4
  146. package/dist/esm/scan/index.mjs +1 -1
  147. package/dist/esm/scan/scanWebsite.mjs +1 -1
  148. package/dist/esm/syncPluginKit/createFileAdapter.mjs +1 -1
  149. package/dist/esm/syncPluginKit/index.mjs +1 -1
  150. package/dist/esm/utils/buildComponentFilesList.mjs +1 -1
  151. package/dist/esm/utils/contentWatcherLock.mjs +2 -2
  152. package/dist/esm/utils/index.mjs +4 -4
  153. package/dist/esm/utils/readDictionariesFromDisk.mjs +1 -1
  154. package/dist/esm/utils/runOnce.mjs +1 -1
  155. package/dist/esm/utils/runParallel/pidTree.mjs +1 -1
  156. package/dist/esm/utils/withFileLock.mjs +1 -1
  157. package/dist/esm/watcher.mjs +6 -6
  158. package/dist/esm/writeConfiguration/index.mjs +1 -1
  159. package/dist/esm/writeContentDeclaration/processContentDeclarationContent.mjs +2 -2
  160. package/dist/esm/writeContentDeclaration/transformJSFile.mjs +1 -1
  161. package/dist/esm/writeContentDeclaration/writeContentDeclaration.mjs +4 -4
  162. package/dist/esm/writeContentDeclaration/writeJSFile.mjs +3 -3
  163. package/dist/esm/writeContentDeclaration/writeMarkdownFile.mjs +1 -1
  164. package/dist/esm/writeContentDeclaration/writeYamlFile.mjs +1 -1
  165. package/dist/esm/writeFileIfChanged.mjs +1 -1
  166. package/dist/types/cli.d.ts +2 -1
  167. package/dist/types/init/index.d.ts +9 -6
  168. package/dist/types/init/index.d.ts.map +1 -1
  169. package/dist/types/init/upgradeIntlayerPackages.d.ts +26 -0
  170. package/dist/types/init/upgradeIntlayerPackages.d.ts.map +1 -0
  171. package/dist/types/init/utils/index.d.ts +3 -2
  172. package/dist/types/init/utils/intlayerDependencies.d.ts +66 -0
  173. package/dist/types/init/utils/intlayerDependencies.d.ts.map +1 -0
  174. package/dist/types/init/utils/packageManager.d.ts +44 -19
  175. package/dist/types/init/utils/packageManager.d.ts.map +1 -1
  176. package/dist/types/installSkills/index.d.ts +16 -3
  177. package/dist/types/installSkills/index.d.ts.map +1 -1
  178. package/package.json +7 -7
@@ -11,6 +11,7 @@ const require_init_utils_githubActions = require('./utils/githubActions.cjs');
11
11
  const require_init_utils_jsonParser = require('./utils/jsonParser.cjs');
12
12
  const require_init_utils_nextCompilerBabel = require('./utils/nextCompilerBabel.cjs');
13
13
  const require_init_utils_tsConfig = require('./utils/tsConfig.cjs');
14
+ const require_init_upgradeIntlayerPackages = require('./upgradeIntlayerPackages.cjs');
14
15
  let node_path = require("node:path");
15
16
  let _intlayer_config_colors = require("@intlayer/config/colors");
16
17
  _intlayer_config_colors = require_runtime.__toESM(_intlayer_config_colors);
@@ -30,12 +31,18 @@ const DocumentationRouter = {
30
31
  Astro: "https://intlayer.org/doc/environment/astro.md",
31
32
  ViteAndReact: "https://intlayer.org/doc/environment/vite-and-react.md",
32
33
  ViteAndReact_ReactRouterV7: "https://intlayer.org/doc/environment/vite-and-react/react-router-v7.md",
33
- ViteAndReact_ReactRouterV7_FSRoutes: "https://intlayer.org/doc/environment/vite-and-react/react-router-v7-fs-routes.md",
34
34
  ViteAndVue: "https://intlayer.org/doc/environment/vite-and-vue.md",
35
35
  ViteAndSolid: "https://intlayer.org/doc/environment/vite-and-solid.md",
36
36
  ViteAndSvelte: "https://intlayer.org/doc/environment/vite-and-svelte.md",
37
37
  ViteAndPreact: "https://intlayer.org/doc/environment/vite-and-preact.md",
38
+ ViteAndLit: "https://intlayer.org/doc/environment/vite-and-lit.md",
39
+ ViteAndVanilla: "https://intlayer.org/doc/environment/vite-and-vanilla.md",
40
+ Vanilla: "https://intlayer.org/doc/environment/vanilla.md",
38
41
  TanStackRouter: "https://intlayer.org/doc/environment/tanstack-start.md",
42
+ TanStackRouterAndSolid: "https://intlayer.org/doc/environment/tanstack-start/solid.md",
43
+ SolidStart: "https://intlayer.org/doc/environment/solid-start.md",
44
+ Analog: "https://intlayer.org/doc/environment/analog.md",
45
+ Remix: "https://intlayer.org/doc/environment/remix-3.md",
39
46
  NuxtAndVue: "https://intlayer.org/doc/environment/nuxt-and-vue.md",
40
47
  Angular: "https://intlayer.org/doc/environment/angular.md",
41
48
  SvelteKit: "https://intlayer.org/doc/environment/sveltekit.md",
@@ -103,21 +110,26 @@ const getDocumentationUrl = (packageJson) => {
103
110
  if (deps.nuxt) return DocumentationRouter.NuxtAndVue;
104
111
  if (deps.astro) return DocumentationRouter.Astro;
105
112
  if (deps["@sveltejs/kit"]) return DocumentationRouter.SvelteKit;
113
+ if (deps["@analogjs/platform"]) return DocumentationRouter.Analog;
114
+ if (deps["@solidjs/start"]) return DocumentationRouter.SolidStart;
115
+ if (deps.remix || deps["remix-intlayer"]) return DocumentationRouter.Remix;
106
116
  if (deps["@tanstack/react-router"]) return DocumentationRouter.TanStackRouter;
117
+ if (deps["@tanstack/solid-router"]) return DocumentationRouter.TanStackRouterAndSolid;
107
118
  const reactRouterVersion = deps["react-router"];
108
- if (reactRouterVersion && typeof reactRouterVersion === "string") {
109
- if (deps["@react-router/fs-routes"]) return DocumentationRouter.ViteAndReact_ReactRouterV7_FSRoutes;
110
- if (isVersion(reactRouterVersion, 7)) return DocumentationRouter.ViteAndReact_ReactRouterV7;
111
- }
119
+ if (typeof reactRouterVersion === "string" && (deps["@react-router/fs-routes"] || isVersion(reactRouterVersion, 7))) return DocumentationRouter.ViteAndReact_ReactRouterV7;
112
120
  if (deps.vite) {
113
121
  if (deps.vue) return DocumentationRouter.ViteAndVue;
114
122
  if (deps["solid-js"]) return DocumentationRouter.ViteAndSolid;
115
123
  if (deps.svelte) return DocumentationRouter.ViteAndSvelte;
116
124
  if (deps.preact) return DocumentationRouter.ViteAndPreact;
125
+ if (deps.lit) return DocumentationRouter.ViteAndLit;
126
+ if (deps["vanilla-intlayer"]) return DocumentationRouter.ViteAndVanilla;
117
127
  return DocumentationRouter.ViteAndReact;
118
128
  }
119
129
  if (deps["react-scripts"]) return DocumentationRouter.CRA;
120
130
  if (deps["@angular/core"]) return DocumentationRouter.Angular;
131
+ if (deps.lit) return DocumentationRouter.ViteAndLit;
132
+ if (deps["vanilla-intlayer"]) return DocumentationRouter.Vanilla;
121
133
  if (deps["@nestjs/core"]) return DocumentationRouter.NestJS;
122
134
  if (deps["@adonisjs/core"]) return DocumentationRouter.AdonisJS;
123
135
  if (deps.elysia) return DocumentationRouter.Elysia;
@@ -170,15 +182,26 @@ const initIntlayer = async (rootDir, options) => {
170
182
  ...packageJson.dependencies ?? {},
171
183
  ...packageJson.devDependencies ?? {}
172
184
  };
185
+ const movedPackages = require_init_utils_packageManager.moveCompatPackagesToDevDependencies(packageJson);
186
+ if (movedPackages.length > 0) {
187
+ const indentation = packageJsonContent.match(/^[ \t]+(?=")/m)?.[0] ?? 2;
188
+ const trailingNewline = packageJsonContent.endsWith("\n") ? "\n" : "";
189
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, packageJsonPath, `${JSON.stringify(packageJson, null, indentation)}${trailingNewline}`);
190
+ for (const pkg of movedPackages) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Moved ${(0, _intlayer_config_logger.colorize)(pkg, _intlayer_config_colors.MAGENTA)} from dependencies to devDependencies`);
191
+ }
173
192
  const packageManager = require_init_utils_packageManager.detectPackageManager(rootDir);
174
193
  const linguiPresent = Boolean(allDeps["@lingui/core"] || allDeps["@lingui/react"] || allDeps["@intlayer/lingui"]);
175
194
  const linguiCatalog = linguiPresent ? await require_init_utils_fileSystem.detectLinguiCatalogPattern(rootDir) : null;
176
195
  const linguiCatalogFormat = linguiCatalog?.format ?? (linguiPresent ? "po" : null);
177
- const { packagesToInstall, devPackagesToInstall, compatSyncConfig, compatVitePluginConfig } = require_init_utils_packageManager.detectMissingIntlayerPackages(allDeps, { linguiCatalogFormat });
196
+ const { packagesToInstall, devPackagesToInstall, compatSyncConfig, compatVitePluginConfig } = require_init_utils_packageManager.detectMissingIntlayerPackages(allDeps, {
197
+ linguiCatalogFormat,
198
+ dependencies: packageJson.dependencies,
199
+ devDependencies: packageJson.devDependencies
200
+ });
178
201
  const wantsJsonNamespaces = options?.contentStrategy === "json-namespaces" && !compatSyncConfig;
179
202
  if (wantsJsonNamespaces && !allDeps["@intlayer/sync-json-plugin"] && !devPackagesToInstall.includes("@intlayer/sync-json-plugin")) devPackagesToInstall.push("@intlayer/sync-json-plugin");
180
203
  if (!options?.noInstallPackages) {
181
- const withVersion = (packages) => options?.upgradeToVersion ? packages.map((pkg) => `${pkg}@${options.upgradeToVersion}`) : packages;
204
+ const withVersion = (packages) => options?.upgradeToVersion ? packages.map((pkg) => require_init_utils_packageManager.isIntlayerPackageName(pkg) ? `${pkg}@${options.upgradeToVersion}` : pkg) : packages;
182
205
  if (packagesToInstall.length > 0) {
183
206
  (0, _intlayer_config_logger.logger)((0, _intlayer_config_logger.colorize)("Installing missing Intlayer dependencies...", _intlayer_config_colors.CYAN));
184
207
  try {
@@ -197,21 +220,7 @@ const initIntlayer = async (rootDir, options) => {
197
220
  (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Failed to install dev packages. Please install manually: ${devPackagesToInstall.join(" ")}`, { level: "warn" });
198
221
  }
199
222
  }
200
- if (options?.upgradeToVersion) {
201
- const outdatedDependencies = require_init_utils_packageManager.detectOutdatedIntlayerPackages(rootDir, packageJson.dependencies ?? {}, options.upgradeToVersion);
202
- const outdatedDevDependencies = require_init_utils_packageManager.detectOutdatedIntlayerPackages(rootDir, packageJson.devDependencies ?? {}, options.upgradeToVersion);
203
- const allOutdated = [...outdatedDependencies, ...outdatedDevDependencies];
204
- if (allOutdated.length > 0) {
205
- (0, _intlayer_config_logger.logger)((0, _intlayer_config_logger.colorize)(`Upgrading outdated Intlayer dependencies to ${options.upgradeToVersion}...`, _intlayer_config_colors.CYAN));
206
- try {
207
- require_init_utils_packageManager.upgradePackages(rootDir, outdatedDependencies, packageManager, options.upgradeToVersion);
208
- require_init_utils_packageManager.upgradePackages(rootDir, outdatedDevDependencies, packageManager, options.upgradeToVersion, true);
209
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Upgraded: ${allOutdated.map((pkg) => (0, _intlayer_config_logger.colorize)(pkg, _intlayer_config_colors.MAGENTA)).join(", ")}`);
210
- } catch {
211
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Failed to upgrade packages. Please upgrade manually: ${allOutdated.join(" ")}`, { level: "warn" });
212
- }
213
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Intlayer dependencies are up to date`);
214
- }
223
+ await require_init_upgradeIntlayerPackages.upgradeIntlayerPackages(rootDir);
215
224
  }
216
225
  const gitignorePath = ".gitignore";
217
226
  if (!options?.noGitignore && await require_init_utils_fileSystem.exists(rootDir, gitignorePath)) {
@@ -315,301 +324,303 @@ const initIntlayer = async (rootDir, options) => {
315
324
  (0, _intlayer_config_logger.colorizePath)(DocumentationRouter.ESLint)
316
325
  ]);
317
326
  }
318
- const tsConfigFiles = await require_init_utils_tsConfig.findTsConfigFiles(rootDir);
319
- let hasTsConfig = false;
320
- for (const fileName of tsConfigFiles) if (await require_init_utils_fileSystem.exists(rootDir, fileName)) {
321
- hasTsConfig = true;
322
- try {
323
- const fileContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, fileName);
324
- const config = require_init_utils_jsonParser.parseJSONWithComments(fileContent);
325
- const typeDefinition = "./.intlayer/**/*.ts";
326
- let updated = false;
327
- if (!config.include) {} else if (Array.isArray(config.include) && !config.include.some((pattern) => pattern.includes(".intlayer"))) {
328
- config.include.push(typeDefinition);
329
- updated = true;
330
- } else if (config.include.includes(typeDefinition)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(fileName)} already includes intlayer types`);
331
- if (updated) {
332
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, fileName, JSON.stringify(config, null, 2));
333
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(fileName)} to include intlayer types`);
327
+ if (!options?.noFrameworkSetup) {
328
+ const tsConfigFiles = await require_init_utils_tsConfig.findTsConfigFiles(rootDir);
329
+ let hasTsConfig = false;
330
+ for (const fileName of tsConfigFiles) if (await require_init_utils_fileSystem.exists(rootDir, fileName)) {
331
+ hasTsConfig = true;
332
+ try {
333
+ const fileContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, fileName);
334
+ const config = require_init_utils_jsonParser.parseJSONWithComments(fileContent);
335
+ const typeDefinition = "./.intlayer/**/*.ts";
336
+ let updated = false;
337
+ if (!config.include) {} else if (Array.isArray(config.include) && !config.include.some((pattern) => pattern.includes(".intlayer"))) {
338
+ config.include.push(typeDefinition);
339
+ updated = true;
340
+ } else if (config.include.includes(typeDefinition)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(fileName)} already includes intlayer types`);
341
+ if (updated) {
342
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, fileName, JSON.stringify(config, null, 2));
343
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(fileName)} to include intlayer types`);
344
+ }
345
+ } catch {
346
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not parse or update ${(0, _intlayer_config_logger.colorizePath)(fileName)}. You may need to add ${(0, _intlayer_config_logger.colorizePath)(".intlayer/types/**/*.ts")} manually.`, { level: "warn" });
334
347
  }
335
- } catch {
336
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not parse or update ${(0, _intlayer_config_logger.colorizePath)(fileName)}. You may need to add ${(0, _intlayer_config_logger.colorizePath)(".intlayer/types/**/*.ts")} manually.`, { level: "warn" });
337
- }
338
- }
339
- const format = hasTsConfig ? "intlayer.config.ts" : "intlayer.config.mjs";
340
- const detectedPattern = await require_init_utils_fileSystem.detectJsonLocalePattern(rootDir);
341
- await require_initConfig_index.initConfig(format, rootDir, {
342
- locales: detectedPattern?.locales,
343
- applicationURL: getDefaultApplicationURL(allDeps)
344
- });
345
- if (options?.contentStrategy === "centralized") await require_init_cms.setCompilerOutputInConfig(rootDir, "/locales/{{locale}}/{{key}}.content.json");
346
- const syncConfigToInject = compatSyncConfig ?? (wantsJsonNamespaces ? {
347
- format: "i18next",
348
- sourceTemplate: detectedPattern?.template ?? "./locales/${locale}/${key}.json"
349
- } : void 0);
350
- if (syncConfigToInject) {
351
- const nextIntlMessagesPattern = allDeps["next-intl"] || allDeps["@intlayer/next-intl"] || allDeps["use-intl"] || allDeps["@intlayer/use-intl"] ? await require_init_utils_fileSystem.detectNextIntlMessagesPattern(rootDir) : null;
352
- const sourceTemplate = linguiCatalog?.template ?? nextIntlMessagesPattern?.template ?? detectedPattern?.template;
353
- const resolvedSyncConfig = {
354
- ...syncConfigToInject,
355
- ...sourceTemplate ? { sourceTemplate } : {}
356
- };
357
- const syncPluginPackage = resolvedSyncConfig.plugin === "po" ? "@intlayer/sync-po-plugin" : "@intlayer/sync-json-plugin";
358
- const syncPluginName = resolvedSyncConfig.plugin === "po" ? "syncPO" : "syncJSON";
359
- if (resolvedSyncConfig.splitKeys && resolvedSyncConfig.sourceTemplate.includes("${key}")) resolvedSyncConfig.splitKeys = false;
360
- for (const configFile of [
361
- "intlayer.config.ts",
362
- "intlayer.config.mjs",
363
- "intlayer.config.js",
364
- "intlayer.config.cjs"
365
- ]) if (await require_init_utils_fileSystem.exists(rootDir, configFile)) {
366
- const configContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, configFile);
367
- if (!configContent.includes(syncPluginPackage)) {
368
- const extension = configFile.split(".").pop();
369
- const updatedConfigContent = require_init_utils_configManipulation.updateIntlayerConfigWithSyncPlugin(configContent, extension, resolvedSyncConfig);
370
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, configFile, updatedConfigContent);
371
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(configFile)} with ${syncPluginName} compat plugin`);
372
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(configFile)} already includes ${syncPluginName} plugin`);
373
- break;
374
348
  }
375
- }
376
- if (options?.routingMode) await require_init_cms.setRoutingModeInConfig(rootDir, options.routingMode);
377
- let hasAliasConfiguration = false;
378
- for (const file of [
379
- "vite.config.ts",
380
- "vite.config.js",
381
- "vite.config.mjs"
382
- ]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
383
- hasAliasConfiguration = true;
384
- const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
385
- const extension = file.split(".").pop();
386
- if (compatVitePluginConfig) {
387
- const { replacesVitePlugin } = compatVitePluginConfig;
388
- if (content.includes(compatVitePluginConfig.pluginPackageSource)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes ${compatVitePluginConfig.pluginPackageSource}`);
389
- else if (replacesVitePlugin && content.includes(replacesVitePlugin.fromPackageSource)) {
390
- const updatedContent = require_init_utils_configManipulation.replaceViteConfigPluginImportSource(content, replacesVitePlugin.importName, replacesVitePlugin.fromPackageSource, compatVitePluginConfig.pluginPackageSource);
391
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
392
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to import ${replacesVitePlugin.importName} from ${compatVitePluginConfig.pluginPackageSource}`);
393
- } else {
394
- const updatedContent = require_init_utils_configManipulation.updateViteConfigForCompatPlugin(content, extension, compatVitePluginConfig);
395
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
396
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include ${compatVitePluginConfig.pluginFunctionName} compat plugin`);
349
+ const format = hasTsConfig ? "intlayer.config.ts" : "intlayer.config.mjs";
350
+ const detectedPattern = await require_init_utils_fileSystem.detectJsonLocalePattern(rootDir);
351
+ await require_initConfig_index.initConfig(format, rootDir, {
352
+ locales: detectedPattern?.locales,
353
+ applicationURL: getDefaultApplicationURL(allDeps)
354
+ });
355
+ if (options?.contentStrategy === "centralized") await require_init_cms.setCompilerOutputInConfig(rootDir, "/locales/{{locale}}/{{key}}.content.json");
356
+ const syncConfigToInject = compatSyncConfig ?? (wantsJsonNamespaces ? {
357
+ format: "i18next",
358
+ sourceTemplate: detectedPattern?.template ?? "./locales/${locale}/${key}.json"
359
+ } : void 0);
360
+ if (syncConfigToInject) {
361
+ const nextIntlMessagesPattern = allDeps["next-intl"] || allDeps["@intlayer/next-intl"] || allDeps["use-intl"] || allDeps["@intlayer/use-intl"] ? await require_init_utils_fileSystem.detectNextIntlMessagesPattern(rootDir) : null;
362
+ const sourceTemplate = linguiCatalog?.template ?? nextIntlMessagesPattern?.template ?? detectedPattern?.template;
363
+ const resolvedSyncConfig = {
364
+ ...syncConfigToInject,
365
+ ...sourceTemplate ? { sourceTemplate } : {}
366
+ };
367
+ const syncPluginPackage = resolvedSyncConfig.plugin === "po" ? "@intlayer/sync-po-plugin" : "@intlayer/sync-json-plugin";
368
+ const syncPluginName = resolvedSyncConfig.plugin === "po" ? "syncPO" : "syncJSON";
369
+ if (resolvedSyncConfig.splitKeys && resolvedSyncConfig.sourceTemplate.includes("${key}")) resolvedSyncConfig.splitKeys = false;
370
+ for (const configFile of [
371
+ "intlayer.config.ts",
372
+ "intlayer.config.mjs",
373
+ "intlayer.config.js",
374
+ "intlayer.config.cjs"
375
+ ]) if (await require_init_utils_fileSystem.exists(rootDir, configFile)) {
376
+ const configContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, configFile);
377
+ if (!configContent.includes(syncPluginPackage)) {
378
+ const extension = configFile.split(".").pop();
379
+ const updatedConfigContent = require_init_utils_configManipulation.updateIntlayerConfigWithSyncPlugin(configContent, extension, resolvedSyncConfig);
380
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, configFile, updatedConfigContent);
381
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(configFile)} with ${syncPluginName} compat plugin`);
382
+ } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(configFile)} already includes ${syncPluginName} plugin`);
383
+ break;
397
384
  }
398
- } else if (require_init_utils_configManipulation.hasIntlayerVitePlugin(content)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes an Intlayer plugin`);
399
- else {
400
- const updatedContent = require_init_utils_configManipulation.updateViteConfig(content, extension);
401
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
402
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer plugin`);
403
385
  }
404
- break;
405
- }
406
- const nextConfigs = [
407
- "next.config.js",
408
- "next.config.mjs",
409
- "next.config.ts"
410
- ];
411
- let isNextJsProject = false;
412
- for (const file of nextConfigs) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
413
- isNextJsProject = true;
414
- hasAliasConfiguration = true;
415
- const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
416
- const extension = file.split(".").pop();
417
- if (allDeps["next-i18next"]) {
418
- if (!content.includes("@intlayer/next-i18next")) {
419
- const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextI18next(content, extension);
420
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
421
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-i18next compat plugin`);
422
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/next-i18next`);
423
- } else if (allDeps["next-intl"]) {
424
- if (!content.includes("@intlayer/next-intl/plugin")) {
425
- const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextIntl(content, extension);
426
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
427
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-intl compat plugin`);
428
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/next-intl/plugin`);
429
- } else if (allDeps["next-translate"]) {
430
- if (!content.includes("@intlayer/next-translate")) {
431
- const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextTranslate(content, extension);
432
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
433
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-translate compat plugin`);
434
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/next-translate`);
435
- } else if (!content.includes("next-intlayer")) {
436
- const updatedContent = require_init_utils_configManipulation.updateNextConfig(content, extension);
437
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
438
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer plugin`);
439
- }
440
- break;
441
- }
442
- if (isNextJsProject) await require_init_utils_nextCompilerBabel.setupNextCompilerBabelConfig({
443
- rootDir,
444
- packageManager,
445
- allDeps,
446
- skipInstall: Boolean(options?.noInstallPackages)
447
- });
448
- for (const file of [
449
- "astro.config.mjs",
450
- "astro.config.js",
451
- "astro.config.ts",
452
- "astro.config.cjs"
453
- ]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
454
- hasAliasConfiguration = true;
455
- if (file.startsWith("astro.config.")) {
386
+ if (options?.routingMode) await require_init_cms.setRoutingModeInConfig(rootDir, options.routingMode);
387
+ let hasAliasConfiguration = false;
388
+ for (const file of [
389
+ "vite.config.ts",
390
+ "vite.config.js",
391
+ "vite.config.mjs"
392
+ ]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
393
+ hasAliasConfiguration = true;
456
394
  const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
457
- if (!content.includes("astro-intlayer")) {
458
- const extension = file.split(".").pop();
459
- const updatedContent = require_init_utils_configManipulation.updateAstroConfig(content, extension);
395
+ const extension = file.split(".").pop();
396
+ if (compatVitePluginConfig) {
397
+ const { replacesVitePlugin } = compatVitePluginConfig;
398
+ if (content.includes(compatVitePluginConfig.pluginPackageSource)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes ${compatVitePluginConfig.pluginPackageSource}`);
399
+ else if (replacesVitePlugin && content.includes(replacesVitePlugin.fromPackageSource)) {
400
+ const updatedContent = require_init_utils_configManipulation.replaceViteConfigPluginImportSource(content, replacesVitePlugin.importName, replacesVitePlugin.fromPackageSource, compatVitePluginConfig.pluginPackageSource);
401
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
402
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to import ${replacesVitePlugin.importName} from ${compatVitePluginConfig.pluginPackageSource}`);
403
+ } else {
404
+ const updatedContent = require_init_utils_configManipulation.updateViteConfigForCompatPlugin(content, extension, compatVitePluginConfig);
405
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
406
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include ${compatVitePluginConfig.pluginFunctionName} compat plugin`);
407
+ }
408
+ } else if (require_init_utils_configManipulation.hasIntlayerVitePlugin(content)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes an Intlayer plugin`);
409
+ else {
410
+ const updatedContent = require_init_utils_configManipulation.updateViteConfig(content, extension);
460
411
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
461
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer integration`);
412
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer plugin`);
462
413
  }
414
+ break;
463
415
  }
464
- break;
465
- }
466
- for (const file of ["nuxt.config.js", "nuxt.config.ts"]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
467
- hasAliasConfiguration = true;
468
- const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
469
- if (allDeps["@nuxtjs/i18n"]) {
470
- if (!content.includes("@intlayer/nuxtjs-i18n")) {
471
- const updatedContent = require_init_utils_configManipulation.updateNuxtConfigForNuxtjsI18n(content);
416
+ const nextConfigs = [
417
+ "next.config.js",
418
+ "next.config.mjs",
419
+ "next.config.ts"
420
+ ];
421
+ let isNextJsProject = false;
422
+ for (const file of nextConfigs) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
423
+ isNextJsProject = true;
424
+ hasAliasConfiguration = true;
425
+ const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
426
+ const extension = file.split(".").pop();
427
+ if (allDeps["next-i18next"] || allDeps["@intlayer/next-i18next"]) {
428
+ if (!content.includes("@intlayer/next-i18next")) {
429
+ const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextI18next(content, extension);
430
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
431
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-i18next compat plugin`);
432
+ } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/next-i18next`);
433
+ } else if (allDeps["next-intl"] || allDeps["@intlayer/next-intl"]) {
434
+ if (!content.includes("@intlayer/next-intl/plugin")) {
435
+ const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextIntl(content, extension);
436
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
437
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-intl compat plugin`);
438
+ } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/next-intl/plugin`);
439
+ } else if (allDeps["next-translate"] || allDeps["@intlayer/next-translate"]) {
440
+ if (!content.includes("@intlayer/next-translate")) {
441
+ const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextTranslate(content, extension);
442
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
443
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-translate compat plugin`);
444
+ } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/next-translate`);
445
+ } else if (!content.includes("next-intlayer")) {
446
+ const updatedContent = require_init_utils_configManipulation.updateNextConfig(content, extension);
472
447
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
473
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include @intlayer/nuxtjs-i18n module`);
474
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/nuxtjs-i18n`);
475
- } else if (!content.includes("nuxt-intlayer")) {
476
- const updatedContent = require_init_utils_configManipulation.updateNuxtConfig(content);
477
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
478
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer module`);
448
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer plugin`);
449
+ }
450
+ break;
479
451
  }
480
- break;
481
- }
482
- if (Boolean(allDeps["react-native"] || allDeps.expo)) {
483
- hasAliasConfiguration = true;
484
- const metroConfigs = [
485
- "metro.config.js",
486
- "metro.config.cjs",
487
- "metro.config.mjs",
488
- "metro.config.ts"
489
- ];
490
- let metroConfigFile;
491
- for (const file of metroConfigs) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
492
- metroConfigFile = file;
452
+ if (isNextJsProject) await require_init_utils_nextCompilerBabel.setupNextCompilerBabelConfig({
453
+ rootDir,
454
+ packageManager,
455
+ allDeps,
456
+ skipInstall: Boolean(options?.noInstallPackages)
457
+ });
458
+ for (const file of [
459
+ "astro.config.mjs",
460
+ "astro.config.js",
461
+ "astro.config.ts",
462
+ "astro.config.cjs"
463
+ ]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
464
+ hasAliasConfiguration = true;
465
+ if (file.startsWith("astro.config.")) {
466
+ const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
467
+ if (!content.includes("astro-intlayer")) {
468
+ const extension = file.split(".").pop();
469
+ const updatedContent = require_init_utils_configManipulation.updateAstroConfig(content, extension);
470
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
471
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer integration`);
472
+ }
473
+ }
493
474
  break;
494
475
  }
495
- if (metroConfigFile) {
496
- const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, metroConfigFile);
497
- if (content.includes("react-native-intlayer")) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(metroConfigFile)} already includes the Intlayer Metro plugin`);
498
- else {
499
- const extension = metroConfigFile.split(".").pop();
500
- const updatedContent = require_init_utils_configManipulation.updateMetroConfig(content, extension);
501
- if (updatedContent !== content) {
502
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, metroConfigFile, updatedContent);
503
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(metroConfigFile)} to include the Intlayer Metro plugin`);
504
- } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not automatically update ${(0, _intlayer_config_logger.colorizePath)(metroConfigFile)}. Wrap your exported config with ${(0, _intlayer_config_logger.colorize)("configMetroIntlayer", _intlayer_config_colors.MAGENTA)}: ${(0, _intlayer_config_logger.colorizePath)(DocumentationRouter.ReactNativeAndExpo)}`, { level: "warn" });
476
+ for (const file of ["nuxt.config.js", "nuxt.config.ts"]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
477
+ hasAliasConfiguration = true;
478
+ const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
479
+ if (allDeps["@nuxtjs/i18n"]) {
480
+ if (!content.includes("@intlayer/nuxtjs-i18n")) {
481
+ const updatedContent = require_init_utils_configManipulation.updateNuxtConfigForNuxtjsI18n(content);
482
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
483
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include @intlayer/nuxtjs-i18n module`);
484
+ } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(file)} already includes @intlayer/nuxtjs-i18n`);
485
+ } else if (!content.includes("nuxt-intlayer")) {
486
+ const updatedContent = require_init_utils_configManipulation.updateNuxtConfig(content);
487
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
488
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer module`);
505
489
  }
506
- } else {
507
- const newMetroConfigFile = "metro.config.js";
508
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, newMetroConfigFile, require_init_utils_configManipulation.getMetroConfigTemplate(Boolean(allDeps.expo)));
509
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Created ${(0, _intlayer_config_logger.colorizePath)(newMetroConfigFile)} with the Intlayer Metro plugin`);
490
+ break;
510
491
  }
511
- }
512
- const newDevScript = require_init_utils_devScript.resolveDevScript({
513
- devScript: packageJson.scripts?.dev,
514
- allDeps,
515
- isNextJsProject
516
- });
517
- if (newDevScript) {
518
- packageJson.scripts.dev = newDevScript;
519
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, packageJsonPath, JSON.stringify(packageJson, null, 2));
520
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)("package.json")} dev script to run intlayer watch`);
521
- }
522
- for (const file of [
523
- "webpack.config.js",
524
- "webpack.config.ts",
525
- "webpack.config.mjs",
526
- "webpack.config.cjs"
527
- ]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
528
- hasAliasConfiguration = true;
529
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Found ${(0, _intlayer_config_logger.colorizePath)(file)}. Make sure to configure aliases manually or use the Intlayer Webpack plugin.`);
530
- break;
531
- }
532
- if ([
533
- "express",
534
- "fastify",
535
- "@adonisjs/core",
536
- "hono",
537
- "elysia",
538
- ...require_init_utils_devScript.BACKEND_INTLAYER_PACKAGES
539
- ].some((pkg) => allDeps[pkg])) hasAliasConfiguration = true;
540
- if (!hasAliasConfiguration) {
541
- const configuration = (0, _intlayer_config_node.getConfiguration)({ baseDir: rootDir });
542
- const aliases = (0, _intlayer_config_utils.getAlias)({
543
- configuration,
544
- formatter: (value) => value.startsWith("./") || value.startsWith("../") ? value : `./${value}`
545
- });
546
- if (hasTsConfig && tsConfigFiles.length > 0) {
547
- const tsConfigPath = tsConfigFiles.find((file) => file === "tsconfig.json") || tsConfigFiles[0];
548
- if (tsConfigPath) {
549
- const tsConfigContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, tsConfigPath);
550
- const config = require_init_utils_jsonParser.parseJSONWithComments(tsConfigContent);
551
- config.compilerOptions ??= {};
552
- config.compilerOptions.paths ??= {};
553
- let updated = false;
554
- Object.entries(aliases).forEach(([alias, path]) => {
555
- if (!config.compilerOptions.paths[alias]) {
556
- config.compilerOptions.paths[alias] = [path];
557
- updated = true;
558
- }
559
- });
560
- if (updated) {
561
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, tsConfigPath, JSON.stringify(config, null, 2));
562
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(tsConfigPath)} to include Intlayer aliases`);
492
+ if (Boolean(allDeps["react-native"] || allDeps.expo)) {
493
+ hasAliasConfiguration = true;
494
+ const metroConfigs = [
495
+ "metro.config.js",
496
+ "metro.config.cjs",
497
+ "metro.config.mjs",
498
+ "metro.config.ts"
499
+ ];
500
+ let metroConfigFile;
501
+ for (const file of metroConfigs) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
502
+ metroConfigFile = file;
503
+ break;
504
+ }
505
+ if (metroConfigFile) {
506
+ const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, metroConfigFile);
507
+ if (content.includes("react-native-intlayer")) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(metroConfigFile)} already includes the Intlayer Metro plugin`);
508
+ else {
509
+ const extension = metroConfigFile.split(".").pop();
510
+ const updatedContent = require_init_utils_configManipulation.updateMetroConfig(content, extension);
511
+ if (updatedContent !== content) {
512
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, metroConfigFile, updatedContent);
513
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(metroConfigFile)} to include the Intlayer Metro plugin`);
514
+ } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not automatically update ${(0, _intlayer_config_logger.colorizePath)(metroConfigFile)}. Wrap your exported config with ${(0, _intlayer_config_logger.colorize)("configMetroIntlayer", _intlayer_config_colors.MAGENTA)}: ${(0, _intlayer_config_logger.colorizePath)(DocumentationRouter.ReactNativeAndExpo)}`, { level: "warn" });
563
515
  }
516
+ } else {
517
+ const newMetroConfigFile = "metro.config.js";
518
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, newMetroConfigFile, require_init_utils_configManipulation.getMetroConfigTemplate(Boolean(allDeps.expo)));
519
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Created ${(0, _intlayer_config_logger.colorizePath)(newMetroConfigFile)} with the Intlayer Metro plugin`);
564
520
  }
565
- } else {
566
- const jsConfigPath = "jsconfig.json";
567
- if (await require_init_utils_fileSystem.exists(rootDir, jsConfigPath)) {
568
- const jsConfigContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, jsConfigPath);
569
- const config = require_init_utils_jsonParser.parseJSONWithComments(jsConfigContent);
570
- config.compilerOptions ??= {};
571
- config.compilerOptions.paths ??= {};
572
- let updated = false;
573
- Object.entries(aliases).forEach(([alias, path]) => {
574
- if (!config.compilerOptions.paths[alias]) {
575
- config.compilerOptions.paths[alias] = [path];
576
- updated = true;
521
+ }
522
+ const newDevScript = require_init_utils_devScript.resolveDevScript({
523
+ devScript: packageJson.scripts?.dev,
524
+ allDeps,
525
+ isNextJsProject
526
+ });
527
+ if (newDevScript) {
528
+ packageJson.scripts.dev = newDevScript;
529
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, packageJsonPath, JSON.stringify(packageJson, null, 2));
530
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)("package.json")} dev script to run intlayer watch`);
531
+ }
532
+ for (const file of [
533
+ "webpack.config.js",
534
+ "webpack.config.ts",
535
+ "webpack.config.mjs",
536
+ "webpack.config.cjs"
537
+ ]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
538
+ hasAliasConfiguration = true;
539
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Found ${(0, _intlayer_config_logger.colorizePath)(file)}. Make sure to configure aliases manually or use the Intlayer Webpack plugin.`);
540
+ break;
541
+ }
542
+ if ([
543
+ "express",
544
+ "fastify",
545
+ "@adonisjs/core",
546
+ "hono",
547
+ "elysia",
548
+ ...require_init_utils_devScript.BACKEND_INTLAYER_PACKAGES
549
+ ].some((pkg) => allDeps[pkg])) hasAliasConfiguration = true;
550
+ if (!hasAliasConfiguration) {
551
+ const configuration = (0, _intlayer_config_node.getConfiguration)({ baseDir: rootDir });
552
+ const aliases = (0, _intlayer_config_utils.getAlias)({
553
+ configuration,
554
+ formatter: (value) => value.startsWith("./") || value.startsWith("../") ? value : `./${value}`
555
+ });
556
+ if (hasTsConfig && tsConfigFiles.length > 0) {
557
+ const tsConfigPath = tsConfigFiles.find((file) => file === "tsconfig.json") || tsConfigFiles[0];
558
+ if (tsConfigPath) {
559
+ const tsConfigContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, tsConfigPath);
560
+ const config = require_init_utils_jsonParser.parseJSONWithComments(tsConfigContent);
561
+ config.compilerOptions ??= {};
562
+ config.compilerOptions.paths ??= {};
563
+ let updated = false;
564
+ Object.entries(aliases).forEach(([alias, path]) => {
565
+ if (!config.compilerOptions.paths[alias]) {
566
+ config.compilerOptions.paths[alias] = [path];
567
+ updated = true;
568
+ }
569
+ });
570
+ if (updated) {
571
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, tsConfigPath, JSON.stringify(config, null, 2));
572
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(tsConfigPath)} to include Intlayer aliases`);
577
573
  }
578
- });
579
- if (updated) {
580
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, jsConfigPath, JSON.stringify(config, null, 2));
581
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(jsConfigPath)} to include Intlayer aliases`);
582
574
  }
583
575
  } else {
584
- packageJson.imports ??= {};
585
- let updated = false;
586
- Object.entries(aliases).forEach(([alias, path]) => {
587
- const importAlias = alias.replace("@", "#");
588
- if (!packageJson.imports[importAlias]) {
589
- packageJson.imports[importAlias] = path;
590
- updated = true;
576
+ const jsConfigPath = "jsconfig.json";
577
+ if (await require_init_utils_fileSystem.exists(rootDir, jsConfigPath)) {
578
+ const jsConfigContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, jsConfigPath);
579
+ const config = require_init_utils_jsonParser.parseJSONWithComments(jsConfigContent);
580
+ config.compilerOptions ??= {};
581
+ config.compilerOptions.paths ??= {};
582
+ let updated = false;
583
+ Object.entries(aliases).forEach(([alias, path]) => {
584
+ if (!config.compilerOptions.paths[alias]) {
585
+ config.compilerOptions.paths[alias] = [path];
586
+ updated = true;
587
+ }
588
+ });
589
+ if (updated) {
590
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, jsConfigPath, JSON.stringify(config, null, 2));
591
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(jsConfigPath)} to include Intlayer aliases`);
592
+ }
593
+ } else {
594
+ packageJson.imports ??= {};
595
+ let updated = false;
596
+ Object.entries(aliases).forEach(([alias, path]) => {
597
+ const importAlias = alias.replace("@", "#");
598
+ if (!packageJson.imports[importAlias]) {
599
+ packageJson.imports[importAlias] = path;
600
+ updated = true;
601
+ }
602
+ });
603
+ if (updated) {
604
+ await require_init_utils_fileSystem.writeFileToRoot(rootDir, packageJsonPath, JSON.stringify(packageJson, null, 2));
605
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(packageJsonPath)} to include Intlayer imports`);
591
606
  }
592
- });
593
- if (updated) {
594
- await require_init_utils_fileSystem.writeFileToRoot(rootDir, packageJsonPath, JSON.stringify(packageJson, null, 2));
595
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(packageJsonPath)} to include Intlayer imports`);
596
607
  }
597
608
  }
598
609
  }
599
- }
600
- const hasCompatLibrary = Boolean(compatSyncConfig || compatVitePluginConfig);
601
- if (!options?.noFrameworkSetup && hasCompatLibrary) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Compat i18n library detected — keeping the app structure untouched (no route restructure, no provider injection)`);
602
- if (!options?.noFrameworkSetup && !hasCompatLibrary) try {
603
- const routingMode = options?.routingMode ?? (0, _intlayer_config_node.getConfiguration)({ baseDir: rootDir }).routing.mode;
604
- await require_init_frameworkSetup_index.setupFramework({
605
- rootDir,
606
- allDeps,
607
- packageManager,
608
- useTypeScript: hasTsConfig,
609
- routingMode
610
- });
611
- } catch {
612
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Framework-specific scaffolding failed. Your existing files were left untouched; follow the documentation to finish the setup.`, { level: "warn" });
610
+ const hasCompatLibrary = Boolean(compatSyncConfig || compatVitePluginConfig);
611
+ if (hasCompatLibrary) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Compat i18n library detected — keeping the app structure untouched (no route restructure, no provider injection)`);
612
+ if (!hasCompatLibrary) try {
613
+ const routingMode = options?.routingMode ?? (0, _intlayer_config_node.getConfiguration)({ baseDir: rootDir }).routing.mode;
614
+ await require_init_frameworkSetup_index.setupFramework({
615
+ rootDir,
616
+ allDeps,
617
+ packageManager,
618
+ useTypeScript: hasTsConfig,
619
+ routingMode
620
+ });
621
+ } catch {
622
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Framework-specific scaffolding failed. Your existing files were left untouched; follow the documentation to finish the setup.`, { level: "warn" });
623
+ }
613
624
  }
614
625
  (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorize)("Intlayer init setup complete.", _intlayer_config_colors.GREEN)}`);
615
626
  (0, _intlayer_config_logger.logger)([
@@ -617,12 +628,6 @@ const initIntlayer = async (rootDir, options) => {
617
628
  (0, _intlayer_config_logger.colorize)(`Follow the instructions in the documentation to complete the setup:`, _intlayer_config_colors.GREY_LIGHT),
618
629
  (0, _intlayer_config_logger.colorizePath)(guideUrl)
619
630
  ]);
620
- (0, _intlayer_config_logger.logger)([
621
- (0, _intlayer_config_logger.colorize)("Intlayer LSP →", _intlayer_config_colors.MAGENTA),
622
- (0, _intlayer_config_logger.colorize)("The Intlayer Language Server is available via the `@intlayer/lsp` package. It lets IDEs and AI agents jump from `useIntlayer`/`getIntlayer` keys to their `.content` files.", _intlayer_config_colors.GREY_LIGHT),
623
- (0, _intlayer_config_logger.colorize)("Ask the user which platform/editor they want to enable it on (VS Code, Cursor, Windsurf, Zed, Neovim, Claude Code, …), then follow the matching setup instructions:", _intlayer_config_colors.GREY_LIGHT),
624
- (0, _intlayer_config_logger.colorizePath)(DocumentationRouter.LSP)
625
- ]);
626
631
  };
627
632
 
628
633
  //#endregion