UNPKG

edgespec

Version:

Write Winter-CG compatible routes with filesystem routing and tons of features

88 lines (86 loc) 2.67 kB
import { devServer } from '../../chunk-325RCKH4.js'; import '../../chunk-TZHMALR4.js'; import '../../chunk-PRZQE4JB.js'; import '../../chunk-BA3OE4WS.js'; import '../../chunk-LSPDGEVE.js'; import '../../chunk-CE43QKKO.js'; import { loadConfig } from '../../chunk-TMYKADNK.js'; import '../../chunk-5WRI5ZAA.js'; import path from 'path'; import hash from 'object-hash'; import getPort from '@ava/get-port'; import { registerSharedWorker } from 'ava/plugin'; import { fileURLToPath } from 'url'; import { once } from 'events'; var getWorker = async (initialData) => { const key = hash(initialData); const dirname = path.dirname(fileURLToPath(import.meta.url)); if (process.env.IS_TESTING_EDGESPEC) { const { registerSharedTypeScriptWorker } = await import('ava-typescript-worker'); return registerSharedTypeScriptWorker({ filename: new URL( `file:${path.resolve(dirname, "worker-wrapper.ts")}#${key}` ), initialData }); } return registerSharedWorker({ filename: new URL( `file:${path.resolve(dirname, "worker-wrapper.js")}#${key}` ), initialData, supportedProtocols: ["ava-4"] }); }; var getTestServer = async (t, options) => { const rootDirectory = options?.rootDirectory ?? process.cwd(); const worker = await getWorker({ rootDirectory }); const [port] = await Promise.all([getPort(), worker.available]); let httpServerRpcCallback; const onReceivedBuildResult = (build) => { if (build.type === "failure") { console.error(build.errorMessage); t.fail("Failed to build"); } }; const serverFixture = await devServer.headless.startServer({ port, config: await loadConfig(rootDirectory), rpcChannel: { post: (data) => worker.publish(data), on: (data) => { httpServerRpcCallback = data; } }, middleware: options?.middleware ?? [], onBuildEnd(build) { onReceivedBuildResult(build); } }); const messageHandlerAbortController = new AbortController(); const messageHandlerPromise = Promise.race([ once(messageHandlerAbortController.signal, "abort"), (async () => { for await (const msg of worker.subscribe()) { httpServerRpcCallback(msg.data); if (messageHandlerAbortController.signal.aborted) { break; } } })() ]); t.teardown(async () => { messageHandlerAbortController.abort(); await messageHandlerPromise; await serverFixture.stop(); }); onReceivedBuildResult(await serverFixture.getBuildResult()); return { port }; }; export { getTestServer }; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map