@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
108 lines • 4.55 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var writeDynamicDictionary_exports = {};
__export(writeDynamicDictionary_exports, {
generateDictionaryEntryPoint: () => generateDictionaryEntryPoint,
writeDynamicDictionary: () => writeDynamicDictionary
});
module.exports = __toCommonJS(writeDynamicDictionary_exports);
var import_config = require("@intlayer/config");
var import_promises = require("fs/promises");
var import_path = require("path");
var import_getFilteredLocalesContent = require('../../../getFilteredLocalesContent.cjs');
var import_formatDictionaryText = require('./formatDictionaryText.cjs');
const generateDictionaryEntryPoint = (localedDictionariesPathsRecord, format = "esm", configuration = (0, import_config.getConfiguration)()) => {
const { dynamicDictionariesDir } = configuration.content;
let content = "";
const formattedDictionaryMap = Object.entries(
localedDictionariesPathsRecord
).map(([locale, dictionary]) => {
const relativePath = (0, import_path.relative)(
dynamicDictionariesDir,
dictionary.dictionaryPath
);
if (format === "esm") {
return ` '${locale}': () => import('./${relativePath}', { assert: { type: 'json' }}).then(mod => mod.default)`;
}
return ` '${locale}': () => Promise.resolve(require('./${relativePath}.cjs'))`;
}).join(",\n");
content += `const content = {
${formattedDictionaryMap}
};
`;
if (format === "esm") content += `export default content;
`;
if (format === "cjs") content += `module.exports = content;
`;
return content;
};
const writeDynamicDictionary = async (mergedDictionaries, configuration = (0, import_config.getConfiguration)(), formats = ["cjs", "esm"]) => {
const { locales, defaultLocale } = configuration.internationalization;
const { dynamicDictionariesDir } = configuration.content;
await (0, import_promises.mkdir)((0, import_path.resolve)(dynamicDictionariesDir), { recursive: true });
let resultDictionariesPaths = {};
for await (const [key, dictionaryEntry] of Object.entries(
mergedDictionaries
)) {
if (key === "undefined") continue;
let localedDictionariesPathsRecord = {};
for await (const locale of locales) {
const localizedDictionary = {
...dictionaryEntry.dictionary,
locale,
content: (0, import_getFilteredLocalesContent.getFilteredLocalesContent)(
dictionaryEntry.dictionary.content,
locale,
{ dictionaryKey: key, keyPath: [] },
defaultLocale
)
};
const contentString = (0, import_formatDictionaryText.formatDictionaryText)(localizedDictionary);
const outputFileName = `${key}.${locale}.json`;
const resultFilePath = (0, import_path.resolve)(dynamicDictionariesDir, outputFileName);
await (0, import_promises.writeFile)(resultFilePath, contentString, "utf8").catch((err) => {
console.error(`Error creating localized ${outputFileName}:`, err);
});
localedDictionariesPathsRecord[locale] = {
dictionaryPath: resultFilePath,
dictionary: localizedDictionary
};
}
resultDictionariesPaths[key] = localedDictionariesPathsRecord;
for await (const format of formats) {
const extension = format === "cjs" ? "cjs" : "mjs";
const content = generateDictionaryEntryPoint(
localedDictionariesPathsRecord,
format,
configuration
);
await (0, import_promises.writeFile)(
(0, import_path.resolve)(dynamicDictionariesDir, `${key}.${extension}`),
content
);
}
}
return resultDictionariesPaths;
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
generateDictionaryEntryPoint,
writeDynamicDictionary
});
//# sourceMappingURL=writeDynamicDictionary.cjs.map