@bluelibs/runner 5.3.0 → 5.5.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 (189) hide show
  1. package/README.md +23 -22
  2. package/dist/browser/index.cjs +6159 -3049
  3. package/dist/browser/index.cjs.map +1 -1
  4. package/dist/browser/index.mjs +6157 -3046
  5. package/dist/browser/index.mjs.map +1 -1
  6. package/dist/edge/index.cjs +6159 -3049
  7. package/dist/edge/index.cjs.map +1 -1
  8. package/dist/edge/index.mjs +6157 -3046
  9. package/dist/edge/index.mjs.map +1 -1
  10. package/dist/node/node.cjs +10843 -10814
  11. package/dist/node/node.cjs.map +1 -1
  12. package/dist/node/node.mjs +10801 -10770
  13. package/dist/node/node.mjs.map +1 -1
  14. package/dist/types/definers/builders/asyncContext/fluent-builder.interface.d.ts +4 -0
  15. package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +8 -1
  16. package/dist/types/definers/builders/error/index.d.ts +1 -0
  17. package/dist/types/definers/builders/error/types.d.ts +2 -1
  18. package/dist/types/definers/builders/error/utils.d.ts +1 -0
  19. package/dist/types/definers/builders/event/fluent-builder.interface.d.ts +10 -0
  20. package/dist/types/definers/builders/event/utils.d.ts +1 -4
  21. package/dist/types/definers/builders/hook/fluent-builder.interface.d.ts +3 -0
  22. package/dist/types/definers/builders/hook/types.d.ts +3 -0
  23. package/dist/types/definers/builders/hook/utils.d.ts +1 -4
  24. package/dist/types/definers/builders/middleware/index.d.ts +4 -2
  25. package/dist/types/definers/builders/middleware/resource.interface.d.ts +7 -0
  26. package/dist/types/definers/builders/middleware/task.interface.d.ts +7 -0
  27. package/dist/types/definers/builders/middleware/types.d.ts +22 -3
  28. package/dist/types/definers/builders/middleware/utils.d.ts +3 -4
  29. package/dist/types/definers/builders/override/hook.d.ts +3 -0
  30. package/dist/types/definers/builders/override/index.d.ts +5 -0
  31. package/dist/types/definers/builders/resource/fluent-builder.interface.d.ts +15 -0
  32. package/dist/types/definers/builders/resource/index.d.ts +0 -1
  33. package/dist/types/definers/builders/resource/types.d.ts +1 -0
  34. package/dist/types/definers/builders/resource/utils.d.ts +1 -4
  35. package/dist/types/definers/builders/shared/mergeUtils.d.ts +5 -0
  36. package/dist/types/definers/builders/tag/fluent-builder.interface.d.ts +4 -0
  37. package/dist/types/definers/builders/tag/utils.d.ts +1 -0
  38. package/dist/types/definers/builders/task/fluent-builder.interface.d.ts +4 -0
  39. package/dist/types/definers/builders/task/index.d.ts +2 -2
  40. package/dist/types/definers/builders/task/utils.d.ts +1 -4
  41. package/dist/types/definers/builders/utils.d.ts +7 -2
  42. package/dist/types/definers/defineError.d.ts +12 -2
  43. package/dist/types/definers/resourceFork.d.ts +3 -1
  44. package/dist/types/definers/tools.d.ts +12 -12
  45. package/dist/types/errors/domain-error-ids.d.ts +44 -0
  46. package/dist/types/errors/domain-runtime.errors.d.ts +136 -0
  47. package/dist/types/errors/foundation.errors.d.ts +125 -0
  48. package/dist/types/errors/generic.errors.d.ts +1 -0
  49. package/dist/types/errors/model-runtime.errors.d.ts +20 -0
  50. package/dist/types/errors.d.ts +5 -74
  51. package/dist/types/globals/cron/cron-parser.d.ts +4 -0
  52. package/dist/types/globals/cron/cron.errors.d.ts +8 -0
  53. package/dist/types/globals/cron/cron.resource.d.ts +12 -0
  54. package/dist/types/globals/cron/cron.tag.d.ts +2 -0
  55. package/dist/types/globals/cron/types.d.ts +25 -0
  56. package/dist/types/globals/globalMiddleware.d.ts +87 -13
  57. package/dist/types/globals/globalResources.d.ts +110 -24
  58. package/dist/types/globals/globalTags.d.ts +10 -2
  59. package/dist/types/globals/middleware/cache.middleware.d.ts +173 -13
  60. package/dist/types/globals/middleware/circuitBreaker.middleware.d.ts +5 -1
  61. package/dist/types/globals/middleware/concurrency.middleware.d.ts +3 -0
  62. package/dist/types/globals/middleware/fallback.middleware.d.ts +8 -1
  63. package/dist/types/globals/middleware/rateLimit.middleware.d.ts +4 -1
  64. package/dist/types/globals/middleware/retry.middleware.d.ts +5 -0
  65. package/dist/types/globals/middleware/temporal.middleware.d.ts +19 -19
  66. package/dist/types/globals/middleware/timeout.middleware.d.ts +4 -1
  67. package/dist/types/globals/resources/eventManager.resource.d.ts +2 -0
  68. package/dist/types/globals/resources/logger.resource.d.ts +2 -0
  69. package/dist/types/globals/resources/middlewareManager.resource.d.ts +2 -0
  70. package/dist/types/globals/resources/queue.resource.d.ts +2 -0
  71. package/dist/types/globals/resources/runtime.resource.d.ts +2 -0
  72. package/dist/types/globals/resources/serializer.resource.d.ts +2 -0
  73. package/dist/types/globals/resources/store.resource.d.ts +2 -0
  74. package/dist/types/globals/resources/taskRunner.resource.d.ts +2 -0
  75. package/dist/types/globals/resources/tunnel/plan.d.ts +6 -3
  76. package/dist/types/globals/resources/tunnel/tunnel.policy.tag.d.ts +2 -0
  77. package/dist/types/globals/resources/tunnel/types.d.ts +7 -2
  78. package/dist/types/globals/types.d.ts +6 -1
  79. package/dist/types/models/BuiltinsRegistry.d.ts +2 -0
  80. package/dist/types/models/DependencyProcessor.d.ts +27 -6
  81. package/dist/types/models/EventManager.d.ts +9 -9
  82. package/dist/types/models/LogPrinter.d.ts +5 -5
  83. package/dist/types/models/Logger.d.ts +16 -16
  84. package/dist/types/models/MiddlewareManager.d.ts +20 -2
  85. package/dist/types/models/OverrideManager.d.ts +4 -1
  86. package/dist/types/models/Queue.d.ts +2 -0
  87. package/dist/types/models/RunResult.d.ts +290 -26
  88. package/dist/types/models/Store.d.ts +29 -12
  89. package/dist/types/models/StoreRegistry.d.ts +16 -13
  90. package/dist/types/models/StoreValidator.d.ts +2 -0
  91. package/dist/types/models/TaskRunner.d.ts +3 -1
  92. package/dist/types/models/VisibilityTracker.d.ts +75 -0
  93. package/dist/types/models/dependency-processor/DependencyExtractor.d.ts +23 -0
  94. package/dist/types/models/dependency-processor/HookEventBuffer.d.ts +15 -0
  95. package/dist/types/models/dependency-processor/ResourceScheduler.d.ts +10 -0
  96. package/dist/types/models/event/EmissionExecutor.d.ts +5 -4
  97. package/dist/types/models/event/ListenerRegistry.d.ts +2 -0
  98. package/dist/types/models/index.d.ts +1 -3
  99. package/dist/types/models/middleware/InterceptorRegistry.d.ts +13 -4
  100. package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +3 -2
  101. package/dist/types/models/middleware/ValidationHelper.d.ts +3 -6
  102. package/dist/types/models/utils/buildDependencyGraph.d.ts +12 -0
  103. package/dist/types/models/utils/dependencyStrategies.d.ts +15 -0
  104. package/dist/types/models/utils/disposeOrder.d.ts +11 -0
  105. package/dist/types/models/utils/resourceDependencyIds.d.ts +1 -0
  106. package/dist/types/node/durable/bus/MemoryEventBus.d.ts +10 -1
  107. package/dist/types/node/durable/bus/NoopEventBus.d.ts +1 -1
  108. package/dist/types/node/durable/bus/RedisEventBus.d.ts +8 -2
  109. package/dist/types/node/durable/core/CronParser.d.ts +2 -13
  110. package/dist/types/node/durable/core/DurableResource.d.ts +15 -32
  111. package/dist/types/node/durable/core/DurableService.d.ts +1 -0
  112. package/dist/types/node/durable/core/DurableWorker.d.ts +4 -2
  113. package/dist/types/node/durable/core/createRunnerDurableRuntime.d.ts +2 -0
  114. package/dist/types/node/durable/core/interfaces/bus.d.ts +1 -1
  115. package/dist/types/node/durable/core/interfaces/resource.d.ts +61 -0
  116. package/dist/types/node/durable/core/interfaces/service.d.ts +2 -0
  117. package/dist/types/node/durable/core/interfaces/store.d.ts +5 -0
  118. package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +1 -0
  119. package/dist/types/node/durable/core/managers/PollingManager.d.ts +3 -1
  120. package/dist/types/node/durable/core/resource.d.ts +6 -5
  121. package/dist/types/node/durable/core/utils.d.ts +11 -1
  122. package/dist/types/node/durable/queue/RabbitMQQueue.d.ts +4 -0
  123. package/dist/types/node/durable/resources/memoryDurableResource.d.ts +7 -5
  124. package/dist/types/node/durable/resources/redisDurableResource.d.ts +7 -5
  125. package/dist/types/node/durable/store/MemoryStore.d.ts +2 -0
  126. package/dist/types/node/durable/store/RedisStore.d.ts +1 -0
  127. package/dist/types/node/durable/tags/durableWorkflow.tag.d.ts +6 -1
  128. package/dist/types/node/exposure/allowList.d.ts +2 -1
  129. package/dist/types/node/exposure/handlers/contextWrapper.d.ts +6 -2
  130. package/dist/types/node/exposure/handlers/errorHandlers.d.ts +1 -0
  131. package/dist/types/node/exposure/handlers/eventHandler.d.ts +1 -0
  132. package/dist/types/node/exposure/handlers/taskHandler.d.ts +3 -1
  133. package/dist/types/node/exposure/logging.d.ts +1 -0
  134. package/dist/types/node/exposure/requestContext.d.ts +1 -1
  135. package/dist/types/node/exposure/requestHandlers.d.ts +3 -1
  136. package/dist/types/node/exposure/requestIdentity.d.ts +3 -0
  137. package/dist/types/node/exposure/resource.d.ts +7 -7
  138. package/dist/types/node/exposure/resourceTypes.d.ts +6 -0
  139. package/dist/types/node/exposure/serverLifecycle.d.ts +2 -0
  140. package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +1 -1
  141. package/dist/types/node/http/http-smart-client.factory.resource.d.ts +1 -1
  142. package/dist/types/node/node.d.ts +1 -184
  143. package/dist/types/node/tunnel/allowlist.d.ts +10 -1
  144. package/dist/types/platform/adapters/browser.d.ts +1 -1
  145. package/dist/types/platform/adapters/edge.d.ts +17 -0
  146. package/dist/types/platform/adapters/node-als.d.ts +1 -1
  147. package/dist/types/platform/adapters/node.d.ts +1 -1
  148. package/dist/types/platform/adapters/universal-generic.d.ts +5 -2
  149. package/dist/types/platform/adapters/universal.d.ts +1 -1
  150. package/dist/types/platform/index.d.ts +3 -2
  151. package/dist/types/platform/types.d.ts +8 -2
  152. package/dist/types/public.d.ts +376 -20
  153. package/dist/types/run.d.ts +17 -1
  154. package/dist/types/serializer/Serializer.d.ts +1 -41
  155. package/dist/types/serializer/errors.d.ts +8 -0
  156. package/dist/types/serializer/marker-key-escapes.d.ts +2 -0
  157. package/dist/types/serializer/serialize-utils.d.ts +1 -1
  158. package/dist/types/serializer/type-registry.d.ts +0 -1
  159. package/dist/types/serializer/types.d.ts +7 -6
  160. package/dist/types/testing.d.ts +1 -0
  161. package/dist/types/tools/LockableMap.d.ts +20 -0
  162. package/dist/types/tools/getAllThrows.d.ts +13 -0
  163. package/dist/types/tools/throws.d.ts +1 -1
  164. package/dist/types/types/error.d.ts +25 -2
  165. package/dist/types/types/event.d.ts +35 -0
  166. package/dist/types/types/hook.d.ts +8 -0
  167. package/dist/types/types/resource.d.ts +13 -1
  168. package/dist/types/types/resourceMiddleware.d.ts +8 -0
  169. package/dist/types/types/runner.d.ts +56 -0
  170. package/dist/types/types/storeTypes.d.ts +5 -1
  171. package/dist/types/types/symbols.d.ts +1 -1
  172. package/dist/types/types/tag.d.ts +1 -0
  173. package/dist/types/types/tagged.d.ts +2 -2
  174. package/dist/types/types/task.d.ts +3 -3
  175. package/dist/types/types/taskMiddleware.d.ts +8 -0
  176. package/dist/types/types/utilities.d.ts +25 -3
  177. package/dist/ui/assets/index-B4lZaXFJ.js +141 -0
  178. package/dist/ui/assets/index-Y_9aLumt.css +1 -0
  179. package/dist/ui/index.html +2 -3
  180. package/dist/universal/index.cjs +6159 -3049
  181. package/dist/universal/index.cjs.map +1 -1
  182. package/dist/universal/index.mjs +6157 -3046
  183. package/dist/universal/index.mjs.map +1 -1
  184. package/package.json +18 -15
  185. package/readmes/AI.md +181 -45
  186. package/dist/ui/assets/index-2cb8f39f.js +0 -141
  187. package/dist/ui/assets/index-b1f988bf.css +0 -1
  188. /package/dist/types/{tunnels → tools}/buildUniversalManifest.d.ts +0 -0
  189. /package/dist/types/{processHooks.d.ts → tools/processShutdownHooks.d.ts} +0 -0
