@intlayer/chokidar 8.4.10 → 8.5.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.
- package/dist/assets/initConfig/templates/cjs.txt +9 -1
- package/dist/assets/initConfig/templates/mjs.txt +9 -1
- package/dist/assets/initConfig/templates/ts.txt +9 -1
- package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs +1 -1
- package/dist/cjs/loadDictionaries/getIntlayerBundle.cjs.map +1 -1
- package/dist/cjs/writeConfiguration/generateConfigurationContent.cjs +31 -0
- package/dist/cjs/writeConfiguration/generateConfigurationContent.cjs.map +1 -0
- package/dist/cjs/writeConfiguration/index.cjs +5 -23
- package/dist/cjs/writeConfiguration/index.cjs.map +1 -1
- package/dist/esm/loadDictionaries/getIntlayerBundle.mjs +1 -1
- package/dist/esm/loadDictionaries/getIntlayerBundle.mjs.map +1 -1
- package/dist/esm/writeConfiguration/generateConfigurationContent.mjs +29 -0
- package/dist/esm/writeConfiguration/generateConfigurationContent.mjs.map +1 -0
- package/dist/esm/writeConfiguration/index.mjs +5 -23
- package/dist/esm/writeConfiguration/index.mjs.map +1 -1
- package/dist/types/writeConfiguration/generateConfigurationContent.d.ts +7 -0
- package/dist/types/writeConfiguration/generateConfigurationContent.d.ts.map +1 -0
- package/dist/types/writeConfiguration/index.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -53,6 +53,11 @@ const config = {
|
|
|
53
53
|
provider: 'openai',
|
|
54
54
|
model: 'gpt-5-mini',
|
|
55
55
|
apiKey: process.env.OPENAI_API_KEY,
|
|
56
|
+
/**
|
|
57
|
+
* Additional context for the translations
|
|
58
|
+
*
|
|
59
|
+
* Can be use in addition of the dictionary `description` field
|
|
60
|
+
*/
|
|
56
61
|
applicationContext: [''].join('\n'),
|
|
57
62
|
},
|
|
58
63
|
compiler: {
|
|
@@ -85,7 +90,10 @@ const config = {
|
|
|
85
90
|
|
|
86
91
|
/**
|
|
87
92
|
* Indicates if the components should be saved after being transformed.
|
|
88
|
-
*
|
|
93
|
+
*
|
|
94
|
+
* - If `true`, the compiler will rewrite the component file in the disk. So the transformation will be permanent, and the compiler will skip the transformation for the next process. That way, the compiler can transform the app, and then it can be removed.
|
|
95
|
+
*
|
|
96
|
+
* - If `false`, the compiler will inject the `useIntlayer()` function call into the code in the build output only, and keep the base codebase intact. The transformation will be done only in memory.
|
|
89
97
|
*/
|
|
90
98
|
saveComponents: false,
|
|
91
99
|
},
|
|
@@ -53,6 +53,11 @@ const config = {
|
|
|
53
53
|
provider: 'openai',
|
|
54
54
|
model: 'gpt-5-mini',
|
|
55
55
|
apiKey: process.env.OPENAI_API_KEY,
|
|
56
|
+
/**
|
|
57
|
+
* Additional context for the translations
|
|
58
|
+
*
|
|
59
|
+
* Can be use in addition of the dictionary `description` field
|
|
60
|
+
*/
|
|
56
61
|
applicationContext: [''].join('\n'),
|
|
57
62
|
},
|
|
58
63
|
compiler: {
|
|
@@ -85,7 +90,10 @@ const config = {
|
|
|
85
90
|
|
|
86
91
|
/**
|
|
87
92
|
* Indicates if the components should be saved after being transformed.
|
|
88
|
-
*
|
|
93
|
+
*
|
|
94
|
+
* - If `true`, the compiler will rewrite the component file in the disk. So the transformation will be permanent, and the compiler will skip the transformation for the next process. That way, the compiler can transform the app, and then it can be removed.
|
|
95
|
+
*
|
|
96
|
+
* - If `false`, the compiler will inject the `useIntlayer()` function call into the code in the build output only, and keep the base codebase intact. The transformation will be done only in memory.
|
|
89
97
|
*/
|
|
90
98
|
saveComponents: false,
|
|
91
99
|
},
|
|
@@ -52,6 +52,11 @@ const config: IntlayerConfig = {
|
|
|
52
52
|
provider: 'openai',
|
|
53
53
|
model: 'gpt-5-mini',
|
|
54
54
|
apiKey: process.env.OPENAI_API_KEY,
|
|
55
|
+
/**
|
|
56
|
+
* Additional context for the translations
|
|
57
|
+
*
|
|
58
|
+
* Can be use in addition of the dictionary `description` field
|
|
59
|
+
*/
|
|
55
60
|
applicationContext: [''].join('\n'),
|
|
56
61
|
},
|
|
57
62
|
compiler: {
|
|
@@ -84,7 +89,10 @@ const config: IntlayerConfig = {
|
|
|
84
89
|
|
|
85
90
|
/**
|
|
86
91
|
* Indicates if the components should be saved after being transformed.
|
|
87
|
-
*
|
|
92
|
+
*
|
|
93
|
+
* - If `true`, the compiler will rewrite the component file in the disk. So the transformation will be permanent, and the compiler will skip the transformation for the next process. That way, the compiler can transform the app, and then it can be removed.
|
|
94
|
+
*
|
|
95
|
+
* - If `false`, the compiler will inject the `useIntlayer()` function call into the code in the build output only, and keep the base codebase intact. The transformation will be done only in memory.
|
|
88
96
|
*/
|
|
89
97
|
saveComponents: false,
|
|
90
98
|
},
|
|
@@ -46,7 +46,7 @@ const getIntlayerBundle = async (configuration) => {
|
|
|
46
46
|
const rootRequire = (0, _intlayer_config_utils.getProjectRequire)(configuration.system.baseDir);
|
|
47
47
|
const configPackageRequire = _intlayer_config_utils.configESMxCJSRequire;
|
|
48
48
|
const localRequire = _intlayer_config_utils.isESModule ? (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href) : require;
|
|
49
|
-
const configurationPath = (0, node_path.join)(configuration.system.configDir, `configuration.
|
|
49
|
+
const configurationPath = (0, node_path.join)(configuration.system.configDir, `configuration.cjs`);
|
|
50
50
|
const replaceModules = {
|
|
51
51
|
defu: configPackageRequire.resolve("defu"),
|
|
52
52
|
esbuild: configPackageRequire.resolve("esbuild"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getIntlayerBundle.cjs","names":["configESMxCJSRequire","isESModule","builtinModules"],"sources":["../../../src/loadDictionaries/getIntlayerBundle.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { builtinModules, createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { bundleFile, type ESBuildPlugin } from '@intlayer/config/file';\nimport {\n configESMxCJSRequire,\n getProjectRequire,\n isESModule,\n} from '@intlayer/config/utils';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\n/**\n * Rewrites selected bare specifiers (and any of their subpaths) to absolute file paths,\n * using the provided localeRequire (either createRequire(import.meta.url) or require).\n *\n * Example:\n * rewritePathsPlugin([\"@intlayer/config\", \"@intlayer/core\"], localeRequire)\n * …will also rewrite \"@intlayer/core/file\" etc.\n */\nconst rewritePathsPlugin = (\n replaceModules: Record<string, string>,\n excludeModules?: string[]\n): ESBuildPlugin => {\n return {\n name: 'rewrite-paths',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const exact = replaceModules[args.path];\n\n if (excludeModules?.includes(args.path)) {\n return null;\n }\n\n if (exact) {\n return {\n path: exact,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n\n // Optional: support subpaths like \"@intlayer/core/xyz\"\n for (const key of Object.keys(replaceModules)) {\n if (args.path === key || args.path.startsWith(`${key}/`)) {\n const sub = args.path.slice(key.length); // '' or '/...'\n return {\n path: replaceModules[key] + sub,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n }\n });\n },\n };\n};\n\n/**\n * Get the intlayer bundle to embed @intlayer/core and be able to mock @intlayer/config/built to mock the configuration file.\n */\nexport const getIntlayerBundle = async (configuration: IntlayerConfig) => {\n const rootRequire = getProjectRequire(configuration.system.baseDir);\n const configPackageRequire = configESMxCJSRequire;\n const localRequire = isESModule ? createRequire(import.meta.url) : require;\n\n const configurationPath = join(\n configuration.system.configDir,\n `configuration.
|
|
1
|
+
{"version":3,"file":"getIntlayerBundle.cjs","names":["configESMxCJSRequire","isESModule","builtinModules"],"sources":["../../../src/loadDictionaries/getIntlayerBundle.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { builtinModules, createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { bundleFile, type ESBuildPlugin } from '@intlayer/config/file';\nimport {\n configESMxCJSRequire,\n getProjectRequire,\n isESModule,\n} from '@intlayer/config/utils';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\n/**\n * Rewrites selected bare specifiers (and any of their subpaths) to absolute file paths,\n * using the provided localeRequire (either createRequire(import.meta.url) or require).\n *\n * Example:\n * rewritePathsPlugin([\"@intlayer/config\", \"@intlayer/core\"], localeRequire)\n * …will also rewrite \"@intlayer/core/file\" etc.\n */\nconst rewritePathsPlugin = (\n replaceModules: Record<string, string>,\n excludeModules?: string[]\n): ESBuildPlugin => {\n return {\n name: 'rewrite-paths',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const exact = replaceModules[args.path];\n\n if (excludeModules?.includes(args.path)) {\n return null;\n }\n\n if (exact) {\n return {\n path: exact,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n\n // Optional: support subpaths like \"@intlayer/core/xyz\"\n for (const key of Object.keys(replaceModules)) {\n if (args.path === key || args.path.startsWith(`${key}/`)) {\n const sub = args.path.slice(key.length); // '' or '/...'\n return {\n path: replaceModules[key] + sub,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n }\n });\n },\n };\n};\n\n/**\n * Get the intlayer bundle to embed @intlayer/core and be able to mock @intlayer/config/built to mock the configuration file.\n */\nexport const getIntlayerBundle = async (configuration: IntlayerConfig) => {\n const rootRequire = getProjectRequire(configuration.system.baseDir);\n const configPackageRequire = configESMxCJSRequire;\n const localRequire = isESModule ? createRequire(import.meta.url) : require;\n\n const configurationPath = join(\n configuration.system.configDir,\n `configuration.cjs`\n );\n\n const replaceModules = {\n defu: configPackageRequire.resolve('defu'),\n esbuild: configPackageRequire.resolve('esbuild'),\n '@intlayer/config/built': configurationPath,\n '@intlayer/config/utils': localRequire.resolve('@intlayer/config/utils'),\n '@intlayer/config/client': localRequire.resolve('@intlayer/config/client'),\n '@intlayer/config/logger': localRequire.resolve('@intlayer/config/logger'),\n '@intlayer/core/file': localRequire.resolve('@intlayer/core/file'),\n };\n\n const filePath = rootRequire.resolve('intlayer');\n const code = await readFile(filePath, 'utf-8');\n\n const output = await bundleFile(code, filePath, {\n external: [\n ...builtinModules,\n ...builtinModules.map((mod) => `node:${mod}`),\n ],\n minify: true,\n plugins: [rewritePathsPlugin(replaceModules)],\n });\n\n return output ?? '';\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAmBA,MAAM,sBACJ,gBACA,mBACkB;AAClB,QAAO;EACL,MAAM;EACN,MAAM,OAAO;AACX,SAAM,UAAU,EAAE,QAAQ,MAAM,GAAG,SAAS;IAC1C,MAAM,QAAQ,eAAe,KAAK;AAElC,QAAI,gBAAgB,SAAS,KAAK,KAAK,CACrC,QAAO;AAGT,QAAI,MACF,QAAO;KACL,MAAM;KACN,WAAW;KACX,UAAU;KACX;AAIH,SAAK,MAAM,OAAO,OAAO,KAAK,eAAe,CAC3C,KAAI,KAAK,SAAS,OAAO,KAAK,KAAK,WAAW,GAAG,IAAI,GAAG,EAAE;KACxD,MAAM,MAAM,KAAK,KAAK,MAAM,IAAI,OAAO;AACvC,YAAO;MACL,MAAM,eAAe,OAAO;MAC5B,WAAW;MACX,UAAU;MACX;;KAGL;;EAEL;;;;;AAMH,MAAa,oBAAoB,OAAO,kBAAkC;CACxE,MAAM,4DAAgC,cAAc,OAAO,QAAQ;CACnE,MAAM,uBAAuBA;CAC7B,MAAM,eAAeC,iHAA2C,GAAG;CAEnE,MAAM,wCACJ,cAAc,OAAO,WACrB,oBACD;CAED,MAAM,iBAAiB;EACrB,MAAM,qBAAqB,QAAQ,OAAO;EAC1C,SAAS,qBAAqB,QAAQ,UAAU;EAChD,0BAA0B;EAC1B,0BAA0B,aAAa,QAAQ,yBAAyB;EACxE,2BAA2B,aAAa,QAAQ,0BAA0B;EAC1E,2BAA2B,aAAa,QAAQ,0BAA0B;EAC1E,uBAAuB,aAAa,QAAQ,sBAAsB;EACnE;CAED,MAAM,WAAW,YAAY,QAAQ,WAAW;AAYhD,QATe,4CAFF,qCAAe,UAAU,QAAQ,EAER,UAAU;EAC9C,UAAU,CACR,GAAGC,4BACH,GAAGA,2BAAe,KAAK,QAAQ,QAAQ,MAAM,CAC9C;EACD,QAAQ;EACR,SAAS,CAAC,mBAAmB,eAAe,CAAC;EAC9C,CAAC,IAEe"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
|
+
let _intlayer_config_node = require("@intlayer/config/node");
|
|
4
|
+
|
|
5
|
+
//#region src/writeConfiguration/generateConfigurationContent.ts
|
|
6
|
+
const generateConfigurationContent = (configuration, format) => {
|
|
7
|
+
const { internationalization, routing, editor, log, metadata } = (0, _intlayer_config_node.buildBrowserConfiguration)(configuration);
|
|
8
|
+
let content = "";
|
|
9
|
+
content += `const internationalization = ${JSON.stringify(internationalization, null, 2)};\n`;
|
|
10
|
+
content += `const routing = ${JSON.stringify(routing, null, 2)};\n`;
|
|
11
|
+
content += `const editor = ${JSON.stringify(editor, null, 2)};\n`;
|
|
12
|
+
content += `const log = ${JSON.stringify(log, null, 2)};\n`;
|
|
13
|
+
content += `const metadata = ${JSON.stringify(metadata, null, 2)};\n`;
|
|
14
|
+
content += `const configuration = { internationalization, routing, editor, log, metadata };\n`;
|
|
15
|
+
if (format === "esm") {
|
|
16
|
+
content += `\nexport { internationalization, routing, editor, log, metadata, configuration };\n`;
|
|
17
|
+
content += `export default configuration;\n`;
|
|
18
|
+
} else {
|
|
19
|
+
content += `\nmodule.exports.internationalization = internationalization;\n`;
|
|
20
|
+
content += `module.exports.routing = routing;\n`;
|
|
21
|
+
content += `module.exports.editor = editor;\n`;
|
|
22
|
+
content += `module.exports.log = log;\n`;
|
|
23
|
+
content += `module.exports.metadata = metadata;\n`;
|
|
24
|
+
content += `module.exports = configuration;\n`;
|
|
25
|
+
}
|
|
26
|
+
return content;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.generateConfigurationContent = generateConfigurationContent;
|
|
31
|
+
//# sourceMappingURL=generateConfigurationContent.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateConfigurationContent.cjs","names":[],"sources":["../../../src/writeConfiguration/generateConfigurationContent.ts"],"sourcesContent":["import { buildBrowserConfiguration } from '@intlayer/config/node';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\nexport const generateConfigurationContent = (\n configuration: IntlayerConfig,\n format: 'cjs' | 'esm'\n): string => {\n const { internationalization, routing, editor, log, metadata } =\n buildBrowserConfiguration(configuration);\n\n let content = '';\n\n content += `const internationalization = ${JSON.stringify(internationalization, null, 2)};\\n`;\n content += `const routing = ${JSON.stringify(routing, null, 2)};\\n`;\n content += `const editor = ${JSON.stringify(editor, null, 2)};\\n`;\n content += `const log = ${JSON.stringify(log, null, 2)};\\n`;\n content += `const metadata = ${JSON.stringify(metadata, null, 2)};\\n`;\n content += `const configuration = { internationalization, routing, editor, log, metadata };\\n`;\n\n if (format === 'esm') {\n content += `\\nexport { internationalization, routing, editor, log, metadata, configuration };\\n`;\n content += `export default configuration;\\n`;\n } else {\n content += `\\nmodule.exports.internationalization = internationalization;\\n`;\n content += `module.exports.routing = routing;\\n`;\n content += `module.exports.editor = editor;\\n`;\n content += `module.exports.log = log;\\n`;\n content += `module.exports.metadata = metadata;\\n`;\n content += `module.exports = configuration;\\n`;\n }\n\n return content;\n};\n"],"mappings":";;;;;AAGA,MAAa,gCACX,eACA,WACW;CACX,MAAM,EAAE,sBAAsB,SAAS,QAAQ,KAAK,kEACxB,cAAc;CAE1C,IAAI,UAAU;AAEd,YAAW,gCAAgC,KAAK,UAAU,sBAAsB,MAAM,EAAE,CAAC;AACzF,YAAW,mBAAmB,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC;AAC/D,YAAW,kBAAkB,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC;AAC7D,YAAW,eAAe,KAAK,UAAU,KAAK,MAAM,EAAE,CAAC;AACvD,YAAW,oBAAoB,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;AACjE,YAAW;AAEX,KAAI,WAAW,OAAO;AACpB,aAAW;AACX,aAAW;QACN;AACL,aAAW;AACX,aAAW;AACX,aAAW;AACX,aAAW;AACX,aAAW;AACX,aAAW;;AAGb,QAAO"}
|
|
@@ -1,40 +1,22 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
2
|
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
|
-
const
|
|
3
|
+
const require_writeFileIfChanged = require('../writeFileIfChanged.cjs');
|
|
4
|
+
const require_writeConfiguration_generateConfigurationContent = require('./generateConfigurationContent.cjs');
|
|
4
5
|
let node_fs_promises = require("node:fs/promises");
|
|
5
6
|
let node_path = require("node:path");
|
|
6
|
-
let node_util = require("node:util");
|
|
7
7
|
|
|
8
8
|
//#region src/writeConfiguration/index.ts
|
|
9
|
-
const getCachedConfiguration = async (configuration) => {
|
|
10
|
-
const configurationContent = await (0, node_fs_promises.readFile)((0, node_path.join)(configuration.system.configDir, "configuration.json"), "utf8");
|
|
11
|
-
return JSON.parse(configurationContent);
|
|
12
|
-
};
|
|
13
9
|
const isCachedConfigurationUpToDate = async (configuration) => {
|
|
14
10
|
try {
|
|
15
|
-
|
|
16
|
-
return (0, node_util.isDeepStrictEqual)(await getCachedConfiguration(configuration), cleanedConfiguration);
|
|
11
|
+
return await (0, node_fs_promises.readFile)((0, node_path.join)(configuration.system.configDir, "configuration.mjs"), "utf8") === require_writeConfiguration_generateConfigurationContent.generateConfigurationContent(configuration, "esm");
|
|
17
12
|
} catch {
|
|
18
13
|
return null;
|
|
19
14
|
}
|
|
20
15
|
};
|
|
21
|
-
const cleanConfiguration = (configuration) => {
|
|
22
|
-
return JSON.parse(JSON.stringify({
|
|
23
|
-
internationalization: {
|
|
24
|
-
locales: configuration.internationalization.locales,
|
|
25
|
-
defaultLocale: configuration.internationalization.defaultLocale
|
|
26
|
-
},
|
|
27
|
-
editor: configuration.editor,
|
|
28
|
-
log: configuration.log,
|
|
29
|
-
routing: configuration.routing,
|
|
30
|
-
metadata: configuration.metadata
|
|
31
|
-
}));
|
|
32
|
-
};
|
|
33
16
|
const writeConfiguration = async (configuration) => {
|
|
34
|
-
const {
|
|
35
|
-
const { configDir } = system;
|
|
17
|
+
const { configDir } = configuration.system;
|
|
36
18
|
await (0, node_fs_promises.mkdir)(configDir, { recursive: true });
|
|
37
|
-
await
|
|
19
|
+
await Promise.all([require_writeFileIfChanged.writeFileIfChanged((0, node_path.join)(configDir, "configuration.mjs"), require_writeConfiguration_generateConfigurationContent.generateConfigurationContent(configuration, "esm")), require_writeFileIfChanged.writeFileIfChanged((0, node_path.join)(configDir, "configuration.cjs"), require_writeConfiguration_generateConfigurationContent.generateConfigurationContent(configuration, "cjs"))]);
|
|
38
20
|
};
|
|
39
21
|
|
|
40
22
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["generateConfigurationContent","writeFileIfChanged"],"sources":["../../../src/writeConfiguration/index.ts"],"sourcesContent":["import { mkdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { writeFileIfChanged } from '../writeFileIfChanged';\nimport { generateConfigurationContent } from './generateConfigurationContent';\n\nexport const isCachedConfigurationUpToDate = async (\n configuration: IntlayerConfig\n): Promise<boolean | null> => {\n try {\n const mjsPath = join(configuration.system.configDir, 'configuration.mjs');\n const existingContent = await readFile(mjsPath, 'utf8');\n const expectedContent = generateConfigurationContent(configuration, 'esm');\n return existingContent === expectedContent;\n } catch {\n return null; // Can crash if file doesn't exist yet or config is not defined\n }\n};\n\nexport const writeConfiguration = async (configuration: IntlayerConfig) => {\n const { configDir } = configuration.system;\n\n await mkdir(configDir, { recursive: true });\n\n await Promise.all([\n writeFileIfChanged(\n join(configDir, 'configuration.mjs'),\n generateConfigurationContent(configuration, 'esm')\n ),\n writeFileIfChanged(\n join(configDir, 'configuration.cjs'),\n generateConfigurationContent(configuration, 'cjs')\n ),\n ]);\n};\n"],"mappings":";;;;;;;;AAMA,MAAa,gCAAgC,OAC3C,kBAC4B;AAC5B,KAAI;AAIF,SAFwB,yDADH,cAAc,OAAO,WAAW,oBAAoB,EACzB,OAAO,KAC/BA,qFAA6B,eAAe,MAAM;SAEpE;AACN,SAAO;;;AAIX,MAAa,qBAAqB,OAAO,kBAAkC;CACzE,MAAM,EAAE,cAAc,cAAc;AAEpC,mCAAY,WAAW,EAAE,WAAW,MAAM,CAAC;AAE3C,OAAM,QAAQ,IAAI,CAChBC,kEACO,WAAW,oBAAoB,EACpCD,qFAA6B,eAAe,MAAM,CACnD,EACDC,kEACO,WAAW,oBAAoB,EACpCD,qFAA6B,eAAe,MAAM,CACnD,CACF,CAAC"}
|
|
@@ -45,7 +45,7 @@ const getIntlayerBundle = async (configuration) => {
|
|
|
45
45
|
const rootRequire = getProjectRequire(configuration.system.baseDir);
|
|
46
46
|
const configPackageRequire = configESMxCJSRequire;
|
|
47
47
|
const localRequire = isESModule ? createRequire(import.meta.url) : __require;
|
|
48
|
-
const configurationPath = join(configuration.system.configDir, `configuration.
|
|
48
|
+
const configurationPath = join(configuration.system.configDir, `configuration.cjs`);
|
|
49
49
|
const replaceModules = {
|
|
50
50
|
defu: configPackageRequire.resolve("defu"),
|
|
51
51
|
esbuild: configPackageRequire.resolve("esbuild"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getIntlayerBundle.mjs","names":[],"sources":["../../../src/loadDictionaries/getIntlayerBundle.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { builtinModules, createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { bundleFile, type ESBuildPlugin } from '@intlayer/config/file';\nimport {\n configESMxCJSRequire,\n getProjectRequire,\n isESModule,\n} from '@intlayer/config/utils';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\n/**\n * Rewrites selected bare specifiers (and any of their subpaths) to absolute file paths,\n * using the provided localeRequire (either createRequire(import.meta.url) or require).\n *\n * Example:\n * rewritePathsPlugin([\"@intlayer/config\", \"@intlayer/core\"], localeRequire)\n * …will also rewrite \"@intlayer/core/file\" etc.\n */\nconst rewritePathsPlugin = (\n replaceModules: Record<string, string>,\n excludeModules?: string[]\n): ESBuildPlugin => {\n return {\n name: 'rewrite-paths',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const exact = replaceModules[args.path];\n\n if (excludeModules?.includes(args.path)) {\n return null;\n }\n\n if (exact) {\n return {\n path: exact,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n\n // Optional: support subpaths like \"@intlayer/core/xyz\"\n for (const key of Object.keys(replaceModules)) {\n if (args.path === key || args.path.startsWith(`${key}/`)) {\n const sub = args.path.slice(key.length); // '' or '/...'\n return {\n path: replaceModules[key] + sub,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n }\n });\n },\n };\n};\n\n/**\n * Get the intlayer bundle to embed @intlayer/core and be able to mock @intlayer/config/built to mock the configuration file.\n */\nexport const getIntlayerBundle = async (configuration: IntlayerConfig) => {\n const rootRequire = getProjectRequire(configuration.system.baseDir);\n const configPackageRequire = configESMxCJSRequire;\n const localRequire = isESModule ? createRequire(import.meta.url) : require;\n\n const configurationPath = join(\n configuration.system.configDir,\n `configuration.
|
|
1
|
+
{"version":3,"file":"getIntlayerBundle.mjs","names":[],"sources":["../../../src/loadDictionaries/getIntlayerBundle.ts"],"sourcesContent":["import { readFile } from 'node:fs/promises';\nimport { builtinModules, createRequire } from 'node:module';\nimport { join } from 'node:path';\nimport { bundleFile, type ESBuildPlugin } from '@intlayer/config/file';\nimport {\n configESMxCJSRequire,\n getProjectRequire,\n isESModule,\n} from '@intlayer/config/utils';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\n/**\n * Rewrites selected bare specifiers (and any of their subpaths) to absolute file paths,\n * using the provided localeRequire (either createRequire(import.meta.url) or require).\n *\n * Example:\n * rewritePathsPlugin([\"@intlayer/config\", \"@intlayer/core\"], localeRequire)\n * …will also rewrite \"@intlayer/core/file\" etc.\n */\nconst rewritePathsPlugin = (\n replaceModules: Record<string, string>,\n excludeModules?: string[]\n): ESBuildPlugin => {\n return {\n name: 'rewrite-paths',\n setup(build) {\n build.onResolve({ filter: /.*/ }, (args) => {\n const exact = replaceModules[args.path];\n\n if (excludeModules?.includes(args.path)) {\n return null;\n }\n\n if (exact) {\n return {\n path: exact,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n\n // Optional: support subpaths like \"@intlayer/core/xyz\"\n for (const key of Object.keys(replaceModules)) {\n if (args.path === key || args.path.startsWith(`${key}/`)) {\n const sub = args.path.slice(key.length); // '' or '/...'\n return {\n path: replaceModules[key] + sub,\n namespace: 'intlayer-replace-modules',\n external: true, // ← prevents onLoad requirement\n };\n }\n }\n });\n },\n };\n};\n\n/**\n * Get the intlayer bundle to embed @intlayer/core and be able to mock @intlayer/config/built to mock the configuration file.\n */\nexport const getIntlayerBundle = async (configuration: IntlayerConfig) => {\n const rootRequire = getProjectRequire(configuration.system.baseDir);\n const configPackageRequire = configESMxCJSRequire;\n const localRequire = isESModule ? createRequire(import.meta.url) : require;\n\n const configurationPath = join(\n configuration.system.configDir,\n `configuration.cjs`\n );\n\n const replaceModules = {\n defu: configPackageRequire.resolve('defu'),\n esbuild: configPackageRequire.resolve('esbuild'),\n '@intlayer/config/built': configurationPath,\n '@intlayer/config/utils': localRequire.resolve('@intlayer/config/utils'),\n '@intlayer/config/client': localRequire.resolve('@intlayer/config/client'),\n '@intlayer/config/logger': localRequire.resolve('@intlayer/config/logger'),\n '@intlayer/core/file': localRequire.resolve('@intlayer/core/file'),\n };\n\n const filePath = rootRequire.resolve('intlayer');\n const code = await readFile(filePath, 'utf-8');\n\n const output = await bundleFile(code, filePath, {\n external: [\n ...builtinModules,\n ...builtinModules.map((mod) => `node:${mod}`),\n ],\n minify: true,\n plugins: [rewritePathsPlugin(replaceModules)],\n });\n\n return output ?? '';\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,sBACJ,gBACA,mBACkB;AAClB,QAAO;EACL,MAAM;EACN,MAAM,OAAO;AACX,SAAM,UAAU,EAAE,QAAQ,MAAM,GAAG,SAAS;IAC1C,MAAM,QAAQ,eAAe,KAAK;AAElC,QAAI,gBAAgB,SAAS,KAAK,KAAK,CACrC,QAAO;AAGT,QAAI,MACF,QAAO;KACL,MAAM;KACN,WAAW;KACX,UAAU;KACX;AAIH,SAAK,MAAM,OAAO,OAAO,KAAK,eAAe,CAC3C,KAAI,KAAK,SAAS,OAAO,KAAK,KAAK,WAAW,GAAG,IAAI,GAAG,EAAE;KACxD,MAAM,MAAM,KAAK,KAAK,MAAM,IAAI,OAAO;AACvC,YAAO;MACL,MAAM,eAAe,OAAO;MAC5B,WAAW;MACX,UAAU;MACX;;KAGL;;EAEL;;;;;AAMH,MAAa,oBAAoB,OAAO,kBAAkC;CACxE,MAAM,cAAc,kBAAkB,cAAc,OAAO,QAAQ;CACnE,MAAM,uBAAuB;CAC7B,MAAM,eAAe,aAAa,cAAc,OAAO,KAAK,IAAI;CAEhE,MAAM,oBAAoB,KACxB,cAAc,OAAO,WACrB,oBACD;CAED,MAAM,iBAAiB;EACrB,MAAM,qBAAqB,QAAQ,OAAO;EAC1C,SAAS,qBAAqB,QAAQ,UAAU;EAChD,0BAA0B;EAC1B,0BAA0B,aAAa,QAAQ,yBAAyB;EACxE,2BAA2B,aAAa,QAAQ,0BAA0B;EAC1E,2BAA2B,aAAa,QAAQ,0BAA0B;EAC1E,uBAAuB,aAAa,QAAQ,sBAAsB;EACnE;CAED,MAAM,WAAW,YAAY,QAAQ,WAAW;AAYhD,QATe,MAAM,WAFR,MAAM,SAAS,UAAU,QAAQ,EAER,UAAU;EAC9C,UAAU,CACR,GAAG,gBACH,GAAG,eAAe,KAAK,QAAQ,QAAQ,MAAM,CAC9C;EACD,QAAQ;EACR,SAAS,CAAC,mBAAmB,eAAe,CAAC;EAC9C,CAAC,IAEe"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { buildBrowserConfiguration } from "@intlayer/config/node";
|
|
2
|
+
|
|
3
|
+
//#region src/writeConfiguration/generateConfigurationContent.ts
|
|
4
|
+
const generateConfigurationContent = (configuration, format) => {
|
|
5
|
+
const { internationalization, routing, editor, log, metadata } = buildBrowserConfiguration(configuration);
|
|
6
|
+
let content = "";
|
|
7
|
+
content += `const internationalization = ${JSON.stringify(internationalization, null, 2)};\n`;
|
|
8
|
+
content += `const routing = ${JSON.stringify(routing, null, 2)};\n`;
|
|
9
|
+
content += `const editor = ${JSON.stringify(editor, null, 2)};\n`;
|
|
10
|
+
content += `const log = ${JSON.stringify(log, null, 2)};\n`;
|
|
11
|
+
content += `const metadata = ${JSON.stringify(metadata, null, 2)};\n`;
|
|
12
|
+
content += `const configuration = { internationalization, routing, editor, log, metadata };\n`;
|
|
13
|
+
if (format === "esm") {
|
|
14
|
+
content += `\nexport { internationalization, routing, editor, log, metadata, configuration };\n`;
|
|
15
|
+
content += `export default configuration;\n`;
|
|
16
|
+
} else {
|
|
17
|
+
content += `\nmodule.exports.internationalization = internationalization;\n`;
|
|
18
|
+
content += `module.exports.routing = routing;\n`;
|
|
19
|
+
content += `module.exports.editor = editor;\n`;
|
|
20
|
+
content += `module.exports.log = log;\n`;
|
|
21
|
+
content += `module.exports.metadata = metadata;\n`;
|
|
22
|
+
content += `module.exports = configuration;\n`;
|
|
23
|
+
}
|
|
24
|
+
return content;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { generateConfigurationContent };
|
|
29
|
+
//# sourceMappingURL=generateConfigurationContent.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateConfigurationContent.mjs","names":[],"sources":["../../../src/writeConfiguration/generateConfigurationContent.ts"],"sourcesContent":["import { buildBrowserConfiguration } from '@intlayer/config/node';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\nexport const generateConfigurationContent = (\n configuration: IntlayerConfig,\n format: 'cjs' | 'esm'\n): string => {\n const { internationalization, routing, editor, log, metadata } =\n buildBrowserConfiguration(configuration);\n\n let content = '';\n\n content += `const internationalization = ${JSON.stringify(internationalization, null, 2)};\\n`;\n content += `const routing = ${JSON.stringify(routing, null, 2)};\\n`;\n content += `const editor = ${JSON.stringify(editor, null, 2)};\\n`;\n content += `const log = ${JSON.stringify(log, null, 2)};\\n`;\n content += `const metadata = ${JSON.stringify(metadata, null, 2)};\\n`;\n content += `const configuration = { internationalization, routing, editor, log, metadata };\\n`;\n\n if (format === 'esm') {\n content += `\\nexport { internationalization, routing, editor, log, metadata, configuration };\\n`;\n content += `export default configuration;\\n`;\n } else {\n content += `\\nmodule.exports.internationalization = internationalization;\\n`;\n content += `module.exports.routing = routing;\\n`;\n content += `module.exports.editor = editor;\\n`;\n content += `module.exports.log = log;\\n`;\n content += `module.exports.metadata = metadata;\\n`;\n content += `module.exports = configuration;\\n`;\n }\n\n return content;\n};\n"],"mappings":";;;AAGA,MAAa,gCACX,eACA,WACW;CACX,MAAM,EAAE,sBAAsB,SAAS,QAAQ,KAAK,aAClD,0BAA0B,cAAc;CAE1C,IAAI,UAAU;AAEd,YAAW,gCAAgC,KAAK,UAAU,sBAAsB,MAAM,EAAE,CAAC;AACzF,YAAW,mBAAmB,KAAK,UAAU,SAAS,MAAM,EAAE,CAAC;AAC/D,YAAW,kBAAkB,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC;AAC7D,YAAW,eAAe,KAAK,UAAU,KAAK,MAAM,EAAE,CAAC;AACvD,YAAW,oBAAoB,KAAK,UAAU,UAAU,MAAM,EAAE,CAAC;AACjE,YAAW;AAEX,KAAI,WAAW,OAAO;AACpB,aAAW;AACX,aAAW;QACN;AACL,aAAW;AACX,aAAW;AACX,aAAW;AACX,aAAW;AACX,aAAW;AACX,aAAW;;AAGb,QAAO"}
|
|
@@ -1,38 +1,20 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { writeFileIfChanged } from "../writeFileIfChanged.mjs";
|
|
2
|
+
import { generateConfigurationContent } from "./generateConfigurationContent.mjs";
|
|
2
3
|
import { mkdir, readFile } from "node:fs/promises";
|
|
3
4
|
import { join } from "node:path";
|
|
4
|
-
import { isDeepStrictEqual } from "node:util";
|
|
5
5
|
|
|
6
6
|
//#region src/writeConfiguration/index.ts
|
|
7
|
-
const getCachedConfiguration = async (configuration) => {
|
|
8
|
-
const configurationContent = await readFile(join(configuration.system.configDir, "configuration.json"), "utf8");
|
|
9
|
-
return JSON.parse(configurationContent);
|
|
10
|
-
};
|
|
11
7
|
const isCachedConfigurationUpToDate = async (configuration) => {
|
|
12
8
|
try {
|
|
13
|
-
|
|
14
|
-
return isDeepStrictEqual(await getCachedConfiguration(configuration), cleanedConfiguration);
|
|
9
|
+
return await readFile(join(configuration.system.configDir, "configuration.mjs"), "utf8") === generateConfigurationContent(configuration, "esm");
|
|
15
10
|
} catch {
|
|
16
11
|
return null;
|
|
17
12
|
}
|
|
18
13
|
};
|
|
19
|
-
const cleanConfiguration = (configuration) => {
|
|
20
|
-
return JSON.parse(JSON.stringify({
|
|
21
|
-
internationalization: {
|
|
22
|
-
locales: configuration.internationalization.locales,
|
|
23
|
-
defaultLocale: configuration.internationalization.defaultLocale
|
|
24
|
-
},
|
|
25
|
-
editor: configuration.editor,
|
|
26
|
-
log: configuration.log,
|
|
27
|
-
routing: configuration.routing,
|
|
28
|
-
metadata: configuration.metadata
|
|
29
|
-
}));
|
|
30
|
-
};
|
|
31
14
|
const writeConfiguration = async (configuration) => {
|
|
32
|
-
const {
|
|
33
|
-
const { configDir } = system;
|
|
15
|
+
const { configDir } = configuration.system;
|
|
34
16
|
await mkdir(configDir, { recursive: true });
|
|
35
|
-
await
|
|
17
|
+
await Promise.all([writeFileIfChanged(join(configDir, "configuration.mjs"), generateConfigurationContent(configuration, "esm")), writeFileIfChanged(join(configDir, "configuration.cjs"), generateConfigurationContent(configuration, "cjs"))]);
|
|
36
18
|
};
|
|
37
19
|
|
|
38
20
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/writeConfiguration/index.ts"],"sourcesContent":["import { mkdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/writeConfiguration/index.ts"],"sourcesContent":["import { mkdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { writeFileIfChanged } from '../writeFileIfChanged';\nimport { generateConfigurationContent } from './generateConfigurationContent';\n\nexport const isCachedConfigurationUpToDate = async (\n configuration: IntlayerConfig\n): Promise<boolean | null> => {\n try {\n const mjsPath = join(configuration.system.configDir, 'configuration.mjs');\n const existingContent = await readFile(mjsPath, 'utf8');\n const expectedContent = generateConfigurationContent(configuration, 'esm');\n return existingContent === expectedContent;\n } catch {\n return null; // Can crash if file doesn't exist yet or config is not defined\n }\n};\n\nexport const writeConfiguration = async (configuration: IntlayerConfig) => {\n const { configDir } = configuration.system;\n\n await mkdir(configDir, { recursive: true });\n\n await Promise.all([\n writeFileIfChanged(\n join(configDir, 'configuration.mjs'),\n generateConfigurationContent(configuration, 'esm')\n ),\n writeFileIfChanged(\n join(configDir, 'configuration.cjs'),\n generateConfigurationContent(configuration, 'cjs')\n ),\n ]);\n};\n"],"mappings":";;;;;;AAMA,MAAa,gCAAgC,OAC3C,kBAC4B;AAC5B,KAAI;AAIF,SAFwB,MAAM,SADd,KAAK,cAAc,OAAO,WAAW,oBAAoB,EACzB,OAAO,KAC/B,6BAA6B,eAAe,MAAM;SAEpE;AACN,SAAO;;;AAIX,MAAa,qBAAqB,OAAO,kBAAkC;CACzE,MAAM,EAAE,cAAc,cAAc;AAEpC,OAAM,MAAM,WAAW,EAAE,WAAW,MAAM,CAAC;AAE3C,OAAM,QAAQ,IAAI,CAChB,mBACE,KAAK,WAAW,oBAAoB,EACpC,6BAA6B,eAAe,MAAM,CACnD,EACD,mBACE,KAAK,WAAW,oBAAoB,EACpC,6BAA6B,eAAe,MAAM,CACnD,CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IntlayerConfig } from "@intlayer/types/config";
|
|
2
|
+
|
|
3
|
+
//#region src/writeConfiguration/generateConfigurationContent.d.ts
|
|
4
|
+
declare const generateConfigurationContent: (configuration: IntlayerConfig, format: "cjs" | "esm") => string;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { generateConfigurationContent };
|
|
7
|
+
//# sourceMappingURL=generateConfigurationContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateConfigurationContent.d.ts","names":[],"sources":["../../../src/writeConfiguration/generateConfigurationContent.ts"],"mappings":";;;cAGa,4BAAA,GACX,aAAA,EAAe,cAAA,EACf,MAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/writeConfiguration/index.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/writeConfiguration/index.ts"],"mappings":";;;cAMa,6BAAA,GACX,aAAA,EAAe,cAAA,KACd,OAAA;AAAA,cAWU,kBAAA,GAA4B,aAAA,EAAe,cAAA,KAAc,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/chokidar",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.",
|
|
6
6
|
"keywords": [
|
|
@@ -110,13 +110,13 @@
|
|
|
110
110
|
},
|
|
111
111
|
"dependencies": {
|
|
112
112
|
"@babel/parser": "7.29.0",
|
|
113
|
-
"@intlayer/api": "8.
|
|
114
|
-
"@intlayer/config": "8.
|
|
115
|
-
"@intlayer/core": "8.
|
|
116
|
-
"@intlayer/dictionaries-entry": "8.
|
|
117
|
-
"@intlayer/remote-dictionaries-entry": "8.
|
|
118
|
-
"@intlayer/types": "8.
|
|
119
|
-
"@intlayer/unmerged-dictionaries-entry": "8.
|
|
113
|
+
"@intlayer/api": "8.5.0",
|
|
114
|
+
"@intlayer/config": "8.5.0",
|
|
115
|
+
"@intlayer/core": "8.5.0",
|
|
116
|
+
"@intlayer/dictionaries-entry": "8.5.0",
|
|
117
|
+
"@intlayer/remote-dictionaries-entry": "8.5.0",
|
|
118
|
+
"@intlayer/types": "8.5.0",
|
|
119
|
+
"@intlayer/unmerged-dictionaries-entry": "8.5.0",
|
|
120
120
|
"chokidar": "3.6.0",
|
|
121
121
|
"defu": "6.1.4",
|
|
122
122
|
"fast-glob": "3.3.3",
|