testNpmFactsAreKeptWhileInstalled
An installed package's facts are read once a process, and a package that's gone isn't found any more.
import { npmFacts } from "#codebase/tcmts/cli/npm"; import type { ExtRef } from "#codebase/tcmts/core/types"; import { npmAlias } from "#codebase/tcmts/loader/packages"; import assert from "node:assert/strict"; import fs from "node:fs"; import os from "node:os"; import path from "node:path"; export const testNpmFactsAreKeptWhileInstalled = () => { const cacheDir = fs.mkdtempSync(path.join(os.tmpdir(), "tcm npm kept ")); const ext: ExtRef = { module: "npm:kept@1", subpath: "", export: "load" }; const dir = path.join(cacheDir, "node_modules", npmAlias(ext.module)); fs.mkdirSync(dir, { recursive: true }); fs.writeFileSync( path.join(dir, "package.json"), JSON.stringify({ name: "kept", type: "module", main: "./index.js" }), ); fs.writeFileSync( path.join(dir, "index.js"), `import { readFileSync } from "node:fs";\nexport const load = (f) => readFileSync(f);\n`, ); const first = npmFacts(cacheDir, ext, "server"); assert.deepEqual(first?.node, ["node:fs"]); assert.equal(npmFacts(cacheDir, ext, "server"), first, "kept, not worked out again"); fs.rmSync(dir, { recursive: true }); assert.equal(npmFacts(cacheDir, ext, "server"), undefined, "gone"); }