import { readFileSync } from "node:fs"; import { join } from "node:path"; import { describe, expect, it } from "@suaveplan/testing/runner"; describe("dep-graph", () => { it("@suaveplan/* runtime deps are exactly error + types", { timeout: 5000, }, () => { const pkg = JSON.parse( readFileSync(join(__dirname, "..", "package.json"), "utf8") ) as { dependencies?: Record; peerDependencies?: Record; }; const runtimeScoped = Object.keys(pkg.dependencies ?? {}) .filter((name) => name.startsWith("@suaveplan/")) .sort(); expect(runtimeScoped).toEqual( ["@suaveplan/error", "@suaveplan/types"].sort() ); const peerScoped = Object.keys(pkg.peerDependencies ?? {}).filter( (name) => name.startsWith("@suaveplan/") ); expect(peerScoped).toEqual([]); }); it("runtime deps are exactly the expected set (sorted)", { timeout: 5000, }, () => { const pkg = JSON.parse( readFileSync(join(__dirname, "..", "package.json"), "utf8") ) as { dependencies?: Record }; const runtime = Object.keys(pkg.dependencies ?? {}).sort(); expect(runtime).toEqual( [ "@opentelemetry/api", "@suaveplan/error", "@suaveplan/types", "tslib", "zod", ].sort() ); }); it("sideEffects is false and version is 0.1.0", { timeout: 5000 }, () => { const pkg = JSON.parse( readFileSync(join(__dirname, "..", "package.json"), "utf8") ) as { sideEffects?: boolean; version?: string }; expect(pkg.sideEffects).toBe(false); expect(pkg.version).toBe("0.1.0"); }); });