@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
JavaScript
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