UNPKG

@intlayer/chokidar

Version:

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

128 lines (126 loc) 6.6 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); const require_filterInvalidDictionaries = require('../filterInvalidDictionaries.cjs'); const require_loadDictionaries_loadContentDeclaration = require('./loadContentDeclaration.cjs'); const require_formatDictionary = require('../formatDictionary.cjs'); const require_loadDictionaries_loadRemoteDictionaries = require('./loadRemoteDictionaries.cjs'); const require_loadDictionaries_log = require('./log.cjs'); let _intlayer_config_logger = require("@intlayer/config/logger"); let _intlayer_config_colors = require("@intlayer/config/colors"); _intlayer_config_colors = require_runtime.__toESM(_intlayer_config_colors); //#region src/loadDictionaries/loadDictionaries.ts let loadDictionariesStatus = []; const logger = new require_loadDictionaries_log.DictionariesLogger(); const setLoadDictionariesStatus = (statuses) => { const updated = [...loadDictionariesStatus]; for (const incoming of statuses) { const index = updated.findIndex((s) => s.dictionaryKey === incoming.dictionaryKey && s.type === incoming.type); if (index >= 0) updated[index] = incoming; else updated.push(incoming); } loadDictionariesStatus = updated; logger.update(statuses); return updated; }; const iconFor = (status) => { switch (status) { case "built": case "imported": case "fetched": return "✔"; case "error": return "✖"; default: return "⏲"; } }; const colorFor = (status) => { switch (status) { case "built": case "imported": case "fetched": return _intlayer_config_colors.GREEN; case "error": return _intlayer_config_colors.RED; default: return _intlayer_config_colors.BLUE; } }; const printSummary = (configuration) => { if (configuration.log.mode !== "verbose") return; const appLogger = (0, _intlayer_config_logger.getAppLogger)(configuration); const byKey = /* @__PURE__ */ new Map(); for (const status of loadDictionariesStatus) { const rec = byKey.get(status.dictionaryKey) ?? {}; if (status.type === "local") rec.local = status.status; if (status.type === "remote") rec.remote = status.status; byKey.set(status.dictionaryKey, rec); } const keys = Array.from(byKey.keys()).sort((a, b) => a.localeCompare(b)); let maxLocalLabelLen = 0; for (const key of keys) { const rec = byKey.get(key); if (rec.local) { const visibleLocal = `[local: ${iconFor(rec.local)} ${rec.local}]`; if (visibleLocal.length > maxLocalLabelLen) maxLocalLabelLen = visibleLocal.length; } } for (const key of keys) { const rec = byKey.get(key); const labels = []; if (rec.local) { const inner = (0, _intlayer_config_logger.colorize)(`${iconFor(rec.local)} ${rec.local}`, colorFor(rec.local)); const coloredLocal = `${_intlayer_config_colors.GREY}[` + (0, _intlayer_config_logger.colorize)("local: ", _intlayer_config_colors.GREY) + inner + `${_intlayer_config_colors.GREY}]${_intlayer_config_colors.RESET}`; const visibleLocal = `[local: ${iconFor(rec.local)} ${rec.local}]`; const pad = Math.max(0, maxLocalLabelLen - visibleLocal.length); labels.push(coloredLocal + " ".repeat(pad)); } else labels.push(" ".repeat(maxLocalLabelLen)); if (rec.remote) { const inner = (0, _intlayer_config_logger.colorize)(`${iconFor(rec.remote)} ${rec.remote}`, colorFor(rec.remote)); labels.push(`${_intlayer_config_colors.GREY}[` + (0, _intlayer_config_logger.colorize)("distant: ", _intlayer_config_colors.GREY) + inner + `${_intlayer_config_colors.GREY}]${_intlayer_config_colors.RESET}`); } appLogger(` - ${(0, _intlayer_config_logger.colon)((0, _intlayer_config_logger.colorizeKey)(key), { colSize: keys })} ${labels.join(" ")}`); } }; const loadDictionaries = async (contentDeclarationsPaths, configuration) => { const { plugins } = configuration; const loadDictionariesStartTime = Date.now(); (0, _intlayer_config_logger.getAppLogger)(configuration)("Dictionaries:", { isVerbose: true }); const loadPluginDictionariesPromise = (await Promise.all(plugins ?? [])).filter((plugin) => plugin.loadDictionaries).map(async (plugin) => { try { return await plugin.loadDictionaries?.({ configuration }) ?? []; } catch (error) { logger.setPluginError(error); return []; } }); const pluginDictionaries = await Promise.all(loadPluginDictionariesPromise).then((dictionaries) => dictionaries.flat()).then((dictionaries) => require_filterInvalidDictionaries.filterInvalidDictionaries(dictionaries, configuration)).then((dictionaries) => require_formatDictionary.formatDictionaries(dictionaries)); logger.setPluginTotal(pluginDictionaries.length); logger.setPluginDone(pluginDictionaries.length); const pluginDictionariesTime = Date.now(); const localDictionaries = await require_loadDictionaries_loadContentDeclaration.loadContentDeclarations(Array.isArray(contentDeclarationsPaths) ? contentDeclarationsPaths : [contentDeclarationsPaths], configuration, setLoadDictionariesStatus).then((dictionaries) => require_filterInvalidDictionaries.filterInvalidDictionaries(dictionaries, configuration)).then((dictionaries) => require_formatDictionary.formatDictionaries(dictionaries)); const localDictionariesTime = Date.now(); setLoadDictionariesStatus(localDictionaries.map((dictionary) => ({ dictionaryKey: dictionary.key, type: "local", status: "built" }))); const hasRemoteDictionaries = Boolean(configuration.editor.clientId && configuration.editor.clientSecret); if (hasRemoteDictionaries) logger.setExpectRemote(true); let remoteDictionaries = []; if (hasRemoteDictionaries) remoteDictionaries = await require_loadDictionaries_loadRemoteDictionaries.loadRemoteDictionaries(configuration, setLoadDictionariesStatus, { onStartRemoteCheck: () => logger.startRemoteCheck(), onStopRemoteCheck: () => logger.stopRemoteCheck(), onError: (e) => logger.setRemoteError(e) }).then((dictionaries) => require_filterInvalidDictionaries.filterInvalidDictionaries(dictionaries, configuration)).then((dictionaries) => require_formatDictionary.formatDictionaries(dictionaries)); const remoteDictionariesTime = Date.now(); logger.finish(); printSummary(configuration); return { localDictionaries, remoteDictionaries, pluginDictionaries, time: { localDictionaries: localDictionariesTime - pluginDictionariesTime, remoteDictionaries: remoteDictionariesTime - localDictionariesTime, pluginDictionaries: pluginDictionariesTime - loadDictionariesStartTime } }; }; //#endregion exports.loadDictionaries = loadDictionaries; //# sourceMappingURL=loadDictionaries.cjs.map