@netlify/plugin-edge-handlers
Version:
Netlify Build plugin to bundle Edge functions
82 lines (68 loc) • 1.82 kB
JavaScript
const path = require("path");
const { isDirectory } = require("path-type");
const { assemble, bundleFunctionsForCli } = require("./lib");
const build = async ({ EDGE_HANDLERS_SRC }) => {
const srcDir = path.resolve(EDGE_HANDLERS_SRC);
if (!(await isDirectory(srcDir))) {
console.log(
JSON.stringify({
code: "directory-not-found",
dir: srcDir,
success: false,
}),
);
return;
}
let mainFile;
let handlers;
try {
const result = await assemble(srcDir);
mainFile = result.mainFile;
handlers = result.handlers;
} catch (err) {
console.log(
JSON.stringify({
code: "unknown",
msg: `Failed discovering Edge Handlers: ${err.message}`,
success: false,
}),
);
return;
}
if (handlers.length === 0) {
console.log(JSON.stringify({ bundle: null, bundled: srcDir, handlers: [], success: true }));
return;
}
try {
const bundle = await bundleFunctionsForCli(mainFile);
console.log(JSON.stringify({ bundle, bundled: srcDir, handlers, success: true }));
} catch (err) {
console.log(JSON.stringify(err));
}
};
const main = async () => {
const [, bin, command, EDGE_HANDLERS_SRC] = process.argv;
const USAGE = `Usage: ${bin} build <Edge Handlers directory>`;
if (command !== "build") {
console.log(
JSON.stringify({
code: "cli",
msg: `'${command}' is not a valid CLI command\n\n${USAGE}`,
success: false,
}),
);
return;
} else if (!EDGE_HANDLERS_SRC) {
console.log(
JSON.stringify({
code: "cli",
msg: `You must specify the Edge Handlers source directory\n\n${USAGE}`,
success: false,
}),
);
return;
}
await build({ EDGE_HANDLERS_SRC });
};
main();