58 lines · 1.9 KB · TypeScript
RawDownload
/* oxlint-disable executor/no-try-catch-or-throw, executor/no-error-constructor -- boundary: worker-pool test config prepares a Vite artifact before tests start */import { existsSync } from "node:fs";import { readFile } from "node:fs/promises";import { dirname, join } from "node:path";import { fileURLToPath } from "node:url"; import { cloudflareTest } from "@cloudflare/vitest-pool-workers";import { defineConfig } from "vitest/config"; const packageDir = dirname(fileURLToPath(import.meta.url));const workerBundlerDist = join(packageDir, "node_modules", "@cloudflare", "worker-bundler", "dist"); const createWorkerBundlerArtifact = async (): Promise<{  readonly source: string;  readonly wasmBase64: string;}> => {  if (    !existsSync(join(workerBundlerDist, "index.js")) ||    !existsSync(join(workerBundlerDist, "esbuild.wasm"))  ) {    throw new Error(`@cloudflare/worker-bundler dist files not found at ${workerBundlerDist}`);  }  const { build } = await import("esbuild");  const [result, wasm] = await Promise.all([    build({      entryPoints: [join(workerBundlerDist, "index.js")],      bundle: true,      format: "esm",      platform: "browser",      write: false,      external: ["./esbuild.wasm"],      logLevel: "silent",    }),    readFile(join(workerBundlerDist, "esbuild.wasm")),  ]);  const source = result.outputFiles[0]?.text;  if (source === undefined) throw new Error("failed to bundle @cloudflare/worker-bundler");  return { source, wasmBase64: wasm.toString("base64") };}; const artifact = await createWorkerBundlerArtifact(); export default defineConfig({  define: {    __WORKER_BUNDLER_SOURCE__: JSON.stringify(artifact.source),    __WORKER_BUNDLER_WASM_BASE64__: JSON.stringify(artifact.wasmBase64),  },  plugins: [    cloudflareTest({      wrangler: { configPath: "./wrangler.worker.jsonc" },    }),  ],  test: {    include: ["src/**/*.worker.test.ts"],    testTimeout: 120_000,    hookTimeout: 120_000,  },});