@bluelibs/runner 6.0.0 → 6.1.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 (40) hide show
  1. package/dist/browser/index.cjs +452 -249
  2. package/dist/browser/index.cjs.map +1 -1
  3. package/dist/browser/index.mjs +452 -249
  4. package/dist/browser/index.mjs.map +1 -1
  5. package/dist/edge/index.cjs +452 -249
  6. package/dist/edge/index.cjs.map +1 -1
  7. package/dist/edge/index.mjs +452 -249
  8. package/dist/edge/index.mjs.map +1 -1
  9. package/dist/node/node.cjs +4047 -3842
  10. package/dist/node/node.cjs.map +1 -1
  11. package/dist/node/node.mjs +4047 -3842
  12. package/dist/node/node.mjs.map +1 -1
  13. package/dist/types/definers/assertDefinitionId.d.ts +1 -0
  14. package/dist/types/definers/builders/resource/index.d.ts +1 -3
  15. package/dist/types/definers/builders/resource/types.d.ts +0 -1
  16. package/dist/types/errors/domain-error-ids.d.ts +0 -2
  17. package/dist/types/errors/domain-runtime.errors.d.ts +0 -6
  18. package/dist/types/globals/globalResources.d.ts +4 -4
  19. package/dist/types/globals/middleware/keyBuilder.shared.d.ts +2 -0
  20. package/dist/types/globals/middleware/rateLimit.middleware.d.ts +8 -2
  21. package/dist/types/globals/middleware/temporal.middleware.d.ts +7 -26
  22. package/dist/types/globals/middleware/temporal.shared.d.ts +28 -0
  23. package/dist/types/models/Store.d.ts +1 -1
  24. package/dist/types/models/StoreRegistry.d.ts +3 -0
  25. package/dist/types/models/createFrameworkRootGateway.d.ts +3 -1
  26. package/dist/types/models/store-registry/CanonicalIdCompiler.d.ts +8 -0
  27. package/dist/types/models/store-registry/OwnerScope.d.ts +5 -0
  28. package/dist/types/models/store-registry/StoreRegistryWriter.d.ts +6 -3
  29. package/dist/types/models/store-registry/registerableKind.d.ts +19 -0
  30. package/dist/types/node/node.d.ts +2 -2
  31. package/dist/types/node/rpc-lanes/rpcLanes.resource.d.ts +1 -0
  32. package/dist/types/public.d.ts +10 -189
  33. package/dist/types/types/resource.d.ts +0 -9
  34. package/dist/types/types/subtree.d.ts +4 -2
  35. package/dist/universal/index.cjs +452 -249
  36. package/dist/universal/index.cjs.map +1 -1
  37. package/dist/universal/index.mjs +452 -249
  38. package/dist/universal/index.mjs.map +1 -1
  39. package/package.json +1 -1
  40. package/readmes/AI.md +21 -18
