@bluelibs/runner 4.5.0-alpha → 4.5.0-alpha.2
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/dist/index.cjs +4265 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +1734 -0
- package/dist/index.d.ts +1696 -45
- package/dist/index.mjs +4233 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +11 -14
- package/dist/context.d.ts +0 -29
- package/dist/context.js +0 -52
- package/dist/context.js.map +0 -1
- package/dist/define.d.ts +0 -9
- package/dist/define.js +0 -32
- package/dist/define.js.map +0 -1
- package/dist/definers/defineEvent.d.ts +0 -2
- package/dist/definers/defineEvent.js +0 -23
- package/dist/definers/defineEvent.js.map +0 -1
- package/dist/definers/defineHook.d.ts +0 -6
- package/dist/definers/defineHook.js +0 -24
- package/dist/definers/defineHook.js.map +0 -1
- package/dist/definers/defineOverride.d.ts +0 -14
- package/dist/definers/defineOverride.js +0 -13
- package/dist/definers/defineOverride.js.map +0 -1
- package/dist/definers/defineResource.d.ts +0 -2
- package/dist/definers/defineResource.js +0 -69
- package/dist/definers/defineResource.js.map +0 -1
- package/dist/definers/defineResourceMiddleware.d.ts +0 -2
- package/dist/definers/defineResourceMiddleware.js +0 -42
- package/dist/definers/defineResourceMiddleware.js.map +0 -1
- package/dist/definers/defineTag.d.ts +0 -12
- package/dist/definers/defineTag.js +0 -107
- package/dist/definers/defineTag.js.map +0 -1
- package/dist/definers/defineTask.d.ts +0 -15
- package/dist/definers/defineTask.js +0 -42
- package/dist/definers/defineTask.js.map +0 -1
- package/dist/definers/defineTaskMiddleware.d.ts +0 -2
- package/dist/definers/defineTaskMiddleware.js +0 -42
- package/dist/definers/defineTaskMiddleware.js.map +0 -1
- package/dist/definers/tools.d.ts +0 -45
- package/dist/definers/tools.js +0 -75
- package/dist/definers/tools.js.map +0 -1
- package/dist/defs.d.ts +0 -29
- package/dist/defs.js +0 -45
- package/dist/defs.js.map +0 -1
- package/dist/errors.d.ts +0 -96
- package/dist/errors.js +0 -178
- package/dist/errors.js.map +0 -1
- package/dist/globals/globalEvents.d.ts +0 -17
- package/dist/globals/globalEvents.js +0 -33
- package/dist/globals/globalEvents.js.map +0 -1
- package/dist/globals/globalMiddleware.d.ts +0 -31
- package/dist/globals/globalMiddleware.js +0 -25
- package/dist/globals/globalMiddleware.js.map +0 -1
- package/dist/globals/globalResources.d.ts +0 -30
- package/dist/globals/globalResources.js +0 -55
- package/dist/globals/globalResources.js.map +0 -1
- package/dist/globals/globalTags.d.ts +0 -9
- package/dist/globals/globalTags.js +0 -23
- package/dist/globals/globalTags.js.map +0 -1
- package/dist/globals/middleware/cache.middleware.d.ts +0 -27
- package/dist/globals/middleware/cache.middleware.js +0 -73
- package/dist/globals/middleware/cache.middleware.js.map +0 -1
- package/dist/globals/middleware/requireContext.middleware.d.ts +0 -6
- package/dist/globals/middleware/requireContext.middleware.js +0 -16
- package/dist/globals/middleware/requireContext.middleware.js.map +0 -1
- package/dist/globals/middleware/retry.middleware.d.ts +0 -21
- package/dist/globals/middleware/retry.middleware.js +0 -61
- package/dist/globals/middleware/retry.middleware.js.map +0 -1
- package/dist/globals/middleware/timeout.middleware.d.ts +0 -9
- package/dist/globals/middleware/timeout.middleware.js +0 -61
- package/dist/globals/middleware/timeout.middleware.js.map +0 -1
- package/dist/globals/resources/debug/debug.resource.d.ts +0 -7
- package/dist/globals/resources/debug/debug.resource.js +0 -29
- package/dist/globals/resources/debug/debug.resource.js.map +0 -1
- package/dist/globals/resources/debug/debug.tag.d.ts +0 -2
- package/dist/globals/resources/debug/debug.tag.js +0 -12
- package/dist/globals/resources/debug/debug.tag.js.map +0 -1
- package/dist/globals/resources/debug/debugConfig.resource.d.ts +0 -22
- package/dist/globals/resources/debug/debugConfig.resource.js +0 -20
- package/dist/globals/resources/debug/debugConfig.resource.js.map +0 -1
- package/dist/globals/resources/debug/executionTracker.middleware.d.ts +0 -50
- package/dist/globals/resources/debug/executionTracker.middleware.js +0 -78
- package/dist/globals/resources/debug/executionTracker.middleware.js.map +0 -1
- package/dist/globals/resources/debug/globalEvent.hook.d.ts +0 -27
- package/dist/globals/resources/debug/globalEvent.hook.js +0 -38
- package/dist/globals/resources/debug/globalEvent.hook.js.map +0 -1
- package/dist/globals/resources/debug/hook.hook.d.ts +0 -30
- package/dist/globals/resources/debug/hook.hook.js +0 -48
- package/dist/globals/resources/debug/hook.hook.js.map +0 -1
- package/dist/globals/resources/debug/index.d.ts +0 -6
- package/dist/globals/resources/debug/index.js +0 -23
- package/dist/globals/resources/debug/index.js.map +0 -1
- package/dist/globals/resources/debug/middleware.hook.d.ts +0 -30
- package/dist/globals/resources/debug/middleware.hook.js +0 -75
- package/dist/globals/resources/debug/middleware.hook.js.map +0 -1
- package/dist/globals/resources/debug/types.d.ts +0 -25
- package/dist/globals/resources/debug/types.js +0 -65
- package/dist/globals/resources/debug/types.js.map +0 -1
- package/dist/globals/resources/debug/utils.d.ts +0 -2
- package/dist/globals/resources/debug/utils.js +0 -13
- package/dist/globals/resources/debug/utils.js.map +0 -1
- package/dist/globals/resources/queue.resource.d.ts +0 -10
- package/dist/globals/resources/queue.resource.js +0 -31
- package/dist/globals/resources/queue.resource.js.map +0 -1
- package/dist/globals/types.d.ts +0 -1
- package/dist/globals/types.js +0 -18
- package/dist/globals/types.js.map +0 -1
- package/dist/index.js +0 -48
- package/dist/index.js.map +0 -1
- package/dist/models/DependencyProcessor.d.ts +0 -48
- package/dist/models/DependencyProcessor.js +0 -276
- package/dist/models/DependencyProcessor.js.map +0 -1
- package/dist/models/EventManager.d.ts +0 -153
- package/dist/models/EventManager.js +0 -421
- package/dist/models/EventManager.js.map +0 -1
- package/dist/models/LogPrinter.d.ts +0 -55
- package/dist/models/LogPrinter.js +0 -202
- package/dist/models/LogPrinter.js.map +0 -1
- package/dist/models/Logger.d.ts +0 -85
- package/dist/models/Logger.js +0 -194
- package/dist/models/Logger.js.map +0 -1
- package/dist/models/MiddlewareManager.d.ts +0 -86
- package/dist/models/MiddlewareManager.js +0 -391
- package/dist/models/MiddlewareManager.js.map +0 -1
- package/dist/models/OverrideManager.d.ts +0 -13
- package/dist/models/OverrideManager.js +0 -84
- package/dist/models/OverrideManager.js.map +0 -1
- package/dist/models/Queue.d.ts +0 -25
- package/dist/models/Queue.js +0 -56
- package/dist/models/Queue.js.map +0 -1
- package/dist/models/ResourceInitializer.d.ts +0 -20
- package/dist/models/ResourceInitializer.js +0 -34
- package/dist/models/ResourceInitializer.js.map +0 -1
- package/dist/models/RunResult.d.ts +0 -35
- package/dist/models/RunResult.js +0 -62
- package/dist/models/RunResult.js.map +0 -1
- package/dist/models/Semaphore.d.ts +0 -61
- package/dist/models/Semaphore.js +0 -164
- package/dist/models/Semaphore.js.map +0 -1
- package/dist/models/Store.d.ts +0 -56
- package/dist/models/Store.js +0 -209
- package/dist/models/Store.js.map +0 -1
- package/dist/models/StoreRegistry.d.ts +0 -43
- package/dist/models/StoreRegistry.js +0 -375
- package/dist/models/StoreRegistry.js.map +0 -1
- package/dist/models/StoreValidator.d.ts +0 -8
- package/dist/models/StoreValidator.js +0 -73
- package/dist/models/StoreValidator.js.map +0 -1
- package/dist/models/TaskRunner.d.ts +0 -27
- package/dist/models/TaskRunner.js +0 -53
- package/dist/models/TaskRunner.js.map +0 -1
- package/dist/models/UnhandledError.d.ts +0 -11
- package/dist/models/UnhandledError.js +0 -32
- package/dist/models/UnhandledError.js.map +0 -1
- package/dist/models/index.d.ts +0 -11
- package/dist/models/index.js +0 -28
- package/dist/models/index.js.map +0 -1
- package/dist/models/utils/findCircularDependencies.d.ts +0 -16
- package/dist/models/utils/findCircularDependencies.js +0 -45
- package/dist/models/utils/findCircularDependencies.js.map +0 -1
- package/dist/models/utils/safeStringify.d.ts +0 -3
- package/dist/models/utils/safeStringify.js +0 -45
- package/dist/models/utils/safeStringify.js.map +0 -1
- package/dist/platform/browser.d.ts +0 -15
- package/dist/platform/browser.js +0 -98
- package/dist/platform/browser.js.map +0 -1
- package/dist/platform/index.d.ts +0 -8
- package/dist/platform/index.js +0 -47
- package/dist/platform/index.js.map +0 -1
- package/dist/platform/node.d.ts +0 -11
- package/dist/platform/node.js +0 -45
- package/dist/platform/node.js.map +0 -1
- package/dist/platform/types.d.ts +0 -28
- package/dist/platform/types.js +0 -19
- package/dist/platform/types.js.map +0 -1
- package/dist/platform/universal.d.ts +0 -16
- package/dist/platform/universal.js +0 -57
- package/dist/platform/universal.js.map +0 -1
- package/dist/processHooks.d.ts +0 -2
- package/dist/processHooks.js +0 -79
- package/dist/processHooks.js.map +0 -1
- package/dist/run.d.ts +0 -14
- package/dist/run.js +0 -126
- package/dist/run.js.map +0 -1
- package/dist/testing.d.ts +0 -25
- package/dist/testing.js +0 -42
- package/dist/testing.js.map +0 -1
- package/dist/tools/getCallerFile.d.ts +0 -1
- package/dist/tools/getCallerFile.js +0 -30
- package/dist/tools/getCallerFile.js.map +0 -1
- package/dist/types/contracts.d.ts +0 -55
- package/dist/types/contracts.js +0 -4
- package/dist/types/contracts.js.map +0 -1
- package/dist/types/event.d.ts +0 -74
- package/dist/types/event.js +0 -17
- package/dist/types/event.js.map +0 -1
- package/dist/types/hook.d.ts +0 -23
- package/dist/types/hook.js +0 -4
- package/dist/types/hook.js.map +0 -1
- package/dist/types/meta.d.ts +0 -18
- package/dist/types/meta.js +0 -7
- package/dist/types/meta.js.map +0 -1
- package/dist/types/resource.d.ts +0 -84
- package/dist/types/resource.js +0 -4
- package/dist/types/resource.js.map +0 -1
- package/dist/types/resourceMiddleware.d.ts +0 -47
- package/dist/types/resourceMiddleware.js +0 -4
- package/dist/types/resourceMiddleware.js.map +0 -1
- package/dist/types/runner.d.ts +0 -55
- package/dist/types/runner.js +0 -3
- package/dist/types/runner.js.map +0 -1
- package/dist/types/storeTypes.d.ts +0 -40
- package/dist/types/storeTypes.js +0 -3
- package/dist/types/storeTypes.js.map +0 -1
- package/dist/types/symbols.d.ts +0 -30
- package/dist/types/symbols.js +0 -40
- package/dist/types/symbols.js.map +0 -1
- package/dist/types/tag.d.ts +0 -46
- package/dist/types/tag.js +0 -4
- package/dist/types/tag.js.map +0 -1
- package/dist/types/task.d.ts +0 -44
- package/dist/types/task.js +0 -4
- package/dist/types/task.js.map +0 -1
- package/dist/types/taskMiddleware.d.ts +0 -48
- package/dist/types/taskMiddleware.js +0 -4
- package/dist/types/taskMiddleware.js.map +0 -1
- package/dist/types/utilities.d.ts +0 -110
- package/dist/types/utilities.js +0 -19
- package/dist/types/utilities.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qCASkB;AAkBF,qFA1Bd,mBAAU,OA0BQ;AACA,yFA1BlB,uBAAc,OA0BY;AACX,sFA1Bf,oBAAW,OA0BS;AACI,+FA1BxB,6BAAoB,OA0BkB;AACV,mGA1B5B,iCAAwB,OA0BsB;AACjC,oFA1Bb,kBAAS,OA0BO;AACE,yFA1BlB,uBAAc,OA0BY;AACZ,qFA1Bd,mBAAU,OA0BQ;AAxBpB,uCAA0C;AA0BxC,8FA1BO,uBAAa,OA0BP;AAzBf,yDAAsD;AACtD,+DAA4D;AAC5D,iEAA+D;AAC/D,qDAAkD;AAClD,+BAA4B;AAoB1B,oFApBO,SAAG,OAoBP;AAnBL,uCAA+C;AAqB7C,mGArBO,4BAAkB,OAqBP;AAnBpB,MAAM,OAAO,GAAG;IACd,MAAM,EAAE,2BAAY;IACpB,SAAS,EAAE,iCAAe;IAC1B,UAAU,EAAE,oCAAiB;IAC7B,IAAI,EAAE,uBAAU;CACjB,CAAC;AAEO,0BAAO;AAehB,wCAAsC;AACtC,2CAAyB;AACzB,kDAAgC;AAChC,qCAAmC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { DependencyMapType, DependencyValuesType, ITask, IResource, IEvent } from "../defs";
|
|
2
|
-
import { Store } from "./Store";
|
|
3
|
-
import { ResourceStoreElementType } from "../types/storeTypes";
|
|
4
|
-
import { EventManager } from "./EventManager";
|
|
5
|
-
import { ResourceInitializer } from "./ResourceInitializer";
|
|
6
|
-
import { TaskRunner } from "./TaskRunner";
|
|
7
|
-
import { Logger } from "./Logger";
|
|
8
|
-
/**
|
|
9
|
-
* This class is responsible of setting up dependencies with their respective computedValues.
|
|
10
|
-
* Note that all elements must have been previously registered otherwise errors will be thrown
|
|
11
|
-
* when trying to depend on something not in the store.
|
|
12
|
-
*/
|
|
13
|
-
export declare class DependencyProcessor {
|
|
14
|
-
protected readonly store: Store;
|
|
15
|
-
protected readonly eventManager: EventManager;
|
|
16
|
-
protected readonly taskRunner: TaskRunner;
|
|
17
|
-
protected readonly resourceInitializer: ResourceInitializer;
|
|
18
|
-
protected readonly logger: Logger;
|
|
19
|
-
constructor(store: Store, eventManager: EventManager, taskRunner: TaskRunner, logger: Logger);
|
|
20
|
-
/**
|
|
21
|
-
* This function is going to go through all the resources, tasks and middleware to compute their required dependencies.
|
|
22
|
-
*/
|
|
23
|
-
computeAllDependencies(): Promise<void>;
|
|
24
|
-
private computeTaskDependencies;
|
|
25
|
-
initializeUninitializedResources(): Promise<void>;
|
|
26
|
-
/**
|
|
27
|
-
* Processes dependencies and hooks
|
|
28
|
-
* @param resource
|
|
29
|
-
*/
|
|
30
|
-
protected processResourceDependencies<TD extends DependencyMapType>(resource: ResourceStoreElementType<any, any, TD>): Promise<void>;
|
|
31
|
-
private wrapResourceDependencies;
|
|
32
|
-
private makeTaskWithIntercept;
|
|
33
|
-
initializeRoot(): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Processes all hooks, should run before emission of any event.
|
|
36
|
-
*/
|
|
37
|
-
attachListeners(): void;
|
|
38
|
-
extractDependencies<T extends DependencyMapType>(map: T, source: string): Promise<DependencyValuesType<T>>;
|
|
39
|
-
extractDependency(object: any, source: string): Promise<any>;
|
|
40
|
-
/**
|
|
41
|
-
* Converts the event into a running functions with real inputs
|
|
42
|
-
* @param object
|
|
43
|
-
* @returns
|
|
44
|
-
*/
|
|
45
|
-
extractEventDependency(object: IEvent<any>, source: string): (input: any) => Promise<void>;
|
|
46
|
-
extractTaskDependency(object: ITask<any, any, {}>): Promise<(input: unknown) => Promise<any>>;
|
|
47
|
-
extractResourceDependency(object: IResource<any, any, any>): Promise<any>;
|
|
48
|
-
}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DependencyProcessor = void 0;
|
|
4
|
-
const utils = require("../define");
|
|
5
|
-
const ResourceInitializer_1 = require("./ResourceInitializer");
|
|
6
|
-
const errors_1 = require("../errors");
|
|
7
|
-
const Logger_1 = require("./Logger");
|
|
8
|
-
/**
|
|
9
|
-
* This class is responsible of setting up dependencies with their respective computedValues.
|
|
10
|
-
* Note that all elements must have been previously registered otherwise errors will be thrown
|
|
11
|
-
* when trying to depend on something not in the store.
|
|
12
|
-
*/
|
|
13
|
-
class DependencyProcessor {
|
|
14
|
-
constructor(store, eventManager, taskRunner, logger) {
|
|
15
|
-
this.store = store;
|
|
16
|
-
this.eventManager = eventManager;
|
|
17
|
-
this.taskRunner = taskRunner;
|
|
18
|
-
this.logger = logger.with({ source: "dependencyProcessor" });
|
|
19
|
-
this.resourceInitializer = new ResourceInitializer_1.ResourceInitializer(store, eventManager, logger);
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* This function is going to go through all the resources, tasks and middleware to compute their required dependencies.
|
|
23
|
-
*/
|
|
24
|
-
async computeAllDependencies() {
|
|
25
|
-
for (const middleware of this.store.resourceMiddlewares.values()) {
|
|
26
|
-
const computedDependencies = await this.extractDependencies(middleware.middleware.dependencies, middleware.middleware.id);
|
|
27
|
-
middleware.computedDependencies = computedDependencies;
|
|
28
|
-
middleware.isInitialized = true;
|
|
29
|
-
}
|
|
30
|
-
for (const middleware of this.store.taskMiddlewares.values()) {
|
|
31
|
-
const computedDependencies = await this.extractDependencies(middleware.middleware.dependencies, middleware.middleware.id);
|
|
32
|
-
middleware.computedDependencies = computedDependencies;
|
|
33
|
-
middleware.isInitialized = true;
|
|
34
|
-
}
|
|
35
|
-
for (const resource of this.store.resources.values()) {
|
|
36
|
-
await this.processResourceDependencies(resource);
|
|
37
|
-
}
|
|
38
|
-
for (const task of this.store.tasks.values()) {
|
|
39
|
-
await this.computeTaskDependencies(task);
|
|
40
|
-
}
|
|
41
|
-
// Compute hook dependencies (hooks cannot be dependencies themselves)
|
|
42
|
-
for (const hookStoreElement of this.store.hooks.values()) {
|
|
43
|
-
const hook = hookStoreElement.hook;
|
|
44
|
-
const deps = hook.dependencies;
|
|
45
|
-
hookStoreElement.computedDependencies = await this.extractDependencies(deps, hook.id);
|
|
46
|
-
}
|
|
47
|
-
// leftovers that were registered but not depended upon, except root
|
|
48
|
-
// they should still be initialized as they might extend other
|
|
49
|
-
await this.initializeUninitializedResources();
|
|
50
|
-
}
|
|
51
|
-
async computeTaskDependencies(task) {
|
|
52
|
-
const deps = task.task.dependencies;
|
|
53
|
-
task.computedDependencies = await this.extractDependencies(deps, task.task.id);
|
|
54
|
-
// Mark task as initialized so subsequent injections don't recompute using
|
|
55
|
-
// a potentially lazy dependencies() function and lose computed values.
|
|
56
|
-
task.isInitialized = true;
|
|
57
|
-
}
|
|
58
|
-
// Most likely these are resources that no-one has dependencies towards
|
|
59
|
-
// We need to ensure they work too!
|
|
60
|
-
async initializeUninitializedResources() {
|
|
61
|
-
for (const resource of this.store.resources.values()) {
|
|
62
|
-
if (resource.isInitialized === false &&
|
|
63
|
-
// The root is the last one to be initialized and is done in a separate process.
|
|
64
|
-
resource.resource.id !== this.store.root.resource.id) {
|
|
65
|
-
await this.processResourceDependencies(resource);
|
|
66
|
-
const { value, context } = await this.resourceInitializer.initializeResource(resource.resource, resource.config, resource.computedDependencies);
|
|
67
|
-
resource.context = context;
|
|
68
|
-
resource.value = value;
|
|
69
|
-
resource.isInitialized = true;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Processes dependencies and hooks
|
|
75
|
-
* @param resource
|
|
76
|
-
*/
|
|
77
|
-
async processResourceDependencies(resource) {
|
|
78
|
-
const deps = (resource.resource.dependencies || {});
|
|
79
|
-
const extracted = await this.extractDependencies(deps, resource.resource.id);
|
|
80
|
-
resource.computedDependencies = this.wrapResourceDependencies(deps, extracted);
|
|
81
|
-
// resource.isInitialized = true;
|
|
82
|
-
}
|
|
83
|
-
wrapResourceDependencies(deps, extracted) {
|
|
84
|
-
const wrapped = {};
|
|
85
|
-
for (const key of Object.keys(deps)) {
|
|
86
|
-
const original = deps[key];
|
|
87
|
-
const value = extracted[key];
|
|
88
|
-
// Handle optional wrappers
|
|
89
|
-
if (utils.isOptional(original)) {
|
|
90
|
-
const inner = original.inner;
|
|
91
|
-
if (utils.isTask(inner)) {
|
|
92
|
-
wrapped[key] = value
|
|
93
|
-
? this.makeTaskWithIntercept(inner)
|
|
94
|
-
: undefined;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
wrapped[key] = value;
|
|
98
|
-
}
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
if (utils.isTask(original)) {
|
|
102
|
-
wrapped[key] = this.makeTaskWithIntercept(original);
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
wrapped[key] = value;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return wrapped;
|
|
109
|
-
}
|
|
110
|
-
makeTaskWithIntercept(original) {
|
|
111
|
-
const taskId = original.id;
|
|
112
|
-
const fn = (input) => {
|
|
113
|
-
const storeTask = this.store.tasks.get(taskId);
|
|
114
|
-
const effective = storeTask.task;
|
|
115
|
-
return this.taskRunner.run(effective, input);
|
|
116
|
-
};
|
|
117
|
-
return Object.assign(fn, {
|
|
118
|
-
intercept: (middleware) => {
|
|
119
|
-
this.store.checkLock();
|
|
120
|
-
const storeTask = this.store.tasks.get(taskId);
|
|
121
|
-
if (!storeTask.interceptors)
|
|
122
|
-
storeTask.interceptors = [];
|
|
123
|
-
storeTask.interceptors.push(middleware);
|
|
124
|
-
},
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
async initializeRoot() {
|
|
128
|
-
const rootResource = this.store.root;
|
|
129
|
-
const { value, context } = await this.resourceInitializer.initializeResource(rootResource.resource, rootResource.config,
|
|
130
|
-
// They are already computed
|
|
131
|
-
rootResource.computedDependencies);
|
|
132
|
-
rootResource.context = context;
|
|
133
|
-
rootResource.value = value;
|
|
134
|
-
rootResource.isInitialized = true;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Processes all hooks, should run before emission of any event.
|
|
138
|
-
*/
|
|
139
|
-
attachListeners() {
|
|
140
|
-
// Attach listeners for dedicated hooks map
|
|
141
|
-
for (const hookStoreElement of this.store.hooks.values()) {
|
|
142
|
-
const hook = hookStoreElement.hook;
|
|
143
|
-
if (hook.on) {
|
|
144
|
-
const eventDefinition = hook.on;
|
|
145
|
-
const handler = async (receivedEvent) => {
|
|
146
|
-
if (receivedEvent.source === hook.id) {
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
return this.eventManager.executeHookWithInterceptors(hook, receivedEvent, hookStoreElement.computedDependencies);
|
|
150
|
-
};
|
|
151
|
-
const order = hook.order ?? 0;
|
|
152
|
-
if (eventDefinition === "*") {
|
|
153
|
-
this.eventManager.addGlobalListener(handler, { order });
|
|
154
|
-
}
|
|
155
|
-
else if (Array.isArray(eventDefinition)) {
|
|
156
|
-
for (const ed of eventDefinition) {
|
|
157
|
-
if (this.store.events.get(ed.id) === undefined) {
|
|
158
|
-
throw new errors_1.EventNotFoundError(ed.id);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
this.eventManager.addListener(eventDefinition, handler, {
|
|
162
|
-
order,
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
if (this.store.events.get(eventDefinition.id) === undefined) {
|
|
167
|
-
throw new errors_1.EventNotFoundError(eventDefinition.id);
|
|
168
|
-
}
|
|
169
|
-
this.eventManager.addListener(eventDefinition, handler, {
|
|
170
|
-
order,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
async extractDependencies(map, source) {
|
|
177
|
-
const object = {};
|
|
178
|
-
for (const key in map) {
|
|
179
|
-
try {
|
|
180
|
-
object[key] = await this.extractDependency(map[key], source);
|
|
181
|
-
// Special handling, a little bit of magic and memory sacrifice for the sake of observability.
|
|
182
|
-
// Maybe later we can allow this to be opt-in to save 'memory' in the case of large tasks?
|
|
183
|
-
if (object[key] instanceof Logger_1.Logger) {
|
|
184
|
-
object[key] = object[key].with({ source });
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
catch (e) {
|
|
188
|
-
const errorMessage = String(e);
|
|
189
|
-
this.logger.error(`Failed to extract dependency from source: ${source} -> ${key} with error: ${errorMessage}`);
|
|
190
|
-
throw e;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
this.logger.trace(`Finished computing dependencies for source: ${source}`);
|
|
194
|
-
return object;
|
|
195
|
-
}
|
|
196
|
-
async extractDependency(object, source) {
|
|
197
|
-
this.logger.trace(`Extracting dependency -> ${source} -> ${object?.id}`);
|
|
198
|
-
if (utils.isOptional(object)) {
|
|
199
|
-
const inner = object.inner;
|
|
200
|
-
if (utils.isResource(inner)) {
|
|
201
|
-
const exists = this.store.resources.get(inner.id) !== undefined;
|
|
202
|
-
return exists ? this.extractResourceDependency(inner) : undefined;
|
|
203
|
-
}
|
|
204
|
-
else if (utils.isTask(inner)) {
|
|
205
|
-
const exists = this.store.tasks.get(inner.id) !== undefined;
|
|
206
|
-
return exists ? this.extractTaskDependency(inner) : undefined;
|
|
207
|
-
}
|
|
208
|
-
else if (utils.isEvent(inner)) {
|
|
209
|
-
const exists = this.store.events.get(inner.id) !== undefined;
|
|
210
|
-
return exists ? this.extractEventDependency(inner, source) : undefined;
|
|
211
|
-
}
|
|
212
|
-
throw new errors_1.UnknownItemTypeError(inner);
|
|
213
|
-
}
|
|
214
|
-
if (utils.isResource(object)) {
|
|
215
|
-
return this.extractResourceDependency(object);
|
|
216
|
-
}
|
|
217
|
-
else if (utils.isTask(object)) {
|
|
218
|
-
return this.extractTaskDependency(object);
|
|
219
|
-
}
|
|
220
|
-
else if (utils.isEvent(object)) {
|
|
221
|
-
return this.extractEventDependency(object, source);
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
throw new errors_1.UnknownItemTypeError(object);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Converts the event into a running functions with real inputs
|
|
229
|
-
* @param object
|
|
230
|
-
* @returns
|
|
231
|
-
*/
|
|
232
|
-
extractEventDependency(object, source) {
|
|
233
|
-
return async (input) => {
|
|
234
|
-
return this.eventManager.emit(object, input, source);
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
async extractTaskDependency(object) {
|
|
238
|
-
const storeTask = this.store.tasks.get(object.id);
|
|
239
|
-
if (storeTask === undefined) {
|
|
240
|
-
throw new errors_1.DependencyNotFoundError(`Task ${object.id}`);
|
|
241
|
-
}
|
|
242
|
-
if (!storeTask.isInitialized) {
|
|
243
|
-
// it's sanitised
|
|
244
|
-
const dependencies = object.dependencies;
|
|
245
|
-
storeTask.computedDependencies = await this.extractDependencies(dependencies, storeTask.task.id);
|
|
246
|
-
storeTask.isInitialized = true;
|
|
247
|
-
}
|
|
248
|
-
return (input) => {
|
|
249
|
-
return this.taskRunner.run(storeTask.task, input);
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
async extractResourceDependency(object) {
|
|
253
|
-
// check if it exists in the store with the value
|
|
254
|
-
const storeResource = this.store.resources.get(object.id);
|
|
255
|
-
if (storeResource === undefined) {
|
|
256
|
-
throw new errors_1.DependencyNotFoundError(`Resource ${object.id}`);
|
|
257
|
-
}
|
|
258
|
-
const { resource, config } = storeResource;
|
|
259
|
-
if (!storeResource.isInitialized) {
|
|
260
|
-
// check if it has an initialisation function that provides the value
|
|
261
|
-
if (resource.init) {
|
|
262
|
-
const depMap = (resource.dependencies || {});
|
|
263
|
-
const raw = await this.extractDependencies(depMap, resource.id);
|
|
264
|
-
const wrapped = this.wrapResourceDependencies(depMap, raw);
|
|
265
|
-
const { value, context } = await this.resourceInitializer.initializeResource(resource, config, wrapped);
|
|
266
|
-
storeResource.context = context;
|
|
267
|
-
storeResource.value = value;
|
|
268
|
-
}
|
|
269
|
-
// we need to initialize the resource
|
|
270
|
-
storeResource.isInitialized = true;
|
|
271
|
-
}
|
|
272
|
-
return storeResource.value;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
exports.DependencyProcessor = DependencyProcessor;
|
|
276
|
-
//# sourceMappingURL=DependencyProcessor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyProcessor.js","sourceRoot":"","sources":["../../src/models/DependencyProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { DependencyValuesType, EventHandlerType, IEvent, IEventEmission } from "../defs";
|
|
2
|
-
import { IHook } from "../types/hook";
|
|
3
|
-
/**
|
|
4
|
-
* Options for configuring event listeners
|
|
5
|
-
*/
|
|
6
|
-
export interface IEventHandlerOptions<T = any> {
|
|
7
|
-
order?: number;
|
|
8
|
-
filter?: (event: IEventEmission<T>) => boolean;
|
|
9
|
-
/**
|
|
10
|
-
* Represents the listener ID. Use this to avoid a listener calling himself.
|
|
11
|
-
*/
|
|
12
|
-
id?: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Interceptor for event emissions
|
|
16
|
-
*/
|
|
17
|
-
export type EventEmissionInterceptor = (next: (event: IEventEmission<any>) => Promise<void>, event: IEventEmission<any>) => Promise<void>;
|
|
18
|
-
/**
|
|
19
|
-
* Interceptor for hook execution
|
|
20
|
-
*/
|
|
21
|
-
export type HookExecutionInterceptor = (next: (hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>, hook: IHook<any, any>, event: IEventEmission<any>) => Promise<any>;
|
|
22
|
-
/**
|
|
23
|
-
* EventManager handles event emission, listener registration, and event processing.
|
|
24
|
-
* It supports both specific event listeners and global listeners that handle all events.
|
|
25
|
-
* Listeners are processed in order based on their priority.
|
|
26
|
-
*/
|
|
27
|
-
export declare class EventManager {
|
|
28
|
-
#private;
|
|
29
|
-
private listeners;
|
|
30
|
-
private globalListeners;
|
|
31
|
-
private cachedMergedListeners;
|
|
32
|
-
private globalListenersCacheValid;
|
|
33
|
-
private emissionInterceptors;
|
|
34
|
-
private hookInterceptors;
|
|
35
|
-
private readonly emissionStack;
|
|
36
|
-
private readonly currentHookIdContext;
|
|
37
|
-
private readonly runtimeCycleDetection;
|
|
38
|
-
constructor(options?: {
|
|
39
|
-
runtimeCycleDetection?: boolean;
|
|
40
|
-
});
|
|
41
|
-
/**
|
|
42
|
-
* Gets the current lock status of the EventManager
|
|
43
|
-
*/
|
|
44
|
-
get isLocked(): boolean;
|
|
45
|
-
/**
|
|
46
|
-
* Locks the EventManager, preventing any further modifications to listeners
|
|
47
|
-
*/
|
|
48
|
-
lock(): void;
|
|
49
|
-
/**
|
|
50
|
-
* Emits an event to all registered listeners for that event type.
|
|
51
|
-
* Listeners are processed in order of priority and can stop event propagation.
|
|
52
|
-
*
|
|
53
|
-
* @param eventDefinition - The event definition to emit
|
|
54
|
-
* @param data - The event payload data
|
|
55
|
-
* @param source - The source identifier of the event emitter
|
|
56
|
-
*/
|
|
57
|
-
emit<TInput>(eventDefinition: IEvent<TInput>, data: TInput, source: string): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Registers an event listener for specific event(s).
|
|
60
|
-
* Listeners are ordered by priority and executed in ascending order.
|
|
61
|
-
*
|
|
62
|
-
* @param event - The event definition(s) to listen for
|
|
63
|
-
* @param handler - The callback function to handle the event
|
|
64
|
-
* @param options - Configuration options for the listener
|
|
65
|
-
*/
|
|
66
|
-
addListener<T>(event: IEvent<T> | Array<IEvent<T>>, handler: EventHandlerType<T>, options?: IEventHandlerOptions<T>): void;
|
|
67
|
-
/**
|
|
68
|
-
* Registers a global event listener that handles all events.
|
|
69
|
-
* Global listeners are mixed with specific listeners and ordered by priority.
|
|
70
|
-
*
|
|
71
|
-
* @param handler - The callback function to handle events
|
|
72
|
-
* @param options - Configuration options for the listener
|
|
73
|
-
*/
|
|
74
|
-
addGlobalListener(handler: EventHandlerType, options?: IEventHandlerOptions): void;
|
|
75
|
-
/**
|
|
76
|
-
* Checks if there are any listeners registered for the given event
|
|
77
|
-
*
|
|
78
|
-
* @param eventDefinition - The event definition to check
|
|
79
|
-
* @returns true if listeners exist, false otherwise
|
|
80
|
-
*/
|
|
81
|
-
hasListeners<T>(eventDefinition: IEvent<T>): boolean;
|
|
82
|
-
/**
|
|
83
|
-
* Adds an interceptor for all event emissions
|
|
84
|
-
* Interceptors are executed in the order they are added, with the ability to
|
|
85
|
-
* modify, log, or prevent event emissions
|
|
86
|
-
*
|
|
87
|
-
* @param interceptor - The interceptor function to add
|
|
88
|
-
*/
|
|
89
|
-
intercept(interceptor: EventEmissionInterceptor): void;
|
|
90
|
-
/**
|
|
91
|
-
* Adds an interceptor for hook execution
|
|
92
|
-
* Interceptors are executed in the order they are added, with the ability to
|
|
93
|
-
* modify, log, or prevent hook execution
|
|
94
|
-
*
|
|
95
|
-
* @param interceptor - The interceptor function to add
|
|
96
|
-
*/
|
|
97
|
-
interceptHook(interceptor: HookExecutionInterceptor): void;
|
|
98
|
-
/**
|
|
99
|
-
* Executes a hook with all registered hook interceptors applied
|
|
100
|
-
* This method should be used by TaskRunner when executing hooks
|
|
101
|
-
*
|
|
102
|
-
* @param hook - The hook to execute
|
|
103
|
-
* @param event - The event that triggered the hook
|
|
104
|
-
* @param computedDependencies - The computed dependencies for the hook
|
|
105
|
-
* @returns Promise resolving to the hook execution result
|
|
106
|
-
*/
|
|
107
|
-
executeHookWithInterceptors(hook: IHook<any, any>, event: IEventEmission<any>, computedDependencies: DependencyValuesType<any>): Promise<any>;
|
|
108
|
-
/**
|
|
109
|
-
* Throws an error if the EventManager is locked
|
|
110
|
-
*/
|
|
111
|
-
private checkLock;
|
|
112
|
-
/**
|
|
113
|
-
* Merges two sorted arrays of listeners while maintaining order.
|
|
114
|
-
* Used to combine event-specific listeners with global listeners.
|
|
115
|
-
*
|
|
116
|
-
* @param a - First array of listeners
|
|
117
|
-
* @param b - Second array of listeners
|
|
118
|
-
* @returns Merged and sorted array of listeners
|
|
119
|
-
*/
|
|
120
|
-
private mergeSortedListeners;
|
|
121
|
-
/**
|
|
122
|
-
* Inserts a new listener into a sorted array using binary search.
|
|
123
|
-
* Maintains order based on listener priority.
|
|
124
|
-
*
|
|
125
|
-
* @param listeners - Array to insert into
|
|
126
|
-
* @param newListener - Listener to insert
|
|
127
|
-
*/
|
|
128
|
-
private insertListener;
|
|
129
|
-
/**
|
|
130
|
-
* Returns true if the given emission carries the tag that marks
|
|
131
|
-
* it as excluded from global ("*") listeners.
|
|
132
|
-
*
|
|
133
|
-
* @param event - The event emission to check
|
|
134
|
-
* @returns true if event should exclude global listeners
|
|
135
|
-
*/
|
|
136
|
-
private isExcludedFromGlobal;
|
|
137
|
-
/**
|
|
138
|
-
* Retrieves cached merged listeners for an event, or creates them if not cached.
|
|
139
|
-
* Combines event-specific listeners with global listeners and sorts them by priority.
|
|
140
|
-
*
|
|
141
|
-
* @param eventId - The event ID to get listeners for
|
|
142
|
-
* @returns Array of merged listeners sorted by priority
|
|
143
|
-
*/
|
|
144
|
-
private getCachedMergedListeners;
|
|
145
|
-
/**
|
|
146
|
-
* Invalidates the cached merged listeners.
|
|
147
|
-
* If eventId is provided, only invalidates cache for that specific event.
|
|
148
|
-
* Otherwise, invalidates the global cache.
|
|
149
|
-
*
|
|
150
|
-
* @param eventId - Optional specific event ID to invalidate
|
|
151
|
-
*/
|
|
152
|
-
private invalidateCache;
|
|
153
|
-
}
|