@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
|
@@ -2,73 +2,49 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EventManager = void 0;
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
|
+
const globalTags_1 = require("../globals/globalTags");
|
|
6
|
+
/**
|
|
7
|
+
* Default options for event handlers
|
|
8
|
+
*/
|
|
5
9
|
const HandlerOptionsDefaults = { order: 0 };
|
|
10
|
+
/**
|
|
11
|
+
* EventManager handles event emission, listener registration, and event processing.
|
|
12
|
+
* It supports both specific event listeners and global listeners that handle all events.
|
|
13
|
+
* Listeners are processed in order based on their priority.
|
|
14
|
+
*/
|
|
6
15
|
class EventManager {
|
|
16
|
+
// Core storage for event listeners
|
|
7
17
|
listeners = new Map();
|
|
8
18
|
globalListeners = [];
|
|
19
|
+
// Caching system for merged listeners to improve performance
|
|
9
20
|
cachedMergedListeners = new Map();
|
|
10
21
|
globalListenersCacheValid = true;
|
|
22
|
+
// Interceptors storage
|
|
23
|
+
emissionInterceptors = [];
|
|
24
|
+
hookInterceptors = [];
|
|
25
|
+
// Locking mechanism to prevent modifications after initialization
|
|
11
26
|
#isLocked = false;
|
|
27
|
+
// ==================== PUBLIC API ====================
|
|
28
|
+
/**
|
|
29
|
+
* Gets the current lock status of the EventManager
|
|
30
|
+
*/
|
|
12
31
|
get isLocked() {
|
|
13
32
|
return this.#isLocked;
|
|
14
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Locks the EventManager, preventing any further modifications to listeners
|
|
36
|
+
*/
|
|
15
37
|
lock() {
|
|
16
38
|
this.#isLocked = true;
|
|
17
39
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
while (i < a.length && j < b.length) {
|
|
27
|
-
if (a[i].order <= b[j].order) {
|
|
28
|
-
result.push(a[i++]);
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
result.push(b[j++]);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
while (i < a.length)
|
|
35
|
-
result.push(a[i++]);
|
|
36
|
-
while (j < b.length)
|
|
37
|
-
result.push(b[j++]);
|
|
38
|
-
return result;
|
|
39
|
-
}
|
|
40
|
-
getCachedMergedListeners(eventId) {
|
|
41
|
-
if (!this.globalListenersCacheValid) {
|
|
42
|
-
this.cachedMergedListeners.clear();
|
|
43
|
-
this.globalListenersCacheValid = true;
|
|
44
|
-
}
|
|
45
|
-
let cached = this.cachedMergedListeners.get(eventId);
|
|
46
|
-
if (!cached) {
|
|
47
|
-
const eventListeners = this.listeners.get(eventId) || [];
|
|
48
|
-
if (eventListeners.length === 0 && this.globalListeners.length === 0) {
|
|
49
|
-
cached = [];
|
|
50
|
-
}
|
|
51
|
-
else if (eventListeners.length === 0) {
|
|
52
|
-
cached = this.globalListeners;
|
|
53
|
-
}
|
|
54
|
-
else if (this.globalListeners.length === 0) {
|
|
55
|
-
cached = eventListeners;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
cached = this.mergeSortedListeners(eventListeners, this.globalListeners);
|
|
59
|
-
}
|
|
60
|
-
this.cachedMergedListeners.set(eventId, cached);
|
|
61
|
-
}
|
|
62
|
-
return cached;
|
|
63
|
-
}
|
|
64
|
-
invalidateCache(eventId) {
|
|
65
|
-
if (eventId) {
|
|
66
|
-
this.cachedMergedListeners.delete(eventId);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
this.globalListenersCacheValid = false;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
40
|
+
/**
|
|
41
|
+
* Emits an event to all registered listeners for that event type.
|
|
42
|
+
* Listeners are processed in order of priority and can stop event propagation.
|
|
43
|
+
*
|
|
44
|
+
* @param eventDefinition - The event definition to emit
|
|
45
|
+
* @param data - The event payload data
|
|
46
|
+
* @param source - The source identifier of the event emitter
|
|
47
|
+
*/
|
|
72
48
|
async emit(eventDefinition, data, source) {
|
|
73
49
|
// Validate payload with schema if provided
|
|
74
50
|
if (eventDefinition.payloadSchema) {
|
|
@@ -80,9 +56,6 @@ class EventManager {
|
|
|
80
56
|
}
|
|
81
57
|
}
|
|
82
58
|
const allListeners = this.getCachedMergedListeners(eventDefinition.id);
|
|
83
|
-
if (allListeners.length === 0) {
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
59
|
let propagationStopped = false;
|
|
87
60
|
const event = {
|
|
88
61
|
id: eventDefinition.id,
|
|
@@ -94,36 +67,55 @@ class EventManager {
|
|
|
94
67
|
propagationStopped = true;
|
|
95
68
|
},
|
|
96
69
|
isPropagationStopped: () => propagationStopped,
|
|
70
|
+
tags: eventDefinition.tags,
|
|
97
71
|
};
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (!listener.filter || listener.filter(event)) {
|
|
103
|
-
await listener.handler(event);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
insertListener(listeners, newListener) {
|
|
108
|
-
let low = 0;
|
|
109
|
-
let high = listeners.length;
|
|
110
|
-
while (low < high) {
|
|
111
|
-
const mid = (low + high) >>> 1;
|
|
112
|
-
if (listeners[mid].order < newListener.order) {
|
|
113
|
-
low = mid + 1;
|
|
72
|
+
// Create the base emission function
|
|
73
|
+
const baseEmit = async (eventToEmit) => {
|
|
74
|
+
if (allListeners.length === 0) {
|
|
75
|
+
return;
|
|
114
76
|
}
|
|
115
|
-
|
|
116
|
-
|
|
77
|
+
const excludeFromGlobal = this.isExcludedFromGlobal(eventToEmit);
|
|
78
|
+
for (const listener of allListeners) {
|
|
79
|
+
if (propagationStopped) {
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
// If this event is marked to be excluded from global listeners,
|
|
83
|
+
// we only allow non-global (event-specific) listeners to run.
|
|
84
|
+
// Global listeners are mixed into `allListeners` but flagged.
|
|
85
|
+
if (excludeFromGlobal && listener.isGlobal) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
if (!listener.filter || listener.filter(eventToEmit)) {
|
|
89
|
+
await listener.handler(eventToEmit);
|
|
90
|
+
}
|
|
117
91
|
}
|
|
92
|
+
};
|
|
93
|
+
// Apply emission interceptors (last added runs first)
|
|
94
|
+
let emitWithInterceptors = baseEmit;
|
|
95
|
+
// Reverse the interceptors so the last added runs first
|
|
96
|
+
const reversedInterceptors = [...this.emissionInterceptors].reverse();
|
|
97
|
+
for (const interceptor of reversedInterceptors) {
|
|
98
|
+
const nextFunction = emitWithInterceptors;
|
|
99
|
+
emitWithInterceptors = async (eventToEmit) => interceptor(nextFunction, eventToEmit);
|
|
118
100
|
}
|
|
119
|
-
|
|
101
|
+
// Execute the emission with interceptors
|
|
102
|
+
await emitWithInterceptors(event);
|
|
120
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Registers an event listener for specific event(s).
|
|
106
|
+
* Listeners are ordered by priority and executed in ascending order.
|
|
107
|
+
*
|
|
108
|
+
* @param event - The event definition(s) to listen for
|
|
109
|
+
* @param handler - The callback function to handle the event
|
|
110
|
+
* @param options - Configuration options for the listener
|
|
111
|
+
*/
|
|
121
112
|
addListener(event, handler, options = HandlerOptionsDefaults) {
|
|
122
113
|
this.checkLock();
|
|
123
114
|
const newListener = {
|
|
124
115
|
handler,
|
|
125
116
|
order: options.order || 0,
|
|
126
|
-
filter: options.filter,
|
|
117
|
+
// filter: options.filter,
|
|
118
|
+
isGlobal: false,
|
|
127
119
|
};
|
|
128
120
|
if (Array.isArray(event)) {
|
|
129
121
|
event.forEach((id) => this.addListener(id, handler, options));
|
|
@@ -140,20 +132,201 @@ class EventManager {
|
|
|
140
132
|
this.invalidateCache(eventId);
|
|
141
133
|
}
|
|
142
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Registers a global event listener that handles all events.
|
|
137
|
+
* Global listeners are mixed with specific listeners and ordered by priority.
|
|
138
|
+
*
|
|
139
|
+
* @param handler - The callback function to handle events
|
|
140
|
+
* @param options - Configuration options for the listener
|
|
141
|
+
*/
|
|
143
142
|
addGlobalListener(handler, options = HandlerOptionsDefaults) {
|
|
144
143
|
this.checkLock();
|
|
145
144
|
const newListener = {
|
|
146
145
|
handler,
|
|
147
146
|
order: options.order || 0,
|
|
148
147
|
filter: options.filter,
|
|
148
|
+
isGlobal: true,
|
|
149
149
|
};
|
|
150
150
|
this.insertListener(this.globalListeners, newListener);
|
|
151
151
|
this.invalidateCache();
|
|
152
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Checks if there are any listeners registered for the given event
|
|
155
|
+
*
|
|
156
|
+
* @param eventDefinition - The event definition to check
|
|
157
|
+
* @returns true if listeners exist, false otherwise
|
|
158
|
+
*/
|
|
153
159
|
hasListeners(eventDefinition) {
|
|
154
|
-
const eventListeners = this.listeners.get(eventDefinition.id)
|
|
160
|
+
const eventListeners = this.listeners.get(eventDefinition.id);
|
|
161
|
+
if (!eventListeners) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
155
164
|
return eventListeners.length > 0 || this.globalListeners.length > 0;
|
|
156
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Adds an interceptor for all event emissions
|
|
168
|
+
* Interceptors are executed in the order they are added, with the ability to
|
|
169
|
+
* modify, log, or prevent event emissions
|
|
170
|
+
*
|
|
171
|
+
* @param interceptor - The interceptor function to add
|
|
172
|
+
*/
|
|
173
|
+
intercept(interceptor) {
|
|
174
|
+
this.checkLock();
|
|
175
|
+
this.emissionInterceptors.push(interceptor);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Adds an interceptor for hook execution
|
|
179
|
+
* Interceptors are executed in the order they are added, with the ability to
|
|
180
|
+
* modify, log, or prevent hook execution
|
|
181
|
+
*
|
|
182
|
+
* @param interceptor - The interceptor function to add
|
|
183
|
+
*/
|
|
184
|
+
interceptHook(interceptor) {
|
|
185
|
+
this.checkLock();
|
|
186
|
+
this.hookInterceptors.push(interceptor);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Executes a hook with all registered hook interceptors applied
|
|
190
|
+
* This method should be used by TaskRunner when executing hooks
|
|
191
|
+
*
|
|
192
|
+
* @param hook - The hook to execute
|
|
193
|
+
* @param event - The event that triggered the hook
|
|
194
|
+
* @param computedDependencies - The computed dependencies for the hook
|
|
195
|
+
* @returns Promise resolving to the hook execution result
|
|
196
|
+
*/
|
|
197
|
+
async executeHookWithInterceptors(hook, event, computedDependencies) {
|
|
198
|
+
// Base hook execution function
|
|
199
|
+
const baseExecute = async (hookToExecute, eventForHook) => {
|
|
200
|
+
try {
|
|
201
|
+
const result = await hookToExecute.run(eventForHook, computedDependencies);
|
|
202
|
+
return result;
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
throw err;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
// Apply hook interceptors (last added runs first)
|
|
209
|
+
let executeWithInterceptors = baseExecute;
|
|
210
|
+
// Reverse the interceptors so the last added runs first
|
|
211
|
+
const reversedInterceptors = [...this.hookInterceptors].reverse();
|
|
212
|
+
for (const interceptor of reversedInterceptors) {
|
|
213
|
+
const nextFunction = executeWithInterceptors;
|
|
214
|
+
executeWithInterceptors = async (hookToExecute, eventForHook) => interceptor(nextFunction, hookToExecute, eventForHook);
|
|
215
|
+
}
|
|
216
|
+
// Execute the hook with interceptors
|
|
217
|
+
return await executeWithInterceptors(hook, event);
|
|
218
|
+
}
|
|
219
|
+
// ==================== PRIVATE METHODS ====================
|
|
220
|
+
/**
|
|
221
|
+
* Throws an error if the EventManager is locked
|
|
222
|
+
*/
|
|
223
|
+
checkLock() {
|
|
224
|
+
if (this.#isLocked) {
|
|
225
|
+
throw new errors_1.LockedError("EventManager");
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Merges two sorted arrays of listeners while maintaining order.
|
|
230
|
+
* Used to combine event-specific listeners with global listeners.
|
|
231
|
+
*
|
|
232
|
+
* @param a - First array of listeners
|
|
233
|
+
* @param b - Second array of listeners
|
|
234
|
+
* @returns Merged and sorted array of listeners
|
|
235
|
+
*/
|
|
236
|
+
mergeSortedListeners(a, b) {
|
|
237
|
+
const result = [];
|
|
238
|
+
let i = 0, j = 0;
|
|
239
|
+
while (i < a.length && j < b.length) {
|
|
240
|
+
if (a[i].order <= b[j].order) {
|
|
241
|
+
result.push(a[i++]);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
result.push(b[j++]);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
while (i < a.length)
|
|
248
|
+
result.push(a[i++]);
|
|
249
|
+
while (j < b.length)
|
|
250
|
+
result.push(b[j++]);
|
|
251
|
+
return result;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Inserts a new listener into a sorted array using binary search.
|
|
255
|
+
* Maintains order based on listener priority.
|
|
256
|
+
*
|
|
257
|
+
* @param listeners - Array to insert into
|
|
258
|
+
* @param newListener - Listener to insert
|
|
259
|
+
*/
|
|
260
|
+
insertListener(listeners, newListener) {
|
|
261
|
+
let low = 0;
|
|
262
|
+
let high = listeners.length;
|
|
263
|
+
while (low < high) {
|
|
264
|
+
const mid = (low + high) >>> 1;
|
|
265
|
+
if (listeners[mid].order < newListener.order) {
|
|
266
|
+
low = mid + 1;
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
high = mid;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
listeners.splice(low, 0, newListener);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Returns true if the given emission carries the tag that marks
|
|
276
|
+
* it as excluded from global ("*") listeners.
|
|
277
|
+
*
|
|
278
|
+
* @param event - The event emission to check
|
|
279
|
+
* @returns true if event should exclude global listeners
|
|
280
|
+
*/
|
|
281
|
+
isExcludedFromGlobal(event) {
|
|
282
|
+
return globalTags_1.globalTags.excludeFromGlobalHooks.exists(event);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Retrieves cached merged listeners for an event, or creates them if not cached.
|
|
286
|
+
* Combines event-specific listeners with global listeners and sorts them by priority.
|
|
287
|
+
*
|
|
288
|
+
* @param eventId - The event ID to get listeners for
|
|
289
|
+
* @returns Array of merged listeners sorted by priority
|
|
290
|
+
*/
|
|
291
|
+
getCachedMergedListeners(eventId) {
|
|
292
|
+
if (!this.globalListenersCacheValid) {
|
|
293
|
+
this.cachedMergedListeners.clear();
|
|
294
|
+
this.globalListenersCacheValid = true;
|
|
295
|
+
}
|
|
296
|
+
let cached = this.cachedMergedListeners.get(eventId);
|
|
297
|
+
if (!cached) {
|
|
298
|
+
const eventListeners = this.listeners.get(eventId) || [];
|
|
299
|
+
if (eventListeners.length === 0 && this.globalListeners.length === 0) {
|
|
300
|
+
cached = [];
|
|
301
|
+
}
|
|
302
|
+
else if (eventListeners.length === 0) {
|
|
303
|
+
cached = this.globalListeners;
|
|
304
|
+
}
|
|
305
|
+
else if (this.globalListeners.length === 0) {
|
|
306
|
+
cached = eventListeners;
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
cached = this.mergeSortedListeners(eventListeners, this.globalListeners);
|
|
310
|
+
}
|
|
311
|
+
this.cachedMergedListeners.set(eventId, cached);
|
|
312
|
+
}
|
|
313
|
+
return cached;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Invalidates the cached merged listeners.
|
|
317
|
+
* If eventId is provided, only invalidates cache for that specific event.
|
|
318
|
+
* Otherwise, invalidates the global cache.
|
|
319
|
+
*
|
|
320
|
+
* @param eventId - Optional specific event ID to invalidate
|
|
321
|
+
*/
|
|
322
|
+
invalidateCache(eventId) {
|
|
323
|
+
if (eventId) {
|
|
324
|
+
this.cachedMergedListeners.delete(eventId);
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
this.globalListenersCacheValid = false;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
157
330
|
}
|
|
158
331
|
exports.EventManager = EventManager;
|
|
159
332
|
//# sourceMappingURL=EventManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventManager.js","sourceRoot":"","sources":["../../src/models/EventManager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"EventManager.js","sourceRoot":"","sources":["../../src/models/EventManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
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 writers;
|
|
50
|
+
static setWriters(writers: Partial<{
|
|
51
|
+
log: (msg: any) => void;
|
|
52
|
+
error?: (msg: any) => void;
|
|
53
|
+
}>): void;
|
|
54
|
+
static resetWriters(): void;
|
|
55
|
+
}
|