@bluelibs/runner 3.4.2 → 4.0.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/AI.md +621 -0
- package/README.md +1024 -577
- package/dist/context.d.ts +4 -8
- package/dist/context.js +5 -12
- package/dist/context.js.map +1 -1
- package/dist/define.d.ts +9 -113
- package/dist/define.js +29 -358
- package/dist/define.js.map +1 -1
- package/dist/definers/defineEvent.d.ts +2 -0
- package/dist/definers/defineEvent.js +23 -0
- package/dist/definers/defineEvent.js.map +1 -0
- package/dist/definers/defineHook.d.ts +6 -0
- package/dist/definers/defineHook.js +24 -0
- package/dist/definers/defineHook.js.map +1 -0
- package/dist/definers/defineOverride.d.ts +14 -0
- package/dist/definers/defineOverride.js +13 -0
- package/dist/definers/defineOverride.js.map +1 -0
- package/dist/definers/defineResource.d.ts +2 -0
- package/dist/definers/defineResource.js +69 -0
- package/dist/definers/defineResource.js.map +1 -0
- package/dist/definers/defineResourceMiddleware.d.ts +2 -0
- package/dist/definers/defineResourceMiddleware.js +42 -0
- package/dist/definers/defineResourceMiddleware.js.map +1 -0
- package/dist/definers/defineTag.d.ts +12 -0
- package/dist/definers/defineTag.js +106 -0
- package/dist/definers/defineTag.js.map +1 -0
- package/dist/definers/defineTask.d.ts +15 -0
- package/dist/definers/defineTask.js +42 -0
- package/dist/definers/defineTask.js.map +1 -0
- package/dist/definers/defineTaskMiddleware.d.ts +2 -0
- package/dist/definers/defineTaskMiddleware.js +42 -0
- package/dist/definers/defineTaskMiddleware.js.map +1 -0
- package/dist/definers/tools.d.ts +45 -0
- package/dist/definers/tools.js +75 -0
- package/dist/definers/tools.js.map +1 -0
- package/dist/defs.d.ts +16 -424
- package/dist/defs.js +26 -38
- package/dist/defs.js.map +1 -1
- package/dist/errors.d.ts +23 -8
- package/dist/errors.js +50 -10
- package/dist/errors.js.map +1 -1
- package/dist/globals/globalEvents.d.ts +15 -39
- package/dist/globals/globalEvents.js +20 -81
- package/dist/globals/globalEvents.js.map +1 -1
- package/dist/globals/globalMiddleware.d.ts +24 -17
- package/dist/globals/globalMiddleware.js +12 -4
- package/dist/globals/globalMiddleware.js.map +1 -1
- package/dist/globals/globalResources.d.ts +13 -28
- package/dist/globals/globalResources.js +15 -7
- package/dist/globals/globalResources.js.map +1 -1
- package/dist/globals/globalTags.d.ts +9 -0
- package/dist/globals/globalTags.js +23 -0
- package/dist/globals/globalTags.js.map +1 -0
- package/dist/globals/middleware/cache.middleware.d.ts +10 -17
- package/dist/globals/middleware/cache.middleware.js +4 -16
- package/dist/globals/middleware/cache.middleware.js.map +1 -1
- package/dist/globals/middleware/requireContext.middleware.d.ts +1 -1
- package/dist/globals/middleware/requireContext.middleware.js +5 -14
- package/dist/globals/middleware/requireContext.middleware.js.map +1 -1
- package/dist/globals/middleware/retry.middleware.d.ts +2 -1
- package/dist/globals/middleware/retry.middleware.js +32 -5
- package/dist/globals/middleware/retry.middleware.js.map +1 -1
- package/dist/globals/middleware/timeout.middleware.d.ts +2 -1
- package/dist/globals/middleware/timeout.middleware.js +31 -5
- package/dist/globals/middleware/timeout.middleware.js.map +1 -1
- package/dist/globals/resources/debug/debug.resource.d.ts +7 -0
- package/dist/globals/resources/debug/debug.resource.js +29 -0
- package/dist/globals/resources/debug/debug.resource.js.map +1 -0
- package/dist/globals/resources/debug/debug.tag.d.ts +2 -0
- package/dist/globals/resources/debug/debug.tag.js +12 -0
- package/dist/globals/resources/debug/debug.tag.js.map +1 -0
- package/dist/globals/resources/debug/debugConfig.resource.d.ts +22 -0
- package/dist/globals/resources/debug/debugConfig.resource.js +20 -0
- package/dist/globals/resources/debug/debugConfig.resource.js.map +1 -0
- package/dist/globals/resources/debug/executionTracker.middleware.d.ts +50 -0
- package/dist/globals/resources/debug/executionTracker.middleware.js +87 -0
- package/dist/globals/resources/debug/executionTracker.middleware.js.map +1 -0
- package/dist/globals/resources/debug/globalEvent.hook.d.ts +27 -0
- package/dist/globals/resources/debug/globalEvent.hook.js +38 -0
- package/dist/globals/resources/debug/globalEvent.hook.js.map +1 -0
- package/dist/globals/resources/debug/hook.hook.d.ts +25 -0
- package/dist/globals/resources/debug/hook.hook.js +42 -0
- package/dist/globals/resources/debug/hook.hook.js.map +1 -0
- package/dist/globals/resources/debug/index.d.ts +6 -0
- package/dist/{types → globals/resources/debug}/index.js +6 -11
- package/dist/globals/resources/debug/index.js.map +1 -0
- package/dist/globals/resources/debug/middleware.hook.d.ts +25 -0
- package/dist/globals/resources/debug/middleware.hook.js +71 -0
- package/dist/globals/resources/debug/middleware.hook.js.map +1 -0
- package/dist/globals/resources/debug/types.d.ts +25 -0
- package/dist/globals/resources/debug/types.js +65 -0
- package/dist/globals/resources/debug/types.js.map +1 -0
- package/dist/globals/resources/debug/utils.d.ts +2 -0
- package/dist/globals/resources/debug/utils.js +9 -0
- package/dist/globals/resources/debug/utils.js.map +1 -0
- package/dist/globals/resources/queue.resource.d.ts +3 -3
- package/dist/globals/resources/queue.resource.js.map +1 -1
- package/dist/globals/types.d.ts +1 -0
- package/dist/{task.types.js → globals/types.js} +2 -7
- package/dist/globals/types.js.map +1 -0
- package/dist/index.d.ts +58 -85
- package/dist/index.js +23 -10
- package/dist/index.js.map +1 -1
- package/dist/models/DependencyProcessor.d.ts +8 -6
- package/dist/models/DependencyProcessor.js +116 -33
- package/dist/models/DependencyProcessor.js.map +1 -1
- package/dist/models/EventManager.d.ts +127 -7
- package/dist/models/EventManager.js +251 -78
- package/dist/models/EventManager.js.map +1 -1
- package/dist/models/LogPrinter.d.ts +55 -0
- package/dist/models/LogPrinter.js +196 -0
- package/dist/models/LogPrinter.js.map +1 -0
- package/dist/models/Logger.d.ts +47 -27
- package/dist/models/Logger.js +133 -155
- package/dist/models/Logger.js.map +1 -1
- package/dist/models/MiddlewareManager.d.ts +86 -0
- package/dist/models/MiddlewareManager.js +409 -0
- package/dist/models/MiddlewareManager.js.map +1 -0
- package/dist/models/OverrideManager.d.ts +3 -3
- package/dist/models/OverrideManager.js +22 -7
- package/dist/models/OverrideManager.js.map +1 -1
- package/dist/models/ResourceInitializer.d.ts +4 -3
- package/dist/models/ResourceInitializer.js +12 -68
- package/dist/models/ResourceInitializer.js.map +1 -1
- package/dist/models/RunResult.d.ts +35 -0
- package/dist/models/RunResult.js +68 -0
- package/dist/models/RunResult.js.map +1 -0
- package/dist/models/Store.d.ts +30 -17
- package/dist/models/Store.js +87 -25
- package/dist/models/Store.js.map +1 -1
- package/dist/models/StoreRegistry.d.ts +34 -19
- package/dist/models/StoreRegistry.js +248 -100
- package/dist/models/StoreRegistry.js.map +1 -1
- package/dist/models/StoreValidator.d.ts +5 -7
- package/dist/models/StoreValidator.js +50 -17
- package/dist/models/StoreValidator.js.map +1 -1
- package/dist/models/TaskRunner.d.ts +3 -2
- package/dist/models/TaskRunner.js +6 -103
- package/dist/models/TaskRunner.js.map +1 -1
- package/dist/models/UnhandledError.d.ts +11 -0
- package/dist/models/UnhandledError.js +30 -0
- package/dist/models/UnhandledError.js.map +1 -0
- package/dist/models/index.d.ts +3 -0
- package/dist/models/index.js +3 -0
- package/dist/models/index.js.map +1 -1
- package/dist/{tools → models/utils}/findCircularDependencies.js +8 -16
- package/dist/models/utils/findCircularDependencies.js.map +1 -0
- package/dist/models/utils/safeStringify.d.ts +3 -0
- package/dist/models/utils/safeStringify.js +45 -0
- package/dist/models/utils/safeStringify.js.map +1 -0
- package/dist/processHooks.d.ts +2 -0
- package/dist/processHooks.js +70 -0
- package/dist/processHooks.js.map +1 -0
- package/dist/run.d.ts +14 -27
- package/dist/run.js +100 -36
- package/dist/run.js.map +1 -1
- package/dist/testing.d.ts +5 -4
- package/dist/testing.js +3 -2
- package/dist/testing.js.map +1 -1
- package/dist/tools/getCallerFile.d.ts +0 -8
- package/dist/tools/getCallerFile.js +0 -51
- package/dist/tools/getCallerFile.js.map +1 -1
- package/dist/types/contracts.d.ts +55 -0
- package/dist/types/contracts.js +4 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/event.d.ts +26 -7
- package/dist/types/event.js +1 -1
- package/dist/types/event.js.map +1 -1
- package/dist/types/hook.d.ts +21 -0
- package/dist/{models/StoreTypes.js → types/hook.js} +2 -1
- package/dist/types/hook.js.map +1 -0
- package/dist/types/meta.d.ts +6 -1
- package/dist/types/meta.js +4 -2
- package/dist/types/meta.js.map +1 -1
- package/dist/types/resource.d.ts +40 -52
- package/dist/types/resource.js +1 -0
- package/dist/types/resource.js.map +1 -1
- package/dist/types/resourceMiddleware.d.ts +47 -0
- package/dist/{middleware.types.js → types/resourceMiddleware.js} +1 -1
- package/dist/types/resourceMiddleware.js.map +1 -0
- package/dist/types/runner.d.ts +37 -0
- package/dist/types/{base.js → runner.js} +1 -1
- package/dist/types/runner.js.map +1 -0
- package/dist/types/storeTypes.d.ts +40 -0
- package/dist/types/{metadata.js → storeTypes.js} +1 -1
- package/dist/types/storeTypes.js.map +1 -0
- package/dist/types/symbols.d.ts +10 -21
- package/dist/types/symbols.js +17 -22
- package/dist/types/symbols.js.map +1 -1
- package/dist/types/tag.d.ts +46 -0
- package/dist/{resource.types.js → types/tag.js} +2 -1
- package/dist/types/tag.js.map +1 -0
- package/dist/types/task.d.ts +28 -52
- package/dist/types/task.js +1 -0
- package/dist/types/task.js.map +1 -1
- package/dist/types/taskMiddleware.d.ts +48 -0
- package/dist/{event.types.js → types/taskMiddleware.js} +1 -1
- package/dist/types/taskMiddleware.js.map +1 -0
- package/dist/types/utilities.d.ts +105 -6
- package/dist/types/utilities.js +16 -2
- package/dist/types/utilities.js.map +1 -1
- package/package.json +14 -5
- package/dist/cli/extract-docs.d.ts +0 -2
- package/dist/cli/extract-docs.js +0 -88
- package/dist/cli/extract-docs.js.map +0 -1
- package/dist/common.types.d.ts +0 -20
- package/dist/common.types.js +0 -4
- package/dist/common.types.js.map +0 -1
- package/dist/defs/core.d.ts +0 -144
- package/dist/defs/core.js +0 -6
- package/dist/defs/core.js.map +0 -1
- package/dist/defs/symbols.d.ts +0 -42
- package/dist/defs/symbols.js +0 -45
- package/dist/defs/symbols.js.map +0 -1
- package/dist/defs/tags.d.ts +0 -70
- package/dist/defs/tags.js +0 -6
- package/dist/defs/tags.js.map +0 -1
- package/dist/defs.returnTag.d.ts +0 -36
- package/dist/defs.returnTag.js +0 -4
- package/dist/defs.returnTag.js.map +0 -1
- package/dist/docs/introspect.d.ts +0 -7
- package/dist/docs/introspect.js +0 -199
- package/dist/docs/introspect.js.map +0 -1
- package/dist/docs/markdown.d.ts +0 -2
- package/dist/docs/markdown.js +0 -148
- package/dist/docs/markdown.js.map +0 -1
- package/dist/docs/model.d.ts +0 -62
- package/dist/docs/model.js +0 -33
- package/dist/docs/model.js.map +0 -1
- package/dist/event.types.d.ts +0 -18
- package/dist/event.types.js.map +0 -1
- package/dist/examples/express-mongo/index.d.ts +0 -0
- package/dist/examples/express-mongo/index.js +0 -3
- package/dist/examples/express-mongo/index.js.map +0 -1
- package/dist/examples/registrator-example.d.ts +0 -122
- package/dist/examples/registrator-example.js +0 -147
- package/dist/examples/registrator-example.js.map +0 -1
- package/dist/express/docsRouter.d.ts +0 -12
- package/dist/express/docsRouter.js +0 -54
- package/dist/express/docsRouter.js.map +0 -1
- package/dist/globalEvents.d.ts +0 -40
- package/dist/globalEvents.js +0 -94
- package/dist/globalEvents.js.map +0 -1
- package/dist/globalResources.d.ts +0 -10
- package/dist/globalResources.js +0 -43
- package/dist/globalResources.js.map +0 -1
- package/dist/middleware.types.d.ts +0 -40
- package/dist/middleware.types.js.map +0 -1
- package/dist/models/StoreConstants.d.ts +0 -14
- package/dist/models/StoreConstants.js +0 -19
- package/dist/models/StoreConstants.js.map +0 -1
- package/dist/models/StoreTypes.d.ts +0 -21
- package/dist/models/StoreTypes.js.map +0 -1
- package/dist/models/VarStore.d.ts +0 -17
- package/dist/models/VarStore.js +0 -60
- package/dist/models/VarStore.js.map +0 -1
- package/dist/resource.types.d.ts +0 -31
- package/dist/resource.types.js.map +0 -1
- package/dist/symbols.d.ts +0 -24
- package/dist/symbols.js +0 -29
- package/dist/symbols.js.map +0 -1
- package/dist/t1.d.ts +0 -1
- package/dist/t1.js +0 -13
- package/dist/t1.js.map +0 -1
- package/dist/task.types.d.ts +0 -55
- package/dist/task.types.js.map +0 -1
- package/dist/tools/findCircularDependencies.js.map +0 -1
- package/dist/tools/registratorId.d.ts +0 -4
- package/dist/tools/registratorId.js +0 -40
- package/dist/tools/registratorId.js.map +0 -1
- package/dist/tools/simpleHash.d.ts +0 -9
- package/dist/tools/simpleHash.js +0 -34
- package/dist/tools/simpleHash.js.map +0 -1
- package/dist/types/base-interfaces.d.ts +0 -18
- package/dist/types/base-interfaces.js +0 -6
- package/dist/types/base-interfaces.js.map +0 -1
- package/dist/types/base.d.ts +0 -13
- package/dist/types/base.js.map +0 -1
- package/dist/types/dependencies.d.ts +0 -51
- package/dist/types/dependencies.js +0 -3
- package/dist/types/dependencies.js.map +0 -1
- package/dist/types/dependency-core.d.ts +0 -14
- package/dist/types/dependency-core.js +0 -5
- package/dist/types/dependency-core.js.map +0 -1
- package/dist/types/events.d.ts +0 -52
- package/dist/types/events.js +0 -6
- package/dist/types/events.js.map +0 -1
- package/dist/types/hooks.d.ts +0 -16
- package/dist/types/hooks.js +0 -5
- package/dist/types/hooks.js.map +0 -1
- package/dist/types/index.d.ts +0 -8
- package/dist/types/index.js.map +0 -1
- package/dist/types/metadata.d.ts +0 -75
- package/dist/types/metadata.js.map +0 -1
- package/dist/types/middleware.d.ts +0 -63
- package/dist/types/middleware.js +0 -3
- package/dist/types/middleware.js.map +0 -1
- package/dist/types/registerable.d.ts +0 -10
- package/dist/types/registerable.js +0 -5
- package/dist/types/registerable.js.map +0 -1
- package/dist/types/resources.d.ts +0 -44
- package/dist/types/resources.js +0 -5
- package/dist/types/resources.js.map +0 -1
- package/dist/types/tasks.d.ts +0 -41
- package/dist/types/tasks.js +0 -5
- package/dist/types/tasks.js.map +0 -1
- package/src/__tests__/benchmark/benchmark.test.ts +0 -148
- package/src/__tests__/benchmark/task-benchmark.test.ts +0 -132
- package/src/__tests__/context.test.ts +0 -91
- package/src/__tests__/createTestResource.test.ts +0 -139
- package/src/__tests__/errors.test.ts +0 -341
- package/src/__tests__/globalEvents.test.ts +0 -542
- package/src/__tests__/globals/cache.middleware.test.ts +0 -772
- package/src/__tests__/globals/queue.resource.test.ts +0 -141
- package/src/__tests__/globals/requireContext.middleware.test.ts +0 -98
- package/src/__tests__/globals/retry.middleware.test.ts +0 -157
- package/src/__tests__/globals/timeout.middleware.test.ts +0 -88
- package/src/__tests__/index.helper.test.ts +0 -55
- package/src/__tests__/models/EventManager.test.ts +0 -585
- package/src/__tests__/models/Logger.test.ts +0 -519
- package/src/__tests__/models/Queue.test.ts +0 -189
- package/src/__tests__/models/ResourceInitializer.test.ts +0 -148
- package/src/__tests__/models/Semaphore.test.ts +0 -713
- package/src/__tests__/models/Store.test.ts +0 -227
- package/src/__tests__/models/TaskRunner.test.ts +0 -221
- package/src/__tests__/override.test.ts +0 -104
- package/src/__tests__/recursion/README.md +0 -3
- package/src/__tests__/recursion/a.resource.ts +0 -25
- package/src/__tests__/recursion/b.resource.ts +0 -33
- package/src/__tests__/recursion/c.resource.ts +0 -18
- package/src/__tests__/run.anonymous.test.ts +0 -706
- package/src/__tests__/run.dynamic-register-and-dependencies.test.ts +0 -1185
- package/src/__tests__/run.middleware.test.ts +0 -549
- package/src/__tests__/run.overrides.test.ts +0 -424
- package/src/__tests__/run.test.ts +0 -1040
- package/src/__tests__/setOutput.test.ts +0 -244
- package/src/__tests__/tags.test.ts +0 -396
- package/src/__tests__/tools/findCircularDependencies.test.ts +0 -217
- package/src/__tests__/tools/getCallerFile.test.ts +0 -179
- package/src/__tests__/typesafety.test.ts +0 -423
- package/src/__tests__/validation-edge-cases.test.ts +0 -111
- package/src/__tests__/validation-interface.test.ts +0 -428
- package/src/context.ts +0 -86
- package/src/define.ts +0 -480
- package/src/defs.returnTag.ts +0 -91
- package/src/defs.ts +0 -596
- package/src/errors.ts +0 -105
- package/src/globals/globalEvents.ts +0 -125
- package/src/globals/globalMiddleware.ts +0 -16
- package/src/globals/globalResources.ts +0 -53
- package/src/globals/middleware/cache.middleware.ts +0 -115
- package/src/globals/middleware/requireContext.middleware.ts +0 -36
- package/src/globals/middleware/retry.middleware.ts +0 -56
- package/src/globals/middleware/timeout.middleware.ts +0 -46
- package/src/globals/resources/queue.resource.ts +0 -34
- package/src/index.ts +0 -39
- package/src/models/DependencyProcessor.ts +0 -257
- package/src/models/EventManager.ts +0 -210
- package/src/models/Logger.ts +0 -282
- package/src/models/OverrideManager.ts +0 -79
- package/src/models/Queue.ts +0 -66
- package/src/models/ResourceInitializer.ts +0 -165
- package/src/models/Semaphore.ts +0 -208
- package/src/models/Store.ts +0 -193
- package/src/models/StoreConstants.ts +0 -18
- package/src/models/StoreRegistry.ts +0 -253
- package/src/models/StoreTypes.ts +0 -47
- package/src/models/StoreValidator.ts +0 -43
- package/src/models/TaskRunner.ts +0 -203
- package/src/models/index.ts +0 -8
- package/src/run.ts +0 -116
- package/src/testing.ts +0 -66
- package/src/tools/findCircularDependencies.ts +0 -69
- package/src/tools/getCallerFile.ts +0 -96
- /package/dist/{tools → models/utils}/findCircularDependencies.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/models/Logger.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/models/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { DependencyMapType, ITask, IResource, ITaskMiddleware } from "../defs";
|
|
2
|
+
import { EventManager } from "./EventManager";
|
|
3
|
+
import { Store } from "./Store";
|
|
4
|
+
import { Logger } from "./Logger";
|
|
5
|
+
import { ITaskMiddlewareExecutionInput } from "../types/taskMiddleware";
|
|
6
|
+
import { IResourceMiddlewareExecutionInput, IResourceMiddleware } from "../types/resourceMiddleware";
|
|
7
|
+
/**
|
|
8
|
+
* Interceptor for task middleware execution
|
|
9
|
+
*/
|
|
10
|
+
export type TaskMiddlewareInterceptor = (next: (input: ITaskMiddlewareExecutionInput<any>) => Promise<any>, input: ITaskMiddlewareExecutionInput<any>) => Promise<any>;
|
|
11
|
+
/**
|
|
12
|
+
* Interceptor for resource middleware execution
|
|
13
|
+
*/
|
|
14
|
+
export type ResourceMiddlewareInterceptor = (next: (input: IResourceMiddlewareExecutionInput<any>) => Promise<any>, input: IResourceMiddlewareExecutionInput<any>) => Promise<any>;
|
|
15
|
+
/**
|
|
16
|
+
* Centralizes middleware composition and execution for both tasks and resources.
|
|
17
|
+
* Keeps observability emissions and unhandled error routing consistent.
|
|
18
|
+
*/
|
|
19
|
+
export declare class MiddlewareManager {
|
|
20
|
+
#private;
|
|
21
|
+
protected readonly store: Store;
|
|
22
|
+
protected readonly eventManager: EventManager;
|
|
23
|
+
protected readonly logger: Logger;
|
|
24
|
+
private taskMiddlewareInterceptors;
|
|
25
|
+
private resourceMiddlewareInterceptors;
|
|
26
|
+
private perMiddlewareInterceptors;
|
|
27
|
+
private perResourceMiddlewareInterceptors;
|
|
28
|
+
constructor(store: Store, eventManager: EventManager, logger: Logger);
|
|
29
|
+
/**
|
|
30
|
+
* Gets the current lock status of the MiddlewareManager
|
|
31
|
+
*/
|
|
32
|
+
get isLocked(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Locks the MiddlewareManager, preventing any further modifications to interceptors
|
|
35
|
+
*/
|
|
36
|
+
lock(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Throws an error if the MiddlewareManager is locked
|
|
39
|
+
*/
|
|
40
|
+
private checkLock;
|
|
41
|
+
/**
|
|
42
|
+
* Adds an interceptor for task or resource middleware execution
|
|
43
|
+
* Interceptors are executed in the order they are added, with the ability to
|
|
44
|
+
* modify, log, or prevent middleware execution
|
|
45
|
+
*
|
|
46
|
+
* @param kind - The type of middleware to intercept ("task" or "resource")
|
|
47
|
+
* @param interceptor - The interceptor function to add
|
|
48
|
+
*/
|
|
49
|
+
intercept(kind: "task" | "resource", interceptor: TaskMiddlewareInterceptor | ResourceMiddlewareInterceptor): void;
|
|
50
|
+
/**
|
|
51
|
+
* Adds an interceptor for a specific middleware instance with better type safety
|
|
52
|
+
* This method automatically determines the type and provides type-safe access
|
|
53
|
+
*
|
|
54
|
+
* @param middleware - The middleware instance to intercept
|
|
55
|
+
* @param interceptor - The interceptor function with proper typing
|
|
56
|
+
*/
|
|
57
|
+
interceptMiddleware(middleware: ITaskMiddleware<any, any, any, any> | IResourceMiddleware<any, any, any, any>, interceptor: TaskMiddlewareInterceptor | ResourceMiddlewareInterceptor): void;
|
|
58
|
+
/**
|
|
59
|
+
* Wrap a middleware with its specific interceptors in onion style
|
|
60
|
+
*/
|
|
61
|
+
private wrapMiddlewareWithInterceptors;
|
|
62
|
+
/**
|
|
63
|
+
* Wrap a resource middleware with its specific interceptors in onion style
|
|
64
|
+
*/
|
|
65
|
+
private wrapResourceMiddlewareWithInterceptors;
|
|
66
|
+
/**
|
|
67
|
+
* Compose a runner for a task with its local interceptors and applicable middlewares.
|
|
68
|
+
* Returns a function that accepts the task input and resolves to the task output.
|
|
69
|
+
*/
|
|
70
|
+
composeTaskRunner<TInput, TOutput extends Promise<any>, TDeps extends DependencyMapType>(task: ITask<TInput, TOutput, TDeps>): (input: any) => Promise<TOutput | (TOutput extends Promise<infer U> ? U : never)>;
|
|
71
|
+
/**
|
|
72
|
+
* Run a resource init wrapped with its applicable middlewares.
|
|
73
|
+
*/
|
|
74
|
+
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>;
|
|
75
|
+
private getApplicableTaskMiddlewares;
|
|
76
|
+
private getApplicableResourceMiddlewares;
|
|
77
|
+
/**
|
|
78
|
+
* @param task
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
getEverywhereMiddlewareForTasks(task: ITask<any, any, any, any>): ITaskMiddleware[];
|
|
82
|
+
/**
|
|
83
|
+
* Returns all global middleware for resource, which do not depend on the target resource.
|
|
84
|
+
*/
|
|
85
|
+
getEverywhereMiddlewareForResources(target: IResource<any, any, any, any>): IResourceMiddleware[];
|
|
86
|
+
}
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MiddlewareManager = void 0;
|
|
4
|
+
const errors_1 = require("../errors");
|
|
5
|
+
const define_1 = require("../define");
|
|
6
|
+
/**
|
|
7
|
+
* Centralizes middleware composition and execution for both tasks and resources.
|
|
8
|
+
* Keeps observability emissions and unhandled error routing consistent.
|
|
9
|
+
*/
|
|
10
|
+
class MiddlewareManager {
|
|
11
|
+
store;
|
|
12
|
+
eventManager;
|
|
13
|
+
logger;
|
|
14
|
+
// Interceptor storage
|
|
15
|
+
taskMiddlewareInterceptors = [];
|
|
16
|
+
resourceMiddlewareInterceptors = [];
|
|
17
|
+
// Per-middleware interceptor storage
|
|
18
|
+
perMiddlewareInterceptors = new Map();
|
|
19
|
+
perResourceMiddlewareInterceptors = new Map();
|
|
20
|
+
// Locking mechanism to prevent modifications after initialization
|
|
21
|
+
#isLocked = false;
|
|
22
|
+
constructor(store, eventManager, logger) {
|
|
23
|
+
this.store = store;
|
|
24
|
+
this.eventManager = eventManager;
|
|
25
|
+
this.logger = logger;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gets the current lock status of the MiddlewareManager
|
|
29
|
+
*/
|
|
30
|
+
get isLocked() {
|
|
31
|
+
return this.#isLocked;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Locks the MiddlewareManager, preventing any further modifications to interceptors
|
|
35
|
+
*/
|
|
36
|
+
lock() {
|
|
37
|
+
this.#isLocked = true;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Throws an error if the MiddlewareManager is locked
|
|
41
|
+
*/
|
|
42
|
+
checkLock() {
|
|
43
|
+
if (this.#isLocked) {
|
|
44
|
+
throw new errors_1.LockedError("MiddlewareManager");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Adds an interceptor for task or resource middleware execution
|
|
49
|
+
* Interceptors are executed in the order they are added, with the ability to
|
|
50
|
+
* modify, log, or prevent middleware execution
|
|
51
|
+
*
|
|
52
|
+
* @param kind - The type of middleware to intercept ("task" or "resource")
|
|
53
|
+
* @param interceptor - The interceptor function to add
|
|
54
|
+
*/
|
|
55
|
+
intercept(kind, interceptor) {
|
|
56
|
+
this.checkLock();
|
|
57
|
+
if (kind === "task") {
|
|
58
|
+
this.taskMiddlewareInterceptors.push(interceptor);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
this.resourceMiddlewareInterceptors.push(interceptor);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Adds an interceptor for a specific middleware instance with better type safety
|
|
66
|
+
* This method automatically determines the type and provides type-safe access
|
|
67
|
+
*
|
|
68
|
+
* @param middleware - The middleware instance to intercept
|
|
69
|
+
* @param interceptor - The interceptor function with proper typing
|
|
70
|
+
*/
|
|
71
|
+
interceptMiddleware(middleware, interceptor) {
|
|
72
|
+
this.checkLock();
|
|
73
|
+
// Determine the type based on the middleware's symbol
|
|
74
|
+
if ((0, define_1.isTaskMiddleware)(middleware)) {
|
|
75
|
+
// Store per-middleware interceptor instead of adding to global pool
|
|
76
|
+
if (!this.perMiddlewareInterceptors.has(middleware.id)) {
|
|
77
|
+
this.perMiddlewareInterceptors.set(middleware.id, []);
|
|
78
|
+
}
|
|
79
|
+
this.perMiddlewareInterceptors
|
|
80
|
+
.get(middleware.id)
|
|
81
|
+
.push(interceptor);
|
|
82
|
+
}
|
|
83
|
+
else if ((0, define_1.isResourceMiddleware)(middleware)) {
|
|
84
|
+
// Store per-middleware interceptor instead of adding to global pool
|
|
85
|
+
if (!this.perResourceMiddlewareInterceptors.has(middleware.id)) {
|
|
86
|
+
this.perResourceMiddlewareInterceptors.set(middleware.id, []);
|
|
87
|
+
}
|
|
88
|
+
this.perResourceMiddlewareInterceptors
|
|
89
|
+
.get(middleware.id)
|
|
90
|
+
.push(interceptor);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
throw new Error("Unknown middleware type");
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Wrap a middleware with its specific interceptors in onion style
|
|
98
|
+
*/
|
|
99
|
+
wrapMiddlewareWithInterceptors(middleware, middlewareRunner, interceptors) {
|
|
100
|
+
if (!interceptors.length) {
|
|
101
|
+
return middlewareRunner;
|
|
102
|
+
}
|
|
103
|
+
// Apply interceptors in reverse order (last added runs first)
|
|
104
|
+
const reversedInterceptors = [...interceptors].reverse();
|
|
105
|
+
let wrapped = middlewareRunner;
|
|
106
|
+
for (let i = reversedInterceptors.length - 1; i >= 0; i--) {
|
|
107
|
+
const interceptor = reversedInterceptors[i];
|
|
108
|
+
const nextFunction = wrapped;
|
|
109
|
+
wrapped = async (input) => {
|
|
110
|
+
// Create execution input for the interceptor
|
|
111
|
+
const executionInput = {
|
|
112
|
+
task: {
|
|
113
|
+
definition: null, // Will be filled by middleware.run
|
|
114
|
+
input: input,
|
|
115
|
+
},
|
|
116
|
+
next: nextFunction,
|
|
117
|
+
};
|
|
118
|
+
// Provide a next function that accepts an execution input and forwards the raw input
|
|
119
|
+
const wrappedNext = (i) => {
|
|
120
|
+
return nextFunction(i.task.input);
|
|
121
|
+
};
|
|
122
|
+
return interceptor(wrappedNext, executionInput);
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return wrapped;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Wrap a resource middleware with its specific interceptors in onion style
|
|
129
|
+
*/
|
|
130
|
+
wrapResourceMiddlewareWithInterceptors(middleware, middlewareRunner, interceptors) {
|
|
131
|
+
if (!interceptors.length) {
|
|
132
|
+
return middlewareRunner;
|
|
133
|
+
}
|
|
134
|
+
// Apply interceptors in reverse order (last added runs first)
|
|
135
|
+
const reversedInterceptors = [...interceptors].reverse();
|
|
136
|
+
let wrapped = middlewareRunner;
|
|
137
|
+
for (let i = reversedInterceptors.length - 1; i >= 0; i--) {
|
|
138
|
+
const interceptor = reversedInterceptors[i];
|
|
139
|
+
const nextFunction = wrapped;
|
|
140
|
+
wrapped = async (config) => {
|
|
141
|
+
// Create execution input for the interceptor
|
|
142
|
+
const executionInput = {
|
|
143
|
+
resource: {
|
|
144
|
+
definition: null, // Will be filled by middleware.run
|
|
145
|
+
config: config,
|
|
146
|
+
},
|
|
147
|
+
next: nextFunction,
|
|
148
|
+
};
|
|
149
|
+
// Provide a next function that accepts an execution input and forwards the raw config
|
|
150
|
+
const wrappedNext = (input) => {
|
|
151
|
+
return nextFunction(input.resource.config);
|
|
152
|
+
};
|
|
153
|
+
return interceptor(wrappedNext, executionInput);
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
return wrapped;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Compose a runner for a task with its local interceptors and applicable middlewares.
|
|
160
|
+
* Returns a function that accepts the task input and resolves to the task output.
|
|
161
|
+
*/
|
|
162
|
+
composeTaskRunner(task) {
|
|
163
|
+
const storeTask = this.store.tasks.get(task.id);
|
|
164
|
+
// Base next executes the task with validation and unhandled error routing
|
|
165
|
+
let next = async (input) => {
|
|
166
|
+
// Extract raw input from execution input if needed
|
|
167
|
+
let rawInput = input;
|
|
168
|
+
if (task.inputSchema) {
|
|
169
|
+
try {
|
|
170
|
+
rawInput = task.inputSchema.parse(rawInput);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
throw new errors_1.ValidationError("Task input", task.id, error instanceof Error ? error : new Error(String(error)));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const deps = storeTask.computedDependencies;
|
|
177
|
+
try {
|
|
178
|
+
const rawResult = await task.run.call(null, rawInput, deps);
|
|
179
|
+
if (task.resultSchema) {
|
|
180
|
+
try {
|
|
181
|
+
return task.resultSchema.parse(rawResult);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
throw new errors_1.ValidationError("Task result", task.id, error);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return rawResult;
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
try {
|
|
191
|
+
await this.store.onUnhandledError({
|
|
192
|
+
error,
|
|
193
|
+
kind: "task",
|
|
194
|
+
source: task.id,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
catch (_) { }
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
// Inject local per-task interceptors first (closest to the task)
|
|
202
|
+
if (storeTask.interceptors && storeTask.interceptors.length > 0) {
|
|
203
|
+
for (let i = storeTask.interceptors.length - 1; i >= 0; i--) {
|
|
204
|
+
const interceptor = storeTask.interceptors[i];
|
|
205
|
+
const nextFunction = next;
|
|
206
|
+
next = async (input) => interceptor(nextFunction, input);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Apply task middleware interceptors (last added runs first)
|
|
210
|
+
if (this.taskMiddlewareInterceptors.length > 0) {
|
|
211
|
+
const reversedInterceptors = [
|
|
212
|
+
...this.taskMiddlewareInterceptors,
|
|
213
|
+
].reverse();
|
|
214
|
+
// Create the final execution input for the chain
|
|
215
|
+
const createExecutionInput = (input, nextFunc) => ({
|
|
216
|
+
task: {
|
|
217
|
+
definition: task,
|
|
218
|
+
input: input,
|
|
219
|
+
},
|
|
220
|
+
next: nextFunc,
|
|
221
|
+
});
|
|
222
|
+
// Build the interceptor chain
|
|
223
|
+
let currentNext = next;
|
|
224
|
+
for (let i = reversedInterceptors.length - 1; i >= 0; i--) {
|
|
225
|
+
const interceptor = reversedInterceptors[i];
|
|
226
|
+
const nextFunction = currentNext;
|
|
227
|
+
currentNext = async (input) => {
|
|
228
|
+
const executionInput = createExecutionInput(input, nextFunction);
|
|
229
|
+
// Create a wrapper function that matches the expected signature
|
|
230
|
+
const wrappedNext = (i) => {
|
|
231
|
+
return nextFunction(i.task.input);
|
|
232
|
+
};
|
|
233
|
+
return interceptor(wrappedNext, executionInput);
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
next = currentNext;
|
|
237
|
+
}
|
|
238
|
+
const createdMiddlewares = this.getApplicableTaskMiddlewares(task);
|
|
239
|
+
if (createdMiddlewares.length === 0) {
|
|
240
|
+
return next;
|
|
241
|
+
}
|
|
242
|
+
// layer task middlewares (global first, then local), closest to the task runs last
|
|
243
|
+
for (let i = createdMiddlewares.length - 1; i >= 0; i--) {
|
|
244
|
+
const middleware = createdMiddlewares[i];
|
|
245
|
+
const storeMiddleware = this.store.taskMiddlewares.get(middleware.id);
|
|
246
|
+
const nextFunction = next;
|
|
247
|
+
// Create the base middleware runner with events
|
|
248
|
+
const baseMiddlewareRunner = async (input) => {
|
|
249
|
+
let result;
|
|
250
|
+
try {
|
|
251
|
+
// Attention: we use the store middleware run, because it might have been overidden.
|
|
252
|
+
// All middleware run() functions should be common accross all tasks.
|
|
253
|
+
result = await storeMiddleware.middleware.run({
|
|
254
|
+
task: {
|
|
255
|
+
definition: task,
|
|
256
|
+
input,
|
|
257
|
+
},
|
|
258
|
+
next: nextFunction,
|
|
259
|
+
}, storeMiddleware.computedDependencies, middleware.config);
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
try {
|
|
264
|
+
await this.store.onUnhandledError({
|
|
265
|
+
error,
|
|
266
|
+
kind: "middleware",
|
|
267
|
+
source: middleware.id,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
catch (_) { }
|
|
271
|
+
throw error;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
// Get interceptors for this specific middleware
|
|
275
|
+
const middlewareInterceptors = this.perMiddlewareInterceptors.get(middleware.id) || [];
|
|
276
|
+
// Wrap the middleware with its interceptors (onion style)
|
|
277
|
+
const wrappedMiddleware = this.wrapMiddlewareWithInterceptors(middleware, baseMiddlewareRunner, middlewareInterceptors);
|
|
278
|
+
next = wrappedMiddleware;
|
|
279
|
+
}
|
|
280
|
+
return next;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Run a resource init wrapped with its applicable middlewares.
|
|
284
|
+
*/
|
|
285
|
+
async runResourceInit(resource, config, dependencies, context) {
|
|
286
|
+
let next = async (cfg) => {
|
|
287
|
+
if (!resource.init)
|
|
288
|
+
return undefined;
|
|
289
|
+
const rawValue = await resource.init.call(null, cfg, dependencies, context);
|
|
290
|
+
if (resource.resultSchema) {
|
|
291
|
+
try {
|
|
292
|
+
return resource.resultSchema.parse(rawValue);
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
throw new errors_1.ValidationError("Resource result", resource.id, error);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return rawValue;
|
|
299
|
+
};
|
|
300
|
+
const createdMiddlewares = this.getApplicableResourceMiddlewares(resource);
|
|
301
|
+
for (let i = createdMiddlewares.length - 1; i >= 0; i--) {
|
|
302
|
+
const middleware = createdMiddlewares[i];
|
|
303
|
+
const storeMiddleware = this.store.resourceMiddlewares.get(middleware.id);
|
|
304
|
+
const nextFunction = next;
|
|
305
|
+
// Create the base resource middleware runner with events
|
|
306
|
+
const baseMiddlewareRunner = async (cfg) => {
|
|
307
|
+
try {
|
|
308
|
+
const result = await storeMiddleware.middleware.run({
|
|
309
|
+
resource: {
|
|
310
|
+
definition: resource,
|
|
311
|
+
config: cfg,
|
|
312
|
+
},
|
|
313
|
+
next: nextFunction,
|
|
314
|
+
}, storeMiddleware.computedDependencies, middleware.config);
|
|
315
|
+
return result;
|
|
316
|
+
}
|
|
317
|
+
catch (error) {
|
|
318
|
+
try {
|
|
319
|
+
await this.store.onUnhandledError({
|
|
320
|
+
error,
|
|
321
|
+
kind: "resourceInit",
|
|
322
|
+
source: resource.id,
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
catch (_) { }
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
// Get interceptors for this specific middleware
|
|
330
|
+
const middlewareInterceptors = this.perResourceMiddlewareInterceptors.get(middleware.id) || [];
|
|
331
|
+
// Wrap the middleware with its interceptors (onion style)
|
|
332
|
+
const wrappedMiddleware = this.wrapResourceMiddlewareWithInterceptors(middleware, baseMiddlewareRunner, middlewareInterceptors);
|
|
333
|
+
next = wrappedMiddleware;
|
|
334
|
+
}
|
|
335
|
+
// Apply resource middleware interceptors (last added runs first)
|
|
336
|
+
if (this.resourceMiddlewareInterceptors.length > 0) {
|
|
337
|
+
const reversedInterceptors = [
|
|
338
|
+
...this.resourceMiddlewareInterceptors,
|
|
339
|
+
].reverse();
|
|
340
|
+
// Create the final execution input for the chain
|
|
341
|
+
const createExecutionInput = (config, nextFunc) => ({
|
|
342
|
+
resource: {
|
|
343
|
+
definition: resource,
|
|
344
|
+
config: config,
|
|
345
|
+
},
|
|
346
|
+
next: nextFunc,
|
|
347
|
+
});
|
|
348
|
+
// Build the interceptor chain
|
|
349
|
+
let currentNext = next;
|
|
350
|
+
for (let i = reversedInterceptors.length - 1; i >= 0; i--) {
|
|
351
|
+
const interceptor = reversedInterceptors[i];
|
|
352
|
+
const nextFunction = currentNext;
|
|
353
|
+
currentNext = async (cfg) => {
|
|
354
|
+
const executionInput = createExecutionInput(cfg, nextFunction);
|
|
355
|
+
// Create a wrapper function that matches the expected signature
|
|
356
|
+
const wrappedNext = (input) => {
|
|
357
|
+
return nextFunction(input.resource.config);
|
|
358
|
+
};
|
|
359
|
+
return interceptor(wrappedNext, executionInput);
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
next = currentNext;
|
|
363
|
+
}
|
|
364
|
+
return next(config);
|
|
365
|
+
}
|
|
366
|
+
getApplicableTaskMiddlewares(task) {
|
|
367
|
+
const existingMiddlewares = task.middleware;
|
|
368
|
+
const existingMiddlewareIds = existingMiddlewares.map((x) => x.id);
|
|
369
|
+
const globalMiddlewares = this.getEverywhereMiddlewareForTasks(task).filter((x) => !existingMiddlewareIds.includes(x.id));
|
|
370
|
+
return [...globalMiddlewares, ...existingMiddlewares];
|
|
371
|
+
}
|
|
372
|
+
getApplicableResourceMiddlewares(resource) {
|
|
373
|
+
const existingMiddlewares = resource.middleware;
|
|
374
|
+
const existingMiddlewareIds = existingMiddlewares.map((x) => x.id);
|
|
375
|
+
const globalMiddlewares = this.getEverywhereMiddlewareForResources(resource).filter((x) => !existingMiddlewareIds.includes(x.id));
|
|
376
|
+
return [...globalMiddlewares, ...existingMiddlewares];
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* @param task
|
|
380
|
+
* @returns
|
|
381
|
+
*/
|
|
382
|
+
getEverywhereMiddlewareForTasks(task) {
|
|
383
|
+
return Array.from(this.store.taskMiddlewares.values())
|
|
384
|
+
.filter((x) => Boolean(x.middleware.everywhere))
|
|
385
|
+
.filter((x) => {
|
|
386
|
+
if (typeof x.middleware.everywhere === "function") {
|
|
387
|
+
return x.middleware.everywhere(task);
|
|
388
|
+
}
|
|
389
|
+
return true;
|
|
390
|
+
})
|
|
391
|
+
.map((x) => x.middleware);
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Returns all global middleware for resource, which do not depend on the target resource.
|
|
395
|
+
*/
|
|
396
|
+
getEverywhereMiddlewareForResources(target) {
|
|
397
|
+
return Array.from(this.store.resourceMiddlewares.values())
|
|
398
|
+
.filter((x) => Boolean(x.middleware.everywhere))
|
|
399
|
+
.filter((x) => {
|
|
400
|
+
if (typeof x.middleware.everywhere === "function") {
|
|
401
|
+
return x.middleware.everywhere(target);
|
|
402
|
+
}
|
|
403
|
+
return true;
|
|
404
|
+
})
|
|
405
|
+
.map((x) => x.middleware);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
exports.MiddlewareManager = MiddlewareManager;
|
|
409
|
+
//# sourceMappingURL=MiddlewareManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiddlewareManager.js","sourceRoot":"","sources":["../../src/models/MiddlewareManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { IResource,
|
|
1
|
+
import { IResource, ITaskMiddleware, IResourceMiddleware, ITask, IResourceWithConfig, RegisterableItems, IHook } from "../defs";
|
|
2
2
|
import { StoreRegistry } from "./StoreRegistry";
|
|
3
3
|
export declare class OverrideManager {
|
|
4
4
|
private readonly registry;
|
|
5
|
-
overrides: Map<string
|
|
5
|
+
overrides: Map<string, IResource | ITaskMiddleware | IResourceMiddleware | ITask | IResourceWithConfig | IHook>;
|
|
6
6
|
overrideRequests: Set<{
|
|
7
|
-
source: string
|
|
7
|
+
source: string;
|
|
8
8
|
override: RegisterableItems;
|
|
9
9
|
}>;
|
|
10
10
|
constructor(registry: StoreRegistry);
|
|
@@ -12,6 +12,9 @@ class OverrideManager {
|
|
|
12
12
|
}
|
|
13
13
|
storeOverridesDeeply(element) {
|
|
14
14
|
element.overrides.forEach((override) => {
|
|
15
|
+
if (!override) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
15
18
|
if (utils.isResource(override)) {
|
|
16
19
|
this.storeOverridesDeeply(override);
|
|
17
20
|
}
|
|
@@ -37,12 +40,18 @@ class OverrideManager {
|
|
|
37
40
|
else if (utils.isResource(override)) {
|
|
38
41
|
hasAnyItem = this.registry.resources.has(override.id);
|
|
39
42
|
}
|
|
40
|
-
else if (utils.
|
|
41
|
-
hasAnyItem = this.registry.
|
|
43
|
+
else if (utils.isTaskMiddleware(override)) {
|
|
44
|
+
hasAnyItem = this.registry.taskMiddlewares.has(override.id);
|
|
45
|
+
}
|
|
46
|
+
else if (utils.isResourceMiddleware(override)) {
|
|
47
|
+
hasAnyItem = this.registry.resourceMiddlewares.has(override.id);
|
|
42
48
|
}
|
|
43
49
|
else if (utils.isResourceWithConfig(override)) {
|
|
44
50
|
hasAnyItem = this.registry.resources.has(override.resource.id);
|
|
45
51
|
}
|
|
52
|
+
else if (utils.isHook(override)) {
|
|
53
|
+
hasAnyItem = this.registry.hooks.has(override.id);
|
|
54
|
+
}
|
|
46
55
|
if (!hasAnyItem) {
|
|
47
56
|
const id = utils.isResourceWithConfig(override)
|
|
48
57
|
? override.resource.id
|
|
@@ -52,16 +61,22 @@ class OverrideManager {
|
|
|
52
61
|
}
|
|
53
62
|
for (const override of this.overrides.values()) {
|
|
54
63
|
if (utils.isTask(override)) {
|
|
55
|
-
this.registry.storeTask(override,
|
|
64
|
+
this.registry.storeTask(override, "override");
|
|
56
65
|
}
|
|
57
66
|
else if (utils.isResource(override)) {
|
|
58
|
-
this.registry.storeResource(override,
|
|
67
|
+
this.registry.storeResource(override, "override");
|
|
59
68
|
}
|
|
60
|
-
else if (utils.
|
|
61
|
-
this.registry.
|
|
69
|
+
else if (utils.isTaskMiddleware(override)) {
|
|
70
|
+
this.registry.storeTaskMiddleware(override, "override");
|
|
71
|
+
}
|
|
72
|
+
else if (utils.isResourceMiddleware(override)) {
|
|
73
|
+
this.registry.storeResourceMiddleware(override, "override");
|
|
62
74
|
}
|
|
63
75
|
else if (utils.isResourceWithConfig(override)) {
|
|
64
|
-
this.registry.storeResourceWithConfig(override,
|
|
76
|
+
this.registry.storeResourceWithConfig(override, "override");
|
|
77
|
+
}
|
|
78
|
+
else if (utils.isHook(override)) {
|
|
79
|
+
this.registry.storeHook(override, "override");
|
|
65
80
|
}
|
|
66
81
|
}
|
|
67
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverrideManager.js","sourceRoot":"","sources":["../../src/models/OverrideManager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"OverrideManager.js","sourceRoot":"","sources":["../../src/models/OverrideManager.ts"],"names":[],"mappings":"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"}
|