@bluelibs/runner 4.7.0 → 4.8.1
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/AI.md +88 -95
- package/README.md +205 -144
- package/dist/browser/index.cjs +739 -487
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +736 -487
- package/dist/browser/index.mjs.map +1 -1
- package/dist/define.d.ts +1 -1
- package/dist/definers/builders/asyncContext.d.ts +11 -0
- package/dist/definers/builders/error.d.ts +13 -0
- package/dist/definers/builders/middleware.d.ts +3 -3
- package/dist/definers/defineAsyncContext.d.ts +15 -0
- package/dist/definers/defineError.d.ts +26 -0
- package/dist/definers/tools.d.ts +6 -0
- package/dist/edge/index.cjs +739 -487
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.mjs +736 -487
- package/dist/edge/index.mjs.map +1 -1
- package/dist/errors.d.ts +60 -102
- package/dist/globals/debug.d.ts +10 -0
- package/dist/globals/globalMiddleware.d.ts +3 -3
- package/dist/globals/middleware/requireContext.middleware.d.ts +2 -2
- package/dist/globals/resources/tunnel/protocol.d.ts +8 -1
- package/dist/globals/resources/tunnel/serializer.d.ts +1 -1
- package/dist/globals/types.d.ts +1 -0
- package/dist/http-client.d.ts +4 -0
- package/dist/http-fetch-tunnel.resource.d.ts +11 -0
- package/dist/index.d.ts +14 -5
- package/dist/models/Store.d.ts +6 -2
- package/dist/models/StoreRegistry.d.ts +6 -0
- package/dist/node/exposure/httpResponse.d.ts +1 -1
- package/dist/node/exposure/requestContext.d.ts +1 -1
- package/dist/node/{mixed-http-client.node.d.ts → http-mixed-client.d.ts} +1 -1
- package/dist/node/http-smart-client.model.d.ts +2 -0
- package/dist/node/node.cjs +918 -4296
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +914 -4296
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/asyncContext.d.ts +39 -0
- package/dist/types/error.d.ts +34 -0
- package/dist/types/runner.d.ts +13 -0
- package/dist/types/symbols.d.ts +6 -0
- package/dist/types/utilities.d.ts +6 -4
- package/dist/universal/index.cjs +739 -487
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.mjs +736 -487
- package/dist/universal/index.mjs.map +1 -1
- package/dist/utils/detectRunnerMode.d.ts +9 -0
- package/package.json +1 -1
- package/dist/context.d.ts +0 -31
package/dist/browser/index.cjs
CHANGED
|
@@ -19,8 +19,11 @@ var __export = (target, all) => {
|
|
|
19
19
|
// src/defs.ts
|
|
20
20
|
var defs_exports = {};
|
|
21
21
|
__export(defs_exports, {
|
|
22
|
+
RunnerMode: () => RunnerMode,
|
|
22
23
|
isOneOf: () => isOneOf,
|
|
23
24
|
onAnyOf: () => onAnyOf,
|
|
25
|
+
symbolAsyncContext: () => symbolAsyncContext,
|
|
26
|
+
symbolError: () => symbolError,
|
|
24
27
|
symbolEvent: () => symbolEvent,
|
|
25
28
|
symbolFilePath: () => symbolFilePath,
|
|
26
29
|
symbolHook: () => symbolHook,
|
|
@@ -35,6 +38,7 @@ __export(defs_exports, {
|
|
|
35
38
|
symbolTagConfigured: () => symbolTagConfigured,
|
|
36
39
|
symbolTask: () => symbolTask,
|
|
37
40
|
symbolTaskMiddleware: () => symbolTaskMiddleware,
|
|
41
|
+
symbolTunneledBy: () => symbolTunneledBy,
|
|
38
42
|
symbolTunneledTask: () => symbolTunneledTask
|
|
39
43
|
});
|
|
40
44
|
|
|
@@ -48,6 +52,7 @@ var symbolResourceWithConfig = Symbol.for(
|
|
|
48
52
|
"runner.resourceWithConfig"
|
|
49
53
|
);
|
|
50
54
|
var symbolEvent = Symbol.for("runner.event");
|
|
55
|
+
var symbolError = Symbol.for("runner.error");
|
|
51
56
|
var symbolMiddleware = Symbol.for("runner.middleware");
|
|
52
57
|
var symbolTaskMiddleware = Symbol.for(
|
|
53
58
|
"runner.taskMiddleware"
|
|
@@ -61,6 +66,9 @@ var symbolMiddlewareConfigured = Symbol.for(
|
|
|
61
66
|
var symbolTunneledTask = Symbol.for(
|
|
62
67
|
"runner.tunneledTask"
|
|
63
68
|
);
|
|
69
|
+
var symbolTunneledBy = Symbol.for(
|
|
70
|
+
"runner.tunneledBy"
|
|
71
|
+
);
|
|
64
72
|
var symbolHook = Symbol.for("runner.hook");
|
|
65
73
|
var symbolTag = Symbol.for("runner.tag");
|
|
66
74
|
var symbolTagConfigured = Symbol.for(
|
|
@@ -70,6 +78,9 @@ var symbolOptionalDependency = Symbol.for(
|
|
|
70
78
|
"runner.optionalDependency"
|
|
71
79
|
);
|
|
72
80
|
var symbolFilePath = Symbol.for("runner.filePath");
|
|
81
|
+
var symbolAsyncContext = Symbol.for(
|
|
82
|
+
"runner.asyncContext"
|
|
83
|
+
);
|
|
73
84
|
|
|
74
85
|
// src/types/event.ts
|
|
75
86
|
function onAnyOf(...defs) {
|
|
@@ -80,6 +91,14 @@ function isOneOf(emission, defs) {
|
|
|
80
91
|
return defs.some((d) => d.id === emission.id);
|
|
81
92
|
}
|
|
82
93
|
__name(isOneOf, "isOneOf");
|
|
94
|
+
|
|
95
|
+
// src/types/runner.ts
|
|
96
|
+
var RunnerMode = /* @__PURE__ */ ((RunnerMode2) => {
|
|
97
|
+
RunnerMode2["TEST"] = "test";
|
|
98
|
+
RunnerMode2["DEV"] = "dev";
|
|
99
|
+
RunnerMode2["PROD"] = "prod";
|
|
100
|
+
return RunnerMode2;
|
|
101
|
+
})(RunnerMode || {});
|
|
83
102
|
var cacheFactoryTask = defineTask({
|
|
84
103
|
id: "globals.tasks.cacheFactory",
|
|
85
104
|
run: /* @__PURE__ */ __name(async (options) => {
|
|
@@ -224,29 +243,126 @@ __name(defineHook, "defineHook");
|
|
|
224
243
|
// src/errors.ts
|
|
225
244
|
var errors_exports = {};
|
|
226
245
|
__export(errors_exports, {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
246
|
+
cancellationError: () => cancellationError,
|
|
247
|
+
circularDependenciesError: () => circularDependenciesError,
|
|
248
|
+
contextError: () => contextError,
|
|
249
|
+
dependencyNotFoundError: () => dependencyNotFoundError,
|
|
250
|
+
duplicateRegistrationError: () => duplicateRegistrationError,
|
|
251
|
+
eventCycleError: () => eventCycleError,
|
|
252
|
+
eventEmissionCycleError: () => eventEmissionCycleError,
|
|
253
|
+
eventNotFoundError: () => eventNotFoundError,
|
|
254
|
+
isCancellationError: () => isCancellationError,
|
|
255
|
+
lockedError: () => lockedError,
|
|
256
|
+
middlewareNotRegisteredError: () => middlewareNotRegisteredError,
|
|
257
|
+
platformUnsupportedFunctionError: () => platformUnsupportedFunctionError,
|
|
258
|
+
resourceNotFoundError: () => resourceNotFoundError,
|
|
259
|
+
storeAlreadyInitializedError: () => storeAlreadyInitializedError,
|
|
260
|
+
tagNotFoundError: () => tagNotFoundError,
|
|
261
|
+
tunnelOwnershipConflictError: () => tunnelOwnershipConflictError,
|
|
262
|
+
unknownItemTypeError: () => unknownItemTypeError,
|
|
263
|
+
validationError: () => validationError
|
|
245
264
|
});
|
|
246
265
|
|
|
266
|
+
// src/definers/defineError.ts
|
|
267
|
+
var RunnerError = class extends Error {
|
|
268
|
+
constructor(id2, message, data) {
|
|
269
|
+
super(message);
|
|
270
|
+
this.id = id2;
|
|
271
|
+
this.data = data;
|
|
272
|
+
this.name = id2;
|
|
273
|
+
}
|
|
274
|
+
static {
|
|
275
|
+
__name(this, "RunnerError");
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
var _a;
|
|
279
|
+
_a = symbolError;
|
|
280
|
+
var ErrorHelper = class {
|
|
281
|
+
constructor(definition) {
|
|
282
|
+
this.definition = definition;
|
|
283
|
+
this[_a] = true;
|
|
284
|
+
}
|
|
285
|
+
static {
|
|
286
|
+
__name(this, "ErrorHelper");
|
|
287
|
+
}
|
|
288
|
+
get id() {
|
|
289
|
+
return this.definition.id;
|
|
290
|
+
}
|
|
291
|
+
throw(data) {
|
|
292
|
+
const parsed = this.definition.dataSchema ? this.definition.dataSchema.parse(data) : data;
|
|
293
|
+
const message = this.definition.format(parsed);
|
|
294
|
+
throw new RunnerError(this.definition.id, message, parsed);
|
|
295
|
+
}
|
|
296
|
+
is(error2) {
|
|
297
|
+
return error2 instanceof RunnerError && error2.name === this.definition.id;
|
|
298
|
+
}
|
|
299
|
+
optional() {
|
|
300
|
+
return {
|
|
301
|
+
inner: this,
|
|
302
|
+
[symbolOptionalDependency]: true
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
function defineError(definition) {
|
|
307
|
+
if (!definition.format) {
|
|
308
|
+
definition.format = (data) => `${JSON.stringify(data)}`;
|
|
309
|
+
}
|
|
310
|
+
return new ErrorHelper(definition);
|
|
311
|
+
}
|
|
312
|
+
__name(defineError, "defineError");
|
|
313
|
+
|
|
314
|
+
// src/definers/builders/error.ts
|
|
315
|
+
function clone(s, patch) {
|
|
316
|
+
return Object.freeze({ ...s, ...patch });
|
|
317
|
+
}
|
|
318
|
+
__name(clone, "clone");
|
|
319
|
+
function makeErrorBuilder(state) {
|
|
320
|
+
const b = {
|
|
321
|
+
id: state.id,
|
|
322
|
+
serialize(fn) {
|
|
323
|
+
const next = clone(state, { serialize: fn });
|
|
324
|
+
return makeErrorBuilder(next);
|
|
325
|
+
},
|
|
326
|
+
parse(fn) {
|
|
327
|
+
const next = clone(state, { parse: fn });
|
|
328
|
+
return makeErrorBuilder(next);
|
|
329
|
+
},
|
|
330
|
+
dataSchema(schema) {
|
|
331
|
+
const next = clone(state, { dataSchema: schema });
|
|
332
|
+
return makeErrorBuilder(next);
|
|
333
|
+
},
|
|
334
|
+
format(fn) {
|
|
335
|
+
const next = clone(state, { format: fn });
|
|
336
|
+
return makeErrorBuilder(next);
|
|
337
|
+
},
|
|
338
|
+
build() {
|
|
339
|
+
return defineError({
|
|
340
|
+
id: state.id,
|
|
341
|
+
serialize: state.serialize,
|
|
342
|
+
parse: state.parse,
|
|
343
|
+
dataSchema: state.dataSchema,
|
|
344
|
+
format: state.format
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
return b;
|
|
349
|
+
}
|
|
350
|
+
__name(makeErrorBuilder, "makeErrorBuilder");
|
|
351
|
+
function errorBuilder(id2) {
|
|
352
|
+
const initial = Object.freeze({
|
|
353
|
+
id: id2,
|
|
354
|
+
serialize: void 0,
|
|
355
|
+
parse: void 0,
|
|
356
|
+
dataSchema: void 0
|
|
357
|
+
});
|
|
358
|
+
return makeErrorBuilder(initial);
|
|
359
|
+
}
|
|
360
|
+
__name(errorBuilder, "errorBuilder");
|
|
361
|
+
var error = errorBuilder;
|
|
362
|
+
|
|
247
363
|
// src/platform/adapters/node-als.ts
|
|
248
364
|
async function loadAsyncLocalStorageClass() {
|
|
249
|
-
const mod =
|
|
365
|
+
const mod = __require("async_hooks");
|
|
250
366
|
return mod.AsyncLocalStorage;
|
|
251
367
|
}
|
|
252
368
|
__name(loadAsyncLocalStorageClass, "loadAsyncLocalStorageClass");
|
|
@@ -367,7 +483,7 @@ var BrowserPlatformAdapter = class {
|
|
|
367
483
|
};
|
|
368
484
|
}
|
|
369
485
|
exit() {
|
|
370
|
-
throw
|
|
486
|
+
platformUnsupportedFunctionError.throw({ functionName: "exit" });
|
|
371
487
|
}
|
|
372
488
|
getEnv(key) {
|
|
373
489
|
const g = globalThis;
|
|
@@ -383,10 +499,14 @@ var BrowserPlatformAdapter = class {
|
|
|
383
499
|
createAsyncLocalStorage() {
|
|
384
500
|
return {
|
|
385
501
|
getStore: /* @__PURE__ */ __name(() => {
|
|
386
|
-
throw
|
|
502
|
+
platformUnsupportedFunctionError.throw({
|
|
503
|
+
functionName: "createAsyncLocalStorage"
|
|
504
|
+
});
|
|
387
505
|
}, "getStore"),
|
|
388
|
-
run: /* @__PURE__ */ __name(() => {
|
|
389
|
-
throw
|
|
506
|
+
run: /* @__PURE__ */ __name((_store, _callback) => {
|
|
507
|
+
platformUnsupportedFunctionError.throw({
|
|
508
|
+
functionName: "createAsyncLocalStorage"
|
|
509
|
+
});
|
|
390
510
|
}, "run")
|
|
391
511
|
};
|
|
392
512
|
}
|
|
@@ -462,7 +582,7 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
462
582
|
};
|
|
463
583
|
}
|
|
464
584
|
exit() {
|
|
465
|
-
throw
|
|
585
|
+
platformUnsupportedFunctionError.throw({ functionName: "exit" });
|
|
466
586
|
}
|
|
467
587
|
getEnv(key) {
|
|
468
588
|
const g = globalThis;
|
|
@@ -478,10 +598,14 @@ var GenericUniversalPlatformAdapter = class {
|
|
|
478
598
|
createAsyncLocalStorage() {
|
|
479
599
|
return {
|
|
480
600
|
getStore: /* @__PURE__ */ __name(() => {
|
|
481
|
-
throw
|
|
601
|
+
platformUnsupportedFunctionError.throw({
|
|
602
|
+
functionName: "createAsyncLocalStorage"
|
|
603
|
+
});
|
|
482
604
|
}, "getStore"),
|
|
483
|
-
run: /* @__PURE__ */ __name(() => {
|
|
484
|
-
throw
|
|
605
|
+
run: /* @__PURE__ */ __name((_store, _callback) => {
|
|
606
|
+
platformUnsupportedFunctionError.throw({
|
|
607
|
+
functionName: "createAsyncLocalStorage"
|
|
608
|
+
});
|
|
485
609
|
}, "run")
|
|
486
610
|
};
|
|
487
611
|
}
|
|
@@ -678,198 +802,90 @@ var PlatformAdapter = class {
|
|
|
678
802
|
};
|
|
679
803
|
|
|
680
804
|
// src/errors.ts
|
|
681
|
-
var
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
var
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
|
|
744
|
-
guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
|
|
745
|
-
}
|
|
746
|
-
super(`Circular dependencies detected:
|
|
747
|
-
${cycleDetails}${guidance}`);
|
|
748
|
-
this.name = "CircularDependenciesError";
|
|
749
|
-
}
|
|
750
|
-
};
|
|
751
|
-
var EventNotFoundError = class extends RuntimeError {
|
|
752
|
-
static {
|
|
753
|
-
__name(this, "EventNotFoundError");
|
|
754
|
-
}
|
|
755
|
-
constructor(id2) {
|
|
756
|
-
super(`Event "${id2.toString()}" not found. Did you forget to register it?`);
|
|
757
|
-
this.name = "EventNotFoundError";
|
|
758
|
-
}
|
|
759
|
-
};
|
|
760
|
-
var ResourceNotFoundError = class extends RuntimeError {
|
|
761
|
-
static {
|
|
762
|
-
__name(this, "ResourceNotFoundError");
|
|
763
|
-
}
|
|
764
|
-
constructor(id2) {
|
|
765
|
-
super(
|
|
766
|
-
`Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
767
|
-
);
|
|
768
|
-
this.name = "ResourceNotFoundError";
|
|
769
|
-
}
|
|
770
|
-
};
|
|
771
|
-
var MiddlewareNotRegisteredError = class extends RuntimeError {
|
|
772
|
-
static {
|
|
773
|
-
__name(this, "MiddlewareNotRegisteredError");
|
|
774
|
-
}
|
|
775
|
-
constructor(type, source, middlewareId) {
|
|
776
|
-
super(
|
|
777
|
-
`Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
778
|
-
);
|
|
779
|
-
this.name = `MiddlewareNotRegisteredError: ${type} ${source} ${middlewareId}`;
|
|
780
|
-
}
|
|
781
|
-
};
|
|
782
|
-
var TagNotFoundError = class extends RuntimeError {
|
|
783
|
-
static {
|
|
784
|
-
__name(this, "TagNotFoundError");
|
|
785
|
-
}
|
|
786
|
-
constructor(id2) {
|
|
787
|
-
super(
|
|
788
|
-
`Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
789
|
-
);
|
|
790
|
-
this.name = "TagNotRegisteredError";
|
|
791
|
-
}
|
|
792
|
-
};
|
|
793
|
-
var LockedError = class extends RuntimeError {
|
|
794
|
-
static {
|
|
795
|
-
__name(this, "LockedError");
|
|
796
|
-
}
|
|
797
|
-
constructor(what) {
|
|
798
|
-
super(`Cannot modify the ${what.toString()} when it is locked.`);
|
|
799
|
-
this.name = "LockedError";
|
|
800
|
-
}
|
|
801
|
-
};
|
|
802
|
-
var StoreAlreadyInitializedError = class extends RuntimeError {
|
|
803
|
-
static {
|
|
804
|
-
__name(this, "StoreAlreadyInitializedError");
|
|
805
|
-
}
|
|
806
|
-
constructor() {
|
|
807
|
-
super("Store already initialized. Cannot reinitialize.");
|
|
808
|
-
this.name = "StoreAlreadyInitializedError";
|
|
809
|
-
}
|
|
810
|
-
};
|
|
811
|
-
var ValidationError = class extends RuntimeError {
|
|
812
|
-
static {
|
|
813
|
-
__name(this, "ValidationError");
|
|
814
|
-
}
|
|
815
|
-
constructor(type, id2, originalError) {
|
|
816
|
-
const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
|
|
817
|
-
super(`${type} validation failed for ${id2.toString()}: ${errorMessage}`);
|
|
818
|
-
this.name = "ValidationError";
|
|
819
|
-
}
|
|
820
|
-
};
|
|
821
|
-
var EventCycleError = class extends RuntimeError {
|
|
822
|
-
static {
|
|
823
|
-
__name(this, "EventCycleError");
|
|
824
|
-
}
|
|
825
|
-
constructor(path) {
|
|
826
|
-
const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
827
|
-
super(
|
|
828
|
-
`Event emission cycle detected:
|
|
805
|
+
var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
|
|
806
|
+
({ type, id: id2 }) => `${type} "${id2.toString()}" already registered. You might have used the same 'id' in two different components or you may have registered the same element twice.`
|
|
807
|
+
).build();
|
|
808
|
+
var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
|
|
809
|
+
({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
|
|
810
|
+
).build();
|
|
811
|
+
var unknownItemTypeError = error(
|
|
812
|
+
"runner.errors.unknownItemType"
|
|
813
|
+
).format(
|
|
814
|
+
({ item }) => `Unknown item type: ${String(
|
|
815
|
+
item
|
|
816
|
+
)}. Please ensure you are not using different versions of '@bluelibs/runner'`
|
|
817
|
+
).build();
|
|
818
|
+
var contextError = error(
|
|
819
|
+
"runner.errors.context"
|
|
820
|
+
).format(({ details }) => details ?? "Context error").build();
|
|
821
|
+
var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
|
|
822
|
+
const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
|
|
823
|
+
const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
|
|
824
|
+
let guidance = "\n\nTo resolve circular dependencies:";
|
|
825
|
+
guidance += "\n \u2022 Consider refactoring to reduce coupling between components";
|
|
826
|
+
guidance += "\n \u2022 Extract shared dependencies into separate resources";
|
|
827
|
+
if (hasMiddleware) {
|
|
828
|
+
guidance += "\n \u2022 For middleware: you can filter out tasks/resources using everywhere(fn)";
|
|
829
|
+
guidance += "\n \u2022 Consider using events for communication instead of direct dependencies";
|
|
830
|
+
}
|
|
831
|
+
return `Circular dependencies detected:
|
|
832
|
+
${cycleDetails}${guidance}`;
|
|
833
|
+
}).build();
|
|
834
|
+
var eventNotFoundError = error(
|
|
835
|
+
"runner.errors.eventNotFound"
|
|
836
|
+
).format(
|
|
837
|
+
({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
|
|
838
|
+
).build();
|
|
839
|
+
var resourceNotFoundError = error(
|
|
840
|
+
"runner.errors.resourceNotFound"
|
|
841
|
+
).format(
|
|
842
|
+
({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
843
|
+
).build();
|
|
844
|
+
var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
|
|
845
|
+
({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
846
|
+
).build();
|
|
847
|
+
var tagNotFoundError = error(
|
|
848
|
+
"runner.errors.tagNotFound"
|
|
849
|
+
).format(
|
|
850
|
+
({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
851
|
+
).build();
|
|
852
|
+
var lockedError = error(
|
|
853
|
+
"runner.errors.locked"
|
|
854
|
+
).format(
|
|
855
|
+
({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
|
|
856
|
+
).build();
|
|
857
|
+
var storeAlreadyInitializedError = error(
|
|
858
|
+
"runner.errors.storeAlreadyInitialized"
|
|
859
|
+
).format(() => "Store already initialized. Cannot reinitialize.").build();
|
|
860
|
+
var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
|
|
861
|
+
const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
|
|
862
|
+
return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
|
|
863
|
+
}).build();
|
|
864
|
+
var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
|
|
865
|
+
const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
866
|
+
return `Event emission cycle detected:
|
|
829
867
|
${chain}
|
|
830
868
|
|
|
831
|
-
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
}
|
|
835
|
-
|
|
836
|
-
var EventEmissionCycleError = class extends RuntimeError {
|
|
837
|
-
static {
|
|
838
|
-
__name(this, "EventEmissionCycleError");
|
|
839
|
-
}
|
|
840
|
-
constructor(cycles) {
|
|
841
|
-
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
842
|
-
super(
|
|
843
|
-
`Event emission cycles detected between hooks and events:
|
|
869
|
+
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
|
|
870
|
+
}).build();
|
|
871
|
+
var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
|
|
872
|
+
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
873
|
+
return `Event emission cycles detected between hooks and events:
|
|
844
874
|
${list}
|
|
845
875
|
|
|
846
|
-
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
var
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
`Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
858
|
-
);
|
|
859
|
-
this.name = "PlatformUnsupportedFunction";
|
|
860
|
-
}
|
|
861
|
-
};
|
|
862
|
-
var CancellationError = class extends RuntimeError {
|
|
863
|
-
static {
|
|
864
|
-
__name(this, "CancellationError");
|
|
865
|
-
}
|
|
866
|
-
constructor(message = "Operation cancelled") {
|
|
867
|
-
super(message);
|
|
868
|
-
this.name = "CancellationError";
|
|
869
|
-
}
|
|
870
|
-
};
|
|
876
|
+
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
|
|
877
|
+
}).build();
|
|
878
|
+
var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
|
|
879
|
+
({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
880
|
+
).build();
|
|
881
|
+
var cancellationError = error(
|
|
882
|
+
"runner.errors.cancellation"
|
|
883
|
+
).format(({ reason }) => reason || "Operation cancelled").build();
|
|
884
|
+
var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
|
|
885
|
+
({ taskId, currentOwnerId, attemptedOwnerId }) => `Task "${taskId}" is already tunneled by resource "${currentOwnerId}". Resource "${attemptedOwnerId}" cannot tunnel it again. Ensure each task is owned by a single tunnel client.`
|
|
886
|
+
).build();
|
|
871
887
|
function isCancellationError(err) {
|
|
872
|
-
return
|
|
888
|
+
return cancellationError.is(err);
|
|
873
889
|
}
|
|
874
890
|
__name(isCancellationError, "isCancellationError");
|
|
875
891
|
|
|
@@ -894,12 +910,12 @@ function defineResource(constConfig) {
|
|
|
894
910
|
if (constConfig.configSchema) {
|
|
895
911
|
try {
|
|
896
912
|
config = constConfig.configSchema.parse(config);
|
|
897
|
-
} catch (
|
|
898
|
-
throw
|
|
899
|
-
"Resource config",
|
|
900
|
-
id2,
|
|
901
|
-
|
|
902
|
-
);
|
|
913
|
+
} catch (error2) {
|
|
914
|
+
validationError.throw({
|
|
915
|
+
subject: "Resource config",
|
|
916
|
+
id: id2,
|
|
917
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
918
|
+
});
|
|
903
919
|
}
|
|
904
920
|
}
|
|
905
921
|
return {
|
|
@@ -960,12 +976,12 @@ function defineTaskMiddleware(middlewareDef) {
|
|
|
960
976
|
if (obj.configSchema) {
|
|
961
977
|
try {
|
|
962
978
|
config = obj.configSchema.parse(config);
|
|
963
|
-
} catch (
|
|
964
|
-
throw
|
|
965
|
-
"Middleware config",
|
|
966
|
-
obj.id,
|
|
967
|
-
|
|
968
|
-
);
|
|
979
|
+
} catch (error2) {
|
|
980
|
+
validationError.throw({
|
|
981
|
+
subject: "Middleware config",
|
|
982
|
+
id: obj.id,
|
|
983
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
984
|
+
});
|
|
969
985
|
}
|
|
970
986
|
}
|
|
971
987
|
return wrap({
|
|
@@ -1001,12 +1017,12 @@ function defineResourceMiddleware(middlewareDef) {
|
|
|
1001
1017
|
if (obj.configSchema) {
|
|
1002
1018
|
try {
|
|
1003
1019
|
config = obj.configSchema.parse(config);
|
|
1004
|
-
} catch (
|
|
1005
|
-
throw
|
|
1006
|
-
"Middleware config",
|
|
1007
|
-
obj.id,
|
|
1008
|
-
|
|
1009
|
-
);
|
|
1020
|
+
} catch (error2) {
|
|
1021
|
+
validationError.throw({
|
|
1022
|
+
subject: "Middleware config",
|
|
1023
|
+
id: obj.id,
|
|
1024
|
+
originalError: error2
|
|
1025
|
+
});
|
|
1010
1026
|
}
|
|
1011
1027
|
}
|
|
1012
1028
|
return wrap({
|
|
@@ -1058,8 +1074,12 @@ function defineTag(definition) {
|
|
|
1058
1074
|
if (definition.configSchema) {
|
|
1059
1075
|
try {
|
|
1060
1076
|
tagConfig = definition.configSchema.parse(tagConfig);
|
|
1061
|
-
} catch (
|
|
1062
|
-
throw
|
|
1077
|
+
} catch (error2) {
|
|
1078
|
+
validationError.throw({
|
|
1079
|
+
subject: "Tag config",
|
|
1080
|
+
id: this.id,
|
|
1081
|
+
originalError: error2
|
|
1082
|
+
});
|
|
1063
1083
|
}
|
|
1064
1084
|
}
|
|
1065
1085
|
let config;
|
|
@@ -1160,6 +1180,14 @@ function isOptional(definition) {
|
|
|
1160
1180
|
return definition && definition[symbolOptionalDependency];
|
|
1161
1181
|
}
|
|
1162
1182
|
__name(isOptional, "isOptional");
|
|
1183
|
+
function isError(definition) {
|
|
1184
|
+
return Boolean(definition && definition[symbolError]);
|
|
1185
|
+
}
|
|
1186
|
+
__name(isError, "isError");
|
|
1187
|
+
function isAsyncContext(definition) {
|
|
1188
|
+
return Boolean(definition && definition[symbolAsyncContext]);
|
|
1189
|
+
}
|
|
1190
|
+
__name(isAsyncContext, "isAsyncContext");
|
|
1163
1191
|
|
|
1164
1192
|
// src/globals/middleware/requireContext.middleware.ts
|
|
1165
1193
|
var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
@@ -1174,29 +1202,45 @@ var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
|
1174
1202
|
return next(task2?.input);
|
|
1175
1203
|
}
|
|
1176
1204
|
});
|
|
1205
|
+
var EjsonSerializer = {
|
|
1206
|
+
stringify(value) {
|
|
1207
|
+
return ejson.EJSON.stringify(value);
|
|
1208
|
+
},
|
|
1209
|
+
parse(text) {
|
|
1210
|
+
return ejson.EJSON.parse(text);
|
|
1211
|
+
},
|
|
1212
|
+
addType(name, factory) {
|
|
1213
|
+
ejson.EJSON.addType(name, factory);
|
|
1214
|
+
}
|
|
1215
|
+
};
|
|
1216
|
+
function getDefaultSerializer() {
|
|
1217
|
+
return EjsonSerializer;
|
|
1218
|
+
}
|
|
1219
|
+
__name(getDefaultSerializer, "getDefaultSerializer");
|
|
1177
1220
|
|
|
1178
|
-
// src/
|
|
1221
|
+
// src/definers/defineAsyncContext.ts
|
|
1179
1222
|
var platform = getPlatform();
|
|
1180
1223
|
var storage = platform.createAsyncLocalStorage();
|
|
1181
1224
|
function getCurrentStore() {
|
|
1182
1225
|
return storage.getStore();
|
|
1183
1226
|
}
|
|
1184
1227
|
__name(getCurrentStore, "getCurrentStore");
|
|
1185
|
-
function
|
|
1228
|
+
function defineAsyncContext(def) {
|
|
1186
1229
|
if (!platform.hasAsyncLocalStorage()) {
|
|
1187
|
-
throw
|
|
1188
|
-
`createAsyncLocalStorage: Cannot create context ${
|
|
1189
|
-
);
|
|
1230
|
+
platformUnsupportedFunctionError.throw({
|
|
1231
|
+
functionName: `createAsyncLocalStorage: Cannot create context ${def.id}: no async storage available in this environment`
|
|
1232
|
+
});
|
|
1190
1233
|
}
|
|
1191
|
-
const ctxId =
|
|
1234
|
+
const ctxId = def.id;
|
|
1192
1235
|
const use = /* @__PURE__ */ __name(() => {
|
|
1193
1236
|
const store2 = getCurrentStore();
|
|
1194
1237
|
if (!store2 || !store2.has(ctxId)) {
|
|
1195
|
-
throw
|
|
1196
|
-
`Context not available for symbol ${ctxId.toString()}`
|
|
1197
|
-
);
|
|
1238
|
+
contextError.throw({
|
|
1239
|
+
details: `Context not available for symbol ${ctxId.toString()}`
|
|
1240
|
+
});
|
|
1198
1241
|
}
|
|
1199
|
-
|
|
1242
|
+
const s = store2;
|
|
1243
|
+
return s.get(ctxId);
|
|
1200
1244
|
}, "use");
|
|
1201
1245
|
const provide = /* @__PURE__ */ __name((value, fn) => {
|
|
1202
1246
|
const currentStore = getCurrentStore();
|
|
@@ -1204,16 +1248,39 @@ function createContext(name = "runner.context") {
|
|
|
1204
1248
|
map.set(ctxId, value);
|
|
1205
1249
|
return storage.run(map, fn);
|
|
1206
1250
|
}, "provide");
|
|
1251
|
+
const serializer = getDefaultSerializer();
|
|
1207
1252
|
const api = {
|
|
1208
1253
|
id: ctxId,
|
|
1254
|
+
[symbolAsyncContext]: true,
|
|
1209
1255
|
use,
|
|
1210
|
-
|
|
1256
|
+
/* istanbul ignore next */
|
|
1257
|
+
provide(value, fn) {
|
|
1258
|
+
const validated = def.configSchema ? def.configSchema.parse(value) : value;
|
|
1259
|
+
return provide(validated, fn);
|
|
1260
|
+
},
|
|
1211
1261
|
require() {
|
|
1212
|
-
return requireContextTaskMiddleware.with({
|
|
1262
|
+
return requireContextTaskMiddleware.with({
|
|
1263
|
+
context: api
|
|
1264
|
+
});
|
|
1265
|
+
},
|
|
1266
|
+
/* istanbul ignore next */
|
|
1267
|
+
serialize: def.serialize || ((data) => serializer.stringify(data)),
|
|
1268
|
+
/* istanbul ignore next */
|
|
1269
|
+
parse: def.parse || ((data) => serializer.parse(data)),
|
|
1270
|
+
optional() {
|
|
1271
|
+
return {
|
|
1272
|
+
inner: api,
|
|
1273
|
+
[symbolOptionalDependency]: true
|
|
1274
|
+
};
|
|
1213
1275
|
}
|
|
1214
1276
|
};
|
|
1215
1277
|
return api;
|
|
1216
1278
|
}
|
|
1279
|
+
__name(defineAsyncContext, "defineAsyncContext");
|
|
1280
|
+
function createContext(name) {
|
|
1281
|
+
const id2 = name ?? `context.${Math.random().toString(36).slice(2)}.${Date.now()}`;
|
|
1282
|
+
return defineAsyncContext({ id: id2 });
|
|
1283
|
+
}
|
|
1217
1284
|
__name(createContext, "createContext");
|
|
1218
1285
|
|
|
1219
1286
|
// src/globals/resources/debug/debug.tag.ts
|
|
@@ -1428,10 +1495,10 @@ var retryTaskMiddleware = defineTaskMiddleware({
|
|
|
1428
1495
|
while (true) {
|
|
1429
1496
|
try {
|
|
1430
1497
|
return await next(input);
|
|
1431
|
-
} catch (
|
|
1432
|
-
const err =
|
|
1498
|
+
} catch (error2) {
|
|
1499
|
+
const err = error2;
|
|
1433
1500
|
if (shouldStop(err) || attempts >= maxRetries) {
|
|
1434
|
-
throw
|
|
1501
|
+
throw error2;
|
|
1435
1502
|
}
|
|
1436
1503
|
const delay = config.delayStrategy ? config.delayStrategy(attempts, err) : 100 * Math.pow(2, attempts);
|
|
1437
1504
|
if (delay > 0) {
|
|
@@ -1452,10 +1519,10 @@ var retryResourceMiddleware = defineResourceMiddleware({
|
|
|
1452
1519
|
while (true) {
|
|
1453
1520
|
try {
|
|
1454
1521
|
return await next(input);
|
|
1455
|
-
} catch (
|
|
1456
|
-
const err =
|
|
1522
|
+
} catch (error2) {
|
|
1523
|
+
const err = error2;
|
|
1457
1524
|
if (shouldStop(err) || attempts >= maxRetries) {
|
|
1458
|
-
throw
|
|
1525
|
+
throw error2;
|
|
1459
1526
|
}
|
|
1460
1527
|
const delay = config.delayStrategy ? config.delayStrategy(attempts, err) : 100 * Math.pow(2, attempts);
|
|
1461
1528
|
if (delay > 0) {
|
|
@@ -1475,17 +1542,17 @@ var timeoutTaskMiddleware = defineTaskMiddleware({
|
|
|
1475
1542
|
const ttl = Math.max(0, config.ttl);
|
|
1476
1543
|
const message = `Operation timed out after ${ttl}ms`;
|
|
1477
1544
|
if (ttl === 0) {
|
|
1478
|
-
const
|
|
1479
|
-
|
|
1480
|
-
throw
|
|
1545
|
+
const error2 = new Error(message);
|
|
1546
|
+
error2.name = "TimeoutError";
|
|
1547
|
+
throw error2;
|
|
1481
1548
|
}
|
|
1482
1549
|
const controller = new AbortController();
|
|
1483
1550
|
const timeoutPromise = new Promise((_, reject) => {
|
|
1484
1551
|
const timeoutId = setTimeout(() => {
|
|
1485
1552
|
controller.abort();
|
|
1486
|
-
const
|
|
1487
|
-
|
|
1488
|
-
reject(
|
|
1553
|
+
const error2 = new Error(message);
|
|
1554
|
+
error2.name = "TimeoutError";
|
|
1555
|
+
reject(error2);
|
|
1489
1556
|
}, ttl);
|
|
1490
1557
|
controller.signal.addEventListener("abort", () => {
|
|
1491
1558
|
clearTimeout(timeoutId);
|
|
@@ -1501,17 +1568,17 @@ var timeoutResourceMiddleware = defineResourceMiddleware({
|
|
|
1501
1568
|
const ttl = Math.max(0, config.ttl);
|
|
1502
1569
|
const message = `Operation timed out after ${ttl}ms`;
|
|
1503
1570
|
if (ttl === 0) {
|
|
1504
|
-
const
|
|
1505
|
-
|
|
1506
|
-
throw
|
|
1571
|
+
const error2 = new Error(message);
|
|
1572
|
+
error2.name = "TimeoutError";
|
|
1573
|
+
throw error2;
|
|
1507
1574
|
}
|
|
1508
1575
|
const controller = new AbortController();
|
|
1509
1576
|
const timeoutPromise = new Promise((_, reject) => {
|
|
1510
1577
|
const timeoutId = setTimeout(() => {
|
|
1511
1578
|
controller.abort();
|
|
1512
|
-
const
|
|
1513
|
-
|
|
1514
|
-
reject(
|
|
1579
|
+
const error2 = new Error(message);
|
|
1580
|
+
error2.name = "TimeoutError";
|
|
1581
|
+
reject(error2);
|
|
1515
1582
|
}, ttl);
|
|
1516
1583
|
controller.signal.addEventListener("abort", () => {
|
|
1517
1584
|
clearTimeout(timeoutId);
|
|
@@ -1537,6 +1604,77 @@ var globalMiddlewares = {
|
|
|
1537
1604
|
}
|
|
1538
1605
|
};
|
|
1539
1606
|
|
|
1607
|
+
// src/globals/resources/debug/types.ts
|
|
1608
|
+
var allFalse = Object.freeze({
|
|
1609
|
+
logResourceBeforeRun: false,
|
|
1610
|
+
logResourceAfterRun: false,
|
|
1611
|
+
logMiddlewareBeforeRun: false,
|
|
1612
|
+
logMiddlewareAfterRun: false,
|
|
1613
|
+
logTaskBeforeRun: false,
|
|
1614
|
+
logTaskAfterRun: false,
|
|
1615
|
+
logTaskInput: false,
|
|
1616
|
+
logTaskOutput: false,
|
|
1617
|
+
logResourceConfig: false,
|
|
1618
|
+
logResourceValue: false,
|
|
1619
|
+
logHookTriggered: false,
|
|
1620
|
+
logHookCompleted: false,
|
|
1621
|
+
logEventEmissionOnRun: false,
|
|
1622
|
+
logEventEmissionInput: false
|
|
1623
|
+
});
|
|
1624
|
+
var levelNormal = Object.freeze({
|
|
1625
|
+
...allFalse,
|
|
1626
|
+
logTaskAfterRun: true,
|
|
1627
|
+
logTaskBeforeRun: true,
|
|
1628
|
+
logResourceBeforeRun: true,
|
|
1629
|
+
logResourceAfterRun: true,
|
|
1630
|
+
logMiddlewareBeforeRun: true,
|
|
1631
|
+
logMiddlewareAfterRun: true,
|
|
1632
|
+
logHookTriggered: true,
|
|
1633
|
+
logHookCompleted: true,
|
|
1634
|
+
logEventEmissionOnRun: true
|
|
1635
|
+
});
|
|
1636
|
+
Object.freeze(levelNormal);
|
|
1637
|
+
var levelVerbose = Object.freeze({
|
|
1638
|
+
...levelNormal,
|
|
1639
|
+
logTaskInput: true,
|
|
1640
|
+
logTaskOutput: true,
|
|
1641
|
+
logResourceConfig: true,
|
|
1642
|
+
logResourceValue: true,
|
|
1643
|
+
logHookTriggered: true,
|
|
1644
|
+
logHookCompleted: true
|
|
1645
|
+
});
|
|
1646
|
+
Object.freeze(levelVerbose);
|
|
1647
|
+
function formatConfig(config) {
|
|
1648
|
+
if (config === "normal") {
|
|
1649
|
+
return { ...levelNormal };
|
|
1650
|
+
}
|
|
1651
|
+
if (config === "verbose") {
|
|
1652
|
+
return { ...levelVerbose };
|
|
1653
|
+
}
|
|
1654
|
+
return { ...allFalse, ...config };
|
|
1655
|
+
}
|
|
1656
|
+
__name(formatConfig, "formatConfig");
|
|
1657
|
+
var getConfig = /* @__PURE__ */ __name((config, taggable) => {
|
|
1658
|
+
if (!taggable) {
|
|
1659
|
+
return formatConfig(config);
|
|
1660
|
+
}
|
|
1661
|
+
const debugTagConfig = debugTag.extract(taggable);
|
|
1662
|
+
if (debugTagConfig) {
|
|
1663
|
+
const debugTagConfigFormatted = formatConfig(debugTagConfig);
|
|
1664
|
+
return { ...formatConfig(config), ...debugTagConfigFormatted };
|
|
1665
|
+
}
|
|
1666
|
+
return formatConfig(config);
|
|
1667
|
+
}, "getConfig");
|
|
1668
|
+
|
|
1669
|
+
// src/globals/debug.ts
|
|
1670
|
+
var debugLevels = {
|
|
1671
|
+
normal: levelNormal,
|
|
1672
|
+
verbose: levelVerbose
|
|
1673
|
+
};
|
|
1674
|
+
var debug = {
|
|
1675
|
+
levels: debugLevels
|
|
1676
|
+
};
|
|
1677
|
+
|
|
1540
1678
|
// src/models/TaskRunner.ts
|
|
1541
1679
|
var TaskRunner = class {
|
|
1542
1680
|
constructor(store2, eventManager, logger) {
|
|
@@ -1563,16 +1701,16 @@ var TaskRunner = class {
|
|
|
1563
1701
|
}
|
|
1564
1702
|
try {
|
|
1565
1703
|
return await runner(input);
|
|
1566
|
-
} catch (
|
|
1704
|
+
} catch (error2) {
|
|
1567
1705
|
try {
|
|
1568
1706
|
await this.store.onUnhandledError({
|
|
1569
|
-
error,
|
|
1707
|
+
error: error2,
|
|
1570
1708
|
kind: "task",
|
|
1571
1709
|
source: task2.id
|
|
1572
1710
|
});
|
|
1573
1711
|
} catch (_) {
|
|
1574
1712
|
}
|
|
1575
|
-
throw
|
|
1713
|
+
throw error2;
|
|
1576
1714
|
}
|
|
1577
1715
|
}
|
|
1578
1716
|
/**
|
|
@@ -1623,7 +1761,7 @@ var MiddlewareManager = class {
|
|
|
1623
1761
|
*/
|
|
1624
1762
|
checkLock() {
|
|
1625
1763
|
if (this.#isLocked) {
|
|
1626
|
-
throw
|
|
1764
|
+
lockedError.throw({ what: "MiddlewareManager" });
|
|
1627
1765
|
}
|
|
1628
1766
|
}
|
|
1629
1767
|
/**
|
|
@@ -1741,12 +1879,12 @@ var MiddlewareManager = class {
|
|
|
1741
1879
|
if (runnerTask.inputSchema) {
|
|
1742
1880
|
try {
|
|
1743
1881
|
rawInput = runnerTask.inputSchema.parse(rawInput);
|
|
1744
|
-
} catch (
|
|
1745
|
-
throw
|
|
1746
|
-
"Task input",
|
|
1747
|
-
runnerTask.id,
|
|
1748
|
-
|
|
1749
|
-
);
|
|
1882
|
+
} catch (error2) {
|
|
1883
|
+
validationError.throw({
|
|
1884
|
+
subject: "Task input",
|
|
1885
|
+
id: runnerTask.id,
|
|
1886
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
1887
|
+
});
|
|
1750
1888
|
}
|
|
1751
1889
|
}
|
|
1752
1890
|
const deps = storeTask.computedDependencies;
|
|
@@ -1754,8 +1892,12 @@ var MiddlewareManager = class {
|
|
|
1754
1892
|
if (runnerTask.resultSchema) {
|
|
1755
1893
|
try {
|
|
1756
1894
|
return runnerTask.resultSchema.parse(rawResult);
|
|
1757
|
-
} catch (
|
|
1758
|
-
throw
|
|
1895
|
+
} catch (error2) {
|
|
1896
|
+
validationError.throw({
|
|
1897
|
+
subject: "Task result",
|
|
1898
|
+
id: runnerTask.id,
|
|
1899
|
+
originalError: error2
|
|
1900
|
+
});
|
|
1759
1901
|
}
|
|
1760
1902
|
}
|
|
1761
1903
|
return rawResult;
|
|
@@ -1850,12 +1992,12 @@ var MiddlewareManager = class {
|
|
|
1850
1992
|
if (resource2.resultSchema) {
|
|
1851
1993
|
try {
|
|
1852
1994
|
return resource2.resultSchema.parse(rawValue);
|
|
1853
|
-
} catch (
|
|
1854
|
-
throw
|
|
1855
|
-
"Resource result",
|
|
1856
|
-
resource2.id,
|
|
1857
|
-
|
|
1858
|
-
);
|
|
1995
|
+
} catch (error2) {
|
|
1996
|
+
validationError.throw({
|
|
1997
|
+
subject: "Resource result",
|
|
1998
|
+
id: resource2.id,
|
|
1999
|
+
originalError: error2
|
|
2000
|
+
});
|
|
1859
2001
|
}
|
|
1860
2002
|
}
|
|
1861
2003
|
return rawValue;
|
|
@@ -1881,16 +2023,16 @@ var MiddlewareManager = class {
|
|
|
1881
2023
|
middleware.config
|
|
1882
2024
|
);
|
|
1883
2025
|
return result;
|
|
1884
|
-
} catch (
|
|
2026
|
+
} catch (error2) {
|
|
1885
2027
|
try {
|
|
1886
2028
|
await this.store.onUnhandledError({
|
|
1887
|
-
error,
|
|
2029
|
+
error: error2,
|
|
1888
2030
|
kind: "resourceInit",
|
|
1889
2031
|
source: resource2.id
|
|
1890
2032
|
});
|
|
1891
2033
|
} catch (_) {
|
|
1892
2034
|
}
|
|
1893
|
-
throw
|
|
2035
|
+
throw error2;
|
|
1894
2036
|
}
|
|
1895
2037
|
}, "baseMiddlewareRunner");
|
|
1896
2038
|
const middlewareInterceptors = this.perResourceMiddlewareInterceptors.get(middleware.id) || [];
|
|
@@ -2102,7 +2244,7 @@ var LogPrinter = class _LogPrinter {
|
|
|
2102
2244
|
_LogPrinter.writers.log(safeStringify(this.normalizeForJson(log), 2));
|
|
2103
2245
|
return;
|
|
2104
2246
|
}
|
|
2105
|
-
const { level, source, message, timestamp, error, data, context } = log;
|
|
2247
|
+
const { level, source, message, timestamp, error: error2, data, context } = log;
|
|
2106
2248
|
const timePart = this.formatTime(timestamp);
|
|
2107
2249
|
const levelPart = this.formatLevel(level);
|
|
2108
2250
|
const sourcePart = this.formatSource(source);
|
|
@@ -2116,7 +2258,7 @@ var LogPrinter = class _LogPrinter {
|
|
|
2116
2258
|
if (message) {
|
|
2117
2259
|
output.push(...messageLines.map((line) => `${indentation}${line}`));
|
|
2118
2260
|
}
|
|
2119
|
-
const errorLines = this.formatError(
|
|
2261
|
+
const errorLines = this.formatError(error2);
|
|
2120
2262
|
const dataLines = this.formatData(data);
|
|
2121
2263
|
const contextLines = this.formatContext(context);
|
|
2122
2264
|
const detailsExist = errorLines.length > 0 || dataLines.length > 0 || contextLines.length > 0;
|
|
@@ -2159,14 +2301,14 @@ var LogPrinter = class _LogPrinter {
|
|
|
2159
2301
|
}
|
|
2160
2302
|
return String(message);
|
|
2161
2303
|
}
|
|
2162
|
-
formatError(
|
|
2163
|
-
if (!
|
|
2304
|
+
formatError(error2, indentation = " ") {
|
|
2305
|
+
if (!error2) return [];
|
|
2164
2306
|
const lines = [];
|
|
2165
2307
|
lines.push(
|
|
2166
|
-
`${indentation}${this.colors.gray}\u2570\u2500${this.colors.reset} ${this.colors.error}Error: ${
|
|
2308
|
+
`${indentation}${this.colors.gray}\u2570\u2500${this.colors.reset} ${this.colors.error}Error: ${error2.name}: ${error2.message}${this.colors.reset}`
|
|
2167
2309
|
);
|
|
2168
|
-
if (
|
|
2169
|
-
const frames =
|
|
2310
|
+
if (error2.stack) {
|
|
2311
|
+
const frames = error2.stack.split("\n").slice(1);
|
|
2170
2312
|
frames.forEach((frame) => {
|
|
2171
2313
|
const cleaned = frame.trim().replace(/^at /, "");
|
|
2172
2314
|
lines.push(
|
|
@@ -2317,13 +2459,13 @@ var Logger = class _Logger {
|
|
|
2317
2459
|
* Core logging method with structured LogInfo
|
|
2318
2460
|
*/
|
|
2319
2461
|
async log(level, message, logInfo = {}) {
|
|
2320
|
-
const { source, error, data, ...context } = logInfo;
|
|
2462
|
+
const { source, error: error2, data, ...context } = logInfo;
|
|
2321
2463
|
const log = {
|
|
2322
2464
|
level,
|
|
2323
2465
|
message,
|
|
2324
2466
|
source: source || this.source,
|
|
2325
2467
|
timestamp: /* @__PURE__ */ new Date(),
|
|
2326
|
-
error:
|
|
2468
|
+
error: error2 ? this.extractErrorInfo(error2) : void 0,
|
|
2327
2469
|
data: data || void 0,
|
|
2328
2470
|
context: { ...this.boundContext, ...context }
|
|
2329
2471
|
};
|
|
@@ -2337,17 +2479,17 @@ var Logger = class _Logger {
|
|
|
2337
2479
|
root.printer.print(log);
|
|
2338
2480
|
}
|
|
2339
2481
|
}
|
|
2340
|
-
extractErrorInfo(
|
|
2341
|
-
if (
|
|
2482
|
+
extractErrorInfo(error2) {
|
|
2483
|
+
if (error2 instanceof Error) {
|
|
2342
2484
|
return {
|
|
2343
|
-
name:
|
|
2344
|
-
message:
|
|
2345
|
-
stack:
|
|
2485
|
+
name: error2.name,
|
|
2486
|
+
message: error2.message,
|
|
2487
|
+
stack: error2.stack
|
|
2346
2488
|
};
|
|
2347
2489
|
}
|
|
2348
2490
|
return {
|
|
2349
2491
|
name: "UnknownError",
|
|
2350
|
-
message: String(
|
|
2492
|
+
message: String(error2)
|
|
2351
2493
|
};
|
|
2352
2494
|
}
|
|
2353
2495
|
async info(message, logInfo) {
|
|
@@ -2421,14 +2563,14 @@ var Logger = class _Logger {
|
|
|
2421
2563
|
for (const listener of this.localListeners) {
|
|
2422
2564
|
try {
|
|
2423
2565
|
await listener(log);
|
|
2424
|
-
} catch (
|
|
2566
|
+
} catch (error2) {
|
|
2425
2567
|
this.print({
|
|
2426
2568
|
level: "error",
|
|
2427
2569
|
message: "Error in log listener",
|
|
2428
2570
|
timestamp: /* @__PURE__ */ new Date(),
|
|
2429
2571
|
error: {
|
|
2430
2572
|
name: "ListenerError",
|
|
2431
|
-
message:
|
|
2573
|
+
message: error2 instanceof Error ? error2.message : String(error2)
|
|
2432
2574
|
}
|
|
2433
2575
|
});
|
|
2434
2576
|
continue;
|
|
@@ -2604,7 +2746,7 @@ var DependencyProcessor = class {
|
|
|
2604
2746
|
} else if (Array.isArray(eventDefinition)) {
|
|
2605
2747
|
for (const ed of eventDefinition) {
|
|
2606
2748
|
if (this.store.events.get(ed.id) === void 0) {
|
|
2607
|
-
throw
|
|
2749
|
+
eventNotFoundError.throw({ id: ed.id });
|
|
2608
2750
|
}
|
|
2609
2751
|
}
|
|
2610
2752
|
this.eventManager.addListener(eventDefinition, handler, {
|
|
@@ -2612,7 +2754,7 @@ var DependencyProcessor = class {
|
|
|
2612
2754
|
});
|
|
2613
2755
|
} else {
|
|
2614
2756
|
if (this.store.events.get(eventDefinition.id) === void 0) {
|
|
2615
|
-
throw
|
|
2757
|
+
eventNotFoundError.throw({ id: eventDefinition.id });
|
|
2616
2758
|
}
|
|
2617
2759
|
this.eventManager.addListener(eventDefinition, handler, {
|
|
2618
2760
|
order
|
|
@@ -2653,8 +2795,14 @@ var DependencyProcessor = class {
|
|
|
2653
2795
|
} else if (isEvent(inner)) {
|
|
2654
2796
|
const exists = this.store.events.get(inner.id) !== void 0;
|
|
2655
2797
|
return exists ? this.extractEventDependency(inner, source) : void 0;
|
|
2798
|
+
} else if (isError(inner)) {
|
|
2799
|
+
const exists = this.store.errors.get(inner.id) !== void 0;
|
|
2800
|
+
return exists ? inner : void 0;
|
|
2801
|
+
} else if (isAsyncContext(inner)) {
|
|
2802
|
+
const exists = this.store.asyncContexts.get(inner.id) !== void 0;
|
|
2803
|
+
return exists ? inner : void 0;
|
|
2656
2804
|
}
|
|
2657
|
-
throw
|
|
2805
|
+
unknownItemTypeError.throw({ item: inner });
|
|
2658
2806
|
}
|
|
2659
2807
|
if (isResource(object)) {
|
|
2660
2808
|
return this.extractResourceDependency(object);
|
|
@@ -2662,8 +2810,18 @@ var DependencyProcessor = class {
|
|
|
2662
2810
|
return this.extractTaskDependency(object);
|
|
2663
2811
|
} else if (isEvent(object)) {
|
|
2664
2812
|
return this.extractEventDependency(object, source);
|
|
2813
|
+
} else if (isError(object)) {
|
|
2814
|
+
if (this.store.errors.get(object.id) === void 0) {
|
|
2815
|
+
dependencyNotFoundError.throw({ key: `Error ${object.id}` });
|
|
2816
|
+
}
|
|
2817
|
+
return object;
|
|
2818
|
+
} else if (isAsyncContext(object)) {
|
|
2819
|
+
if (this.store.asyncContexts.get(object.id) === void 0) {
|
|
2820
|
+
dependencyNotFoundError.throw({ key: `AsyncContext ${object.id}` });
|
|
2821
|
+
}
|
|
2822
|
+
return object;
|
|
2665
2823
|
} else {
|
|
2666
|
-
throw
|
|
2824
|
+
unknownItemTypeError.throw({ item: object });
|
|
2667
2825
|
}
|
|
2668
2826
|
}
|
|
2669
2827
|
/**
|
|
@@ -2679,27 +2837,29 @@ var DependencyProcessor = class {
|
|
|
2679
2837
|
async extractTaskDependency(object) {
|
|
2680
2838
|
const storeTask = this.store.tasks.get(object.id);
|
|
2681
2839
|
if (storeTask === void 0) {
|
|
2682
|
-
throw
|
|
2840
|
+
dependencyNotFoundError.throw({ key: `Task ${object.id}` });
|
|
2683
2841
|
}
|
|
2684
|
-
|
|
2842
|
+
const st = storeTask;
|
|
2843
|
+
if (!st.isInitialized) {
|
|
2685
2844
|
const dependencies = object.dependencies;
|
|
2686
|
-
|
|
2845
|
+
st.computedDependencies = await this.extractDependencies(
|
|
2687
2846
|
dependencies,
|
|
2688
|
-
|
|
2847
|
+
st.task.id
|
|
2689
2848
|
);
|
|
2690
|
-
|
|
2849
|
+
st.isInitialized = true;
|
|
2691
2850
|
}
|
|
2692
2851
|
return (input) => {
|
|
2693
|
-
return this.taskRunner.run(
|
|
2852
|
+
return this.taskRunner.run(st.task, input);
|
|
2694
2853
|
};
|
|
2695
2854
|
}
|
|
2696
2855
|
async extractResourceDependency(object) {
|
|
2697
2856
|
const storeResource = this.store.resources.get(object.id);
|
|
2698
2857
|
if (storeResource === void 0) {
|
|
2699
|
-
throw
|
|
2858
|
+
dependencyNotFoundError.throw({ key: `Resource ${object.id}` });
|
|
2700
2859
|
}
|
|
2701
|
-
const
|
|
2702
|
-
|
|
2860
|
+
const sr = storeResource;
|
|
2861
|
+
const { resource: resource2, config } = sr;
|
|
2862
|
+
if (!sr.isInitialized) {
|
|
2703
2863
|
if (resource2.init) {
|
|
2704
2864
|
const depMap = resource2.dependencies || {};
|
|
2705
2865
|
const raw = await this.extractDependencies(depMap, resource2.id);
|
|
@@ -2709,12 +2869,12 @@ var DependencyProcessor = class {
|
|
|
2709
2869
|
config,
|
|
2710
2870
|
wrapped
|
|
2711
2871
|
);
|
|
2712
|
-
|
|
2713
|
-
|
|
2872
|
+
sr.context = context;
|
|
2873
|
+
sr.value = value;
|
|
2714
2874
|
}
|
|
2715
|
-
|
|
2875
|
+
sr.isInitialized = true;
|
|
2716
2876
|
}
|
|
2717
|
-
return
|
|
2877
|
+
return sr.value;
|
|
2718
2878
|
}
|
|
2719
2879
|
};
|
|
2720
2880
|
|
|
@@ -2772,12 +2932,12 @@ var EventManager = class {
|
|
|
2772
2932
|
if (eventDefinition.payloadSchema) {
|
|
2773
2933
|
try {
|
|
2774
2934
|
data = eventDefinition.payloadSchema.parse(data);
|
|
2775
|
-
} catch (
|
|
2776
|
-
throw
|
|
2777
|
-
"Event payload",
|
|
2778
|
-
eventDefinition.id,
|
|
2779
|
-
|
|
2780
|
-
);
|
|
2935
|
+
} catch (error2) {
|
|
2936
|
+
validationError.throw({
|
|
2937
|
+
subject: "Event payload",
|
|
2938
|
+
id: eventDefinition.id,
|
|
2939
|
+
originalError: error2 instanceof Error ? error2 : new Error(String(error2))
|
|
2940
|
+
});
|
|
2781
2941
|
}
|
|
2782
2942
|
}
|
|
2783
2943
|
const frame = { id: eventDefinition.id, source };
|
|
@@ -2833,10 +2993,9 @@ var EventManager = class {
|
|
|
2833
2993
|
const currentHookId = this.currentHookIdContext.getStore();
|
|
2834
2994
|
const safeReEmitBySameHook = top.id === frame.id && currentHookId && currentHookId === source;
|
|
2835
2995
|
if (!safeReEmitBySameHook) {
|
|
2836
|
-
throw
|
|
2837
|
-
...currentStack.slice(cycleStart),
|
|
2838
|
-
|
|
2839
|
-
]);
|
|
2996
|
+
eventCycleError.throw({
|
|
2997
|
+
path: [...currentStack.slice(cycleStart), frame]
|
|
2998
|
+
});
|
|
2840
2999
|
}
|
|
2841
3000
|
}
|
|
2842
3001
|
}
|
|
@@ -2976,7 +3135,7 @@ var EventManager = class {
|
|
|
2976
3135
|
*/
|
|
2977
3136
|
checkLock() {
|
|
2978
3137
|
if (this.#isLocked) {
|
|
2979
|
-
throw
|
|
3138
|
+
lockedError.throw({ what: "EventManager" });
|
|
2980
3139
|
}
|
|
2981
3140
|
}
|
|
2982
3141
|
/**
|
|
@@ -3132,25 +3291,31 @@ var StoreValidator = class {
|
|
|
3132
3291
|
}
|
|
3133
3292
|
checkIfIDExists(id2) {
|
|
3134
3293
|
if (this.registry.tasks.has(id2)) {
|
|
3135
|
-
throw
|
|
3294
|
+
duplicateRegistrationError.throw({ type: "Task", id: id2 });
|
|
3136
3295
|
}
|
|
3137
3296
|
if (this.registry.resources.has(id2)) {
|
|
3138
|
-
throw
|
|
3297
|
+
duplicateRegistrationError.throw({ type: "Resource", id: id2 });
|
|
3139
3298
|
}
|
|
3140
3299
|
if (this.registry.events.has(id2)) {
|
|
3141
|
-
throw
|
|
3300
|
+
duplicateRegistrationError.throw({ type: "Event", id: id2 });
|
|
3301
|
+
}
|
|
3302
|
+
if (this.registry.errors.has(id2)) {
|
|
3303
|
+
duplicateRegistrationError.throw({ type: "Error", id: id2 });
|
|
3304
|
+
}
|
|
3305
|
+
if (this.registry.asyncContexts.has(id2)) {
|
|
3306
|
+
duplicateRegistrationError.throw({ type: "AsyncContext", id: id2 });
|
|
3142
3307
|
}
|
|
3143
3308
|
if (this.registry.taskMiddlewares.has(id2)) {
|
|
3144
|
-
throw
|
|
3309
|
+
duplicateRegistrationError.throw({ type: "Middleware", id: id2 });
|
|
3145
3310
|
}
|
|
3146
3311
|
if (this.registry.resourceMiddlewares.has(id2)) {
|
|
3147
|
-
throw
|
|
3312
|
+
duplicateRegistrationError.throw({ type: "Middleware", id: id2 });
|
|
3148
3313
|
}
|
|
3149
3314
|
if (this.registry.tags.has(id2)) {
|
|
3150
|
-
throw
|
|
3315
|
+
duplicateRegistrationError.throw({ type: "Tag", id: id2 });
|
|
3151
3316
|
}
|
|
3152
3317
|
if (this.registry.hooks.has(id2)) {
|
|
3153
|
-
throw
|
|
3318
|
+
duplicateRegistrationError.throw({ type: "Hook", id: id2 });
|
|
3154
3319
|
}
|
|
3155
3320
|
}
|
|
3156
3321
|
runSanityChecks() {
|
|
@@ -3158,11 +3323,11 @@ var StoreValidator = class {
|
|
|
3158
3323
|
const middlewares = task2.task.middleware;
|
|
3159
3324
|
middlewares.forEach((middlewareAttachment) => {
|
|
3160
3325
|
if (!this.registry.taskMiddlewares.has(middlewareAttachment.id)) {
|
|
3161
|
-
throw
|
|
3162
|
-
"task",
|
|
3163
|
-
task2.task.id,
|
|
3164
|
-
middlewareAttachment.id
|
|
3165
|
-
);
|
|
3326
|
+
middlewareNotRegisteredError.throw({
|
|
3327
|
+
type: "task",
|
|
3328
|
+
source: task2.task.id,
|
|
3329
|
+
middlewareId: middlewareAttachment.id
|
|
3330
|
+
});
|
|
3166
3331
|
}
|
|
3167
3332
|
});
|
|
3168
3333
|
}
|
|
@@ -3170,11 +3335,11 @@ var StoreValidator = class {
|
|
|
3170
3335
|
const middlewares = resource2.resource.middleware;
|
|
3171
3336
|
middlewares.forEach((middlewareAttachment) => {
|
|
3172
3337
|
if (!this.registry.resourceMiddlewares.has(middlewareAttachment.id)) {
|
|
3173
|
-
throw
|
|
3174
|
-
"resource",
|
|
3175
|
-
resource2.resource.id,
|
|
3176
|
-
middlewareAttachment.id
|
|
3177
|
-
);
|
|
3338
|
+
middlewareNotRegisteredError.throw({
|
|
3339
|
+
type: "resource",
|
|
3340
|
+
source: resource2.resource.id,
|
|
3341
|
+
middlewareId: middlewareAttachment.id
|
|
3342
|
+
});
|
|
3178
3343
|
}
|
|
3179
3344
|
});
|
|
3180
3345
|
}
|
|
@@ -3198,7 +3363,7 @@ var StoreValidator = class {
|
|
|
3198
3363
|
if (tags) {
|
|
3199
3364
|
for (const tag2 of tags) {
|
|
3200
3365
|
if (!this.registry.tags.has(tag2.id)) {
|
|
3201
|
-
throw
|
|
3366
|
+
tagNotFoundError.throw({ id: tag2.id });
|
|
3202
3367
|
}
|
|
3203
3368
|
}
|
|
3204
3369
|
}
|
|
@@ -3217,6 +3382,8 @@ var StoreRegistry = class {
|
|
|
3217
3382
|
this.resourceMiddlewares = /* @__PURE__ */ new Map();
|
|
3218
3383
|
this.hooks = /* @__PURE__ */ new Map();
|
|
3219
3384
|
this.tags = /* @__PURE__ */ new Map();
|
|
3385
|
+
this.asyncContexts = /* @__PURE__ */ new Map();
|
|
3386
|
+
this.errors = /* @__PURE__ */ new Map();
|
|
3220
3387
|
this.validator = new StoreValidator(this);
|
|
3221
3388
|
}
|
|
3222
3389
|
static {
|
|
@@ -3228,12 +3395,16 @@ var StoreRegistry = class {
|
|
|
3228
3395
|
storeGenericItem(item) {
|
|
3229
3396
|
if (isTask(item)) {
|
|
3230
3397
|
this.storeTask(item);
|
|
3398
|
+
} else if (isError(item)) {
|
|
3399
|
+
this.storeError(item);
|
|
3231
3400
|
} else if (isHook && isHook(item)) {
|
|
3232
3401
|
this.storeHook(item);
|
|
3233
3402
|
} else if (isResource(item)) {
|
|
3234
3403
|
this.storeResource(item);
|
|
3235
3404
|
} else if (isEvent(item)) {
|
|
3236
3405
|
this.storeEvent(item);
|
|
3406
|
+
} else if (isAsyncContext(item)) {
|
|
3407
|
+
this.storeAsyncContext(item);
|
|
3237
3408
|
} else if (isTaskMiddleware(item)) {
|
|
3238
3409
|
this.storeTaskMiddleware(item);
|
|
3239
3410
|
} else if (isResourceMiddleware(item)) {
|
|
@@ -3243,9 +3414,17 @@ var StoreRegistry = class {
|
|
|
3243
3414
|
} else if (isTag(item)) {
|
|
3244
3415
|
this.storeTag(item);
|
|
3245
3416
|
} else {
|
|
3246
|
-
throw
|
|
3417
|
+
unknownItemTypeError.throw({ item });
|
|
3247
3418
|
}
|
|
3248
3419
|
}
|
|
3420
|
+
storeError(item) {
|
|
3421
|
+
this.validator.checkIfIDExists(item.id);
|
|
3422
|
+
this.errors.set(item.id, item);
|
|
3423
|
+
}
|
|
3424
|
+
storeAsyncContext(item) {
|
|
3425
|
+
this.validator.checkIfIDExists(item.id);
|
|
3426
|
+
this.asyncContexts.set(item.id, item);
|
|
3427
|
+
}
|
|
3249
3428
|
storeTag(item) {
|
|
3250
3429
|
this.validator.checkIfIDExists(item.id);
|
|
3251
3430
|
this.tags.set(item.id, item);
|
|
@@ -3609,7 +3788,7 @@ var OverrideManager = class {
|
|
|
3609
3788
|
}
|
|
3610
3789
|
if (!hasAnyItem) {
|
|
3611
3790
|
const id2 = isResourceWithConfig(override) ? override.resource.id : override.id;
|
|
3612
|
-
throw
|
|
3791
|
+
dependencyNotFoundError.throw({ key: id2 });
|
|
3613
3792
|
}
|
|
3614
3793
|
}
|
|
3615
3794
|
for (const override of this.overrides.values()) {
|
|
@@ -3662,6 +3841,15 @@ var tunnelResourceMiddleware = defineResourceMiddleware({
|
|
|
3662
3841
|
return value;
|
|
3663
3842
|
}
|
|
3664
3843
|
for (const t of tasks) {
|
|
3844
|
+
const currentOwner = t[symbolTunneledBy];
|
|
3845
|
+
const resourceId = resource2.definition.id;
|
|
3846
|
+
if (currentOwner && currentOwner !== resourceId) {
|
|
3847
|
+
tunnelOwnershipConflictError.throw({
|
|
3848
|
+
taskId: t.id,
|
|
3849
|
+
currentOwnerId: currentOwner,
|
|
3850
|
+
attemptedOwnerId: resourceId
|
|
3851
|
+
});
|
|
3852
|
+
}
|
|
3665
3853
|
if (!originalRuns.has(t)) {
|
|
3666
3854
|
originalRuns.set(t, t.run);
|
|
3667
3855
|
}
|
|
@@ -3669,6 +3857,7 @@ var tunnelResourceMiddleware = defineResourceMiddleware({
|
|
|
3669
3857
|
return value.run(t, input);
|
|
3670
3858
|
});
|
|
3671
3859
|
t[symbolTunneledTask] = "client";
|
|
3860
|
+
t[symbolTunneledBy] = resourceId;
|
|
3672
3861
|
}
|
|
3673
3862
|
if (events.length > 0) {
|
|
3674
3863
|
const selectedEventIds = new Set(events.map((e) => e.id));
|
|
@@ -3756,8 +3945,28 @@ function resolveEvents(store2, selector) {
|
|
|
3756
3945
|
return out;
|
|
3757
3946
|
}
|
|
3758
3947
|
__name(resolveEvents, "resolveEvents");
|
|
3948
|
+
|
|
3949
|
+
// src/utils/detectRunnerMode.ts
|
|
3950
|
+
function detectRunnerMode(explicitMode) {
|
|
3951
|
+
if (explicitMode !== void 0) {
|
|
3952
|
+
return explicitMode;
|
|
3953
|
+
}
|
|
3954
|
+
const env = getPlatform().getEnv("NODE_ENV");
|
|
3955
|
+
switch (env) {
|
|
3956
|
+
case "test":
|
|
3957
|
+
return "test" /* TEST */;
|
|
3958
|
+
case "production":
|
|
3959
|
+
return "prod" /* PROD */;
|
|
3960
|
+
case "development":
|
|
3961
|
+
default:
|
|
3962
|
+
return "dev" /* DEV */;
|
|
3963
|
+
}
|
|
3964
|
+
}
|
|
3965
|
+
__name(detectRunnerMode, "detectRunnerMode");
|
|
3966
|
+
|
|
3967
|
+
// src/models/Store.ts
|
|
3759
3968
|
var Store = class {
|
|
3760
|
-
constructor(eventManager, logger, onUnhandledError) {
|
|
3969
|
+
constructor(eventManager, logger, onUnhandledError, mode) {
|
|
3761
3970
|
this.eventManager = eventManager;
|
|
3762
3971
|
this.logger = logger;
|
|
3763
3972
|
this.onUnhandledError = onUnhandledError;
|
|
@@ -3765,6 +3974,7 @@ var Store = class {
|
|
|
3765
3974
|
this.validator = this.registry.getValidator();
|
|
3766
3975
|
this.overrideManager = new OverrideManager(this.registry);
|
|
3767
3976
|
this.middlewareManager = new MiddlewareManager(this, eventManager, logger);
|
|
3977
|
+
this.mode = detectRunnerMode(mode);
|
|
3768
3978
|
}
|
|
3769
3979
|
static {
|
|
3770
3980
|
__name(this, "Store");
|
|
@@ -3784,6 +3994,12 @@ var Store = class {
|
|
|
3784
3994
|
get events() {
|
|
3785
3995
|
return this.registry.events;
|
|
3786
3996
|
}
|
|
3997
|
+
get errors() {
|
|
3998
|
+
return this.registry.errors;
|
|
3999
|
+
}
|
|
4000
|
+
get asyncContexts() {
|
|
4001
|
+
return this.registry.asyncContexts;
|
|
4002
|
+
}
|
|
3787
4003
|
get taskMiddlewares() {
|
|
3788
4004
|
return this.registry.taskMiddlewares;
|
|
3789
4005
|
}
|
|
@@ -3886,19 +4102,19 @@ var Store = class {
|
|
|
3886
4102
|
const dependentNodes = this.registry.getDependentNodes();
|
|
3887
4103
|
const circularDependencies = findCircularDependencies(dependentNodes);
|
|
3888
4104
|
if (circularDependencies.cycles.length > 0) {
|
|
3889
|
-
throw
|
|
4105
|
+
circularDependenciesError.throw({ cycles: circularDependencies.cycles });
|
|
3890
4106
|
}
|
|
3891
4107
|
}
|
|
3892
4108
|
validateEventEmissionGraph() {
|
|
3893
4109
|
const eventNodes = this.registry.buildEventEmissionGraph();
|
|
3894
4110
|
const circular = findCircularDependencies(eventNodes);
|
|
3895
4111
|
if (circular.cycles.length > 0) {
|
|
3896
|
-
throw
|
|
4112
|
+
eventEmissionCycleError.throw({ cycles: circular.cycles });
|
|
3897
4113
|
}
|
|
3898
4114
|
}
|
|
3899
4115
|
initializeStore(root, config) {
|
|
3900
4116
|
if (this.#isInitialized) {
|
|
3901
|
-
throw
|
|
4117
|
+
storeAlreadyInitializedError.throw({});
|
|
3902
4118
|
}
|
|
3903
4119
|
this.registerGlobalComponents();
|
|
3904
4120
|
this.setupRootResource(root, config);
|
|
@@ -3952,68 +4168,6 @@ var Store = class {
|
|
|
3952
4168
|
}
|
|
3953
4169
|
};
|
|
3954
4170
|
|
|
3955
|
-
// src/globals/resources/debug/types.ts
|
|
3956
|
-
var allFalse = Object.freeze({
|
|
3957
|
-
logResourceBeforeRun: false,
|
|
3958
|
-
logResourceAfterRun: false,
|
|
3959
|
-
logMiddlewareBeforeRun: false,
|
|
3960
|
-
logMiddlewareAfterRun: false,
|
|
3961
|
-
logTaskBeforeRun: false,
|
|
3962
|
-
logTaskAfterRun: false,
|
|
3963
|
-
logTaskInput: false,
|
|
3964
|
-
logTaskOutput: false,
|
|
3965
|
-
logResourceConfig: false,
|
|
3966
|
-
logResourceValue: false,
|
|
3967
|
-
logHookTriggered: false,
|
|
3968
|
-
logHookCompleted: false,
|
|
3969
|
-
logEventEmissionOnRun: false,
|
|
3970
|
-
logEventEmissionInput: false
|
|
3971
|
-
});
|
|
3972
|
-
var levelNormal = Object.freeze({
|
|
3973
|
-
...allFalse,
|
|
3974
|
-
logTaskAfterRun: true,
|
|
3975
|
-
logTaskBeforeRun: true,
|
|
3976
|
-
logResourceBeforeRun: true,
|
|
3977
|
-
logResourceAfterRun: true,
|
|
3978
|
-
logMiddlewareBeforeRun: true,
|
|
3979
|
-
logMiddlewareAfterRun: true,
|
|
3980
|
-
logHookTriggered: true,
|
|
3981
|
-
logHookCompleted: true,
|
|
3982
|
-
logEventEmissionOnRun: true
|
|
3983
|
-
});
|
|
3984
|
-
Object.freeze(levelNormal);
|
|
3985
|
-
var levelVerbose = Object.freeze({
|
|
3986
|
-
...levelNormal,
|
|
3987
|
-
logTaskInput: true,
|
|
3988
|
-
logTaskOutput: true,
|
|
3989
|
-
logResourceConfig: true,
|
|
3990
|
-
logResourceValue: true,
|
|
3991
|
-
logHookTriggered: true,
|
|
3992
|
-
logHookCompleted: true
|
|
3993
|
-
});
|
|
3994
|
-
Object.freeze(levelVerbose);
|
|
3995
|
-
function formatConfig(config) {
|
|
3996
|
-
if (config === "normal") {
|
|
3997
|
-
return { ...levelNormal };
|
|
3998
|
-
}
|
|
3999
|
-
if (config === "verbose") {
|
|
4000
|
-
return { ...levelVerbose };
|
|
4001
|
-
}
|
|
4002
|
-
return { ...allFalse, ...config };
|
|
4003
|
-
}
|
|
4004
|
-
__name(formatConfig, "formatConfig");
|
|
4005
|
-
var getConfig = /* @__PURE__ */ __name((config, taggable) => {
|
|
4006
|
-
if (!taggable) {
|
|
4007
|
-
return formatConfig(config);
|
|
4008
|
-
}
|
|
4009
|
-
const debugTagConfig = debugTag.extract(taggable);
|
|
4010
|
-
if (debugTagConfig) {
|
|
4011
|
-
const debugTagConfigFormatted = formatConfig(debugTagConfig);
|
|
4012
|
-
return { ...formatConfig(config), ...debugTagConfigFormatted };
|
|
4013
|
-
}
|
|
4014
|
-
return formatConfig(config);
|
|
4015
|
-
}, "getConfig");
|
|
4016
|
-
|
|
4017
4171
|
// src/globals/resources/debug/debugConfig.resource.ts
|
|
4018
4172
|
var debugConfig = defineResource({
|
|
4019
4173
|
id: "globals.debug.resources.config",
|
|
@@ -4341,8 +4495,8 @@ __name(registerShutdownHook, "registerShutdownHook");
|
|
|
4341
4495
|
|
|
4342
4496
|
// src/models/UnhandledError.ts
|
|
4343
4497
|
function createDefaultUnhandledError(logger) {
|
|
4344
|
-
return async ({ error, kind, source }) => {
|
|
4345
|
-
const normalizedError =
|
|
4498
|
+
return async ({ error: error2, kind, source }) => {
|
|
4499
|
+
const normalizedError = error2 instanceof Error ? error2 : new Error(String(error2));
|
|
4346
4500
|
await logger.error(`${normalizedError.toString()}`, {
|
|
4347
4501
|
source,
|
|
4348
4502
|
error: normalizedError,
|
|
@@ -4354,9 +4508,9 @@ function createDefaultUnhandledError(logger) {
|
|
|
4354
4508
|
}
|
|
4355
4509
|
__name(createDefaultUnhandledError, "createDefaultUnhandledError");
|
|
4356
4510
|
function bindProcessErrorHandler(handler) {
|
|
4357
|
-
return async (
|
|
4511
|
+
return async (error2, source) => {
|
|
4358
4512
|
try {
|
|
4359
|
-
await handler({ error, kind: "process", source });
|
|
4513
|
+
await handler({ error: error2, kind: "process", source });
|
|
4360
4514
|
} catch {
|
|
4361
4515
|
}
|
|
4362
4516
|
};
|
|
@@ -4389,7 +4543,7 @@ var RunResult = class {
|
|
|
4389
4543
|
if (typeof task2 === "string") {
|
|
4390
4544
|
const taskId = task2;
|
|
4391
4545
|
if (!this.store.tasks.has(taskId)) {
|
|
4392
|
-
throw new
|
|
4546
|
+
throw new Error(`Task "${taskId}" not found.`);
|
|
4393
4547
|
}
|
|
4394
4548
|
task2 = this.store.tasks.get(taskId).task;
|
|
4395
4549
|
}
|
|
@@ -4404,7 +4558,7 @@ var RunResult = class {
|
|
|
4404
4558
|
if (typeof event2 === "string") {
|
|
4405
4559
|
const eventId = event2;
|
|
4406
4560
|
if (!this.store.events.has(eventId)) {
|
|
4407
|
-
throw new
|
|
4561
|
+
throw new Error(`Event "${eventId}" not found.`);
|
|
4408
4562
|
}
|
|
4409
4563
|
event2 = this.store.events.get(eventId).event;
|
|
4410
4564
|
}
|
|
@@ -4418,7 +4572,7 @@ var RunResult = class {
|
|
|
4418
4572
|
this.getResourceValue = /* @__PURE__ */ __name((resource2) => {
|
|
4419
4573
|
const resourceId = typeof resource2 === "string" ? resource2 : resource2.id;
|
|
4420
4574
|
if (!this.store.resources.has(resourceId)) {
|
|
4421
|
-
throw new
|
|
4575
|
+
throw new Error(`Resource "${resourceId}" not found.`);
|
|
4422
4576
|
}
|
|
4423
4577
|
return this.store.resources.get(resourceId).value;
|
|
4424
4578
|
}, "getResourceValue");
|
|
@@ -4435,7 +4589,7 @@ var RunResult = class {
|
|
|
4435
4589
|
async function run(resourceOrResourceWithConfig, options) {
|
|
4436
4590
|
await getPlatform().init();
|
|
4437
4591
|
const {
|
|
4438
|
-
debug = void 0,
|
|
4592
|
+
debug: debug2 = void 0,
|
|
4439
4593
|
logs = {},
|
|
4440
4594
|
errorBoundary = true,
|
|
4441
4595
|
shutdownHooks = true,
|
|
@@ -4491,8 +4645,8 @@ async function run(resourceOrResourceWithConfig, options) {
|
|
|
4491
4645
|
}
|
|
4492
4646
|
}, "disposeAll");
|
|
4493
4647
|
try {
|
|
4494
|
-
if (
|
|
4495
|
-
store2.storeGenericItem(debugResource.with(
|
|
4648
|
+
if (debug2) {
|
|
4649
|
+
store2.storeGenericItem(debugResource.with(debug2));
|
|
4496
4650
|
}
|
|
4497
4651
|
store2.initializeStore(resource2, config);
|
|
4498
4652
|
await store2.processOverrides();
|
|
@@ -4559,11 +4713,13 @@ var TunnelError = class extends Error {
|
|
|
4559
4713
|
static {
|
|
4560
4714
|
__name(this, "TunnelError");
|
|
4561
4715
|
}
|
|
4562
|
-
constructor(code, message, details) {
|
|
4716
|
+
constructor(code, message, details, extras) {
|
|
4563
4717
|
super(message);
|
|
4564
4718
|
this.name = "TunnelError";
|
|
4565
4719
|
this.code = code;
|
|
4566
4720
|
this.details = details;
|
|
4721
|
+
this.id = extras?.id;
|
|
4722
|
+
this.data = extras?.data;
|
|
4567
4723
|
}
|
|
4568
4724
|
};
|
|
4569
4725
|
function toTunnelError(input, fallbackMessage) {
|
|
@@ -4573,7 +4729,10 @@ function toTunnelError(input, fallbackMessage) {
|
|
|
4573
4729
|
if (input && typeof input === "object" && "code" in input && "message" in input && typeof input.message === "string" && typeof input.code === "string") {
|
|
4574
4730
|
const pe = input;
|
|
4575
4731
|
const msg = pe.message || fallbackMessage || "Tunnel error";
|
|
4576
|
-
return new TunnelError(pe.code, msg, pe.details
|
|
4732
|
+
return new TunnelError(pe.code, msg, pe.details, {
|
|
4733
|
+
id: pe.id,
|
|
4734
|
+
data: pe.data
|
|
4735
|
+
});
|
|
4577
4736
|
}
|
|
4578
4737
|
if (input && typeof input === "object" && "message" in input && typeof input.message === "string") {
|
|
4579
4738
|
return new TunnelError("UNKNOWN", input.message);
|
|
@@ -4604,7 +4763,7 @@ function assertOkEnvelope(envelope, opts) {
|
|
|
4604
4763
|
__name(assertOkEnvelope, "assertOkEnvelope");
|
|
4605
4764
|
|
|
4606
4765
|
// src/http-fetch-tunnel.resource.ts
|
|
4607
|
-
async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer, onRequest) {
|
|
4766
|
+
async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer, onRequest, contextHeaderText) {
|
|
4608
4767
|
const controller = timeoutMs && timeoutMs > 0 ? new AbortController() : void 0;
|
|
4609
4768
|
let timeout;
|
|
4610
4769
|
try {
|
|
@@ -4615,6 +4774,7 @@ async function postSerialized(fetchFn, url, body, headers, timeoutMs, serializer
|
|
|
4615
4774
|
"content-type": "application/json; charset=utf-8",
|
|
4616
4775
|
...headers
|
|
4617
4776
|
};
|
|
4777
|
+
if (contextHeaderText) reqHeaders["x-runner-context"] = contextHeaderText;
|
|
4618
4778
|
if (onRequest) await onRequest({ url, headers: reqHeaders });
|
|
4619
4779
|
const res = await fetchFn(url, {
|
|
4620
4780
|
method: "POST",
|
|
@@ -4645,6 +4805,20 @@ function createExposureFetch(cfg) {
|
|
|
4645
4805
|
"global fetch is not available; provide fetchImpl in config"
|
|
4646
4806
|
);
|
|
4647
4807
|
}
|
|
4808
|
+
const buildContextHeader = /* @__PURE__ */ __name(() => {
|
|
4809
|
+
if (!cfg.contexts || cfg.contexts.length === 0) return void 0;
|
|
4810
|
+
const map = {};
|
|
4811
|
+
for (const ctx of cfg.contexts) {
|
|
4812
|
+
try {
|
|
4813
|
+
const v = ctx.use();
|
|
4814
|
+
map[ctx.id] = ctx.serialize(v);
|
|
4815
|
+
} catch {
|
|
4816
|
+
}
|
|
4817
|
+
}
|
|
4818
|
+
const keys = Object.keys(map);
|
|
4819
|
+
if (keys.length === 0) return void 0;
|
|
4820
|
+
return cfg.serializer.stringify(map);
|
|
4821
|
+
}, "buildContextHeader");
|
|
4648
4822
|
return {
|
|
4649
4823
|
async task(id2, input) {
|
|
4650
4824
|
const url = `${baseUrl}/task/${encodeURIComponent(id2)}`;
|
|
@@ -4655,9 +4829,19 @@ function createExposureFetch(cfg) {
|
|
|
4655
4829
|
buildHeaders(),
|
|
4656
4830
|
cfg?.timeoutMs,
|
|
4657
4831
|
cfg.serializer,
|
|
4658
|
-
cfg?.onRequest
|
|
4832
|
+
cfg?.onRequest,
|
|
4833
|
+
buildContextHeader()
|
|
4659
4834
|
);
|
|
4660
|
-
|
|
4835
|
+
try {
|
|
4836
|
+
return assertOkEnvelope(r2, { fallbackMessage: "Tunnel task error" });
|
|
4837
|
+
} catch (e) {
|
|
4838
|
+
const te = e;
|
|
4839
|
+
if (te && cfg.errorRegistry && te.id && te.data) {
|
|
4840
|
+
const helper = cfg.errorRegistry.get(String(te.id));
|
|
4841
|
+
if (helper) helper.throw(te.data);
|
|
4842
|
+
}
|
|
4843
|
+
throw e;
|
|
4844
|
+
}
|
|
4661
4845
|
},
|
|
4662
4846
|
async event(id2, payload) {
|
|
4663
4847
|
const url = `${baseUrl}/event/${encodeURIComponent(id2)}`;
|
|
@@ -4668,9 +4852,19 @@ function createExposureFetch(cfg) {
|
|
|
4668
4852
|
buildHeaders(),
|
|
4669
4853
|
cfg?.timeoutMs,
|
|
4670
4854
|
cfg.serializer,
|
|
4671
|
-
cfg?.onRequest
|
|
4855
|
+
cfg?.onRequest,
|
|
4856
|
+
buildContextHeader()
|
|
4672
4857
|
);
|
|
4673
|
-
|
|
4858
|
+
try {
|
|
4859
|
+
assertOkEnvelope(r2, { fallbackMessage: "Tunnel event error" });
|
|
4860
|
+
} catch (e) {
|
|
4861
|
+
const te = e;
|
|
4862
|
+
if (te && cfg.errorRegistry && te.id && te.data) {
|
|
4863
|
+
const helper = cfg.errorRegistry.get(String(te.id));
|
|
4864
|
+
if (helper) helper.throw(te.data);
|
|
4865
|
+
}
|
|
4866
|
+
throw e;
|
|
4867
|
+
}
|
|
4674
4868
|
}
|
|
4675
4869
|
};
|
|
4676
4870
|
}
|
|
@@ -4722,14 +4916,14 @@ function buildTestFacade(deps) {
|
|
|
4722
4916
|
__name(buildTestFacade, "buildTestFacade");
|
|
4723
4917
|
|
|
4724
4918
|
// src/definers/builders/resource.ts
|
|
4725
|
-
function
|
|
4919
|
+
function clone2(s, patch) {
|
|
4726
4920
|
return Object.freeze({
|
|
4727
4921
|
// We reuse the frozen state while widening generics, hence the temporary cast.
|
|
4728
4922
|
...s,
|
|
4729
4923
|
...patch
|
|
4730
4924
|
});
|
|
4731
4925
|
}
|
|
4732
|
-
__name(
|
|
4926
|
+
__name(clone2, "clone");
|
|
4733
4927
|
function toRegisterArray(items) {
|
|
4734
4928
|
return Array.isArray(items) ? [...items] : [items];
|
|
4735
4929
|
}
|
|
@@ -4813,7 +5007,7 @@ function makeResourceBuilder(state) {
|
|
|
4813
5007
|
id: state.id,
|
|
4814
5008
|
dependencies(deps, options) {
|
|
4815
5009
|
const override = options?.override ?? false;
|
|
4816
|
-
const next =
|
|
5010
|
+
const next = clone2(state, {
|
|
4817
5011
|
dependencies: mergeDependencies(
|
|
4818
5012
|
state.dependencies,
|
|
4819
5013
|
deps,
|
|
@@ -4827,50 +5021,50 @@ function makeResourceBuilder(state) {
|
|
|
4827
5021
|
},
|
|
4828
5022
|
register(items, options) {
|
|
4829
5023
|
const override = options?.override ?? false;
|
|
4830
|
-
const next =
|
|
5024
|
+
const next = clone2(state, {
|
|
4831
5025
|
register: mergeRegister(state.register, items, override)
|
|
4832
5026
|
});
|
|
4833
5027
|
return makeResourceBuilder(next);
|
|
4834
5028
|
},
|
|
4835
5029
|
middleware(mw, options) {
|
|
4836
5030
|
const override = options?.override ?? false;
|
|
4837
|
-
const next =
|
|
5031
|
+
const next = clone2(state, {
|
|
4838
5032
|
middleware: mergeArray(state.middleware, mw, override)
|
|
4839
5033
|
});
|
|
4840
5034
|
return makeResourceBuilder(next);
|
|
4841
5035
|
},
|
|
4842
5036
|
tags(tags, options) {
|
|
4843
5037
|
const override = options?.override ?? false;
|
|
4844
|
-
const next =
|
|
5038
|
+
const next = clone2(state, { tags: mergeArray(state.tags, tags, override) });
|
|
4845
5039
|
return makeResourceBuilder(next);
|
|
4846
5040
|
},
|
|
4847
5041
|
context(factory) {
|
|
4848
|
-
const next =
|
|
5042
|
+
const next = clone2(state, { context: factory });
|
|
4849
5043
|
return makeResourceBuilder(next);
|
|
4850
5044
|
},
|
|
4851
5045
|
configSchema(schema) {
|
|
4852
|
-
const next =
|
|
5046
|
+
const next = clone2(state, { configSchema: schema });
|
|
4853
5047
|
return makeResourceBuilder(next);
|
|
4854
5048
|
},
|
|
4855
5049
|
resultSchema(schema) {
|
|
4856
|
-
const next =
|
|
5050
|
+
const next = clone2(state, { resultSchema: schema });
|
|
4857
5051
|
return makeResourceBuilder(next);
|
|
4858
5052
|
},
|
|
4859
5053
|
init(fn) {
|
|
4860
|
-
const next =
|
|
5054
|
+
const next = clone2(state, { init: fn });
|
|
4861
5055
|
return makeResourceBuilder(next);
|
|
4862
5056
|
},
|
|
4863
5057
|
dispose(fn) {
|
|
4864
|
-
const next =
|
|
5058
|
+
const next = clone2(state, { dispose: fn });
|
|
4865
5059
|
return makeResourceBuilder(next);
|
|
4866
5060
|
},
|
|
4867
5061
|
meta(m) {
|
|
4868
|
-
const next =
|
|
5062
|
+
const next = clone2(state, { meta: m });
|
|
4869
5063
|
return makeResourceBuilder(next);
|
|
4870
5064
|
},
|
|
4871
5065
|
overrides(o, options) {
|
|
4872
5066
|
const override = options?.override ?? false;
|
|
4873
|
-
const next =
|
|
5067
|
+
const next = clone2(state, {
|
|
4874
5068
|
overrides: mergeArray(state.overrides, o, override)
|
|
4875
5069
|
});
|
|
4876
5070
|
return makeResourceBuilder(next);
|
|
@@ -4957,16 +5151,16 @@ function mergeDepsNoConfig(existing, addition, override) {
|
|
|
4957
5151
|
__name(mergeDepsNoConfig, "mergeDepsNoConfig");
|
|
4958
5152
|
|
|
4959
5153
|
// src/definers/builders/task.phantom.ts
|
|
4960
|
-
function
|
|
5154
|
+
function clone3(s, patch) {
|
|
4961
5155
|
return cloneState(s, patch);
|
|
4962
5156
|
}
|
|
4963
|
-
__name(
|
|
5157
|
+
__name(clone3, "clone");
|
|
4964
5158
|
function makePhantomTaskBuilder(state) {
|
|
4965
5159
|
const builder = {
|
|
4966
5160
|
id: state.id,
|
|
4967
5161
|
dependencies(deps, options) {
|
|
4968
5162
|
const override = options?.override ?? false;
|
|
4969
|
-
const next =
|
|
5163
|
+
const next = clone3(state, {
|
|
4970
5164
|
dependencies: mergeDepsNoConfig(
|
|
4971
5165
|
state.dependencies,
|
|
4972
5166
|
deps,
|
|
@@ -4980,26 +5174,26 @@ function makePhantomTaskBuilder(state) {
|
|
|
4980
5174
|
},
|
|
4981
5175
|
middleware(mw, options) {
|
|
4982
5176
|
const override = options?.override ?? false;
|
|
4983
|
-
const next =
|
|
5177
|
+
const next = clone3(state, {
|
|
4984
5178
|
middleware: mergeArray2(state.middleware, mw, override)
|
|
4985
5179
|
});
|
|
4986
5180
|
return makePhantomTaskBuilder(next);
|
|
4987
5181
|
},
|
|
4988
5182
|
tags(t, options) {
|
|
4989
5183
|
const override = options?.override ?? false;
|
|
4990
|
-
const next =
|
|
5184
|
+
const next = clone3(state, { tags: mergeArray2(state.tags, t, override) });
|
|
4991
5185
|
return makePhantomTaskBuilder(next);
|
|
4992
5186
|
},
|
|
4993
5187
|
inputSchema(schema) {
|
|
4994
|
-
const next =
|
|
5188
|
+
const next = clone3(state, { inputSchema: schema });
|
|
4995
5189
|
return makePhantomTaskBuilder(next);
|
|
4996
5190
|
},
|
|
4997
5191
|
resultSchema(schema) {
|
|
4998
|
-
const next =
|
|
5192
|
+
const next = clone3(state, { resultSchema: schema });
|
|
4999
5193
|
return makePhantomTaskBuilder(next);
|
|
5000
5194
|
},
|
|
5001
5195
|
meta(m) {
|
|
5002
|
-
const next =
|
|
5196
|
+
const next = clone3(state, { meta: m });
|
|
5003
5197
|
return makePhantomTaskBuilder(next);
|
|
5004
5198
|
},
|
|
5005
5199
|
build() {
|
|
@@ -5033,16 +5227,16 @@ function phantomTaskBuilder(id2) {
|
|
|
5033
5227
|
__name(phantomTaskBuilder, "phantomTaskBuilder");
|
|
5034
5228
|
|
|
5035
5229
|
// src/definers/builders/task.ts
|
|
5036
|
-
function
|
|
5230
|
+
function clone4(s, patch) {
|
|
5037
5231
|
return cloneState(s, patch);
|
|
5038
5232
|
}
|
|
5039
|
-
__name(
|
|
5233
|
+
__name(clone4, "clone");
|
|
5040
5234
|
function makeTaskBuilder(state) {
|
|
5041
5235
|
const builder = {
|
|
5042
5236
|
id: state.id,
|
|
5043
5237
|
dependencies(deps, options) {
|
|
5044
5238
|
const override = options?.override ?? false;
|
|
5045
|
-
const next =
|
|
5239
|
+
const next = clone4(state, {
|
|
5046
5240
|
dependencies: mergeDepsNoConfig(
|
|
5047
5241
|
state.dependencies,
|
|
5048
5242
|
deps,
|
|
@@ -5056,22 +5250,22 @@ function makeTaskBuilder(state) {
|
|
|
5056
5250
|
},
|
|
5057
5251
|
middleware(mw, options) {
|
|
5058
5252
|
const override = options?.override ?? false;
|
|
5059
|
-
const next =
|
|
5253
|
+
const next = clone4(state, {
|
|
5060
5254
|
middleware: mergeArray2(state.middleware, mw, override)
|
|
5061
5255
|
});
|
|
5062
5256
|
return makeTaskBuilder(next);
|
|
5063
5257
|
},
|
|
5064
5258
|
tags(t, options) {
|
|
5065
5259
|
const override = options?.override ?? false;
|
|
5066
|
-
const next =
|
|
5260
|
+
const next = clone4(state, { tags: mergeArray2(state.tags, t, override) });
|
|
5067
5261
|
return makeTaskBuilder(next);
|
|
5068
5262
|
},
|
|
5069
5263
|
inputSchema(schema) {
|
|
5070
|
-
const next =
|
|
5264
|
+
const next = clone4(state, { inputSchema: schema });
|
|
5071
5265
|
return makeTaskBuilder(next);
|
|
5072
5266
|
},
|
|
5073
5267
|
resultSchema(schema) {
|
|
5074
|
-
const next =
|
|
5268
|
+
const next = clone4(state, { resultSchema: schema });
|
|
5075
5269
|
return makeTaskBuilder(next);
|
|
5076
5270
|
},
|
|
5077
5271
|
run(fn) {
|
|
@@ -5079,11 +5273,11 @@ function makeTaskBuilder(state) {
|
|
|
5079
5273
|
input,
|
|
5080
5274
|
deps
|
|
5081
5275
|
), "wrapped");
|
|
5082
|
-
const next =
|
|
5276
|
+
const next = clone4(state, { run: wrapped });
|
|
5083
5277
|
return makeTaskBuilder(next);
|
|
5084
5278
|
},
|
|
5085
5279
|
meta(m) {
|
|
5086
|
-
const next =
|
|
5280
|
+
const next = clone4(state, { meta: m });
|
|
5087
5281
|
return makeTaskBuilder(next);
|
|
5088
5282
|
},
|
|
5089
5283
|
build() {
|
|
@@ -5114,25 +5308,25 @@ var task = Object.assign(taskBuilder, {
|
|
|
5114
5308
|
});
|
|
5115
5309
|
|
|
5116
5310
|
// src/definers/builders/event.ts
|
|
5117
|
-
function
|
|
5311
|
+
function clone5(s, patch) {
|
|
5118
5312
|
return Object.freeze({ ...s, ...patch });
|
|
5119
5313
|
}
|
|
5120
|
-
__name(
|
|
5314
|
+
__name(clone5, "clone");
|
|
5121
5315
|
function makeEventBuilder(state) {
|
|
5122
5316
|
const b = {
|
|
5123
5317
|
id: state.id,
|
|
5124
5318
|
payloadSchema(schema) {
|
|
5125
|
-
const next =
|
|
5319
|
+
const next = clone5(state, { payloadSchema: schema });
|
|
5126
5320
|
return makeEventBuilder(next);
|
|
5127
5321
|
},
|
|
5128
5322
|
tags(t, options) {
|
|
5129
5323
|
const override = options?.override ?? false;
|
|
5130
5324
|
const tags = mergeArray2(state.tags, t, override);
|
|
5131
|
-
const next =
|
|
5325
|
+
const next = clone5(state, { tags });
|
|
5132
5326
|
return makeEventBuilder(next);
|
|
5133
5327
|
},
|
|
5134
5328
|
meta(m) {
|
|
5135
|
-
const next =
|
|
5329
|
+
const next = clone5(state, { meta: m });
|
|
5136
5330
|
return makeEventBuilder(next);
|
|
5137
5331
|
},
|
|
5138
5332
|
build() {
|
|
@@ -5157,21 +5351,21 @@ __name(eventBuilder, "eventBuilder");
|
|
|
5157
5351
|
var event = eventBuilder;
|
|
5158
5352
|
|
|
5159
5353
|
// src/definers/builders/hook.ts
|
|
5160
|
-
function
|
|
5354
|
+
function clone6(s, patch) {
|
|
5161
5355
|
return Object.freeze({ ...s, ...patch });
|
|
5162
5356
|
}
|
|
5163
|
-
__name(
|
|
5357
|
+
__name(clone6, "clone");
|
|
5164
5358
|
function makeHookBuilder(state) {
|
|
5165
5359
|
const b = {
|
|
5166
5360
|
id: state.id,
|
|
5167
5361
|
on(on) {
|
|
5168
|
-
const next =
|
|
5362
|
+
const next = clone6(state, { on });
|
|
5169
5363
|
return makeHookBuilder(
|
|
5170
5364
|
next
|
|
5171
5365
|
);
|
|
5172
5366
|
},
|
|
5173
5367
|
order(order) {
|
|
5174
|
-
const next =
|
|
5368
|
+
const next = clone6(state, { order });
|
|
5175
5369
|
return makeHookBuilder(next);
|
|
5176
5370
|
},
|
|
5177
5371
|
dependencies(deps, options) {
|
|
@@ -5198,7 +5392,7 @@ function makeHookBuilder(state) {
|
|
|
5198
5392
|
const a = deps;
|
|
5199
5393
|
merged = { ...e, ...a };
|
|
5200
5394
|
}
|
|
5201
|
-
const next =
|
|
5395
|
+
const next = clone6(state, { dependencies: merged });
|
|
5202
5396
|
if (override) {
|
|
5203
5397
|
return makeHookBuilder(
|
|
5204
5398
|
next
|
|
@@ -5211,17 +5405,17 @@ function makeHookBuilder(state) {
|
|
|
5211
5405
|
tags(t, options) {
|
|
5212
5406
|
const override = options?.override ?? false;
|
|
5213
5407
|
const tags = mergeArray2(state.tags, t, override);
|
|
5214
|
-
const next =
|
|
5408
|
+
const next = clone6(state, { tags });
|
|
5215
5409
|
return makeHookBuilder(next);
|
|
5216
5410
|
},
|
|
5217
5411
|
meta(m) {
|
|
5218
|
-
const next =
|
|
5412
|
+
const next = clone6(state, { meta: m });
|
|
5219
5413
|
return makeHookBuilder(
|
|
5220
5414
|
next
|
|
5221
5415
|
);
|
|
5222
5416
|
},
|
|
5223
5417
|
run(fn) {
|
|
5224
|
-
const next =
|
|
5418
|
+
const next = clone6(state, { run: fn });
|
|
5225
5419
|
return makeHookBuilder(next);
|
|
5226
5420
|
},
|
|
5227
5421
|
build() {
|
|
@@ -5266,7 +5460,10 @@ function makeTaskMiddlewareBuilder(state) {
|
|
|
5266
5460
|
} else if (isFnExisting && isFnAddition) {
|
|
5267
5461
|
const e = state.dependencies;
|
|
5268
5462
|
const a = deps;
|
|
5269
|
-
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
5463
|
+
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
5464
|
+
...e(cfg),
|
|
5465
|
+
...a(cfg)
|
|
5466
|
+
})), "merged");
|
|
5270
5467
|
} else if (isFnExisting && !isFnAddition) {
|
|
5271
5468
|
const e = state.dependencies;
|
|
5272
5469
|
const a = deps;
|
|
@@ -5353,7 +5550,10 @@ function makeResourceMiddlewareBuilder(state) {
|
|
|
5353
5550
|
} else if (isFnExisting && isFnAddition) {
|
|
5354
5551
|
const e = state.dependencies;
|
|
5355
5552
|
const a = deps;
|
|
5356
|
-
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
5553
|
+
merged = /* @__PURE__ */ __name(((cfg) => ({
|
|
5554
|
+
...e(cfg),
|
|
5555
|
+
...a(cfg)
|
|
5556
|
+
})), "merged");
|
|
5357
5557
|
} else if (isFnExisting && !isFnAddition) {
|
|
5358
5558
|
const e = state.dependencies;
|
|
5359
5559
|
const a = deps;
|
|
@@ -5427,25 +5627,25 @@ var taskMiddleware = taskMiddlewareBuilder;
|
|
|
5427
5627
|
var resourceMiddleware = resourceMiddlewareBuilder;
|
|
5428
5628
|
|
|
5429
5629
|
// src/definers/builders/tag.ts
|
|
5430
|
-
function
|
|
5630
|
+
function clone7(s, patch) {
|
|
5431
5631
|
return Object.freeze({ ...s, ...patch });
|
|
5432
5632
|
}
|
|
5433
|
-
__name(
|
|
5633
|
+
__name(clone7, "clone");
|
|
5434
5634
|
function makeTagBuilder(state) {
|
|
5435
5635
|
const b = {
|
|
5436
5636
|
id: state.id,
|
|
5437
5637
|
meta(m) {
|
|
5438
|
-
const next =
|
|
5638
|
+
const next = clone7(state, { meta: m });
|
|
5439
5639
|
return makeTagBuilder(next);
|
|
5440
5640
|
},
|
|
5441
5641
|
configSchema(schema) {
|
|
5442
|
-
const next =
|
|
5642
|
+
const next = clone7(state, { configSchema: schema });
|
|
5443
5643
|
return makeTagBuilder(
|
|
5444
5644
|
next
|
|
5445
5645
|
);
|
|
5446
5646
|
},
|
|
5447
5647
|
config(config) {
|
|
5448
|
-
const next =
|
|
5648
|
+
const next = clone7(state, { config });
|
|
5449
5649
|
return makeTagBuilder(
|
|
5450
5650
|
next
|
|
5451
5651
|
);
|
|
@@ -5476,6 +5676,51 @@ function tagBuilder(id2) {
|
|
|
5476
5676
|
__name(tagBuilder, "tagBuilder");
|
|
5477
5677
|
var tag = tagBuilder;
|
|
5478
5678
|
|
|
5679
|
+
// src/definers/builders/asyncContext.ts
|
|
5680
|
+
function clone8(s, patch) {
|
|
5681
|
+
return Object.freeze({ ...s, ...patch });
|
|
5682
|
+
}
|
|
5683
|
+
__name(clone8, "clone");
|
|
5684
|
+
function makeAsyncContextBuilder(state) {
|
|
5685
|
+
const b = {
|
|
5686
|
+
id: state.id,
|
|
5687
|
+
serialize(fn) {
|
|
5688
|
+
const next = clone8(state, { serialize: fn });
|
|
5689
|
+
return makeAsyncContextBuilder(next);
|
|
5690
|
+
},
|
|
5691
|
+
parse(fn) {
|
|
5692
|
+
const next = clone8(state, { parse: fn });
|
|
5693
|
+
return makeAsyncContextBuilder(next);
|
|
5694
|
+
},
|
|
5695
|
+
configSchema(schema) {
|
|
5696
|
+
const next = clone8(state, { configSchema: schema });
|
|
5697
|
+
return makeAsyncContextBuilder(next);
|
|
5698
|
+
},
|
|
5699
|
+
build() {
|
|
5700
|
+
const def = {
|
|
5701
|
+
id: state.id,
|
|
5702
|
+
serialize: state.serialize,
|
|
5703
|
+
parse: state.parse,
|
|
5704
|
+
configSchema: state.configSchema
|
|
5705
|
+
};
|
|
5706
|
+
return defineAsyncContext(def);
|
|
5707
|
+
}
|
|
5708
|
+
};
|
|
5709
|
+
return b;
|
|
5710
|
+
}
|
|
5711
|
+
__name(makeAsyncContextBuilder, "makeAsyncContextBuilder");
|
|
5712
|
+
function asyncContextBuilder(id2) {
|
|
5713
|
+
const initial = Object.freeze({
|
|
5714
|
+
id: id2,
|
|
5715
|
+
serialize: void 0,
|
|
5716
|
+
parse: void 0,
|
|
5717
|
+
configSchema: void 0
|
|
5718
|
+
});
|
|
5719
|
+
return makeAsyncContextBuilder(initial);
|
|
5720
|
+
}
|
|
5721
|
+
__name(asyncContextBuilder, "asyncContextBuilder");
|
|
5722
|
+
var asyncContext = asyncContextBuilder;
|
|
5723
|
+
|
|
5479
5724
|
// src/models/Semaphore.ts
|
|
5480
5725
|
var Semaphore = class {
|
|
5481
5726
|
constructor(maxPermits) {
|
|
@@ -5526,9 +5771,9 @@ var Semaphore = class {
|
|
|
5526
5771
|
options.signal.removeEventListener("abort", abortHandler);
|
|
5527
5772
|
originalResolve();
|
|
5528
5773
|
};
|
|
5529
|
-
operation.reject = (
|
|
5774
|
+
operation.reject = (error2) => {
|
|
5530
5775
|
options.signal.removeEventListener("abort", abortHandler);
|
|
5531
|
-
originalReject(
|
|
5776
|
+
originalReject(error2);
|
|
5532
5777
|
};
|
|
5533
5778
|
}
|
|
5534
5779
|
this.waitingQueue.push(operation);
|
|
@@ -5629,14 +5874,18 @@ var globals = {
|
|
|
5629
5874
|
resources: globalResources,
|
|
5630
5875
|
middleware: globalMiddlewares,
|
|
5631
5876
|
tags: globalTags,
|
|
5632
|
-
tunnels
|
|
5877
|
+
tunnels,
|
|
5878
|
+
debug
|
|
5633
5879
|
};
|
|
5880
|
+
var createContext2 = createContext;
|
|
5634
5881
|
var r = Object.freeze({
|
|
5635
5882
|
resource,
|
|
5636
5883
|
task,
|
|
5637
5884
|
event,
|
|
5638
5885
|
hook,
|
|
5639
5886
|
tag,
|
|
5887
|
+
asyncContext,
|
|
5888
|
+
error,
|
|
5640
5889
|
middleware: Object.freeze({
|
|
5641
5890
|
task: taskMiddleware,
|
|
5642
5891
|
resource: resourceMiddleware
|
|
@@ -5660,10 +5909,13 @@ exports.Semaphore = Semaphore;
|
|
|
5660
5909
|
exports.Store = Store;
|
|
5661
5910
|
exports.TaskRunner = TaskRunner;
|
|
5662
5911
|
exports.allFalse = allFalse;
|
|
5912
|
+
exports.asyncContext = defineAsyncContext;
|
|
5663
5913
|
exports.bindProcessErrorHandler = bindProcessErrorHandler;
|
|
5664
|
-
exports.createContext =
|
|
5914
|
+
exports.createContext = createContext2;
|
|
5665
5915
|
exports.createDefaultUnhandledError = createDefaultUnhandledError;
|
|
5666
5916
|
exports.createTestResource = createTestResource;
|
|
5917
|
+
exports.debug = debug;
|
|
5918
|
+
exports.debugLevels = debugLevels;
|
|
5667
5919
|
exports.definitions = defs_exports;
|
|
5668
5920
|
exports.event = defineEvent;
|
|
5669
5921
|
exports.getConfig = getConfig;
|