UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

49 lines 1.48 kB
import { deepTransformNode, NodeType } from "@intlayer/core"; const filterTranlationsPlugin = (locales, fallback = void 0) => ({ id: "filter-translations-plugin", canHandle: (node) => typeof node === "object" && node?.nodeType === NodeType.Translation, transform: (node, props, deepTransformNode2) => { const translationMap = node.translation; const localesArray = Array.isArray(locales) ? locales : [locales]; const isSingleLocale = localesArray.length === 1; if (isSingleLocale) { let content = translationMap[localesArray[0]]; if (typeof content === "undefined" && fallback) { content = translationMap[fallback]; } return deepTransformNode2(content, props); } const filteredTranslationMap = Object.fromEntries( Object.entries(translationMap).filter( ([key]) => locales.includes(key) ) ); return { ...node, translation: deepTransformNode2(filteredTranslationMap, { ...props, keyPath: [ ...props.keyPath, { type: NodeType.Object, key: NodeType.Translation } ] }) }; } }); const getFilteredLocalesContent = (node, locale, nodeProps, fallback) => { const plugins = [ filterTranlationsPlugin(locale, fallback), ...nodeProps.plugins ?? [] ]; return deepTransformNode(node, { ...nodeProps, plugins }); }; export { getFilteredLocalesContent }; //# sourceMappingURL=getFilteredLocalesContent.mjs.map