@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
JavaScript
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
};