@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
104 lines (102 loc) • 6.69 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
const require_createDictionaryEntryPoint_createDictionaryEntryPoint = require('./createDictionaryEntryPoint/createDictionaryEntryPoint.cjs');
const require_buildIntlayerDictionary_buildIntlayerDictionary = require('./buildIntlayerDictionary/buildIntlayerDictionary.cjs');
const require_utils_runOnce = require('./utils/runOnce.cjs');
const require_createType_createModuleAugmentation = require('./createType/createModuleAugmentation.cjs');
const require_createType_createType = require('./createType/createType.cjs');
const require_listDictionariesPath = require('./listDictionariesPath.cjs');
const require_loadDictionaries_loadDictionaries = require('./loadDictionaries/loadDictionaries.cjs');
const require_buildIntlayerDictionary_writeRemoteDictionary = require('./buildIntlayerDictionary/writeRemoteDictionary.cjs');
const require_cleanOutputDir = require('./cleanOutputDir.cjs');
const require_writeConfiguration_index = require('./writeConfiguration/index.cjs');
let node_fs_promises = require("node:fs/promises");
let node_path = require("node:path");
let _intlayer_config_logger = require("@intlayer/config/logger");
let _intlayer_config_utils = require("@intlayer/config/utils");
let _intlayer_config_colors = require("@intlayer/config/colors");
_intlayer_config_colors = require_runtime.__toESM(_intlayer_config_colors);
let _intlayer_config_package_json = require("@intlayer/config/package.json");
_intlayer_config_package_json = require_runtime.__toESM(_intlayer_config_package_json);
//#region src/prepareIntlayer.ts
const DEFAULT_PREPARE_INTLAYER_OPTIONS = {
clean: false,
env: "dev",
format: ["cjs", "esm"],
cacheTimeoutMs: 1e3 * 60 * 60
};
const prepareIntlayer = async (configuration, options) => {
const appLogger = (0, _intlayer_config_logger.getAppLogger)(configuration);
const sentinelPath = (0, node_path.join)(configuration.system.cacheDir, "intlayer-prepared.lock");
const versionCache = (0, _intlayer_config_utils.cacheDisk)(configuration, ["intlayer-version"]);
const intlayerCacheVersion = await versionCache.get();
const isCorrectVersion = Boolean(intlayerCacheVersion && intlayerCacheVersion === _intlayer_config_package_json.default.version);
const isConfigSimilar = await require_writeConfiguration_index.isCachedConfigurationUpToDate(configuration);
const dictionariesWithStats = await require_listDictionariesPath.listDictionariesWithStats(configuration);
let isDictionaryChanged = false;
try {
const sentinelStats = await (0, node_fs_promises.stat)(sentinelPath);
isDictionaryChanged = dictionariesWithStats.some((dictionary) => dictionary.stats.mtime.getTime() > sentinelStats.mtime.getTime());
} catch {}
const hasPluginLoadDictionaries = (await Promise.all(configuration.plugins ?? [])).some((plugin) => Boolean(plugin.loadDictionaries));
const { clean, format, forceRun, onIsCached, cacheTimeoutMs, env } = {
...DEFAULT_PREPARE_INTLAYER_OPTIONS,
forceRun: !isCorrectVersion || !isConfigSimilar || isDictionaryChanged || hasPluginLoadDictionaries,
...options ?? {}
};
await require_utils_runOnce.runOnce(sentinelPath, async () => {
if (clean || !isCorrectVersion) await require_cleanOutputDir.cleanOutputDir(configuration);
await versionCache.set(_intlayer_config_package_json.default.version);
const preparationStartMs = Date.now();
appLogger(["Preparing Intlayer", (0, _intlayer_config_logger.colorize)(`(v${_intlayer_config_package_json.default.version})`, _intlayer_config_colors.GREY_DARK)]);
await require_writeConfiguration_index.writeConfiguration(configuration);
const configurationWrittenTime = Date.now();
appLogger(["Configuration written", (0, _intlayer_config_logger.colorize)(`(${configurationWrittenTime - preparationStartMs}ms)`, _intlayer_config_colors.GREY_DARK)], { isVerbose: true });
const dictionaries = await require_loadDictionaries_loadDictionaries.loadDictionaries(dictionariesWithStats.map((dictionary) => dictionary.path), configuration);
const dictionariesLoadedTime = Date.now();
appLogger(["Content loaded", (0, _intlayer_config_logger.colorize)([dictionaries.remoteDictionaries.length + dictionaries.pluginDictionaries.length > 0 ? [
`(Total: ${dictionariesLoadedTime - configurationWrittenTime}ms`,
dictionaries.localDictionaries.length > 0 ? ` - Local: ${dictionaries.time.localDictionaries}ms` : "",
dictionaries.remoteDictionaries.length > 0 ? ` - Remote: ${dictionaries.time.remoteDictionaries}ms` : "",
dictionaries.pluginDictionaries.length > 0 ? ` - Plugin: ${dictionaries.time.pluginDictionaries}ms` : "",
`)`
].join("") : `(${dictionariesLoadedTime - configurationWrittenTime}ms)`].join(""), _intlayer_config_colors.GREY_DARK)], { isVerbose: true });
const dictionariesOutput = await require_buildIntlayerDictionary_buildIntlayerDictionary.buildDictionary([
...dictionaries.localDictionaries,
...dictionaries.remoteDictionaries,
...dictionaries.pluginDictionaries
], configuration, {
formats: format,
importOtherDictionaries: false,
env
});
await require_buildIntlayerDictionary_writeRemoteDictionary.writeRemoteDictionary(dictionaries.remoteDictionaries, configuration);
await require_createType_createType.createTypes(Object.values(dictionariesOutput?.mergedDictionaries ?? {}).map((dictionary) => dictionary.dictionary), configuration);
await require_createDictionaryEntryPoint_createDictionaryEntryPoint.createDictionaryEntryPoint(configuration, { formats: options?.format });
const dictionariesBuiltTime = Date.now();
appLogger(["Dictionaries built", (0, _intlayer_config_logger.colorize)(`(${dictionariesBuiltTime - preparationStartMs}ms)`, _intlayer_config_colors.GREY_DARK)]);
await require_createType_createModuleAugmentation.createModuleAugmentation(configuration);
appLogger(["Module augmentation built", (0, _intlayer_config_logger.colorize)(`(${Date.now() - dictionariesBuiltTime}ms)`, _intlayer_config_colors.GREY_DARK)], { isVerbose: true });
for await (const plugin of configuration.plugins ?? []) {
const { unmergedDictionaries, mergedDictionaries } = dictionariesOutput;
await plugin.afterBuild?.({
dictionaries: {
unmergedDictionaries,
mergedDictionaries
},
configuration
});
}
appLogger([`Done`, (0, _intlayer_config_logger.colorize)(`${Date.now() - preparationStartMs}ms`, _intlayer_config_colors.GREEN)], {
level: "info",
isVerbose: true
});
}, {
forceRun,
onIsCached,
cacheTimeoutMs
});
};
//#endregion
exports.prepareIntlayer = prepareIntlayer;
//# sourceMappingURL=prepareIntlayer.cjs.map