testNpmFactsAreKeptWhileInstalled

tcmts.cli.npm.testNpmFactsAreKeptWhileInstalled · #pwtclxoe · term

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");
}

uses