@@ -4,6 +4,10 @@ export interface AsyncContextFluentBuilder<T = unknown> {
4
4
  serialize(fn: (data: T) => string): AsyncContextFluentBuilder<T>;
5
5
  parse(fn: (raw: string) => T): AsyncContextFluentBuilder<T>;
6
6
  configSchema(schema: IValidationSchema<T>): AsyncContextFluentBuilder<T>;
7
+ /**
8
+ * Alias for configSchema. Use this to define the context configuration validation contract.
9
+ */
10
+ schema(schema: IValidationSchema<T>): AsyncContextFluentBuilder<T>;
7
11
  meta<TNewMeta extends IAsyncContextMeta>(m: TNewMeta): AsyncContextFluentBuilder<T>;
8
12
  build(): IAsyncContext<T>;
9
13
  }
@@ -1,10 +1,17 @@
1
- import type { DefaultErrorType, IErrorMeta, IValidationSchema, IErrorHelper } from "../../../defs";
1
+ import type { DefaultErrorType, IErrorMeta, IValidationSchema, IErrorHelper, TagType } from "../../../defs";
2
2
  export interface ErrorFluentBuilder<TData extends DefaultErrorType = DefaultErrorType> {
3
3
  id: string;
4
4
  httpCode(code: number): ErrorFluentBuilder<TData>;
5
5
  serialize(fn: (data: TData) => string): ErrorFluentBuilder<TData>;
6
6
  parse(fn: (raw: string) => TData): ErrorFluentBuilder<TData>;
7
7
  dataSchema(schema: IValidationSchema<TData>): ErrorFluentBuilder<TData>;
8
+ /**
9
+ * Alias for dataSchema. Use this to define the error data validation contract.
10
+ */
11
+ schema(schema: IValidationSchema<TData>): ErrorFluentBuilder<TData>;
12
+ tags<TNewTags extends TagType[]>(t: TNewTags, options?: {
13
+ override?: boolean;
14
+ }): ErrorFluentBuilder<TData>;
8
15
  build(): IErrorHelper<TData>;
9
16
  format(fn: (data: TData) => string): ErrorFluentBuilder<TData>;
10
17
  /**
@@ -15,6 +15,7 @@ export declare function errorBuilder<TData extends DefaultErrorType = DefaultErr
15
15
  * @returns true if the error is a RunnerError instance
16
16
  */
17
17
  declare function isRunnerError(error: unknown): error is RunnerError;
18
+ declare function isRunnerError(error: unknown, partialData: Partial<DefaultErrorType>): error is RunnerError;
18
19
  export declare const error: typeof errorBuilder & {
19
20
  is: typeof isRunnerError;
20
21
  };
@@ -1,4 +1,4 @@
1
- import type { DefaultErrorType, IErrorMeta, IValidationSchema } from "../../../defs";
1
+ import type { DefaultErrorType, IErrorMeta, IValidationSchema, TagType } from "../../../defs";
2
2
  /**
3
3
  * Internal state for the ErrorFluentBuilder.
4
4
  * Kept immutable and frozen.
@@ -13,4 +13,5 @@ export type BuilderState<TData extends DefaultErrorType> = Readonly<{
13
13
  parse?: (raw: string) => TData;
14
14
  dataSchema?: IValidationSchema<TData>;
15
15
  meta?: IErrorMeta;
16
+ tags?: TagType[];
16
17
  }>;
@@ -4,3 +4,4 @@ import type { BuilderState } from "./types";
4
4
  * Clones and patches the builder state immutably.
5
5
  */
6
6
  export declare function clone<TData extends DefaultErrorType>(s: BuilderState<TData>, patch: Partial<BuilderState<TData>>): BuilderState<TData>;
7
+ export { mergeArray } from "../shared/mergeUtils";
@@ -1,10 +1,20 @@
1
1
  import type { IEvent, IEventMeta, IValidationSchema, TagType } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  export interface EventFluentBuilder<TPayload = void> {
3
4
  id: string;
4
5
  payloadSchema<TNew>(schema: IValidationSchema<TNew>): EventFluentBuilder<TNew>;
6
+ /**
7
+ * Alias for payloadSchema. Use this to define the event payload validation contract.
8
+ */
9
+ schema<TNew>(schema: IValidationSchema<TNew>): EventFluentBuilder<TNew>;
5
10
  tags<TNewTags extends TagType[]>(t: TNewTags, options?: {
6
11
  override?: boolean;
7
12
  }): EventFluentBuilder<TPayload>;
13
+ /**
14
+ * Declare errors that hooks assigned to this event might throw.
15
+ * This is for documentation purposes only.
16
+ */
17
+ throws(list: ThrowsList): EventFluentBuilder<TPayload>;
8
18
  meta<TNewMeta extends IEventMeta>(m: TNewMeta): EventFluentBuilder<TPayload>;
9
19
  /**
10
20
  * Enable parallel execution for this event's listeners.
@@ -3,7 +3,4 @@ import type { BuilderState } from "./types";
3
3
  * Clones and patches the builder state immutably.
4
4
  */
5
5
  export declare function clone<TPayload>(s: BuilderState<TPayload>, patch: Partial<BuilderState<TPayload>>): BuilderState<TPayload>;
6
- /**
7
- * Generic array merge with override support.
8
- */
9
- export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
6
+ export { mergeArray } from "../shared/mergeUtils";
@@ -1,4 +1,5 @@
1
1
  import type { DependencyMapType, IEventDefinition, IHook, IHookDefinition, ITaskMeta, TagType } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  /** Valid event targets for hook's .on() method */
3
4
  export type ValidOnTarget = "*" | IEventDefinition<any> | readonly IEventDefinition<any>[];
4
5
  /** Resolved TOn when valid, or `any` when undefined (build will throw at runtime) */
@@ -17,6 +18,8 @@ export interface HookFluentBuilder<TDeps extends DependencyMapType = {}, TOn ext
17
18
  override?: boolean;
18
19
  }): HookFluentBuilder<TDeps, TOn, TMeta>;
