@intlayer/engine 9.5.9 → 9.5.10

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 (126) hide show
  1. package/dist/cjs/cli.cjs +7 -0
  2. package/dist/cjs/docReview/reviewReport.cjs.map +1 -1
  3. package/dist/cjs/init/cms.cjs +35 -0
  4. package/dist/cjs/init/cms.cjs.map +1 -1
  5. package/dist/cjs/init/documentationRouter.cjs +141 -0
  6. package/dist/cjs/init/documentationRouter.cjs.map +1 -0
  7. package/dist/cjs/init/frameworkSetup/backend/index.cjs +138 -0
  8. package/dist/cjs/init/frameworkSetup/backend/index.cjs.map +1 -0
  9. package/dist/cjs/init/frameworkSetup/backend/transforms.cjs +223 -0
  10. package/dist/cjs/init/frameworkSetup/backend/transforms.cjs.map +1 -0
  11. package/dist/cjs/init/frameworkSetup/index.cjs +9 -3
  12. package/dist/cjs/init/frameworkSetup/index.cjs.map +1 -1
  13. package/dist/cjs/init/frameworkSetup/localeRouting.cjs +13 -0
  14. package/dist/cjs/init/frameworkSetup/localeRouting.cjs.map +1 -0
  15. package/dist/cjs/init/frameworkSetup/nextAppRouter/index.cjs +34 -7
  16. package/dist/cjs/init/frameworkSetup/nextAppRouter/index.cjs.map +1 -1
  17. package/dist/cjs/init/frameworkSetup/nextAppRouter/templates.cjs +56 -0
  18. package/dist/cjs/init/frameworkSetup/nextAppRouter/templates.cjs.map +1 -1
  19. package/dist/cjs/init/frameworkSetup/nextAppRouter/transforms.cjs +2 -2
  20. package/dist/cjs/init/frameworkSetup/nextAppRouter/transforms.cjs.map +1 -1
  21. package/dist/cjs/init/frameworkSetup/tanstackStart/index.cjs +32 -3
  22. package/dist/cjs/init/frameworkSetup/tanstackStart/index.cjs.map +1 -1
  23. package/dist/cjs/init/frameworkSetup/tanstackStart/templates.cjs +58 -0
  24. package/dist/cjs/init/frameworkSetup/tanstackStart/templates.cjs.map +1 -1
  25. package/dist/cjs/init/frameworkSetup/tanstackStart/transforms.cjs +94 -14
  26. package/dist/cjs/init/frameworkSetup/tanstackStart/transforms.cjs.map +1 -1
  27. package/dist/cjs/init/index.cjs +46 -159
  28. package/dist/cjs/init/index.cjs.map +1 -1
  29. package/dist/cjs/init/utils/configManipulation.cjs +39 -0
  30. package/dist/cjs/init/utils/configManipulation.cjs.map +1 -1
  31. package/dist/cjs/init/utils/index.cjs +10 -0
  32. package/dist/cjs/init/utils/lintConfig.cjs +52 -0
  33. package/dist/cjs/init/utils/lintConfig.cjs.map +1 -0
  34. package/dist/cjs/init/utils/packageManager.cjs +62 -13
  35. package/dist/cjs/init/utils/packageManager.cjs.map +1 -1
  36. package/dist/cjs/init/utils/urlRoutingFramework.cjs +41 -0
  37. package/dist/cjs/init/utils/urlRoutingFramework.cjs.map +1 -0
  38. package/dist/cjs/initConfig/index.cjs +4 -1
  39. package/dist/cjs/initConfig/index.cjs.map +1 -1
  40. package/dist/cjs/loadDictionaries/logTypeScriptErrors.cjs +104 -43
  41. package/dist/cjs/loadDictionaries/logTypeScriptErrors.cjs.map +1 -1
  42. package/dist/esm/cli.mjs +5 -3
  43. package/dist/esm/docReview/reviewReport.mjs.map +1 -1
  44. package/dist/esm/init/cms.mjs +35 -2
  45. package/dist/esm/init/cms.mjs.map +1 -1
  46. package/dist/esm/init/documentationRouter.mjs +139 -0
  47. package/dist/esm/init/documentationRouter.mjs.map +1 -0
  48. package/dist/esm/init/frameworkSetup/backend/index.mjs +130 -0
  49. package/dist/esm/init/frameworkSetup/backend/index.mjs.map +1 -0
  50. package/dist/esm/init/frameworkSetup/backend/transforms.mjs +216 -0
  51. package/dist/esm/init/frameworkSetup/backend/transforms.mjs.map +1 -0
  52. package/dist/esm/init/frameworkSetup/index.mjs +9 -3
  53. package/dist/esm/init/frameworkSetup/index.mjs.map +1 -1
  54. package/dist/esm/init/frameworkSetup/localeRouting.mjs +12 -0
  55. package/dist/esm/init/frameworkSetup/localeRouting.mjs.map +1 -0
  56. package/dist/esm/init/frameworkSetup/nextAppRouter/index.mjs +36 -9
  57. package/dist/esm/init/frameworkSetup/nextAppRouter/index.mjs.map +1 -1
  58. package/dist/esm/init/frameworkSetup/nextAppRouter/templates.mjs +54 -1
  59. package/dist/esm/init/frameworkSetup/nextAppRouter/templates.mjs.map +1 -1
  60. package/dist/esm/init/frameworkSetup/nextAppRouter/transforms.mjs +2 -2
  61. package/dist/esm/init/frameworkSetup/nextAppRouter/transforms.mjs.map +1 -1
  62. package/dist/esm/init/frameworkSetup/tanstackStart/index.mjs +35 -6
  63. package/dist/esm/init/frameworkSetup/tanstackStart/index.mjs.map +1 -1
  64. package/dist/esm/init/frameworkSetup/tanstackStart/templates.mjs +56 -1
  65. package/dist/esm/init/frameworkSetup/tanstackStart/templates.mjs.map +1 -1
  66. package/dist/esm/init/frameworkSetup/tanstackStart/transforms.mjs +94 -15
  67. package/dist/esm/init/frameworkSetup/tanstackStart/transforms.mjs.map +1 -1
  68. package/dist/esm/init/index.mjs +42 -158
  69. package/dist/esm/init/index.mjs.map +1 -1
  70. package/dist/esm/init/utils/configManipulation.mjs +38 -1
  71. package/dist/esm/init/utils/configManipulation.mjs.map +1 -1
  72. package/dist/esm/init/utils/index.mjs +5 -3
  73. package/dist/esm/init/utils/lintConfig.mjs +50 -0
  74. package/dist/esm/init/utils/lintConfig.mjs.map +1 -0
  75. package/dist/esm/init/utils/packageManager.mjs +60 -14
  76. package/dist/esm/init/utils/packageManager.mjs.map +1 -1
  77. package/dist/esm/init/utils/urlRoutingFramework.mjs +40 -0
  78. package/dist/esm/init/utils/urlRoutingFramework.mjs.map +1 -0
  79. package/dist/esm/initConfig/index.mjs +4 -1
  80. package/dist/esm/initConfig/index.mjs.map +1 -1
  81. package/dist/esm/loadDictionaries/logTypeScriptErrors.mjs +105 -44
  82. package/dist/esm/loadDictionaries/logTypeScriptErrors.mjs.map +1 -1
  83. package/dist/types/cli.d.ts +5 -3
  84. package/dist/types/docReview/reviewReport.d.ts.map +1 -1
  85. package/dist/types/formatDictionary.d.ts +2 -2
  86. package/dist/types/init/cms.d.ts +11 -0
  87. package/dist/types/init/cms.d.ts.map +1 -1
  88. package/dist/types/init/documentationRouter.d.ts +64 -0
  89. package/dist/types/init/documentationRouter.d.ts.map +1 -0
  90. package/dist/types/init/frameworkSetup/backend/index.d.ts +16 -0
  91. package/dist/types/init/frameworkSetup/backend/index.d.ts.map +1 -0
  92. package/dist/types/init/frameworkSetup/backend/transforms.d.ts +37 -0
  93. package/dist/types/init/frameworkSetup/backend/transforms.d.ts.map +1 -0
  94. package/dist/types/init/frameworkSetup/index.d.ts.map +1 -1
  95. package/dist/types/init/frameworkSetup/localeRouting.d.ts +11 -0
  96. package/dist/types/init/frameworkSetup/localeRouting.d.ts.map +1 -0
  97. package/dist/types/init/frameworkSetup/nextAppRouter/index.d.ts +5 -5
  98. package/dist/types/init/frameworkSetup/nextAppRouter/index.d.ts.map +1 -1
  99. package/dist/types/init/frameworkSetup/nextAppRouter/templates.d.ts +12 -0
  100. package/dist/types/init/frameworkSetup/nextAppRouter/templates.d.ts.map +1 -1
  101. package/dist/types/init/frameworkSetup/nextAppRouter/transforms.d.ts +10 -1
  102. package/dist/types/init/frameworkSetup/nextAppRouter/transforms.d.ts.map +1 -1
  103. package/dist/types/init/frameworkSetup/tanstackStart/index.d.ts +3 -2
  104. package/dist/types/init/frameworkSetup/tanstackStart/index.d.ts.map +1 -1
  105. package/dist/types/init/frameworkSetup/tanstackStart/templates.d.ts +10 -0
  106. package/dist/types/init/frameworkSetup/tanstackStart/templates.d.ts.map +1 -1
  107. package/dist/types/init/frameworkSetup/tanstackStart/transforms.d.ts +12 -0
  108. package/dist/types/init/frameworkSetup/tanstackStart/transforms.d.ts.map +1 -1
  109. package/dist/types/init/frameworkSetup/types.d.ts +6 -0
  110. package/dist/types/init/frameworkSetup/types.d.ts.map +1 -1
  111. package/dist/types/init/index.d.ts +15 -1
  112. package/dist/types/init/index.d.ts.map +1 -1
  113. package/dist/types/init/utils/configManipulation.d.ts +14 -0
  114. package/dist/types/init/utils/configManipulation.d.ts.map +1 -1
  115. package/dist/types/init/utils/index.d.ts +5 -3
  116. package/dist/types/init/utils/lintConfig.d.ts +28 -0
  117. package/dist/types/init/utils/lintConfig.d.ts.map +1 -0
  118. package/dist/types/init/utils/packageManager.d.ts +29 -6
  119. package/dist/types/init/utils/packageManager.d.ts.map +1 -1
  120. package/dist/types/init/utils/urlRoutingFramework.d.ts +9 -0
  121. package/dist/types/init/utils/urlRoutingFramework.d.ts.map +1 -0
  122. package/dist/types/initConfig/index.d.ts +3 -1
  123. package/dist/types/initConfig/index.d.ts.map +1 -1
  124. package/dist/types/loadDictionaries/logTypeScriptErrors.d.ts +4 -0
  125. package/dist/types/loadDictionaries/logTypeScriptErrors.d.ts.map +1 -1
  126. package/package.json +8 -8
