first commit
This commit is contained in:
115
node_modules/@n8n/node-cli/dist/commands/dev/utils.js
generated
vendored
Normal file
115
node_modules/@n8n/node-cli/dist/commands/dev/utils.js
generated
vendored
Normal file
@@ -0,0 +1,115 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.commands = commands;
|
||||
exports.readPackageName = readPackageName;
|
||||
const node_child_process_1 = require("node:child_process");
|
||||
const promises_1 = __importDefault(require("node:fs/promises"));
|
||||
const json_1 = require("../../utils/json");
|
||||
function commands() {
|
||||
const childProcesses = [];
|
||||
let isShuttingDown = false;
|
||||
const registerChild = (child) => {
|
||||
childProcesses.push(child);
|
||||
};
|
||||
const killChild = (child, signal) => {
|
||||
if (!child.killed) {
|
||||
child.kill(signal);
|
||||
}
|
||||
};
|
||||
const forceKillAllChildren = () => {
|
||||
childProcesses.forEach((child) => killChild(child, 'SIGKILL'));
|
||||
process.exit(1);
|
||||
};
|
||||
const gracefulShutdown = (signal) => {
|
||||
if (childProcesses.length === 0) {
|
||||
process.exit();
|
||||
return;
|
||||
}
|
||||
let exitedCount = 0;
|
||||
const totalChildren = childProcesses.length;
|
||||
const forceExitTimer = setTimeout(forceKillAllChildren, 5000);
|
||||
const onChildExit = () => {
|
||||
exitedCount++;
|
||||
if (exitedCount === totalChildren) {
|
||||
clearTimeout(forceExitTimer);
|
||||
process.exit();
|
||||
}
|
||||
};
|
||||
childProcesses.forEach((child) => {
|
||||
if (!child.killed) {
|
||||
child.once('exit', onChildExit);
|
||||
killChild(child, signal);
|
||||
setTimeout(() => killChild(child, 'SIGKILL'), 5000);
|
||||
}
|
||||
else {
|
||||
onChildExit();
|
||||
}
|
||||
});
|
||||
};
|
||||
const handleSignal = (signal) => {
|
||||
if (isShuttingDown) {
|
||||
console.log('\nForce killing processes...');
|
||||
forceKillAllChildren();
|
||||
return;
|
||||
}
|
||||
isShuttingDown = true;
|
||||
if (signal === 'SIGINT') {
|
||||
console.log('\nShutting down gracefully... (press Ctrl+C again to force quit)');
|
||||
}
|
||||
gracefulShutdown(signal);
|
||||
};
|
||||
process.on('SIGINT', () => handleSignal('SIGINT'));
|
||||
process.on('SIGTERM', () => handleSignal('SIGTERM'));
|
||||
const stripAnsiCodes = (input) => input
|
||||
.replace(/\x1Bc/g, '')
|
||||
.replace(/\x1B\[2J/g, '')
|
||||
.replace(/\x1B\[3J/g, '')
|
||||
.replace(/\x1B\[H/g, '')
|
||||
.replace(/\x1B\[0?m/g, '');
|
||||
const createLogger = (name, color, allowOutput) => (text) => {
|
||||
if (allowOutput && !allowOutput(text))
|
||||
return;
|
||||
const prefix = name ? (color ? color(`[${name}]`) : `[${name}]`) : '';
|
||||
console.log(prefix ? `${prefix} ${text}` : text);
|
||||
};
|
||||
const processOutput = (data, logger) => {
|
||||
data
|
||||
.toString()
|
||||
.split('\n')
|
||||
.map((line) => stripAnsiCodes(line).trim())
|
||||
.filter(Boolean)
|
||||
.forEach(logger);
|
||||
};
|
||||
const runPersistentCommand = (cmd, args, opts = {}) => {
|
||||
const child = (0, node_child_process_1.spawn)(cmd, args, {
|
||||
cwd: opts.cwd,
|
||||
env: { ...process.env, ...opts.env },
|
||||
stdio: ['inherit', 'pipe', 'pipe'],
|
||||
shell: process.platform === 'win32',
|
||||
});
|
||||
registerChild(child);
|
||||
const logger = createLogger(opts.name, opts.color, opts.allowOutput);
|
||||
const handleOutput = (data) => processOutput(data, logger);
|
||||
child.stdout?.on('data', handleOutput);
|
||||
child.stderr?.on('data', handleOutput);
|
||||
child.on('close', (code) => {
|
||||
if (!isShuttingDown) {
|
||||
console.log(`${opts.name ?? cmd} exited with code ${code}`);
|
||||
process.exit(code ?? 0);
|
||||
}
|
||||
});
|
||||
return child;
|
||||
};
|
||||
return {
|
||||
runPersistentCommand,
|
||||
};
|
||||
}
|
||||
async function readPackageName() {
|
||||
return await promises_1.default
|
||||
.readFile('package.json', 'utf-8')
|
||||
.then((packageJson) => (0, json_1.jsonParse)(packageJson)?.name ?? 'unknown');
|
||||
}
|
||||
//# sourceMappingURL=utils.js.map
|
||||
Reference in New Issue
Block a user