UNPKG

@intlayer/chokidar

Version:

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

48 lines (46 loc) 2.54 kB
import { getBuiltDictionariesPath } from "./createDictionaryEntryPoint/getBuiltDictionariesPath.mjs"; import { createDictionaryEntryPoint } from "./createDictionaryEntryPoint/createDictionaryEntryPoint.mjs"; import { cleanRemovedContentDeclaration } from "./cleanRemovedContentDeclaration.mjs"; import { formatPath } from "./utils/formatter.mjs"; import { buildDictionary } from "./buildIntlayerDictionary/buildIntlayerDictionary.mjs"; import { createModuleAugmentation } from "./createType/createModuleAugmentation.mjs"; import { createTypes } from "./createType/createType.mjs"; import { loadLocalDictionaries } from "./loadDictionaries/loadLocalDictionaries.mjs"; import { getAppLogger } from "@intlayer/config/logger"; //#region src/handleContentDeclarationFileChange.ts const handleContentDeclarationFileChange = async (filePath, config) => { const appLogger = getAppLogger(config); appLogger(`Change detected: ${formatPath(filePath)}`, { isVerbose: true }); const allDictionariesPaths = await getBuiltDictionariesPath(config); const localeDictionaries = await loadLocalDictionaries(filePath, config); const dictionariesOutput = await buildDictionary(localeDictionaries, config); const updatedDictionaries = Object.values(dictionariesOutput?.mergedDictionaries ?? {}); const updatedDictionariesPaths = updatedDictionaries.map((dictionary) => dictionary.dictionaryPath); const { excludeKeys, hasRebuilt } = await cleanRemovedContentDeclaration(filePath, localeDictionaries.map((dictionary) => dictionary.key), config); const hasNewDictionaries = updatedDictionariesPaths.some((updatedDictionaryPath) => !allDictionariesPaths.includes(updatedDictionaryPath)); if (hasRebuilt || hasNewDictionaries) { if (!hasRebuilt) { await createDictionaryEntryPoint(config, { excludeKeys }); appLogger("Dictionary list built", { isVerbose: true }); } } await createTypes(updatedDictionaries.map((dictionary) => dictionary.dictionary), config); appLogger("TypeScript types built", { isVerbose: true }); if (hasNewDictionaries) { await createModuleAugmentation(config); appLogger("Module augmentation built", { isVerbose: true }); } for await (const plugin of config.plugins ?? []) { const { unmergedDictionaries, mergedDictionaries } = dictionariesOutput; await plugin.afterBuild?.({ dictionaries: { unmergedDictionaries, mergedDictionaries }, configuration: config }); } }; //#endregion export { handleContentDeclarationFileChange }; //# sourceMappingURL=handleContentDeclarationFileChange.mjs.map