@@ -4,146 +4,27 @@ const require_init_utils_configManipulation = require('./utils/configManipulatio
4
4
  const require_init_utils_fileSystem = require('./utils/fileSystem.cjs');
5
5
  const require_init_cms = require('./cms.cjs');
6
6
  const require_initConfig_index = require('../initConfig/index.cjs');
7
+ const require_init_documentationRouter = require('./documentationRouter.cjs');
7
8
  const require_init_frameworkSetup_index = require('./frameworkSetup/index.cjs');
8
9
  const require_init_utils_devScript = require('./utils/devScript.cjs');
9
10
  const require_init_utils_packageManager = require('./utils/packageManager.cjs');
10
11
  const require_init_utils_githubActions = require('./utils/githubActions.cjs');
11
12
  const require_init_utils_jsonParser = require('./utils/jsonParser.cjs');
13
+ const require_init_utils_lintConfig = require('./utils/lintConfig.cjs');
12
14
  const require_init_utils_nextCompilerBabel = require('./utils/nextCompilerBabel.cjs');
13
15
  const require_init_utils_tsConfig = require('./utils/tsConfig.cjs');
16
+ const require_init_utils_urlRoutingFramework = require('./utils/urlRoutingFramework.cjs');
14
17
  const require_init_upgradeIntlayerPackages = require('./upgradeIntlayerPackages.cjs');
15
18
  let node_path = require("node:path");
16
19
  let _intlayer_config_colors = require("@intlayer/config/colors");
17
20
  _intlayer_config_colors = require_runtime.__toESM(_intlayer_config_colors);
18
21
  let _intlayer_config_logger = require("@intlayer/config/logger");
19
22
  let _intlayer_config_node = require("@intlayer/config/node");
23
+ let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues");
20
24
  let _intlayer_config_utils = require("@intlayer/config/utils");
21
25
 
22
26
  //#region src/init/index.ts
23
27
  /**
24
- * Documentation URL Constants
25
- */
26
- const DocumentationRouter = {
27
- NextJS: "https://intlayer.org/doc/environment/nextjs.md",
28
- NextJS_15: "https://intlayer.org/doc/environment/nextjs/15.md",
29
- NextJS_14: "https://intlayer.org/doc/environment/nextjs/14.md",
30
- CRA: "https://intlayer.org/doc/environment/create-react-app.md",
31
- Astro: "https://intlayer.org/doc/environment/astro.md",
32
- ViteAndReact: "https://intlayer.org/doc/environment/vite-and-react.md",
33
- ViteAndReact_ReactRouterV7: "https://intlayer.org/doc/environment/vite-and-react/react-router-v7.md",
34
- ViteAndVue: "https://intlayer.org/doc/environment/vite-and-vue.md",
35
- ViteAndSolid: "https://intlayer.org/doc/environment/vite-and-solid.md",
36
- ViteAndSvelte: "https://intlayer.org/doc/environment/vite-and-svelte.md",
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",
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",
46
- NuxtAndVue: "https://intlayer.org/doc/environment/nuxt-and-vue.md",
47
- Angular: "https://intlayer.org/doc/environment/angular.md",
48
- SvelteKit: "https://intlayer.org/doc/environment/sveltekit.md",
49
- ReactNativeAndExpo: "https://intlayer.org/doc/environment/react-native-and-expo.md",
50
- Lynx: "https://intlayer.org/doc/environment/lynx-and-react.md",
51
- Express: "https://intlayer.org/doc/environment/express.md",
52
- NestJS: "https://intlayer.org/doc/environment/nest.md",
53
- Fastify: "https://intlayer.org/doc/environment/fastify.md",
54
- Hono: "https://intlayer.org/doc/environment/hono.md",
55
- AdonisJS: "https://intlayer.org/doc/environment/adonisjs.md",
56
- Elysia: "https://intlayer.org/doc/environment/elysia.md",
57
- Default: "https://intlayer.org/doc/get-started",
58
- LSP: "https://intlayer.org/doc/lsp.md",
59
- ESLint: "https://intlayer.org/doc/eslint.md",
60
- NextIntl: "https://intlayer.org/blog/intlayer-with-next-intl.md",
61
- ReactI18Next: "https://intlayer.org/blog/intlayer-with-react-i18next.md",
62
- ReactIntl: "https://intlayer.org/blog/intlayer-with-react-intl.md",
63
- NextI18Next: "https://intlayer.org/blog/intlayer-with-next-i18next.md",
64
- VueI18n: "https://intlayer.org/blog/intlayer-with-vue-i18n.md"
65
- };
66
- /**
67
- * The Intlayer lint setup, as `intlayer init` writes it into `.oxlintrc.json`.
68
- *
69
- * Declared locally on purpose: `@intlayer/engine` is installed by every Intlayer
70
- * user, so it must not depend on a lint plugin to write a handful of strings
71
- * into a JSON file. oxlint resolves a plugin's *rules* but not its shipped
72
- * *configs*, so the preset cannot be referenced by name there either.
73
- *
74
- * Mirrors the `recommended` preset of `eslint-plugin-intlayer`; keep in sync
75
- * when a rule is enabled by default there.
76
- */
77
- const LINT_PLUGIN_PACKAGE_NAME = "eslint-plugin-intlayer";
78
- /** Intlayer's generated output — never source, never worth linting. */
79
- const GENERATED_OUTPUT_GLOBS = ["**/.intlayer/**"];
80
- /** Rules of the `recommended` preset, prefixed by the plugin namespace. */
81
- const getRecommendedRules = () => ({
82
- "intlayer/no-raw-text": "warn",
83
- "intlayer/static-dictionary-key": "error",
84
- "intlayer/no-dynamic-field-access": "error"
85
- });
86
- /**
87
- * Helper: Detects the environment and returns the doc URL
88
- */
89
- const getDocumentationUrl = (packageJson) => {
90
- const deps = {
91
- ...packageJson.dependencies,
92
- ...packageJson.devDependencies
93
- };
94
- /**
95
- * Helper to check if a version string matches a specific major version
96
- * Matches: "15", "^15.0.0", "~15.2", "15.0.0-beta"
97
- */
98
- const isVersion = (versionString, major) => {
99
- if (!versionString || typeof versionString !== "string") return false;
100
- return new RegExp(`^[\\^~]?${major}(?:\\.|$)`).test(versionString);
101
- };
102
- if (deps["@lynx-js/react"] || deps["@lynx-js/core"]) return DocumentationRouter.Lynx;
103
- if (deps["react-native"] || deps.expo) return DocumentationRouter.ReactNativeAndExpo;
104
- if (deps.next) {
105
- const version = deps.next;
106
- if (isVersion(version, 14)) return DocumentationRouter.NextJS_14;
107
- if (isVersion(version, 15)) return DocumentationRouter.NextJS_15;
108
- return DocumentationRouter.NextJS;
109
- }
110
- if (deps.nuxt) return DocumentationRouter.NuxtAndVue;
111
- if (deps.astro) return DocumentationRouter.Astro;
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;
116
- if (deps["@tanstack/react-router"]) return DocumentationRouter.TanStackRouter;
117
- if (deps["@tanstack/solid-router"]) return DocumentationRouter.TanStackRouterAndSolid;
118
- const reactRouterVersion = deps["react-router"];
119
- if (typeof reactRouterVersion === "string" && (deps["@react-router/fs-routes"] || isVersion(reactRouterVersion, 7))) return DocumentationRouter.ViteAndReact_ReactRouterV7;
120
- if (deps.vite) {
121
- if (deps.vue) return DocumentationRouter.ViteAndVue;
122
- if (deps["solid-js"]) return DocumentationRouter.ViteAndSolid;
123
- if (deps.svelte) return DocumentationRouter.ViteAndSvelte;
124
- if (deps.preact) return DocumentationRouter.ViteAndPreact;
125
- if (deps.lit) return DocumentationRouter.ViteAndLit;
126
- if (deps["vanilla-intlayer"]) return DocumentationRouter.ViteAndVanilla;
127
- return DocumentationRouter.ViteAndReact;
128
- }
129
- if (deps["react-scripts"]) return DocumentationRouter.CRA;
130
- if (deps["@angular/core"]) return DocumentationRouter.Angular;
131
- if (deps.lit) return DocumentationRouter.ViteAndLit;
132
- if (deps["vanilla-intlayer"]) return DocumentationRouter.Vanilla;
133
- if (deps["@nestjs/core"]) return DocumentationRouter.NestJS;
134
- if (deps["@adonisjs/core"]) return DocumentationRouter.AdonisJS;
135
- if (deps.elysia) return DocumentationRouter.Elysia;
136
- if (deps.hono) return DocumentationRouter.Hono;
137
- if (deps.express) return DocumentationRouter.Express;
138
- if (deps.fastify) return DocumentationRouter.Fastify;
139
- if (deps["next-intl"]) return DocumentationRouter.NextIntl;
140
- if (deps["react-i18next"] || deps.i18next) return DocumentationRouter.ReactI18Next;
141
- if (deps["react-intl"]) return DocumentationRouter.ReactIntl;
142
- if (deps["next-i18next"]) return DocumentationRouter.NextI18Next;
143
- if (deps["vue-i18n"]) return DocumentationRouter.VueI18n;
144
- return DocumentationRouter.Default;
145
- };
146
- /**
147
28
  * Resolves the default dev-server URL of the detected framework, used as the
148
29
  * `editor.applicationURL` of the generated configuration file. Frameworks that
149
30
  * embed Vite (Astro, SvelteKit, …) are checked before the bare Vite fallback so
@@ -177,7 +58,7 @@ const initIntlayer = async (rootDir, options) => {
177
58
  (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not parse ${(0, _intlayer_config_logger.colorizePath)("package.json")}.`, { level: "error" });
178
59
  process.exit(1);
179
60
  }
180
- const guideUrl = getDocumentationUrl(packageJson);
61
+ const guideUrl = require_init_documentationRouter.getDocumentationUrl(packageJson);
181
62
  const allDeps = {
182
63
  ...packageJson.dependencies ?? {},
183
64
  ...packageJson.devDependencies ?? {}
@@ -193,11 +74,14 @@ const initIntlayer = async (rootDir, options) => {
193
74
  const linguiPresent = Boolean(allDeps["@lingui/core"] || allDeps["@lingui/react"] || allDeps["@intlayer/lingui"]);
194
75
  const linguiCatalog = linguiPresent ? await require_init_utils_fileSystem.detectLinguiCatalogPattern(rootDir) : null;
195
76
  const linguiCatalogFormat = linguiCatalog?.format ?? (linguiPresent ? "po" : null);
196
- const { packagesToInstall, devPackagesToInstall, compatSyncConfig, compatVitePluginConfig } = require_init_utils_packageManager.detectMissingIntlayerPackages(allDeps, {
77
+ const { packagesToInstall, devPackagesToInstall, compatSyncConfig, compatVitePluginConfig, pendingCompatAdapters } = require_init_utils_packageManager.detectMissingIntlayerPackages(allDeps, {
197
78
  linguiCatalogFormat,
198
79
  dependencies: packageJson.dependencies,
199
80
  devDependencies: packageJson.devDependencies
200
81
  });
82
+ /** Whether the compat adapter for a library is not released yet. */
83
+ const isCompatAdapterPending = (adapterPackage) => pendingCompatAdapters.includes(adapterPackage);
84
+ if (pendingCompatAdapters.length > 0) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} No released Intlayer adapter yet for ${pendingCompatAdapters.map((adapterPackage) => (0, _intlayer_config_logger.colorize)(adapterPackage, _intlayer_config_colors.MAGENTA)).join(", ")} — keeping your current i18n library and only syncing its catalogs with Intlayer.`, { level: "warn" });
201
85
  const wantsJsonNamespaces = options?.contentStrategy === "json-namespaces" && !compatSyncConfig;
202
86
  if (wantsJsonNamespaces && !allDeps["@intlayer/sync-json-plugin"] && !devPackagesToInstall.includes("@intlayer/sync-json-plugin")) devPackagesToInstall.push("@intlayer/sync-json-plugin");
203
87
  if (!options?.noInstallPackages) {
@@ -223,7 +107,7 @@ const initIntlayer = async (rootDir, options) => {
223
107
  await require_init_upgradeIntlayerPackages.upgradeIntlayerPackages(rootDir);
224
108
  }
225
109
  const gitignorePath = ".gitignore";
226
- if (!options?.noGitignore && await require_init_utils_fileSystem.exists(rootDir, gitignorePath)) {
110
+ if (!options?.noGitignore && !options?.noFrameworkSetup && await require_init_utils_fileSystem.exists(rootDir, gitignorePath)) {
227
111
  const gitignoreContent = await require_init_utils_fileSystem.readFileFromRoot(rootDir, gitignorePath);
228
112
  if (!gitignoreContent.includes("intlayer")) {
229
113
  const newContent = `${gitignoreContent}\n# Intlayer\n.intlayer\n`;
