@idlebox/node 1.4.11 → 1.4.13

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.
Files changed (45) hide show
  1. package/lib/asyncLoad.d.ts +1 -0
  2. package/lib/asyncLoad.d.ts.map +1 -1
  3. package/lib/asyncLoad.js +3 -2
  4. package/lib/asyncLoad.js.map +1 -1
  5. package/lib/autoindex.d.ts +73 -76
  6. package/lib/autoindex.d.ts.map +1 -1
  7. package/lib/autoindex.js +65 -68
  8. package/lib/autoindex.js.map +1 -1
  9. package/lib/child_process/respawn.d.ts +2 -0
  10. package/lib/child_process/respawn.d.ts.map +1 -1
  11. package/lib/child_process/respawn.js +2 -0
  12. package/lib/child_process/respawn.js.map +1 -1
  13. package/lib/fs/exists.js +1 -1
  14. package/lib/fs/exists.js.map +1 -1
  15. package/lib/lifecycle/register.d.ts +11 -1
  16. package/lib/lifecycle/register.d.ts.map +1 -1
  17. package/lib/lifecycle/register.js +152 -51
  18. package/lib/lifecycle/register.js.map +1 -1
  19. package/lib/lifecycle/workingDirectory.d.ts +11 -0
  20. package/lib/lifecycle/workingDirectory.d.ts.map +1 -0
  21. package/lib/lifecycle/workingDirectory.js +40 -0
  22. package/lib/lifecycle/workingDirectory.js.map +1 -0
  23. package/lib/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +10 -11
  25. package/src/asyncLoad.ts +3 -2
  26. package/src/autoindex.ts +109 -115
  27. package/src/child_process/respawn.ts +2 -0
  28. package/src/fs/exists.ts +1 -1
  29. package/src/lifecycle/register.ts +152 -53
  30. package/src/lifecycle/workingDirectory.ts +45 -0
  31. package/lib/autoindex.generated.d.ts +0 -80
  32. package/lib/autoindex.generated.d.ts.map +0 -1
  33. package/lib/autoindex.generated.js +0 -132
  34. package/lib/autoindex.generated.js.map +0 -1
  35. package/lib/error/linux.d.ts +0 -125
  36. package/lib/error/linux.d.ts.map +0 -1
  37. package/lib/error/linux.js +0 -126
  38. package/lib/error/linux.js.map +0 -1
  39. package/lib/error/types.d.ts +0 -24
  40. package/lib/error/types.d.ts.map +0 -1
  41. package/lib/error/types.js +0 -25
  42. package/lib/error/types.js.map +0 -1
  43. package/src/autoindex.generated.ts +0 -159
  44. package/src/error/linux.ts +0 -124
  45. package/src/error/types.ts +0 -39
@@ -1,92 +1,193 @@
1
1
  /** biome-ignore-all lint/suspicious/noDebugger: debug file */
2
- import { AppExit, ensureDisposeGlobal, ensureGlobalObject, prettyPrintError } from '@idlebox/common';
3
- import { createRequire, syncBuiltinESMExports } from 'node:module';
2
+ import { ensureDisposeGlobal, ensureGlobalObject, functionName, isProductionMode, prettyPrintError } from '@idlebox/common';
3
+ import { ErrorWithCode, Exit, ExitCode, InterruptError, UncaughtException, UnhandledRejection } from '@idlebox/errors';
4
+ import assert from 'node:assert';
5
+ import { syncBuiltinESMExports } from 'node:module';
4
6
  import { basename } from 'node:path';
5
7
  import process from 'node:process';
8
+ import { inspect } from 'node:util';
6
9
  const originalExit = process.exit;
7
10
  const prefix = process.stderr.isTTY ? '' : `<${title()} ${process.pid}> `;
8
- const hasInspect = process.argv.some((arg) => arg.startsWith('--inspect=') || arg.startsWith('--inspect-brk=') || arg === '--inspect' || arg === '--inspect-brk');
9
11
  function title() {
10
12
  if (process.title && process.title !== 'node') {
11
13
  return process.title;
12
14
  }
13
15
  return basename(process.argv[1] || '') || 'node';
14
16
  }
