isInstantiated
Whether a namespace produces a runtime value (anything but types inside).
import { isTypeOnlyImport } from "#codebase/tcmts/core/ts"; import { isImportDeclaration as ts_isImportDeclaration, isInterfaceDeclaration as ts_isInterfaceDeclaration, isModuleBlock as ts_isModuleBlock, isModuleDeclaration as ts_isModuleDeclaration, isTypeAliasDeclaration as ts_isTypeAliasDeclaration, } from "typescript/ast"; import type { ModuleDeclaration as ts_ModuleDeclaration } from "typescript/ast"; export function isInstantiated(ns: ts_ModuleDeclaration): boolean { const body = ns.body; if (!body || !ts_isModuleBlock(body)) return false; return body.statements.some( (s) => !ts_isTypeAliasDeclaration(s) && !ts_isInterfaceDeclaration(s) && !(ts_isImportDeclaration(s) && isTypeOnlyImport(s.importClause)) && !(ts_isModuleDeclaration(s) && !isInstantiated(s)), ); }