19
20
  meta<TNewMeta extends ITaskMeta>(m: TNewMeta): HookFluentBuilder<TDeps, TOn, TNewMeta>;
21
+ /** Declare which typed errors this hook may throw (declarative only). */
22
+ throws(list: ThrowsList): HookFluentBuilder<TDeps, TOn, TMeta>;
20
23
  /** Set the hook's run handler. Required before build(). */
21
24
  run(fn: IHookDefinition<TDeps, ResolvedOn<TOn>, TMeta>["run"]): HookFluentBuilder<TDeps, TOn, TMeta>;
22
25
  /**
@@ -1,4 +1,5 @@
1
1
  import type { DependencyMapType, IEventDefinition, IHookDefinition, ITaskMeta } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  /**
3
4
  * Internal state for the HookFluentBuilder.
4
5
  * Kept immutable and frozen.
@@ -11,4 +12,6 @@ export type BuilderState<TDeps extends DependencyMapType, TOn extends "*" | IEve
11
12
  on: TOn;
12
13
  /** Hook handler function. Required before build(). */
13
14
  run: IHookDefinition<TDeps, NonNullable<TOn>, TMeta>["run"] | undefined;
15
+ /** Declarative error contract. */
16
+ throws?: ThrowsList;
14
17
  }>;
@@ -4,10 +4,7 @@ import type { BuilderState } from "./types";
4
4
  * Clones and patches the builder state immutably.
