dynamicImportClassifier
uses tcmts.core.analyze.externalModule, which uses node:module
import("pkg") loads a package lazily; it's as content-addressable as a static import of the same package.
import { externalModule } from "#codebase/tcmts/core/analyze"; import type { AnalyzeHost } from "#codebase/tcmts/core/analyze"; import { TcmError } from "#codebase/tcmts/core/extract"; import type { ExtRef } from "#codebase/tcmts/core/types"; import type { Node as ts_Node } from "typescript/ast"; export function dynamicImportClassifier(file: string, host?: AnalyzeHost) { return (spec: string, at: ts_Node): ExtRef => { if ( spec === "#codebase" || spec.startsWith("#codebase/") || spec.startsWith(".") || spec.startsWith("/") ) { throw new TcmError( "dynamic `import()` of codebase or local modules isn't supported; import definitions statically", at, ); } return externalModule(spec, file, at, "*", host); }; }
uses
- tcmts.core.analyze.AnalyzeHost
- tcmts.core.analyze.externalModule
- tcmts.core.extract.TcmError
- tcmts.core.types.ExtRef