@@ -289,39 +173,25 @@ const initIntlayer = async (rootDir, options) => {
289
173
  } catch {
290
174
  (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not update ${(0, _intlayer_config_logger.colorizePath)(settingsJsonPath)}. You may need to add the LSP settings manually.`, { level: "warn" });
291
175
  }
176
+ if (!options?.noEslint && require_init_utils_packageManager.hasLegacyEslint(allDeps)) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} ${(0, _intlayer_config_logger.colorize)(require_init_utils_lintConfig.LINT_PLUGIN_PACKAGE_NAME, _intlayer_config_colors.MAGENTA)} needs ESLint ${9}+ (flat config) — skipped the Intlayer lint rules. Upgrade ESLint to enable them: ${(0, _intlayer_config_logger.colorizePath)(require_init_documentationRouter.DocumentationRouter.ESLint)}`, { level: "warn" });
292
177
  if (!options?.noEslint && require_init_utils_packageManager.hasLintTooling(allDeps)) {
293
178
  const oxlintConfigPath = ".oxlintrc.json";
294
- if (await require_init_utils_fileSystem.exists(rootDir, oxlintConfigPath)) try {
295
- const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, oxlintConfigPath);
296
- const oxlintConfig = require_init_utils_jsonParser.parseJSONWithComments(content);
297
- oxlintConfig.jsPlugins ??= [];
298
- oxlintConfig.rules ??= {};
299
- oxlintConfig.ignorePatterns ??= [];
300
- let oxlintUpdated = false;
301
- for (const glob of GENERATED_OUTPUT_GLOBS) if (!oxlintConfig.ignorePatterns.includes(glob)) {
302
- oxlintConfig.ignorePatterns.push(glob);
303
- oxlintUpdated = true;
304
- }
305
- if (!oxlintConfig.jsPlugins.includes(LINT_PLUGIN_PACKAGE_NAME)) {
306
- oxlintConfig.jsPlugins.push(LINT_PLUGIN_PACKAGE_NAME);
307
- oxlintUpdated = true;
308
- }
309
- for (const [ruleName, severity] of Object.entries(getRecommendedRules())) if (!oxlintConfig.rules[ruleName]) {
310
- oxlintConfig.rules[ruleName] = severity;
311
- oxlintUpdated = true;
312
- }
313
- if (oxlintUpdated) {
179
+ const hasOxlintConfig = await require_init_utils_fileSystem.exists(rootDir, oxlintConfigPath);
180
+ const shouldCreateOxlintConfig = !hasOxlintConfig && Boolean(allDeps.oxlint) && !allDeps.eslint;
181
+ if (hasOxlintConfig || shouldCreateOxlintConfig) try {
182
+ const oxlintConfig = hasOxlintConfig ? require_init_utils_jsonParser.parseJSONWithComments(await require_init_utils_fileSystem.readFileFromRoot(rootDir, oxlintConfigPath)) : {};
183
+ if (require_init_utils_lintConfig.addIntlayerRulesToOxlintConfig(oxlintConfig)) {
314
184
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, oxlintConfigPath, JSON.stringify(oxlintConfig, null, 2));
315
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Added the Intlayer lint rules to ${(0, _intlayer_config_logger.colorizePath)(oxlintConfigPath)}`);
185
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${hasOxlintConfig ? "Added the Intlayer lint rules to" : "Created"} ${(0, _intlayer_config_logger.colorizePath)(oxlintConfigPath)}`);
316
186
  } else (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorizePath)(oxlintConfigPath)} already includes the Intlayer lint rules`);
317
187
  } catch {
318
- (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not update ${(0, _intlayer_config_logger.colorizePath)(oxlintConfigPath)}. You may need to add ${(0, _intlayer_config_logger.colorize)(LINT_PLUGIN_PACKAGE_NAME, _intlayer_config_colors.MAGENTA)} manually.`, { level: "warn" });
188
+ (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.x} Could not update ${(0, _intlayer_config_logger.colorizePath)(oxlintConfigPath)}. You may need to add ${(0, _intlayer_config_logger.colorize)(require_init_utils_lintConfig.LINT_PLUGIN_PACKAGE_NAME, _intlayer_config_colors.MAGENTA)} manually.`, { level: "warn" });
319
189
  }
320
190
  else (0, _intlayer_config_logger.logger)([
321
191
  (0, _intlayer_config_logger.colorize)("Intlayer lint rules →", _intlayer_config_colors.MAGENTA),
322
- (0, _intlayer_config_logger.colorize)(`Add ${LINT_PLUGIN_PACKAGE_NAME} to your ESLint flat config to catch hardcoded text and dynamic calls the compiler cannot optimize:`, _intlayer_config_colors.GREY_LIGHT),
323
- (0, _intlayer_config_logger.colorize)(` import intlayer from '${LINT_PLUGIN_PACKAGE_NAME}';\n export default [...intlayer.configs.recommended];`, _intlayer_config_colors.GREY_LIGHT),
324
- (0, _intlayer_config_logger.colorizePath)(DocumentationRouter.ESLint)
192
+ (0, _intlayer_config_logger.colorize)(`Add the ${require_init_utils_lintConfig.LINT_PLUGIN_PACKAGE_NAME} preset to the array your ESLint flat config exports, to catch hardcoded text and dynamic calls the compiler cannot optimize:`, _intlayer_config_colors.GREY_LIGHT),
193
+ (0, _intlayer_config_logger.colorize)(` import intlayer from '${require_init_utils_lintConfig.LINT_PLUGIN_PACKAGE_NAME}';\n\n export default [\n // ...your existing config\n ...intlayer.configs.recommended,\n ];`, _intlayer_config_colors.GREY_LIGHT),
194
+ (0, _intlayer_config_logger.colorizePath)(require_init_documentationRouter.DocumentationRouter.ESLint)
325
195
  ]);