5
5
  */
6
6
  export declare function clone<TDeps extends DependencyMapType, TOn extends "*" | IEventDefinition<any> | readonly IEventDefinition<any>[] | undefined, TMeta extends ITaskMeta, TNextDeps extends DependencyMapType = TDeps, TNextOn extends "*" | IEventDefinition<any> | readonly IEventDefinition<any>[] | undefined = TOn, TNextMeta extends ITaskMeta = TMeta>(s: BuilderState<TDeps, TOn, TMeta>, patch: Partial<BuilderState<TNextDeps, TNextOn, TNextMeta>>): BuilderState<TNextDeps, TNextOn, TNextMeta>;
7
- /**
8
- * Generic array merge with override support.
9
- */
10
- export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
7
+ export { mergeArray } from "../shared/mergeUtils";
11
8
  /**
12
9
  * Merges dependencies handling all combinations of objects and functions.
13
10
  */
@@ -10,10 +10,12 @@ export * from "./utils";
10
10
  /**
11
11
  * Entry point for creating a task middleware builder.
12
12
  */
13
- export declare function taskMiddlewareBuilder<C = void, In = void, Out = void, D extends DependencyMapType = {}>(id: string): TaskMiddlewareFluentBuilder<C, In, Out, D>;
13
+ export declare function taskMiddlewareBuilder<In = void>(id: string): TaskMiddlewareFluentBuilder<void, In, void, {}>;
14
+ export declare function taskMiddlewareBuilder<C, In, Out = void, D extends DependencyMapType = {}>(id: string): TaskMiddlewareFluentBuilder<C, In, Out, D>;
14
15
  /**
15
16
  * Entry point for creating a resource middleware builder.
16
17
  */
17
- export declare function resourceMiddlewareBuilder<C = void, In = void, Out = void, D extends DependencyMapType = {}>(id: string): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
18
+ export declare function resourceMiddlewareBuilder<C = void>(id: string): ResourceMiddlewareFluentBuilder<C, void, void, {}>;
19
+ export declare function resourceMiddlewareBuilder<C, In, Out = void, D extends DependencyMapType = {}>(id: string): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
18
20
  export declare const taskMiddleware: typeof taskMiddlewareBuilder;
19
21
  export declare const resourceMiddleware: typeof resourceMiddlewareBuilder;
@@ -1,4 +1,5 @@
1
1
  import type { DependencyMapType, IResource, IResourceMiddleware, IResourceMiddlewareDefinition, IValidationSchema, IMiddlewareMeta, TagType } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  export interface ResourceMiddlewareFluentBuilder<C = any, In = void, Out = void, D extends DependencyMapType = {}> {
3
4
  id: string;
4
5
  dependencies<TNewDeps extends DependencyMapType>(deps: TNewDeps | ((config: C) => TNewDeps), options?: {
@@ -8,11 +9,17 @@ export interface ResourceMiddlewareFluentBuilder<C = any, In = void, Out = void,
8
9
  override: true;
9
10
  }): ResourceMiddlewareFluentBuilder<C, In, Out, TNewDeps>;
10
11
  configSchema<TNew>(schema: IValidationSchema<TNew>): ResourceMiddlewareFluentBuilder<TNew, In, Out, D>;
12
+ /**
13
+ * Alias for configSchema. Use this to define the middleware configuration validation contract.
14
+ */
15
+ schema<TNew>(schema: IValidationSchema<TNew>): ResourceMiddlewareFluentBuilder<TNew, In, Out, D>;
11
16
  run(fn: IResourceMiddlewareDefinition<C, In, Out, D>["run"]): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
12
17
  meta<TNewMeta extends IMiddlewareMeta>(m: TNewMeta): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
13
18
  tags<TNewTags extends TagType[]>(t: TNewTags, options?: {
14
19
  override?: boolean;
15
20
  }): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
21
+ /** Declare which typed errors this middleware may throw (declarative only). */
22
+ throws(list: ThrowsList): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
16
23
  everywhere(flag: boolean | ((resource: IResource<any, any, any, any, any>) => boolean)): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
17
24
  build(): IResourceMiddleware<C, In, Out, D>;
18
25
  }
@@ -1,4 +1,5 @@
1
1
  import type { DependencyMapType, ITask, ITaskMiddleware, ITaskMiddlewareDefinition, IValidationSchema, IMiddlewareMeta, TagType } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  export interface TaskMiddlewareFluentBuilder<C = any, In = void, Out = void, D extends DependencyMapType = {}> {
3
4
  id: string;
4
5
  dependencies<TNewDeps extends DependencyMapType>(deps: TNewDeps | ((config: C) => TNewDeps), options?: {
@@ -8,11 +9,17 @@ export interface TaskMiddlewareFluentBuilder<C = any, In = void, Out = void, D e
8
9
  override: true;
9
10
  }): TaskMiddlewareFluentBuilder<C, In, Out, TNewDeps>;
10
11
  configSchema<TNew>(schema: IValidationSchema<TNew>): TaskMiddlewareFluentBuilder<TNew, In, Out, D>;
12
+ /**
13
+ * Alias for configSchema. Use this to define the middleware configuration validation contract.
14
+ */
15
+ schema<TNew>(schema: IValidationSchema<TNew>): TaskMiddlewareFluentBuilder<TNew, In, Out, D>;
11
16
  run(fn: ITaskMiddlewareDefinition<C, In, Out, D>["run"]): TaskMiddlewareFluentBuilder<C, In, Out, D>;
12
17
  meta<TNewMeta extends IMiddlewareMeta>(m: TNewMeta): TaskMiddlewareFluentBuilder<C, In, Out, D>;
13
18
  tags<TNewTags extends TagType[]>(t: TNewTags, options?: {
14
19
  override?: boolean;
15
20
  }): TaskMiddlewareFluentBuilder<C, In, Out, D>;
21
+ /** Declare which typed errors this middleware may throw (declarative only). */
22
+ throws(list: ThrowsList): TaskMiddlewareFluentBuilder<C, In, Out, D>;
16
23
  everywhere(flag: boolean | ((task: ITask<any, any, any, any>) => boolean)): TaskMiddlewareFluentBuilder<C, In, Out, D>;
17
24
  build(): ITaskMiddleware<C, In, Out, D>;
18
25
  }
@@ -1,13 +1,32 @@
1
- import type { DependencyMapType, ITaskMiddlewareDefinition, IResourceMiddlewareDefinition } from "../../../defs";
1
+ import type { DependencyMapType, IValidationSchema, IMiddlewareMeta, TagType, ITaskMiddlewareDefinition, IResourceMiddlewareDefinition } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  /**
3
4
  * Internal state for the TaskMiddlewareFluentBuilder.
4
5
  */
