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