import { describe, expect, it } from "bun:test"; import { packages, rewriteManifest } from "./ci-release-publish"; describe("published manifest topology", () => { it("repoints omptype runtime entries to dist/js with a bun source condition", async () => { const pkg = packages.find(entry => entry.dir === "packages/omptype"); if (!pkg) throw new Error("omptype missing from publish set"); expect(pkg.publishJs).toBe(true); const manifest = await rewriteManifest(pkg, false); expect(manifest.main).toBe("./dist/js/index.js"); expect(manifest.types).toBe("./dist/types/index.d.ts"); expect(manifest.files).toContain("dist/js"); expect(manifest.files).toContain("dist/types"); // `src` must stay packed — the `bun` condition resolves into it. expect(manifest.files).toContain("src"); expect(manifest.exports).toEqual({ ".": { types: "./dist/types/index.d.ts", bun: "./src/index.ts", default: "./dist/js/index.js", }, "./*": { types: "./dist/types/*.d.ts", bun: "./src/*.ts", default: "./dist/js/*.js", }, "./*.js": { types: "./dist/types/*.d.ts", bun: "./src/*.ts", default: "./dist/js/*.js", }, }); }); it("keeps source-runtime packages on src with only types repointed", async () => { const pkg = packages.find(entry => entry.dir === "packages/utils"); if (!pkg) throw new Error("utils missing from publish set"); const manifest = await rewriteManifest(pkg, false); expect(manifest.main).toBe("./src/index.ts"); expect(manifest.exports).toEqual({ ".": { types: "./dist/types/index.d.ts", import: "./src/index.ts", }, "./*": { types: "./dist/types/*.d.ts", import: "./src/*.ts", }, "./*.js": "./src/*.ts", }); }); });