UNPKG

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