dynamicImportClassifier

tcmts.core.analyze.dynamicImportClassifier · #m3q3nnzq · term · runs on the server

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

used by