5
- export type TaskMwState<C, In, Out, D extends DependencyMapType> = Readonly<Required<Pick<ITaskMiddlewareDefinition<C, In, Out, D>, "id" | "dependencies" | "configSchema" | "run" | "meta" | "tags" | "everywhere">> & {
6
+ export type TaskMwState<C, In, Out, D extends DependencyMapType> = Readonly<{
7
+ id: string;
8
+ dependencies: D | ((config: C) => D);
9
+ configSchema: IValidationSchema<C> | undefined;
10
+ run: ITaskMiddlewareDefinition<any, In, Out, any>["run"] | undefined;
11
+ meta: IMiddlewareMeta;
12
+ tags: TagType[];
13
+ everywhere: ITaskMiddlewareDefinition<C, In, Out, D>["everywhere"];
6
14
  filePath: string;
15
+ /** Declarative error contract. */
16
+ throws?: ThrowsList;
7
17
  }>;
8
18
  /**
9
19
  * Internal state for the ResourceMiddlewareFluentBuilder.
10
20
  */
11
- export type ResMwState<C, In, Out, D extends DependencyMapType> = Readonly<Required<Pick<IResourceMiddlewareDefinition<C, In, Out, D>, "id" | "dependencies" | "configSchema" | "run" | "meta" | "tags" | "everywhere">> & {
21
+ export type ResMwState<C, In, Out, D extends DependencyMapType> = Readonly<{
22
+ id: string;
23
+ dependencies: D | ((config: C) => D);
24
+ configSchema: IValidationSchema<C> | undefined;
25
+ run: IResourceMiddlewareDefinition<any, In, Out, any>["run"] | undefined;
26
+ meta: IMiddlewareMeta;
27
+ tags: TagType[];
28
+ everywhere: IResourceMiddlewareDefinition<C, In, Out, D>["everywhere"];
12
29
  filePath: string;
30
+ /** Declarative error contract. */
31
+ throws?: ThrowsList;
13
32
  }>;
@@ -4,14 +4,13 @@ import type { TaskMwState, ResMwState } from "./types";
4
4
  * Clones and patches the Task middleware state immutably.
5
5
  */
6
6
  export declare function cloneTask<C, In, Out, D extends DependencyMapType>(s: TaskMwState<C, In, Out, D>, patch: Partial<TaskMwState<C, In, Out, D>>): TaskMwState<C, In, Out, D>;
7
+ export declare function cloneTask<C, In, Out, D extends DependencyMapType, TNextConfig, TNextIn, TNextOut, TNextDeps extends DependencyMapType>(s: TaskMwState<C, In, Out, D>, patch: Partial<TaskMwState<TNextConfig, TNextIn, TNextOut, TNextDeps>>): TaskMwState<TNextConfig, TNextIn, TNextOut, TNextDeps>;
7
8
  /**
8
9
  * Clones and patches the Resource middleware state immutably.
9
10
  */
10
11
  export declare function cloneRes<C, In, Out, D extends DependencyMapType>(s: ResMwState<C, In, Out, D>, patch: Partial<ResMwState<C, In, Out, D>>): ResMwState<C, In, Out, D>;
11
- /**
12
- * Generic array merge with override support.
13
- */
14
- export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
12
+ export declare function cloneRes<C, In, Out, D extends DependencyMapType, TNextConfig, TNextIn, TNextOut, TNextDeps extends DependencyMapType>(s: ResMwState<C, In, Out, D>, patch: Partial<ResMwState<TNextConfig, TNextIn, TNextOut, TNextDeps>>): ResMwState<TNextConfig, TNextIn, TNextOut, TNextDeps>;
13
+ export { mergeArray } from "../shared/mergeUtils";
15
14
  /**
16
15
  * Merges dependencies handling all combinations of objects and functions.
17
16
  */
@@ -1,4 +1,5 @@
1
1
  import type { DependencyMapType, IEventDefinition, IHook, IHookDefinition, ITaskMeta, TagType } from "../../../defs";
2
+ import type { ThrowsList } from "../../../types/error";
2
3
  export type HookOn = "*" | IEventDefinition<any> | readonly IEventDefinition<any>[];
3
4
  export interface HookOverrideBuilder<TDeps extends DependencyMapType, TOn extends HookOn, TMeta extends ITaskMeta> {
4
5
  id: string;
@@ -11,6 +12,8 @@ export interface HookOverrideBuilder<TDeps extends DependencyMapType, TOn extend
11
12
  }): HookOverrideBuilder<TDeps, TOn, TMeta>;
12
13
  meta<TNewMeta extends ITaskMeta>(m: TNewMeta): HookOverrideBuilder<TDeps, TOn, TNewMeta>;
13
14
  run(fn: IHookDefinition<TDeps, TOn, TMeta>["run"]): HookOverrideBuilder<TDeps, TOn, TMeta>;
15
+ /** Declare which typed errors this hook may throw (declarative only). */
16
+ throws(list: ThrowsList): HookOverrideBuilder<TDeps, TOn, TMeta>;
14
17
  build(): IHook<TDeps, TOn, TMeta>;
15
18
  }
16
19
  export declare function hookOverrideBuilder<TDeps extends DependencyMapType, TOn extends HookOn, TMeta extends ITaskMeta>(base: IHook<TDeps, TOn, TMeta>): HookOverrideBuilder<TDeps, TOn, TMeta>;
@@ -5,7 +5,12 @@ import type { ResourceMiddlewareFluentBuilder } from "../middleware/resource.int
5
5
  import type { TaskMiddlewareFluentBuilder } from "../middleware/task.interface";
6
6
  import type { HookOn, HookOverrideBuilder } from "./hook";
7
7
  export declare function override<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType, TMeta extends ITaskMeta, TTags extends TagType[], TMiddleware extends TaskMiddlewareAttachmentType[]>(base: ITask<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>): TaskFluentBuilder<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>;
8
+ export declare function override<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType, TMeta extends ITaskMeta, TTags extends TagType[], TMiddleware extends TaskMiddlewareAttachmentType[]>(base: ITask<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>, run: ITask<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>["run"]): ITask<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>;
8
9
  export declare function override<TConfig, TValue extends Promise<any>, TDeps extends DependencyMapType, TContext, TMeta extends IResourceMeta, TTags extends TagType[], TMiddleware extends ResourceMiddlewareAttachmentType[]>(base: IResource<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
10
+ export declare function override<TConfig, TValue extends Promise<any>, TDeps extends DependencyMapType, TContext, TMeta extends IResourceMeta, TTags extends TagType[], TMiddleware extends ResourceMiddlewareAttachmentType[]>(base: IResource<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>, init: NonNullable<IResource<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>["init"]>): IResource<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
9
11
  export declare function override<TDeps extends DependencyMapType, TOn extends HookOn, TMeta extends ITaskMeta>(base: IHook<TDeps, TOn, TMeta>): HookOverrideBuilder<TDeps, TOn, TMeta>;
12
+ export declare function override<TDeps extends DependencyMapType, TOn extends HookOn, TMeta extends ITaskMeta>(base: IHook<TDeps, TOn, TMeta>, run: IHook<TDeps, TOn, TMeta>["run"]): IHook<TDeps, TOn, TMeta>;
10
13
  export declare function override<C, In, Out, D extends DependencyMapType>(base: ITaskMiddleware<C, In, Out, D>): TaskMiddlewareFluentBuilder<C, In, Out, D>;
14
+ export declare function override<C, In, Out, D extends DependencyMapType>(base: ITaskMiddleware<C, In, Out, D>, run: ITaskMiddleware<C, In, Out, D>["run"]): ITaskMiddleware<C, In, Out, D>;
11
15
  export declare function override<C, In, Out, D extends DependencyMapType>(base: IResourceMiddleware<C, In, Out, D>): ResourceMiddlewareFluentBuilder<C, In, Out, D>;
16
+ export declare function override<C, In, Out, D extends DependencyMapType>(base: IResourceMiddleware<C, In, Out, D>, run: IResourceMiddleware<C, In, Out, D>["run"]): IResourceMiddleware<C, In, Out, D>;
@@ -30,11 +30,26 @@ export interface ResourceFluentBuilder<TConfig = void, TValue extends Promise<an
30
30
  }): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TMeta, TNewTags, TMiddleware>;
