@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.
Files changed (44) hide show
  1. package/README.md +73 -10
  2. package/dist/browser/index.cjs +149 -59
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/index.mjs +149 -60
  5. package/dist/browser/index.mjs.map +1 -1
  6. package/dist/edge/index.cjs +149 -59
  7. package/dist/edge/index.cjs.map +1 -1
  8. package/dist/edge/index.mjs +149 -60
  9. package/dist/edge/index.mjs.map +1 -1
  10. package/dist/node/node.cjs +384 -201
  11. package/dist/node/node.cjs.map +1 -1
  12. package/dist/node/node.mjs +382 -202
  13. package/dist/node/node.mjs.map +1 -1
  14. package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +6 -0
  15. package/dist/types/definers/builders/error/index.d.ts +10 -1
  16. package/dist/types/definers/builders/error/types.d.ts +2 -0
  17. package/dist/types/definers/defineError.d.ts +5 -3
  18. package/dist/types/defs.d.ts +2 -0
  19. package/dist/types/globals/resources/tunnel/protocol.d.ts +3 -0
  20. package/dist/types/models/Store.d.ts +5 -3
  21. package/dist/types/models/StoreRegistry.d.ts +5 -3
  22. package/dist/types/node/durable/core/DurableResource.d.ts +23 -9
  23. package/dist/types/node/durable/core/DurableService.d.ts +15 -9
  24. package/dist/types/node/durable/core/interfaces/service.d.ts +27 -19
  25. package/dist/types/node/durable/core/interfaces/store.d.ts +1 -1
  26. package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +34 -4
  27. package/dist/types/node/durable/core/managers/ScheduleManager.d.ts +5 -3
  28. package/dist/types/node/durable/core/managers/TaskRegistry.d.ts +5 -5
  29. package/dist/types/node/durable/core/managers/WaitManager.d.ts +1 -1
  30. package/dist/types/node/durable/index.d.ts +1 -0
  31. package/dist/types/node/durable/tags/durableWorkflow.tag.d.ts +14 -0
  32. package/dist/types/node/node.d.ts +2 -1
  33. package/dist/types/public.d.ts +4 -1
  34. package/dist/types/testing.d.ts +0 -1
  35. package/dist/types/types/error.d.ts +22 -1
  36. package/dist/types/types/resource.d.ts +2 -4
  37. package/dist/types/types/symbols.d.ts +2 -2
  38. package/dist/types/types/tagged.d.ts +18 -0
  39. package/dist/universal/index.cjs +149 -59
  40. package/dist/universal/index.cjs.map +1 -1
  41. package/dist/universal/index.mjs +149 -60
  42. package/dist/universal/index.mjs.map +1 -1
  43. package/package.json +2 -2
  44. package/readmes/AI.md +25 -9
@@ -164,9 +164,7 @@ var symbolPhantomTask = Symbol.for(
164
164
  "runner.task.phantom"
165
165
  );
166
166
  var symbolResource = Symbol.for("runner.resource");
167
- var symbolResourceForkedFrom = Symbol.for(
168
- "runner.resourceForkedFrom"
169
- );
167
+ var symbolForkedFrom = Symbol.for("runner.forkedFrom");
170
168
  var symbolResourceWithConfig = Symbol.for(
171
169
  "runner.resourceWithConfig"
172
170
  );