@@ -2,4 +2,5 @@ export declare const RESERVED_DEFINITION_LOCAL_NAMES: readonly ["tasks", "events
2
2
  export declare function isReservedDefinitionLocalName(name: string): boolean;
3
3
  export declare function assertDefinitionId(definitionType: string, id: unknown, options?: {
4
4
  allowReservedDottedNamespace?: boolean;
5
+ allowReservedInternalId?: boolean;
5
6
  }): asserts id is string;
@@ -5,9 +5,7 @@ export * from "./types";
5
5
  /**
6
6
  * Creates a new resource builder with the given id.
7
7
  */
8
- export type ResourceBuilderOptions = {
9
- gateway?: boolean;
10
- };
8
+ export type ResourceBuilderOptions = {};
11
9
  export declare function resourceBuilder<TConfig = void>(id: string, options?: ResourceBuilderOptions): ResourceFluentBuilder<TConfig, Promise<any>, {}, any, IResourceMeta, ResourceTagType[], ResourceMiddlewareAttachmentType[]>;
12
10
  /**
13
11
  * Alias for resourceBuilder - common shorthand.
@@ -5,7 +5,6 @@ import type { ThrowsList } from "../../../types/error";
5
5
  */
6
6
  export type BuilderState<TConfig, TValue extends Promise<any>, TDeps extends DependencyMapType, TContext, TMeta extends IResourceMeta, TTags extends ResourceTagType[], TMiddleware extends ResourceMiddlewareAttachmentType[]> = Readonly<{
7
7
  id: string;
8
- gateway: boolean;
9
8
  filePath: string;
10
9
  dependencies?: TDeps | ((config: TConfig) => TDeps);
11
10
  register?: Array<RegisterableItems> | ((config: TConfig) => Array<RegisterableItems>);
@@ -18,8 +18,6 @@ export declare enum RunnerErrorId {
18
18
  RpcLaneOwnershipConflict = "runner.errors.rpcLane.ownershipConflict",
19
19
  RpcLaneExposureOwnerInvalid = "runner.errors.rpcLane.exposureOwnerInvalid",
20
20
  ResourceForkNonLeafUnsupported = "runner.errors.resourceFork.nonLeafUnsupported",
21
- ResourceForkGatewayUnsupported = "runner.errors.resourceFork.gatewayUnsupported",
22
- RunRootGatewayUnsupported = "runner.errors.run.rootGatewayUnsupported",
23
21
  BuilderInvalidHttpCode = "runner.errors.builder.invalidHttpCode",
24
22
  OverrideUnsupportedBase = "runner.errors.override.unsupportedBase",
25
23
  OverrideDefinitionRequired = "runner.errors.overrideDefinitionRequired",
@@ -103,12 +103,6 @@ export declare const remoteLaneAuthUnauthorizedError: import("..").IErrorHelper<
103
103
  export declare const resourceForkNonLeafUnsupportedError: import("..").IErrorHelper<{
104
104
  id: string;
105
105
  } & DefaultErrorType>;
106
- export declare const resourceForkGatewayUnsupportedError: import("..").IErrorHelper<{
107
- id: string;
108
- } & DefaultErrorType>;
109
- export declare const runRootGatewayUnsupportedError: import("..").IErrorHelper<{
110
- id: string;
111
- } & DefaultErrorType>;
112
106
  export declare const builderInvalidHttpCodeError: import("..").IErrorHelper<{
113
107
  value: number;
114
108
  } & DefaultErrorType>;
@@ -59,7 +59,7 @@ export declare const runnerResources: {
59
59
  description: string;
60
60
  }, import("..").ResourceTagType[], import("..").ResourceMiddlewareAttachmentType[]>;
61
61
  readonly rateLimit: import("..").IResource<void, Promise<{
62
- states: WeakMap<import("./types").RateLimitMiddlewareConfig, import("./types").RateLimitState>;
62
+ states: WeakMap<import("./types").RateLimitMiddlewareConfig, Map<string, import("./types").RateLimitState>>;
63
63
  }>, {}, any, any, import("..").ITag<{
64
64
  metadata?: Record<string, any>;
65
65
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
@@ -68,7 +68,7 @@ export declare const runnerResources: {
68
68
  }>, {}, any, any, import("..").ITag<{
69
69
  metadata?: Record<string, any>;
70
70
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
71
- readonly temporal: import("..").IResource<void, Promise<import("./middleware/temporal.middleware").TemporalResourceState>, {}, any, any, import("..").ITag<{
71
+ readonly temporal: import("..").IResource<void, Promise<import("./middleware/temporal.shared").TemporalResourceState<import("./types").TemporalMiddlewareConfig>>, {}, any, any, import("..").ITag<{
72
72
  metadata?: Record<string, any>;
73
73
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
74
74
  readonly concurrency: import("..").IResource<void, Promise<{
@@ -128,7 +128,7 @@ export declare const globalResources: {
128
128
  description: string;
129
129
  }, import("..").ResourceTagType[], import("..").ResourceMiddlewareAttachmentType[]>;
130
130
  readonly rateLimit: import("..").IResource<void, Promise<{
131
- states: WeakMap<import("./types").RateLimitMiddlewareConfig, import("./types").RateLimitState>;
131
+ states: WeakMap<import("./types").RateLimitMiddlewareConfig, Map<string, import("./types").RateLimitState>>;
132
132
  }>, {}, any, any, import("..").ITag<{
133
133
  metadata?: Record<string, any>;
134
134
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
@@ -137,7 +137,7 @@ export declare const globalResources: {
137
137
  }>, {}, any, any, import("..").ITag<{
138
138
  metadata?: Record<string, any>;
139
139
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
140
- readonly temporal: import("..").IResource<void, Promise<import("./middleware/temporal.middleware").TemporalResourceState>, {}, any, any, import("..").ITag<{
140
+ readonly temporal: import("..").IResource<void, Promise<import("./middleware/temporal.shared").TemporalResourceState<import("./types").TemporalMiddlewareConfig>>, {}, any, any, import("..").ITag<{
141
141
  metadata?: Record<string, any>;
142
142
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
143
143
  readonly concurrency: import("..").IResource<void, Promise<{
@@ -0,0 +1,2 @@
1
+ export type MiddlewareKeyBuilder = (taskId: string, input: unknown) => string;
2
+ export declare const defaultTaskKeyBuilder: MiddlewareKeyBuilder;
@@ -1,4 +1,5 @@
1
1
  import { RunnerError } from "../../definers/defineError";
2
+ import { type MiddlewareKeyBuilder } from "./keyBuilder.shared";
2
3
  export interface RateLimitMiddlewareConfig {
3
4
  /**
4
5
  * Time window in milliseconds
@@ -8,6 +9,11 @@ export interface RateLimitMiddlewareConfig {
8
9
  * Maximum number of requests within the window
9
10
  */
10
11
  max: number;
12
+ /**
13
+ * Builds the partition key used to isolate fixed-window counters.
14
+ * Defaults to the task id.
15
+ */
16
+ keyBuilder?: MiddlewareKeyBuilder;
11
17
  }
12
18
  /**
13
19
  * Custom error class for rate limit errors.
@@ -34,7 +40,7 @@ export declare const journalKeys: {
34
40
  readonly limit: import("../..").JournalKey<number>;
35
41
  };
36
42
  export declare const rateLimitResource: import("../..").IResource<void, Promise<{
37
- states: WeakMap<RateLimitMiddlewareConfig, RateLimitState>;
43
+ states: WeakMap<RateLimitMiddlewareConfig, Map<string, RateLimitState>>;
38
44
  }>, {}, any, any, import("../..").ITag<{
39
45
  metadata?: Record<string, any>;
40
46
  }, void, void, void>[], import("../..").ResourceMiddlewareAttachmentType[]>;
@@ -43,7 +49,7 @@ export declare const rateLimitResource: import("../..").IResource<void, Promise<
43
49
  */
44
50
  export declare const rateLimitTaskMiddleware: import("../..").ITaskMiddleware<RateLimitMiddlewareConfig, any, any, {
45
51
  state: import("../..").IResource<void, Promise<{
46
- states: WeakMap<RateLimitMiddlewareConfig, RateLimitState>;
52
+ states: WeakMap<RateLimitMiddlewareConfig, Map<string, RateLimitState>>;
47
53
  }>, {}, any, any, import("../..").ITag<{
48
54
  metadata?: Record<string, any>;
49
55
  }, void, void, void>[], import("../..").ResourceMiddlewareAttachmentType[]>;
@@ -1,38 +1,20 @@
1
+ import { type MiddlewareKeyBuilder } from "./keyBuilder.shared";
2
+ import { type TemporalResourceState } from "./temporal.shared";
1
3
  export interface TemporalMiddlewareConfig {
2
4
  ms: number;
5
+ keyBuilder?: MiddlewareKeyBuilder;
3
6
  }
4
- type TimeoutHandle = ReturnType<typeof setTimeout>;
5
- export interface DebounceState {
6
- timeoutId?: TimeoutHandle;
7
- latestInput?: unknown;
8
- resolveList: ((value: unknown) => void)[];
9
- rejectList: ((error: unknown) => void)[];
10
- }
11
- export interface ThrottleState {
12
- lastExecution: number;
13
- timeoutId?: TimeoutHandle;
14
- latestInput?: unknown;
15
- resolveList: ((value: unknown) => void)[];
16
- rejectList: ((error: unknown) => void)[];
17
- currentPromise?: Promise<unknown>;
18
- }
19
- export interface TemporalResourceState {
20
- debounceStates: WeakMap<TemporalMiddlewareConfig, DebounceState>;
21
- throttleStates: WeakMap<TemporalMiddlewareConfig, ThrottleState>;
22
- trackedDebounceStates: Set<DebounceState>;
23
- trackedThrottleStates: Set<ThrottleState>;
24
- isDisposed: boolean;
25
- }
26
- export declare const temporalResource: import("../..").IResource<void, Promise<TemporalResourceState>, {}, any, any, import("../..").ITag<{
7
+ export declare const temporalResource: import("../..").IResource<void, Promise<TemporalResourceState<TemporalMiddlewareConfig>>, {}, any, any, import("../..").ITag<{
27
8
  metadata?: Record<string, any>;
28
9
  }, void, void, void>[], import("../..").ResourceMiddlewareAttachmentType[]>;
10
+ export type { DebounceState, ThrottleState, TemporalResourceState, } from "./temporal.shared";
29
11
  /**
30
12
  * Debounce middleware: delays execution until `ms` has passed since the last call.
31
13
  * If multiple calls occur within the window, only the last one is executed,
32
14
  * and all callers receive the same result.
33
15
  */
34
16
  export declare const debounceTaskMiddleware: import("../..").ITaskMiddleware<TemporalMiddlewareConfig, any, any, {
35
- state: import("../..").IResource<void, Promise<TemporalResourceState>, {}, any, any, import("../..").ITag<{
17
+ state: import("../..").IResource<void, Promise<TemporalResourceState<TemporalMiddlewareConfig>>, {}, any, any, import("../..").ITag<{
36
18
  metadata?: Record<string, any>;
37
19
  }, void, void, void>[], import("../..").ResourceMiddlewareAttachmentType[]>;
38
20
  }>;
@@ -41,8 +23,7 @@ export declare const debounceTaskMiddleware: import("../..").ITaskMiddleware<Tem
41
23
  * If calls occur within the window, the last one is scheduled for the end of the window.
42
24
  */
43
25
  export declare const throttleTaskMiddleware: import("../..").ITaskMiddleware<TemporalMiddlewareConfig, any, any, {
44
- state: import("../..").IResource<void, Promise<TemporalResourceState>, {}, any, any, import("../..").ITag<{
26
+ state: import("../..").IResource<void, Promise<TemporalResourceState<TemporalMiddlewareConfig>>, {}, any, any, import("../..").ITag<{
45
27
  metadata?: Record<string, any>;
46
28
  }, void, void, void>[], import("../..").ResourceMiddlewareAttachmentType[]>;
47
29
  }>;
48
- export {};
@@ -0,0 +1,28 @@
1
+ type TimeoutHandle = ReturnType<typeof setTimeout>;
2
+ export interface DebounceState {
3
+ timeoutId?: TimeoutHandle;
4
+ latestInput?: unknown;
5
+ resolveList: ((value: unknown) => void)[];
6
+ rejectList: ((error: unknown) => void)[];
7
+ key: string;
8
+ }
9
+ export interface ThrottleState {
10
+ lastExecution: number;
11
+ timeoutId?: TimeoutHandle;
12
+ latestInput?: unknown;
13
+ resolveList: ((value: unknown) => void)[];
14
+ rejectList: ((error: unknown) => void)[];
15
+ currentPromise?: Promise<unknown>;
16
+ key: string;
17
+ }
18
+ export interface TemporalResourceState<TConfig extends object = object> {
19
+ debounceStates: WeakMap<TConfig, Map<string, DebounceState>>;
20
+ throttleStates: WeakMap<TConfig, Map<string, ThrottleState>>;
21
+ trackedDebounceStates: Set<DebounceState>;
22
+ trackedThrottleStates: Set<ThrottleState>;
23
+ isDisposed: boolean;
24
+ }
25
+ export declare function rejectDebounceState(state: DebounceState, error: Error): void;
26
+ export declare function rejectThrottleState(state: ThrottleState, error: Error): void;
27
+ export declare function pruneIdleThrottleStates(keyedStates: Map<string, ThrottleState>, trackedStates: Set<ThrottleState>, now: number, windowMs: number): void;
28
+ export {};
@@ -1,4 +1,4 @@
1
- import { IResource, RegisterableItems, ITag, TagDependencyAccessor } from "../defs";
1
+ import { IResource, ITag, RegisterableItems, TagDependencyAccessor } from "../defs";
2
2
  import { EventManager } from "./EventManager";
3
3
  import { Logger } from "./Logger";
4
4
  import { ResourceStoreElementType, TaskStoreElementType, EventStoreElementType, DisposeWave, InitWave } from "../types/storeTypes";
@@ -22,6 +22,7 @@ export declare class StoreRegistry {
22
22
  private readonly definitionIdentityAliases;
23
23
  private readonly definitionAliasesBySourceId;
24
24
  private readonly sourceIdsByCanonicalId;
25
+ private readonly displayIdsByCanonicalId;
25
26
  readonly tagIndex: Map<string, TagIndexBucket>;
26
27
  private readonly validator;
27
28
  private readonly tagIndexer;
@@ -35,6 +36,8 @@ export declare class StoreRegistry {
35
36
  private recordCanonicalSourceId;
36
37
  private resolveUniqueSourceIdAlias;
37
38
  getDisplayId(id: string): string;
39
+ private stripFrameworkRootPrefix;
40
+ private computeAndStoreDisplayId;
38
41
  /** Lock every map in the registry, preventing further mutations. */
39
42
  lockAll(): void;
40
43
  storeGenericItem<_C>(item: RegisterableItems): void;
@@ -2,9 +2,11 @@ import type { IResource, IResourceWithConfig } from "../defs";
2
2
  import type { DebugFriendlyConfig } from "../globals/resources/debug";
3
3
  export declare const FRAMEWORK_RUNNER_RESOURCE_ID = "runner";
4
4
  export declare const FRAMEWORK_SYSTEM_RESOURCE_ID = "system";
5
+ export declare const FRAMEWORK_ROOT_RESOURCE_ID = "runtime-framework-root";
5
6
  type FrameworkRootInput = {
6
7
  rootItem: IResource<any, any, any, any, any> | IResourceWithConfig<any, any>;
7
8
  debug: DebugFriendlyConfig | undefined;
8
9
  };
9
- export declare function createFrameworkRootGateway({ rootItem, debug, }: FrameworkRootInput): IResource<void, Promise<void>>;
10
+ export declare function createFrameworkRootResource({ rootItem, debug, }: FrameworkRootInput): IResource<void, Promise<void>>;
11
+ export declare const createFrameworkRootGateway: typeof createFrameworkRootResource;
10
12
  export {};
@@ -0,0 +1,8 @@
1
+ import { RegisterableKind } from "./registerableKind";
2
+ import type { OwnerScope } from "./OwnerScope";
3
+ export declare class CanonicalIdCompiler {
4
+ compute(ownerScope: OwnerScope, kind: Exclude<RegisterableKind, RegisterableKind.ResourceWithConfig>, currentId: string): string;
5
+ private computeFrameworkRootId;
6
+ private computeOwnedId;
7
+ private assertLocalName;
8
+ }
@@ -0,0 +1,5 @@
1
+ export type OwnerScope = Readonly<{
2
+ resourceId: string;
3
+ usesFrameworkRootIds: boolean;
4
+ }>;
5
+ export declare function createOwnerScope(resourceId: string): OwnerScope;
@@ -3,6 +3,7 @@ import { IAsyncContext } from "../../types/asyncContext";
3
3
  import { IErrorHelper } from "../../types/error";
4
4
  import { VisibilityTracker } from "../VisibilityTracker";
5
5
  import { StoreRegistryDefinitionPreparer } from "./StoreRegistryDefinitionPreparer";
6
+ import { RegisterableKind } from "./registerableKind";
6
7
  import { StoreRegistryTagIndex } from "./StoreRegistryTagIndex";
7
8
  import { StoringMode } from "./types";
8
9
  type StoreRegistryCollections = {
@@ -31,6 +32,7 @@ export declare class StoreRegistryWriter {
31
32
  private readonly tagIndex;
32
33
  private readonly definitionPreparer;
33
34
  private readonly aliasResolver;
35
+ private readonly canonicalIdCompiler;
34
36
  constructor(collections: StoreRegistryCollections, validator: StoreRegistryValidation, visibilityTracker: VisibilityTracker, tagIndex: StoreRegistryTagIndex, definitionPreparer: StoreRegistryDefinitionPreparer, aliasResolver: StoreRegistryAliasResolver);
35
37
  storeGenericItem<_C>(item: RegisterableItems): void;
36
38
  storeError<_C>(item: IErrorHelper<any>): void;
@@ -44,11 +46,11 @@ export declare class StoreRegistryWriter {
44
46
  computeRegistrationDeeply<_C>(element: IResource<_C>, config?: _C): void;
45
47
  private assignNormalizedRegisterEntries;
46
48
  private compileOwnedItem;
47
- private compileOwnedDefinition;
49
+ private compileOwnedDefinitionWithScope;
50
+ computeCanonicalId(ownerResourceId: string, ownerUsesFrameworkRootIds: boolean, kind: Exclude<RegisterableKind, RegisterableKind.ResourceWithConfig>, currentId: string): string;
51
+ compileOwnedDefinition(ownerResourceId: string, ownerUsesFrameworkRootIds: boolean, item: RegisterableItems, kind: Exclude<RegisterableKind, RegisterableKind.ResourceWithConfig>): RegisterableItems;
48
52
  private cloneDefinitionWithId;
49
53
  private assignClonedDefinitionId;
50
- private computeCanonicalId;
51
- private assertLocalName;
52
54
  private resolveRegisterableId;
53
55
  storeResource<_C>(item: IResource<any, any, any>, overrideMode?: StoringMode): AnyResource;
54
56
  storeTask<_C>(item: ITask<any, any, {}>, storingMode?: StoringMode): void;
@@ -62,6 +64,7 @@ export declare class StoreRegistryWriter {
62
64
  private normalizeMiddlewareAttachment;
63
65
  private resolveOwnerResourceIdFromTaskId;
64
66
  private didArrayChange;
67
+ private normalizeOwnerScopeArg;
65
68
  private normalizeDefinitionTags;
66
69
  }
67
70
  export {};
@@ -0,0 +1,19 @@
1
+ import { RegisterableItems } from "../../defs";
2
+ export declare enum RegisterableKind {
3
+ Task = "task",
4
+ Error = "error",
5
+ Hook = "hook",
6
+ Resource = "resource",
7
+ Event = "event",
8
+ AsyncContext = "asyncContext",
9
+ TaskMiddleware = "taskMiddleware",
10
+ ResourceMiddleware = "resourceMiddleware",
11
+ ResourceWithConfig = "resourceWithConfig",
12
+ Tag = "tag"
13
+ }
14
+ /**
15
+ * Shared registerable classification used by both registration and validation
16
+ * paths so new definition kinds cannot drift between those code paths.
17
+ */
18
+ export declare function resolveRegisterableKind(item: RegisterableItems): RegisterableKind | null;
19
+ export declare function describeRegisterableKind(kind: RegisterableKind | null): string;
@@ -68,7 +68,7 @@ export declare const resources: Readonly<{
68
68
  description: string;
69
69
  }, import("..").ResourceTagType[], import("..").ResourceMiddlewareAttachmentType[]>;
70
70
  rateLimit: import("..").IResource<void, Promise<{
71
- states: WeakMap<import("..").RateLimitMiddlewareConfig, import("..").RateLimitState>;
71
+ states: WeakMap<import("..").RateLimitMiddlewareConfig, Map<string, import("..").RateLimitState>>;
72
72
  }>, {}, any, any, import("..").ITag<{
73
73
  metadata?: Record<string, any>;
74
74
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
@@ -77,7 +77,7 @@ export declare const resources: Readonly<{
77
77
  }>, {}, any, any, import("..").ITag<{
78
78
  metadata?: Record<string, any>;
79
79
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
80
- temporal: import("..").IResource<void, Promise<import("../globals/middleware/temporal.middleware").TemporalResourceState>, {}, any, any, import("..").ITag<{
80
+ temporal: import("..").IResource<void, Promise<import("../globals/middleware/temporal.shared").TemporalResourceState<import("..").TemporalMiddlewareConfig>>, {}, any, any, import("..").ITag<{
81
81
  metadata?: Record<string, any>;
82
82
  }, void, void, void>[], import("..").ResourceMiddlewareAttachmentType[]>;
83
83
  concurrency: import("..").IResource<void, Promise<{
@@ -1,2 +1,3 @@
1
1
  import type { RpcLanesResourceConfig, RpcLanesResourceValue } from "./types";
2
+ export declare const RPC_LANES_RESOURCE_ID = "runner.node.rpcLanes";
2
3
  export declare const rpcLanesResource: import("../..").IResource<RpcLanesResourceConfig<import("./types").RpcLanesTopology, string>, Promise<RpcLanesResourceValue>, {}, any, any, import("../..").ResourceTagType[], import("../..").ResourceMiddlewareAttachmentType[]>;
@@ -1,201 +1,22 @@
1
1
  import { defineTask, defineResource, defineEvent, defineEventLane, defineRpcLane, defineTaskMiddleware, defineResourceMiddleware, defineOverride, defineTag, defineHook, isTask, isResource, isResourceWithConfig, isEvent, isEventLane, isRpcLane, isHook, isTaskMiddleware, isResourceMiddleware, isTag, isTagStartup, isOptional, isError, isAsyncContext, isOverrideDefinition, isSubtreeFilter, isIsolationScope } from "./define";
2
2
  import { defineAsyncContext } from "./definers/defineAsyncContext";
3
+ import { globalEvents } from "./globals/globalEvents";
4
+ import { globalResources } from "./globals/globalResources";
5
+ import { globalMiddlewares } from "./globals/globalMiddleware";
6
+ import { globalTags } from "./globals/globalTags";
7
+ import { debug as globalDebug } from "./globals/debug";
3
8
  import { run } from "./run";
4
9
  import { onAnyOf, isOneOf } from "./types/event";
5
10
  import { subtreeOf as subtreeOfFn } from "./tools/subtreeOf";
6
11
  import { scope as scopeFn } from "./tools/scope";
7
12
  import { isSameDefinition } from "./tools/isSameDefinition";
8
13
  import { asyncContexts } from "./asyncContexts";
9
- export declare const resources: Readonly<{
10
- health: import("./defs").IResource<void, Promise<import("./defs").IHealthReporter>, {
11
- store: typeof import("./globals/globalResources").store;
12
- }, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
13
- timers: import("./defs").IResource<void, Promise<import("./public-types").ITimers>, {
14
- store: typeof import("./globals/globalResources").store;
15
- }, {
16
- controller?: import("./models").RuntimeTimers;
17
- }, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
18
- logger: import("./defs").IResource<void, Promise<import("./models").Logger>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
19
- debug: import("./defs").IResource<import("./public").DebugFriendlyConfig, Promise<any>, {}, any, {
20
- title: string;
21
- description: string;
22
- }, import("./defs").ITag<{
23
- metadata?: Record<string, any>;
24
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
25
- serializer: import("./defs").IResource<void, Promise<import("./serializer").SerializerLike>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
26
- cacheProvider: import("./defs").IResource<void, Promise<import("./globals/middleware/cache.shared").CacheProvider>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
27
- cache: import("./defs").IResource<import("./public").CacheResourceConfig, Promise<{
28
- map: Map<string, import("./defs").ICacheProvider>;
29
- pendingCreates: Map<string, Promise<import("./defs").ICacheProvider>>;
30
- cacheProvider: import("./globals/middleware/cache.shared").CacheProvider;
31
- totalBudgetBytes?: number;
32
- sharedBudget?: import("./globals/middleware/cache.shared").SharedCacheBudgetState;
33
- defaultOptions: import("./globals/middleware/cache.shared").CacheFactoryOptions;
34
- }>, {
35
- cacheProvider: typeof import("./globals/middleware/cache.middleware").cacheProviderResource;
36
- }, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
37
- cron: import("./defs").IResource<import("./public").CronResourceConfig, Promise<import("./public").CronResourceValue>, import("./defs").DependencyMapType & {
38
- cron: typeof import("./globals/cron/cron.tag").cronTag;
39
- logger: typeof import("./globals/resources/logger.resource").loggerResource;
40
- store: typeof import("./globals/globalResources").store;
41
- taskRunner: typeof import("./globals/resources/taskRunner.resource").taskRunnerResource;
42
- }, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
43
- queue: import("./defs").IResource<void, Promise<{
44
- map: any;
45
- run: <T>(id: string, task: (signal: AbortSignal) => Promise<T>) => Promise<T>;
46
- }>, {}, {
47
- disposed: boolean;
48
- map: Map<string, import("./models").Queue>;
49
- cleanupTimers: Map<string, NodeJS.Timeout>;
50
- }, {
51
- title: string;
52
- description: string;
53
- }, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
54
- rateLimit: import("./defs").IResource<void, Promise<{
55
- states: WeakMap<import("./public").RateLimitMiddlewareConfig, import("./public").RateLimitState>;
56
- }>, {}, any, any, import("./defs").ITag<{
57
- metadata?: Record<string, any>;
58
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
59
- circuitBreaker: import("./defs").IResource<void, Promise<{
60
- statusMap: Map<string, import("./public").CircuitBreakerStatus>;
61
- }>, {}, any, any, import("./defs").ITag<{
62
- metadata?: Record<string, any>;
63
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
64
- temporal: import("./defs").IResource<void, Promise<import("./globals/middleware/temporal.middleware").TemporalResourceState>, {}, any, any, import("./defs").ITag<{
65
- metadata?: Record<string, any>;
66
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
67
- concurrency: import("./defs").IResource<void, Promise<{
68
- semaphoresByConfig: WeakMap<import("./public").ConcurrencyMiddlewareConfig, import("./models").Semaphore>;
69
- semaphoresByKey: Map<string, {
70
- semaphore: import("./models").Semaphore;
71
- limit: number;
72
- }>;
73
- semaphores: Set<import("./models").Semaphore>;
74
- }>, {}, any, any, import("./defs").ITag<{
75
- metadata?: Record<string, any>;
76
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
77
- store: import("./defs").IResource<void, Promise<import("./models").Store>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
78
- middlewareManager: import("./defs").IResource<void, Promise<import("./models").MiddlewareManager>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
79
- eventManager: import("./defs").IResource<void, Promise<import("./models").EventManager>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
80
- taskRunner: import("./defs").IResource<void, Promise<import("./models").TaskRunner>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
81
- runtime: import("./defs").IResource<void, Promise<import("./models").RunResult<unknown>>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
82
- }>;
83
- export declare const events: Readonly<{
84
- ready: import("./defs").IEvent<void> & {
85
- parallel?: boolean | undefined;
86
- transactional?: boolean | undefined;
87
- };
88
- disposing: import("./defs").IEvent<void> & {
89
- parallel?: boolean | undefined;
90
- transactional?: boolean | undefined;
91
- };
92
- drained: import("./defs").IEvent<void> & {
93
- parallel?: boolean | undefined;
94
- transactional?: boolean | undefined;
95
- };
96
- }>;
97
- export declare const middleware: Readonly<{
98
- requireContext: typeof import("./globals/middleware/requireContext.middleware").requireContextTaskMiddleware;
99
- task: {
100
- requireContext: typeof import("./globals/middleware/requireContext.middleware").requireContextTaskMiddleware;
101
- cache: import("./defs").ITaskMiddleware<import("./globals/middleware/cache.shared").CacheFactoryOptions & {
102
- keyBuilder?: (taskId: string, input: unknown) => string;
103
- }, any, any, {
104
- cache: import("./defs").IResource<import("./public").CacheResourceConfig, Promise<{
105
- map: Map<string, import("./defs").ICacheProvider>;
106
- pendingCreates: Map<string, Promise<import("./defs").ICacheProvider>>;
107
- cacheProvider: import("./globals/middleware/cache.shared").CacheProvider;
108
- totalBudgetBytes?: number;
109
- sharedBudget?: import("./globals/middleware/cache.shared").SharedCacheBudgetState;
110
- defaultOptions: import("./globals/middleware/cache.shared").CacheFactoryOptions;
111
- }>, {
112
- cacheProvider: typeof import("./globals/middleware/cache.middleware").cacheProviderResource;
113
- }, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
114
- logger: import("./defs").IOptionalDependency<import("./defs").IResource<void, Promise<import("./models").Logger>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>>;
115
- }> & {
116
- journalKeys: {
117
- readonly hit: import("./public-types").JournalKey<boolean>;
118
- };
119
- };
120
- concurrency: typeof import("./globals/middleware/concurrency.middleware").concurrencyTaskMiddleware;
121
- debounce: typeof import("./globals/middleware/temporal.middleware").debounceTaskMiddleware;
122
- throttle: typeof import("./globals/middleware/temporal.middleware").throttleTaskMiddleware;
123
- fallback: import("./defs").ITaskMiddleware<import("./public").FallbackMiddlewareConfig, any, any, {
124
- taskRunner: import("./defs").IResource<void, Promise<import("./models").TaskRunner>, {}, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>;
125
- }> & {
126
- journalKeys: {
127
- readonly active: import("./public-types").JournalKey<boolean>;
128
- readonly error: import("./public-types").JournalKey<Error>;
129
- };
130
- };
131
- rateLimit: import("./defs").ITaskMiddleware<import("./public").RateLimitMiddlewareConfig, any, any, {
132
- state: import("./defs").IResource<void, Promise<{
133
- states: WeakMap<import("./public").RateLimitMiddlewareConfig, import("./public").RateLimitState>;
134
- }>, {}, any, any, import("./defs").ITag<{
135
- metadata?: Record<string, any>;
136
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
137
- }> & {
138
- journalKeys: {
139
- readonly remaining: import("./public-types").JournalKey<number>;
140
- readonly resetTime: import("./public-types").JournalKey<number>;
141
- readonly limit: import("./public-types").JournalKey<number>;
142
- };
143
- };
144
- retry: import("./defs").ITaskMiddleware<import("./public").RetryMiddlewareConfig, any, any, any> & {
145
- journalKeys: {
146
- readonly attempt: import("./public-types").JournalKey<number>;
147
- readonly lastError: import("./public-types").JournalKey<Error>;
148
- };
149
- };
150
- timeout: import("./defs").ITaskMiddleware<import("./public").TimeoutMiddlewareConfig, any, any, any> & {
151
- journalKeys: {
152
- readonly abortController: import("./public-types").JournalKey<AbortController>;
153
- };
154
- };
155
- circuitBreaker: import("./defs").ITaskMiddleware<import("./public").CircuitBreakerMiddlewareConfig, any, any, {
156
- state: import("./defs").IResource<void, Promise<{
157
- statusMap: Map<string, import("./public").CircuitBreakerStatus>;
158
- }>, {}, any, any, import("./defs").ITag<{
159
- metadata?: Record<string, any>;
160
- }, void, void, void>[], import("./defs").ResourceMiddlewareAttachmentType[]>;
161
- }> & {
162
- journalKeys: {
163
- readonly state: import("./public-types").JournalKey<import("./public").CircuitBreakerState>;
164
- readonly failures: import("./public-types").JournalKey<number>;
165
- };
166
- };
167
- };
168
- resource: {
169
- retry: typeof import("./globals/middleware/retry.middleware").retryResourceMiddleware;
170
- timeout: typeof import("./globals/middleware/timeout.middleware").timeoutResourceMiddleware;
171
- };
172
- }>;
173
- export declare const tags: Readonly<{
174
- system: import("./defs").ITag<{
175
- metadata?: Record<string, any>;
176
- }, void, void, void>;
177
- excludeFromGlobalHooks: import("./defs").ITag<{
178
- metadata?: Record<string, any>;
179
- }, void, void, void>;
180
- eventLane: import("./defs").ITag<{
181
- lane: import("./defs").IEventLaneDefinition;
182
- }, void, void, void>;
183
- rpcLane: import("./defs").ITag<{
184
- lane: import("./defs").IRpcLaneDefinition;
185
- }, void, void, void>;
186
- rpcLanes: import("./defs").ITag<{
187
- metadata?: Record<string, any>;
188
- }, void, void, void>;
189
- debug: import("./defs").ITag<import("./public").DebugFriendlyConfig, void, void, void>;
190
- cron: import("./defs").ITag<import("./public").CronTagConfig, void, void, void>;
191
- authValidator: import("./defs").ITag<void, void, void, void>;
192
- failWhenUnhealthy: import("./defs").ITag<readonly (string | import("./defs").IResource<any, any, any, any, any, import("./defs").ResourceTagType[], import("./defs").ResourceMiddlewareAttachmentType[]>)[], void, void, void>;
193
- }>;
14
+ export declare const resources: Readonly<typeof globalResources>;
15
+ export declare const events: Readonly<typeof globalEvents>;
16
+ export declare const middleware: Readonly<typeof globalMiddlewares>;
17
+ export declare const tags: Readonly<typeof globalTags>;
194
18
  export declare const debug: Readonly<{
195
- levels: {
196
- normal: import("./public").DebugConfig;
197
- verbose: import("./public").DebugConfig;
198
- };
19
+ levels: typeof globalDebug.levels;
199
20
  }>;
200
21
  export { defineTask, defineResource, defineEvent, defineEventLane, defineRpcLane, defineTaskMiddleware, defineResourceMiddleware, defineAsyncContext, defineTag, defineOverride, defineHook, isTask, isResource, isResourceWithConfig, isEvent, isEventLane, isRpcLane, isHook, isTaskMiddleware, isResourceMiddleware, isTag, isTagStartup, isOptional, isError, isAsyncContext, isOverrideDefinition, isSubtreeFilter, isIsolationScope, run, onAnyOf, isOneOf, isSameDefinition, subtreeOfFn as subtreeOf, scopeFn as scope, asyncContexts, };
201
22
  /**
@@ -228,11 +228,6 @@ export interface IResourceDefinition<TConfig = any, TValue extends Promise<any>
228
228
  [symbolResourceSubtreeDeclarations]?: ReadonlyArray<ResourceSubtreePolicyDeclaration<TConfig>>;
229
229
  /** @internal Ordered isolate declarations preserved across builder composition. */
230
230
  [symbolResourceIsolateDeclarations]?: ReadonlyArray<IsolationPolicyDeclaration<TConfig>>;
231
- /**
232
- * When true, this resource acts as a namespace gateway and does not add its
233
- * own id prefix when compiling ids for items in its register tree.
234
- */
235
- gateway?: boolean;
236
231
  tags?: TTags;
237
232
  }
238
233
  /**
@@ -270,10 +265,6 @@ export interface IResource<TConfig = void, TValue extends Promise<any> = Promise
270
265
  [symbolResourceSubtreeDeclarations]?: ReadonlyArray<ResourceSubtreePolicyDeclaration<TConfig>>;
271
266
  /** @internal Ordered isolate declarations preserved across builder composition. */
272
267
  [symbolResourceIsolateDeclarations]?: ReadonlyArray<IsolationPolicyDeclaration<TConfig>>;
273
- /**
274
- * Namespace gateway flag copied from the definition.
275
- */
276
- gateway?: boolean;
277
268
  /** Return an optional dependency wrapper for this resource. */
278
269
  optional: () => IOptionalDependency<IResource<TConfig, TValue, TDependencies, TContext, TMeta, TTags, TMiddleware>>;
279
270
  tags: TTags;
@@ -100,8 +100,10 @@ export type NormalizedResourceSubtreePolicy = {
100
100
  export type SubtreePolicyOptions = {
101
101
  override?: boolean;
102
102
  };
103
- export type ResourceSubtreePolicyResolver<TConfig = unknown> = (config: TConfig) => ResourceSubtreePolicy;
104
- export type ResourceSubtreePolicyInput<TConfig = unknown> = ResourceSubtreePolicy | ResourceSubtreePolicyResolver<TConfig>;
103
+ export type ResourceSubtreePolicyValue = ResourceSubtreePolicy;
104
+ export type ResourceSubtreePolicyList = ResourceSubtreePolicyValue | ResourceSubtreePolicyValue[];
105
+ export type ResourceSubtreePolicyResolver<TConfig = unknown> = (config: TConfig) => ResourceSubtreePolicyList;
106
+ export type ResourceSubtreePolicyInput<TConfig = unknown> = ResourceSubtreePolicyList | ResourceSubtreePolicyResolver<TConfig>;
105
107
  export type ResourceSubtreePolicyDeclaration<TConfig = unknown> = {
106
108
  policy: ResourceSubtreePolicyInput<TConfig>;
107
109
  options?: SubtreePolicyOptions;