@zintrust/core 0.4.33 → 0.4.36
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/package.json +4 -4
- package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
- package/src/cache/drivers/RedisDriver.js +1 -1
- package/src/cli/OptionalCliExtensions.d.ts.map +1 -1
- package/src/cli/OptionalCliExtensions.js +1 -0
- package/src/cli/commands/WorkerCommands.d.ts +2 -1
- package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
- package/src/cli/commands/WorkerCommands.js +111 -62
- package/src/cli/services/WorkerStartupDiagnostics.d.ts +41 -0
- package/src/cli/services/WorkerStartupDiagnostics.d.ts.map +1 -0
- package/src/cli/services/WorkerStartupDiagnostics.js +348 -0
- package/src/cli/utils/DistPackager.d.ts.map +1 -1
- package/src/cli/utils/DistPackager.js +22 -18
- package/src/config/queue.d.ts.map +1 -1
- package/src/config/queue.js +5 -3
- package/src/config/workers.d.ts +2 -1
- package/src/config/workers.d.ts.map +1 -1
- package/src/config/workers.js +6 -1
- package/src/index.d.ts +11 -11
- package/src/index.d.ts.map +1 -1
- package/src/index.js +13 -13
- package/src/proxy/CloudflareProxyShared.d.ts +50 -0
- package/src/proxy/CloudflareProxyShared.d.ts.map +1 -0
- package/src/proxy/CloudflareProxyShared.js +117 -0
- package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
- package/src/proxy/d1/ZintrustD1Proxy.js +49 -158
- package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
- package/src/proxy/kv/ZintrustKvProxy.js +41 -142
- package/src/security/CsrfTokenManager.d.ts.map +1 -1
- package/src/security/CsrfTokenManager.js +1 -1
- package/src/security/JwtSessions.d.ts.map +1 -1
- package/src/security/JwtSessions.js +1 -1
- package/src/security/TokenRevocation.d.ts.map +1 -1
- package/src/security/TokenRevocation.js +1 -1
- package/src/tools/queue/LockProvider.d.ts.map +1 -1
- package/src/tools/queue/LockProvider.js +1 -1
- package/src/tools/redis/RedisTransport.d.ts +34 -0
- package/src/tools/redis/RedisTransport.d.ts.map +1 -0
- package/src/tools/redis/RedisTransport.js +251 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zintrust/core",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.36",
|
|
4
4
|
"description": "Production-grade TypeScript backend framework for JavaScript",
|
|
5
5
|
"homepage": "https://zintrust.com",
|
|
6
6
|
"repository": {
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
"./package.json": "./package.json"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@cloudflare/containers": "^0.
|
|
61
|
-
"@zintrust/workers": "^0.4.
|
|
60
|
+
"@cloudflare/containers": "^0.2.0",
|
|
61
|
+
"@zintrust/workers": "^0.4.36",
|
|
62
62
|
"bcryptjs": "^3.0.3",
|
|
63
|
-
"bullmq": "^5.71.
|
|
63
|
+
"bullmq": "^5.71.1",
|
|
64
64
|
"chalk": "^5.6.2",
|
|
65
65
|
"commander": "^14.0.3",
|
|
66
66
|
"inquirer": "^13.3.2",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../../../src/cache/drivers/RedisDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../../../src/cache/drivers/RedisDriver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAmXtD;;GAEG;AACH,eAAO,MAAM,WAAW;kBAXL,WAAW;EAa5B,CAAC"}
|
|
@@ -38,7 +38,7 @@ const createIoredisClient = (params) => {
|
|
|
38
38
|
port: Env.REDIS_PORT,
|
|
39
39
|
password: Env.get('REDIS_PASSWORD', ''),
|
|
40
40
|
db,
|
|
41
|
-
}, 3);
|
|
41
|
+
}, 3, { subsystem: 'cache' });
|
|
42
42
|
return client !== null && typeof client.get === 'function' ? client : null;
|
|
43
43
|
}
|
|
44
44
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionalCliExtensions.d.ts","sourceRoot":"","sources":["../../../src/cli/OptionalCliExtensions.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,KAAK,8BAA8B,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE3F,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC,CAAC;AAEH,KAAK,+BAA+B,GAAG,QAAQ,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"OptionalCliExtensions.d.ts","sourceRoot":"","sources":["../../../src/cli/OptionalCliExtensions.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAAC;AAEF,KAAK,8BAA8B,GAAG,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAE3F,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,8BAA8B,CAAC;CACxC,CAAC,CAAC;AAEH,KAAK,+BAA+B,GAAG,QAAQ,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,CAAC;AAmRH,eAAO,MAAM,qBAAqB;oCACM,OAAO,CAAC,0BAA0B,EAAE,CAAC;sBAQnD,MAAM,EAAE,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;sCAmBhE,MAAM,EAAE,YACJ,aAAa,CAAC,0BAA0B,CAAC,GAClD,0BAA0B,GAAG,SAAS;uCASN,0BAA0B,GAAG,MAAM;mCArDlC,MAAM,EAAE,KAAG,oBAAoB,GAAG,SAAS;EA8D/E,CAAC;AAEH,eAAO,MAAM,6BAA6B;yBAhUhB,MAAM;8BAQD,MAAM;wCAqF5B,oBAAoB,YACjB,+BAA+B,KACxC,MAAM,GAAG,IAAI;kCAjFqB,+BAA+B,KAAG,OAAO;4BAMnE,MAAM,QACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YACnB,+BAA+B,KACxC,IAAI;8CA8FE,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;qCA0BV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;uCAgCV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,OAAO,CAAC;gCAuBV,oBAAoB,YACjB,+BAA+B,KACxC,OAAO,CAAC,0BAA0B,CAAC;gCAwCH,MAAM,EAAE,KAAG,MAAM,GAAG,SAAS;mCAU1B,MAAM,EAAE,KAAG,oBAAoB,GAAG,SAAS;8BAOhD,MAAM,EAAE,KAAG,OAAO;uCAvMT,oBAAoB,KAAG,MAAM,EAAE;gCAwBtC,oBAAoB,KAAG,MAAM,EAAE;EAuPhE,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Worker Management CLI Commands
|
|
3
3
|
* Command-line interface for managing workers
|
|
4
4
|
*/
|
|
5
|
-
import type
|
|
5
|
+
import { type IBaseCommand } from '../BaseCommand';
|
|
6
6
|
/**
|
|
7
7
|
* Export worker command creators
|
|
8
8
|
*/
|
|
@@ -13,6 +13,7 @@ export declare const WorkerCommands: {
|
|
|
13
13
|
createWorkerStartAllCommand: () => IBaseCommand;
|
|
14
14
|
createWorkerStopCommand: () => IBaseCommand;
|
|
15
15
|
createWorkerRestartCommand: () => IBaseCommand;
|
|
16
|
+
createWorkerDoctorCommand: () => IBaseCommand;
|
|
16
17
|
createWorkerSummaryCommand: () => IBaseCommand;
|
|
17
18
|
};
|
|
18
19
|
//# sourceMappingURL=WorkerCommands.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerCommands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/WorkerCommands.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"WorkerCommands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/WorkerCommands.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAyqBvF;;GAEG;AACH,eAAO,MAAM,cAAc;mCAneS,YAAY;qCA4CV,YAAY;oCAiDb,YAAY;uCA2NT,YAAY;mCAgDhB,YAAY;sCAgCT,YAAY;qCAtEb,YAAY;sCAsGX,YAAY;CAoElD,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
7
7
|
import { BaseCommand } from '../BaseCommand.js';
|
|
8
|
+
import { WorkerStartupDiagnostics, } from '../services/WorkerStartupDiagnostics.js';
|
|
8
9
|
import { Env } from '../../config/env.js';
|
|
9
10
|
import { Logger } from '../../config/logger.js';
|
|
10
11
|
import { WorkerProjectAutoImports } from '../../runtime/WorkerProjectAutoImports.js';
|
|
@@ -100,6 +101,14 @@ const formatTable = (headers, rows) => {
|
|
|
100
101
|
const dataRows = rows.map((row) => row.map((cell, i) => (cell || '').padEnd(columnWidths[i])).join(' | '));
|
|
101
102
|
return [headerRow, separator, ...dataRows].join('\n');
|
|
102
103
|
};
|
|
104
|
+
const logFirstFaultSummaryOnce = (state, error, context) => {
|
|
105
|
+
const report = WorkerStartupDiagnostics.collect(error);
|
|
106
|
+
if (!state.logged) {
|
|
107
|
+
state.logged = true;
|
|
108
|
+
WorkerStartupDiagnostics.log(error, context);
|
|
109
|
+
}
|
|
110
|
+
return report;
|
|
111
|
+
};
|
|
103
112
|
/**
|
|
104
113
|
* Worker List Command
|
|
105
114
|
*/
|
|
@@ -270,78 +279,117 @@ const resolveAutoStartWorkerNames = async (factory, workersModule) => {
|
|
|
270
279
|
}
|
|
271
280
|
return { names: fileNames, source: fileNames.length > 0 ? 'file' : 'none' };
|
|
272
281
|
};
|
|
282
|
+
const resolveEligibleWorkers = async (factory, workersModule) => {
|
|
283
|
+
const { names: workers, source } = await resolveAutoStartWorkerNames(factory, workersModule);
|
|
284
|
+
if (workers.length === 0) {
|
|
285
|
+
Logger.info('No auto-start eligible persisted or file-backed workers found.');
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
if (source !== 'persisted') {
|
|
289
|
+
return workers;
|
|
290
|
+
}
|
|
291
|
+
const discoveredWorkers = await pollForPersistedWorkers(factory);
|
|
292
|
+
return workers.filter((name) => discoveredWorkers.includes(name));
|
|
293
|
+
};
|
|
294
|
+
const startEligibleWorker = async (factory, name, diagnosticsState) => {
|
|
295
|
+
const existing = await factory.get(name);
|
|
296
|
+
if (existing !== null && existing !== undefined) {
|
|
297
|
+
const trulyRunning = await isRegisteredWorkerRunning(existing);
|
|
298
|
+
if (trulyRunning) {
|
|
299
|
+
return { name, status: 'skipped' };
|
|
300
|
+
}
|
|
301
|
+
Logger.warn(`Worker "${name}" is registered but not truly running. Restarting for crash recovery.`);
|
|
302
|
+
try {
|
|
303
|
+
await factory.restart(name);
|
|
304
|
+
return { name, status: 'started' };
|
|
305
|
+
}
|
|
306
|
+
catch (error) {
|
|
307
|
+
logFirstFaultSummaryOnce(diagnosticsState, error, `worker:start-all failed while restarting "${name}"`);
|
|
308
|
+
Logger.warn(`Failed to restart stale worker "${name}"`, error);
|
|
309
|
+
return { name, status: 'failed' };
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
await factory.startFromPersisted(name);
|
|
314
|
+
return { name, status: 'started' };
|
|
315
|
+
}
|
|
316
|
+
catch (error) {
|
|
317
|
+
logFirstFaultSummaryOnce(diagnosticsState, error, `worker:start-all failed while starting "${name}"`);
|
|
318
|
+
Logger.warn(`Failed to start worker "${name}"`, error);
|
|
319
|
+
return { name, status: 'failed' };
|
|
320
|
+
}
|
|
321
|
+
};
|
|
322
|
+
const executeWorkerStartAll = async () => {
|
|
323
|
+
const diagnosticsState = { logged: false };
|
|
324
|
+
try {
|
|
325
|
+
const globalAutoStart = Env.getBool('WORKER_AUTO_START', false);
|
|
326
|
+
if (!globalAutoStart) {
|
|
327
|
+
Logger.info('Skipping auto-start because WORKER_AUTO_START is false.');
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const factory = await getWorkerFactory();
|
|
331
|
+
const workersModule = await loadWorkersModule();
|
|
332
|
+
const eligibleWorkers = await resolveEligibleWorkers(factory, workersModule);
|
|
333
|
+
if (eligibleWorkers.length === 0) {
|
|
334
|
+
Logger.info('No auto-start eligible workers are currently available.');
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
const results = await Promise.all(eligibleWorkers.map(async (name) => startEligibleWorker(factory, name, diagnosticsState)));
|
|
338
|
+
const started = results.filter((result) => result.status === 'started').length;
|
|
339
|
+
const skipped = results.filter((result) => result.status === 'skipped').length;
|
|
340
|
+
const failed = results.filter((result) => result.status === 'failed').length;
|
|
341
|
+
Logger.info('Worker start-all summary', {
|
|
342
|
+
total: eligibleWorkers.length,
|
|
343
|
+
started,
|
|
344
|
+
skipped,
|
|
345
|
+
failed,
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
logFirstFaultSummaryOnce(diagnosticsState, error, 'worker:start-all failed');
|
|
350
|
+
Logger.error('worker:start-all command failed', error);
|
|
351
|
+
process.exit(1);
|
|
352
|
+
}
|
|
353
|
+
};
|
|
273
354
|
/**
|
|
274
355
|
* Worker Start All Command
|
|
275
356
|
*/
|
|
276
357
|
const createWorkerStartAllCommand = () => {
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
-
if (eligibleWorkers.length === 0) {
|
|
297
|
-
Logger.info('No auto-start eligible workers are currently available.');
|
|
298
|
-
return;
|
|
358
|
+
const cmd = BaseCommand.create({
|
|
359
|
+
name: 'worker:start-all',
|
|
360
|
+
description: 'Start all persisted workers',
|
|
361
|
+
execute: executeWorkerStartAll,
|
|
362
|
+
});
|
|
363
|
+
return cmd;
|
|
364
|
+
};
|
|
365
|
+
const createWorkerDoctorCommand = () => {
|
|
366
|
+
const ext = (options) => {
|
|
367
|
+
const json = options['json'] === true;
|
|
368
|
+
const report = WorkerStartupDiagnostics.collect();
|
|
369
|
+
if (json) {
|
|
370
|
+
console.log(JSON.stringify(report, null, 2));
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
console.log();
|
|
374
|
+
for (const line of WorkerStartupDiagnostics.renderLines(report)) {
|
|
375
|
+
console.log(line);
|
|
299
376
|
}
|
|
300
|
-
|
|
301
|
-
const existing = await factory.get(name);
|
|
302
|
-
if (existing !== null && existing !== undefined) {
|
|
303
|
-
const trulyRunning = await isRegisteredWorkerRunning(existing);
|
|
304
|
-
if (trulyRunning) {
|
|
305
|
-
return { name, status: 'skipped' };
|
|
306
|
-
}
|
|
307
|
-
Logger.warn(`Worker "${name}" is registered but not truly running. Restarting for crash recovery.`);
|
|
308
|
-
try {
|
|
309
|
-
await factory.restart(name);
|
|
310
|
-
return { name, status: 'started' };
|
|
311
|
-
}
|
|
312
|
-
catch (error) {
|
|
313
|
-
Logger.warn(`Failed to restart stale worker "${name}"`, error);
|
|
314
|
-
return { name, status: 'failed' };
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
try {
|
|
318
|
-
await factory.startFromPersisted(name);
|
|
319
|
-
return { name, status: 'started' };
|
|
320
|
-
}
|
|
321
|
-
catch (error) {
|
|
322
|
-
Logger.warn(`Failed to start worker "${name}"`, error);
|
|
323
|
-
return { name, status: 'failed' };
|
|
324
|
-
}
|
|
325
|
-
}));
|
|
326
|
-
const started = results.filter((result) => result.status === 'started').length;
|
|
327
|
-
const skipped = results.filter((result) => result.status === 'skipped').length;
|
|
328
|
-
const failed = results.filter((result) => result.status === 'failed').length;
|
|
329
|
-
Logger.info('Worker start-all summary', {
|
|
330
|
-
total: eligibleWorkers.length,
|
|
331
|
-
started,
|
|
332
|
-
skipped,
|
|
333
|
-
failed,
|
|
334
|
-
});
|
|
377
|
+
console.log();
|
|
335
378
|
}
|
|
336
|
-
|
|
337
|
-
Logger.error('worker:start-all command failed', error);
|
|
379
|
+
if (WorkerStartupDiagnostics.hasBlockingIssues(report)) {
|
|
338
380
|
process.exit(1);
|
|
339
381
|
}
|
|
340
382
|
};
|
|
341
383
|
const cmd = BaseCommand.create({
|
|
342
|
-
name: 'worker:
|
|
343
|
-
description: '
|
|
344
|
-
|
|
384
|
+
name: 'worker:doctor',
|
|
385
|
+
description: 'Print worker startup diagnostics and likely missing env keys',
|
|
386
|
+
addOptions: (command) => {
|
|
387
|
+
command.option('--json', 'Print machine-readable diagnostics');
|
|
388
|
+
},
|
|
389
|
+
execute: async (options) => {
|
|
390
|
+
await Promise.resolve();
|
|
391
|
+
ext(options);
|
|
392
|
+
},
|
|
345
393
|
});
|
|
346
394
|
return cmd;
|
|
347
395
|
};
|
|
@@ -461,5 +509,6 @@ export const WorkerCommands = {
|
|
|
461
509
|
createWorkerStartAllCommand,
|
|
462
510
|
createWorkerStopCommand,
|
|
463
511
|
createWorkerRestartCommand,
|
|
512
|
+
createWorkerDoctorCommand,
|
|
464
513
|
createWorkerSummaryCommand,
|
|
465
514
|
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
type IssueSeverity = 'error' | 'warn' | 'info';
|
|
2
|
+
export type WorkerStartupIssue = Readonly<{
|
|
3
|
+
severity: IssueSeverity;
|
|
4
|
+
message: string;
|
|
5
|
+
envKeys: ReadonlyArray<string>;
|
|
6
|
+
}>;
|
|
7
|
+
export type WorkerStartupEnvStatus = Readonly<{
|
|
8
|
+
key: string;
|
|
9
|
+
present: boolean;
|
|
10
|
+
resolvedValue: string;
|
|
11
|
+
explicitValue: string;
|
|
12
|
+
}>;
|
|
13
|
+
export type WorkerStartupDiagnosticsReport = Readonly<{
|
|
14
|
+
flags: Readonly<{
|
|
15
|
+
runtimeMode: string;
|
|
16
|
+
workerEnabled: boolean;
|
|
17
|
+
workerAutoStart: boolean;
|
|
18
|
+
dockerWorker: boolean;
|
|
19
|
+
queueEnabled: boolean;
|
|
20
|
+
queueDriver: string;
|
|
21
|
+
persistenceDriver: string;
|
|
22
|
+
}>;
|
|
23
|
+
issues: ReadonlyArray<WorkerStartupIssue>;
|
|
24
|
+
missingEnvKeys: ReadonlyArray<string>;
|
|
25
|
+
envStatus: ReadonlyArray<WorkerStartupEnvStatus>;
|
|
26
|
+
firstFault: Readonly<{
|
|
27
|
+
message: string;
|
|
28
|
+
code?: string;
|
|
29
|
+
}> | null;
|
|
30
|
+
logPointers: ReadonlyArray<string>;
|
|
31
|
+
nextSteps: ReadonlyArray<string>;
|
|
32
|
+
}>;
|
|
33
|
+
export declare const WorkerStartupDiagnostics: Readonly<{
|
|
34
|
+
collect: (error?: unknown) => WorkerStartupDiagnosticsReport;
|
|
35
|
+
renderLines: (report: WorkerStartupDiagnosticsReport) => string[];
|
|
36
|
+
log: (error?: unknown, context?: string) => WorkerStartupDiagnosticsReport;
|
|
37
|
+
hasBlockingIssues: (report: WorkerStartupDiagnosticsReport) => boolean;
|
|
38
|
+
createCliError(message: string): Error;
|
|
39
|
+
}>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=WorkerStartupDiagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerStartupDiagnostics.d.ts","sourceRoot":"","sources":["../../../../src/cli/services/WorkerStartupDiagnostics.ts"],"names":[],"mappings":"AAMA,KAAK,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,KAAK,EAAE,QAAQ,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,OAAO,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACjD,UAAU,EAAE,QAAQ,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,GAAG,IAAI,CAAC;IACV,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAClC,CAAC,CAAC;AA4bH,eAAO,MAAM,wBAAwB;sBAxFZ,OAAO,KAAG,8BAA8B;0BAwCpC,8BAA8B,KAAG,MAAM,EAAE;kBA0BjD,OAAO,uBAA+B,8BAA8B;gCAmBtD,8BAA8B,KAAG,OAAO;4BAQjD,MAAM,GAAG,KAAK;EAGtC,CAAC"}
|