31
31
  context<TNewCtx>(factory: () => TNewCtx): ResourceFluentBuilder<TConfig, TValue, TDeps, TNewCtx, TMeta, TTags, TMiddleware>;
32
32
  configSchema<TNewConfig>(schema: IValidationSchema<TNewConfig>): ResourceFluentBuilder<TNewConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
33
+ /**
34
+ * Alias for configSchema. Use this to define the resource configuration validation contract.
35
+ */
36
+ schema<TNewConfig>(schema: IValidationSchema<TNewConfig>): ResourceFluentBuilder<TNewConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
33
37
  resultSchema<TResolved>(schema: IValidationSchema<TResolved>): ResourceFluentBuilder<TConfig, Promise<TResolved>, TDeps, TContext, TMeta, TTags, TMiddleware>;
34
38
  init<TNewConfig = TConfig, TNewValue extends Promise<any> = TValue>(fn: ResourceInitFn<ResolveConfig<TConfig, TNewConfig>, TNewValue, TDeps, TContext, TMeta, TTags, TMiddleware>): ResourceFluentBuilder<ResolveConfig<TConfig, TNewConfig>, TNewValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
35
39
  dispose(fn: NonNullable<IResourceDefinition<TConfig, TValue, TDeps, TContext, any, any, TMeta, TTags, TMiddleware>["dispose"]>): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
36
40
  meta<TNewMeta extends IResourceMeta>(m: TNewMeta): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TNewMeta, TTags, TMiddleware>;
37
41
  throws(list: ThrowsList): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
42
+ /**
43
+ * Declares which registered items are visible outside this resource's
44
+ * registration subtree. When present, only listed items can be referenced
45
+ * from outside. Omitting `.exports()` = everything is public.
46
+ *
47
+ * Follows standard composition rules: appends by default, replaces
48
+ * when `{ override: true }` is passed.
49
+ */
50
+ exports(items: Array<RegisterableItems>, options?: {
51
+ override?: boolean;
52
+ }): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
38
53
  overrides(o: Array<OverridableElements>, options?: {
39
54
  override?: boolean;
40
55
  }): ResourceFluentBuilder<TConfig, TValue, TDeps, TContext, TMeta, TTags, TMiddleware>;
@@ -4,7 +4,6 @@ export type { ResourceFluentBuilder } from "./fluent-builder.interface";
4
4
  export * from "./types";
5
5
  /**
6
6
  * Creates a new resource builder with the given id.
7
- * Overload allows callers to seed the config type at the entry point for convenience.
8
7
  */
9
8
  export declare function resourceBuilder<TConfig = void>(id: string): ResourceFluentBuilder<TConfig, Promise<any>, {}, any, IResourceMeta, TagType[], ResourceMiddlewareAttachmentType[]>;
10
9
  /**
@@ -18,6 +18,7 @@ export type BuilderState<TConfig, TValue extends Promise<any>, TDeps extends Dep
18
18
  meta?: TMeta;
19
19
  overrides?: Array<any>;
20
20
  throws?: ThrowsList;
21
+ exports?: Array<RegisterableItems>;
21
22
  }>;
22
23
  /**
23
24
  * Helper type to determine if config should be replaced.
@@ -16,10 +16,7 @@ export declare function normalizeRegisterFunction<TConfig>(fn: (config: TConfig)
16
16
  * Merges register state handling all combinations of arrays and functions.
17
17
  */
18
18
  export declare function mergeRegister<TConfig>(existing: RegisterState<TConfig>, addition: RegisterInput<TConfig>, override: boolean): RegisterState<TConfig>;
19
- /**
20
- * Generic array merge with override support.
21
- */
22
- export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
19
+ export { mergeArray } from "../shared/mergeUtils";
23
20
  /**
24
21
  * Merges dependencies handling all combinations of objects and functions.
25
22
  */
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Shared builder utility: merges arrays with override support.
3
+ * When `override` is true, returns only the addition; otherwise concatenates.
4
+ */
5
+ export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
@@ -3,6 +3,10 @@ export interface TagFluentBuilder<TConfig = void, TEnforceIn = void, TEnforceOut
3
3
  id: string;
4
4
  meta<TNewMeta extends ITagMeta>(m: TNewMeta): TagFluentBuilder<TConfig, TEnforceIn, TEnforceOut>;
5
5
  configSchema<TNewConfig>(schema: IValidationSchema<TNewConfig>): TagFluentBuilder<TNewConfig, TEnforceIn, TEnforceOut>;
6
+ /**
7
+ * Alias for configSchema. Use this to define the tag configuration validation contract.
8
+ */
9
+ schema<TNewConfig>(schema: IValidationSchema<TNewConfig>): TagFluentBuilder<TNewConfig, TEnforceIn, TEnforceOut>;
6
10
  config<TNewConfig>(config: TNewConfig): TagFluentBuilder<TNewConfig, TEnforceIn, TEnforceOut>;
7
11
  build(): ITag<TConfig, TEnforceIn, TEnforceOut>;
8
12
  }
@@ -3,3 +3,4 @@ import type { BuilderState } from "./types";
3
3
  * Clones and patches the builder state immutably.
4
4
  */
5
5
  export declare function clone<TConfig, TEnforceIn, TEnforceOut, TNextConfig = TConfig>(s: BuilderState<TConfig, TEnforceIn, TEnforceOut>, patch: Partial<BuilderState<TNextConfig, TEnforceIn, TEnforceOut>>): BuilderState<TNextConfig, TEnforceIn, TEnforceOut>;
6
+ export { mergeArray } from "../shared/mergeUtils";
@@ -25,6 +25,10 @@ export interface TaskFluentBuilder<TInput = undefined, TOutput extends Promise<a
25
25
  override: true;
26
26
  }): TaskFluentBuilder<TInput, TOutput, TDeps, TMeta, TNewTags, TMiddleware>;
27
27
  inputSchema<TNewInput>(schema: IValidationSchema<TNewInput>): TaskFluentBuilder<TNewInput, TOutput, TDeps, TMeta, TTags, TMiddleware>;
28
+ /**
29
+ * Alias for inputSchema. Use this to define the task input validation contract.
30
+ */
31
+ schema<TNewInput>(schema: IValidationSchema<TNewInput>): TaskFluentBuilder<TNewInput, TOutput, TDeps, TMeta, TTags, TMiddleware>;
28
32
  resultSchema<TResolved>(schema: IValidationSchema<TResolved>): TaskFluentBuilder<TInput, Promise<TResolved>, TDeps, TMeta, TTags, TMiddleware>;
