import { existsSync, readdirSync, readFileSync, statSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "@suaveplan/testing/runner"; const PKG_DIR = join(__dirname, ".."); const DIST_DIR = join(PKG_DIR, "dist"); function walk(dir: string, out: string[] = []): string[] { if (!existsSync(dir)) return out; for (const name of readdirSync(dir)) { const p = join(dir, name); const s = statSync(p); if (s.isDirectory()) walk(p, out); else if (/\.(js|mjs|cjs)$/.test(p)) out.push(p); } return out; } describe("purity", () => { it("dist references no Node globals", { timeout: 30_000 }, () => { if (!existsSync(DIST_DIR)) { // dist will exist after build; skip purity if not yet built so the // test suite can still run on a fresh clone. expect(true).toBe(true); return; } const offenders: string[] = []; for (const file of walk(DIST_DIR)) { const src = readFileSync(file, "utf8"); if (/\bnode:[a-z]+\b/.test(src)) offenders.push(`${file}: node:*`); if (/\bprocess\.(env|cwd|platform)\b/.test(src)) offenders.push(`${file}: process`); if (/\bBuffer\.from\b/.test(src)) offenders.push(`${file}: Buffer`); } expect(offenders).toEqual([]); }); it("importing the package mutates no global state", { timeout: 5000, }, async () => { const filter = (keys: string[]): string[] => keys .filter( (k) => !k.startsWith("__zod") && !k.startsWith("__vitest") && !k.startsWith("__VITEST") ) .sort(); const beforeKeys = filter(Object.keys(globalThis)); const mod = await import("../src/index.js"); expect(mod.MidiControllerPlugin).toBeDefined(); const afterKeys = filter(Object.keys(globalThis)); expect(afterKeys).toEqual(beforeKeys); }); });