@bluelibs/runner 5.2.0 → 5.3.0
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/README.md +73 -10
- package/dist/browser/index.cjs +149 -59
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +149 -60
- package/dist/browser/index.mjs.map +1 -1
- package/dist/edge/index.cjs +149 -59
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.mjs +149 -60
- package/dist/edge/index.mjs.map +1 -1
- package/dist/node/node.cjs +384 -201
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +382 -202
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +6 -0
- package/dist/types/definers/builders/error/index.d.ts +10 -1
- package/dist/types/definers/builders/error/types.d.ts +2 -0
- package/dist/types/definers/defineError.d.ts +5 -3
- package/dist/types/defs.d.ts +2 -0
- package/dist/types/globals/resources/tunnel/protocol.d.ts +3 -0
- package/dist/types/models/Store.d.ts +5 -3
- package/dist/types/models/StoreRegistry.d.ts +5 -3
- package/dist/types/node/durable/core/DurableResource.d.ts +23 -9
- package/dist/types/node/durable/core/DurableService.d.ts +15 -9
- package/dist/types/node/durable/core/interfaces/service.d.ts +27 -19
- package/dist/types/node/durable/core/interfaces/store.d.ts +1 -1
- package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +34 -4
- package/dist/types/node/durable/core/managers/ScheduleManager.d.ts +5 -3
- package/dist/types/node/durable/core/managers/TaskRegistry.d.ts +5 -5
- package/dist/types/node/durable/core/managers/WaitManager.d.ts +1 -1
- package/dist/types/node/durable/index.d.ts +1 -0
- package/dist/types/node/durable/tags/durableWorkflow.tag.d.ts +14 -0
- package/dist/types/node/node.d.ts +2 -1
- package/dist/types/public.d.ts +4 -1
- package/dist/types/testing.d.ts +0 -1
- package/dist/types/types/error.d.ts +22 -1
- package/dist/types/types/resource.d.ts +2 -4
- package/dist/types/types/symbols.d.ts +2 -2
- package/dist/types/types/tagged.d.ts +18 -0
- package/dist/universal/index.cjs +149 -59
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.mjs +149 -60
- package/dist/universal/index.mjs.map +1 -1
- package/package.json +2 -2
- package/readmes/AI.md +25 -9
package/dist/browser/index.cjs
CHANGED
|
@@ -166,9 +166,7 @@ var symbolPhantomTask = Symbol.for(
|
|
|
166
166
|
"runner.task.phantom"
|
|
167
167
|
);
|
|
168
168
|
var symbolResource = Symbol.for("runner.resource");
|
|
169
|
-
var
|
|
170
|
-
"runner.resourceForkedFrom"
|
|
171
|
-
);
|
|
169
|
+
var symbolForkedFrom = Symbol.for("runner.forkedFrom");
|
|
172
170
|
var symbolResourceWithConfig = Symbol.for(
|
|
173
171
|
"runner.resourceWithConfig"
|
|
174
172
|
);
|
|
@@ -235,13 +233,13 @@ __export(defs_exports, {
|
|
|
235
233
|
symbolError: () => symbolError,
|
|
236
234
|
symbolEvent: () => symbolEvent,
|
|
237
235
|
symbolFilePath: () => symbolFilePath,
|
|
236
|
+
symbolForkedFrom: () => symbolForkedFrom,
|
|
238
237
|
symbolHook: () => symbolHook,
|
|
239
238
|
symbolMiddleware: () => symbolMiddleware,
|
|
240
239
|
symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
|
|
241
240
|
symbolOptionalDependency: () => symbolOptionalDependency,
|
|
242
241
|
symbolPhantomTask: () => symbolPhantomTask,
|
|
243
242
|
symbolResource: () => symbolResource,
|
|
244
|
-
symbolResourceForkedFrom: () => symbolResourceForkedFrom,
|
|
245
243
|
symbolResourceMiddleware: () => symbolResourceMiddleware,
|
|
246
244
|
symbolResourceWithConfig: () => symbolResourceWithConfig,
|
|
247
245
|
symbolTag: () => symbolTag,
|
|
@@ -446,12 +444,26 @@ __export(errors_exports, {
|
|
|
446
444
|
});
|
|
447
445
|
|
|
448
446
|
// src/definers/defineError.ts
|
|
447
|
+
var isValidHttpCode = /* @__PURE__ */ __name((value) => Number.isInteger(value) && value >= 100 && value <= 599, "isValidHttpCode");
|
|
448
|
+
var assertHttpCode = /* @__PURE__ */ __name((value) => {
|
|
449
|
+
if (!isValidHttpCode(value)) {
|
|
450
|
+
throw new Error(
|
|
451
|
+
`Error httpCode must be an integer between 100 and 599. Received: ${value}`
|
|
452
|
+
);
|
|
453
|
+
}
|
|
454
|
+
}, "assertHttpCode");
|
|
449
455
|
var RunnerError = class extends Error {
|
|
450
|
-
constructor(id2, message, data) {
|
|
451
|
-
super(
|
|
456
|
+
constructor(id2, message, data, httpCode, remediation) {
|
|
457
|
+
super(
|
|
458
|
+
remediation !== void 0 ? `${message}
|
|
459
|
+
|
|
460
|
+
Remediation: ${remediation}` : message
|
|
461
|
+
);
|
|
452
462
|
this.id = id2;
|
|
453
463
|
this.data = data;
|
|
454
464
|
this.name = id2;
|
|
465
|
+
this.httpCode = httpCode;
|
|
466
|
+
this.remediation = remediation;
|
|
455
467
|
}
|
|
456
468
|
static {
|
|
457
469
|
__name(this, "RunnerError");
|
|
@@ -471,10 +483,20 @@ var ErrorHelper = class {
|
|
|
471
483
|
get id() {
|
|
472
484
|
return this.definition.id;
|
|
473
485
|
}
|
|
486
|
+
get httpCode() {
|
|
487
|
+
return this.definition.httpCode;
|
|
488
|
+
}
|
|
474
489
|
throw(data) {
|
|
475
490
|
const parsed = this.definition.dataSchema ? this.definition.dataSchema.parse(data) : data;
|
|
476
491
|
const message = this.definition.format(parsed);
|
|
477
|
-
|
|
492
|
+
const remediation = typeof this.definition.remediation === "function" ? this.definition.remediation(parsed) : this.definition.remediation;
|
|
493
|
+
throw new RunnerError(
|
|
494
|
+
this.definition.id,
|
|
495
|
+
message,
|
|
496
|
+
parsed,
|
|
497
|
+
this.definition.httpCode,
|
|
498
|
+
remediation
|
|
499
|
+
);
|
|
478
500
|
}
|
|
479
501
|
is(error2) {
|
|
480
502
|
return error2 instanceof RunnerError && error2.name === this.definition.id;
|
|
@@ -487,6 +509,9 @@ var ErrorHelper = class {
|
|
|
487
509
|
}
|
|
488
510
|
};
|
|
489
511
|
function defineError(definition, filePath) {
|
|
512
|
+
if (definition.httpCode !== void 0) {
|
|
513
|
+
assertHttpCode(definition.httpCode);
|
|
514
|
+
}
|
|
490
515
|
if (!definition.format) {
|
|
491
516
|
definition.format = (data) => `${JSON.stringify(data)}`;
|
|
492
517
|
}
|
|
@@ -508,9 +533,22 @@ function clone(s, patch) {
|
|
|
508
533
|
__name(clone, "clone");
|
|
509
534
|
|
|
510
535
|
// src/definers/builders/error/fluent-builder.ts
|
|
536
|
+
var isValidHttpCode2 = /* @__PURE__ */ __name((value) => Number.isInteger(value) && value >= 100 && value <= 599, "isValidHttpCode");
|
|
537
|
+
var assertHttpCode2 = /* @__PURE__ */ __name((value) => {
|
|
538
|
+
if (!isValidHttpCode2(value)) {
|
|
539
|
+
throw new Error(
|
|
540
|
+
`Error httpCode must be an integer between 100 and 599. Received: ${value}`
|
|
541
|
+
);
|
|
542
|
+
}
|
|
543
|
+
}, "assertHttpCode");
|
|
511
544
|
function makeErrorBuilder(state) {
|
|
512
545
|
const builder = {
|
|
513
546
|
id: state.id,
|
|
547
|
+
httpCode(code) {
|
|
548
|
+
assertHttpCode2(code);
|
|
549
|
+
const next = clone(state, { httpCode: code });
|
|
550
|
+
return makeErrorBuilder(next);
|
|
551
|
+
},
|
|
514
552
|
serialize(fn) {
|
|
515
553
|
const next = clone(state, { serialize: fn });
|
|
516
554
|
return makeErrorBuilder(next);
|
|
@@ -527,6 +565,10 @@ function makeErrorBuilder(state) {
|
|
|
527
565
|
const next = clone(state, { format: fn });
|
|
528
566
|
return makeErrorBuilder(next);
|
|
529
567
|
},
|
|
568
|
+
remediation(advice) {
|
|
569
|
+
const next = clone(state, { remediation: advice });
|
|
570
|
+
return makeErrorBuilder(next);
|
|
571
|
+
},
|
|
530
572
|
meta(m) {
|
|
531
573
|
const next = clone(state, { meta: m });
|
|
532
574
|
return makeErrorBuilder(next);
|
|
@@ -535,10 +577,12 @@ function makeErrorBuilder(state) {
|
|
|
535
577
|
return defineError(
|
|
536
578
|
{
|
|
537
579
|
id: state.id,
|
|
580
|
+
httpCode: state.httpCode,
|
|
538
581
|
serialize: state.serialize,
|
|
539
582
|
parse: state.parse,
|
|
540
583
|
dataSchema: state.dataSchema,
|
|
541
584
|
format: state.format,
|
|
585
|
+
remediation: state.remediation,
|
|
542
586
|
meta: state.meta
|
|
543
587
|
},
|
|
544
588
|
state.filePath
|
|
@@ -555,6 +599,7 @@ function errorBuilder(id2) {
|
|
|
555
599
|
const initial = Object.freeze({
|
|
556
600
|
id: id2,
|
|
557
601
|
filePath,
|
|
602
|
+
httpCode: void 0,
|
|
558
603
|
serialize: void 0,
|
|
559
604
|
parse: void 0,
|
|
560
605
|
dataSchema: void 0,
|
|
@@ -563,7 +608,13 @@ function errorBuilder(id2) {
|
|
|
563
608
|
return makeErrorBuilder(initial);
|
|
564
609
|
}
|
|
565
610
|
__name(errorBuilder, "errorBuilder");
|
|
566
|
-
|
|
611
|
+
function isRunnerError(error2) {
|
|
612
|
+
return error2 instanceof RunnerError;
|
|
613
|
+
}
|
|
614
|
+
__name(isRunnerError, "isRunnerError");
|
|
615
|
+
var error = Object.assign(errorBuilder, {
|
|
616
|
+
is: isRunnerError
|
|
617
|
+
});
|
|
567
618
|
|
|
568
619
|
// src/platform/adapters/node-als.ts
|
|
569
620
|
async function loadAsyncLocalStorageClass() {
|
|
@@ -994,9 +1045,13 @@ var PlatformAdapter = class {
|
|
|
994
1045
|
// src/errors.ts
|
|
995
1046
|
var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
|
|
996
1047
|
({ 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.`
|
|
1048
|
+
).remediation(
|
|
1049
|
+
({ type }) => `Ensure each ${type} has a unique id. If you need the same definition in multiple places, use .fork() to create a copy with a new id.`
|
|
997
1050
|
).build();
|
|
998
1051
|
var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
|
|
999
1052
|
({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
|
|
1053
|
+
).remediation(
|
|
1054
|
+
({ key }) => `Register the dependency "${key.toString()}" in a parent resource using .register([${key.toString()}]). If the dependency is optional, use .optional() when declaring it.`
|
|
1000
1055
|
).build();
|
|
1001
1056
|
var unknownItemTypeError = error(
|
|
1002
1057
|
"runner.errors.unknownItemType"
|
|
@@ -1004,10 +1059,14 @@ var unknownItemTypeError = error(
|
|
|
1004
1059
|
({ item }) => `Unknown item type: ${String(
|
|
1005
1060
|
item
|
|
1006
1061
|
)}. Please ensure you are not using different versions of '@bluelibs/runner'`
|
|
1062
|
+
).remediation(
|
|
1063
|
+
"Check that all packages depend on the same version of '@bluelibs/runner'. Run 'npm ls @bluelibs/runner' to detect duplicates."
|
|
1007
1064
|
).build();
|
|
1008
1065
|
var contextError = error(
|
|
1009
1066
|
"runner.errors.context"
|
|
1010
|
-
).format(({ details }) => details ?? "Context error").
|
|
1067
|
+
).format(({ details }) => details ?? "Context error").remediation(
|
|
1068
|
+
"Verify the async context is registered in a parent resource and that .provide() was called before .use(). If the context is optional, use .optional() when declaring the dependency."
|
|
1069
|
+
).build();
|
|
1011
1070
|
var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
|
|
1012
1071
|
const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
|
|
1013
1072
|
const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
|
|
@@ -1020,36 +1079,54 @@ var circularDependenciesError = error("runner.errors.circularDependencies").form
|
|
|
1020
1079
|
}
|
|
1021
1080
|
return `Circular dependencies detected:
|
|
1022
1081
|
${cycleDetails}${guidance}`;
|
|
1023
|
-
}).
|
|
1082
|
+
}).remediation(
|
|
1083
|
+
"Break the cycle by extracting shared state into a new resource that both sides depend on, or use events for indirect communication."
|
|
1084
|
+
).build();
|
|
1024
1085
|
var eventNotFoundError = error(
|
|
1025
1086
|
"runner.errors.eventNotFound"
|
|
1026
1087
|
).format(
|
|
1027
1088
|
({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
|
|
1089
|
+
).remediation(
|
|
1090
|
+
({ id: id2 }) => `Add the event "${id2.toString()}" to a parent resource via .register([yourEvent]). Ensure the event definition is built with r.event("${id2.toString()}").build().`
|
|
1028
1091
|
).build();
|
|
1029
1092
|
var resourceNotFoundError = error(
|
|
1030
1093
|
"runner.errors.resourceNotFound"
|
|
1031
1094
|
).format(
|
|
1032
1095
|
({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
|
|
1096
|
+
).remediation(
|
|
1097
|
+
({ id: id2 }) => `Register the resource "${id2.toString()}" in a parent resource via .register([yourResource]). Verify the id string matches exactly (ids are case-sensitive).`
|
|
1033
1098
|
).build();
|
|
1034
1099
|
var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
|
|
1035
1100
|
({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
|
|
1101
|
+
).remediation(
|
|
1102
|
+
({ middlewareId }) => `Register the middleware "${middlewareId}" alongside its consumer in a parent resource via .register([yourMiddleware]).`
|
|
1036
1103
|
).build();
|
|
1037
1104
|
var tagNotFoundError = error(
|
|
1038
1105
|
"runner.errors.tagNotFound"
|
|
1039
1106
|
).format(
|
|
1040
1107
|
({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
|
|
1108
|
+
).remediation(
|
|
1109
|
+
({ id: id2 }) => `Register the tag "${id2}" in a parent resource via .register([yourTag]). Tags must be registered before they can be queried.`
|
|
1041
1110
|
).build();
|
|
1042
1111
|
var lockedError = error(
|
|
1043
1112
|
"runner.errors.locked"
|
|
1044
1113
|
).format(
|
|
1045
1114
|
({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
|
|
1115
|
+
).remediation(
|
|
1116
|
+
({ what }) => `The ${what.toString()} is locked after initialization. Perform all modifications before calling run().`
|
|
1046
1117
|
).build();
|
|
1047
1118
|
var storeAlreadyInitializedError = error(
|
|
1048
1119
|
"runner.errors.storeAlreadyInitialized"
|
|
1049
|
-
).format(() => "Store already initialized. Cannot reinitialize.").
|
|
1120
|
+
).format(() => "Store already initialized. Cannot reinitialize.").remediation(
|
|
1121
|
+
"Do not call run() more than once on the same resource tree. Create a fresh resource if you need a separate runtime."
|
|
1122
|
+
).build();
|
|
1050
1123
|
var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
|
|
1051
1124
|
const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
|
|
1052
1125
|
return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
|
|
1126
|
+
}).remediation(({ subject, id: id2 }) => {
|
|
1127
|
+
const lower = subject.toLowerCase();
|
|
1128
|
+
const schemaHint = lower.includes("input") ? "inputSchema" : lower.includes("config") ? "configSchema" : lower.includes("result") ? "resultSchema" : "schema";
|
|
1129
|
+
return `Check the ${subject} passed to "${id2.toString()}". Ensure it matches the schema defined via .${schemaHint}().`;
|
|
1053
1130
|
}).build();
|
|
1054
1131
|
var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
|
|
1055
1132
|
const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
|
|
@@ -1057,33 +1134,49 @@ var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
|
|
|
1057
1134
|
${chain}
|
|
1058
1135
|
|
|
1059
1136
|
Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
|
|
1060
|
-
}).
|
|
1137
|
+
}).remediation(
|
|
1138
|
+
"Refactor hooks to avoid circular event emissions. Use conditional guards, split events into finer-grained signals, or introduce an intermediate task to break the cycle."
|
|
1139
|
+
).build();
|
|
1061
1140
|
var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
|
|
1062
1141
|
const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
|
|
1063
1142
|
return `Event emission cycles detected between hooks and events:
|
|
1064
1143
|
${list}
|
|
1065
1144
|
|
|
1066
1145
|
This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
|
|
1067
|
-
}).
|
|
1146
|
+
}).remediation(
|
|
1147
|
+
"Redesign the event/hook graph so no hook emits an event that eventually triggers itself. Use tags or conditional logic to prevent re-entrant emissions."
|
|
1148
|
+
).build();
|
|
1068
1149
|
var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
|
|
1069
1150
|
({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
|
|
1151
|
+
).remediation(
|
|
1152
|
+
({ functionName }) => `The function "${functionName}" requires a Node.js environment. If running in a browser or edge runtime, use a platform-compatible alternative or guard the call with a platform check.`
|
|
1070
1153
|
).build();
|
|
1071
1154
|
var cancellationError = error(
|
|
1072
1155
|
"runner.errors.cancellation"
|
|
1073
|
-
).format(({ reason }) => reason || "Operation cancelled").
|
|
1156
|
+
).format(({ reason }) => reason || "Operation cancelled").remediation(
|
|
1157
|
+
"The operation was cancelled, typically via an AbortController signal. If this is unexpected, check timeout middleware settings or ensure the caller is not aborting prematurely."
|
|
1158
|
+
).build();
|
|
1074
1159
|
var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
|
|
1075
1160
|
({ 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.`
|
|
1161
|
+
).remediation(
|
|
1162
|
+
({ taskId }) => `Each task can only be tunneled by one client. Remove the duplicate tunnel registration for "${taskId}" or split the task into separate definitions with distinct ids.`
|
|
1076
1163
|
).build();
|
|
1077
1164
|
var phantomTaskNotRoutedError = error("runner.errors.phantomTaskNotRouted").format(
|
|
1078
1165
|
({ taskId }) => `Phantom task "${taskId}" is not routed through any tunnel. Ensure a tunnel client selects this task id (or avoid calling the phantom task directly).`
|
|
1166
|
+
).remediation(
|
|
1167
|
+
({ taskId }) => `Configure a tunnel client resource to select "${taskId}" so it routes to a remote server. Phantom tasks cannot be executed locally \u2014 they only serve as local proxies for remote tasks.`
|
|
1079
1168
|
).build();
|
|
1080
1169
|
var taskNotRegisteredError = error("runner.errors.taskNotRegistered").format(
|
|
1081
1170
|
({ taskId }) => `Task "${taskId}" is not registered in the Store. This is an internal error\u2014ensure the task is registered before execution.`
|
|
1171
|
+
).remediation(
|
|
1172
|
+
({ taskId }) => `Register the task "${taskId}" in a parent resource via .register([yourTask]) before calling run(). If this error persists, it may indicate an internal framework bug.`
|
|
1082
1173
|
).build();
|
|
1083
1174
|
var builderIncompleteError = error("runner.errors.builderIncomplete").format(({ type, builderId, missingFields }) => {
|
|
1084
1175
|
const typeLabel = type === "hook" ? "Hook" : type === "task-middleware" ? "Task middleware" : "Resource middleware";
|
|
1085
1176
|
return `${typeLabel} "${builderId}" is incomplete. Missing required: ${missingFields.join(", ")}. Call ${missingFields.map((f) => `.${f}()`).join(" and ")} before .build().`;
|
|
1086
|
-
}).
|
|
1177
|
+
}).remediation(
|
|
1178
|
+
({ missingFields }) => `Add the missing builder steps: ${missingFields.map((f) => `.${f}()`).join(", ")} before calling .build().`
|
|
1179
|
+
).build();
|
|
1087
1180
|
function isCancellationError(err) {
|
|
1088
1181
|
return cancellationError.is(err);
|
|
1089
1182
|
}
|
|
@@ -1317,6 +1410,7 @@ function defineResource(constConfig) {
|
|
|
1317
1410
|
};
|
|
1318
1411
|
},
|
|
1319
1412
|
fork(newId, options) {
|
|
1413
|
+
const forkCallerFilePath = getCallerFile();
|
|
1320
1414
|
const forkedParts = resolveForkedRegisterAndDependencies({
|
|
1321
1415
|
register: constConfig.register,
|
|
1322
1416
|
dependencies: constConfig.dependencies,
|
|
@@ -1328,11 +1422,10 @@ function defineResource(constConfig) {
|
|
|
1328
1422
|
id: newId,
|
|
1329
1423
|
register: forkedParts.register,
|
|
1330
1424
|
dependencies: forkedParts.dependencies,
|
|
1331
|
-
[symbolFilePath]:
|
|
1425
|
+
[symbolFilePath]: forkCallerFilePath
|
|
1332
1426
|
});
|
|
1333
|
-
forked[
|
|
1334
|
-
fromId: id2
|
|
1335
|
-
forkedAtFilePath: getCallerFile()
|
|
1427
|
+
forked[symbolForkedFrom] = {
|
|
1428
|
+
fromId: id2
|
|
1336
1429
|
};
|
|
1337
1430
|
return forked;
|
|
1338
1431
|
}
|
|
@@ -1563,7 +1656,7 @@ __name(defineTag, "defineTag");
|
|
|
1563
1656
|
|
|
1564
1657
|
// src/globals/middleware/requireContext.middleware.ts
|
|
1565
1658
|
var requireContextTaskMiddleware = defineTaskMiddleware({
|
|
1566
|
-
id: "globals.middleware.requireContext",
|
|
1659
|
+
id: "globals.middleware.task.requireContext",
|
|
1567
1660
|
async run({ task: task2, next }, _deps, config) {
|
|
1568
1661
|
if (!config.context) {
|
|
1569
1662
|
throw new Error(
|
|
@@ -3207,7 +3300,7 @@ var cacheFactoryTask = defineTask({
|
|
|
3207
3300
|
});
|
|
3208
3301
|
var journalKeys = {
|
|
3209
3302
|
/** Whether the result was served from cache (true) or freshly computed (false) */
|
|
3210
|
-
hit: journal.createKey("globals.middleware.cache.hit")
|
|
3303
|
+
hit: journal.createKey("globals.middleware.task.cache.hit")
|
|
3211
3304
|
};
|
|
3212
3305
|
var cacheResource = defineResource({
|
|
3213
3306
|
id: "globals.resources.cache",
|
|
@@ -3237,7 +3330,7 @@ var cacheResource = defineResource({
|
|
|
3237
3330
|
});
|
|
3238
3331
|
var defaultKeyBuilder = /* @__PURE__ */ __name((taskId, input) => `${taskId}-${JSON.stringify(input)}`, "defaultKeyBuilder");
|
|
3239
3332
|
var cacheMiddleware = defineTaskMiddleware({
|
|
3240
|
-
id: "globals.middleware.cache",
|
|
3333
|
+
id: "globals.middleware.task.cache",
|
|
3241
3334
|
dependencies: { cache: cacheResource },
|
|
3242
3335
|
async run({ task: task2, next, journal: journal2 }, deps, config) {
|
|
3243
3336
|
const { cache } = deps;
|
|
@@ -3288,11 +3381,11 @@ var CircuitBreakerOpenError = class extends Error {
|
|
|
3288
3381
|
var journalKeys2 = {
|
|
3289
3382
|
/** Current state of the circuit breaker (CLOSED, OPEN, or HALF_OPEN) */
|
|
3290
3383
|
state: journal.createKey(
|
|
3291
|
-
"globals.middleware.circuitBreaker.state"
|
|
3384
|
+
"globals.middleware.task.circuitBreaker.state"
|
|
3292
3385
|
),
|
|
3293
3386
|
/** Current failure count */
|
|
3294
3387
|
failures: journal.createKey(
|
|
3295
|
-
"globals.middleware.circuitBreaker.failures"
|
|
3388
|
+
"globals.middleware.task.circuitBreaker.failures"
|
|
3296
3389
|
)
|
|
3297
3390
|
};
|
|
3298
3391
|
var circuitBreakerResource = defineResource({
|
|
@@ -3305,7 +3398,7 @@ var circuitBreakerResource = defineResource({
|
|
|
3305
3398
|
}, "init")
|
|
3306
3399
|
});
|
|
3307
3400
|
var circuitBreakerMiddleware = defineTaskMiddleware({
|
|
3308
|
-
id: "globals.middleware.circuitBreaker",
|
|
3401
|
+
id: "globals.middleware.task.circuitBreaker",
|
|
3309
3402
|
dependencies: { state: circuitBreakerResource },
|
|
3310
3403
|
async run({ task: task2, next, journal: journal2 }, { state }, config) {
|
|
3311
3404
|
const taskId = task2.definition.id;
|
|
@@ -3885,12 +3978,12 @@ var EventManager = class {
|
|
|
3885
3978
|
|
|
3886
3979
|
// src/models/Semaphore.ts
|
|
3887
3980
|
var SemaphoreEvents = {
|
|
3888
|
-
queued: defineEvent({ id: "semaphore.queued" }),
|
|
3889
|
-
acquired: defineEvent({ id: "semaphore.acquired" }),
|
|
3890
|
-
released: defineEvent({ id: "semaphore.released" }),
|
|
3891
|
-
timeout: defineEvent({ id: "semaphore.timeout" }),
|
|
3892
|
-
aborted: defineEvent({ id: "semaphore.aborted" }),
|
|
3893
|
-
disposed: defineEvent({ id: "semaphore.disposed" })
|
|
3981
|
+
queued: defineEvent({ id: "semaphore.events.queued" }),
|
|
3982
|
+
acquired: defineEvent({ id: "semaphore.events.acquired" }),
|
|
3983
|
+
released: defineEvent({ id: "semaphore.events.released" }),
|
|
3984
|
+
timeout: defineEvent({ id: "semaphore.events.timeout" }),
|
|
3985
|
+
aborted: defineEvent({ id: "semaphore.events.aborted" }),
|
|
3986
|
+
disposed: defineEvent({ id: "semaphore.events.disposed" })
|
|
3894
3987
|
};
|
|
3895
3988
|
var Semaphore = class {
|
|
3896
3989
|
constructor(maxPermits) {
|
|
@@ -4163,7 +4256,7 @@ var concurrencyResource = defineResource({
|
|
|
4163
4256
|
}), "init")
|
|
4164
4257
|
});
|
|
4165
4258
|
var concurrencyTaskMiddleware = defineTaskMiddleware({
|
|
4166
|
-
id: "globals.middleware.concurrency",
|
|
4259
|
+
id: "globals.middleware.task.concurrency",
|
|
4167
4260
|
dependencies: { state: concurrencyResource },
|
|
4168
4261
|
async run({ task: task2, next }, { state }, config) {
|
|
4169
4262
|
let semaphore = config.semaphore;
|
|
@@ -4242,14 +4335,16 @@ var RateLimitError = class extends Error {
|
|
|
4242
4335
|
var journalKeys3 = {
|
|
4243
4336
|
/** Number of remaining requests in the current window */
|
|
4244
4337
|
remaining: journal.createKey(
|
|
4245
|
-
"globals.middleware.rateLimit.remaining"
|
|
4338
|
+
"globals.middleware.task.rateLimit.remaining"
|
|
4246
4339
|
),
|
|
4247
4340
|
/** Timestamp when the current window resets */
|
|
4248
4341
|
resetTime: journal.createKey(
|
|
4249
|
-
"globals.middleware.rateLimit.resetTime"
|
|
4342
|
+
"globals.middleware.task.rateLimit.resetTime"
|
|
4250
4343
|
),
|
|
4251
4344
|
/** Maximum requests allowed per window */
|
|
4252
|
-
limit: journal.createKey(
|
|
4345
|
+
limit: journal.createKey(
|
|
4346
|
+
"globals.middleware.task.rateLimit.limit"
|
|
4347
|
+
)
|
|
4253
4348
|
};
|
|
4254
4349
|
var rateLimitResource = defineResource({
|
|
4255
4350
|
id: "globals.resources.rateLimit",
|
|
@@ -4261,7 +4356,7 @@ var rateLimitResource = defineResource({
|
|
|
4261
4356
|
}, "init")
|
|
4262
4357
|
});
|
|
4263
4358
|
var rateLimitTaskMiddleware = defineTaskMiddleware({
|
|
4264
|
-
id: "globals.middleware.rateLimit",
|
|
4359
|
+
id: "globals.middleware.task.rateLimit",
|
|
4265
4360
|
configSchema: rateLimitConfigSchema,
|
|
4266
4361
|
dependencies: { state: rateLimitResource },
|
|
4267
4362
|
async run({ task: task2, next, journal: journal2 }, { state }, config) {
|
|
@@ -4309,7 +4404,7 @@ var temporalResource = defineResource({
|
|
|
4309
4404
|
}, "init")
|
|
4310
4405
|
});
|
|
4311
4406
|
var debounceTaskMiddleware = defineTaskMiddleware({
|
|
4312
|
-
id: "globals.middleware.debounce",
|
|
4407
|
+
id: "globals.middleware.task.debounce",
|
|
4313
4408
|
dependencies: { state: temporalResource },
|
|
4314
4409
|
async run({ task: task2, next }, { state }, config) {
|
|
4315
4410
|
const { debounceStates } = state;
|
|
@@ -4346,7 +4441,7 @@ var debounceTaskMiddleware = defineTaskMiddleware({
|
|
|
4346
4441
|
}
|
|
4347
4442
|
});
|
|
4348
4443
|
var throttleTaskMiddleware = defineTaskMiddleware({
|
|
4349
|
-
id: "globals.middleware.throttle",
|
|
4444
|
+
id: "globals.middleware.task.throttle",
|
|
4350
4445
|
dependencies: { state: temporalResource },
|
|
4351
4446
|
async run({ task: task2, next }, { state }, config) {
|
|
4352
4447
|
const { throttleStates } = state;
|
|
@@ -4418,12 +4513,12 @@ var throttleTaskMiddleware = defineTaskMiddleware({
|
|
|
4418
4513
|
|
|
4419
4514
|
// src/models/Queue.ts
|
|
4420
4515
|
var QueueEvents = {
|
|
4421
|
-
enqueue: defineEvent({ id: "queue.enqueue" }),
|
|
4422
|
-
start: defineEvent({ id: "queue.start" }),
|
|
4423
|
-
finish: defineEvent({ id: "queue.finish" }),
|
|
4424
|
-
error: defineEvent({ id: "queue.error" }),
|
|
4425
|
-
cancel: defineEvent({ id: "queue.cancel" }),
|
|
4426
|
-
disposed: defineEvent({ id: "queue.disposed" })
|
|
4516
|
+
enqueue: defineEvent({ id: "queue.events.enqueue" }),
|
|
4517
|
+
start: defineEvent({ id: "queue.events.start" }),
|
|
4518
|
+
finish: defineEvent({ id: "queue.events.finish" }),
|
|
4519
|
+
error: defineEvent({ id: "queue.events.error" }),
|
|
4520
|
+
cancel: defineEvent({ id: "queue.events.cancel" }),
|
|
4521
|
+
disposed: defineEvent({ id: "queue.events.disposed" })
|
|
4427
4522
|
};
|
|
4428
4523
|
var Queue = class {
|
|
4429
4524
|
constructor() {
|
|
@@ -4582,6 +4677,7 @@ var TunnelError = class extends Error {
|
|
|
4582
4677
|
this.name = "TunnelError";
|
|
4583
4678
|
this.code = code;
|
|
4584
4679
|
this.details = details;
|
|
4680
|
+
this.httpCode = extras?.httpCode;
|
|
4585
4681
|
this.id = extras?.id;
|
|
4586
4682
|
this.data = extras?.data;
|
|
4587
4683
|
}
|
|
@@ -4596,6 +4692,7 @@ function toTunnelError(input, fallbackMessage) {
|
|
|
4596
4692
|
const pe = input;
|
|
4597
4693
|
const msg = pe.message || fallbackMessage || "Tunnel error";
|
|
4598
4694
|
return new TunnelError(pe.code, msg, pe.details, {
|
|
4695
|
+
httpCode: pe.httpCode,
|
|
4599
4696
|
id: pe.id,
|
|
4600
4697
|
data: pe.data
|
|
4601
4698
|
});
|
|
@@ -5243,13 +5340,15 @@ var retryResourceMiddleware = defineResourceMiddleware({
|
|
|
5243
5340
|
var journalKeys6 = {
|
|
5244
5341
|
/** Whether the fallback path was taken (true) or primary succeeded (false) */
|
|
5245
5342
|
active: journal.createKey(
|
|
5246
|
-
"globals.middleware.fallback.active"
|
|
5343
|
+
"globals.middleware.task.fallback.active"
|
|
5247
5344
|
),
|
|
5248
5345
|
/** The error that triggered the fallback (only set when active is true) */
|
|
5249
|
-
error: journal.createKey(
|
|
5346
|
+
error: journal.createKey(
|
|
5347
|
+
"globals.middleware.task.fallback.error"
|
|
5348
|
+
)
|
|
5250
5349
|
};
|
|
5251
5350
|
var fallbackTaskMiddleware = defineTaskMiddleware({
|
|
5252
|
-
id: "globals.middleware.fallback",
|
|
5351
|
+
id: "globals.middleware.task.fallback",
|
|
5253
5352
|
dependencies: {
|
|
5254
5353
|
taskRunner: globalResources.taskRunner
|
|
5255
5354
|
},
|
|
@@ -7929,21 +8028,11 @@ var Store = class {
|
|
|
7929
8028
|
storeGenericItem(item) {
|
|
7930
8029
|
return this.registry.storeGenericItem(item);
|
|
7931
8030
|
}
|
|
7932
|
-
/**
|
|
7933
|
-
* Returns all tasks with the given tag.
|
|
7934
|
-
* @param tag - The tag to filter by.
|
|
7935
|
-
* @returns The tasks with the given tag.
|
|
7936
|
-
*/
|
|
7937
8031
|
getTasksWithTag(tag2) {
|
|
7938
|
-
return this.registry.getTasksWithTag(tag2);
|
|
8032
|
+
return typeof tag2 === "string" ? this.registry.getTasksWithTag(tag2) : this.registry.getTasksWithTag(tag2);
|
|
7939
8033
|
}
|
|
7940
|
-
/**
|
|
7941
|
-
* Returns all resources with the given tag.
|
|
7942
|
-
* @param tag - The tag to filter by.
|
|
7943
|
-
* @returns The resources with the given tag.
|
|
7944
|
-
*/
|
|
7945
8034
|
getResourcesWithTag(tag2) {
|
|
7946
|
-
return this.registry.getResourcesWithTag(tag2);
|
|
8035
|
+
return typeof tag2 === "string" ? this.registry.getResourcesWithTag(tag2) : this.registry.getResourcesWithTag(tag2);
|
|
7947
8036
|
}
|
|
7948
8037
|
};
|
|
7949
8038
|
|
|
@@ -10067,6 +10156,7 @@ exports.PlatformAdapter = PlatformAdapter;
|
|
|
10067
10156
|
exports.Queue = Queue;
|
|
10068
10157
|
exports.ResourceInitializer = ResourceInitializer;
|
|
10069
10158
|
exports.RunResult = RunResult;
|
|
10159
|
+
exports.RunnerError = RunnerError;
|
|
10070
10160
|
exports.Semaphore = Semaphore;
|
|
10071
10161
|
exports.Serializer = Serializer;
|
|
10072
10162
|
exports.Store = Store;
|