@idlebox/node 1.3.4 → 1.3.5

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.
@@ -278,6 +278,8 @@ export declare interface NormalizePathFunction {
278
278
  (path: string): string;
279
279
  }
280
280
 
281
+ declare type OnExit = (error?: Error) => Promise<any>;
282
+
281
283
  export declare function osTempDir(name?: string): string;
282
284
 
283
285
  export declare const PATH_SEPARATOR: string;
@@ -336,7 +338,7 @@ export declare function respawnInScope(mainFunc: Function): unknown | never;
336
338
  * setErrorLogRoot(require('path').dirname(__dirname));
337
339
  * ```
338
340
  **/
339
- export declare function runMain(main: AsyncMainFunction): void;
341
+ export declare function runMain(main: AsyncMainFunction, onExit?: OnExit): void;
340
342
 
341
343
  export declare function sha256(data: Buffer): string;
342
344
 
@@ -16,19 +16,36 @@ exports.ExitError = ExitError;
16
16
  * setErrorLogRoot(require('path').dirname(__dirname));
17
17
  * ```
18
18
  **/
19
- function runMain(main) {
19
+ function runMain(main, onExit) {
20
20
  Promise.resolve()
21
- .then(main)
21
+ .then(async () => {
22
+ try {
23
+ await main();
24
+ await onExit?.();
25
+ }
26
+ catch (e) {
27
+ await onExit?.(e);
28
+ throw e;
29
+ }
30
+ })
22
31
  .catch((e) => {
23
32
  if (e instanceof ExitError) {
24
- console.error(e.message);
25
- process.exit(1);
33
+ if (e.code) {
34
+ console.error('[exit] %s', e.message);
35
+ process.exitCode = e.code;
36
+ }
37
+ else {
38
+ process.exitCode = 0;
39
+ }
40
+ }
41
+ else {
42
+ (0, common_1.prettyPrintError)('main', e);
26
43
  }
27
- (0, common_1.prettyPrintError)('main', e);
28
- return e.code || 1;
44
+ if (!process.exitCode)
45
+ process.exitCode = 1;
29
46
  })
30
- .then((code) => {
31
- process.exit(code || 0);
47
+ .finally(() => {
48
+ process.exit();
32
49
  });
33
50
  }
34
51
  exports.runMain = runMain;
@@ -6,5 +6,5 @@
6
6
  "../../src/asyncLoad.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": ";;;AAAA,4CAAmD;AAInD,MAAa,SAAU,SAAQ,KAAK;IAGlB;IAFjB,YACC,OAAe,EACC,OAAe,CAAC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAY;IAGjC,CAAC;CACD;AAPD,8BAOC;AAED;;;;;IAKI;AACJ,SAAgB,OAAO,CAAC,IAAuB;IAC9C,OAAO,CAAC,OAAO,EAAE;SACf,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,YAAY,SAAS,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;QAED,IAAA,yBAAgB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAfD,0BAeC"
9
+ "mappings": ";;;AAAA,4CAAmD;AAInD,MAAa,SAAU,SAAQ,KAAK;IAGlB;IAFjB,YACC,OAAe,EACC,OAAe,CAAC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAY;IAGjC,CAAC;CACD;AAPD,8BAOC;AAID;;;;;IAKI;AACJ,SAAgB,OAAO,CAAC,IAAuB,EAAE,MAAe;IAC/D,OAAO,CAAC,OAAO,EAAE;SACf,IAAI,CAAC,KAAK,IAAI,EAAE;QAChB,IAAI;YACH,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,MAAM,EAAE,EAAE,CAAC;SACjB;QAAC,OAAO,CAAM,EAAE;YAChB,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,CAAC;SACR;IACF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,YAAY,SAAS,EAAE;YAC3B,IAAI,CAAC,CAAC,IAAI,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;aAC1B;iBAAM;gBACN,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;aACrB;SACD;aAAM;YACN,IAAA,yBAAgB,EAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AA3BD,0BA2BC"
10
10
  }
@@ -278,6 +278,8 @@ export declare interface NormalizePathFunction {
278
278
  (path: string): string;
279
279
  }
280
280
 
281
+ declare type OnExit = (error?: Error) => Promise<any>;
282
+
281
283
  export declare function osTempDir(name?: string): string;
282
284
 
283
285
  export declare const PATH_SEPARATOR: string;
@@ -336,7 +338,7 @@ export declare function respawnInScope(mainFunc: Function): unknown | never;
336
338
  * setErrorLogRoot(require('path').dirname(__dirname));
337
339
  * ```
338
340
  **/
339
- export declare function runMain(main: AsyncMainFunction): void;
341
+ export declare function runMain(main: AsyncMainFunction, onExit?: OnExit): void;
340
342
 
341
343
  export declare function sha256(data: Buffer): string;
342
344
 
@@ -12,19 +12,36 @@ export class ExitError extends Error {
12
12
  * setErrorLogRoot(require('path').dirname(__dirname));
13
13
  * ```
14
14
  **/
15
- export function runMain(main) {
15
+ export function runMain(main, onExit) {
16
16
  Promise.resolve()
17
- .then(main)
17
+ .then(async () => {
18
+ try {
19
+ await main();
20
+ await onExit?.();
21
+ }
22
+ catch (e) {
23
+ await onExit?.(e);
24
+ throw e;
25
+ }
26
+ })
18
27
  .catch((e) => {
19
28
  if (e instanceof ExitError) {
20
- console.error(e.message);
21
- process.exit(1);
29
+ if (e.code) {
30
+ console.error('[exit] %s', e.message);
31
+ process.exitCode = e.code;
32
+ }
33
+ else {
34
+ process.exitCode = 0;
35
+ }
36
+ }
37
+ else {
38
+ prettyPrintError('main', e);
22
39
  }
23
- prettyPrintError('main', e);
24
- return e.code || 1;
40
+ if (!process.exitCode)
41
+ process.exitCode = 1;
25
42
  })
26
- .then((code) => {
27
- process.exit(code || 0);
43
+ .finally(() => {
44
+ process.exit();
28
45
  });
29
46
  }
30
47
  //# sourceMappingURL=asyncLoad.mjs.map
@@ -6,5 +6,5 @@
6
6
  "../../src/asyncLoad.ts"
7
7
  ],
8
8
  "names": [],
9
- "mappings": "AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGlB;IAFjB,YACC,OAAe,EACC,OAAe,CAAC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAY;IAGjC,CAAC;CACD;AAED;;;;;IAKI;AACJ,MAAM,UAAU,OAAO,CAAC,IAAuB;IAC9C,OAAO,CAAC,OAAO,EAAE;SACf,IAAI,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,YAAY,SAAS,EAAE;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;QAED,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC"
9
+ "mappings": "AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAInD,MAAM,OAAO,SAAU,SAAQ,KAAK;IAGlB;IAFjB,YACC,OAAe,EACC,OAAe,CAAC;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAY;IAGjC,CAAC;CACD;AAID;;;;;IAKI;AACJ,MAAM,UAAU,OAAO,CAAC,IAAuB,EAAE,MAAe;IAC/D,OAAO,CAAC,OAAO,EAAE;SACf,IAAI,CAAC,KAAK,IAAI,EAAE;QAChB,IAAI;YACH,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,MAAM,EAAE,EAAE,CAAC;SACjB;QAAC,OAAO,CAAM,EAAE;YAChB,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,CAAC,CAAC;SACR;IACF,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACZ,IAAI,CAAC,YAAY,SAAS,EAAE;YAC3B,IAAI,CAAC,CAAC,IAAI,EAAE;gBACX,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;aAC1B;iBAAM;gBACN,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;aACrB;SACD;aAAM;YACN,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC;SACD,OAAO,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"
10
10
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@idlebox/node",
3
3
  "type": "module",
4
- "version": "1.3.4",
4
+ "version": "1.3.5",
5
5
  "license": "MIT",
6
6
  "main": "./lib/cjs/__create_index.generated.cjs",
7
7
  "module": "./lib/esm/__create_index.generated.mjs",
@@ -27,8 +27,8 @@
27
27
  "@types/node": "^20.4.5",
28
28
  "chai": "^4.3.7",
29
29
  "mocha": "^10.2.0",
30
- "@build-script/single-dog-asset": "^1.0.28",
31
- "@internal/dualstack-rig": "^1.0.1"
30
+ "@internal/dualstack-rig": "^1.0.1",
31
+ "@build-script/single-dog-asset": "^1.0.28"
32
32
  },
33
33
  "peerDependencies": {
34
34
  "fix-esm": "^1.0.1"
package/src/asyncLoad.ts CHANGED
@@ -11,25 +11,39 @@ export class ExitError extends Error {
11
11
  }
12
12
  }
13
13
 
14
+ type OnExit = (error?: Error) => Promise<any>;
15
+
14
16
  /**
15
17
  * should do this before:
16
18
  * ```
17
19
  * setErrorLogRoot(require('path').dirname(__dirname));
18
20
  * ```
19
21
  **/
20
- export function runMain(main: AsyncMainFunction) {
22
+ export function runMain(main: AsyncMainFunction, onExit?: OnExit) {
21
23
  Promise.resolve()
22
- .then(main)
24
+ .then(async () => {
25
+ try {
26
+ await main();
27
+ await onExit?.();
28
+ } catch (e: any) {
29
+ await onExit?.(e);
30
+ throw e;
31
+ }
32
+ })
23
33
  .catch((e) => {
24
34
  if (e instanceof ExitError) {
25
- console.error(e.message);
26
- process.exit(1);
35
+ if (e.code) {
36
+ console.error('[exit] %s', e.message);
37
+ process.exitCode = e.code;
38
+ } else {
39
+ process.exitCode = 0;
40
+ }
41
+ } else {
42
+ prettyPrintError('main', e);
27
43
  }
28
-
29
- prettyPrintError('main', e);
30
- return e.code || 1;
44
+ if (!process.exitCode) process.exitCode = 1;
31
45
  })
32
- .then((code) => {
33
- process.exit(code || 0);
46
+ .finally(() => {
47
+ process.exit();
34
48
  });
35
49
  }