uawdijnntqw1x1x1
IP : 216.73.216.86
Hostname : 6.87.74.97.host.secureserver.net
Kernel : Linux 6.87.74.97.host.secureserver.net 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
emeraadmin
/
www
/
js
/
..
/
node_modules
/
parse-filepath
/
..
/
debug
/
..
/
..
/
4d695
/
foreground-child.tar
/
/
package.json000064400000004546151701445510007046 0ustar00{ "_id": "foreground-child@3.1.1", "_inBundle": true, "_location": "/npm/foreground-child", "_phantomChildren": {}, "_requiredBy": [ "/npm/glob" ], "author": { "name": "Isaac Z. Schlueter", "email": "i@izs.me", "url": "http://blog.izs.me/" }, "bugs": { "url": "https://github.com/tapjs/foreground-child/issues" }, "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" }, "description": "Run a child as if it's the foreground process. Give it stdio. Exit when it exits.", "devDependencies": { "@types/cross-spawn": "^6.0.2", "@types/node": "^18.15.11", "@types/tap": "^15.0.8", "c8": "^7.13.0", "prettier": "^2.8.6", "tap": "^16.3.4", "ts-node": "^10.9.1", "typedoc": "^0.24.2", "typescript": "^5.0.2" }, "engines": { "node": ">=14" }, "exports": { ".": { "import": { "types": "./dist/mjs/index.d.ts", "default": "./dist/mjs/index.js" }, "require": { "types": "./dist/cjs/index.d.ts", "default": "./dist/cjs/index.js" } } }, "files": [ "dist" ], "funding": { "url": "https://github.com/sponsors/isaacs" }, "homepage": "https://github.com/tapjs/foreground-child#readme", "license": "ISC", "main": "./dist/cjs/index.js", "module": "./dist/mjs/index.js", "name": "foreground-child", "prettier": { "semi": false, "printWidth": 75, "tabWidth": 2, "useTabs": false, "singleQuote": true, "jsxSingleQuote": false, "bracketSameLine": true, "arrowParens": "avoid", "endOfLine": "lf" }, "repository": { "type": "git", "url": "git+https://github.com/tapjs/foreground-child.git" }, "scripts": { "format": "prettier --write . --loglevel warn", "postversion": "npm publish", "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json && bash ./scripts/fixup.sh", "prepublishOnly": "git push origin --follow-tags", "presnap": "npm run prepare", "pretest": "npm run prepare", "preversion": "npm test", "snap": "c8 tap", "test": "c8 tap", "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts" }, "tap": { "coverage": false, "jobs": 1, "node-arg": [ "--no-warnings", "--loader", "ts-node/esm" ], "ts": false }, "types": "./dist/mjs/index.d.ts", "version": "3.1.1" } LICENSE000064400000001407151701445510005556 0ustar00The ISC License Copyright (c) 2015-2023 Isaac Z. Schlueter and Contributors Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. dist/mjs/package.json000064400000000027151701445510010570 0ustar00{ "type": "module" } dist/mjs/all-signals.js000064400000002365151701445510011055 0ustar00import constants from 'node:constants'; export const allSignals = // this is the full list of signals that Node will let us do anything with Object.keys(constants).filter(k => k.startsWith('SIG') && // https://github.com/tapjs/signal-exit/issues/21 k !== 'SIGPROF' && // no sense trying to listen for SIGKILL, it's impossible k !== 'SIGKILL'); // These are some obscure signals that are reported by kill -l // on macOS, Linux, or Windows, but which don't have any mapping // in Node.js. No sense trying if they're just going to throw // every time on every platform. // // 'SIGEMT', // 'SIGLOST', // 'SIGPOLL', // 'SIGRTMAX', // 'SIGRTMAX-1', // 'SIGRTMAX-10', // 'SIGRTMAX-11', // 'SIGRTMAX-12', // 'SIGRTMAX-13', // 'SIGRTMAX-14', // 'SIGRTMAX-15', // 'SIGRTMAX-2', // 'SIGRTMAX-3', // 'SIGRTMAX-4', // 'SIGRTMAX-5', // 'SIGRTMAX-6', // 'SIGRTMAX-7', // 'SIGRTMAX-8', // 'SIGRTMAX-9', // 'SIGRTMIN', // 'SIGRTMIN+1', // 'SIGRTMIN+10', // 'SIGRTMIN+11', // 'SIGRTMIN+12', // 'SIGRTMIN+13', // 'SIGRTMIN+14', // 'SIGRTMIN+15', // 'SIGRTMIN+16', // 'SIGRTMIN+2', // 'SIGRTMIN+3', // 'SIGRTMIN+4', // 'SIGRTMIN+5', // 'SIGRTMIN+6', // 'SIGRTMIN+7', // 'SIGRTMIN+8', // 'SIGRTMIN+9', // 'SIGSTKFLT', // 'SIGUNUSED', //# sourceMappingURL=all-signals.js.mapdist/mjs/index.js000064400000010616151701445510007754 0ustar00import { spawn as nodeSpawn, } from 'child_process'; import crossSpawn from 'cross-spawn'; import { onExit } from 'signal-exit'; import { allSignals } from './all-signals.js'; import { watchdog } from './watchdog.js'; /* c8 ignore start */ const spawn = process?.platform === 'win32' ? crossSpawn : nodeSpawn; /** * Normalizes the arguments passed to `foregroundChild`. * * Exposed for testing. * * @internal */ export const normalizeFgArgs = (fgArgs) => { let [program, args = [], spawnOpts = {}, cleanup = () => { }] = fgArgs; if (typeof args === 'function') { cleanup = args; spawnOpts = {}; args = []; } else if (!!args && typeof args === 'object' && !Array.isArray(args)) { if (typeof spawnOpts === 'function') cleanup = spawnOpts; spawnOpts = args; args = []; } else if (typeof spawnOpts === 'function') { cleanup = spawnOpts; spawnOpts = {}; } if (Array.isArray(program)) { const [pp, ...pa] = program; program = pp; args = pa; } return [program, args, { ...spawnOpts }, cleanup]; }; export function foregroundChild(...fgArgs) { const [program, args, spawnOpts, cleanup] = normalizeFgArgs(fgArgs); spawnOpts.stdio = [0, 1, 2]; if (process.send) { spawnOpts.stdio.push('ipc'); } const child = spawn(program, args, spawnOpts); const unproxySignals = proxySignals(child); const childHangup = () => { try { child.kill('SIGHUP'); /* c8 ignore start */ } catch (_) { // SIGHUP is weird on windows child.kill('SIGTERM'); } /* c8 ignore stop */ }; const removeOnExit = onExit(childHangup); const dog = watchdog(child); let done = false; child.on('close', async (code, signal) => { dog.kill('SIGKILL'); /* c8 ignore start */ if (done) { return; } /* c8 ignore stop */ done = true; const result = cleanup(code, signal); const res = isPromise(result) ? await result : result; removeOnExit(); unproxySignals(); if (res === false) return; else if (typeof res === 'string') { signal = res; code = null; } else if (typeof res === 'number') { code = res; signal = null; } if (signal) { // If there is nothing else keeping the event loop alive, // then there's a race between a graceful exit and getting // the signal to this process. Put this timeout here to // make sure we're still alive to get the signal, and thus // exit with the intended signal code. /* istanbul ignore next */ setTimeout(() => { }, 2000); try { process.kill(process.pid, signal); /* c8 ignore start */ } catch (_) { process.kill(process.pid, 'SIGTERM'); } /* c8 ignore stop */ } else { process.exit(code || 0); } }); if (process.send) { process.removeAllListeners('message'); child.on('message', (message, sendHandle) => { process.send?.(message, sendHandle); }); process.on('message', (message, sendHandle) => { child.send(message, sendHandle); }); } return child; } /** * Starts forwarding signals to `child` through `parent`. */ const proxySignals = (child) => { const listeners = new Map(); for (const sig of allSignals) { const listener = () => { // some signals can only be received, not sent try { child.kill(sig); /* c8 ignore start */ } catch (_) { } /* c8 ignore stop */ }; try { // if it's a signal this system doesn't recognize, skip it process.on(sig, listener); listeners.set(sig, listener); /* c8 ignore start */ } catch (_) { } /* c8 ignore stop */ } return () => { for (const [sig, listener] of listeners) { process.removeListener(sig, listener); } }; }; const isPromise = (o) => !!o && typeof o === 'object' && typeof o.then === 'function'; //# sourceMappingURL=index.js.mapdist/mjs/watchdog.js000064400000002202151701445510010435 0ustar00// this spawns a child process that listens for SIGHUP when the // parent process exits, and after 200ms, sends a SIGKILL to the // child, in case it did not terminate. import { spawn } from 'child_process'; const watchdogCode = String.raw ` const pid = parseInt(process.argv[1], 10) process.title = 'node (foreground-child watchdog pid=' + pid + ')' if (!isNaN(pid)) { let barked = false // keepalive const interval = setInterval(() => {}, 60000) const bark = () => { clearInterval(interval) if (barked) return barked = true process.removeListener('SIGHUP', bark) setTimeout(() => { try { process.kill(pid, 'SIGKILL') setTimeout(() => process.exit(), 200) } catch (_) {} }, 500) }) process.on('SIGHUP', bark) } `; export const watchdog = (child) => { let dogExited = false; const dog = spawn(process.execPath, ['-e', watchdogCode, String(child.pid)], { stdio: 'ignore', }); dog.on('exit', () => (dogExited = true)); child.on('exit', () => { if (!dogExited) dog.kill('SIGTERM'); }); return dog; }; //# sourceMappingURL=watchdog.js.mapdist/cjs/package.json000064400000000031151701445510010551 0ustar00{ "type": "commonjs" } dist/cjs/all-signals.js000064400000003021151701445510011031 0ustar00"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.allSignals = void 0; const node_constants_1 = __importDefault(require("node:constants")); exports.allSignals = // this is the full list of signals that Node will let us do anything with Object.keys(node_constants_1.default).filter(k => k.startsWith('SIG') && // https://github.com/tapjs/signal-exit/issues/21 k !== 'SIGPROF' && // no sense trying to listen for SIGKILL, it's impossible k !== 'SIGKILL'); // These are some obscure signals that are reported by kill -l // on macOS, Linux, or Windows, but which don't have any mapping // in Node.js. No sense trying if they're just going to throw // every time on every platform. // // 'SIGEMT', // 'SIGLOST', // 'SIGPOLL', // 'SIGRTMAX', // 'SIGRTMAX-1', // 'SIGRTMAX-10', // 'SIGRTMAX-11', // 'SIGRTMAX-12', // 'SIGRTMAX-13', // 'SIGRTMAX-14', // 'SIGRTMAX-15', // 'SIGRTMAX-2', // 'SIGRTMAX-3', // 'SIGRTMAX-4', // 'SIGRTMAX-5', // 'SIGRTMAX-6', // 'SIGRTMAX-7', // 'SIGRTMAX-8', // 'SIGRTMAX-9', // 'SIGRTMIN', // 'SIGRTMIN+1', // 'SIGRTMIN+10', // 'SIGRTMIN+11', // 'SIGRTMIN+12', // 'SIGRTMIN+13', // 'SIGRTMIN+14', // 'SIGRTMIN+15', // 'SIGRTMIN+16', // 'SIGRTMIN+2', // 'SIGRTMIN+3', // 'SIGRTMIN+4', // 'SIGRTMIN+5', // 'SIGRTMIN+6', // 'SIGRTMIN+7', // 'SIGRTMIN+8', // 'SIGRTMIN+9', // 'SIGSTKFLT', // 'SIGUNUSED', //# sourceMappingURL=all-signals.js.mapdist/cjs/index.js000064400000011560151701445510007741 0ustar00"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.foregroundChild = exports.normalizeFgArgs = void 0; const child_process_1 = require("child_process"); const cross_spawn_1 = __importDefault(require("cross-spawn")); const signal_exit_1 = require("signal-exit"); const all_signals_js_1 = require("./all-signals.js"); const watchdog_js_1 = require("./watchdog.js"); /* c8 ignore start */ const spawn = process?.platform === 'win32' ? cross_spawn_1.default : child_process_1.spawn; /** * Normalizes the arguments passed to `foregroundChild`. * * Exposed for testing. * * @internal */ const normalizeFgArgs = (fgArgs) => { let [program, args = [], spawnOpts = {}, cleanup = () => { }] = fgArgs; if (typeof args === 'function') { cleanup = args; spawnOpts = {}; args = []; } else if (!!args && typeof args === 'object' && !Array.isArray(args)) { if (typeof spawnOpts === 'function') cleanup = spawnOpts; spawnOpts = args; args = []; } else if (typeof spawnOpts === 'function') { cleanup = spawnOpts; spawnOpts = {}; } if (Array.isArray(program)) { const [pp, ...pa] = program; program = pp; args = pa; } return [program, args, { ...spawnOpts }, cleanup]; }; exports.normalizeFgArgs = normalizeFgArgs; function foregroundChild(...fgArgs) { const [program, args, spawnOpts, cleanup] = (0, exports.normalizeFgArgs)(fgArgs); spawnOpts.stdio = [0, 1, 2]; if (process.send) { spawnOpts.stdio.push('ipc'); } const child = spawn(program, args, spawnOpts); const unproxySignals = proxySignals(child); const childHangup = () => { try { child.kill('SIGHUP'); /* c8 ignore start */ } catch (_) { // SIGHUP is weird on windows child.kill('SIGTERM'); } /* c8 ignore stop */ }; const removeOnExit = (0, signal_exit_1.onExit)(childHangup); const dog = (0, watchdog_js_1.watchdog)(child); let done = false; child.on('close', async (code, signal) => { dog.kill('SIGKILL'); /* c8 ignore start */ if (done) { return; } /* c8 ignore stop */ done = true; const result = cleanup(code, signal); const res = isPromise(result) ? await result : result; removeOnExit(); unproxySignals(); if (res === false) return; else if (typeof res === 'string') { signal = res; code = null; } else if (typeof res === 'number') { code = res; signal = null; } if (signal) { // If there is nothing else keeping the event loop alive, // then there's a race between a graceful exit and getting // the signal to this process. Put this timeout here to // make sure we're still alive to get the signal, and thus // exit with the intended signal code. /* istanbul ignore next */ setTimeout(() => { }, 2000); try { process.kill(process.pid, signal); /* c8 ignore start */ } catch (_) { process.kill(process.pid, 'SIGTERM'); } /* c8 ignore stop */ } else { process.exit(code || 0); } }); if (process.send) { process.removeAllListeners('message'); child.on('message', (message, sendHandle) => { process.send?.(message, sendHandle); }); process.on('message', (message, sendHandle) => { child.send(message, sendHandle); }); } return child; } exports.foregroundChild = foregroundChild; /** * Starts forwarding signals to `child` through `parent`. */ const proxySignals = (child) => { const listeners = new Map(); for (const sig of all_signals_js_1.allSignals) { const listener = () => { // some signals can only be received, not sent try { child.kill(sig); /* c8 ignore start */ } catch (_) { } /* c8 ignore stop */ }; try { // if it's a signal this system doesn't recognize, skip it process.on(sig, listener); listeners.set(sig, listener); /* c8 ignore start */ } catch (_) { } /* c8 ignore stop */ } return () => { for (const [sig, listener] of listeners) { process.removeListener(sig, listener); } }; }; const isPromise = (o) => !!o && typeof o === 'object' && typeof o.then === 'function'; //# sourceMappingURL=index.js.mapdist/cjs/watchdog.js000064400000002440151701445510010427 0ustar00"use strict"; // this spawns a child process that listens for SIGHUP when the // parent process exits, and after 200ms, sends a SIGKILL to the // child, in case it did not terminate. Object.defineProperty(exports, "__esModule", { value: true }); exports.watchdog = void 0; const child_process_1 = require("child_process"); const watchdogCode = String.raw ` const pid = parseInt(process.argv[1], 10) process.title = 'node (foreground-child watchdog pid=' + pid + ')' if (!isNaN(pid)) { let barked = false // keepalive const interval = setInterval(() => {}, 60000) const bark = () => { clearInterval(interval) if (barked) return barked = true process.removeListener('SIGHUP', bark) setTimeout(() => { try { process.kill(pid, 'SIGKILL') setTimeout(() => process.exit(), 200) } catch (_) {} }, 500) }) process.on('SIGHUP', bark) } `; const watchdog = (child) => { let dogExited = false; const dog = (0, child_process_1.spawn)(process.execPath, ['-e', watchdogCode, String(child.pid)], { stdio: 'ignore', }); dog.on('exit', () => (dogExited = true)); child.on('exit', () => { if (!dogExited) dog.kill('SIGTERM'); }); return dog; }; exports.watchdog = watchdog; //# sourceMappingURL=watchdog.js.map
/home/emeraadmin/www/js/../node_modules/parse-filepath/../debug/../../4d695/foreground-child.tar