@rspack/cli 2.0.1 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exit-hook.js +35 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1312 -1
- package/dist/json-ext.js +203 -769
- package/dist/profile.js +1 -1
- package/package.json +7 -6
- package/dist/162.js +0 -1301
package/dist/exit-hook.js
CHANGED
|
@@ -3,11 +3,42 @@ const asyncCallbacks = new Set();
|
|
|
3
3
|
const callbacks = new Set();
|
|
4
4
|
let isCalled = false;
|
|
5
5
|
let isRegistered = false;
|
|
6
|
+
async function flushStdio() {
|
|
7
|
+
const flush = (stream)=>new Promise((resolve)=>{
|
|
8
|
+
if (!stream || !stream.writable || stream.writableEnded || stream.destroyed) return void resolve();
|
|
9
|
+
const onError = ()=>{
|
|
10
|
+
stream.off('error', onError);
|
|
11
|
+
resolve();
|
|
12
|
+
};
|
|
13
|
+
stream.once('error', onError);
|
|
14
|
+
try {
|
|
15
|
+
stream.write('', ()=>{
|
|
16
|
+
stream.off('error', onError);
|
|
17
|
+
resolve();
|
|
18
|
+
});
|
|
19
|
+
} catch {
|
|
20
|
+
stream.off('error', onError);
|
|
21
|
+
resolve();
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const timeout = new Promise((resolve)=>{
|
|
25
|
+
setTimeout(resolve, 1000);
|
|
26
|
+
});
|
|
27
|
+
await Promise.race([
|
|
28
|
+
Promise.all([
|
|
29
|
+
flush(node_process.stdout),
|
|
30
|
+
flush(node_process.stderr)
|
|
31
|
+
]),
|
|
32
|
+
timeout
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
6
35
|
async function exit(shouldManuallyExit, isSynchronous, signal) {
|
|
7
36
|
if (isCalled) return;
|
|
8
37
|
isCalled = true;
|
|
9
38
|
if (asyncCallbacks.size > 0 && isSynchronous) console.error("SYNCHRONOUS TERMINATION NOTICE: When explicitly exiting the process via process.exit or via a parent process, asynchronous tasks in your exitHooks will not run. Either remove these tasks, use gracefulExit() instead of process.exit(), or ensure your parent process sends a SIGINT to the process running this code.");
|
|
10
|
-
|
|
39
|
+
let exitCode = 0;
|
|
40
|
+
if (signal > 0) exitCode = 128 + signal;
|
|
41
|
+
else if ('number' == typeof node_process.exitCode || 'string' == typeof node_process.exitCode) exitCode = node_process.exitCode;
|
|
11
42
|
const done = (force = false)=>{
|
|
12
43
|
if (true === force || true === shouldManuallyExit) node_process.exit(exitCode);
|
|
13
44
|
};
|
|
@@ -19,11 +50,12 @@ async function exit(shouldManuallyExit, isSynchronous, signal) {
|
|
|
19
50
|
forceAfter = Math.max(forceAfter, wait);
|
|
20
51
|
promises.push(Promise.resolve(callback(exitCode)));
|
|
21
52
|
}
|
|
22
|
-
const asyncTimer = setTimeout(()=>{
|
|
53
|
+
const asyncTimer = forceAfter > 0 ? setTimeout(()=>{
|
|
23
54
|
done(true);
|
|
24
|
-
}, forceAfter);
|
|
55
|
+
}, forceAfter) : void 0;
|
|
25
56
|
await Promise.all(promises);
|
|
26
57
|
clearTimeout(asyncTimer);
|
|
58
|
+
await flushStdio();
|
|
27
59
|
done();
|
|
28
60
|
}
|
|
29
61
|
function addHook(options) {
|
package/dist/index.d.ts
CHANGED
|
@@ -256,7 +256,7 @@ export declare class RspackCLI {
|
|
|
256
256
|
*/
|
|
257
257
|
wrapAction<T extends (...args: any[]) => Promise<void>>(fn: T): T;
|
|
258
258
|
buildCompilerConfig(options: CommonOptionsForBuildAndServe, rspackCommand: Command_2): Promise<RspackOptions | MultiRspackOptions>;
|
|
259
|
-
createCompiler(config: RspackOptions | MultiRspackOptions, callback?: (e: Error | null, res?: Stats | MultiStats) => void):
|
|
259
|
+
createCompiler(config: RspackOptions | MultiRspackOptions, callback?: (e: Error | null, res?: Stats | MultiStats) => void): Compiler | MultiCompiler | null;
|
|
260
260
|
private createColors;
|
|
261
261
|
getLogger(): RspackCLILogger;
|
|
262
262
|
run(argv: string[]): Promise<void>;
|
|
@@ -289,7 +289,7 @@ export declare interface RspackCLILogger {
|
|
|
289
289
|
}
|
|
290
290
|
|
|
291
291
|
export declare interface RspackCommand {
|
|
292
|
-
apply(cli: RspackCLI): Promise<void>;
|
|
292
|
+
apply(cli: RspackCLI): void | Promise<void>;
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
declare type RspackConfigAsyncFn = (env: Record<string, any>, argv: Record<string, any>) => Promise<RspackOptions | MultiRspackOptions>;
|