@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.
- package/README.md +23 -22
- package/dist/browser/index.cjs +6159 -3049
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +6157 -3046
- package/dist/browser/index.mjs.map +1 -1
- package/dist/edge/index.cjs +6159 -3049
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.mjs +6157 -3046
- package/dist/edge/index.mjs.map +1 -1
- package/dist/node/node.cjs +10843 -10814
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +10801 -10770
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/definers/builders/asyncContext/fluent-builder.interface.d.ts +4 -0
- package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +8 -1
- package/dist/types/definers/builders/error/index.d.ts +1 -0
- package/dist/types/definers/builders/error/types.d.ts +2 -1
- package/dist/types/definers/builders/error/utils.d.ts +1 -0
- package/dist/types/definers/builders/event/fluent-builder.interface.d.ts +10 -0
- package/dist/types/definers/builders/event/utils.d.ts +1 -4
- package/dist/types/definers/builders/hook/fluent-builder.interface.d.ts +3 -0
- package/dist/types/definers/builders/hook/types.d.ts +3 -0
- package/dist/types/definers/builders/hook/utils.d.ts +1 -4
- package/dist/types/definers/builders/middleware/index.d.ts +4 -2
- package/dist/types/definers/builders/middleware/resource.interface.d.ts +7 -0
- package/dist/types/definers/builders/middleware/task.interface.d.ts +7 -0
- package/dist/types/definers/builders/middleware/types.d.ts +22 -3
- package/dist/types/definers/builders/middleware/utils.d.ts +3 -4
- package/dist/types/definers/builders/override/hook.d.ts +3 -0
- package/dist/types/definers/builders/override/index.d.ts +5 -0
- package/dist/types/definers/builders/resource/fluent-builder.interface.d.ts +15 -0
- package/dist/types/definers/builders/resource/index.d.ts +0 -1
- package/dist/types/definers/builders/resource/types.d.ts +1 -0
- package/dist/types/definers/builders/resource/utils.d.ts +1 -4
- package/dist/types/definers/builders/shared/mergeUtils.d.ts +5 -0
- package/dist/types/definers/builders/tag/fluent-builder.interface.d.ts +4 -0
- package/dist/types/definers/builders/tag/utils.d.ts +1 -0
- package/dist/types/definers/builders/task/fluent-builder.interface.d.ts +4 -0
- package/dist/types/definers/builders/task/index.d.ts +2 -2
- package/dist/types/definers/builders/task/utils.d.ts +1 -4
- package/dist/types/definers/builders/utils.d.ts +7 -2
- package/dist/types/definers/defineError.d.ts +12 -2
- package/dist/types/definers/resourceFork.d.ts +3 -1
- package/dist/types/definers/tools.d.ts +12 -12
- package/dist/types/errors/domain-error-ids.d.ts +44 -0
- package/dist/types/errors/domain-runtime.errors.d.ts +136 -0
- package/dist/types/errors/foundation.errors.d.ts +125 -0
- package/dist/types/errors/generic.errors.d.ts +1 -0
- package/dist/types/errors/model-runtime.errors.d.ts +20 -0
- package/dist/types/errors.d.ts +5 -74
- package/dist/types/globals/cron/cron-parser.d.ts +4 -0
- package/dist/types/globals/cron/cron.errors.d.ts +8 -0
- package/dist/types/globals/cron/cron.resource.d.ts +12 -0
- package/dist/types/globals/cron/cron.tag.d.ts +2 -0
- package/dist/types/globals/cron/types.d.ts +25 -0
- package/dist/types/globals/globalMiddleware.d.ts +87 -13
- package/dist/types/globals/globalResources.d.ts +110 -24
- package/dist/types/globals/globalTags.d.ts +10 -2
- package/dist/types/globals/middleware/cache.middleware.d.ts +173 -13
- package/dist/types/globals/middleware/circuitBreaker.middleware.d.ts +5 -1
- package/dist/types/globals/middleware/concurrency.middleware.d.ts +3 -0
- package/dist/types/globals/middleware/fallback.middleware.d.ts +8 -1
- package/dist/types/globals/middleware/rateLimit.middleware.d.ts +4 -1
- package/dist/types/globals/middleware/retry.middleware.d.ts +5 -0
- package/dist/types/globals/middleware/temporal.middleware.d.ts +19 -19
- package/dist/types/globals/middleware/timeout.middleware.d.ts +4 -1
- package/dist/types/globals/resources/eventManager.resource.d.ts +2 -0
- package/dist/types/globals/resources/logger.resource.d.ts +2 -0
- package/dist/types/globals/resources/middlewareManager.resource.d.ts +2 -0
- package/dist/types/globals/resources/queue.resource.d.ts +2 -0
- package/dist/types/globals/resources/runtime.resource.d.ts +2 -0
- package/dist/types/globals/resources/serializer.resource.d.ts +2 -0
- package/dist/types/globals/resources/store.resource.d.ts +2 -0
- package/dist/types/globals/resources/taskRunner.resource.d.ts +2 -0
- package/dist/types/globals/resources/tunnel/plan.d.ts +6 -3
- package/dist/types/globals/resources/tunnel/tunnel.policy.tag.d.ts +2 -0
- package/dist/types/globals/resources/tunnel/types.d.ts +7 -2
- package/dist/types/globals/types.d.ts +6 -1
- package/dist/types/models/BuiltinsRegistry.d.ts +2 -0
- package/dist/types/models/DependencyProcessor.d.ts +27 -6
- package/dist/types/models/EventManager.d.ts +9 -9
- package/dist/types/models/LogPrinter.d.ts +5 -5
- package/dist/types/models/Logger.d.ts +16 -16
- package/dist/types/models/MiddlewareManager.d.ts +20 -2
- package/dist/types/models/OverrideManager.d.ts +4 -1
- package/dist/types/models/Queue.d.ts +2 -0
- package/dist/types/models/RunResult.d.ts +290 -26
- package/dist/types/models/Store.d.ts +29 -12
- package/dist/types/models/StoreRegistry.d.ts +16 -13
- package/dist/types/models/StoreValidator.d.ts +2 -0
- package/dist/types/models/TaskRunner.d.ts +3 -1
- package/dist/types/models/VisibilityTracker.d.ts +75 -0
- package/dist/types/models/dependency-processor/DependencyExtractor.d.ts +23 -0
- package/dist/types/models/dependency-processor/HookEventBuffer.d.ts +15 -0
- package/dist/types/models/dependency-processor/ResourceScheduler.d.ts +10 -0
- package/dist/types/models/event/EmissionExecutor.d.ts +5 -4
- package/dist/types/models/event/ListenerRegistry.d.ts +2 -0
- package/dist/types/models/index.d.ts +1 -3
- package/dist/types/models/middleware/InterceptorRegistry.d.ts +13 -4
- package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +3 -2
- package/dist/types/models/middleware/ValidationHelper.d.ts +3 -6
- package/dist/types/models/utils/buildDependencyGraph.d.ts +12 -0
- package/dist/types/models/utils/dependencyStrategies.d.ts +15 -0
- package/dist/types/models/utils/disposeOrder.d.ts +11 -0
- package/dist/types/models/utils/resourceDependencyIds.d.ts +1 -0
- package/dist/types/node/durable/bus/MemoryEventBus.d.ts +10 -1
- package/dist/types/node/durable/bus/NoopEventBus.d.ts +1 -1
- package/dist/types/node/durable/bus/RedisEventBus.d.ts +8 -2
- package/dist/types/node/durable/core/CronParser.d.ts +2 -13
- package/dist/types/node/durable/core/DurableResource.d.ts +15 -32
- package/dist/types/node/durable/core/DurableService.d.ts +1 -0
- package/dist/types/node/durable/core/DurableWorker.d.ts +4 -2
- package/dist/types/node/durable/core/createRunnerDurableRuntime.d.ts +2 -0
- package/dist/types/node/durable/core/interfaces/bus.d.ts +1 -1
- package/dist/types/node/durable/core/interfaces/resource.d.ts +61 -0
- package/dist/types/node/durable/core/interfaces/service.d.ts +2 -0
- package/dist/types/node/durable/core/interfaces/store.d.ts +5 -0
- package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +1 -0
- package/dist/types/node/durable/core/managers/PollingManager.d.ts +3 -1
- package/dist/types/node/durable/core/resource.d.ts +6 -5
- package/dist/types/node/durable/core/utils.d.ts +11 -1
- package/dist/types/node/durable/queue/RabbitMQQueue.d.ts +4 -0
- package/dist/types/node/durable/resources/memoryDurableResource.d.ts +7 -5
- package/dist/types/node/durable/resources/redisDurableResource.d.ts +7 -5
- package/dist/types/node/durable/store/MemoryStore.d.ts +2 -0
- package/dist/types/node/durable/store/RedisStore.d.ts +1 -0
- package/dist/types/node/durable/tags/durableWorkflow.tag.d.ts +6 -1
- package/dist/types/node/exposure/allowList.d.ts +2 -1
- package/dist/types/node/exposure/handlers/contextWrapper.d.ts +6 -2
- package/dist/types/node/exposure/handlers/errorHandlers.d.ts +1 -0
- package/dist/types/node/exposure/handlers/eventHandler.d.ts +1 -0
- package/dist/types/node/exposure/handlers/taskHandler.d.ts +3 -1
- package/dist/types/node/exposure/logging.d.ts +1 -0
- package/dist/types/node/exposure/requestContext.d.ts +1 -1
- package/dist/types/node/exposure/requestHandlers.d.ts +3 -1
- package/dist/types/node/exposure/requestIdentity.d.ts +3 -0
- package/dist/types/node/exposure/resource.d.ts +7 -7
- package/dist/types/node/exposure/resourceTypes.d.ts +6 -0
- package/dist/types/node/exposure/serverLifecycle.d.ts +2 -0
- package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +1 -1
- package/dist/types/node/http/http-smart-client.factory.resource.d.ts +1 -1
- package/dist/types/node/node.d.ts +1 -184
- package/dist/types/node/tunnel/allowlist.d.ts +10 -1
- package/dist/types/platform/adapters/browser.d.ts +1 -1
- package/dist/types/platform/adapters/edge.d.ts +17 -0
- package/dist/types/platform/adapters/node-als.d.ts +1 -1
- package/dist/types/platform/adapters/node.d.ts +1 -1
- package/dist/types/platform/adapters/universal-generic.d.ts +5 -2
- package/dist/types/platform/adapters/universal.d.ts +1 -1
- package/dist/types/platform/index.d.ts +3 -2
- package/dist/types/platform/types.d.ts +8 -2
- package/dist/types/public.d.ts +376 -20
- package/dist/types/run.d.ts +17 -1
- package/dist/types/serializer/Serializer.d.ts +1 -41
- package/dist/types/serializer/errors.d.ts +8 -0
- package/dist/types/serializer/marker-key-escapes.d.ts +2 -0
- package/dist/types/serializer/serialize-utils.d.ts +1 -1
- package/dist/types/serializer/type-registry.d.ts +0 -1
- package/dist/types/serializer/types.d.ts +7 -6
- package/dist/types/testing.d.ts +1 -0
- package/dist/types/tools/LockableMap.d.ts +20 -0
- package/dist/types/tools/getAllThrows.d.ts +13 -0
- package/dist/types/tools/throws.d.ts +1 -1
- package/dist/types/types/error.d.ts +25 -2
- package/dist/types/types/event.d.ts +35 -0
- package/dist/types/types/hook.d.ts +8 -0
- package/dist/types/types/resource.d.ts +13 -1
- package/dist/types/types/resourceMiddleware.d.ts +8 -0
- package/dist/types/types/runner.d.ts +56 -0
- package/dist/types/types/storeTypes.d.ts +5 -1
- package/dist/types/types/symbols.d.ts +1 -1
- package/dist/types/types/tag.d.ts +1 -0
- package/dist/types/types/tagged.d.ts +2 -2
- package/dist/types/types/task.d.ts +3 -3
- package/dist/types/types/taskMiddleware.d.ts +8 -0
- package/dist/types/types/utilities.d.ts +25 -3
- package/dist/ui/assets/index-B4lZaXFJ.js +141 -0
- package/dist/ui/assets/index-Y_9aLumt.css +1 -0
- package/dist/ui/index.html +2 -3
- package/dist/universal/index.cjs +6159 -3049
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.mjs +6157 -3046
- package/dist/universal/index.mjs.map +1 -1
- package/package.json +18 -15
- package/readmes/AI.md +181 -45
- package/dist/ui/assets/index-2cb8f39f.js +0 -141
- package/dist/ui/assets/index-b1f988bf.css +0 -1
- /package/dist/types/{tunnels → tools}/buildUniversalManifest.d.ts +0 -0
- /package/dist/types/{processHooks.d.ts → tools/processShutdownHooks.d.ts} +0 -0
|
@@ -15,6 +15,7 @@ export declare class ListenerRegistry {
|
|
|
15
15
|
get globalListenersCacheValid(): boolean;
|
|
16
16
|
addListener(eventId: string, newListener: IListenerStorage): void;
|
|
17
17
|
addGlobalListener(newListener: IListenerStorage): void;
|
|
18
|
+
removeListenerById(id: string): void;
|
|
18
19
|
getListenersForEmit(eventDefinition: IEvent<any>): IListenerStorage[];
|
|
19
20
|
hasListeners(eventDefinition: IEvent<any>): boolean;
|
|
20
21
|
/**
|
|
@@ -26,6 +27,7 @@ export declare class ListenerRegistry {
|
|
|
26
27
|
private invalidateCache;
|
|
27
28
|
private mergeSortedListeners;
|
|
28
29
|
private insertListener;
|
|
30
|
+
private removeFromListeners;
|
|
29
31
|
}
|
|
30
32
|
export declare function createListener(newListener: Partial<IListenerStorage>): IListenerStorage;
|
|
31
33
|
export {};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
export * from "./DependencyProcessor";
|
|
2
1
|
export * from "./EventManager";
|
|
3
2
|
export * from "./Logger";
|
|
4
3
|
export * from "./Store";
|
|
5
4
|
export * from "./TaskRunner";
|
|
6
|
-
export * from "./ResourceInitializer";
|
|
7
5
|
export * from "./MiddlewareManager";
|
|
8
6
|
export { LogPrinter } from "./LogPrinter";
|
|
9
|
-
export type { PrintableLog,
|
|
7
|
+
export type { PrintableLog, PrintStrategy as LogPrinterPrintStrategy, } from "./LogPrinter";
|
|
10
8
|
export * from "./Semaphore";
|
|
11
9
|
export * from "./Queue";
|
|
12
10
|
export * from "./UnhandledError";
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor } from "./types";
|
|
2
|
+
export type InterceptorOwnerSnapshot = {
|
|
3
|
+
globalTaskInterceptorOwnerIds: readonly string[];
|
|
4
|
+
globalResourceInterceptorOwnerIds: readonly string[];
|
|
5
|
+
perTaskMiddlewareInterceptorOwnerIds: Readonly<Record<string, readonly string[]>>;
|
|
6
|
+
perResourceMiddlewareInterceptorOwnerIds: Readonly<Record<string, readonly string[]>>;
|
|
7
|
+
};
|
|
2
8
|
/**
|
|
3
9
|
* Centralized registry for all interceptor types.
|
|
4
10
|
* Manages storage and retrieval of global and per-middleware interceptors.
|
|
@@ -24,19 +30,19 @@ export declare class InterceptorRegistry {
|
|
|
24
30
|
/**
|
|
25
31
|
* Adds a global task interceptor
|
|
26
32
|
*/
|
|
27
|
-
addGlobalTaskInterceptor(interceptor: TaskMiddlewareInterceptor): void;
|
|
33
|
+
addGlobalTaskInterceptor(interceptor: TaskMiddlewareInterceptor, ownerResourceId?: string): void;
|
|
28
34
|
/**
|
|
29
35
|
* Adds a global resource interceptor
|
|
30
36
|
*/
|
|
31
|
-
addGlobalResourceInterceptor(interceptor: ResourceMiddlewareInterceptor): void;
|
|
37
|
+
addGlobalResourceInterceptor(interceptor: ResourceMiddlewareInterceptor, ownerResourceId?: string): void;
|
|
32
38
|
/**
|
|
33
39
|
* Adds an interceptor for a specific task middleware instance
|
|
34
40
|
*/
|
|
35
|
-
addTaskMiddlewareInterceptor(middlewareId: string, interceptor: TaskMiddlewareInterceptor): void;
|
|
41
|
+
addTaskMiddlewareInterceptor(middlewareId: string, interceptor: TaskMiddlewareInterceptor, ownerResourceId?: string): void;
|
|
36
42
|
/**
|
|
37
43
|
* Adds an interceptor for a specific resource middleware instance
|
|
38
44
|
*/
|
|
39
|
-
addResourceMiddlewareInterceptor(middlewareId: string, interceptor: ResourceMiddlewareInterceptor): void;
|
|
45
|
+
addResourceMiddlewareInterceptor(middlewareId: string, interceptor: ResourceMiddlewareInterceptor, ownerResourceId?: string): void;
|
|
40
46
|
/**
|
|
41
47
|
* Gets all global task interceptors
|
|
42
48
|
*/
|
|
@@ -53,4 +59,7 @@ export declare class InterceptorRegistry {
|
|
|
53
59
|
* Gets interceptors for a specific resource middleware
|
|
54
60
|
*/
|
|
55
61
|
getResourceMiddlewareInterceptors(middlewareId: string): readonly ResourceMiddlewareInterceptor[];
|
|
62
|
+
getOwnerSnapshot(): InterceptorOwnerSnapshot;
|
|
63
|
+
private extractOwnerIds;
|
|
64
|
+
private extractOwnerIdsMap;
|
|
56
65
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IResource, DependencyMapType } from "../../defs";
|
|
1
|
+
import { IResource, DependencyMapType, ResourceDependencyValuesType } from "../../defs";
|
|
2
2
|
import { Store } from "../Store";
|
|
3
3
|
import { InterceptorRegistry } from "./InterceptorRegistry";
|
|
4
4
|
import { MiddlewareResolver } from "./MiddlewareResolver";
|
|
@@ -14,7 +14,7 @@ export declare class ResourceMiddlewareComposer {
|
|
|
14
14
|
/**
|
|
15
15
|
* Runs resource initialization with all middleware and interceptors applied
|
|
16
16
|
*/
|
|
17
|
-
runInit<TConfig, TValue extends Promise<any>, TDeps extends DependencyMapType, TContext>(resource: IResource<TConfig, TValue, TDeps, TContext>, config: TConfig, dependencies:
|
|
17
|
+
runInit<TConfig, TValue extends Promise<any>, TDeps extends DependencyMapType, TContext>(resource: IResource<TConfig, TValue, TDeps, TContext>, config: TConfig, dependencies: ResourceDependencyValuesType<TDeps>, context: TContext): Promise<TValue | undefined>;
|
|
18
18
|
/**
|
|
19
19
|
* Creates the base resource init runner with result validation
|
|
20
20
|
*/
|
|
@@ -31,4 +31,5 @@ export declare class ResourceMiddlewareComposer {
|
|
|
31
31
|
* Wraps a middleware runner with its specific interceptors in onion style
|
|
32
32
|
*/
|
|
33
33
|
private wrapWithInterceptors;
|
|
34
|
+
private reportUnhandledResourceInitError;
|
|
34
35
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IValidationSchema } from "../../defs";
|
|
1
2
|
/**
|
|
2
3
|
* Centralized validation logic for inputs and results across tasks and resources.
|
|
3
4
|
* Provides consistent error handling and messaging.
|
|
@@ -7,14 +8,10 @@ export declare class ValidationHelper {
|
|
|
7
8
|
* Validates input using the provided schema
|
|
8
9
|
* @throws ValidationError if validation fails
|
|
9
10
|
*/
|
|
10
|
-
static validateInput<T>(value:
|
|
11
|
-
parse: (v: any) => T;
|
|
12
|
-
} | undefined, id: string, type: "Task" | "Resource"): T;
|
|
11
|
+
static validateInput<T>(value: unknown, schema: IValidationSchema<T> | undefined, id: string, type: "Task" | "Resource"): T;
|
|
13
12
|
/**
|
|
14
13
|
* Validates result using the provided schema
|
|
15
14
|
* @throws ValidationError if validation fails
|
|
16
15
|
*/
|
|
17
|
-
static validateResult<T>(value:
|
|
18
|
-
parse: (v: any) => T;
|
|
19
|
-
} | undefined, id: string, type: "Task" | "Resource"): T;
|
|
16
|
+
static validateResult<T>(value: unknown, schema: IValidationSchema<T> | undefined, id: string, type: "Task" | "Resource"): T;
|
|
20
17
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { StoreRegistry } from "../StoreRegistry";
|
|
2
|
+
import type { IDependentNode } from "./findCircularDependencies";
|
|
3
|
+
/**
|
|
4
|
+
* Builds a dependency graph of all registered items (tasks, resources, middlewares, hooks).
|
|
5
|
+
* Returns a flat list of dependency nodes suitable for circular-dependency detection.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildDependencyGraph(registry: StoreRegistry): IDependentNode[];
|
|
8
|
+
/**
|
|
9
|
+
* Builds a directed graph of event emissions based on hooks listening to events
|
|
10
|
+
* and their dependencies on events (emission capability). Ignores wildcard hooks by default.
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildEventEmissionGraph(registry: StoreRegistry): IDependentNode[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Store } from "../Store";
|
|
2
|
+
/**
|
|
3
|
+
* Maps a type-guard to its dependency-resolution logic.
|
|
4
|
+
*/
|
|
5
|
+
export interface DependencyStrategy {
|
|
6
|
+
/** Returns true if this strategy handles the given item. */
|
|
7
|
+
matches: (item: unknown) => boolean;
|
|
8
|
+
/** Returns the store map to check existence against (for optional deps). */
|
|
9
|
+
getStoreMap: (store: Store) => Map<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare const dependencyStrategies: readonly DependencyStrategy[];
|
|
12
|
+
/**
|
|
13
|
+
* Find the matching strategy for a dependency item, or undefined if none matches.
|
|
14
|
+
*/
|
|
15
|
+
export declare function findDependencyStrategy(item: unknown): DependencyStrategy | undefined;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ResourceStoreElementType } from "../../types/storeTypes";
|
|
2
|
+
type DisposeOrderOptions = {
|
|
3
|
+
preferInitOrderFastPath?: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* Returns initialized resources sorted in dispose order (dependents first).
|
|
7
|
+
* Uses the recorded init-order when complete, otherwise falls back to a
|
|
8
|
+
* topological sort derived from the resource dependency graph.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getResourcesInDisposeOrder(resources: Map<string, ResourceStoreElementType>, initializedResourceIds: readonly string[], options?: DisposeOrderOptions): ResourceStoreElementType[];
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getResourceDependencyIds(rawDependencies: unknown): string[];
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { BusEvent, BusEventHandler, IEventBus } from "../core/interfaces/bus";
|
|
2
|
+
import { Logger } from "../../../models/Logger";
|
|
3
|
+
export interface MemoryEventBusConfig {
|
|
4
|
+
logger?: Logger;
|
|
5
|
+
onHandlerError?: (error: unknown) => void | Promise<void>;
|
|
6
|
+
}
|
|
2
7
|
export declare class MemoryEventBus implements IEventBus {
|
|
3
8
|
private handlers;
|
|
9
|
+
private readonly logger;
|
|
10
|
+
private readonly onHandlerError?;
|
|
11
|
+
constructor(config?: MemoryEventBusConfig);
|
|
12
|
+
private reportHandlerError;
|
|
4
13
|
publish(channel: string, event: BusEvent): Promise<void>;
|
|
5
14
|
subscribe(channel: string, handler: BusEventHandler): Promise<void>;
|
|
6
|
-
unsubscribe(channel: string): Promise<void>;
|
|
15
|
+
unsubscribe(channel: string, handler?: BusEventHandler): Promise<void>;
|
|
7
16
|
}
|
|
@@ -2,5 +2,5 @@ import type { BusEvent, BusEventHandler, IEventBus } from "../core/interfaces/bu
|
|
|
2
2
|
export declare class NoopEventBus implements IEventBus {
|
|
3
3
|
publish(_channel: string, _event: BusEvent): Promise<void>;
|
|
4
4
|
subscribe(_channel: string, _handler: BusEventHandler): Promise<void>;
|
|
5
|
-
unsubscribe(_channel: string): Promise<void>;
|
|
5
|
+
unsubscribe(_channel: string, _handler?: BusEventHandler): Promise<void>;
|
|
6
6
|
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { BusEvent, BusEventHandler, IEventBus } from "../core/interfaces/bus";
|
|
2
|
+
import { Logger } from "../../../models/Logger";
|
|
2
3
|
export interface RedisEventBusConfig {
|
|
3
4
|
prefix?: string;
|
|
4
5
|
redis?: RedisEventBusClient | string;
|
|
6
|
+
logger?: Logger;
|
|
7
|
+
onHandlerError?: (error: unknown) => void | Promise<void>;
|
|
5
8
|
}
|
|
6
9
|
export interface RedisEventBusClient {
|
|
7
10
|
publish(channel: string, payload: string): Promise<unknown>;
|
|
@@ -17,7 +20,10 @@ export declare class RedisEventBus implements IEventBus {
|
|
|
17
20
|
private prefix;
|
|
18
21
|
private readonly channels;
|
|
19
22
|
private readonly serializer;
|
|
20
|
-
|
|
23
|
+
private readonly logger;
|
|
24
|
+
private readonly onHandlerError?;
|
|
25
|
+
constructor(config?: RedisEventBusConfig);
|
|
26
|
+
private reportHandlerError;
|
|
21
27
|
private k;
|
|
22
28
|
private tryParse;
|
|
23
29
|
private coerceTimestamp;
|
|
@@ -25,6 +31,6 @@ export declare class RedisEventBus implements IEventBus {
|
|
|
25
31
|
private deserializeEvent;
|
|
26
32
|
publish(channel: string, event: BusEvent): Promise<void>;
|
|
27
33
|
subscribe(channel: string, handler: BusEventHandler): Promise<void>;
|
|
28
|
-
unsubscribe(channel: string): Promise<void>;
|
|
34
|
+
unsubscribe(channel: string, handler?: BusEventHandler): Promise<void>;
|
|
29
35
|
dispose(): Promise<void>;
|
|
30
36
|
}
|
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cron helper used by `ScheduleManager`.
|
|
3
|
-
*
|
|
4
|
-
* Prefers the optional `cron-parser` dependency when available, but provides a
|
|
5
|
-
* deterministic fallback implementation so durable scheduling works even when
|
|
6
|
-
* optional deps are not installed (important for the multi-platform packaging
|
|
7
|
-
* and optionalDependency setup).
|
|
8
|
-
*/
|
|
9
1
|
export declare class CronParser {
|
|
10
|
-
static getNextRun(
|
|
11
|
-
static isValid(
|
|
12
|
-
private static tryGetExternalParser;
|
|
13
|
-
private static parseFallback;
|
|
14
|
-
private static getNextRunFallback;
|
|
2
|
+
static getNextRun(expression: string, from?: Date): Date;
|
|
3
|
+
static isValid(expression: string): boolean;
|
|
15
4
|
}
|
|
@@ -3,46 +3,16 @@ import type { Store } from "../../../models/Store";
|
|
|
3
3
|
import type { IEventDefinition } from "../../../types/event";
|
|
4
4
|
import type { AnyTask, ITask } from "../../../types/task";
|
|
5
5
|
import type { IDurableContext } from "./interfaces/context";
|
|
6
|
+
import type { IDurableResource } from "./interfaces/resource";
|
|
6
7
|
import type { DurableStartAndWaitResult, ExecuteOptions, IDurableService, ScheduleOptions } from "./interfaces/service";
|
|
7
8
|
import type { Schedule } from "./types";
|
|
8
9
|
import type { IDurableStore } from "./interfaces/store";
|
|
9
10
|
import { DurableOperator } from "./DurableOperator";
|
|
10
11
|
import { type DurableFlowShape } from "./flowShape";
|
|
12
|
+
export type { IDurableResource } from "./interfaces/resource";
|
|
11
13
|
export interface DurableResourceConfig {
|
|
12
14
|
worker?: boolean;
|
|
13
15
|
}
|
|
14
|
-
export interface IDurableResource extends Pick<IDurableService, "cancelExecution" | "wait" | "schedule" | "ensureSchedule" | "pauseSchedule" | "resumeSchedule" | "getSchedule" | "listSchedules" | "updateSchedule" | "removeSchedule" | "recover" | "signal"> {
|
|
15
|
-
start<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<string>;
|
|
16
|
-
start(task: string, input?: unknown, options?: ExecuteOptions): Promise<string>;
|
|
17
|
-
startAndWait<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
18
|
-
startAndWait<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
19
|
-
/**
|
|
20
|
-
* Reads the durable context for the currently running workflow execution.
|
|
21
|
-
* Throws if called outside of a durable execution.
|
|
22
|
-
*/
|
|
23
|
-
use(): IDurableContext;
|
|
24
|
-
/**
|
|
25
|
-
* Describe a durable workflow task using real runtime dependencies.
|
|
26
|
-
*
|
|
27
|
-
* - Non-durable deps are kept as-is (so pre-step control flow can use them).
|
|
28
|
-
* - Durable deps are shimmed so `durable.use()` returns the recorder context.
|
|
29
|
-
*
|
|
30
|
-
* The task must be registered in the runtime store (ie. part of the app tree).
|
|
31
|
-
*
|
|
32
|
-
* Accepts any Runner `ITask`. Generic `TInput` is inferred from the task,
|
|
33
|
-
* or can be specified explicitly: `describe<MyInput>(task, input)`.
|
|
34
|
-
*/
|
|
35
|
-
describe<TInput>(task: ITask<TInput, any, any, any, any, any>, input?: TInput): Promise<DurableFlowShape>;
|
|
36
|
-
/**
|
|
37
|
-
* Store-backed operator API to inspect and administrate executions
|
|
38
|
-
* (steps/audit/history and operator actions where supported by the store).
|
|
39
|
-
*/
|
|
40
|
-
readonly operator: DurableOperator;
|
|
41
|
-
/**
|
|
42
|
-
* Returns all tasks tagged as durable workflows in the current runtime.
|
|
43
|
-
*/
|
|
44
|
-
getWorkflows(): AnyTask[];
|
|
45
|
-
}
|
|
46
16
|
/**
|
|
47
17
|
* A Runner-facing wrapper around `DurableService` that exposes a per-instance
|
|
48
18
|
* context store and the public durable API (`start`, `startAndWait`, `signal`, `wait`, etc.).
|
|
@@ -62,8 +32,13 @@ export declare class DurableResource implements IDurableResource {
|
|
|
62
32
|
describe<TInput>(task: ITask<TInput, any, any, any, any, any>, input?: TInput): Promise<DurableFlowShape>;
|
|
63
33
|
getWorkflows(): AnyTask[];
|
|
64
34
|
private injectRecorderIntoDurableDeps;
|
|
35
|
+
private resolveDescribeInput;
|
|
65
36
|
start<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<string>;
|
|
66
37
|
start(task: string, input?: unknown, options?: ExecuteOptions): Promise<string>;
|
|
38
|
+
/** @deprecated Use start(task, input, options). */
|
|
39
|
+
startExecution<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<string>;
|
|
40
|
+
/** @deprecated Use start(task, input, options). */
|
|
41
|
+
startExecution(task: string, input?: unknown, options?: ExecuteOptions): Promise<string>;
|
|
67
42
|
cancelExecution(executionId: string, reason?: string): Promise<void>;
|
|
68
43
|
wait<TResult>(executionId: string, options?: {
|
|
69
44
|
timeout?: number;
|
|
@@ -71,6 +46,14 @@ export declare class DurableResource implements IDurableResource {
|
|
|
71
46
|
}): Promise<TResult>;
|
|
72
47
|
startAndWait<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
73
48
|
startAndWait<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
49
|
+
/** @deprecated Use startAndWait(task, input, options) and read `result.data`. */
|
|
50
|
+
execute<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<TResult>;
|
|
51
|
+
/** @deprecated Use startAndWait(task, input, options) and read `result.data`. */
|
|
52
|
+
execute<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<TResult>;
|
|
53
|
+
/** @deprecated Use startAndWait(task, input, options). */
|
|
54
|
+
executeStrict<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
55
|
+
/** @deprecated Use startAndWait(task, input, options). */
|
|
56
|
+
executeStrict<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
74
57
|
schedule<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input: TInput | undefined, options: ScheduleOptions): Promise<string>;
|
|
75
58
|
schedule(task: string, input: unknown, options: ScheduleOptions): Promise<string>;
|
|
76
59
|
ensureSchedule<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input: TInput | undefined, options: ScheduleOptions & {
|
|
@@ -30,6 +30,7 @@ export declare class DurableService implements IDurableService {
|
|
|
30
30
|
private readonly signalHandler;
|
|
31
31
|
private readonly executionManager;
|
|
32
32
|
private readonly pollingManager;
|
|
33
|
+
private readonly logger;
|
|
33
34
|
/** Unique worker ID for distributed timer coordination */
|
|
34
35
|
private readonly workerId;
|
|
35
36
|
constructor(config: DurableServiceConfig);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IDurableQueue } from "./interfaces/queue";
|
|
2
2
|
import type { IDurableExecutionProcessor } from "./interfaces/service";
|
|
3
|
+
import { Logger } from "../../../models/Logger";
|
|
3
4
|
/**
|
|
4
5
|
* Durable queue consumer (worker process role).
|
|
5
6
|
*
|
|
@@ -11,9 +12,10 @@ import type { IDurableExecutionProcessor } from "./interfaces/service";
|
|
|
11
12
|
export declare class DurableWorker {
|
|
12
13
|
private readonly service;
|
|
13
14
|
private readonly queue;
|
|
14
|
-
|
|
15
|
+
private readonly logger;
|
|
16
|
+
constructor(service: IDurableExecutionProcessor, queue: IDurableQueue, logger?: Logger);
|
|
15
17
|
start(): Promise<void>;
|
|
16
18
|
private handleMessage;
|
|
17
19
|
private extractExecutionId;
|
|
18
20
|
}
|
|
19
|
-
export declare function initDurableWorker(service: IDurableExecutionProcessor, queue: IDurableQueue): Promise<DurableWorker>;
|
|
21
|
+
export declare function initDurableWorker(service: IDurableExecutionProcessor, queue: IDurableQueue, logger?: Logger): Promise<DurableWorker>;
|
|
@@ -3,6 +3,7 @@ import { DurableResource } from "./DurableResource";
|
|
|
3
3
|
import type { EventManager } from "../../../models/EventManager";
|
|
4
4
|
import type { TaskRunner } from "../../../models/TaskRunner";
|
|
5
5
|
import type { Store } from "../../../models/Store";
|
|
6
|
+
import type { Logger } from "../../../models/Logger";
|
|
6
7
|
export type RunnerDurableRuntimeConfig = Omit<DurableServiceConfig, "taskExecutor" | "tasks" | "taskResolver" | "contextProvider"> & {
|
|
7
8
|
/**
|
|
8
9
|
* Starts an embedded worker (queue consumer) in this process.
|
|
@@ -14,5 +15,6 @@ export interface RunnerDurableDeps {
|
|
|
14
15
|
taskRunner: TaskRunner;
|
|
15
16
|
eventManager: EventManager;
|
|
16
17
|
runnerStore: Store;
|
|
18
|
+
logger: Logger;
|
|
17
19
|
}
|
|
18
20
|
export declare function createRunnerDurableRuntime(config: RunnerDurableRuntimeConfig, deps: RunnerDurableDeps): Promise<DurableResource>;
|
|
@@ -7,7 +7,7 @@ export type BusEventHandler = (event: BusEvent) => Promise<void>;
|
|
|
7
7
|
export interface IEventBus {
|
|
8
8
|
publish(channel: string, event: BusEvent): Promise<void>;
|
|
9
9
|
subscribe(channel: string, handler: BusEventHandler): Promise<void>;
|
|
10
|
-
unsubscribe(channel: string): Promise<void>;
|
|
10
|
+
unsubscribe(channel: string, handler?: BusEventHandler): Promise<void>;
|
|
11
11
|
init?(): Promise<void>;
|
|
12
12
|
dispose?(): Promise<void>;
|
|
13
13
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { AnyTask, ITask } from "../../../../types/task";
|
|
2
|
+
import type { IDurableContext } from "./context";
|
|
3
|
+
import type { DurableStartAndWaitResult, ExecuteOptions, IDurableService } from "./service";
|
|
4
|
+
import type { DurableOperator } from "../DurableOperator";
|
|
5
|
+
import type { DurableFlowShape } from "../flowShape";
|
|
6
|
+
export interface IDurableResource extends Pick<IDurableService, "cancelExecution" | "wait" | "schedule" | "ensureSchedule" | "pauseSchedule" | "resumeSchedule" | "getSchedule" | "listSchedules" | "updateSchedule" | "removeSchedule" | "recover" | "signal"> {
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Use start(task, input, options).
|
|
9
|
+
*/
|
|
10
|
+
startExecution<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* @deprecated Use start(task, input, options).
|
|
13
|
+
*/
|
|
14
|
+
startExecution(task: string, input?: unknown, options?: ExecuteOptions): Promise<string>;
|
|
15
|
+
start<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<string>;
|
|
16
|
+
start(task: string, input?: unknown, options?: ExecuteOptions): Promise<string>;
|
|
17
|
+
startAndWait<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
18
|
+
startAndWait<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
19
|
+
/**
|
|
20
|
+
* @deprecated Use startAndWait(task, input, options) and read `result.data`.
|
|
21
|
+
*/
|
|
22
|
+
execute<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<TResult>;
|
|
23
|
+
/**
|
|
24
|
+
* @deprecated Use startAndWait(task, input, options) and read `result.data`.
|
|
25
|
+
*/
|
|
26
|
+
execute<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<TResult>;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Use startAndWait(task, input, options).
|
|
29
|
+
*/
|
|
30
|
+
executeStrict<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Use startAndWait(task, input, options).
|
|
33
|
+
*/
|
|
34
|
+
executeStrict<TResult = unknown>(task: string, input?: unknown, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<TResult>>;
|
|
35
|
+
/**
|
|
36
|
+
* Reads the durable context for the currently running workflow execution.
|
|
37
|
+
* Throws if called outside of a durable execution.
|
|
38
|
+
*/
|
|
39
|
+
use(): IDurableContext;
|
|
40
|
+
/**
|
|
41
|
+
* Describe a durable workflow task using real runtime dependencies.
|
|
42
|
+
*
|
|
43
|
+
* - Non-durable deps are kept as-is (so pre-step control flow can use them).
|
|
44
|
+
* - Durable deps are shimmed so `durable.use()` returns the recorder context.
|
|
45
|
+
*
|
|
46
|
+
* The task must be registered in the runtime store (ie. part of the app tree).
|
|
47
|
+
*
|
|
48
|
+
* Accepts any Runner `ITask`. Generic `TInput` is inferred from the task,
|
|
49
|
+
* or can be specified explicitly: `describe<MyInput>(task, input)`.
|
|
50
|
+
*/
|
|
51
|
+
describe<TInput>(task: ITask<TInput, any, any, any, any, any>, input?: TInput): Promise<DurableFlowShape>;
|
|
52
|
+
/**
|
|
53
|
+
* Store-backed operator API to inspect and administrate executions
|
|
54
|
+
* (steps/audit/history and operator actions where supported by the store).
|
|
55
|
+
*/
|
|
56
|
+
readonly operator: DurableOperator;
|
|
57
|
+
/**
|
|
58
|
+
* Returns all tasks tagged as durable workflows in the current runtime.
|
|
59
|
+
*/
|
|
60
|
+
getWorkflows(): AnyTask[];
|
|
61
|
+
}
|
|
@@ -6,6 +6,7 @@ import type { IEventBus } from "./bus";
|
|
|
6
6
|
import type { IDurableContext } from "./context";
|
|
7
7
|
import type { Schedule } from "../types";
|
|
8
8
|
import type { DurableAuditEmitter } from "../audit";
|
|
9
|
+
import type { Logger } from "../../../../models/Logger";
|
|
9
10
|
export interface ITaskExecutor {
|
|
10
11
|
run<TInput, TResult>(task: ITask<TInput, Promise<TResult>, any, any, any, any>, input?: TInput): Promise<TResult>;
|
|
11
12
|
}
|
|
@@ -20,6 +21,7 @@ export interface DurableServiceConfig {
|
|
|
20
21
|
store: IDurableStore;
|
|
21
22
|
queue?: IDurableQueue;
|
|
22
23
|
eventBus?: IEventBus;
|
|
24
|
+
logger?: Logger;
|
|
23
25
|
taskExecutor?: ITaskExecutor;
|
|
24
26
|
determinism?: {
|
|
25
27
|
/**
|
|
@@ -62,5 +62,10 @@ export interface IDurableStore {
|
|
|
62
62
|
init?(): Promise<void>;
|
|
63
63
|
dispose?(): Promise<void>;
|
|
64
64
|
acquireLock?(resource: string, ttlMs: number): Promise<string | null>;
|
|
65
|
+
/**
|
|
66
|
+
* Renews an existing lock if and only if `lockId` still owns `resource`.
|
|
67
|
+
* Returns true when renewed, false when lock is missing/expired/re-owned.
|
|
68
|
+
*/
|
|
69
|
+
renewLock?(resource: string, lockId: string, ttlMs: number): Promise<boolean>;
|
|
65
70
|
releaseLock?(resource: string, lockId: string): Promise<void>;
|
|
66
71
|
}
|
|
@@ -71,6 +71,7 @@ export declare class ExecutionManager {
|
|
|
71
71
|
cancelExecution(executionId: string, reason?: string): Promise<void>;
|
|
72
72
|
startAndWait(taskRef: string | ITask<any, Promise<any>, any, any, any, any>, input?: unknown, options?: ExecuteOptions): Promise<DurableStartAndWaitResult<unknown>>;
|
|
73
73
|
processExecution(executionId: string): Promise<void>;
|
|
74
|
+
private startLockHeartbeat;
|
|
74
75
|
kickoffExecution(executionId: string): Promise<void>;
|
|
75
76
|
notifyExecutionFinished(execution: Execution): Promise<void>;
|
|
76
77
|
private runExecutionAttempt;
|
|
@@ -4,6 +4,7 @@ import { type Timer } from "../types";
|
|
|
4
4
|
import type { AuditLogger } from "./AuditLogger";
|
|
5
5
|
import type { TaskRegistry } from "./TaskRegistry";
|
|
6
6
|
import type { ScheduleManager } from "./ScheduleManager";
|
|
7
|
+
import { Logger } from "../../../../models/Logger";
|
|
7
8
|
export interface PollingConfig {
|
|
8
9
|
enabled?: boolean;
|
|
9
10
|
interval?: number;
|
|
@@ -39,7 +40,8 @@ export declare class PollingManager {
|
|
|
39
40
|
private isRunning;
|
|
40
41
|
private pollingTimer;
|
|
41
42
|
private pollingWake;
|
|
42
|
-
|
|
43
|
+
private readonly logger;
|
|
44
|
+
constructor(workerId: string, config: PollingConfig, store: IDurableStore, queue: IDurableQueue | undefined, maxAttempts: number, defaultTimeout: number | undefined, taskRegistry: TaskRegistry, auditLogger: AuditLogger, scheduleManager: ScheduleManager, callbacks: PollingManagerCallbacks, logger?: Logger);
|
|
43
45
|
start(): void;
|
|
44
46
|
stop(): Promise<void>;
|
|
45
47
|
private poll;
|
|
@@ -7,8 +7,9 @@ export type DurableResourceRuntimeConfig = RunnerDurableRuntimeConfig;
|
|
|
7
7
|
* - `const durable = durableResource.fork("app.durable");`
|
|
8
8
|
* - Register it via `durable.with({ store, queue, eventBus, ... })`
|
|
9
9
|
*/
|
|
10
|
-
export declare const durableResource: import("
|
|
11
|
-
taskRunner: import("
|
|
12
|
-
eventManager: import("
|
|
13
|
-
runnerStore: import("
|
|
14
|
-
|
|
10
|
+
export declare const durableResource: import("../../../defs").IResource<RunnerDurableRuntimeConfig, Promise<import("./DurableResource").DurableResource>, {
|
|
11
|
+
taskRunner: import("../../../defs").IResource<void, Promise<import("../..").TaskRunner>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
12
|
+
eventManager: import("../../../defs").IResource<void, Promise<import("../..").EventManager>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
13
|
+
runnerStore: import("../../../defs").IResource<void, Promise<import("../..").Store>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
14
|
+
logger: import("../../../defs").IResource<void, Promise<import("../..").Logger>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
15
|
+
}, any, import("../../../defs").IResourceMeta, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RunnerError } from "../../../definers/defineError";
|
|
1
2
|
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
2
3
|
export declare function sleepMs(ms: number): Promise<void>;
|
|
3
4
|
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, message: string): Promise<T>;
|
|
@@ -13,7 +14,16 @@ export declare function parseSignalState(value: unknown): {
|
|
|
13
14
|
* task errors by carrying execution metadata and a (serialized) cause payload.
|
|
14
15
|
* `WaitManager` is the primary producer of this error.
|
|
15
16
|
*/
|
|
16
|
-
export declare class DurableExecutionError extends
|
|
17
|
+
export declare class DurableExecutionError extends RunnerError<{
|
|
18
|
+
message: string;
|
|
19
|
+
executionId: string;
|
|
20
|
+
taskId: string;
|
|
21
|
+
attempt: number;
|
|
22
|
+
causeInfo?: {
|
|
23
|
+
message: string;
|
|
24
|
+
stack?: string;
|
|
25
|
+
};
|
|
26
|
+
}> {
|
|
17
27
|
readonly executionId: string;
|
|
18
28
|
readonly taskId: string;
|
|
19
29
|
readonly attempt: number;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IDurableQueue, MessageHandler, QueueMessage } from "../core/interfaces/queue";
|
|
2
|
+
import { Logger } from "../../../models/Logger";
|
|
2
3
|
export interface RabbitMQQueueConfig {
|
|
3
4
|
url?: string;
|
|
4
5
|
queueName?: string;
|
|
@@ -9,6 +10,7 @@ export interface RabbitMQQueueConfig {
|
|
|
9
10
|
messageTtl?: number;
|
|
10
11
|
};
|
|
11
12
|
prefetch?: number;
|
|
13
|
+
logger?: Pick<Logger, "error">;
|
|
12
14
|
}
|
|
13
15
|
export declare class RabbitMQQueue implements IDurableQueue {
|
|
14
16
|
private connection;
|
|
@@ -19,8 +21,10 @@ export declare class RabbitMQQueue implements IDurableQueue {
|
|
|
19
21
|
private readonly isQuorum;
|
|
20
22
|
private readonly deadLetterQueue?;
|
|
21
23
|
private readonly messageTtl?;
|
|
24
|
+
private readonly logger;
|
|
22
25
|
private messageMap;
|
|
23
26
|
constructor(config: RabbitMQQueueConfig);
|
|
27
|
+
private reportError;
|
|
24
28
|
init(): Promise<void>;
|
|
25
29
|
enqueue<T>(message: Omit<QueueMessage<T>, "id" | "createdAt" | "attempts">): Promise<string>;
|
|
26
30
|
consume<T>(handler: MessageHandler<T>): Promise<void>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RunnerDurableRuntimeConfig } from "../core/createRunnerDurableRuntime";
|
|
2
2
|
import type { DurableResource } from "../core/DurableResource";
|
|
3
|
+
import { Logger } from "../../../models/Logger";
|
|
3
4
|
export type MemoryDurableResourceConfig = Omit<RunnerDurableRuntimeConfig, "store" | "queue" | "eventBus"> & {
|
|
4
5
|
/**
|
|
5
6
|
* Isolation namespace (used for defaults and docs).
|
|
@@ -13,9 +14,10 @@ export type MemoryDurableResourceConfig = Omit<RunnerDurableRuntimeConfig, "stor
|
|
|
13
14
|
interface MemoryDurableResourceContext {
|
|
14
15
|
runtimeConfig: RunnerDurableRuntimeConfig | null;
|
|
15
16
|
}
|
|
16
|
-
export declare const memoryDurableResource: import("
|
|
17
|
-
taskRunner: import("
|
|
18
|
-
eventManager: import("
|
|
19
|
-
runnerStore: import("
|
|
20
|
-
|
|
17
|
+
export declare const memoryDurableResource: import("../../../defs").IResource<MemoryDurableResourceConfig, Promise<DurableResource>, {
|
|
18
|
+
taskRunner: import("../../../defs").IResource<void, Promise<import("../..").TaskRunner>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
19
|
+
eventManager: import("../../../defs").IResource<void, Promise<import("../..").EventManager>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
20
|
+
runnerStore: import("../../../defs").IResource<void, Promise<import("../..").Store>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
21
|
+
logger: import("../../../defs").IResource<void, Promise<Logger>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
22
|
+
}, MemoryDurableResourceContext, import("../../../defs").IResourceMeta, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
21
23
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { RunnerDurableRuntimeConfig } from "../core/createRunnerDurableRuntime";
|
|
2
2
|
import type { DurableResource } from "../core/DurableResource";
|
|
3
|
+
import { Logger } from "../../../models/Logger";
|
|
3
4
|
export type RedisDurableResourceConfig = Omit<RunnerDurableRuntimeConfig, "store" | "queue" | "eventBus"> & {
|
|
4
5
|
/**
|
|
5
6
|
* Isolation namespace (used for key prefixes and queue names).
|
|
@@ -27,9 +28,10 @@ export type RedisDurableResourceConfig = Omit<RunnerDurableRuntimeConfig, "store
|
|
|
27
28
|
interface RedisDurableResourceContext {
|
|
28
29
|
runtimeConfig: RunnerDurableRuntimeConfig | null;
|
|
29
30
|
}
|
|
30
|
-
export declare const redisDurableResource: import("
|
|
31
|
-
taskRunner: import("
|
|
32
|
-
eventManager: import("
|
|
33
|
-
runnerStore: import("
|
|
34
|
-
|
|
31
|
+
export declare const redisDurableResource: import("../../../defs").IResource<RedisDurableResourceConfig, Promise<DurableResource>, {
|
|
32
|
+
taskRunner: import("../../../defs").IResource<void, Promise<import("../..").TaskRunner>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
33
|
+
eventManager: import("../../../defs").IResource<void, Promise<import("../..").EventManager>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
34
|
+
runnerStore: import("../../../defs").IResource<void, Promise<import("../..").Store>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
35
|
+
logger: import("../../../defs").IResource<void, Promise<Logger>, {}, any, any, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
36
|
+
}, RedisDurableResourceContext, import("../../../defs").IResourceMeta, import("../../../defs").TagType[], import("../../../defs").ResourceMiddlewareAttachmentType[]>;
|
|
35
37
|
export {};
|