15
- class Exit extends AppExit {
16
- constructor(code) {
17
- super(`process exit with code ${code}`, code);
17
+ function getCurrentCode() {
18
+ return typeof process.exitCode === 'string' ? parseInt(process.exitCode) : process.exitCode || 0;
19
+ }
20
+ export function setExitCodeIfNot(exitCode) {
21
+ if (exitCode || typeof process.exitCode !== 'number') {
22
+ process.exitCode = exitCode;
23
+ globalThis.process.exitCode = exitCode;
18
24
  }
19
25
  }
20
- const shuttingDown = false;
26
+ let shuttingDown = 0;
21
27
  export function shutdown(exitCode) {
22
- if (hasInspect)
23
- debugger;
24
- if (exitCode) {
25
- process.exitCode = exitCode;
28
+ _shutdown(exitCode);
29
+ throw new Exit(getCurrentCode());
30
+ }
31
+ function _shutdown(exitCode) {
32
+ setExitCodeIfNot(exitCode);
33
+ if (!shuttingDown) {
34
+ shuttingDown = 1;
35
+ ensureDisposeGlobal().finally(() => {
36
+ originalExit(getCurrentCode());
37
+ });
26
38
  }
27
- const code = typeof process.exitCode === 'string' ? parseInt(process.exitCode) : process.exitCode || 0;
28
- if (shuttingDown) {
29
- throw new Exit(code);
39
+ else {
40
+ shuttingDown++;
30
41
  }
31
- ensureDisposeGlobal().finally(() => {
32
- originalExit(process.exitCode);
33
- });
34
- throw new Exit(code);
42
+ }
43
+ const typed_error_handlers = new WeakMap();
44
+ const inherit_error_handlers = new Map();
45
+ export function registerNodejsGlobalTypedErrorHandlerWithInheritance(ErrorCls, fn) {
46
+ if (typed_error_handlers.has(ErrorCls)) {
47
+ throw new ErrorCls(`conflict register of error type ${ErrorCls.name}`);
48
+ }
49
+ assert.notEqual(ErrorCls, Error, 'cannot register basic Error type');
50
+ inherit_error_handlers.set(ErrorCls, fn);
51
+ }
52
+ export function registerNodejsGlobalTypedErrorHandler(ErrorCls, fn) {
53
+ if (typed_error_handlers.has(ErrorCls)) {
54
+ throw new ErrorCls(`conflict register of error type ${ErrorCls.name}`);
55
+ }
56
+ assert.notEqual(ErrorCls, Error, 'cannot register basic Error type');
57
+ typed_error_handlers.set(ErrorCls, fn);
58
+ }
59
+ function uniqueErrorHandler(e, logger) {
60
+ if (!isProductionMode)
61
+ logger.verbose?.(`uniqueErrorHandler:`);
62
+ if (!(e instanceof Error)) {
63
+ prettyPrintError(`${prefix}catch unexpect object`, new Error(`error object is ${typeof e} ${e ? e.constructor?.name : 'unknown'}`));
64
+ throw originalExit(ExitCode.PROGRAM);
65
+ }
66
+ if (e instanceof Exit) {
67
+ if (!isProductionMode)
68
+ logger.verbose?.(` - skip exit object`);
69
+ if (!shuttingDown) {
70
+ _shutdown(e.code);
71
+ }
72
+ throw e;
73
+ }
74
+ try {
75
+ const catcher = typed_error_handlers.get(e.constructor);
76
+ if (catcher) {
77
+ if (!isProductionMode)
78
+ logger.verbose?.(` - call catcher ${functionName(catcher)}`);
79
+ catcher(e);
80
+ return;
81
+ }
82
+ for (const [Cls, fn] of inherit_error_handlers) {
83
+ if (!isProductionMode)
84
+ logger.verbose?.(` - call inherited catcher ${functionName(fn)}`);
85
+ if (e instanceof Cls) {
86
+ fn(e);
87
+ return;
88
+ }
89
+ }
90
+ }
91
+ catch (ee) {
92
+ prettyPrintError(`${prefix}error while handle error`, {
93
+ message: ee.message,
94
+ stack: ee.stack,
95
+ cause: e,
96
+ });
97
+ return;
98
+ }
99
+ if (e instanceof InterruptError) {
100
+ if (!isProductionMode)
101
+ logger.verbose?.(` - shuttingDown = ${shuttingDown}`);
102
+ if (shuttingDown > 5) {
103
+ logger.output(`${prefix}Exiting immediately.`);
104
+ originalExit(ExitCode.INTERRUPT);
105
+ }
106
+ shutdown(ExitCode.INTERRUPT);
107
+ }
108
+ if (e instanceof UnhandledRejection) {
109
+ if (!isProductionMode)
110
+ logger.verbose?.(` - UnhandledRejection`);
111
+ if (e.cause instanceof Error) {
112
+ prettyPrintError(`${prefix}Unhandled Rejection`, e.cause);
113
+ }
114
+ else {
115
+ logger.output(`${prefix}Unhandled Rejection / error type unknown: ${inspect(e.cause)}`);
116
+ }
117
+ return;
118
+ }
119
+ if (e instanceof UncaughtException) {
120
+ if (!isProductionMode)
121
+ logger.verbose?.(` - UncaughtException`);
122
+ prettyPrintError(`${prefix}Uncaught Exception`, e.cause);
123
+ return;
124
+ }
125
+ if (!isProductionMode)
126
+ logger.verbose?.(` - common error`);
127
+ prettyPrintError(`${prefix}unhandled global exception`, e);
128
+ shutdown(ExitCode.PROGRAM);
35
129
  }
36
130
  /**
37
131
  * 注册nodejs退出处理器
38
132
  */
39
- export function registerNodejsExitHandler() {
40
- ensureGlobalObject('exithandler/register', _real_register);
133
+ export function registerNodejsExitHandler(logger = { output: console.error }) {
134
+ ensureGlobalObject('exithandler/register', () => _real_register(logger));
41
135
  }
42
- function _real_register() {
136
+ function _real_register(logger) {
137
+ logger.verbose?.(`register nodejs exit handler: production=${isProductionMode}`);
43
138
  process.on('SIGINT', () => {
44
- console.error(`\n${prefix}Received SIGINT. Exiting gracefully...`);
45
- if (shuttingDown) {
46
- console.error(`Exiting immediately.`);
47
- originalExit(1);
48
- }
49
- shutdown(0);
139
+ logger.output(`\n${prefix}Received SIGINT. Exiting gracefully...`);
140
+ uniqueErrorHandler(new InterruptError('SIGINT'), logger);
50
141
  });
51
142
  process.on('SIGTERM', () => {
52
- console.error(`${prefix}Received SIGTERM. Exiting gracefully...`);
53
- shutdown(0);
143
+ logger.output(`${prefix}Received SIGTERM. Exiting gracefully...`);
144
+ uniqueErrorHandler(new InterruptError('SIGTERM'), logger);
54
145
  });
55
146
  process.on('beforeExit', (code) => {
56
- console.error(`${prefix}Process beforeExit with code: ${code}`);
57
- shutdown(code);
147
+ // empty handler prevent real exit
148
+ if (!isProductionMode)
149
+ logger.verbose?.(`process: beforeExit: ${code}`);
150
+ if (process.exitCode === undefined || process.exitCode === '') {
151
+ code = ExitCode.EXECUTION;
152
+ logger.output(`${prefix}beforeExit called, but process.exitCode has not been set, switch to ${code}`);
153
+ }
154
+ _shutdown(code);
58
155
  });
59
- process.on('unhandledRejection', (reason, _promise) => {
60
- if (hasInspect)
61
- debugger;
62
- if (reason instanceof Error) {
63
- if (reason instanceof AppExit) {
64
- return;
156
+ function finalThrow(e) {
157
+ try {
158
+ uniqueErrorHandler(e, logger);
159
+ if (e.cause instanceof ErrorWithCode) {
160
+ if (!isProductionMode)
161
+ logger.verbose?.(`finalThrow: got code: ${e.cause.code}`);
162
+ _shutdown(e.cause.code);
163
+ }
164
+ else {
165
+ if (!isProductionMode)
166
+ logger.verbose?.(`finalThrow: not got code: ${e.cause} `);
167
+ _shutdown(ExitCode.PROGRAM);
65
168
  }
66
- prettyPrintError(`${prefix}Unhandled Rejection`, reason);
67
169
  }
68
- else {
69
- console.error(`${prefix}Unhandled Rejection / error type unknown:`, reason);
170
+ catch (e) {
171
+ if (e instanceof Exit) {
172
+ return;
173
+ }
174
+ prettyPrintError('Exception while handling error', e);
175
+ _shutdown(ExitCode.PROGRAM);
70
176
  }
71
- shutdown(1);
177
+ }
178
+ process.on('unhandledRejection', (reason, promise) => {
179
+ finalThrow(new UnhandledRejection(reason, promise));
72
180
  });
73
- const processMdl = createRequire(import.meta.url)('node:process');
74
- processMdl.exit = shutdown;
75
- syncBuiltinESMExports();
76
181
  function uncaughtException(error) {
77
- if (error instanceof AppExit) {
78
- return;
79
- }
80
- if (hasInspect)
81
- debugger;
82
- prettyPrintError(`${prefix}Uncaught Exception`, error);
83
- shutdown(1);
182
+ finalThrow(new UncaughtException(error));
84
183
  }
85
184
  if (process.hasUncaughtExceptionCaptureCallback()) {
86
185
  process.on('uncaughtException', uncaughtException);
87
186
  throw new Error(`${prefix} [uncaught exception capture] callback already registered by other module`);
88
187
  }
89
188
  process.setUncaughtExceptionCaptureCallback(uncaughtException);
189
+ process.exit = shutdown;
190
+ syncBuiltinESMExports();
90
191
  return true;
91
192
  }
92
193
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/lifecycle/register.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC;AAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,eAAe,CAAC,CAAC;AAElK,SAAS,KAAK;IACb,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO,OAAO,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC;AAClD,CAAC;AAED,MAAM,IAAK,SAAQ,OAAO;IACzB,YAAY,IAAY;QACvB,KAAK,CAAC,0BAA0B,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;CACD;AAED,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACxC,IAAI,UAAU;QAAE,QAAQ,CAAC;IAEzB,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAEvG,IAAI,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,mBAAmB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACxC,kBAAkB,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC;AACD,SAAS,cAAc;IACtB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,wCAAwC,CAAC,CAAC;QAEnE,IAAI,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YACtC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,yCAAyC,CAAC,CAAC;QAClE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;QACjC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,iCAAiC,IAAI,EAAE,CAAC,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QACrD,IAAI,UAAU;YAAE,QAAQ,CAAC;QAEzB,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;YAC7B,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC/B,OAAO;YACR,CAAC;YACD,gBAAgB,CAAC,GAAG,MAAM,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,2CAA2C,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC;QACD,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;IAClE,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC;IAC3B,qBAAqB,EAAE,CAAC;IAExB,SAAS,iBAAiB,CAAC,KAAY;QACtC,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;YAC9B,OAAO;QACR,CAAC;QAED,IAAI,UAAU;YAAE,QAAQ,CAAC;QAEzB,gBAAgB,CAAC,GAAG,MAAM,oBAAoB,EAAE,KAAK,CAAC,CAAC;QACvD,QAAQ,CAAC,CAAC,CAAC,CAAC;IACb,CAAC;IAED,IAAI,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;QACnD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,2EAA2E,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,CAAC,mCAAmC,CAAC,iBAAiB,CAAC,CAAC;IAE/D,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,OAAe;IAClC,QAAQ,CAAC;IACT,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/lifecycle/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ declare const wd: {
2
+ cwd(): string;
3
+ chdir(dir: string): void;
4
+ patchGlobal(): void;
5
+ escapeVscodeCwd: typeof escapeVscodeCwd;
6
+ isVscodeShellIntegration: string | undefined;
7
+ };
8
+ export declare const workingDirectory: Readonly<typeof wd>;
9
+ declare function escapeVscodeCwd(path: string): string;
10
+ export {};
11
+ //# sourceMappingURL=workingDirectory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workingDirectory.d.ts","sourceRoot":"","sources":["../../src/lifecycle/workingDirectory.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,EAAE;;eAII,MAAM;;;;CAWjB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAM,CAAC;AAExD,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,UAEpC"}
@@ -0,0 +1,40 @@
1
+ import { noop, vscEscapeValue } from '@idlebox/common';
2
+ import { syncBuiltinESMExports } from 'node:module';
3
+ import process from 'node:process';
4
+ const originalChdir = process.chdir;
5
+ const originalCwd = process.cwd;
6
+ let currentEnvironmentChdir = originalChdir;
7
+ const currentEnvironmentCwd = originalCwd;
8
+ let patch = noop;
9
+ const wd = {
10
+ cwd() {
11
+ return currentEnvironmentCwd();
12
+ },
13
+ chdir(dir) {
14
+ currentEnvironmentChdir(dir);
15
+ },
16
+ patchGlobal() {
17
+ patch();
18
+ wd.cwd = currentEnvironmentCwd;
19
+ wd.chdir = currentEnvironmentChdir;
20
+ wd.patchGlobal = noop;
21
+ },
22
+ escapeVscodeCwd,
23
+ isVscodeShellIntegration: process.env.VSCODE_SHELL_INTEGRATION || process.env.VSCODE_SHELL_INTEGRATION_SHELL_SCRIPT,
24
+ };
25
+ export const workingDirectory = wd;
26
+ function escapeVscodeCwd(path) {
27
+ return `\x1B]633;P;Cwd=${vscEscapeValue(path)}\x07`;
28
+ }
29
+ if (wd.isVscodeShellIntegration) {
30
+ currentEnvironmentChdir = (newRoot) => {
31
+ process.stderr.write(escapeVscodeCwd(newRoot));
32
+ originalChdir(newRoot);
33
+ };
34
+ patch = () => {
35
+ process.chdir = currentEnvironmentChdir;
36
+ globalThis.process.chdir = currentEnvironmentChdir;
37
+ syncBuiltinESMExports();
38
+ };
39
+ }
40
+ //# sourceMappingURL=workingDirectory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workingDirectory.js","sourceRoot":"","sources":["../../src/lifecycle/workingDirectory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;AACpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;AAEhC,IAAI,uBAAuB,GAAG,aAAa,CAAC;AAC5C,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAC1C,IAAI,KAAK,GAAG,IAAI,CAAC;AAEjB,MAAM,EAAE,GAAG;IACV,GAAG;QACF,OAAO,qBAAqB,EAAE,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,GAAW;QAChB,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IACD,WAAW;QACV,KAAK,EAAE,CAAC;QACR,EAAE,CAAC,GAAG,GAAG,qBAAqB,CAAC;QAC/B,EAAE,CAAC,KAAK,GAAG,uBAAuB,CAAC;QACnC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC;IACvB,CAAC;IACD,eAAe;IACf,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,CAAC,GAAG,CAAC,qCAAqC;CACnH,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAwB,EAAE,CAAC;AAExD,SAAS,eAAe,CAAC,IAAY;IACpC,OAAO,kBAAkB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,wBAAwB,EAAE,CAAC;IACjC,uBAAuB,GAAG,CAAC,OAAe,EAAE,EAAE;QAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,aAAa,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC;IACF,KAAK,GAAG,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,GAAG,uBAAuB,CAAC;QACxC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,uBAAuB,CAAC;QACnD,qBAAqB,EAAE,CAAC;IACzB,CAAC,CAAC;AACH,CAAC"}