@bluelibs/runner 5.1.0 → 5.2.1
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 +25 -15
- package/dist/browser/index.cjs +851 -478
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.mjs +849 -478
- package/dist/browser/index.mjs.map +1 -1
- package/dist/edge/index.cjs +851 -478
- package/dist/edge/index.cjs.map +1 -1
- package/dist/edge/index.mjs +849 -478
- package/dist/edge/index.mjs.map +1 -1
- package/dist/node/node.cjs +1305 -583
- package/dist/node/node.cjs.map +1 -1
- package/dist/node/node.mjs +1299 -583
- package/dist/node/node.mjs.map +1 -1
- package/dist/types/define.d.ts +9 -0
- package/dist/types/definers/builders/asyncContext/fluent-builder.d.ts +6 -0
- package/dist/types/definers/builders/asyncContext/fluent-builder.interface.d.ts +9 -0
- package/dist/types/definers/builders/asyncContext/index.d.ts +10 -0
- package/dist/types/definers/builders/asyncContext/types.d.ts +13 -0
- package/dist/types/definers/builders/asyncContext/utils.d.ts +5 -0
- package/dist/types/definers/builders/asyncContext.d.ts +1 -0
- package/dist/types/definers/builders/core.d.ts +30 -0
- package/dist/types/definers/builders/error/fluent-builder.d.ts +7 -0
- package/dist/types/definers/builders/error/fluent-builder.interface.d.ts +10 -0
- package/dist/types/definers/builders/error/index.d.ts +11 -0
- package/dist/types/definers/builders/error/types.d.ts +14 -0
- package/dist/types/definers/builders/error/utils.d.ts +6 -0
- package/dist/types/definers/builders/error.d.ts +1 -0
- package/dist/types/definers/builders/event/fluent-builder.d.ts +7 -0
- package/dist/types/definers/builders/event/fluent-builder.interface.d.ts +18 -0
- package/dist/types/definers/builders/event/index.d.ts +10 -0
- package/dist/types/definers/builders/event/types.d.ts +8 -0
- package/dist/types/definers/builders/event/utils.d.ts +9 -0
- package/dist/types/definers/builders/event.d.ts +1 -0
- package/dist/types/definers/builders/hook/fluent-builder.d.ts +8 -0
- package/dist/types/definers/builders/hook/fluent-builder.interface.d.ts +27 -0
- package/dist/types/definers/builders/hook/index.d.ts +12 -0
- package/dist/types/definers/builders/hook/types.d.ts +14 -0
- package/dist/types/definers/builders/hook/utils.d.ts +14 -0
- package/dist/types/definers/builders/hook.d.ts +1 -0
- package/dist/types/definers/builders/middleware/index.d.ts +19 -0
- package/dist/types/definers/builders/middleware/resource.d.ts +7 -0
- package/dist/types/definers/builders/middleware/resource.interface.d.ts +18 -0
- package/dist/types/definers/builders/middleware/task.d.ts +7 -0
- package/dist/types/definers/builders/middleware/task.interface.d.ts +18 -0
- package/dist/types/definers/builders/middleware/types.d.ts +13 -0
- package/dist/types/definers/builders/middleware/utils.d.ts +18 -0
- package/dist/types/definers/builders/middleware.d.ts +1 -0
- package/dist/types/definers/builders/override/hook.d.ts +16 -0
- package/dist/types/definers/builders/override/index.d.ts +11 -0
- package/dist/types/definers/builders/override/resource-middleware.d.ts +3 -0
- package/dist/types/definers/builders/override/resource.d.ts +3 -0
- package/dist/types/definers/builders/override/task-middleware.d.ts +3 -0
- package/dist/types/definers/builders/override/task.d.ts +3 -0
- package/dist/types/definers/builders/resource/fluent-builder.d.ts +8 -0
- package/dist/types/definers/builders/resource/fluent-builder.interface.d.ts +42 -0
- package/dist/types/definers/builders/resource/index.d.ts +13 -0
- package/dist/types/definers/builders/resource/types.d.ts +37 -0
- package/dist/types/definers/builders/resource/utils.d.ts +26 -0
- package/dist/types/definers/builders/resource.d.ts +1 -0
- package/dist/types/definers/builders/tag/fluent-builder.d.ts +6 -0
- package/dist/types/definers/builders/tag/fluent-builder.interface.d.ts +8 -0
- package/dist/types/definers/builders/tag/index.d.ts +10 -0
- package/dist/types/definers/builders/tag/types.d.ts +12 -0
- package/dist/types/definers/builders/tag/utils.d.ts +5 -0
- package/dist/types/definers/builders/tag.d.ts +1 -0
- package/dist/types/definers/builders/task/fluent-builder.d.ts +8 -0
- package/dist/types/definers/builders/task/fluent-builder.interface.d.ts +33 -0
- package/dist/types/definers/builders/task/index.d.ts +21 -0
- package/dist/types/definers/builders/task/phantom-builder.d.ts +8 -0
- package/dist/types/definers/builders/task/phantom-builder.interface.d.ts +31 -0
- package/dist/types/definers/builders/task/types.d.ts +34 -0
- package/dist/types/definers/builders/task/utils.d.ts +14 -0
- package/dist/types/definers/builders/task.d.ts +1 -0
- package/dist/types/definers/builders/task.phantom.d.ts +1 -0
- package/dist/types/definers/builders/utils.d.ts +4 -0
- package/dist/types/definers/defineAsyncContext.d.ts +15 -0
- package/dist/types/definers/defineError.d.ts +27 -0
- package/dist/types/definers/defineEvent.d.ts +2 -0
- package/dist/types/definers/defineHook.d.ts +6 -0
- package/dist/types/definers/defineOverride.d.ts +12 -0
- package/dist/types/definers/defineResource.d.ts +2 -0
- package/dist/types/definers/defineResourceMiddleware.d.ts +2 -0
- package/dist/types/definers/defineTag.d.ts +12 -0
- package/dist/types/definers/defineTask.d.ts +18 -0
- package/dist/types/definers/defineTaskMiddleware.d.ts +2 -0
- package/dist/types/definers/middlewareConfig.d.ts +1 -0
- package/dist/types/definers/resourceFork.d.ts +13 -0
- package/dist/types/definers/tools.d.ts +53 -0
- package/dist/types/defs.d.ts +33 -0
- package/dist/types/errors.d.ts +75 -0
- package/dist/types/globals/debug.d.ts +10 -0
- package/dist/types/globals/globalEvents.d.ts +8 -0
- package/dist/types/globals/globalMiddleware.d.ts +97 -0
- package/dist/types/globals/globalResources.d.ts +64 -0
- package/dist/types/globals/globalTags.d.ts +12 -0
- package/dist/types/globals/middleware/cache.middleware.d.ts +36 -0
- package/dist/types/globals/middleware/circuitBreaker.middleware.d.ts +56 -0
- package/dist/types/globals/middleware/concurrency.middleware.d.ts +47 -0
- package/dist/types/globals/middleware/fallback.middleware.d.ts +23 -0
- package/dist/types/globals/middleware/rateLimit.middleware.d.ts +47 -0
- package/dist/types/globals/middleware/requireContext.middleware.d.ts +5 -0
- package/dist/types/globals/middleware/retry.middleware.d.ts +31 -0
- package/dist/types/globals/middleware/temporal.middleware.d.ts +48 -0
- package/dist/types/globals/middleware/timeout.middleware.d.ts +24 -0
- package/dist/types/globals/middleware/tunnel.middleware.d.ts +3 -0
- package/dist/types/globals/resources/debug/debug.resource.d.ts +7 -0
- package/dist/types/globals/resources/debug/debug.tag.d.ts +2 -0
- package/dist/types/globals/resources/debug/debugConfig.resource.d.ts +22 -0
- package/dist/types/globals/resources/debug/executionTracker.middleware.d.ts +50 -0
- package/dist/types/globals/resources/debug/globalEvent.hook.d.ts +27 -0
- package/dist/types/globals/resources/debug/hook.hook.d.ts +30 -0
- package/dist/types/globals/resources/debug/index.d.ts +6 -0
- package/dist/types/globals/resources/debug/middleware.hook.d.ts +30 -0
- package/dist/types/globals/resources/debug/types.d.ts +25 -0
- package/dist/types/globals/resources/debug/utils.d.ts +2 -0
- package/dist/types/globals/resources/httpClientFactory.resource.d.ts +28 -0
- package/dist/types/globals/resources/queue.resource.d.ts +10 -0
- package/dist/types/globals/resources/tunnel/error-utils.d.ts +1 -0
- package/dist/types/globals/resources/tunnel/plan.d.ts +19 -0
- package/dist/types/globals/resources/tunnel/protocol.d.ts +48 -0
- package/dist/types/globals/resources/tunnel/tunnel.policy.tag.d.ts +26 -0
- package/dist/types/globals/resources/tunnel/tunnel.tag.d.ts +2 -0
- package/dist/types/globals/resources/tunnel/types.d.ts +48 -0
- package/dist/types/globals/tunnels/index.d.ts +23 -0
- package/dist/types/globals/types.d.ts +15 -0
- package/dist/types/http-client.d.ts +26 -0
- package/dist/types/http-fetch-tunnel.resource.d.ts +11 -0
- package/dist/types/index.d.ts +44 -0
- package/dist/types/models/DependencyProcessor.d.ts +46 -0
- package/dist/types/models/EventManager.d.ts +115 -0
- package/dist/types/models/ExecutionJournal.d.ts +35 -0
- package/dist/types/models/LogPrinter.d.ts +56 -0
- package/dist/types/models/Logger.d.ts +85 -0
- package/dist/types/models/MiddlewareManager.d.ts +73 -0
- package/dist/types/models/OverrideManager.d.ts +13 -0
- package/dist/types/models/Queue.d.ts +40 -0
- package/dist/types/models/ResourceInitializer.d.ts +20 -0
- package/dist/types/models/RunResult.d.ts +41 -0
- package/dist/types/models/Semaphore.d.ts +80 -0
- package/dist/types/models/Store.d.ts +76 -0
- package/dist/types/models/StoreRegistry.d.ts +49 -0
- package/dist/types/models/StoreValidator.d.ts +8 -0
- package/dist/types/models/TaskRunner.d.ts +28 -0
- package/dist/types/models/UnhandledError.d.ts +11 -0
- package/dist/types/models/event/CycleContext.d.ts +9 -0
- package/dist/types/models/event/EmissionExecutor.d.ts +11 -0
- package/dist/types/models/event/InterceptorPipeline.d.ts +5 -0
- package/dist/types/models/event/ListenerRegistry.d.ts +31 -0
- package/dist/types/models/event/types.d.ts +50 -0
- package/dist/types/models/index.d.ts +13 -0
- package/dist/types/models/middleware/InterceptorRegistry.d.ts +56 -0
- package/dist/types/models/middleware/MiddlewareResolver.d.ts +31 -0
- package/dist/types/models/middleware/ResourceMiddlewareComposer.d.ts +34 -0
- package/dist/types/models/middleware/TaskMiddlewareComposer.d.ts +44 -0
- package/dist/types/models/middleware/ValidationHelper.d.ts +20 -0
- package/dist/types/models/middleware/index.d.ts +6 -0
- package/dist/types/models/middleware/types.d.ts +10 -0
- package/dist/types/models/utils/findCircularDependencies.d.ts +16 -0
- package/dist/types/models/utils/safeStringify.d.ts +3 -0
- package/dist/types/node/durable/bus/MemoryEventBus.d.ts +7 -0
- package/dist/types/node/durable/bus/NoopEventBus.d.ts +6 -0
- package/dist/types/node/durable/bus/RedisEventBus.d.ts +30 -0
- package/dist/types/node/durable/core/CronParser.d.ts +15 -0
- package/dist/types/node/durable/core/DurableContext.d.ts +64 -0
- package/dist/types/node/durable/core/DurableOperator.d.ts +47 -0
- package/dist/types/node/durable/core/DurableResource.d.ts +80 -0
- package/dist/types/node/durable/core/DurableService.d.ts +73 -0
- package/dist/types/node/durable/core/DurableWorker.d.ts +19 -0
- package/dist/types/node/durable/core/StepBuilder.d.ts +23 -0
- package/dist/types/node/durable/core/audit.d.ts +152 -0
- package/dist/types/node/durable/core/createRunnerDurableRuntime.d.ts +18 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.audit.d.ts +14 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.determinism.d.ts +13 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.emit.d.ts +16 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.sleep.d.ts +16 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.steps.d.ts +25 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.switch.d.ts +22 -0
- package/dist/types/node/durable/core/durable-context/DurableContext.waitForSignal.d.ts +23 -0
- package/dist/types/node/durable/core/flowShape.d.ts +50 -0
- package/dist/types/node/durable/core/ids.d.ts +11 -0
- package/dist/types/node/durable/core/index.d.ts +11 -0
- package/dist/types/node/durable/core/interfaces/bus.d.ts +13 -0
- package/dist/types/node/durable/core/interfaces/context.d.ts +105 -0
- package/dist/types/node/durable/core/interfaces/queue.d.ts +17 -0
- package/dist/types/node/durable/core/interfaces/service.d.ts +146 -0
- package/dist/types/node/durable/core/interfaces/store.d.ts +66 -0
- package/dist/types/node/durable/core/managers/AuditLogger.d.ts +29 -0
- package/dist/types/node/durable/core/managers/ExecutionManager.d.ts +48 -0
- package/dist/types/node/durable/core/managers/PollingManager.d.ts +48 -0
- package/dist/types/node/durable/core/managers/ScheduleManager.d.ts +33 -0
- package/dist/types/node/durable/core/managers/SignalHandler.d.ts +25 -0
- package/dist/types/node/durable/core/managers/TaskRegistry.d.ts +16 -0
- package/dist/types/node/durable/core/managers/WaitManager.d.ts +26 -0
- package/dist/types/node/durable/core/managers/index.d.ts +7 -0
- package/dist/types/node/durable/core/resource.d.ts +14 -0
- package/dist/types/node/durable/core/types.d.ts +84 -0
- package/dist/types/node/durable/core/utils.d.ts +28 -0
- package/dist/types/node/durable/dashboard/server.d.ts +20 -0
- package/dist/types/node/durable/emitters/runnerAuditEmitter.d.ts +6 -0
- package/dist/types/node/durable/events.d.ts +76 -0
- package/dist/types/node/durable/index.d.ts +34 -0
- package/dist/types/node/durable/optionalDeps/amqplib.d.ts +1 -0
- package/dist/types/node/durable/optionalDeps/ioredis.d.ts +1 -0
- package/dist/types/node/durable/queue/MemoryQueue.d.ts +12 -0
- package/dist/types/node/durable/queue/RabbitMQQueue.d.ts +30 -0
- package/dist/types/node/durable/resources/isolation.d.ts +15 -0
- package/dist/types/node/durable/resources/memoryDurableResource.d.ts +21 -0
- package/dist/types/node/durable/resources/redisDurableResource.d.ts +35 -0
- package/dist/types/node/durable/store/MemoryStore.d.ts +56 -0
- package/dist/types/node/durable/store/RedisStore.d.ts +89 -0
- package/dist/types/node/durable/test-utils.d.ts +29 -0
- package/dist/types/node/exposure/allowList.d.ts +3 -0
- package/dist/types/node/exposure/authenticator.d.ts +16 -0
- package/dist/types/node/exposure/cors.d.ts +4 -0
- package/dist/types/node/exposure/createNodeExposure.d.ts +2 -0
- package/dist/types/node/exposure/exposureServer.d.ts +18 -0
- package/dist/types/node/exposure/handlers/contextWrapper.d.ts +18 -0
- package/dist/types/node/exposure/handlers/errorHandlers.d.ts +23 -0
- package/dist/types/node/exposure/handlers/eventHandler.d.ts +20 -0
- package/dist/types/node/exposure/handlers/taskHandler.d.ts +24 -0
- package/dist/types/node/exposure/httpResponse.d.ts +10 -0
- package/dist/types/node/exposure/index.d.ts +3 -0
- package/dist/types/node/exposure/logging.d.ts +4 -0
- package/dist/types/node/exposure/multipart.d.ts +36 -0
- package/dist/types/node/exposure/requestBody.d.ts +11 -0
- package/dist/types/node/exposure/requestContext.d.ts +17 -0
- package/dist/types/node/exposure/requestHandlers.d.ts +29 -0
- package/dist/types/node/exposure/resource.d.ts +12 -0
- package/dist/types/node/exposure/resourceTypes.d.ts +73 -0
- package/dist/types/node/exposure/router.d.ts +17 -0
- package/dist/types/node/exposure/serverLifecycle.d.ts +13 -0
- package/dist/types/node/exposure/types.d.ts +45 -0
- package/dist/types/node/exposure/utils.d.ts +17 -0
- package/dist/types/node/files/createNodeFile.d.ts +9 -0
- package/dist/types/node/files/index.d.ts +4 -0
- package/dist/types/node/files/inputFile.model.d.ts +22 -0
- package/dist/types/node/files/inputFile.utils.d.ts +14 -0
- package/dist/types/node/http/http-mixed-client.d.ts +45 -0
- package/dist/types/node/http/http-mixed-client.factory.resource.d.ts +17 -0
- package/dist/types/node/http/http-smart-client.factory.resource.d.ts +16 -0
- package/dist/types/node/http/http-smart-client.model.d.ts +27 -0
- package/dist/types/node/http/index.d.ts +4 -0
- package/dist/types/node/index.d.ts +1 -0
- package/dist/types/node/node.d.ts +193 -0
- package/dist/types/node/platform/createFile.d.ts +9 -0
- package/dist/types/node/tunnel/allowlist.d.ts +7 -0
- package/dist/types/node/tunnel/index.d.ts +2 -0
- package/dist/types/node/upload/manifest.d.ts +23 -0
- package/dist/types/platform/adapters/browser.d.ts +14 -0
- package/dist/types/platform/adapters/edge.d.ts +5 -0
- package/dist/types/platform/adapters/node-als.d.ts +1 -0
- package/dist/types/platform/adapters/node.d.ts +15 -0
- package/dist/types/platform/adapters/universal-generic.d.ts +14 -0
- package/dist/types/platform/adapters/universal.d.ts +18 -0
- package/dist/types/platform/createFile.d.ts +10 -0
- package/dist/types/platform/createWebFile.d.ts +11 -0
- package/dist/types/platform/factory.d.ts +2 -0
- package/dist/types/platform/index.d.ts +27 -0
- package/dist/types/platform/types.d.ts +31 -0
- package/dist/types/processHooks.d.ts +2 -0
- package/dist/types/public-types.d.ts +13 -0
- package/dist/types/public.d.ts +210 -0
- package/dist/types/run.d.ts +14 -0
- package/dist/types/serializer/Serializer.d.ts +84 -0
- package/dist/types/serializer/binary-builtins.d.ts +5 -0
- package/dist/types/serializer/builtins.d.ts +47 -0
- package/dist/types/serializer/deserializer.d.ts +27 -0
- package/dist/types/serializer/error-url-builtins.d.ts +13 -0
- package/dist/types/serializer/graph-serializer.d.ts +27 -0
- package/dist/types/serializer/index.d.ts +6 -0
- package/dist/types/serializer/option-normalizers.d.ts +2 -0
- package/dist/types/serializer/regexp-validator.d.ts +34 -0
- package/dist/types/serializer/serialize-utils.d.ts +15 -0
- package/dist/types/serializer/special-values.d.ts +20 -0
- package/dist/types/serializer/tree-serializer.d.ts +20 -0
- package/dist/types/serializer/type-registry.d.ts +58 -0
- package/dist/types/serializer/types.d.ts +126 -0
- package/dist/types/serializer/validation.d.ts +34 -0
- package/dist/types/testing.d.ts +19 -0
- package/dist/types/tools/detectRunnerMode.d.ts +9 -0
- package/dist/types/tools/getCallerFile.d.ts +1 -0
- package/dist/types/tools/throws.d.ts +7 -0
- package/dist/types/tunnels/buildUniversalManifest.d.ts +24 -0
- package/dist/types/types/asyncContext.d.ts +41 -0
- package/dist/types/types/contracts.d.ts +62 -0
- package/dist/types/types/error.d.ts +39 -0
- package/dist/types/types/event.d.ts +79 -0
- package/dist/types/types/executionJournal.d.ts +29 -0
- package/dist/types/types/hook.d.ts +23 -0
- package/dist/types/types/inputFile.d.ts +34 -0
- package/dist/types/types/meta.d.ts +22 -0
- package/dist/types/types/resource.d.ts +133 -0
- package/dist/types/types/resourceMiddleware.d.ts +48 -0
- package/dist/types/types/runner.d.ts +68 -0
- package/dist/types/types/storeTypes.d.ts +46 -0
- package/dist/types/types/symbols.d.ts +34 -0
- package/dist/types/types/tag.d.ts +45 -0
- package/dist/types/types/task.d.ts +76 -0
- package/dist/types/types/taskMiddleware.d.ts +55 -0
- package/dist/types/types/utilities.d.ts +125 -0
- package/dist/universal/index.cjs +851 -476
- package/dist/universal/index.cjs.map +1 -1
- package/dist/universal/index.mjs +849 -476
- package/dist/universal/index.mjs.map +1 -1
- package/package.json +15 -14
- package/readmes/AI.md +30 -9
- package/dist/browser/index.d.mts +0 -2919
- package/dist/browser/index.d.ts +0 -2919
- package/dist/edge/index.d.mts +0 -2919
- package/dist/edge/index.d.ts +0 -2919
- package/dist/node/node.d.mts +0 -4622
- package/dist/node/node.d.ts +0 -4622
- package/dist/universal/index.d.mts +0 -2919
- package/dist/universal/index.d.ts +0 -2919
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type PrintStrategy = "pretty" | "plain" | "json" | "json_pretty";
|
|
2
|
+
export type LogLevels = "trace" | "debug" | "info" | "warn" | "error" | "critical";
|
|
3
|
+
export interface PrintableLog {
|
|
4
|
+
level: LogLevels;
|
|
5
|
+
source?: string;
|
|
6
|
+
message: any;
|
|
7
|
+
timestamp: Date;
|
|
8
|
+
error?: {
|
|
9
|
+
name: string;
|
|
10
|
+
message: string;
|
|
11
|
+
stack?: string;
|
|
12
|
+
};
|
|
13
|
+
data?: Record<string, any>;
|
|
14
|
+
context?: Record<string, any>;
|
|
15
|
+
}
|
|
16
|
+
export type ColorTheme = {
|
|
17
|
+
trace: string;
|
|
18
|
+
debug: string;
|
|
19
|
+
info: string;
|
|
20
|
+
warn: string;
|
|
21
|
+
error: string;
|
|
22
|
+
critical: string;
|
|
23
|
+
reset: string;
|
|
24
|
+
bold: string;
|
|
25
|
+
dim: string;
|
|
26
|
+
blue: string;
|
|
27
|
+
cyan: string;
|
|
28
|
+
gray: string;
|
|
29
|
+
};
|
|
30
|
+
export declare class LogPrinter {
|
|
31
|
+
private strategy;
|
|
32
|
+
private colors;
|
|
33
|
+
constructor(options: {
|
|
34
|
+
strategy: PrintStrategy;
|
|
35
|
+
useColors: boolean;
|
|
36
|
+
colorTheme?: Partial<ColorTheme>;
|
|
37
|
+
});
|
|
38
|
+
print(log: PrintableLog): void;
|
|
39
|
+
private pickWriter;
|
|
40
|
+
private formatTime;
|
|
41
|
+
private formatLevel;
|
|
42
|
+
private formatSource;
|
|
43
|
+
private formatMessage;
|
|
44
|
+
private formatError;
|
|
45
|
+
private formatData;
|
|
46
|
+
private formatContext;
|
|
47
|
+
private normalizeForJson;
|
|
48
|
+
private static NO_COLORS;
|
|
49
|
+
private static readonly DEFAULT_WRITERS;
|
|
50
|
+
private static writers;
|
|
51
|
+
static setWriters(writers: Partial<{
|
|
52
|
+
log: (msg: any) => void;
|
|
53
|
+
error?: (msg: any) => void;
|
|
54
|
+
}>): void;
|
|
55
|
+
static resetWriters(): void;
|
|
56
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { LogPrinter, PrintStrategy as PrinterStrategy } from "./LogPrinter";
|
|
2
|
+
export type LogLevels = "trace" | "debug" | "info" | "warn" | "error" | "critical";
|
|
3
|
+
export interface ILogInfo {
|
|
4
|
+
source?: string;
|
|
5
|
+
error?: unknown | Error;
|
|
6
|
+
data?: Record<string, any>;
|
|
7
|
+
context?: Record<string, any>;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
export interface ILog {
|
|
11
|
+
level: LogLevels;
|
|
12
|
+
source?: string;
|
|
13
|
+
message: any;
|
|
14
|
+
timestamp: Date;
|
|
15
|
+
error?: {
|
|
16
|
+
name: string;
|
|
17
|
+
message: string;
|
|
18
|
+
stack?: string;
|
|
19
|
+
};
|
|
20
|
+
data?: Record<string, any>;
|
|
21
|
+
context?: Record<string, any>;
|
|
22
|
+
}
|
|
23
|
+
export type PrintStrategy = PrinterStrategy;
|
|
24
|
+
export declare class Logger {
|
|
25
|
+
private printThreshold;
|
|
26
|
+
private printStrategy;
|
|
27
|
+
private bufferLogs;
|
|
28
|
+
private buffer;
|
|
29
|
+
private boundContext;
|
|
30
|
+
private isLocked;
|
|
31
|
+
private useColors;
|
|
32
|
+
private printer;
|
|
33
|
+
private source?;
|
|
34
|
+
private rootLogger?;
|
|
35
|
+
localListeners: Array<(log: ILog) => void | Promise<void>>;
|
|
36
|
+
static Severity: {
|
|
37
|
+
trace: number;
|
|
38
|
+
debug: number;
|
|
39
|
+
info: number;
|
|
40
|
+
warn: number;
|
|
41
|
+
error: number;
|
|
42
|
+
critical: number;
|
|
43
|
+
};
|
|
44
|
+
constructor(options: {
|
|
45
|
+
printThreshold: null | LogLevels;
|
|
46
|
+
printStrategy: PrintStrategy;
|
|
47
|
+
bufferLogs: boolean;
|
|
48
|
+
useColors?: boolean;
|
|
49
|
+
}, boundContext?: Record<string, any>, source?: string, printer?: LogPrinter);
|
|
50
|
+
private detectColorSupport;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new logger instance with additional bound context
|
|
53
|
+
*/
|
|
54
|
+
with({ source, additionalContext: context, }: {
|
|
55
|
+
source?: string;
|
|
56
|
+
additionalContext?: Record<string, any>;
|
|
57
|
+
}): Logger;
|
|
58
|
+
/**
|
|
59
|
+
* Core logging method with structured LogInfo
|
|
60
|
+
*/
|
|
61
|
+
log(level: LogLevels, message: any, logInfo?: ILogInfo): Promise<void>;
|
|
62
|
+
private extractErrorInfo;
|
|
63
|
+
info(message: any, logInfo?: ILogInfo): Promise<void>;
|
|
64
|
+
error(message: any, logInfo?: ILogInfo): Promise<void>;
|
|
65
|
+
warn(message: any, logInfo?: ILogInfo): Promise<void>;
|
|
66
|
+
debug(message: any, logInfo?: ILogInfo): Promise<void>;
|
|
67
|
+
trace(message: any, logInfo?: ILogInfo): Promise<void>;
|
|
68
|
+
critical(message: any, logInfo?: ILogInfo): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Direct print for tests and advanced scenarios. Delegates to LogPrinter.
|
|
71
|
+
*/
|
|
72
|
+
print(log: ILog): void;
|
|
73
|
+
/**
|
|
74
|
+
* @param listener - A listener that will be triggered for every log.
|
|
75
|
+
*/
|
|
76
|
+
onLog(listener: (log: ILog) => any): void;
|
|
77
|
+
/**
|
|
78
|
+
* Marks the logger as ready.
|
|
79
|
+
* This is used to trigger the local listeners and print the buffered logs (if they exists)
|
|
80
|
+
* @returns A promise that resolves when the logger is ready.
|
|
81
|
+
*/
|
|
82
|
+
lock(): Promise<void>;
|
|
83
|
+
private canPrint;
|
|
84
|
+
private triggerLogListeners;
|
|
85
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { DependencyMapType, ITask, IResource } from "../defs";
|
|
2
|
+
import { Store } from "./Store";
|
|
3
|
+
import { ITaskMiddleware, IResourceMiddleware } from "../defs";
|
|
4
|
+
import { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor } from "./middleware/types";
|
|
5
|
+
export type { TaskMiddlewareInterceptor, ResourceMiddlewareInterceptor };
|
|
6
|
+
/**
|
|
7
|
+
* Centralizes middleware composition and execution for both tasks and resources.
|
|
8
|
+
* Keeps observability emissions and unhandled error routing consistent.
|
|
9
|
+
*
|
|
10
|
+
* This is a facade that delegates to specialized composer classes for maintainability.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MiddlewareManager {
|
|
13
|
+
protected readonly store: Store;
|
|
14
|
+
private readonly interceptorRegistry;
|
|
15
|
+
private readonly middlewareResolver;
|
|
16
|
+
private readonly taskComposer;
|
|
17
|
+
private readonly resourceComposer;
|
|
18
|
+
constructor(store: Store, _eventManager: unknown, _logger: unknown);
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
get taskMiddlewareInterceptors(): readonly TaskMiddlewareInterceptor[];
|
|
23
|
+
/**
|
|
24
|
+
* @internal
|
|
25
|
+
*/
|
|
26
|
+
get resourceMiddlewareInterceptors(): readonly ResourceMiddlewareInterceptor[];
|
|
27
|
+
/**
|
|
28
|
+
* Gets the current lock status of the MiddlewareManager
|
|
29
|
+
*/
|
|
30
|
+
get isLocked(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Locks the MiddlewareManager, preventing any further modifications to interceptors
|
|
33
|
+
*/
|
|
34
|
+
lock(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Adds an interceptor for task or resource middleware execution
|
|
37
|
+
* Interceptors are executed in the order they are added, with the ability to
|
|
38
|
+
* modify, log, or prevent middleware execution
|
|
39
|
+
*
|
|
40
|
+
* @param kind - The type of middleware to intercept ("task" or "resource")
|
|
41
|
+
* @param interceptor - The interceptor function to add
|
|
42
|
+
*/
|
|
43
|
+
intercept(kind: "task", interceptor: TaskMiddlewareInterceptor): void;
|
|
44
|
+
intercept(kind: "resource", interceptor: ResourceMiddlewareInterceptor): void;
|
|
45
|
+
/**
|
|
46
|
+
* Adds an interceptor for a specific middleware instance with better type safety
|
|
47
|
+
* This method automatically determines the type and provides type-safe access
|
|
48
|
+
*
|
|
49
|
+
* @param middleware - The middleware instance to intercept
|
|
50
|
+
* @param interceptor - The interceptor function with proper typing
|
|
51
|
+
*/
|
|
52
|
+
interceptMiddleware(middleware: ITaskMiddleware<any, any, any, any>, interceptor: TaskMiddlewareInterceptor): void;
|
|
53
|
+
interceptMiddleware(middleware: IResourceMiddleware<any, any, any, any>, interceptor: ResourceMiddlewareInterceptor): void;
|
|
54
|
+
/**
|
|
55
|
+
* Compose a runner for a task with its local interceptors and applicable middlewares.
|
|
56
|
+
* Returns a function that accepts the task input and resolves to the task output.
|
|
57
|
+
*/
|
|
58
|
+
composeTaskRunner<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType>(task: ITask<TInput, TOutput, TDeps>): (input: TInput, parentJournal?: import("..").ExecutionJournal) => Promise<Awaited<TOutput>>;
|
|
59
|
+
/**
|
|
60
|
+
* Run a resource init wrapped with its applicable middlewares.
|
|
61
|
+
*/
|
|
62
|
+
runResourceInit<C, V extends Promise<any>, D extends DependencyMapType, TContext>(resource: IResource<C, V, D, TContext>, config: C, dependencies: any, context: TContext): Promise<V | undefined>;
|
|
63
|
+
/**
|
|
64
|
+
* Gets all "everywhere" middlewares that apply to the given task
|
|
65
|
+
* @deprecated Internal method exposed for testing - may be removed in future versions
|
|
66
|
+
*/
|
|
67
|
+
getEverywhereMiddlewareForTasks(task: ITask<any, any, any>): ITaskMiddleware[];
|
|
68
|
+
/**
|
|
69
|
+
* Gets all "everywhere" middlewares that apply to the given resource
|
|
70
|
+
* @deprecated Internal method exposed for testing - may be removed in future versions
|
|
71
|
+
*/
|
|
72
|
+
getEverywhereMiddlewareForResources(resource: IResource<any, any, any, any>): IResourceMiddleware[];
|
|
73
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IResource, ITaskMiddleware, IResourceMiddleware, ITask, IResourceWithConfig, RegisterableItems, IHook } from "../defs";
|
|
2
|
+
import { StoreRegistry } from "./StoreRegistry";
|
|
3
|
+
export declare class OverrideManager {
|
|
4
|
+
private readonly registry;
|
|
5
|
+
overrides: Map<string, IResource | ITaskMiddleware | IResourceMiddleware | ITask | IResourceWithConfig | IHook>;
|
|
6
|
+
overrideRequests: Set<{
|
|
7
|
+
source: string;
|
|
8
|
+
override: RegisterableItems;
|
|
9
|
+
}>;
|
|
10
|
+
constructor(registry: StoreRegistry);
|
|
11
|
+
storeOverridesDeeply<C>(element: IResource<C, any, any>): void;
|
|
12
|
+
processOverrides(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type QueueEventType = "enqueue" | "start" | "finish" | "error" | "cancel" | "disposed";
|
|
2
|
+
export type QueueEvent = {
|
|
3
|
+
type: QueueEventType;
|
|
4
|
+
taskId: number;
|
|
5
|
+
disposed: boolean;
|
|
6
|
+
error?: Error;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Cooperative task queue.
|
|
10
|
+
* • Tasks run one‑after‑another (FIFO ordering).
|
|
11
|
+
* • Dead‑lock detection prevents nesting.
|
|
12
|
+
* • dispose() drains or cancels outstanding tasks, then rejects new ones.
|
|
13
|
+
*/
|
|
14
|
+
export declare class Queue {
|
|
15
|
+
private tail;
|
|
16
|
+
private disposed;
|
|
17
|
+
private abortController;
|
|
18
|
+
private readonly eventManager;
|
|
19
|
+
private nextTaskId;
|
|
20
|
+
private listenerId;
|
|
21
|
+
private activeListeners;
|
|
22
|
+
private readonly executionContext;
|
|
23
|
+
private readonly hasAsyncLocalStorage;
|
|
24
|
+
/**
|
|
25
|
+
* Schedule an asynchronous task.
|
|
26
|
+
* @param task – receives an AbortSignal so it can cancel early if desired.
|
|
27
|
+
*/
|
|
28
|
+
run<T>(task: (signal: AbortSignal) => Promise<T>): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Disposes the queue.
|
|
31
|
+
* @param options.cancel – if true, broadcasts AbortSignal to running task.
|
|
32
|
+
* default: false (waits for tasks to finish).
|
|
33
|
+
*/
|
|
34
|
+
dispose(options?: {
|
|
35
|
+
cancel?: boolean;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
on(type: QueueEventType, handler: (event: QueueEvent) => any): () => void;
|
|
38
|
+
once(type: QueueEventType, handler: (event: QueueEvent) => any): () => void;
|
|
39
|
+
private emit;
|
|
40
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DependencyMapType, IResource, ResourceDependencyValuesType } from "../defs";
|
|
2
|
+
import { EventManager } from "./EventManager";
|
|
3
|
+
import { Store } from "./Store";
|
|
4
|
+
import { Logger } from "./Logger";
|
|
5
|
+
export declare class ResourceInitializer {
|
|
6
|
+
protected readonly store: Store;
|
|
7
|
+
protected readonly eventManager: EventManager;
|
|
8
|
+
protected readonly logger: Logger;
|
|
9
|
+
constructor(store: Store, eventManager: EventManager, logger: Logger);
|
|
10
|
+
private readonly middlewareManager;
|
|
11
|
+
/**
|
|
12
|
+
* Begins the execution of a task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
|
|
13
|
+
* This function can throw only if any of the event listeners or run function throws
|
|
14
|
+
*/
|
|
15
|
+
initializeResource<TConfig = null, TValue extends Promise<any> = Promise<any>, TDeps extends DependencyMapType = {}, TContext = any>(resource: IResource<TConfig, TValue, TDeps>, config: TConfig, dependencies: ResourceDependencyValuesType<TDeps>): Promise<{
|
|
16
|
+
value: TValue | undefined;
|
|
17
|
+
context: TContext;
|
|
18
|
+
}>;
|
|
19
|
+
initWithMiddleware<C, V extends Promise<any>, D extends DependencyMapType, TContext>(resource: IResource<C, V, D, TContext>, config: C, dependencies: ResourceDependencyValuesType<D>, context: TContext): Promise<V | undefined>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { DependencyMapType, IEvent, ITask } from "../defs";
|
|
2
|
+
import { IResource } from "../defs";
|
|
3
|
+
import { EventManager } from "./EventManager";
|
|
4
|
+
import { Logger } from "./Logger";
|
|
5
|
+
import { Store } from "./Store";
|
|
6
|
+
import { TaskRunner } from "./TaskRunner";
|
|
7
|
+
export declare class RunResult<V> {
|
|
8
|
+
readonly value: V;
|
|
9
|
+
readonly logger: Logger;
|
|
10
|
+
readonly store: Store;
|
|
11
|
+
private readonly eventManager;
|
|
12
|
+
private readonly taskRunner;
|
|
13
|
+
private readonly disposeFn;
|
|
14
|
+
constructor(value: V, logger: Logger, store: Store, eventManager: EventManager, taskRunner: TaskRunner, disposeFn: () => Promise<void>);
|
|
15
|
+
/**
|
|
16
|
+
* Run a task within the context of the run result.
|
|
17
|
+
* @param task - The task to run.
|
|
18
|
+
* @param args - The arguments to pass to the task.
|
|
19
|
+
* @returns The result of the task.
|
|
20
|
+
*/
|
|
21
|
+
runTask: <I = undefined, O extends Promise<any> = any, D extends DependencyMapType = any>(task: ITask<I, O, D> | string, ...args: I extends undefined | void ? [] : [I]) => Promise<O | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Emit an event within the context of the run result.
|
|
24
|
+
* @param event - The event to emit.
|
|
25
|
+
* @param payload - The payload to emit.
|
|
26
|
+
*/
|
|
27
|
+
emitEvent: <P>(event: IEvent<P> | string, payload?: P extends undefined | void ? undefined : P) => Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Get the value of a resource from the run result.
|
|
30
|
+
* @param resource - The resource to get the value of.
|
|
31
|
+
* @returns The value of the resource.
|
|
32
|
+
*/
|
|
33
|
+
getResourceValue: <Output extends Promise<any>>(resource: string | IResource<any, Output, any, any, any>) => Output extends Promise<infer U> ? U : Output;
|
|
34
|
+
/**
|
|
35
|
+
* Get the config of a resource from the run result.
|
|
36
|
+
* @param resource - The resource to get the config of.
|
|
37
|
+
* @returns The config passed for the resource.
|
|
38
|
+
*/
|
|
39
|
+
getResourceConfig: <Config>(resource: string | IResource<Config, any, any, any, any>) => Config;
|
|
40
|
+
dispose: () => Promise<void>;
|
|
41
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export type SemaphoreEventType = "queued" | "acquired" | "released" | "timeout" | "aborted" | "disposed";
|
|
2
|
+
export type SemaphoreEvent = {
|
|
3
|
+
type: SemaphoreEventType;
|
|
4
|
+
permits: number;
|
|
5
|
+
waiting: number;
|
|
6
|
+
maxPermits: number;
|
|
7
|
+
disposed: boolean;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* A semaphore that limits the number of concurrent operations.
|
|
11
|
+
* Used to prevent connection pool exhaustion by limiting concurrent
|
|
12
|
+
* database operations to the pool size.
|
|
13
|
+
*/
|
|
14
|
+
export declare class Semaphore {
|
|
15
|
+
private permits;
|
|
16
|
+
private waitingHead;
|
|
17
|
+
private waitingTail;
|
|
18
|
+
private waitingCount;
|
|
19
|
+
private disposed;
|
|
20
|
+
private readonly maxPermits;
|
|
21
|
+
private readonly eventManager;
|
|
22
|
+
private listenerId;
|
|
23
|
+
private activeListeners;
|
|
24
|
+
constructor(maxPermits: number);
|
|
25
|
+
/**
|
|
26
|
+
* Acquire a permit. If no permits are available, waits until one becomes available.
|
|
27
|
+
*/
|
|
28
|
+
acquire(options?: {
|
|
29
|
+
timeout?: number;
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Release a permit, allowing waiting operations to proceed.
|
|
34
|
+
*/
|
|
35
|
+
release(): void;
|
|
36
|
+
private removeFromQueue;
|
|
37
|
+
/**
|
|
38
|
+
* Execute a function with a permit, automatically releasing it afterwards.
|
|
39
|
+
*/
|
|
40
|
+
withPermit<T>(fn: () => Promise<T>, options?: {
|
|
41
|
+
timeout?: number;
|
|
42
|
+
signal?: AbortSignal;
|
|
43
|
+
}): Promise<T>;
|
|
44
|
+
/**
|
|
45
|
+
* Dispose the semaphore, rejecting all waiting operations and preventing new ones.
|
|
46
|
+
*/
|
|
47
|
+
dispose(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Get current number of available permits (for debugging)
|
|
50
|
+
*/
|
|
51
|
+
getAvailablePermits(): number;
|
|
52
|
+
/**
|
|
53
|
+
* Get current number of waiting operations (for debugging)
|
|
54
|
+
*/
|
|
55
|
+
getWaitingCount(): number;
|
|
56
|
+
/**
|
|
57
|
+
* Get maximum number of permits
|
|
58
|
+
*/
|
|
59
|
+
getMaxPermits(): number;
|
|
60
|
+
/**
|
|
61
|
+
* Check if the semaphore has been disposed
|
|
62
|
+
*/
|
|
63
|
+
isDisposed(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Get metrics about the current state of the semaphore
|
|
66
|
+
*/
|
|
67
|
+
getMetrics(): {
|
|
68
|
+
availablePermits: number;
|
|
69
|
+
waitingCount: number;
|
|
70
|
+
maxPermits: number;
|
|
71
|
+
utilization: number;
|
|
72
|
+
disposed: boolean;
|
|
73
|
+
};
|
|
74
|
+
on(type: SemaphoreEventType, handler: (event: SemaphoreEvent) => any): () => void;
|
|
75
|
+
once(type: SemaphoreEventType, handler: (event: SemaphoreEvent) => any): () => void;
|
|
76
|
+
private enqueue;
|
|
77
|
+
private dequeue;
|
|
78
|
+
private emit;
|
|
79
|
+
private buildEvent;
|
|
80
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { IResource, RegisterableItems, ITag, ITaskMiddleware, IResourceMiddleware } from "../defs";
|
|
2
|
+
import { EventManager } from "./EventManager";
|
|
3
|
+
import { Logger } from "./Logger";
|
|
4
|
+
import { ResourceStoreElementType, TaskStoreElementType, EventStoreElementType } from "../types/storeTypes";
|
|
5
|
+
import { TaskRunner } from "./TaskRunner";
|
|
6
|
+
import { OnUnhandledError } from "./UnhandledError";
|
|
7
|
+
import { MiddlewareManager } from "./MiddlewareManager";
|
|
8
|
+
import { RunnerMode } from "../types/runner";
|
|
9
|
+
export type { ResourceStoreElementType, TaskStoreElementType, EventStoreElementType, };
|
|
10
|
+
/**
|
|
11
|
+
* Store class which is used to store all the resources, tasks, middleware and events.
|
|
12
|
+
*/
|
|
13
|
+
export declare class Store {
|
|
14
|
+
#private;
|
|
15
|
+
protected readonly eventManager: EventManager;
|
|
16
|
+
protected readonly logger: Logger;
|
|
17
|
+
readonly onUnhandledError: OnUnhandledError;
|
|
18
|
+
root: ResourceStoreElementType;
|
|
19
|
+
private registry;
|
|
20
|
+
private overrideManager;
|
|
21
|
+
private validator;
|
|
22
|
+
private taskRunner?;
|
|
23
|
+
private middlewareManager;
|
|
24
|
+
private readonly initializedResourceIds;
|
|
25
|
+
mode: RunnerMode;
|
|
26
|
+
constructor(eventManager: EventManager, logger: Logger, onUnhandledError: OnUnhandledError, mode?: RunnerMode);
|
|
27
|
+
get tasks(): Map<string, TaskStoreElementType>;
|
|
28
|
+
get hooks(): Map<string, import("..").HookStoreElementType>;
|
|
29
|
+
get resources(): Map<string, ResourceStoreElementType>;
|
|
30
|
+
get events(): Map<string, EventStoreElementType>;
|
|
31
|
+
get errors(): Map<string, import("..").IErrorHelper<any>>;
|
|
32
|
+
get asyncContexts(): Map<string, import("..").IAsyncContext<any>>;
|
|
33
|
+
get taskMiddlewares(): Map<string, import("..").TaskMiddlewareStoreElementType>;
|
|
34
|
+
get resourceMiddlewares(): Map<string, import("..").ResourceMiddlewareStoreElementType>;
|
|
35
|
+
get tags(): Map<string, ITag<void, void, void>>;
|
|
36
|
+
get overrides(): Map<string, IResourceMiddleware<any, void, void, any> | import("..").ITask<any, any, {}, any, import("..").TagType[], import("..").TaskMiddlewareAttachmentType[]> | import("..").IHook<{}, any, any> | IResource<void, Promise<any>, any, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]> | ITaskMiddleware<any, void, void, any> | import("..").IResourceWithConfig<any, Promise<any>, any, any, any, import("..").TagType[], IResourceMiddleware<any, void, void, any>[]>>;
|
|
37
|
+
get overrideRequests(): Set<{
|
|
38
|
+
source: string;
|
|
39
|
+
override: RegisterableItems;
|
|
40
|
+
}>;
|
|
41
|
+
getMiddlewareManager(): MiddlewareManager;
|
|
42
|
+
get isLocked(): boolean;
|
|
43
|
+
lock(): void;
|
|
44
|
+
checkLock(): void;
|
|
45
|
+
private registerGlobalComponents;
|
|
46
|
+
setTaskRunner(taskRunner: TaskRunner): void;
|
|
47
|
+
private setupRootResource;
|
|
48
|
+
validateDependencyGraph(): void;
|
|
49
|
+
validateEventEmissionGraph(): void;
|
|
50
|
+
initializeStore(root: IResource<any, any, any, any, any>, config: any): void;
|
|
51
|
+
dispose(): Promise<void>;
|
|
52
|
+
recordResourceInitialized(resourceId: string): void;
|
|
53
|
+
private getResourcesInDisposeOrder;
|
|
54
|
+
/**
|
|
55
|
+
* Internal, avoid using this method directly.
|
|
56
|
+
*/
|
|
57
|
+
processOverrides(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Internal, avoid using this method directly.
|
|
60
|
+
* @param item
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
63
|
+
storeGenericItem<C>(item: RegisterableItems): void;
|
|
64
|
+
/**
|
|
65
|
+
* Returns all tasks with the given tag.
|
|
66
|
+
* @param tag - The tag to filter by.
|
|
67
|
+
* @returns The tasks with the given tag.
|
|
68
|
+
*/
|
|
69
|
+
getTasksWithTag(tag: string | ITag<any, any, any>): import("..").ITask<any, any, any, any, import("..").TagType[], import("..").TaskMiddlewareAttachmentType[]>[];
|
|
70
|
+
/**
|
|
71
|
+
* Returns all resources with the given tag.
|
|
72
|
+
* @param tag - The tag to filter by.
|
|
73
|
+
* @returns The resources with the given tag.
|
|
74
|
+
*/
|
|
75
|
+
getResourcesWithTag(tag: string | ITag<any, any, any>): IResource<any, any, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>[];
|
|
76
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { IResource, ITask, IResourceWithConfig, RegisterableItems, ITaskMiddleware, IResourceMiddleware, IEvent, ITag, IHook } from "../defs";
|
|
2
|
+
import { TaskStoreElementType, TaskMiddlewareStoreElementType, ResourceMiddlewareStoreElementType, ResourceStoreElementType, EventStoreElementType, HookStoreElementType } from "../defs";
|
|
3
|
+
import { StoreValidator } from "./StoreValidator";
|
|
4
|
+
import { Store } from "./Store";
|
|
5
|
+
import { IDependentNode } from "./utils/findCircularDependencies";
|
|
6
|
+
import { IErrorHelper } from "../types/error";
|
|
7
|
+
import type { IAsyncContext } from "../types/asyncContext";
|
|
8
|
+
type StoringMode = "normal" | "override";
|
|
9
|
+
export declare class StoreRegistry {
|
|
10
|
+
protected readonly store: Store;
|
|
11
|
+
tasks: Map<string, TaskStoreElementType>;
|
|
12
|
+
resources: Map<string, ResourceStoreElementType>;
|
|
13
|
+
events: Map<string, EventStoreElementType>;
|
|
14
|
+
taskMiddlewares: Map<string, TaskMiddlewareStoreElementType>;
|
|
15
|
+
resourceMiddlewares: Map<string, ResourceMiddlewareStoreElementType>;
|
|
16
|
+
hooks: Map<string, HookStoreElementType>;
|
|
17
|
+
tags: Map<string, ITag>;
|
|
18
|
+
asyncContexts: Map<string, IAsyncContext<any>>;
|
|
19
|
+
errors: Map<string, IErrorHelper<any>>;
|
|
20
|
+
private validator;
|
|
21
|
+
constructor(store: Store);
|
|
22
|
+
getValidator(): StoreValidator;
|
|
23
|
+
storeGenericItem<_C>(item: RegisterableItems): void;
|
|
24
|
+
storeError<_C>(item: IErrorHelper<any>): void;
|
|
25
|
+
storeAsyncContext<_C>(item: IAsyncContext<any>): void;
|
|
26
|
+
storeTag(item: ITag<any, any, any>): void;
|
|
27
|
+
storeHook<_C>(item: IHook<any, any>, overrideMode?: StoringMode): void;
|
|
28
|
+
storeTaskMiddleware<_C>(item: ITaskMiddleware<any>, storingMode?: StoringMode): void;
|
|
29
|
+
storeResourceMiddleware<_C>(item: IResourceMiddleware<any>, overrideMode?: StoringMode): void;
|
|
30
|
+
storeEvent<_C>(item: IEvent<void>): void;
|
|
31
|
+
storeResourceWithConfig<_C>(item: IResourceWithConfig<any, any, any>, storingMode?: StoringMode): IResource<any, any, any, any, any, import("..").TagType[], IResourceMiddleware<any, void, void, any>[]>;
|
|
32
|
+
computeRegistrationDeeply<_C>(element: IResource<_C>, config?: _C): void;
|
|
33
|
+
storeResource<_C>(item: IResource<any, any, any>, overrideMode?: StoringMode): IResource<any, any, any, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>;
|
|
34
|
+
storeTask<_C>(item: ITask<any, any, {}>, storingMode?: StoringMode): void;
|
|
35
|
+
getDependentNodes(): IDependentNode[];
|
|
36
|
+
/**
|
|
37
|
+
* Builds a directed graph of event emissions based on hooks listening to events
|
|
38
|
+
* and their dependencies on events (emission capability). Ignores wildcard hooks by default.
|
|
39
|
+
*/
|
|
40
|
+
buildEventEmissionGraph(): IDependentNode[];
|
|
41
|
+
private setupBlankNodes;
|
|
42
|
+
getTasksWithTag(tag: string | ITag): ITask<any, any, any, any, import("..").TagType[], import("..").TaskMiddlewareAttachmentType[]>[];
|
|
43
|
+
getResourcesWithTag(tag: string | ITag): IResource<any, any, {}, any, any, import("..").TagType[], import("..").ResourceMiddlewareAttachmentType[]>[];
|
|
44
|
+
/**
|
|
45
|
+
* Used to fetch the value cloned, and if we're dealing with an override, we need to extend the previous value.
|
|
46
|
+
*/
|
|
47
|
+
private getFreshValue;
|
|
48
|
+
}
|
|
49
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { StoreRegistry } from "./StoreRegistry";
|
|
2
|
+
export declare class StoreValidator {
|
|
3
|
+
private registry;
|
|
4
|
+
constructor(registry: StoreRegistry);
|
|
5
|
+
checkIfIDExists(id: string): void | never;
|
|
6
|
+
runSanityChecks(): void;
|
|
7
|
+
ensureAllTagsUsedAreRegistered(): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { DependencyMapType, ITask } from "../defs";
|
|
2
|
+
import { EventManager } from "./EventManager";
|
|
3
|
+
import { Store } from "./Store";
|
|
4
|
+
import { Logger } from "./Logger";
|
|
5
|
+
import type { ExecutionJournal } from "../types/executionJournal";
|
|
6
|
+
import type { TaskCallOptions } from "../types/utilities";
|
|
7
|
+
export declare class TaskRunner {
|
|
8
|
+
protected readonly store: Store;
|
|
9
|
+
protected readonly eventManager: EventManager;
|
|
10
|
+
protected readonly logger: Logger;
|
|
11
|
+
protected readonly runnerStore: Map<string | symbol, (input: any, journal?: ExecutionJournal) => Promise<any>>;
|
|
12
|
+
constructor(store: Store, eventManager: EventManager, logger: Logger);
|
|
13
|
+
private readonly middlewareManager;
|
|
14
|
+
/**
|
|
15
|
+
* Begins the execution of a task. These are registered tasks and all sanity checks have been performed at this stage to ensure consistency of the object.
|
|
16
|
+
* This function can throw only if any of the event listeners or run function throws
|
|
17
|
+
* @param task the task to be run
|
|
18
|
+
* @param input the input to be passed to the task
|
|
19
|
+
* @param options optional call options including journal for forwarding
|
|
20
|
+
*/
|
|
21
|
+
run<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType>(task: ITask<TInput, TOutput, TDeps>, input?: TInput, options?: TaskCallOptions): Promise<TOutput | undefined>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates the function with the chain of middleware.
|
|
24
|
+
* @param task
|
|
25
|
+
* @returns
|
|
26
|
+
*/
|
|
27
|
+
protected createRunnerWithMiddleware<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType>(task: ITask<TInput, TOutput, TDeps>): (input: TInput, parentJournal?: ExecutionJournal) => Promise<Awaited<TOutput>>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Logger } from "./Logger";
|
|
2
|
+
export type UnhandledErrorKind = "process" | "task" | "middleware" | "resourceInit" | "hook" | "run";
|
|
3
|
+
export interface OnUnhandledErrorInfo {
|
|
4
|
+
error: unknown;
|
|
5
|
+
kind?: UnhandledErrorKind;
|
|
6
|
+
source?: string;
|
|
7
|
+
}
|
|
8
|
+
export type OnUnhandledError = (info: OnUnhandledErrorInfo) => void | Promise<void>;
|
|
9
|
+
export declare function createDefaultUnhandledError(logger: Logger): OnUnhandledError;
|
|
10
|
+
export declare function bindProcessErrorHandler(handler: OnUnhandledError): (error: unknown, source: "uncaughtException" | "unhandledRejection") => void | Promise<void>;
|
|
11
|
+
export declare function safeReportUnhandledError(handler: OnUnhandledError, info: OnUnhandledErrorInfo): Promise<void>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IEmissionFrame } from "./types";
|
|
2
|
+
export declare class CycleContext {
|
|
3
|
+
private readonly emissionStack;
|
|
4
|
+
private readonly currentHookIdContext;
|
|
5
|
+
readonly isEnabled: boolean;
|
|
6
|
+
constructor(runtimeEventCycleDetection: boolean);
|
|
7
|
+
runEmission<TResult>(frame: IEmissionFrame, source: string, processEmission: () => Promise<TResult>): Promise<TResult>;
|
|
8
|
+
runHook<T>(hookId: string, execute: () => Promise<T>): Promise<T>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IEventEmission } from "../../defs";
|
|
2
|
+
import { IListenerStorage } from "./types";
|
|
3
|
+
interface ExecuteOptions {
|
|
4
|
+
listeners: IListenerStorage[];
|
|
5
|
+
event: IEventEmission<any>;
|
|
6
|
+
isPropagationStopped: () => boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function executeSequentially({ listeners, event, isPropagationStopped, }: ExecuteOptions): Promise<void>;
|
|
9
|
+
export declare function executeInParallel({ listeners, event, }: Omit<ExecuteOptions, "isPropagationStopped">): Promise<void>;
|
|
10
|
+
export declare function shouldExecuteListener(listener: IListenerStorage, event: IEventEmission<any>): boolean;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility to compose an array of interceptors into a single function.
|
|
3
|
+
* Last-added interceptor executes first (LIFO).
|
|
4
|
+
*/
|
|
5
|
+
export declare function composeInterceptors<TArgs extends any[], TResult>(interceptors: Array<(next: (...args: TArgs) => Promise<TResult>, ...args: TArgs) => Promise<TResult>>, base: (...args: TArgs) => Promise<TResult>): (...args: TArgs) => Promise<TResult>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IEvent } from "../../defs";
|
|
2
|
+
import { IListenerStorage } from "./types";
|
|
3
|
+
type IsExcludedFromGlobal = (event: IEvent<any>) => boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Manages event-specific and global listener collections plus caching.
|
|
6
|
+
* Keeps ordering invariant using binary insertion.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ListenerRegistry {
|
|
9
|
+
readonly listeners: Map<string, IListenerStorage[]>;
|
|
10
|
+
readonly globalListeners: IListenerStorage[];
|
|
11
|
+
readonly cachedMergedListeners: Map<string, IListenerStorage[]>;
|
|
12
|
+
private _globalListenersCacheValid;
|
|
13
|
+
private readonly isExcludedFromGlobal;
|
|
14
|
+
constructor(isExcludedFromGlobal?: IsExcludedFromGlobal);
|
|
15
|
+
get globalListenersCacheValid(): boolean;
|
|
16
|
+
addListener(eventId: string, newListener: IListenerStorage): void;
|
|
17
|
+
addGlobalListener(newListener: IListenerStorage): void;
|
|
18
|
+
getListenersForEmit(eventDefinition: IEvent<any>): IListenerStorage[];
|
|
19
|
+
hasListeners(eventDefinition: IEvent<any>): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Cached merge between event-specific and global listeners.
|
|
22
|
+
* Exposed for backward compatibility with existing tests.
|
|
23
|
+
*/
|
|
24
|
+
clear(): void;
|
|
25
|
+
getCachedMergedListeners(eventId: string): IListenerStorage[];
|
|
26
|
+
private invalidateCache;
|
|
27
|
+
private mergeSortedListeners;
|
|
28
|
+
private insertListener;
|
|
29
|
+
}
|
|
30
|
+
export declare function createListener(newListener: Partial<IListenerStorage>): IListenerStorage;
|
|
31
|
+
export {};
|