import { readFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; import { describe, expect, it } from "vitest"; import { parse as parseYaml } from "yaml"; const root = join(dirname(fileURLToPath(import.meta.url)), "..", ".."); interface PackageJson { dependencies?: Record; devDependencies?: Record; peerDependencies?: Record; peerDependenciesMeta?: Record; pnpm?: unknown; version: string; } interface PnpmWorkspace { autoInstallPeers?: boolean; overrides?: Record; onlyBuiltDependencies?: string[]; allowBuilds?: Record; } function readRootPackageJson(): PackageJson { return JSON.parse(readFileSync(join(root, "package.json"), "utf8")) as PackageJson; } function readPnpmWorkspace(): PnpmWorkspace { return parseYaml(readFileSync(join(root, "pnpm-workspace.yaml"), "utf8")) as PnpmWorkspace; } describe("package install metadata", () => { it("keeps hosted pnpm installs off known warning paths", () => { const packageJson = readRootPackageJson(); const pnpmWorkspace = readPnpmWorkspace(); expect(packageJson.dependencies).not.toHaveProperty("shader-park-core"); expect(packageJson.pnpm).toBeUndefined(); expect(packageJson.devDependencies).toHaveProperty("search-insights", "^2.17.3"); expect(packageJson.peerDependencies).toMatchObject({ "shader-park-core": "^0.2.8", }); expect(packageJson.peerDependenciesMeta).toMatchObject({ "shader-park-core": { optional: true }, }); expect(pnpmWorkspace.overrides).toMatchObject({ "@bottobot/td-mcp>cheerio": "1.0.0-rc.12", vite: "6.4.3", }); expect(pnpmWorkspace.onlyBuiltDependencies).toEqual(["esbuild", "msw"]); expect(pnpmWorkspace.allowBuilds).toEqual({ esbuild: true, msw: true }); expect(pnpmWorkspace.autoInstallPeers).toBe(false); }); it("keeps bridge stale-detection versions synced to the package version", () => { const packageJson = readRootPackageJson(); const bridgeVersionPy = readFileSync(join(root, "td/modules/utils/version.py"), "utf8"); const getTdInfoTs = readFileSync(join(root, "src/tools/layer3/getTdInfo.ts"), "utf8"); expect(bridgeVersionPy).toContain(`BRIDGE_VERSION = "${packageJson.version}"`); expect(getTdInfoTs).toContain(`EXPECTED_BRIDGE_VERSION = "${packageJson.version}"`); }); });