mirror of
https://scm.univ-tours.fr/22107988t/rappaurio-sae501_502.git
synced 2025-08-29 22:55:58 +02:00
Revert "permet l'ajout des frameworks et des routes"
This reverts commit 361112699c
This commit is contained in:
15
app/node_modules/foreground-child/LICENSE
generated
vendored
15
app/node_modules/foreground-child/LICENSE
generated
vendored
@@ -1,15 +0,0 @@
|
||||
The 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.
|
90
app/node_modules/foreground-child/README.md
generated
vendored
90
app/node_modules/foreground-child/README.md
generated
vendored
@@ -1,90 +0,0 @@
|
||||
# foreground-child
|
||||
|
||||
Run a child as if it's the foreground process. Give it stdio. Exit
|
||||
when it exits.
|
||||
|
||||
Mostly this module is here to support some use cases around
|
||||
wrapping child processes for test coverage and such. But it's
|
||||
also generally useful any time you want one program to execute
|
||||
another as if it's the "main" process, for example, if a program
|
||||
takes a `--cmd` argument to execute in some way.
|
||||
|
||||
## USAGE
|
||||
|
||||
```js
|
||||
import { foregroundChild } from 'foreground-child'
|
||||
// hybrid module, this also works:
|
||||
// const { foregroundChild } = require('foreground-child')
|
||||
|
||||
// cats out this file
|
||||
const child = foregroundChild('cat', [__filename])
|
||||
|
||||
// At this point, it's best to just do nothing else.
|
||||
// return or whatever.
|
||||
// If the child gets a signal, or just exits, then this
|
||||
// parent process will exit in the same way.
|
||||
```
|
||||
|
||||
You can provide custom spawn options by passing an object after
|
||||
the program and arguments:
|
||||
|
||||
```js
|
||||
const child = foregroundChild(`cat ${__filename}`, { shell: true })
|
||||
```
|
||||
|
||||
A callback can optionally be provided, if you want to perform an
|
||||
action before your foreground-child exits:
|
||||
|
||||
```js
|
||||
const child = foregroundChild('cat', [__filename], spawnOptions, () => {
|
||||
doSomeActions()
|
||||
})
|
||||
```
|
||||
|
||||
The callback can return a Promise in order to perform
|
||||
asynchronous actions. If the callback does not return a promise,
|
||||
then it must complete its actions within a single JavaScript
|
||||
tick.
|
||||
|
||||
```js
|
||||
const child = foregroundChild('cat', [__filename], async () => {
|
||||
await doSomeAsyncActions()
|
||||
})
|
||||
```
|
||||
|
||||
If the callback throws or rejects, then it will be unhandled, and
|
||||
node will exit in error.
|
||||
|
||||
If the callback returns a string value, then that will be used as
|
||||
the signal to exit the parent process. If it returns a number,
|
||||
then that number will be used as the parent exit status code. If
|
||||
it returns boolean `false`, then the parent process will not be
|
||||
terminated. If it returns `undefined`, then it will exit with the
|
||||
same signal/code as the child process.
|
||||
|
||||
## Caveats
|
||||
|
||||
The "normal" standard IO file descriptors (0, 1, and 2 for stdin,
|
||||
stdout, and stderr respectively) are shared with the child process.
|
||||
Additionally, if there is an IPC channel set up in the parent, then
|
||||
messages are proxied to the child on file descriptor 3.
|
||||
|
||||
In Node, it's possible to also map arbitrary file descriptors
|
||||
into a child process. In these cases, foreground-child will not
|
||||
map the file descriptors into the child. If file descriptors 0,
|
||||
1, or 2 are used for the IPC channel, then strange behavior may
|
||||
happen (like printing IPC messages to stderr, for example).
|
||||
|
||||
Note that a SIGKILL will always kill the parent process, but
|
||||
will not proxy the signal to the child process, because SIGKILL
|
||||
cannot be caught. In order to address this, a special "watchdog"
|
||||
child process is spawned which will send a SIGKILL to the child
|
||||
process if it does not terminate within half a second after the
|
||||
watchdog receives a SIGHUP due to its parent terminating.
|
||||
|
||||
On Windows, issuing a `process.kill(process.pid, signal)` with a
|
||||
fatal termination signal may cause the process to exit with a `1`
|
||||
status code rather than reporting the signal properly. This
|
||||
module tries to do the right thing, but on Windows systems, you
|
||||
may see that incorrect result. There is as far as I'm aware no
|
||||
workaround for this.
|
3
app/node_modules/foreground-child/dist/cjs/all-signals.d.ts
generated
vendored
3
app/node_modules/foreground-child/dist/cjs/all-signals.d.ts
generated
vendored
@@ -1,3 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
export declare const allSignals: NodeJS.Signals[];
|
||||
//# sourceMappingURL=all-signals.d.ts.map
|
1
app/node_modules/foreground-child/dist/cjs/all-signals.d.ts.map
generated
vendored
1
app/node_modules/foreground-child/dist/cjs/all-signals.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"all-signals.d.ts","sourceRoot":"","sources":["../../src/all-signals.ts"],"names":[],"mappings":";AACA,eAAO,MAAM,UAAU,kBASA,CAAA"}
|
58
app/node_modules/foreground-child/dist/cjs/all-signals.js
generated
vendored
58
app/node_modules/foreground-child/dist/cjs/all-signals.js
generated
vendored
@@ -1,58 +0,0 @@
|
||||
"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.map
|
1
app/node_modules/foreground-child/dist/cjs/all-signals.js.map
generated
vendored
1
app/node_modules/foreground-child/dist/cjs/all-signals.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"all-signals.js","sourceRoot":"","sources":["../../src/all-signals.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAsC;AACzB,QAAA,UAAU;AACrB,0EAA0E;AAC1E,MAAM,CAAC,IAAI,CAAC,wBAAS,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IACnB,iDAAiD;IACjD,CAAC,KAAK,SAAS;IACf,yDAAyD;IACzD,CAAC,KAAK,SAAS,CACE,CAAA;AAEvB,8DAA8D;AAC9D,gEAAgE;AAChE,6DAA6D;AAC7D,gCAAgC;AAChC,EAAE;AACF,YAAY;AACZ,aAAa;AACb,aAAa;AACb,cAAc;AACd,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,cAAc;AACd,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf,eAAe","sourcesContent":["import constants from 'node:constants'\nexport const allSignals =\n // this is the full list of signals that Node will let us do anything with\n Object.keys(constants).filter(\n k =>\n k.startsWith('SIG') &&\n // https://github.com/tapjs/signal-exit/issues/21\n k !== 'SIGPROF' &&\n // no sense trying to listen for SIGKILL, it's impossible\n k !== 'SIGKILL'\n ) as NodeJS.Signals[]\n\n// These are some obscure signals that are reported by kill -l\n// on macOS, Linux, or Windows, but which don't have any mapping\n// in Node.js. No sense trying if they're just going to throw\n// every time on every platform.\n//\n// 'SIGEMT',\n// 'SIGLOST',\n// 'SIGPOLL',\n// 'SIGRTMAX',\n// 'SIGRTMAX-1',\n// 'SIGRTMAX-10',\n// 'SIGRTMAX-11',\n// 'SIGRTMAX-12',\n// 'SIGRTMAX-13',\n// 'SIGRTMAX-14',\n// 'SIGRTMAX-15',\n// 'SIGRTMAX-2',\n// 'SIGRTMAX-3',\n// 'SIGRTMAX-4',\n// 'SIGRTMAX-5',\n// 'SIGRTMAX-6',\n// 'SIGRTMAX-7',\n// 'SIGRTMAX-8',\n// 'SIGRTMAX-9',\n// 'SIGRTMIN',\n// 'SIGRTMIN+1',\n// 'SIGRTMIN+10',\n// 'SIGRTMIN+11',\n// 'SIGRTMIN+12',\n// 'SIGRTMIN+13',\n// 'SIGRTMIN+14',\n// 'SIGRTMIN+15',\n// 'SIGRTMIN+16',\n// 'SIGRTMIN+2',\n// 'SIGRTMIN+3',\n// 'SIGRTMIN+4',\n// 'SIGRTMIN+5',\n// 'SIGRTMIN+6',\n// 'SIGRTMIN+7',\n// 'SIGRTMIN+8',\n// 'SIGRTMIN+9',\n// 'SIGSTKFLT',\n// 'SIGUNUSED',\n"]}
|
54
app/node_modules/foreground-child/dist/cjs/index.d.ts
generated
vendored
54
app/node_modules/foreground-child/dist/cjs/index.d.ts
generated
vendored
@@ -1,54 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
import { ChildProcess, SpawnOptions } from 'child_process';
|
||||
/**
|
||||
* The signature for the cleanup method.
|
||||
*
|
||||
* Arguments indicate the exit status of the child process.
|
||||
*
|
||||
* If a Promise is returned, then the process is not terminated
|
||||
* until it resolves, and the resolution value is treated as the
|
||||
* exit status (if a number) or signal exit (if a signal string).
|
||||
*
|
||||
* If `undefined` is returned, then no change is made, and the parent
|
||||
* exits in the same way that the child exited.
|
||||
*
|
||||
* If boolean `false` is returned, then the parent's exit is canceled.
|
||||
*
|
||||
* If a number is returned, then the parent process exits with the number
|
||||
* as its exitCode.
|
||||
*
|
||||
* If a signal string is returned, then the parent process is killed with
|
||||
* the same signal that caused the child to exit.
|
||||
*/
|
||||
export type Cleanup = (code: number | null, signal: null | NodeJS.Signals) => void | undefined | number | NodeJS.Signals | false | Promise<void | undefined | number | NodeJS.Signals | false>;
|
||||
export type FgArgs = [program: string | string[], cleanup?: Cleanup] | [program: string[], opts?: SpawnOptions, cleanup?: Cleanup] | [program: string, cleanup?: Cleanup] | [program: string, opts?: SpawnOptions, cleanup?: Cleanup] | [program: string, args?: string[], cleanup?: Cleanup] | [
|
||||
program: string,
|
||||
args?: string[],
|
||||
opts?: SpawnOptions,
|
||||
cleanup?: Cleanup
|
||||
];
|
||||
/**
|
||||
* Normalizes the arguments passed to `foregroundChild`.
|
||||
*
|
||||
* Exposed for testing.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export declare const normalizeFgArgs: (fgArgs: FgArgs) => [program: string, args: string[], spawnOpts: SpawnOptions, cleanup: Cleanup];
|
||||
/**
|
||||
* Spawn the specified program as a "foreground" process, or at least as
|
||||
* close as is possible given node's lack of exec-without-fork.
|
||||
*
|
||||
* Cleanup method may be used to modify or ignore the result of the child's
|
||||
* exit code or signal. If cleanup returns undefined (or a Promise that
|
||||
* resolves to undefined), then the parent will exit in the same way that
|
||||
* the child did.
|
||||
*
|
||||
* Return boolean `false` to prevent the parent's exit entirely.
|
||||
*/
|
||||
export declare function foregroundChild(cmd: string | string[], cleanup?: Cleanup): ChildProcess;
|
||||
export declare function foregroundChild(program: string, args?: string[], cleanup?: Cleanup): ChildProcess;
|
||||
export declare function foregroundChild(program: string, spawnOpts?: SpawnOptions, cleanup?: Cleanup): ChildProcess;
|
||||
export declare function foregroundChild(program: string, args?: string[], spawnOpts?: SpawnOptions, cleanup?: Cleanup): ChildProcess;
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
app/node_modules/foreground-child/dist/cjs/index.d.ts.map
generated
vendored
1
app/node_modules/foreground-child/dist/cjs/index.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,YAAY,EAIZ,YAAY,EACb,MAAM,eAAe,CAAA;AAUtB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,OAAO,KAE3B,IAAI,GACJ,SAAS,GACT,MAAM,GACN,MAAM,CAAC,OAAO,GACd,KAAK,GACL,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAA;AAE/D,MAAM,MAAM,MAAM,GACd,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAC/C,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAC3D,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GACpC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GACzD,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GACrD;IACE,OAAO,EAAE,MAAM;IACf,IAAI,CAAC,EAAE,MAAM,EAAE;IACf,IAAI,CAAC,EAAE,YAAY;IACnB,OAAO,CAAC,EAAE,OAAO;CAClB,CAAA;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,iFA0Bf,CAAA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,SAAS,CAAC,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA"}
|
154
app/node_modules/foreground-child/dist/cjs/index.js
generated
vendored
154
app/node_modules/foreground-child/dist/cjs/index.js
generated
vendored
@@ -1,154 +0,0 @@
|
||||
"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.map
|
1
app/node_modules/foreground-child/dist/cjs/index.js.map
generated
vendored
1
app/node_modules/foreground-child/dist/cjs/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
3
app/node_modules/foreground-child/dist/cjs/package.json
generated
vendored
3
app/node_modules/foreground-child/dist/cjs/package.json
generated
vendored
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"type": "commonjs"
|
||||
}
|
4
app/node_modules/foreground-child/dist/cjs/watchdog.d.ts
generated
vendored
4
app/node_modules/foreground-child/dist/cjs/watchdog.d.ts
generated
vendored
@@ -1,4 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
import { ChildProcess } from 'child_process';
|
||||
export declare const watchdog: (child: ChildProcess) => ChildProcess;
|
||||
//# sourceMappingURL=watchdog.d.ts.map
|
1
app/node_modules/foreground-child/dist/cjs/watchdog.d.ts.map
generated
vendored
1
app/node_modules/foreground-child/dist/cjs/watchdog.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"watchdog.d.ts","sourceRoot":"","sources":["../../src/watchdog.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAS,MAAM,eAAe,CAAA;AAyBnD,eAAO,MAAM,QAAQ,UAAW,YAAY,iBAc3C,CAAA"}
|
43
app/node_modules/foreground-child/dist/cjs/watchdog.js
generated
vendored
43
app/node_modules/foreground-child/dist/cjs/watchdog.js
generated
vendored
@@ -1,43 +0,0 @@
|
||||
"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
|
1
app/node_modules/foreground-child/dist/cjs/watchdog.js.map
generated
vendored
1
app/node_modules/foreground-child/dist/cjs/watchdog.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../src/watchdog.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,gEAAgE;AAChE,uCAAuC;;;AAEvC,iDAAmD;AAEnD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;CAqB9B,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC9C,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,MAAM,GAAG,GAAG,IAAA,qBAAK,EACf,OAAO,CAAC,QAAQ,EAChB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACvC;QACE,KAAK,EAAE,QAAQ;KAChB,CACF,CAAA;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAdY,QAAA,QAAQ,YAcpB","sourcesContent":["// this spawns a child process that listens for SIGHUP when the\n// parent process exits, and after 200ms, sends a SIGKILL to the\n// child, in case it did not terminate.\n\nimport { ChildProcess, spawn } from 'child_process'\n\nconst watchdogCode = String.raw`\nconst pid = parseInt(process.argv[1], 10)\nprocess.title = 'node (foreground-child watchdog pid=' + pid + ')'\nif (!isNaN(pid)) {\n let barked = false\n // keepalive\n const interval = setInterval(() => {}, 60000)\n const bark = () => {\n clearInterval(interval)\n if (barked) return\n barked = true\n process.removeListener('SIGHUP', bark)\n setTimeout(() => {\n try {\n process.kill(pid, 'SIGKILL')\n setTimeout(() => process.exit(), 200)\n } catch (_) {}\n }, 500)\n })\n process.on('SIGHUP', bark)\n}\n`\n\nexport const watchdog = (child: ChildProcess) => {\n let dogExited = false\n const dog = spawn(\n process.execPath,\n ['-e', watchdogCode, String(child.pid)],\n {\n stdio: 'ignore',\n }\n )\n dog.on('exit', () => (dogExited = true))\n child.on('exit', () => {\n if (!dogExited) dog.kill('SIGTERM')\n })\n return dog\n}\n"]}
|
3
app/node_modules/foreground-child/dist/mjs/all-signals.d.ts
generated
vendored
3
app/node_modules/foreground-child/dist/mjs/all-signals.d.ts
generated
vendored
@@ -1,3 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
export declare const allSignals: NodeJS.Signals[];
|
||||
//# sourceMappingURL=all-signals.d.ts.map
|
1
app/node_modules/foreground-child/dist/mjs/all-signals.d.ts.map
generated
vendored
1
app/node_modules/foreground-child/dist/mjs/all-signals.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"all-signals.d.ts","sourceRoot":"","sources":["../../src/all-signals.ts"],"names":[],"mappings":";AACA,eAAO,MAAM,UAAU,kBASA,CAAA"}
|
52
app/node_modules/foreground-child/dist/mjs/all-signals.js
generated
vendored
52
app/node_modules/foreground-child/dist/mjs/all-signals.js
generated
vendored
@@ -1,52 +0,0 @@
|
||||
import 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.map
|
1
app/node_modules/foreground-child/dist/mjs/all-signals.js.map
generated
vendored
1
app/node_modules/foreground-child/dist/mjs/all-signals.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"all-signals.js","sourceRoot":"","sources":["../../src/all-signals.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAA;AACtC,MAAM,CAAC,MAAM,UAAU;AACrB,0EAA0E;AAC1E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,CACF,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;IACnB,iDAAiD;IACjD,CAAC,KAAK,SAAS;IACf,yDAAyD;IACzD,CAAC,KAAK,SAAS,CACE,CAAA;AAEvB,8DAA8D;AAC9D,gEAAgE;AAChE,6DAA6D;AAC7D,gCAAgC;AAChC,EAAE;AACF,YAAY;AACZ,aAAa;AACb,aAAa;AACb,cAAc;AACd,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,cAAc;AACd,gBAAgB;AAChB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB,eAAe;AACf,eAAe","sourcesContent":["import constants from 'node:constants'\nexport const allSignals =\n // this is the full list of signals that Node will let us do anything with\n Object.keys(constants).filter(\n k =>\n k.startsWith('SIG') &&\n // https://github.com/tapjs/signal-exit/issues/21\n k !== 'SIGPROF' &&\n // no sense trying to listen for SIGKILL, it's impossible\n k !== 'SIGKILL'\n ) as NodeJS.Signals[]\n\n// These are some obscure signals that are reported by kill -l\n// on macOS, Linux, or Windows, but which don't have any mapping\n// in Node.js. No sense trying if they're just going to throw\n// every time on every platform.\n//\n// 'SIGEMT',\n// 'SIGLOST',\n// 'SIGPOLL',\n// 'SIGRTMAX',\n// 'SIGRTMAX-1',\n// 'SIGRTMAX-10',\n// 'SIGRTMAX-11',\n// 'SIGRTMAX-12',\n// 'SIGRTMAX-13',\n// 'SIGRTMAX-14',\n// 'SIGRTMAX-15',\n// 'SIGRTMAX-2',\n// 'SIGRTMAX-3',\n// 'SIGRTMAX-4',\n// 'SIGRTMAX-5',\n// 'SIGRTMAX-6',\n// 'SIGRTMAX-7',\n// 'SIGRTMAX-8',\n// 'SIGRTMAX-9',\n// 'SIGRTMIN',\n// 'SIGRTMIN+1',\n// 'SIGRTMIN+10',\n// 'SIGRTMIN+11',\n// 'SIGRTMIN+12',\n// 'SIGRTMIN+13',\n// 'SIGRTMIN+14',\n// 'SIGRTMIN+15',\n// 'SIGRTMIN+16',\n// 'SIGRTMIN+2',\n// 'SIGRTMIN+3',\n// 'SIGRTMIN+4',\n// 'SIGRTMIN+5',\n// 'SIGRTMIN+6',\n// 'SIGRTMIN+7',\n// 'SIGRTMIN+8',\n// 'SIGRTMIN+9',\n// 'SIGSTKFLT',\n// 'SIGUNUSED',\n"]}
|
54
app/node_modules/foreground-child/dist/mjs/index.d.ts
generated
vendored
54
app/node_modules/foreground-child/dist/mjs/index.d.ts
generated
vendored
@@ -1,54 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
import { ChildProcess, SpawnOptions } from 'child_process';
|
||||
/**
|
||||
* The signature for the cleanup method.
|
||||
*
|
||||
* Arguments indicate the exit status of the child process.
|
||||
*
|
||||
* If a Promise is returned, then the process is not terminated
|
||||
* until it resolves, and the resolution value is treated as the
|
||||
* exit status (if a number) or signal exit (if a signal string).
|
||||
*
|
||||
* If `undefined` is returned, then no change is made, and the parent
|
||||
* exits in the same way that the child exited.
|
||||
*
|
||||
* If boolean `false` is returned, then the parent's exit is canceled.
|
||||
*
|
||||
* If a number is returned, then the parent process exits with the number
|
||||
* as its exitCode.
|
||||
*
|
||||
* If a signal string is returned, then the parent process is killed with
|
||||
* the same signal that caused the child to exit.
|
||||
*/
|
||||
export type Cleanup = (code: number | null, signal: null | NodeJS.Signals) => void | undefined | number | NodeJS.Signals | false | Promise<void | undefined | number | NodeJS.Signals | false>;
|
||||
export type FgArgs = [program: string | string[], cleanup?: Cleanup] | [program: string[], opts?: SpawnOptions, cleanup?: Cleanup] | [program: string, cleanup?: Cleanup] | [program: string, opts?: SpawnOptions, cleanup?: Cleanup] | [program: string, args?: string[], cleanup?: Cleanup] | [
|
||||
program: string,
|
||||
args?: string[],
|
||||
opts?: SpawnOptions,
|
||||
cleanup?: Cleanup
|
||||
];
|
||||
/**
|
||||
* Normalizes the arguments passed to `foregroundChild`.
|
||||
*
|
||||
* Exposed for testing.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export declare const normalizeFgArgs: (fgArgs: FgArgs) => [program: string, args: string[], spawnOpts: SpawnOptions, cleanup: Cleanup];
|
||||
/**
|
||||
* Spawn the specified program as a "foreground" process, or at least as
|
||||
* close as is possible given node's lack of exec-without-fork.
|
||||
*
|
||||
* Cleanup method may be used to modify or ignore the result of the child's
|
||||
* exit code or signal. If cleanup returns undefined (or a Promise that
|
||||
* resolves to undefined), then the parent will exit in the same way that
|
||||
* the child did.
|
||||
*
|
||||
* Return boolean `false` to prevent the parent's exit entirely.
|
||||
*/
|
||||
export declare function foregroundChild(cmd: string | string[], cleanup?: Cleanup): ChildProcess;
|
||||
export declare function foregroundChild(program: string, args?: string[], cleanup?: Cleanup): ChildProcess;
|
||||
export declare function foregroundChild(program: string, spawnOpts?: SpawnOptions, cleanup?: Cleanup): ChildProcess;
|
||||
export declare function foregroundChild(program: string, args?: string[], spawnOpts?: SpawnOptions, cleanup?: Cleanup): ChildProcess;
|
||||
//# sourceMappingURL=index.d.ts.map
|
1
app/node_modules/foreground-child/dist/mjs/index.d.ts.map
generated
vendored
1
app/node_modules/foreground-child/dist/mjs/index.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,OAAO,EACL,YAAY,EAIZ,YAAY,EACb,MAAM,eAAe,CAAA;AAUtB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,OAAO,KAE3B,IAAI,GACJ,SAAS,GACT,MAAM,GACN,MAAM,CAAC,OAAO,GACd,KAAK,GACL,OAAO,CAAC,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAA;AAE/D,MAAM,MAAM,MAAM,GACd,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAC/C,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GAC3D,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GACpC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GACzD,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,GACrD;IACE,OAAO,EAAE,MAAM;IACf,IAAI,CAAC,EAAE,MAAM,EAAE;IACf,IAAI,CAAC,EAAE,YAAY;IACnB,OAAO,CAAC,EAAE,OAAO;CAClB,CAAA;AAEL;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,iFA0Bf,CAAA;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA;AACf,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,SAAS,CAAC,EAAE,YAAY,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAAA"}
|
146
app/node_modules/foreground-child/dist/mjs/index.js
generated
vendored
146
app/node_modules/foreground-child/dist/mjs/index.js
generated
vendored
@@ -1,146 +0,0 @@
|
||||
import { 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.map
|
1
app/node_modules/foreground-child/dist/mjs/index.js.map
generated
vendored
1
app/node_modules/foreground-child/dist/mjs/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
3
app/node_modules/foreground-child/dist/mjs/package.json
generated
vendored
3
app/node_modules/foreground-child/dist/mjs/package.json
generated
vendored
@@ -1,3 +0,0 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
4
app/node_modules/foreground-child/dist/mjs/watchdog.d.ts
generated
vendored
4
app/node_modules/foreground-child/dist/mjs/watchdog.d.ts
generated
vendored
@@ -1,4 +0,0 @@
|
||||
/// <reference types="node" />
|
||||
import { ChildProcess } from 'child_process';
|
||||
export declare const watchdog: (child: ChildProcess) => ChildProcess;
|
||||
//# sourceMappingURL=watchdog.d.ts.map
|
1
app/node_modules/foreground-child/dist/mjs/watchdog.d.ts.map
generated
vendored
1
app/node_modules/foreground-child/dist/mjs/watchdog.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"watchdog.d.ts","sourceRoot":"","sources":["../../src/watchdog.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAS,MAAM,eAAe,CAAA;AAyBnD,eAAO,MAAM,QAAQ,UAAW,YAAY,iBAc3C,CAAA"}
|
39
app/node_modules/foreground-child/dist/mjs/watchdog.js
generated
vendored
39
app/node_modules/foreground-child/dist/mjs/watchdog.js
generated
vendored
@@ -1,39 +0,0 @@
|
||||
// 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.map
|
1
app/node_modules/foreground-child/dist/mjs/watchdog.js.map
generated
vendored
1
app/node_modules/foreground-child/dist/mjs/watchdog.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../src/watchdog.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,gEAAgE;AAChE,uCAAuC;AAEvC,OAAO,EAAgB,KAAK,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;CAqB9B,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC9C,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,MAAM,GAAG,GAAG,KAAK,CACf,OAAO,CAAC,QAAQ,EAChB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EACvC;QACE,KAAK,EAAE,QAAQ;KAChB,CACF,CAAA;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAA;IACxC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,IAAI,CAAC,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IACF,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA","sourcesContent":["// this spawns a child process that listens for SIGHUP when the\n// parent process exits, and after 200ms, sends a SIGKILL to the\n// child, in case it did not terminate.\n\nimport { ChildProcess, spawn } from 'child_process'\n\nconst watchdogCode = String.raw`\nconst pid = parseInt(process.argv[1], 10)\nprocess.title = 'node (foreground-child watchdog pid=' + pid + ')'\nif (!isNaN(pid)) {\n let barked = false\n // keepalive\n const interval = setInterval(() => {}, 60000)\n const bark = () => {\n clearInterval(interval)\n if (barked) return\n barked = true\n process.removeListener('SIGHUP', bark)\n setTimeout(() => {\n try {\n process.kill(pid, 'SIGKILL')\n setTimeout(() => process.exit(), 200)\n } catch (_) {}\n }, 500)\n })\n process.on('SIGHUP', bark)\n}\n`\n\nexport const watchdog = (child: ChildProcess) => {\n let dogExited = false\n const dog = spawn(\n process.execPath,\n ['-e', watchdogCode, String(child.pid)],\n {\n stdio: 'ignore',\n }\n )\n dog.on('exit', () => (dogExited = true))\n child.on('exit', () => {\n if (!dogExited) dog.kill('SIGTERM')\n })\n return dog\n}\n"]}
|
116
app/node_modules/foreground-child/package.json
generated
vendored
116
app/node_modules/foreground-child/package.json
generated
vendored
@@ -1,116 +0,0 @@
|
||||
{
|
||||
"_from": "foreground-child@^3.1.0",
|
||||
"_id": "foreground-child@3.1.1",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
|
||||
"_location": "/foreground-child",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "range",
|
||||
"registry": true,
|
||||
"raw": "foreground-child@^3.1.0",
|
||||
"name": "foreground-child",
|
||||
"escapedName": "foreground-child",
|
||||
"rawSpec": "^3.1.0",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "^3.1.0"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"/glob"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
|
||||
"_shasum": "1d173e776d75d2772fed08efe4a0de1ea1b12d0d",
|
||||
"_spec": "foreground-child@^3.1.0",
|
||||
"_where": "/mnt/c/Users/docto/Downloads/Rappaurio/node_modules/glob",
|
||||
"author": {
|
||||
"name": "Isaac Z. Schlueter",
|
||||
"email": "i@izs.me",
|
||||
"url": "http://blog.izs.me/"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/tapjs/foreground-child/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"dependencies": {
|
||||
"cross-spawn": "^7.0.0",
|
||||
"signal-exit": "^4.0.1"
|
||||
},
|
||||
"deprecated": false,
|
||||
"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"
|
||||
}
|
Reference in New Issue
Block a user