@@ -233,13 +231,13 @@ __export(defs_exports, {
233
231
  symbolError: () => symbolError,
234
232
  symbolEvent: () => symbolEvent,
235
233
  symbolFilePath: () => symbolFilePath,
234
+ symbolForkedFrom: () => symbolForkedFrom,
236
235
  symbolHook: () => symbolHook,
237
236
  symbolMiddleware: () => symbolMiddleware,
238
237
  symbolMiddlewareConfigured: () => symbolMiddlewareConfigured,
239
238
  symbolOptionalDependency: () => symbolOptionalDependency,
240
239
  symbolPhantomTask: () => symbolPhantomTask,
241
240
  symbolResource: () => symbolResource,
242
- symbolResourceForkedFrom: () => symbolResourceForkedFrom,
243
241
  symbolResourceMiddleware: () => symbolResourceMiddleware,
244
242
  symbolResourceWithConfig: () => symbolResourceWithConfig,
245
243
  symbolTag: () => symbolTag,
@@ -444,12 +442,26 @@ __export(errors_exports, {
444
442
  });
445
443
 
446
444
  // src/definers/defineError.ts
445
+ var isValidHttpCode = /* @__PURE__ */ __name((value) => Number.isInteger(value) && value >= 100 && value <= 599, "isValidHttpCode");
446
+ var assertHttpCode = /* @__PURE__ */ __name((value) => {
447
+ if (!isValidHttpCode(value)) {
448
+ throw new Error(
449
+ `Error httpCode must be an integer between 100 and 599. Received: ${value}`
450
+ );
451
+ }
452
+ }, "assertHttpCode");
447
453
  var RunnerError = class extends Error {
448
- constructor(id2, message, data) {
449
- super(message);
454
+ constructor(id2, message, data, httpCode, remediation) {
455
+ super(
456
+ remediation !== void 0 ? `${message}
457
+
458
+ Remediation: ${remediation}` : message
459
+ );
450
460
  this.id = id2;
451
461
  this.data = data;
452
462
  this.name = id2;
463
+ this.httpCode = httpCode;
464
+ this.remediation = remediation;
453
465
  }
454
466
  static {
455
467
  __name(this, "RunnerError");
@@ -469,10 +481,20 @@ var ErrorHelper = class {
469
481
  get id() {
470
482
  return this.definition.id;
471
483
  }
484
+ get httpCode() {
485
+ return this.definition.httpCode;
486
+ }
472
487
  throw(data) {
473
488
  const parsed = this.definition.dataSchema ? this.definition.dataSchema.parse(data) : data;
474
489
  const message = this.definition.format(parsed);
475
- throw new RunnerError(this.definition.id, message, parsed);
490
+ const remediation = typeof this.definition.remediation === "function" ? this.definition.remediation(parsed) : this.definition.remediation;
491
+ throw new RunnerError(
492
+ this.definition.id,
493
+ message,
494
+ parsed,
495
+ this.definition.httpCode,
496
+ remediation
497
+ );
476
498
  }
477
499
  is(error2) {
478
500
  return error2 instanceof RunnerError && error2.name === this.definition.id;
@@ -485,6 +507,9 @@ var ErrorHelper = class {
485
507
  }
486
508
  };
487
509
  function defineError(definition, filePath) {
510
+ if (definition.httpCode !== void 0) {
511
+ assertHttpCode(definition.httpCode);
512
+ }
488
513
  if (!definition.format) {
489
514
  definition.format = (data) => `${JSON.stringify(data)}`;
490
515
  }
@@ -506,9 +531,22 @@ function clone(s, patch) {
506
531
  __name(clone, "clone");
507
532
 
508
533
  // src/definers/builders/error/fluent-builder.ts
534
+ var isValidHttpCode2 = /* @__PURE__ */ __name((value) => Number.isInteger(value) && value >= 100 && value <= 599, "isValidHttpCode");
535
+ var assertHttpCode2 = /* @__PURE__ */ __name((value) => {
536
+ if (!isValidHttpCode2(value)) {
537
+ throw new Error(
538
+ `Error httpCode must be an integer between 100 and 599. Received: ${value}`
539
+ );
540
+ }
541
+ }, "assertHttpCode");
509
542
  function makeErrorBuilder(state) {
510
543
  const builder = {
511
544
  id: state.id,
545
+ httpCode(code) {
546
+ assertHttpCode2(code);
547
+ const next = clone(state, { httpCode: code });
548
+ return makeErrorBuilder(next);
549
+ },
512
550
  serialize(fn) {
513
551
  const next = clone(state, { serialize: fn });
514
552
  return makeErrorBuilder(next);
@@ -525,6 +563,10 @@ function makeErrorBuilder(state) {
525
563
  const next = clone(state, { format: fn });
526
564
  return makeErrorBuilder(next);
527
565
  },
566
+ remediation(advice) {
567
+ const next = clone(state, { remediation: advice });
568
+ return makeErrorBuilder(next);
569
+ },
528
570
  meta(m) {
529
571
  const next = clone(state, { meta: m });
530
572
  return makeErrorBuilder(next);
@@ -533,10 +575,12 @@ function makeErrorBuilder(state) {
533
575
  return defineError(
534
576
  {
535
577
  id: state.id,
578
+ httpCode: state.httpCode,
536
579
  serialize: state.serialize,
537
580
  parse: state.parse,
538
581
  dataSchema: state.dataSchema,
539
582
  format: state.format,
583
+ remediation: state.remediation,
540
584
  meta: state.meta
541
585
  },
542
586
  state.filePath
@@ -553,6 +597,7 @@ function errorBuilder(id2) {
553
597
  const initial = Object.freeze({
554
598
  id: id2,
555
599
  filePath,
600
+ httpCode: void 0,
556
601
  serialize: void 0,
557
602
  parse: void 0,
558
603
  dataSchema: void 0,
@@ -561,7 +606,13 @@ function errorBuilder(id2) {
561
606
  return makeErrorBuilder(initial);
562
607
  }
563
608
  __name(errorBuilder, "errorBuilder");
564
- var error = errorBuilder;
609
+ function isRunnerError(error2) {
610
+ return error2 instanceof RunnerError;
611
+ }
612
+ __name(isRunnerError, "isRunnerError");
613
+ var error = Object.assign(errorBuilder, {
614
+ is: isRunnerError
615
+ });
565
616
 
566
617
  // src/platform/adapters/node-als.ts
567
618
  async function loadAsyncLocalStorageClass() {
@@ -992,9 +1043,13 @@ var PlatformAdapter = class {
992
1043
  // src/errors.ts
993
1044
  var duplicateRegistrationError = error("runner.errors.duplicateRegistration").format(
994
1045
  ({ 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.`
1046
+ ).remediation(
1047
+ ({ 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.`
995
1048
  ).build();
996
1049
  var dependencyNotFoundError = error("runner.errors.dependencyNotFound").format(
997
1050
  ({ key }) => `Dependency ${key.toString()} not found. Did you forget to register it through a resource?`
1051
+ ).remediation(
1052
+ ({ key }) => `Register the dependency "${key.toString()}" in a parent resource using .register([${key.toString()}]). If the dependency is optional, use .optional() when declaring it.`
998
1053
  ).build();
999
1054
  var unknownItemTypeError = error(
1000
1055
  "runner.errors.unknownItemType"
@@ -1002,10 +1057,14 @@ var unknownItemTypeError = error(
1002
1057
  ({ item }) => `Unknown item type: ${String(
1003
1058
  item
1004
1059
  )}. Please ensure you are not using different versions of '@bluelibs/runner'`
1060
+ ).remediation(
1061
+ "Check that all packages depend on the same version of '@bluelibs/runner'. Run 'npm ls @bluelibs/runner' to detect duplicates."
1005
1062
  ).build();
1006
1063
  var contextError = error(
1007
1064
  "runner.errors.context"
1008
- ).format(({ details }) => details ?? "Context error").build();
1065
+ ).format(({ details }) => details ?? "Context error").remediation(
1066
+ "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."
1067
+ ).build();
1009
1068
  var circularDependenciesError = error("runner.errors.circularDependencies").format(({ cycles }) => {
1010
1069
  const cycleDetails = cycles.map((cycle) => ` \u2022 ${cycle}`).join("\n");
1011
1070
  const hasMiddleware = cycles.some((cycle) => cycle.includes("middleware"));
@@ -1018,36 +1077,54 @@ var circularDependenciesError = error("runner.errors.circularDependencies").form
1018
1077
  }
1019
1078
  return `Circular dependencies detected:
1020
1079
  ${cycleDetails}${guidance}`;
1021
- }).build();
1080
+ }).remediation(
1081
+ "Break the cycle by extracting shared state into a new resource that both sides depend on, or use events for indirect communication."
1082
+ ).build();
1022
1083
  var eventNotFoundError = error(
1023
1084
  "runner.errors.eventNotFound"
1024
1085
  ).format(
1025
1086
  ({ id: id2 }) => `Event "${id2.toString()}" not found. Did you forget to register it?`
1087
+ ).remediation(
1088
+ ({ 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().`
1026
1089
  ).build();
1027
1090
  var resourceNotFoundError = error(
1028
1091
  "runner.errors.resourceNotFound"
1029
1092
  ).format(
1030
1093
  ({ id: id2 }) => `Resource "${id2.toString()}" not found. Did you forget to register it or are you using the correct id?`
1094
+ ).remediation(
1095
+ ({ id: id2 }) => `Register the resource "${id2.toString()}" in a parent resource via .register([yourResource]). Verify the id string matches exactly (ids are case-sensitive).`
1031
1096
  ).build();
1032
1097
  var middlewareNotRegisteredError = error("runner.errors.middlewareNotRegistered").format(
1033
1098
  ({ type, source, middlewareId }) => `Middleware inside ${type} "${source}" depends on "${middlewareId}" but it's not registered. Did you forget to register it?`
1099
+ ).remediation(
1100
+ ({ middlewareId }) => `Register the middleware "${middlewareId}" alongside its consumer in a parent resource via .register([yourMiddleware]).`
1034
1101
  ).build();
1035
1102
  var tagNotFoundError = error(
1036
1103
  "runner.errors.tagNotFound"
1037
1104
  ).format(
1038
1105
  ({ id: id2 }) => `Tag "${id2}" not registered. Did you forget to register it inside a resource?`
1106
+ ).remediation(
1107
+ ({ id: id2 }) => `Register the tag "${id2}" in a parent resource via .register([yourTag]). Tags must be registered before they can be queried.`
1039
1108
  ).build();
1040
1109
  var lockedError = error(
1041
1110
  "runner.errors.locked"
1042
1111
  ).format(
1043
1112
  ({ what }) => `Cannot modify the ${what.toString()} when it is locked.`
1113
+ ).remediation(
1114
+ ({ what }) => `The ${what.toString()} is locked after initialization. Perform all modifications before calling run().`
1044
1115
  ).build();
1045
1116
  var storeAlreadyInitializedError = error(
1046
1117
  "runner.errors.storeAlreadyInitialized"
1047
- ).format(() => "Store already initialized. Cannot reinitialize.").build();
1118
+ ).format(() => "Store already initialized. Cannot reinitialize.").remediation(
1119
+ "Do not call run() more than once on the same resource tree. Create a fresh resource if you need a separate runtime."
1120
+ ).build();
1048
1121
  var validationError = error("runner.errors.validation").format(({ subject, id: id2, originalError }) => {
1049
1122
  const errorMessage = originalError instanceof Error ? originalError.message : String(originalError);
1050
1123
  return `${subject} validation failed for ${id2.toString()}: ${errorMessage}`;
1124
+ }).remediation(({ subject, id: id2 }) => {
1125
+ const lower = subject.toLowerCase();
1126
+ const schemaHint = lower.includes("input") ? "inputSchema" : lower.includes("config") ? "configSchema" : lower.includes("result") ? "resultSchema" : "schema";
1127
+ return `Check the ${subject} passed to "${id2.toString()}". Ensure it matches the schema defined via .${schemaHint}().`;
1051
1128
  }).build();
1052
1129
  var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
1053
1130
  const chain = path.map((p) => `${p.id}\u2190${p.source}`).join(" -> ");
@@ -1055,33 +1132,49 @@ var eventCycleError = error("runner.errors.eventCycle").format(({ path }) => {
1055
1132
  ${chain}
1056
1133
 
1057
1134
  Break the cycle by changing hook logic (avoid mutual emits) or gate with conditions/tags.`;
1058
- }).build();
1135
+ }).remediation(
1136
+ "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."
1137
+ ).build();
1059
1138
  var eventEmissionCycleError = error("runner.errors.eventEmissionCycle").format(({ cycles }) => {
1060
1139
  const list = cycles.map((c) => ` \u2022 ${c}`).join("\n");
1061
1140
  return `Event emission cycles detected between hooks and events:
1062
1141
  ${list}
1063
1142
 
1064
1143
  This was detected at compile time (dry-run). Break the cycle by avoiding mutual emits between hooks or scoping hooks using tags.`;
1065
- }).build();
1144
+ }).remediation(
1145
+ "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."
1146
+ ).build();
1066
1147
  var platformUnsupportedFunctionError = error("runner.errors.platformUnsupportedFunction").format(
1067
1148
  ({ functionName }) => `Platform function not supported in this environment: ${functionName}. Detected platform: ${detectEnvironment()}.`
1149
+ ).remediation(
1150
+ ({ 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.`
1068
1151
  ).build();
1069
1152
  var cancellationError = error(
1070
1153
  "runner.errors.cancellation"
1071
- ).format(({ reason }) => reason || "Operation cancelled").build();
1154
+ ).format(({ reason }) => reason || "Operation cancelled").remediation(
1155
+ "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."
1156
+ ).build();
1072
1157
  var tunnelOwnershipConflictError = error("runner.errors.tunnelOwnershipConflict").format(
1073
1158
  ({ 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.`
1159
+ ).remediation(
1160
+ ({ 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.`
1074
1161
  ).build();
1075
1162
  var phantomTaskNotRoutedError = error("runner.errors.phantomTaskNotRouted").format(
1076
1163
  ({ 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).`
1164
+ ).remediation(
1165
+ ({ 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.`
1077
1166
  ).build();
1078
1167
  var taskNotRegisteredError = error("runner.errors.taskNotRegistered").format(
1079
1168
  ({ taskId }) => `Task "${taskId}" is not registered in the Store. This is an internal error\u2014ensure the task is registered before execution.`
1169
+ ).remediation(
1170
+ ({ 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.`
1080
1171
  ).build();
1081
1172
  var builderIncompleteError = error("runner.errors.builderIncomplete").format(({ type, builderId, missingFields }) => {
1082
1173
  const typeLabel = type === "hook" ? "Hook" : type === "task-middleware" ? "Task middleware" : "Resource middleware";
1083
1174
  return `${typeLabel} "${builderId}" is incomplete. Missing required: ${missingFields.join(", ")}. Call ${missingFields.map((f) => `.${f}()`).join(" and ")} before .build().`;
1084
- }).build();
1175
+ }).remediation(
1176
+ ({ missingFields }) => `Add the missing builder steps: ${missingFields.map((f) => `.${f}()`).join(", ")} before calling .build().`
1177
+ ).build();
1085
1178
  function isCancellationError(err) {
1086
1179
  return cancellationError.is(err);
1087
1180
  }
@@ -1315,6 +1408,7 @@ function defineResource(constConfig) {
1315
1408
  };
1316
1409
  },
1317
1410
  fork(newId, options) {
1411
+ const forkCallerFilePath = getCallerFile();
1318
1412
  const forkedParts = resolveForkedRegisterAndDependencies({
1319
1413
  register: constConfig.register,
1320
1414
  dependencies: constConfig.dependencies,
@@ -1326,11 +1420,10 @@ function defineResource(constConfig) {
1326
1420
  id: newId,
1327
1421
  register: forkedParts.register,
1328
1422
  dependencies: forkedParts.dependencies,
1329
- [symbolFilePath]: filePath
1423
+ [symbolFilePath]: forkCallerFilePath
1330
1424
  });
1331
- forked[symbolResourceForkedFrom] = {
1332
- fromId: id2,
1333
- forkedAtFilePath: getCallerFile()
1425
+ forked[symbolForkedFrom] = {
1426
+ fromId: id2
1334
1427
  };
1335
1428
  return forked;
1336
1429
  }
@@ -1561,7 +1654,7 @@ __name(defineTag, "defineTag");
1561
1654
 
1562
1655
  // src/globals/middleware/requireContext.middleware.ts
1563
1656
  var requireContextTaskMiddleware = defineTaskMiddleware({
1564
- id: "globals.middleware.requireContext",
1657
+ id: "globals.middleware.task.requireContext",
1565
1658
  async run({ task: task2, next }, _deps, config) {
1566
1659
  if (!config.context) {
1567
1660
  throw new Error(
@@ -3205,7 +3298,7 @@ var cacheFactoryTask = defineTask({
3205
3298
  });
3206
3299
  var journalKeys = {
3207
3300
  /** Whether the result was served from cache (true) or freshly computed (false) */
3208
- hit: journal.createKey("globals.middleware.cache.hit")
3301
+ hit: journal.createKey("globals.middleware.task.cache.hit")
3209
3302
  };
3210
3303
  var cacheResource = defineResource({
3211
3304
  id: "globals.resources.cache",
@@ -3235,7 +3328,7 @@ var cacheResource = defineResource({
3235
3328
  });
3236
3329
  var defaultKeyBuilder = /* @__PURE__ */ __name((taskId, input) => `${taskId}-${JSON.stringify(input)}`, "defaultKeyBuilder");
3237
3330
  var cacheMiddleware = defineTaskMiddleware({
3238
- id: "globals.middleware.cache",
3331
+ id: "globals.middleware.task.cache",
3239
3332
  dependencies: { cache: cacheResource },
3240
3333
  async run({ task: task2, next, journal: journal2 }, deps, config) {
3241
3334
  const { cache } = deps;
@@ -3286,11 +3379,11 @@ var CircuitBreakerOpenError = class extends Error {
3286
3379
  var journalKeys2 = {
3287
3380
  /** Current state of the circuit breaker (CLOSED, OPEN, or HALF_OPEN) */
3288
3381
  state: journal.createKey(
3289
- "globals.middleware.circuitBreaker.state"
3382
+ "globals.middleware.task.circuitBreaker.state"
3290
3383
  ),
3291
3384
  /** Current failure count */
3292
3385
  failures: journal.createKey(
3293
- "globals.middleware.circuitBreaker.failures"
3386
+ "globals.middleware.task.circuitBreaker.failures"
3294
3387
  )
3295
3388
  };
3296
3389
  var circuitBreakerResource = defineResource({
@@ -3303,7 +3396,7 @@ var circuitBreakerResource = defineResource({
3303
3396
  }, "init")
3304
3397
  });
3305
3398
  var circuitBreakerMiddleware = defineTaskMiddleware({
3306
- id: "globals.middleware.circuitBreaker",
3399
+ id: "globals.middleware.task.circuitBreaker",
3307
3400
  dependencies: { state: circuitBreakerResource },
3308
3401
  async run({ task: task2, next, journal: journal2 }, { state }, config) {
3309
3402
  const taskId = task2.definition.id;
@@ -3883,12 +3976,12 @@ var EventManager = class {
3883
3976
 
3884
3977
  // src/models/Semaphore.ts
3885
3978
  var SemaphoreEvents = {
3886
- queued: defineEvent({ id: "semaphore.queued" }),
3887
- acquired: defineEvent({ id: "semaphore.acquired" }),
3888
- released: defineEvent({ id: "semaphore.released" }),
3889
- timeout: defineEvent({ id: "semaphore.timeout" }),
3890
- aborted: defineEvent({ id: "semaphore.aborted" }),
3891
- disposed: defineEvent({ id: "semaphore.disposed" })
3979
+ queued: defineEvent({ id: "semaphore.events.queued" }),
3980
+ acquired: defineEvent({ id: "semaphore.events.acquired" }),
3981
+ released: defineEvent({ id: "semaphore.events.released" }),
3982
+ timeout: defineEvent({ id: "semaphore.events.timeout" }),
3983
+ aborted: defineEvent({ id: "semaphore.events.aborted" }),
3984
+ disposed: defineEvent({ id: "semaphore.events.disposed" })
3892
3985
  };
3893
3986
  var Semaphore = class {
3894
3987
  constructor(maxPermits) {
@@ -4161,7 +4254,7 @@ var concurrencyResource = defineResource({
4161
4254
  }), "init")
4162
4255
  });
4163
4256
  var concurrencyTaskMiddleware = defineTaskMiddleware({
4164
- id: "globals.middleware.concurrency",
4257
+ id: "globals.middleware.task.concurrency",
4165
4258
  dependencies: { state: concurrencyResource },
4166
4259
  async run({ task: task2, next }, { state }, config) {
4167
4260
  let semaphore = config.semaphore;
@@ -4240,14 +4333,16 @@ var RateLimitError = class extends Error {
4240
4333
  var journalKeys3 = {
4241
4334
  /** Number of remaining requests in the current window */
4242
4335
  remaining: journal.createKey(
4243
- "globals.middleware.rateLimit.remaining"
4336
+ "globals.middleware.task.rateLimit.remaining"
4244
4337
  ),
4245
4338
  /** Timestamp when the current window resets */
4246
4339
  resetTime: journal.createKey(
4247
- "globals.middleware.rateLimit.resetTime"
4340
+ "globals.middleware.task.rateLimit.resetTime"
4248
4341
  ),
4249
4342
  /** Maximum requests allowed per window */
4250
- limit: journal.createKey("globals.middleware.rateLimit.limit")
4343
+ limit: journal.createKey(
4344
+ "globals.middleware.task.rateLimit.limit"
4345
+ )
4251
4346
  };
4252
4347
  var rateLimitResource = defineResource({
4253
4348
  id: "globals.resources.rateLimit",
@@ -4259,7 +4354,7 @@ var rateLimitResource = defineResource({
4259
4354
  }, "init")
4260
4355
  });
4261
4356
  var rateLimitTaskMiddleware = defineTaskMiddleware({
4262
- id: "globals.middleware.rateLimit",
4357
+ id: "globals.middleware.task.rateLimit",
4263
4358
  configSchema: rateLimitConfigSchema,
4264
4359
  dependencies: { state: rateLimitResource },
4265
4360
  async run({ task: task2, next, journal: journal2 }, { state }, config) {
@@ -4307,7 +4402,7 @@ var temporalResource = defineResource({
4307
4402
  }, "init")
4308
4403
  });
4309
4404
  var debounceTaskMiddleware = defineTaskMiddleware({
4310
- id: "globals.middleware.debounce",
4405
+ id: "globals.middleware.task.debounce",
4311
4406
  dependencies: { state: temporalResource },
4312
4407
  async run({ task: task2, next }, { state }, config) {
4313
4408
  const { debounceStates } = state;
@@ -4344,7 +4439,7 @@ var debounceTaskMiddleware = defineTaskMiddleware({
4344
4439
  }
4345
4440
  });
4346
4441
  var throttleTaskMiddleware = defineTaskMiddleware({
4347
- id: "globals.middleware.throttle",
4442
+ id: "globals.middleware.task.throttle",
4348
4443
  dependencies: { state: temporalResource },
4349
4444
  async run({ task: task2, next }, { state }, config) {
4350
4445
  const { throttleStates } = state;
@@ -4416,12 +4511,12 @@ var throttleTaskMiddleware = defineTaskMiddleware({
4416
4511
 
4417
4512
  // src/models/Queue.ts
4418
4513
  var QueueEvents = {
4419
- enqueue: defineEvent({ id: "queue.enqueue" }),
4420
- start: defineEvent({ id: "queue.start" }),
4421
- finish: defineEvent({ id: "queue.finish" }),
4422
- error: defineEvent({ id: "queue.error" }),
4423
- cancel: defineEvent({ id: "queue.cancel" }),
4424
- disposed: defineEvent({ id: "queue.disposed" })
4514
+ enqueue: defineEvent({ id: "queue.events.enqueue" }),
4515
+ start: defineEvent({ id: "queue.events.start" }),
4516
+ finish: defineEvent({ id: "queue.events.finish" }),
4517
+ error: defineEvent({ id: "queue.events.error" }),
4518
+ cancel: defineEvent({ id: "queue.events.cancel" }),
4519
+ disposed: defineEvent({ id: "queue.events.disposed" })
4425
4520
  };
4426
4521
  var Queue = class {
4427
4522
  constructor() {
@@ -4580,6 +4675,7 @@ var TunnelError = class extends Error {
4580
4675
  this.name = "TunnelError";
4581
4676
  this.code = code;
4582
4677
  this.details = details;
4678
+ this.httpCode = extras?.httpCode;
4583
4679
  this.id = extras?.id;
4584
4680
  this.data = extras?.data;
4585
4681
  }
@@ -4594,6 +4690,7 @@ function toTunnelError(input, fallbackMessage) {
4594
4690
  const pe = input;
4595
4691
  const msg = pe.message || fallbackMessage || "Tunnel error";
4596
4692
  return new TunnelError(pe.code, msg, pe.details, {
4693
+ httpCode: pe.httpCode,
4597
4694
  id: pe.id,
4598
4695
  data: pe.data
4599
4696
  });
@@ -5241,13 +5338,15 @@ var retryResourceMiddleware = defineResourceMiddleware({
5241
5338
  var journalKeys6 = {
5242
5339
  /** Whether the fallback path was taken (true) or primary succeeded (false) */
5243
5340
  active: journal.createKey(
5244
- "globals.middleware.fallback.active"
5341
+ "globals.middleware.task.fallback.active"
5245
5342
  ),
5246
5343
  /** The error that triggered the fallback (only set when active is true) */
5247
- error: journal.createKey("globals.middleware.fallback.error")
5344
+ error: journal.createKey(
5345
+ "globals.middleware.task.fallback.error"
5346
+ )
5248
5347
  };
5249
5348
  var fallbackTaskMiddleware = defineTaskMiddleware({
5250
- id: "globals.middleware.fallback",
5349
+ id: "globals.middleware.task.fallback",
5251
5350
  dependencies: {
5252
5351
  taskRunner: globalResources.taskRunner
5253
5352
  },
@@ -7927,21 +8026,11 @@ var Store = class {
7927
8026
  storeGenericItem(item) {
7928
8027
  return this.registry.storeGenericItem(item);
7929
8028
  }
7930
- /**
7931
- * Returns all tasks with the given tag.
7932
- * @param tag - The tag to filter by.
7933
- * @returns The tasks with the given tag.
7934
- */
7935
8029
  getTasksWithTag(tag2) {
7936
- return this.registry.getTasksWithTag(tag2);
8030
+ return typeof tag2 === "string" ? this.registry.getTasksWithTag(tag2) : this.registry.getTasksWithTag(tag2);
7937
8031
  }
7938
- /**
7939
- * Returns all resources with the given tag.
7940
- * @param tag - The tag to filter by.
7941
- * @returns The resources with the given tag.
7942
- */
7943
8032
  getResourcesWithTag(tag2) {
7944
- return this.registry.getResourcesWithTag(tag2);
8033
+ return typeof tag2 === "string" ? this.registry.getResourcesWithTag(tag2) : this.registry.getResourcesWithTag(tag2);
7945
8034
  }
7946
8035
  };
7947
8036
 
@@ -10055,6 +10144,6 @@ var r = Object.freeze({
10055
10144
  })
10056
10145
  });
10057
10146
 
10058
- export { DependencyProcessor, errors_exports as Errors, EventManager, LogPrinter, Logger, MiddlewareManager, PlatformAdapter, Queue, ResourceInitializer, RunResult, Semaphore, Serializer, Store, SymbolPolicy, SymbolPolicyErrorMessage, TaskRunner, allFalse, defineAsyncContext as asyncContext, bindProcessErrorHandler, createContext2 as createContext, createDefaultUnhandledError, createExposureFetch, createHttpClient, createTestResource, debug, debugLevels, defs_exports as definitions, defineEvent as event, getConfig, globals, defineHook as hook, journal, levelNormal, levelVerbose, normalizeError, defineOverride as override, r, defineResource as resource, defineResourceMiddleware as resourceMiddleware, run, safeReportUnhandledError, setPlatform, defineTag as tag, defineTask as task, defineTaskMiddleware as taskMiddleware };
10147
+ export { DependencyProcessor, errors_exports as Errors, EventManager, LogPrinter, Logger, MiddlewareManager, PlatformAdapter, Queue, ResourceInitializer, RunResult, RunnerError, Semaphore, Serializer, Store, SymbolPolicy, SymbolPolicyErrorMessage, TaskRunner, allFalse, defineAsyncContext as asyncContext, bindProcessErrorHandler, createContext2 as createContext, createDefaultUnhandledError, createExposureFetch, createHttpClient, createTestResource, debug, debugLevels, defs_exports as definitions, defineEvent as event, getConfig, globals, defineHook as hook, journal, levelNormal, levelVerbose, normalizeError, defineOverride as override, r, defineResource as resource, defineResourceMiddleware as resourceMiddleware, run, safeReportUnhandledError, setPlatform, defineTag as tag, defineTask as task, defineTaskMiddleware as taskMiddleware };
10059
10148
  //# sourceMappingURL=index.mjs.map
10060
10149
  //# sourceMappingURL=index.mjs.map