326
196
  }
327
197
  if (!options?.noFrameworkSetup) {
@@ -348,7 +218,7 @@ const initIntlayer = async (rootDir, options) => {
348
218
  }
349
219
  const format = hasTsConfig ? "intlayer.config.ts" : "intlayer.config.mjs";
350
220
  const detectedPattern = await require_init_utils_fileSystem.detectJsonLocalePattern(rootDir);
351
- await require_initConfig_index.initConfig(format, rootDir, {
221
+ const isConfigCreated = await require_initConfig_index.initConfig(format, rootDir, {
352
222
  locales: detectedPattern?.locales,
353
223
  applicationURL: getDefaultApplicationURL(allDeps)
354
224
  });
@@ -383,7 +253,14 @@ const initIntlayer = async (rootDir, options) => {
383
253
  break;
384
254
  }
385
255
  }
386
- if (options?.routingMode) await require_init_cms.setRoutingModeInConfig(rootDir, options.routingMode);
256
+ const hasUrlRouting = require_init_utils_urlRoutingFramework.hasUrlRoutingFramework(allDeps);
257
+ const hasCompatI18nLibrary = require_init_utils_packageManager.detectCompatI18nLibraries(allDeps).length > 0;
258
+ const shouldApplyDefaultRouting = isConfigCreated && options?.routingMode === void 0 && !hasCompatI18nLibrary;
259
+ if (shouldApplyDefaultRouting && !hasUrlRouting) await require_init_cms.setRoutingStorageOnlyInConfig(rootDir);
260
+ const routingMode = options?.routingMode ?? (shouldApplyDefaultRouting && hasUrlRouting ? _intlayer_config_defaultValues.ROUTING_MODE : void 0);
261
+ const enableProxy = options?.enableProxy ?? (shouldApplyDefaultRouting && hasUrlRouting ? true : void 0);
262
+ if (routingMode) await require_init_cms.setRoutingModeInConfig(rootDir, routingMode);
263
+ if (enableProxy !== void 0) await require_init_cms.setEnableProxyInConfig(rootDir, enableProxy);
387
264
  let hasAliasConfiguration = false;
388
265
  for (const file of [
389
266
  "vite.config.ts",
@@ -436,7 +313,8 @@ const initIntlayer = async (rootDir, options) => {
436
313
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
437
314
  (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Updated ${(0, _intlayer_config_logger.colorizePath)(file)} to include Intlayer next-intl compat plugin`);
438
315
  } 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"]) {
316
+ } else if (isCompatAdapterPending("@intlayer/next-translate")) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Kept ${(0, _intlayer_config_logger.colorizePath)(file)} untouched (next-translate stays in charge)`);
317
+ else if (allDeps["next-translate"] || allDeps["@intlayer/next-translate"]) {
440
318
  if (!content.includes("@intlayer/next-translate")) {
441
319
  const updatedContent = require_init_utils_configManipulation.updateNextConfigForNextTranslate(content, extension);
442
320
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
@@ -476,7 +354,8 @@ const initIntlayer = async (rootDir, options) => {
476
354
  for (const file of ["nuxt.config.js", "nuxt.config.ts"]) if (await require_init_utils_fileSystem.exists(rootDir, file)) {
477
355
  hasAliasConfiguration = true;
478
356
  const content = await require_init_utils_fileSystem.readFileFromRoot(rootDir, file);
479
- if (allDeps["@nuxtjs/i18n"]) {
357
+ if (isCompatAdapterPending("@intlayer/nuxtjs-i18n")) (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} Kept ${(0, _intlayer_config_logger.colorizePath)(file)} untouched (@nuxtjs/i18n stays in charge)`);
358
+ else if (allDeps["@nuxtjs/i18n"]) {
480
359
  if (!content.includes("@intlayer/nuxtjs-i18n")) {
481
360
  const updatedContent = require_init_utils_configManipulation.updateNuxtConfigForNuxtjsI18n(content);
482
361
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, file, updatedContent);
@@ -511,7 +390,7 @@ const initIntlayer = async (rootDir, options) => {
511
390
  if (updatedContent !== content) {
512
391
  await require_init_utils_fileSystem.writeFileToRoot(rootDir, metroConfigFile, updatedContent);
513
392
  (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" });
393
+ } 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)(require_init_documentationRouter.DocumentationRouter.ReactNativeAndExpo)}`, { level: "warn" });
515
394
  }
516
395
  } else {
517
396
  const newMetroConfigFile = "metro.config.js";
@@ -610,27 +489,35 @@ const initIntlayer = async (rootDir, options) => {
610
489
  const hasCompatLibrary = Boolean(compatSyncConfig || compatVitePluginConfig);
611
490
  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
491
  if (!hasCompatLibrary) try {
613
- const routingMode = options?.routingMode ?? (0, _intlayer_config_node.getConfiguration)({ baseDir: rootDir }).routing.mode;
492
+ const { routing } = (0, _intlayer_config_node.getConfiguration)({ baseDir: rootDir });
614
493
  await require_init_frameworkSetup_index.setupFramework({
615
494
  rootDir,
616
495
  allDeps,
617
496
  packageManager,
618
497
  useTypeScript: hasTsConfig,
619
- routingMode
498
+ routingMode: routingMode ?? routing.mode,
499
+ enableProxy: enableProxy ?? routing.enableProxy !== false
620
500
  });
621
501
  } catch {
622
502
  (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
503
  }
624
504
  }
505
+ if (!options?.skipFinalMessage) logInitSuccessMessage(guideUrl);
506
+ return { guideUrl };
507
+ };
508
+ const logInitSuccessMessage = (guideUrl) => {
625
509
  (0, _intlayer_config_logger.logger)(`${_intlayer_config_logger.v} ${(0, _intlayer_config_logger.colorize)("Intlayer init setup complete.", _intlayer_config_colors.GREEN)}`);
626
510
  (0, _intlayer_config_logger.logger)([
627
511
  (0, _intlayer_config_logger.colorize)("Next →", _intlayer_config_colors.MAGENTA),
628
- (0, _intlayer_config_logger.colorize)(`Follow the instructions in the documentation to complete the setup:`, _intlayer_config_colors.GREY_LIGHT),
512
+ (0, _intlayer_config_logger.colorize)("Follow the instructions in the documentation to complete the setup:", _intlayer_config_colors.GREY_LIGHT),
629
513
  (0, _intlayer_config_logger.colorizePath)(guideUrl)
630
514
  ]);
631
515
  };
632
516
 
633
517
  //#endregion
518
+ exports.DocumentationRouter = require_init_documentationRouter.DocumentationRouter;
634
519
  exports.getDefaultApplicationURL = getDefaultApplicationURL;
520
+ exports.getDocumentationUrl = require_init_documentationRouter.getDocumentationUrl;
635
521
  exports.initIntlayer = initIntlayer;
522
+ exports.logInitSuccessMessage = logInitSuccessMessage;
636
523
  //# sourceMappingURL=index.cjs.map