react-scripts-intlayer 9.3.0 → 9.3.2
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.
- package/README.md +24 -24
- package/dist/cjs/cli/react-scripts-intlayer.cjs +4 -3
- package/dist/cjs/cli/react-scripts-intlayer.cjs.map +1 -1
- package/dist/cjs/findDuplicateWebpackPaths.cjs +2 -1
- package/dist/cjs/findDuplicateWebpackPaths.cjs.map +1 -1
- package/dist/cjs/intlayerCracoPlugin.cjs.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -47,27 +47,27 @@ With **per-locale content files**, **TypeScript autocompletion**, **tree-shakabl
|
|
|
47
47
|
|
|
48
48
|
## Keys benefits of Intlayer:
|
|
49
49
|
|
|
50
|
-
| Feature | Description
|
|
51
|
-
| --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
52
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Cross-Frameworks Support**<br><br>Intlayer is compatible with all major frameworks and libraries, including Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, and more.
|
|
53
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **JavaScript-Powered Content Management**<br><br>Harness the flexibility of JavaScript to define and manage your content efficiently. <br><br> - [Content declaration](https://intlayer.org/doc/concept/content)
|
|
54
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **Per-Locale Content Declaration File**<br><br>Speed up your development by declaring your content once, before auto generation.<br><br> - [Per-Locale Content Declaration File](https://intlayer.org/doc/concept/per-locale-file)
|
|
55
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compiler**<br><br>The Intlayer Compiler extract automatically the content from the components and generate the dictionary files.<br><br> - [Compiler](https://intlayer.org/doc/compiler)
|
|
56
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **Type-Safe Environment**<br><br>Leverage TypeScript to ensure your content definitions and code are error-free, while also benefiting from IDE autocompletion.<br><br> - [TypeScript configuration](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
57
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **Simplified Setup**<br><br>Get up and running quickly with minimal configuration. Adjust settings for internationalization, routing, AI, build, and content handling with ease. <br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs)
|
|
58
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Feature" width="700"> | **Simplified Content Retrieval**<br><br>No need to call your `t` function for each piece of content. Retrieve all your content directly using a single hook.<br><br> - [React integration](https://intlayer.org/doc/environment/create-react-app)
|
|
59
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Feature" width="700"> | **Consistent Server Component Implementation**<br><br>Perfectly suited for Next.js server components, use the same implementation for both client and server components, no need to pass your `t` function across each server component. <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
60
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Feature" width="700"> | **Organized Codebase**<br><br>Keep your codebase more organized: 1 component = 1 dictionary in the same folder. Translations close to their respective components, enhance maintainability and clarity. <br><br> - [How Intlayer works](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
61
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Feature" width="700"> | **Enhanced Routing**<br><br>Full support of app routing, adapting seamlessly to complex application structures, for Next.js, React, Vite, Vue.js, etc.<br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs)
|
|
62
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **Markdown Support**<br><br>Import and interpret, locale files and remote Markdown for multilingual content like privacy policies, documentation, etc. Interpret and make Markdown metadata accessible in your code.<br><br> - [Content files](https://intlayer.org/doc/concept/content/file)
|
|
63
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Feature" width="700"> | **Free Visual Editor & CMS**<br><br>A free visual editor and CMS are available for content writers, removing the need for a localization platform. Keep your content synchronized using Git, or externalize it totally or partially with the CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
64
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Feature" width="700"> | **Tree-shakable Content**<br><br>Tree-shakable content, reducing the size of the final bundle. Loads content per component, excluding any unused content from your bundle. Supports lazy loading to enhance app loading efficiency. <br><br> - [App build optimization](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
65
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Feature" width="700"> | **Static Rendering**<br><br>Doesn't block Static Rendering. <br><br> - [Next.js integration](https://intlayer.org/doc/environment/nextjs)
|
|
66
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="Feature" width="700"> | **AI-Powered Translation**<br><br>Transform your website into 231 languages with just one click using Intlayer's advanced AI-powered translation tools using your own AI provider / API key. <br><br> - [CI/CD integration](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Auto fill](https://intlayer.org/doc/concept/auto-fill)
|
|
67
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Feature" width="700"> | **MCP Server Integration**<br><br>Provides an MCP (Model Context Protocol) server for IDE automation, enabling seamless content management and i18n workflows directly within your development environment. <br><br> - [MCP Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md)
|
|
68
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **VSCode Extension**<br><br>Intlayer provides a VSCode extension to help you manage your content and translations, building your dictionaries, translating your content, and more. <br><br> - [VSCode Extension](https://intlayer.org/doc/vs-code-extension)
|
|
69
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Feature" width="700"> | **Interoperability**<br><br>Allow interoperability with react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer and react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer and next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer and next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer and vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) |
|
|
70
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **Performances & Benchmark**<br><br>Uses advanced tree-shaking and dynamic loading to boost performances and keep the solution as light as possible. <br><br> - [Performances & Benchmark](https://intlayer.org/doc/benchmark)
|
|
50
|
+
| Feature | Description |
|
|
51
|
+
| --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
52
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true" alt="Feature" width="700"> | **Cross-Frameworks Support**<br><br>Intlayer is compatible with all major frameworks and libraries, including Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, and more. |
|
|
53
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.jpg?raw=true" alt="Feature" width="700"> | **JavaScript-Powered Content Management**<br><br>Harness the flexibility of JavaScript to define and manage your content efficiently. <br><br> - [Content declaration](https://intlayer.org/doc/concept/content) |
|
|
54
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true" alt="Feature" width="700"> | **Per-Locale Content Declaration File**<br><br>Speed up your development by declaring your content once, before auto generation.<br><br> - [Per-Locale Content Declaration File](https://intlayer.org/doc/concept/per-locale-file) |
|
|
55
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compiler**<br><br>The Intlayer Compiler extract automatically the content from the components and generate the dictionary files.<br><br> - [Compiler](https://intlayer.org/doc/compiler) |
|
|
56
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true" alt="Feature" width="700"> | **Type-Safe Environment**<br><br>Leverage TypeScript to ensure your content definitions and code are error-free, while also benefiting from IDE autocompletion.<br><br> - [TypeScript configuration](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
57
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true" alt="Feature" width="700"> | **Simplified Setup**<br><br>Get up and running quickly with minimal configuration. Adjust settings for internationalization, routing, AI, build, and content handling with ease. <br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs) |
|
|
58
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true" alt="Feature" width="700"> | **Simplified Content Retrieval**<br><br>No need to call your `t` function for each piece of content. Retrieve all your content directly using a single hook.<br><br> - [React integration](https://intlayer.org/doc/environment/create-react-app) |
|
|
59
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true" alt="Feature" width="700"> | **Consistent Server Component Implementation**<br><br>Perfectly suited for Next.js server components, use the same implementation for both client and server components, no need to pass your `t` function across each server component. <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
60
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true" alt="Feature" width="700"> | **Organized Codebase**<br><br>Keep your codebase more organized: 1 component = 1 dictionary in the same folder. Translations close to their respective components, enhance maintainability and clarity. <br><br> - [How Intlayer works](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
61
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true" alt="Feature" width="700"> | **Enhanced Routing**<br><br>Full support of app routing, adapting seamlessly to complex application structures, for Next.js, React, Vite, Vue.js, etc.<br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs) |
|
|
62
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true" alt="Feature" width="700"> | **Markdown Support**<br><br>Import and interpret, locale files and remote Markdown for multilingual content like privacy policies, documentation, etc. Interpret and make Markdown metadata accessible in your code.<br><br> - [Content files](https://intlayer.org/doc/concept/content/file) |
|
|
63
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true" alt="Feature" width="700"> | **Free Visual Editor & CMS**<br><br>A free visual editor and CMS are available for content writers, removing the need for a localization platform. Keep your content synchronized using Git, or externalize it totally or partially with the CMS.<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
64
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true" alt="Feature" width="700"> | **Tree-shakable Content**<br><br>Tree-shakable content, reducing the size of the final bundle. Loads content per component, excluding any unused content from your bundle. Supports lazy loading to enhance app loading efficiency. <br><br> - [App build optimization](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
65
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true" alt="Feature" width="700"> | **Static Rendering**<br><br>Doesn't block Static Rendering. <br><br> - [Next.js integration](https://intlayer.org/doc/environment/nextjs) |
|
|
66
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true" alt="Feature" width="700"> | **AI-Powered Translation**<br><br>Transform your website into 231 languages with just one click using Intlayer's advanced AI-powered translation tools using your own AI provider / API key. <br><br> - [CI/CD integration](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Auto fill](https://intlayer.org/doc/concept/auto-fill) |
|
|
67
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true" alt="Feature" width="700"> | **MCP Server Integration**<br><br>Provides an MCP (Model Context Protocol) server for IDE automation, enabling seamless content management and i18n workflows directly within your development environment. <br><br> - [MCP Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/mcp_server.md) |
|
|
68
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true" alt="Feature" width="700"> | **VSCode Extension**<br><br>Intlayer provides a VSCode extension to help you manage your content and translations, building your dictionaries, translating your content, and more. <br><br> - [VSCode Extension](https://intlayer.org/doc/vs-code-extension) |
|
|
69
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true" alt="Feature" width="700"> | **Interoperability**<br><br>Allow interoperability with react-i18next, next-i18next, next-intl, react-intl, vue-i18n. <br><br> - [Intlayer and react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer and next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer and next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer and vue-i18n](https://intlayer.org/blog/intlayer-with-vue-i18n) <br> - [Intlayer compat adapters](https://intlayer.org/doc/compatibility) |
|
|
70
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/benchmark.png?raw=true" alt="Feature" width="700"> | **Performances & Benchmark**<br><br>Uses advanced tree-shaking and dynamic loading to boost performances and keep the solution as light as possible. <br><br> - [Performances & Benchmark](https://intlayer.org/doc/benchmark) |
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
@@ -162,7 +162,7 @@ Explore our comprehensive documentation to get started with Intlayer and learn h
|
|
|
162
162
|
<li><a href="https://intlayer.org/doc/concept/cms" rel=''>Intlayer CMS</a></li>
|
|
163
163
|
<li><a href="https://intlayer.org/doc/concept/content" rel=''>Dictionary</a>
|
|
164
164
|
<ul>
|
|
165
|
-
<li><a href="https://intlayer.org/doc/concept/
|
|
165
|
+
<li><a href="https://intlayer.org/doc/concept/per-locale-file" rel=''>Per-Locale Content Declaration File</a></li>
|
|
166
166
|
<li><a href="https://intlayer.org/doc/concept/content/translation" rel=''>Translation</a></li>
|
|
167
167
|
<li><a href="https://intlayer.org/doc/concept/content/enumeration" rel=''>Enumeration</a></li>
|
|
168
168
|
<li><a href="https://intlayer.org/doc/concept/content/condition" rel=''>Condition</a></li>
|
|
@@ -183,7 +183,7 @@ Explore our comprehensive documentation to get started with Intlayer and learn h
|
|
|
183
183
|
<ul>
|
|
184
184
|
<li><a href="https://intlayer.org/doc/environment/nextjs/15" rel=''>Next.js 15</a></li>
|
|
185
185
|
<li><a href="https://intlayer.org/doc/environment/nextjs/14" rel=''>Next.js 14 (App Router)</a></li>
|
|
186
|
-
<li><a href="https://intlayer.org/doc/environment/nextjs/next-with-
|
|
186
|
+
<li><a href="https://intlayer.org/doc/environment/nextjs/next-with-page-router" rel=''>Next.js Page Router</a></li>
|
|
187
187
|
<li><a href="https://intlayer.org/doc/environment/nextjs/compiler" rel=''>Next.js using Compiler</a></li>
|
|
188
188
|
</ul>
|
|
189
189
|
</li>
|
|
@@ -212,7 +212,7 @@ Explore our comprehensive documentation to get started with Intlayer and learn h
|
|
|
212
212
|
<li><a href="https://intlayer.org/doc/environment/sveltekit" rel=''>SvelteKit</a></li>
|
|
213
213
|
<li><a href="https://intlayer.org/doc/environment/vite-and-preact" rel=''>Vite + Preact</a></li>
|
|
214
214
|
<li><a href="https://intlayer.org/doc/environment/vite-and-vue" rel=''>Vite + Vue</a></li>
|
|
215
|
-
<li><a href="https://intlayer.org/doc/environment/
|
|
215
|
+
<li><a href="https://intlayer.org/doc/environment/nuxt-and-vue" rel=''>Vite + Nuxt</a></li>
|
|
216
216
|
<li><a href="https://intlayer.org/doc/environment/vite-and-solid" rel=''>Vite + Solid</a></li>
|
|
217
217
|
<li><a href="https://intlayer.org/doc/environment/angular" rel=''>Angular</a></li>
|
|
218
218
|
<li>
|
|
@@ -47,7 +47,7 @@ const prepareDictionaries = async (currentScript) => {
|
|
|
47
47
|
await prepareIntlayer((0, _intlayer_config_node.getConfiguration)(), {
|
|
48
48
|
clean: isBuild,
|
|
49
49
|
env: isBuild ? "prod" : "dev",
|
|
50
|
-
cacheTimeoutMs: isDev ?
|
|
50
|
+
cacheTimeoutMs: isDev ? 36e5 : 3e4
|
|
51
51
|
});
|
|
52
52
|
};
|
|
53
53
|
const runScript = async () => {
|
|
@@ -61,11 +61,12 @@ const runScript = async () => {
|
|
|
61
61
|
const nodeArgs = scriptIndex > 0 ? args.slice(0, scriptIndex) : [];
|
|
62
62
|
const scriptPath = (0, _intlayer_config_utils.getProjectRequire)().resolve(`@craco/craco/dist/scripts/${script}`);
|
|
63
63
|
const scriptArgs = args.slice(scriptIndex + 1);
|
|
64
|
-
const
|
|
64
|
+
const processArgs = nodeArgs.concat(scriptPath).concat([
|
|
65
65
|
...scriptArgs,
|
|
66
66
|
"--config",
|
|
67
67
|
"./node_modules/react-scripts-intlayer/dist/cjs/craco.config.cjs"
|
|
68
|
-
])
|
|
68
|
+
]);
|
|
69
|
+
const child = (0, node_child_process.spawnSync)("node", processArgs, { stdio: "inherit" });
|
|
69
70
|
if (child.signal) {
|
|
70
71
|
if (child.signal === "SIGKILL") (0, _intlayer_config_logger.logger)(`
|
|
71
72
|
The build failed because the process exited too early.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-scripts-intlayer.cjs","names":["findDuplicateWebpackPaths"],"sources":["../../../src/cli/react-scripts-intlayer.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * To make the setup easier, we are using craco to override the webpack configuration.\n * This script is used to run the craco scripts with the custom configuration.\n *\n * The script is based on the original craco script from create-react-app.\n */\n\nimport { spawnSync } from 'node:child_process';\nimport { logger } from '@intlayer/config/logger';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { getProjectRequire } from '@intlayer/config/utils';\nimport { findDuplicateWebpackPaths } from '../findDuplicateWebpackPaths';\n\nconst args = process.argv.slice(2);\nconst scriptIndex = args.findIndex(\n (index) => index === 'build' || index === 'start' || index === 'test'\n);\nconst script = scriptIndex === -1 ? args[0] : args[scriptIndex];\n\n/**\n * Surface a duplicated webpack install up-front, instead of leaving the user\n * with the unactionable `TypeError: The 'compilation' argument must be an\n * instance of Compilation` stack trace webpack throws much later.\n */\nconst warnOnDuplicateWebpack = (): void => {\n const duplicateWebpackPaths = findDuplicateWebpackPaths();\n\n if (duplicateWebpackPaths.length === 0) return;\n\n logger(\n [\n 'Multiple copies of webpack were found in this project:',\n ...duplicateWebpackPaths.map((webpackPath) => ` - ${webpackPath}`),\n '',\n 'react-scripts and its plugins must share a single webpack instance, otherwise the build fails with \"The \\'compilation\\' argument must be an instance of Compilation\".',\n 'Deduplicate the install — for example by removing node_modules and the lockfile and reinstalling, or by pinning a single webpack version through your package manager (npm `overrides`, yarn `resolutions`, pnpm/bun `overrides`).',\n ].join('\\n'),\n { level: 'warn' }\n );\n};\n\n/**\n * Build the Intlayer dictionaries (i.e. populate the `.intlayer` folder that\n * backs the `@intlayer/dictionaries-entry` alias) before craco/webpack starts.\n *\n * Unlike the webpack `IntlayerPlugin` — whose `beforeCompile` hook fires only\n * after webpack has already begun resolving modules — this runs ahead of the\n * compiler so the dictionaries entry exists the moment resolution starts.\n * Mirrors the async `withIntlayer` flow used by the Next.js integration.\n */\nconst prepareDictionaries = async (\n currentScript: string | undefined\n): Promise<void> => {\n // `start` runs the dev server, `build` a production bundle, `test` the suite.\n const isBuild = currentScript === 'build';\n const isDev = currentScript === 'start';\n\n const { prepareIntlayer } = await import('@intlayer/engine/build');\n const intlayerConfig = getConfiguration();\n\n // `prepareIntlayer` uses `runOnce`, so a redundant call from the webpack\n // plugin later in the pipeline is a cheap no-op.\n await prepareIntlayer(intlayerConfig, {\n clean: isBuild,\n env: isBuild ? 'prod' : 'dev',\n cacheTimeoutMs: isDev\n ? 1000 * 60 * 60 // 1 hour for dev (default cache timeout)\n : 1000 * 30, // 30 seconds for build/test (ensure dictionaries are fresh)\n });\n};\n\nconst runScript = async (): Promise<void> => {\n if (script !== 'build' && script !== 'start' && script !== 'test') {\n logger(`Unknown script \"${script}\".`);\n logger('Perhaps you need to update craco?');\n return;\n }\n\n warnOnDuplicateWebpack();\n\n await prepareDictionaries(script);\n\n const nodeArgs = scriptIndex > 0 ? args.slice(0, scriptIndex) : [];\n const scriptPath = getProjectRequire().resolve(\n `@craco/craco/dist/scripts/${script}`\n );\n\n const scriptArgs = args.slice(scriptIndex + 1);\n const processArgs = nodeArgs\n .concat(scriptPath)\n .concat([\n ...scriptArgs,\n '--config',\n './node_modules/react-scripts-intlayer/dist/cjs/craco.config.cjs',\n ]);\n\n const child = spawnSync('node', processArgs, {\n stdio: 'inherit',\n });\n\n if (child.signal) {\n if (child.signal === 'SIGKILL') {\n logger(`\n The build failed because the process exited too early.\n This probably means the system ran out of memory or someone called\n \\`kill -9\\` on the process.\n `);\n } else if (child.signal === 'SIGTERM') {\n logger(`\n The build failed because the process exited too early.\n Someone might have called \\`kill\\` or \\`killall\\`, or the system could\n be shutting down.\n `);\n }\n\n process.exit(1);\n }\n\n process.exit(child.status ?? undefined);\n};\n\nrunScript();\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,MAAM,cAAc,KAAK,WACtB,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,MACjE;AACA,MAAM,SAAS,gBAAgB,KAAK,KAAK,KAAK,KAAK;;;;;;AAOnD,MAAM,+BAAqC;CACzC,MAAM,wBAAwBA,4DAA0B;CAExD,IAAI,sBAAsB,WAAW,GAAG;CAExC,oCACE;EACE;EACA,GAAG,sBAAsB,KAAK,gBAAgB,OAAO,aAAa;EAClE;EACA;EACA;CACF,CAAC,CAAC,KAAK,IAAI,GACX,EAAE,OAAO,OAAO,CAClB;AACF;;;;;;;;;;AAWA,MAAM,sBAAsB,OAC1B,kBACkB;CAElB,MAAM,UAAU,kBAAkB;CAClC,MAAM,QAAQ,kBAAkB;CAEhC,MAAM,EAAE,oBAAoB,MAAM,OAAO;CAKzC,MAAM,
|
|
1
|
+
{"version":3,"file":"react-scripts-intlayer.cjs","names":["findDuplicateWebpackPaths","getConfiguration","getProjectRequire","spawnSync"],"sources":["../../../src/cli/react-scripts-intlayer.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * To make the setup easier, we are using craco to override the webpack configuration.\n * This script is used to run the craco scripts with the custom configuration.\n *\n * The script is based on the original craco script from create-react-app.\n */\n\nimport { spawnSync } from 'node:child_process';\nimport { logger } from '@intlayer/config/logger';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { getProjectRequire } from '@intlayer/config/utils';\nimport { findDuplicateWebpackPaths } from '../findDuplicateWebpackPaths';\n\nconst args = process.argv.slice(2);\nconst scriptIndex = args.findIndex(\n (index) => index === 'build' || index === 'start' || index === 'test'\n);\nconst script = scriptIndex === -1 ? args[0] : args[scriptIndex];\n\n/**\n * Surface a duplicated webpack install up-front, instead of leaving the user\n * with the unactionable `TypeError: The 'compilation' argument must be an\n * instance of Compilation` stack trace webpack throws much later.\n */\nconst warnOnDuplicateWebpack = (): void => {\n const duplicateWebpackPaths = findDuplicateWebpackPaths();\n\n if (duplicateWebpackPaths.length === 0) return;\n\n logger(\n [\n 'Multiple copies of webpack were found in this project:',\n ...duplicateWebpackPaths.map((webpackPath) => ` - ${webpackPath}`),\n '',\n 'react-scripts and its plugins must share a single webpack instance, otherwise the build fails with \"The \\'compilation\\' argument must be an instance of Compilation\".',\n 'Deduplicate the install — for example by removing node_modules and the lockfile and reinstalling, or by pinning a single webpack version through your package manager (npm `overrides`, yarn `resolutions`, pnpm/bun `overrides`).',\n ].join('\\n'),\n { level: 'warn' }\n );\n};\n\n/**\n * Build the Intlayer dictionaries (i.e. populate the `.intlayer` folder that\n * backs the `@intlayer/dictionaries-entry` alias) before craco/webpack starts.\n *\n * Unlike the webpack `IntlayerPlugin` — whose `beforeCompile` hook fires only\n * after webpack has already begun resolving modules — this runs ahead of the\n * compiler so the dictionaries entry exists the moment resolution starts.\n * Mirrors the async `withIntlayer` flow used by the Next.js integration.\n */\nconst prepareDictionaries = async (\n currentScript: string | undefined\n): Promise<void> => {\n // `start` runs the dev server, `build` a production bundle, `test` the suite.\n const isBuild = currentScript === 'build';\n const isDev = currentScript === 'start';\n\n const { prepareIntlayer } = await import('@intlayer/engine/build');\n const intlayerConfig = getConfiguration();\n\n // `prepareIntlayer` uses `runOnce`, so a redundant call from the webpack\n // plugin later in the pipeline is a cheap no-op.\n await prepareIntlayer(intlayerConfig, {\n clean: isBuild,\n env: isBuild ? 'prod' : 'dev',\n cacheTimeoutMs: isDev\n ? 1000 * 60 * 60 // 1 hour for dev (default cache timeout)\n : 1000 * 30, // 30 seconds for build/test (ensure dictionaries are fresh)\n });\n};\n\nconst runScript = async (): Promise<void> => {\n if (script !== 'build' && script !== 'start' && script !== 'test') {\n logger(`Unknown script \"${script}\".`);\n logger('Perhaps you need to update craco?');\n return;\n }\n\n warnOnDuplicateWebpack();\n\n await prepareDictionaries(script);\n\n const nodeArgs = scriptIndex > 0 ? args.slice(0, scriptIndex) : [];\n const scriptPath = getProjectRequire().resolve(\n `@craco/craco/dist/scripts/${script}`\n );\n\n const scriptArgs = args.slice(scriptIndex + 1);\n const processArgs = nodeArgs\n .concat(scriptPath)\n .concat([\n ...scriptArgs,\n '--config',\n './node_modules/react-scripts-intlayer/dist/cjs/craco.config.cjs',\n ]);\n\n const child = spawnSync('node', processArgs, {\n stdio: 'inherit',\n });\n\n if (child.signal) {\n if (child.signal === 'SIGKILL') {\n logger(`\n The build failed because the process exited too early.\n This probably means the system ran out of memory or someone called\n \\`kill -9\\` on the process.\n `);\n } else if (child.signal === 'SIGTERM') {\n logger(`\n The build failed because the process exited too early.\n Someone might have called \\`kill\\` or \\`killall\\`, or the system could\n be shutting down.\n `);\n }\n\n process.exit(1);\n }\n\n process.exit(child.status ?? undefined);\n};\n\nrunScript();\n"],"mappings":";;;;;;;;;;;;;;AAeA,MAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,MAAM,cAAc,KAAK,WACtB,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,MACjE;AACA,MAAM,SAAS,gBAAgB,KAAK,KAAK,KAAK,KAAK;;;;;;AAOnD,MAAM,+BAAqC;CACzC,MAAM,wBAAwBA,4DAA0B;CAExD,IAAI,sBAAsB,WAAW,GAAG;CAExC,oCACE;EACE;EACA,GAAG,sBAAsB,KAAK,gBAAgB,OAAO,aAAa;EAClE;EACA;EACA;CACF,CAAC,CAAC,KAAK,IAAI,GACX,EAAE,OAAO,OAAO,CAClB;AACF;;;;;;;;;;AAWA,MAAM,sBAAsB,OAC1B,kBACkB;CAElB,MAAM,UAAU,kBAAkB;CAClC,MAAM,QAAQ,kBAAkB;CAEhC,MAAM,EAAE,oBAAoB,MAAM,OAAO;CAKzC,MAAM,oBAJiBC,wCAIY,GAAG;EACpC,OAAO;EACP,KAAK,UAAU,SAAS;EACxB,gBAAgB,QACZ,OACA;CACN,CAAC;AACH;AAEA,MAAM,YAAY,YAA2B;CAC3C,IAAI,WAAW,WAAW,WAAW,WAAW,WAAW,QAAQ;EACjE,oCAAO,mBAAmB,OAAO,GAAG;EACpC,oCAAO,mCAAmC;EAC1C;CACF;CAEA,uBAAuB;CAEvB,MAAM,oBAAoB,MAAM;CAEhC,MAAM,WAAW,cAAc,IAAI,KAAK,MAAM,GAAG,WAAW,IAAI,CAAC;CACjE,MAAM,iBAAaC,0CAAkB,CAAC,CAAC,QACrC,6BAA6B,QAC/B;CAEA,MAAM,aAAa,KAAK,MAAM,cAAc,CAAC;CAC7C,MAAM,cAAc,SACjB,OAAO,UAAU,CAAC,CAClB,OAAO;EACN,GAAG;EACH;EACA;CACF,CAAC;CAEH,MAAM,YAAQC,8BAAU,QAAQ,aAAa,EAC3C,OAAO,UACT,CAAC;CAED,IAAI,MAAM,QAAQ;EAChB,IAAI,MAAM,WAAW,WACnB,oCAAO;;;;aAIA;OACF,IAAI,MAAM,WAAW,WAC1B,oCAAO;;;;aAIA;EAGT,QAAQ,KAAK,CAAC;CAChB;CAEA,QAAQ,KAAK,MAAM,UAAU,MAAS;AACxC;AAEA,UAAU"}
|
|
@@ -21,7 +21,8 @@ const WEBPACK_CONSUMER_PACKAGES = ["react-scripts", "webpack-manifest-plugin"];
|
|
|
21
21
|
*/
|
|
22
22
|
const resolveWebpackFrom = (packageName) => {
|
|
23
23
|
try {
|
|
24
|
-
|
|
24
|
+
const packageJsonPath = (0, _intlayer_config_utils.getProjectRequire)().resolve(`${packageName}/package.json`);
|
|
25
|
+
return (0, node_module.createRequire)(packageJsonPath).resolve("webpack");
|
|
25
26
|
} catch {
|
|
26
27
|
return;
|
|
27
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findDuplicateWebpackPaths.cjs","names":[],"sources":["../../src/findDuplicateWebpackPaths.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { getProjectRequire } from '@intlayer/config/utils';\n\n/**\n * Packages whose webpack resolution must agree for a CRA build to succeed.\n *\n * `react-scripts` owns the compiler, while `webpack-manifest-plugin` is a\n * plugin that taps it. Both are resolved independently by Node, so a hoisting\n * split between them is exactly the situation that breaks the build.\n */\nconst WEBPACK_CONSUMER_PACKAGES = ['react-scripts', 'webpack-manifest-plugin'];\n\n/**\n * Resolves a function that maps a package name to the `webpack` entry point\n * that package would load, or `undefined` when the package (or its webpack) is\n * not installed.\n */\nexport type WebpackResolver = (packageName: string) => string | undefined;\n\n/**\n * Resolve `webpack` from a package's own resolution root, mirroring what Node\n * does at runtime when that package calls `require('webpack')`.\n *\n * @param packageName - Name of the package to resolve `webpack` on behalf of.\n * @returns Absolute path to the webpack entry point, or `undefined` when it\n * cannot be resolved.\n */\nexport const resolveWebpackFrom: WebpackResolver = (packageName) => {\n try {\n const packageJsonPath = getProjectRequire().resolve(\n `${packageName}/package.json`\n );\n\n return createRequire(packageJsonPath).resolve('webpack');\n } catch {\n // The package (or its webpack) is absent — nothing to compare.\n return undefined;\n }\n};\n\n/**\n * Detect whether the project tree contains more than one copy of webpack.\n *\n * `react-scripts` resolves webpack relative to itself, while hoisted plugins\n * such as `webpack-manifest-plugin` resolve it from the project root. When the\n * two resolutions land on different copies, the plugin's `Compilation` class is\n * not the one the compiler instantiated and webpack throws the opaque\n * `TypeError: The 'compilation' argument must be an instance of Compilation`.\n *\n * Neither `resolve.alias` nor any other webpack setting can fix this — the\n * duplication happens in Node's own `require` resolution, before webpack ever\n * runs — so the only remedy is deduplicating the install.\n *\n * @param resolver - Resolves the webpack entry a given package would load.\n * Injectable for testing; defaults to real Node resolution.\n * @returns The distinct webpack entry points found, in discovery order. A\n * result of fewer than two entries means the install is consistent.\n */\nexport const findDuplicateWebpackPaths = (\n resolver: WebpackResolver = resolveWebpackFrom\n): string[] => {\n const webpackPaths = WEBPACK_CONSUMER_PACKAGES.map(resolver).filter(\n (webpackPath): webpackPath is string => Boolean(webpackPath)\n );\n\n const uniqueWebpackPaths = [...new Set(webpackPaths)];\n\n return uniqueWebpackPaths.length < 2 ? [] : uniqueWebpackPaths;\n};\n"],"mappings":";;;;;;;;;;;;AAUA,MAAM,4BAA4B,CAAC,iBAAiB,yBAAyB;;;;;;;;;AAiB7E,MAAa,sBAAuC,gBAAgB;CAClE,IAAI;
|
|
1
|
+
{"version":3,"file":"findDuplicateWebpackPaths.cjs","names":["getProjectRequire","createRequire"],"sources":["../../src/findDuplicateWebpackPaths.ts"],"sourcesContent":["import { createRequire } from 'node:module';\nimport { getProjectRequire } from '@intlayer/config/utils';\n\n/**\n * Packages whose webpack resolution must agree for a CRA build to succeed.\n *\n * `react-scripts` owns the compiler, while `webpack-manifest-plugin` is a\n * plugin that taps it. Both are resolved independently by Node, so a hoisting\n * split between them is exactly the situation that breaks the build.\n */\nconst WEBPACK_CONSUMER_PACKAGES = ['react-scripts', 'webpack-manifest-plugin'];\n\n/**\n * Resolves a function that maps a package name to the `webpack` entry point\n * that package would load, or `undefined` when the package (or its webpack) is\n * not installed.\n */\nexport type WebpackResolver = (packageName: string) => string | undefined;\n\n/**\n * Resolve `webpack` from a package's own resolution root, mirroring what Node\n * does at runtime when that package calls `require('webpack')`.\n *\n * @param packageName - Name of the package to resolve `webpack` on behalf of.\n * @returns Absolute path to the webpack entry point, or `undefined` when it\n * cannot be resolved.\n */\nexport const resolveWebpackFrom: WebpackResolver = (packageName) => {\n try {\n const packageJsonPath = getProjectRequire().resolve(\n `${packageName}/package.json`\n );\n\n return createRequire(packageJsonPath).resolve('webpack');\n } catch {\n // The package (or its webpack) is absent — nothing to compare.\n return undefined;\n }\n};\n\n/**\n * Detect whether the project tree contains more than one copy of webpack.\n *\n * `react-scripts` resolves webpack relative to itself, while hoisted plugins\n * such as `webpack-manifest-plugin` resolve it from the project root. When the\n * two resolutions land on different copies, the plugin's `Compilation` class is\n * not the one the compiler instantiated and webpack throws the opaque\n * `TypeError: The 'compilation' argument must be an instance of Compilation`.\n *\n * Neither `resolve.alias` nor any other webpack setting can fix this — the\n * duplication happens in Node's own `require` resolution, before webpack ever\n * runs — so the only remedy is deduplicating the install.\n *\n * @param resolver - Resolves the webpack entry a given package would load.\n * Injectable for testing; defaults to real Node resolution.\n * @returns The distinct webpack entry points found, in discovery order. A\n * result of fewer than two entries means the install is consistent.\n */\nexport const findDuplicateWebpackPaths = (\n resolver: WebpackResolver = resolveWebpackFrom\n): string[] => {\n const webpackPaths = WEBPACK_CONSUMER_PACKAGES.map(resolver).filter(\n (webpackPath): webpackPath is string => Boolean(webpackPath)\n );\n\n const uniqueWebpackPaths = [...new Set(webpackPaths)];\n\n return uniqueWebpackPaths.length < 2 ? [] : uniqueWebpackPaths;\n};\n"],"mappings":";;;;;;;;;;;;AAUA,MAAM,4BAA4B,CAAC,iBAAiB,yBAAyB;;;;;;;;;AAiB7E,MAAa,sBAAuC,gBAAgB;CAClE,IAAI;EACF,MAAM,sBAAkBA,0CAAkB,CAAC,CAAC,QAC1C,GAAG,YAAY,cACjB;EAEA,WAAOC,2BAAc,eAAe,CAAC,CAAC,QAAQ,SAAS;CACzD,QAAQ;EAEN;CACF;AACF;;;;;;;;;;;;;;;;;;;AAoBA,MAAa,6BACX,WAA4B,uBACf;CACb,MAAM,eAAe,0BAA0B,IAAI,QAAQ,CAAC,CAAC,QAC1D,gBAAuC,QAAQ,WAAW,CAC7D;CAEA,MAAM,qBAAqB,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC;CAEpD,OAAO,mBAAmB,SAAS,IAAI,CAAC,IAAI;AAC9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intlayerCracoPlugin.cjs","names":["IntlayerPlugin"],"sources":["../../src/intlayerCracoPlugin.ts"],"sourcesContent":["import { join } from 'node:path';\nimport type {\n CracoConfig,\n CracoConfigOverride,\n CracoPlugin,\n WebpackConfigOverride,\n} from '@craco/types';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { getAlias } from '@intlayer/config/utils';\nimport { IntlayerPlugin } from '@intlayer/webpack';\nimport { defu } from 'defu';\n\n/**\n * The webpack `Configuration` type exactly as CRACO hands it to us.\n *\n * Deliberately derived from `@craco/types` rather than imported from `webpack`:\n * the webpack copy CRACO resolves and the one this package resolves are two\n * distinct type identities whenever their versions differ, which makes any\n * conversion between them a compile error. Reusing CRACO's own type keeps a\n * single identity, and — being an indexed access on an imported type — it stays\n * nameable in the emitted declarations, avoiding TS2742.\n */\ntype CracoWebpackConfig = WebpackConfigOverride['webpackConfig'];\n\n// Get Intlayer configuration\nconst intlayerConfig = getConfiguration();\n\nconst alias = getAlias({\n configuration: intlayerConfig,\n formatter: (value: string) => join(process.cwd(), value),\n});\n\n/**\n * Override the final CRA Webpack config.\n */\nexport const overrideWebpackConfig = ({\n webpackConfig,\n}: WebpackConfigOverride): CracoWebpackConfig => {\n // 1) Remove `module`, `fs`, `path`, `vm` from externals.\n if (typeof webpackConfig.externals === 'object') {\n webpackConfig.externals = {\n ...webpackConfig.externals,\n esbuild: 'esbuild',\n };\n }\n\n // 2) Properly push node-loader rule\n webpackConfig.module?.rules?.push({\n test: /\\.node$/,\n use: 'node-loader',\n });\n\n return webpackConfig;\n};\n\n/**\n * Override the CRACO config itself to set up aliases, fallbacks, and plugins.\n */\nexport const overrideCracoConfig = ({\n cracoConfig,\n}: CracoConfigOverride): CracoConfig =>\n defu(\n {\n webpack: {\n plugins: {\n // defu overwrites arrays by default, so we manually preserve existing plugins\n add: [\n ...(cracoConfig.webpack?.plugins?.add ?? []),\n new IntlayerPlugin(intlayerConfig),\n ],\n },\n // Automatically merges deeply with existing aliases\n alias,\n },\n },\n cracoConfig\n ) as CracoConfig;\n\n/**\n * A CRACO plugin that adds the Intlayer configuration to the webpack configuration\n * and sets the environment variables.\n */\nexport const intlayerCracoPlugin: CracoPlugin = {\n overrideCracoConfig,\n overrideWebpackConfig,\n};\n"],"mappings":";;;;;;;;AAyBA,MAAM,
|
|
1
|
+
{"version":3,"file":"intlayerCracoPlugin.cjs","names":["getConfiguration","getAlias","join","IntlayerPlugin"],"sources":["../../src/intlayerCracoPlugin.ts"],"sourcesContent":["import { join } from 'node:path';\nimport type {\n CracoConfig,\n CracoConfigOverride,\n CracoPlugin,\n WebpackConfigOverride,\n} from '@craco/types';\nimport { getConfiguration } from '@intlayer/config/node';\nimport { getAlias } from '@intlayer/config/utils';\nimport { IntlayerPlugin } from '@intlayer/webpack';\nimport { defu } from 'defu';\n\n/**\n * The webpack `Configuration` type exactly as CRACO hands it to us.\n *\n * Deliberately derived from `@craco/types` rather than imported from `webpack`:\n * the webpack copy CRACO resolves and the one this package resolves are two\n * distinct type identities whenever their versions differ, which makes any\n * conversion between them a compile error. Reusing CRACO's own type keeps a\n * single identity, and — being an indexed access on an imported type — it stays\n * nameable in the emitted declarations, avoiding TS2742.\n */\ntype CracoWebpackConfig = WebpackConfigOverride['webpackConfig'];\n\n// Get Intlayer configuration\nconst intlayerConfig = getConfiguration();\n\nconst alias = getAlias({\n configuration: intlayerConfig,\n formatter: (value: string) => join(process.cwd(), value),\n});\n\n/**\n * Override the final CRA Webpack config.\n */\nexport const overrideWebpackConfig = ({\n webpackConfig,\n}: WebpackConfigOverride): CracoWebpackConfig => {\n // 1) Remove `module`, `fs`, `path`, `vm` from externals.\n if (typeof webpackConfig.externals === 'object') {\n webpackConfig.externals = {\n ...webpackConfig.externals,\n esbuild: 'esbuild',\n };\n }\n\n // 2) Properly push node-loader rule\n webpackConfig.module?.rules?.push({\n test: /\\.node$/,\n use: 'node-loader',\n });\n\n return webpackConfig;\n};\n\n/**\n * Override the CRACO config itself to set up aliases, fallbacks, and plugins.\n */\nexport const overrideCracoConfig = ({\n cracoConfig,\n}: CracoConfigOverride): CracoConfig =>\n defu(\n {\n webpack: {\n plugins: {\n // defu overwrites arrays by default, so we manually preserve existing plugins\n add: [\n ...(cracoConfig.webpack?.plugins?.add ?? []),\n new IntlayerPlugin(intlayerConfig),\n ],\n },\n // Automatically merges deeply with existing aliases\n alias,\n },\n },\n cracoConfig\n ) as CracoConfig;\n\n/**\n * A CRACO plugin that adds the Intlayer configuration to the webpack configuration\n * and sets the environment variables.\n */\nexport const intlayerCracoPlugin: CracoPlugin = {\n overrideCracoConfig,\n overrideWebpackConfig,\n};\n"],"mappings":";;;;;;;;AAyBA,MAAM,qBAAiBA,wCAAiB;AAExC,MAAM,YAAQC,iCAAS;CACrB,eAAe;CACf,YAAY,cAAkBC,gBAAK,QAAQ,IAAI,GAAG,KAAK;AACzD,CAAC;;;;AAKD,MAAa,yBAAyB,EACpC,oBAC+C;CAE/C,IAAI,OAAO,cAAc,cAAc,UACrC,cAAc,YAAY;EACxB,GAAG,cAAc;EACjB,SAAS;CACX;CAIF,cAAc,QAAQ,OAAO,KAAK;EAChC,MAAM;EACN,KAAK;CACP,CAAC;CAED,OAAO;AACT;;;;AAKA,MAAa,uBAAuB,EAClC,sBAEA,WACE,EACE,SAAS;CACP,SAAS,EAEP,KAAK,CACH,GAAI,YAAY,SAAS,SAAS,OAAO,CAAC,GAC1C,IAAIC,iCAAe,cAAc,CACnC,EACF;CAEA;AACF,EACF,GACA,WACF;;;;;AAMF,MAAa,sBAAmC;CAC9C;CACA;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-scripts-intlayer",
|
|
3
|
-
"version": "9.3.
|
|
3
|
+
"version": "9.3.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Integrate Intlayer with Create React App using custom React scripts for internationalization i18n and advanced Webpack configurations",
|
|
6
6
|
"keywords": [
|
|
@@ -79,10 +79,10 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@craco/craco": "7.1.0",
|
|
82
|
-
"@intlayer/config": "9.3.
|
|
83
|
-
"@intlayer/engine": "9.3.
|
|
84
|
-
"@intlayer/types": "9.3.
|
|
85
|
-
"@intlayer/webpack": "9.3.
|
|
82
|
+
"@intlayer/config": "9.3.2",
|
|
83
|
+
"@intlayer/engine": "9.3.2",
|
|
84
|
+
"@intlayer/types": "9.3.2",
|
|
85
|
+
"@intlayer/webpack": "9.3.2",
|
|
86
86
|
"defu": "6.1.7",
|
|
87
87
|
"node-loader": "2.1.0",
|
|
88
88
|
"process": "0.11.10"
|