29
33
  run<TNewInput = TInput, TNewOutput extends Promise<any> = TOutput>(fn: NonNullable<ITaskDefinition<ResolveInput<TInput, TNewInput>, TNewOutput, TDeps, TMeta, TTags, TMiddleware>["run"]>): TaskFluentBuilder<ResolveInput<TInput, TNewInput>, TNewOutput, TDeps, TMeta, TTags, TMiddleware>;
30
34
  throws(list: ThrowsList): TaskFluentBuilder<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>;
@@ -9,13 +9,13 @@ export * from "./types";
9
9
  /**
10
10
  * Entry point for creating a task builder.
11
11
  */
12
- export declare function taskBuilder(id: string): TaskFluentBuilder<undefined, Promise<any>, {}, ITaskMeta, TagType[], TaskMiddlewareAttachmentType[]>;
12
+ export declare function taskBuilder<TInput = undefined>(id: string): TaskFluentBuilder<TInput, Promise<any>, {}, ITaskMeta, TagType[], TaskMiddlewareAttachmentType[]>;
13
13
  /**
14
14
  * Entry point for creating a phantom task builder.
15
15
  */
16
16
  export declare function phantomTaskBuilder<TInput = undefined, TResolved = any>(id: string): PhantomTaskFluentBuilder<TInput, TResolved, {}, ITaskMeta, TagType[], TaskMiddlewareAttachmentType[]>;
17
17
  export interface TaskBuilderWithPhantom {
18
- (id: string): TaskFluentBuilder<undefined, Promise<any>, {}, ITaskMeta, TagType[], TaskMiddlewareAttachmentType[]>;
18
+ <TInput = undefined>(id: string): TaskFluentBuilder<TInput, Promise<any>, {}, ITaskMeta, TagType[], TaskMiddlewareAttachmentType[]>;
19
19
  phantom: typeof phantomTaskBuilder;
20
20
  }
21
21
  export declare const task: TaskBuilderWithPhantom;
@@ -4,10 +4,7 @@ import type { BuilderState } from "./types";
4
4
  * Clones and patches the builder state immutably.
5
5
  */
6
6
  export declare function clone<TInput, TOutput, TDeps extends DependencyMapType, TMeta extends ITaskMeta, TTags extends TagType[], TMiddleware extends TaskMiddlewareAttachmentType[], TNextInput = TInput, TNextOutput = TOutput, TNextDeps extends DependencyMapType = TDeps, TNextMeta extends ITaskMeta = TMeta, TNextTags extends TagType[] = TTags, TNextMiddleware extends TaskMiddlewareAttachmentType[] = TMiddleware>(s: BuilderState<TInput, TOutput, TDeps, TMeta, TTags, TMiddleware>, patch: Partial<BuilderState<TNextInput, TNextOutput, TNextDeps, TNextMeta, TNextTags, TNextMiddleware>>): BuilderState<TNextInput, TNextOutput, TNextDeps, TNextMeta, TNextTags, TNextMiddleware>;
7
- /**
8
- * Generic array merge with override support.
9
- */
10
- export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
7
+ export { mergeArray } from "../shared/mergeUtils";
11
8
  /**
12
9
  * Merges dependencies handling all combinations of objects and functions.
13
10
  */
@@ -1,4 +1,9 @@
1
1
  import type { DependencyMapType } from "../../defs";
2
- export declare function cloneState<S, NS>(s: S, patch: Partial<NS>): NS;
3
- export declare function mergeArray<T>(existing: ReadonlyArray<T> | undefined, addition: ReadonlyArray<T>, override: boolean): T[];
2
+ type CloneStatePatch<S, NS> = Partial<NS> & Pick<NS, Exclude<keyof NS, keyof S>>;
3
+ /**
4
+ * Freeze and return a new state where `patch` can only omit keys already present in `s`.
5
+ * This guarantees required keys introduced by `NS` are provided by the patch.
6
+ */
7
+ export declare function cloneState<S extends Partial<NS>, NS extends object>(s: S, patch: CloneStatePatch<S, NS>): NS;
8
+ export { mergeArray } from "./shared/mergeUtils";
4
9
  export declare function mergeDepsNoConfig<TExisting extends DependencyMapType, TNew extends DependencyMapType>(existing: TExisting | (() => TExisting) | undefined, addition: TNew | (() => TNew), override: boolean): (TExisting & TNew) | (() => TExisting & TNew);
@@ -1,5 +1,8 @@
1
- import { DefaultErrorType, IErrorDefinition, IErrorHelper, IErrorDefinitionFinal } from "../types/error";
1
+ import { DefaultErrorType, ErrorThrowArgs, IErrorDefinition, IErrorHelper, IErrorDefinitionFinal } from "../types/error";
2
+ import type { IErrorMeta } from "../types/meta";
3
+ import type { TagType } from "../types/tag";
2
4
  import { symbolError, symbolFilePath, symbolOptionalDependency } from "../types/symbols";
