import { describe, expect, it } from "@effect/vitest";import { join } from "node:path";import { WORKER_BUNDLER_DIRNAME, WORKER_BUNDLER_RUNTIME_FILES, missingWorkerBundlerFiles,} from "./worker-bundler-artifact";const STAGED_DIR = join("/opt/executor/bin", WORKER_BUNDLER_DIRNAME);/** An existence probe that reports only the given POSIX-relative paths. */const staged = (...relatives: readonly string[]) => (path: string): boolean => relatives.some((relative) => path === join(STAGED_DIR, ...relative.split("/")));describe("missingWorkerBundlerFiles", () => { it("reports nothing when the full artifact is staged", () => { expect(missingWorkerBundlerFiles(STAGED_DIR, staged(...WORKER_BUNDLER_RUNTIME_FILES))).toEqual( [], ); }); it("reports every file when the directory is empty", () => { expect(missingWorkerBundlerFiles(STAGED_DIR, () => false)).toEqual([ ...WORKER_BUNDLER_RUNTIME_FILES, ]); }); // The regression this whole seam exists for: the packaged daemon reads the // wasm from disk beside the entry. A copy that brought the JS but dropped the // wasm used to pass the build and fail on the user's machine at startup. it("reports the esbuild wasm when only the JS entrypoints are staged", () => { expect( missingWorkerBundlerFiles(STAGED_DIR, staged("dist/index.js", "dist/index.bundled.js")), ).toEqual(["dist/esbuild.wasm"]); }); // `index.bundled.js` is the file consumers load — the package's own // `dist/index.js` still has bare imports nothing can resolve inside the // compiled binary. Staging index.js alone is not enough. it("reports the packed entry when only the unbundled package entry is staged", () => { expect( missingWorkerBundlerFiles(STAGED_DIR, staged("dist/index.js", "dist/esbuild.wasm")), ).toEqual(["dist/index.bundled.js"]); }); it("names files relative to the staged directory so errors are quotable", () => { for (const relative of WORKER_BUNDLER_RUNTIME_FILES) { expect(relative.startsWith("dist/")).toBe(true); } }); it("requires the packed entry and the wasm, not just the package entry", () => { expect(WORKER_BUNDLER_RUNTIME_FILES).toContain("dist/index.bundled.js"); expect(WORKER_BUNDLER_RUNTIME_FILES).toContain("dist/esbuild.wasm"); });});
import { describe, expect, it } from "@effect/vitest";
import { join } from "node:path";
import {
WORKER_BUNDLER_DIRNAME,
WORKER_BUNDLER_RUNTIME_FILES,
missingWorkerBundlerFiles,
} from "./worker-bundler-artifact";
const STAGED_DIR = join("/opt/executor/bin", WORKER_BUNDLER_DIRNAME);
/** An existence probe that reports only the given POSIX-relative paths. */
const staged =
(...relatives: readonly string[]) =>
(path: string): boolean =>
relatives.some((relative) => path === join(STAGED_DIR, ...relative.split("/")));
describe("missingWorkerBundlerFiles", () => {
it("reports nothing when the full artifact is staged", () => {
expect(missingWorkerBundlerFiles(STAGED_DIR, staged(...WORKER_BUNDLER_RUNTIME_FILES))).toEqual(
[],
);
});
it("reports every file when the directory is empty", () => {
expect(missingWorkerBundlerFiles(STAGED_DIR, () => false)).toEqual([
...WORKER_BUNDLER_RUNTIME_FILES,
]);
});
// The regression this whole seam exists for: the packaged daemon reads the
// wasm from disk beside the entry. A copy that brought the JS but dropped the
// wasm used to pass the build and fail on the user's machine at startup.
it("reports the esbuild wasm when only the JS entrypoints are staged", () => {
expect(
missingWorkerBundlerFiles(STAGED_DIR, staged("dist/index.js", "dist/index.bundled.js")),
).toEqual(["dist/esbuild.wasm"]);
});
// `index.bundled.js` is the file consumers load — the package's own
// `dist/index.js` still has bare imports nothing can resolve inside the
// compiled binary. Staging index.js alone is not enough.
it("reports the packed entry when only the unbundled package entry is staged", () => {
expect(
missingWorkerBundlerFiles(STAGED_DIR, staged("dist/index.js", "dist/esbuild.wasm")),
).toEqual(["dist/index.bundled.js"]);
});
it("names files relative to the staged directory so errors are quotable", () => {
for (const relative of WORKER_BUNDLER_RUNTIME_FILES) {
expect(relative.startsWith("dist/")).toBe(true);
}
});
it("requires the packed entry and the wasm, not just the package entry", () => {
expect(WORKER_BUNDLER_RUNTIME_FILES).toContain("dist/index.bundled.js");
expect(WORKER_BUNDLER_RUNTIME_FILES).toContain("dist/esbuild.wasm");
});
});