UNPKG

@storm-software/cloudflare-tools

Version:

A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.

75 lines (73 loc) 2.17 kB
import { withRunExecutor } from "../../../chunk-SK3KX3JA.mjs"; import { createCliOptions } from "../../../chunk-PH3DHY4Q.mjs"; import "../../../chunk-I5P7M77J.mjs"; import "../../../chunk-LVQQJNPK.mjs"; import { __require } from "../../../chunk-B7N6WOYD.mjs"; // src/executors/serve/executor.ts import { createAsyncIterable } from "@nx/devkit/src/utils/async-iterable"; import { waitForPortOpen } from "@nx/web/src/utils/wait-for-port-open"; import { fork } from "child_process"; async function* serveExecutor(options, context, config) { if (!context?.projectName || !context?.projectsConfigurations?.projects?.[context.projectName]?.root) { throw new Error("Nx executor context was invalid"); } const projectRoot = context.projectsConfigurations.projects[context.projectName].root; const wranglerOptions = createCliOptions({ ...options }); const wranglerBin = __require.resolve("wrangler/bin/wrangler"); yield* createAsyncIterable( async ({ done, next, error }) => { process.env.PWD = projectRoot; const server = fork(wranglerBin, ["dev", ...wranglerOptions], { cwd: projectRoot, stdio: "inherit" }); server.once("exit", (code) => { if (code === 0) { done(); } else { error(new Error(`Cloudflare worker exited with code ${code}`)); } }); const killServer = () => { if (server.connected) { server.kill("SIGTERM"); } }; process.on("exit", () => killServer()); process.on("SIGINT", () => killServer()); process.on("SIGTERM", () => killServer()); process.on("SIGHUP", () => killServer()); await waitForPortOpen(options.port ?? 4500); next({ success: true, baseUrl: `http://localhost:${options.port}` }); } ); return { success: true }; } var executor_default = withRunExecutor( "Cloudflare Serve executor", serveExecutor, { skipReadingConfig: false, hooks: { applyDefaultOptions: (options) => { options.port ??= 4500; return options; } } } ); export { executor_default as default, serveExecutor };