UNPKG

@storm-stack/core

Version:

A build toolkit and runtime used by Storm Software in TypeScript applications

96 lines (94 loc) 3.43 kB
import { listExports } from './chunk-HQNYXPKX.js'; import { parseAst } from './chunk-EMQ6Z6RZ.js'; import { writeFile } from './chunk-2LIG4LH7.js'; import { __name } from './chunk-43IZMM3W.js'; import { LogLevelLabel } from '@storm-software/config-tools/types'; import { createDirectory } from '@stryke/fs/helpers'; import { throttle } from '@stryke/helpers/throttle'; import { StormJSON } from '@stryke/json/storm-json'; import { joinPaths, existsSync, findFilePath } from '@stryke/path/index'; import { isSetString } from '@stryke/type-checks/is-set-string'; import { createUnimport as createUnimport$1 } from 'unimport'; var lastImportsDump; var DEFAULT_UNIMPORT_CONFIG = { commentsDisable: [ "@unimport-disable", "@imports-disable", "@storm-disable", "@storm-ignore" ], commentsDebug: [ "@unimport-debug", "@imports-debug", "@storm-debug" ], injectAtEnd: true }; function createUnimport(context) { context.log(LogLevelLabel.TRACE, "Creating Unimport context with Storm Stack presets"); let unimport = createUnimport$1({ ...DEFAULT_UNIMPORT_CONFIG, presets: [] }); async function refreshRuntimeImports() { const presets = []; for (const id of context.vfs.runtimeIdMap.keys()) { const contents = await context.vfs.readFile(id); if (contents) { context.log(LogLevelLabel.TRACE, `Processing exports from runtime file: ${id}`); const importNames = listExports(parseAst(contents)).filter((importName) => !presets.some((preset) => preset?.imports && !preset?.imports.some((presetImport) => isSetString(presetImport) && presetImport === importName || Array.isArray(presetImport) && presetImport[0] === importName))); if (importNames.length > 0) { presets.push({ imports: importNames, from: id }); } } } unimport = createUnimport$1({ ...DEFAULT_UNIMPORT_CONFIG, presets, virtualImports: Array.from(context.vfs.runtimeIdMap.keys()) }); await unimport.init(); } __name(refreshRuntimeImports, "refreshRuntimeImports"); async function dumpImports() { context.log(LogLevelLabel.TRACE, "Dumping import file..."); const items = await unimport.getImports(); const importDumpFile = joinPaths(context.dataPath, "imports-dump.json"); if (!existsSync(findFilePath(importDumpFile))) { await createDirectory(findFilePath(importDumpFile)); } context.log(LogLevelLabel.TRACE, `Writing imports-dump JSON file: ${importDumpFile}`); const content = StormJSON.stringify(items); if (content.trim() !== lastImportsDump?.trim()) { lastImportsDump = content; await writeFile(context.log, importDumpFile, content); } } __name(dumpImports, "dumpImports"); const dumpImportsThrottled = throttle(dumpImports, 500); async function injectImports(source) { const result = await unimport.injectImports(source.code, source.id); if (!source.code.hasChanged()) { return source; } await dumpImportsThrottled(); return { ...source, code: result.s }; } __name(injectImports, "injectImports"); return { ...unimport, dumpImports: dumpImportsThrottled, injectImports, refreshRuntimeImports }; } __name(createUnimport, "createUnimport"); export { createUnimport }; //# sourceMappingURL=chunk-KRRKXJET.js.map //# sourceMappingURL=chunk-KRRKXJET.js.map