5
+ export declare const matchesRunnerErrorData: <TData extends DefaultErrorType = DefaultErrorType>(data: TData, partialData?: Partial<TData>) => boolean;
3
6
  export declare class RunnerError<TData extends DefaultErrorType = DefaultErrorType> extends Error {
4
7
  readonly id: string;
5
8
  readonly data: TData;
@@ -14,8 +17,15 @@ export declare class ErrorHelper<TData extends DefaultErrorType = DefaultErrorTy
14
17
  constructor(definition: IErrorDefinitionFinal<TData>, filePath: string);
15
18
  get id(): string;
16
19
  get httpCode(): number | undefined;
17
- throw(data: TData): never;
20
+ get tags(): TagType[];
21
+ get meta(): IErrorMeta;
22
+ private buildRunnerError;
23
+ ["new"](...args: ErrorThrowArgs<TData>): RunnerError<TData>;
24
+ /** @deprecated use .new() or .throw() for better DX */
25
+ create(...args: ErrorThrowArgs<TData>): RunnerError<TData>;
26
+ throw(...args: ErrorThrowArgs<TData>): never;
18
27
  is(error: unknown): error is RunnerError<TData>;
28
+ is(error: unknown, partialData: Partial<TData>): error is RunnerError<TData>;
19
29
  optional(): {
20
30
  readonly inner: IErrorHelper<TData>;
21
31
  readonly [symbolOptionalDependency]: true;
@@ -1,5 +1,7 @@
1
1
  import type { DependencyMapType, RegisterableItems, ResourceForkOptions } from "../types/resource";
2
- export type ResourceRegisterList = Array<RegisterableItems> | ((config: any) => Array<RegisterableItems>) | undefined;
2
+ export type ResourceRegisterList = Array<RegisterableItems> | {
3
+ bivarianceHack(config: unknown): Array<RegisterableItems>;
4
+ }["bivarianceHack"] | undefined;
3
5
  type DependenciesList<TConfig, TDeps extends DependencyMapType> = TDeps | ((config: TConfig) => TDeps) | undefined;
4
6
  export declare function resolveForkedRegisterAndDependencies<TConfig, TDeps extends DependencyMapType>(params: {
5
7
  register: ResourceRegisterList;
@@ -9,45 +9,45 @@ import type { IAsyncContext } from "../types/asyncContext";
9
9
  * @param definition - Any value to test.
10
10
  * @returns True when `definition` is a branded Task.
11
11
  */
12
- export declare function isTask(definition: any): definition is ITask;
12
+ export declare function isTask(definition: unknown): definition is ITask;
13
13
  /** Type guard: checks if a definition is a Phantom Task. */
14
- export declare function isPhantomTask(definition: any): definition is IPhantomTask;
14
+ export declare function isPhantomTask(definition: unknown): definition is IPhantomTask;
15
15
  /**
16
16
  * Type guard: checks if a definition is a Resource.
17
17
  * @param definition - Any value to test.
18
18
  * @returns True when `definition` is a branded Resource.
19
19
  */
20
- export declare function isResource(definition: any): definition is IResource;
20
+ export declare function isResource(definition: unknown): definition is IResource;
21
21
  /**
22
22
  * Type guard: checks if a definition is a Resource that carries config via `.with()`.
23
23
  * @param definition - Any value to test.
24
24
  * @returns True when `definition` is a branded ResourceWithConfig.
25
25
  */
26
- export declare function isResourceWithConfig(definition: any): definition is IResourceWithConfig;
26
+ export declare function isResourceWithConfig(definition: unknown): definition is IResourceWithConfig;
27
27
  /**
28
28
  * Type guard: checks if a definition is an Event.
29
29
  * @param definition - Any value to test.
30
30
  * @returns True when `definition` is a branded Event.
31
31
  */
32
- export declare function isEvent(definition: any): definition is IEvent;
32
+ export declare function isEvent(definition: unknown): definition is IEvent;
33
33
  /** Type guard: checks if a definition is a Hook. */
34
- export declare function isHook(definition: any): definition is IHook;
34
+ export declare function isHook(definition: unknown): definition is IHook;
35
35
  /**
36
36
  * Type guard: checks if a definition is a Middleware.
37
37
  * @param definition - Any value to test.
38
38
  * @returns True when `definition` is a branded Middleware.
39
39
  */
40
- export declare function isTaskMiddleware(definition: any): definition is ITaskMiddleware;
41
- export declare function isResourceMiddleware(definition: any): definition is IResourceMiddleware;
40
+ export declare function isTaskMiddleware(definition: unknown): definition is ITaskMiddleware;
41
+ export declare function isResourceMiddleware(definition: unknown): definition is IResourceMiddleware;
42
42
  /**
43
43
  * Type guard: checks if a definition is a Tag.
44
44
  * @param definition - Any value to test.
45
45
  * @returns True when `definition` is a branded Tag.
46
46
  */
47
- export declare function isTag(definition: any): definition is ITag;
47
+ export declare function isTag(definition: unknown): definition is ITag;
48
48
  /** Type guard: checks if a definition is an Optional Dependency wrapper. */
49
- export declare function isOptional(definition: any): definition is IOptionalDependency<any>;
49
+ export declare function isOptional(definition: unknown): definition is IOptionalDependency<any>;
50
50
  /** Type guard: checks if a definition is an Error helper. */
51
- export declare function isError(definition: any): definition is IErrorHelper<any>;
51
+ export declare function isError(definition: unknown): definition is IErrorHelper<any>;
52
52
  /** Type guard: checks if a definition is an Async Context. */
53
- export declare function isAsyncContext(definition: any): definition is IAsyncContext<any>;
53
+ export declare function isAsyncContext(definition: unknown): definition is IAsyncContext<any>;
@@ -0,0 +1,44 @@
1
+ export declare enum RunnerErrorId {
2
+ HttpBaseUrlRequired = "runner.errors.http.baseUrlRequired",
3
+ HttpFetchUnavailable = "runner.errors.http.fetchUnavailable",
4
+ HttpContextSerialization = "runner.errors.http.contextSerialization",
5
+ HttpEventWithResultUnavailable = "runner.errors.http.eventWithResultUnavailable",
6
+ HttpClientInputUnsupported = "runner.errors.http.clientInputUnsupported",
7
+ MiddlewareConcurrencyConflict = "runner.errors.middleware.concurrencyConflict",
8
+ MiddlewareContextRequired = "runner.errors.middleware.contextRequired",
9
+ MiddlewareTimeout = "runner.errors.middleware.timeout",
10
+ MiddlewareCircuitBreakerOpen = "runner.errors.middleware.circuitBreakerOpen",
11
+ MiddlewareRateLimitExceeded = "runner.errors.middleware.rateLimitExceeded",
12
+ MiddlewareTemporalDisposed = "runner.errors.middleware.temporalDisposed",
13
+ TunnelTaskNotFound = "runner.errors.middleware.tunnel.taskNotFound",
14
+ TunnelEventNotFound = "runner.errors.middleware.tunnel.eventNotFound",
15
+ TunnelClientContract = "runner.errors.middleware.tunnel.clientContract",
16
+ ResourceForkInvalidId = "runner.errors.resourceFork.invalidId",
17
+ BuilderInvalidHttpCode = "runner.errors.builder.invalidHttpCode",
18
+ OverrideUnsupportedBase = "runner.errors.override.unsupportedBase",
19
+ PlatformUnreachable = "runner.errors.platform.unreachable",
20
+ SerializerInvalidPayload = "runner.errors.serializer.invalidPayload",
21
+ SerializerValidation = "runner.errors.serializer.validation",
22
+ SerializerDepthExceeded = "runner.errors.serializer.depthExceeded",
23
+ SerializerReferenceResolution = "runner.errors.serializer.referenceResolution",
24
+ SerializerUnsupportedFeature = "runner.errors.serializer.unsupportedFeature",
25
+ SerializerTypeRegistry = "runner.errors.serializer.typeRegistry",
26
+ SerializerSymbolPolicy = "runner.errors.serializer.symbolPolicy",
27
+ NodeInputFileConsumed = "runner.errors.node.files.inputFileConsumed",
28
+ NodeInputFileUnavailable = "runner.errors.node.files.inputFileUnavailable",
29
+ NodeExposureMultipartLimitExceeded = "runner.errors.node.exposure.multipartLimitExceeded",
30
+ OptionalDependencyInvalidExport = "runner.errors.node.optionalDependency.invalidExport",
31
+ OptionalDependencyMissing = "runner.errors.node.optionalDependency.missing",
32
+ DurableStoreShape = "runner.errors.durable.storeShape",
33
+ DurableQueueNotInitialized = "runner.errors.durable.queueNotInitialized",
34
+ DurableContextCancelled = "runner.errors.durable.contextCancelled",
35
+ DurableStepDefinition = "runner.errors.durable.stepDefinition",
36
+ DurableDeterminismViolation = "runner.errors.durable.determinismViolation",
37
+ DurableSignalTimeout = "runner.errors.durable.signalTimeout",
38
+ DurableScheduleConfig = "runner.errors.durable.scheduleConfig",
39
+ DurableExecutionError = "runner.errors.durable.executionError",
40
+ DurableExecutionInvariant = "runner.errors.durable.executionInvariant",
41
+ DurableOperatorUnsupportedStoreCapability = "runner.errors.durable.operator.unsupportedStoreCapability",
42
+ DashboardApiRequest = "runner.errors.durable.dashboard.apiRequest",
43
+ LockableMapLocked = "runner.errors.tools.lockableMapLocked"
44
+ }