@bluelibs/runner 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +310 -178
  2. package/dist/define.d.ts +2 -2
  3. package/dist/define.js +12 -9
  4. package/dist/define.js.map +1 -1
  5. package/dist/defs.d.ts +45 -12
  6. package/dist/examples/express-mongo/index.d.ts +0 -0
  7. package/dist/examples/express-mongo/index.js +3 -0
  8. package/dist/examples/express-mongo/index.js.map +1 -0
  9. package/dist/globalEvents.d.ts +3 -1
  10. package/dist/globalEvents.js +1 -0
  11. package/dist/globalEvents.js.map +1 -1
  12. package/dist/index.d.ts +3 -1
  13. package/dist/models/DependencyProcessor.d.ts +4 -2
  14. package/dist/models/DependencyProcessor.js +45 -20
  15. package/dist/models/DependencyProcessor.js.map +1 -1
  16. package/dist/models/EventManager.d.ts +2 -1
  17. package/dist/models/EventManager.js +47 -21
  18. package/dist/models/EventManager.js.map +1 -1
  19. package/dist/models/Logger.d.ts +15 -10
  20. package/dist/models/Logger.js +27 -15
  21. package/dist/models/Logger.js.map +1 -1
  22. package/dist/models/ResourceInitializer.d.ts +4 -1
  23. package/dist/models/ResourceInitializer.js +39 -7
  24. package/dist/models/ResourceInitializer.js.map +1 -1
  25. package/dist/models/Store.d.ts +5 -1
  26. package/dist/models/Store.js +27 -3
  27. package/dist/models/Store.js.map +1 -1
  28. package/dist/models/TaskRunner.d.ts +3 -1
  29. package/dist/models/TaskRunner.js +13 -3
  30. package/dist/models/TaskRunner.js.map +1 -1
  31. package/dist/run.d.ts +0 -8
  32. package/dist/run.js +8 -6
  33. package/dist/run.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/__tests__/index.ts +2 -0
  36. package/src/__tests__/models/EventManager.test.ts +338 -67
  37. package/src/__tests__/models/Logger.test.ts +44 -1
  38. package/src/__tests__/models/ResourceInitializer.test.ts +6 -4
  39. package/src/__tests__/models/Store.test.ts +4 -2
  40. package/src/__tests__/models/TaskRunner.test.ts +9 -4
  41. package/src/__tests__/run.middleware.test.ts +249 -0
  42. package/src/__tests__/run.test.ts +112 -131
  43. package/src/__tests__/typesafety.test.ts +127 -0
  44. package/src/define.ts +15 -11
  45. package/src/defs.ts +63 -21
  46. package/src/examples/express-mongo/index.ts +1 -0
  47. package/src/globalEvents.ts +5 -2
  48. package/src/models/DependencyProcessor.ts +77 -33
  49. package/src/models/EventManager.ts +55 -25
  50. package/src/models/Logger.ts +36 -16
  51. package/src/models/ResourceInitializer.ts +54 -8
  52. package/src/models/Store.ts +34 -3
  53. package/src/models/TaskRunner.ts +13 -3
  54. package/src/run.ts +16 -13
package/dist/define.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ITask, ITaskDefinition, IResource, IResourceWithConfig, IResourceDefinintion, IEventDefinition, IMiddlewareDefinition, DependencyMapType, IMiddleware } from "./defs";
2
- export declare function defineTask<Input = undefined, Output extends Promise<any> = any, Deps extends DependencyMapType = any, Test = any>(config: ITaskDefinition<Input, Output, Deps, Test>): ITask<Input, Output, Deps, Test>;
3
- export declare function defineResource<TConfig = void, TValue = any, TDeps extends DependencyMapType = {}>(constConfig: IResourceDefinintion<TConfig, TValue, TDeps>): IResource<TConfig, TValue, TDeps>;
2
+ export declare function defineTask<Input = undefined, Output extends Promise<any> = any, Deps extends DependencyMapType = any, Test = any>(taskConfig: ITaskDefinition<Input, Output, Deps, Test>): ITask<Input, Output, Deps, Test>;
3
+ export declare function defineResource<TConfig = void, TValue = any, TDeps extends DependencyMapType = {}, THooks = any>(constConfig: IResourceDefinintion<TConfig, TValue, TDeps, THooks>): IResource<TConfig, TValue, TDeps>;
4
4
  export declare function defineEvent<TPayload = any>(config: IEventDefinition<TPayload>): IEventDefinition<TPayload>;
5
5
  export declare function defineMiddleware<TDeps extends DependencyMapType = {}>(config: IMiddlewareDefinition<TDeps>): IMiddleware<TDeps>;
6
6
  export declare function isTask(definition: any): definition is ITask;
package/dist/define.js CHANGED
@@ -11,25 +11,26 @@ exports.isEvent = isEvent;
11
11
  exports.isMiddleware = isMiddleware;
12
12
  const defs_1 = require("./defs");
13
13
  const errors_1 = require("./errors");
14
- function defineTask(config) {
14
+ function defineTask(taskConfig) {
15
15
  return {
16
16
  [defs_1.symbols.task]: true,
17
- id: config.id,
18
- dependencies: config.dependencies || {},
19
- middleware: config.middleware || [],
20
- run: config.run,
21
- on: config.on,
17
+ id: taskConfig.id,
18
+ dependencies: taskConfig.dependencies || {},
19
+ middleware: taskConfig.middleware || [],
20
+ run: taskConfig.run,
21
+ on: taskConfig.on,
22
22
  events: {
23
23
  beforeRun: defineEvent({
24
- id: `${config.id}.beforeRun`,
24
+ id: `${taskConfig.id}.beforeRun`,
25
25
  }),
26
26
  afterRun: defineEvent({
27
- id: `${config.id}.afterRun`,
27
+ id: `${taskConfig.id}.afterRun`,
28
28
  }),
29
29
  onError: defineEvent({
30
- id: `${config.id}.onError`,
30
+ id: `${taskConfig.id}.onError`,
31
31
  }),
32
32
  },
33
+ meta: taskConfig.meta || {},
33
34
  // autorun,
34
35
  };
35
36
  }
@@ -61,6 +62,8 @@ function defineResource(constConfig) {
61
62
  id: `${constConfig.id}.onError`,
62
63
  }),
63
64
  },
65
+ meta: constConfig.meta || {},
66
+ middleware: constConfig.middleware || [],
64
67
  };
65
68
  }
66
69
  function defineEvent(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
package/dist/defs.d.ts CHANGED
@@ -9,7 +9,7 @@ export declare const symbols: {
9
9
  export interface IMeta {
10
10
  title?: string;
11
11
  description?: string;
12
- tags: string[];
12
+ tags?: string[];
13
13
  }
14
14
  export interface ITaskMeta extends IMeta {
15
15
  }
@@ -20,18 +20,31 @@ export interface IEventMeta extends IMeta {
20
20
  export interface IMiddlewareMeta extends IMeta {
21
21
  }
22
22
  export type DependencyMapType = Record<string, ITask | IResource | IEventDefinition | IResourceWithConfig<any, any>>;
23
- export type DependencyValueType<T> = T extends ITask<infer I, infer O,
24
- /** The infer D, while not used is crucial for making this work correctly, otherwise it forces input: unknown to a dependency that has a dependency. */
25
- infer D> ? (...args: I extends unknown ? [] : [I]) => O : T extends IResource<any, infer V> ? V : T extends IEventDefinition<infer P> ? (input: P) => Promise<void> | never : never;
23
+ type ExtractTaskInput<T> = T extends ITask<infer I, any, infer D> ? I : never;
24
+ type ExtractTaskOutput<T> = T extends ITask<any, infer O, infer D> ? O : never;
25
+ type ExtractResourceValue<T> = T extends IResource<any, infer V, infer D> ? V : never;
26
+ type ExtractEventParams<T> = T extends IEventDefinition<infer P> ? P : never;
27
+ type TaskDependency<I, O> = (...args: I extends null | void ? [] : [I]) => O;
28
+ type ResourceDependency<V> = V;
29
+ type EventDependency<P> = (input: P) => Promise<void>;
30
+ export type DependencyValueType<T> = T extends ITask<any, any, any> ? TaskDependency<ExtractTaskInput<T>, ExtractTaskOutput<T>> : T extends IResource<any, any> ? ResourceDependency<ExtractResourceValue<T>> : T extends IEventDefinition<any> ? EventDependency<ExtractEventParams<T>> : never;
26
31
  export type DependencyValuesType<T extends DependencyMapType> = {
27
32
  [K in keyof T]: DependencyValueType<T[K]>;
28
33
  };
29
- export type RegisterableItems = IResource<void> | IResourceWithConfig<any> | ITaskDefinition | IMiddlewareDefinition | IEventDefinition;
34
+ export type RegisterableItems = IResourceWithConfig<any> | IResource<any> | ITaskDefinition | IMiddlewareDefinition | IEventDefinition;
30
35
  export interface ITaskDefinition<TInput = any, TOutput extends Promise<any> = any, TDependencies extends DependencyMapType = {}, TEventDefinitionInput = null> {
31
36
  id: string;
32
37
  dependencies?: TDependencies | (() => TDependencies);
33
38
  middleware?: IMiddlewareDefinition[];
39
+ /**
40
+ * Listen to events in a simple way
41
+ */
34
42
  on?: IEventDefinition<TEventDefinitionInput>;
43
+ /**
44
+ * This makes sense only when `on` is specified to provide the order of the execution.
45
+ * The event with the lowest order will be executed first.
46
+ */
47
+ listenerOrder?: number;
35
48
  meta?: ITaskMeta;
36
49
  run: (input: TEventDefinitionInput extends null ? TInput : TEventDefinitionInput, dependencies: DependencyValuesType<TDependencies>) => TOutput;
37
50
  }
@@ -44,6 +57,10 @@ export type AfterRunEventPayload<TInput, TOutput> = {
44
57
  };
45
58
  export type OnErrorEventPayload = {
46
59
  error: any;
60
+ /**
61
+ * This function can be called to suppress the error from being thrown.
62
+ */
63
+ suppress(): void;
47
64
  };
48
65
  export type BeforeInitEventPayload<TConfig> = {
49
66
  config: TConfig;
@@ -68,10 +85,10 @@ export interface ITask<TInput = any, TOutput extends Promise<any> = any, TDepend
68
85
  onError: IEventDefinition<OnErrorEventPayload>;
69
86
  };
70
87
  }
71
- export interface IResourceDefinintion<TConfig = void, TValue = unknown, TDependencies extends DependencyMapType = {}> {
88
+ export interface IResourceDefinintion<TConfig = any, TValue = unknown, TDependencies extends DependencyMapType = {}, THooks = any, TRegisterableItems = any> {
72
89
  id: string;
73
90
  dependencies?: TDependencies | ((config: TConfig) => TDependencies);
74
- hooks?: IHookDefinition<TDependencies>[] | ((config: TConfig) => IHookDefinition<TDependencies>[]);
91
+ hooks?: IHookDefinition<TDependencies, THooks>[] | ((config: TConfig) => IHookDefinition<TDependencies, THooks>[]);
75
92
  register?: Array<RegisterableItems> | ((config: TConfig) => Array<RegisterableItems>);
76
93
  init?: (config: TConfig, dependencies: DependencyValuesType<TDependencies>) => Promise<TValue>;
77
94
  /**
@@ -85,6 +102,7 @@ export interface IResourceDefinintion<TConfig = void, TValue = unknown, TDepende
85
102
  dispose?: (value: TValue, config: TConfig, dependencies: DependencyValuesType<TDependencies>) => Promise<TValue>;
86
103
  meta?: IResourceMeta;
87
104
  overrides?: Array<IResource | ITask | IMiddleware | IResourceWithConfig>;
105
+ middleware?: IMiddlewareDefinition[];
88
106
  }
89
107
  export interface IResource<TConfig = void, TValue = any, TDependencies extends DependencyMapType = any> extends IResourceDefinintion<TConfig, TValue, TDependencies> {
90
108
  with(config: TConfig): IResourceWithConfig<TConfig, TValue, TDependencies>;
@@ -99,6 +117,7 @@ export interface IResource<TConfig = void, TValue = any, TDependencies extends D
99
117
  };
100
118
  hooks: IHookDefinition<TDependencies>[] | ((config: TConfig) => IHookDefinition<TDependencies>[]);
101
119
  overrides: Array<IResource | ITask | IMiddleware | IResourceWithConfig>;
120
+ middleware: IMiddlewareDefinition[];
102
121
  }
103
122
  export interface IResourceWithConfig<TConfig = any, TValue = any, TDependencies extends DependencyMapType = any> {
104
123
  resource: IResource<TConfig, TValue, TDependencies>;
@@ -107,6 +126,7 @@ export interface IResourceWithConfig<TConfig = any, TValue = any, TDependencies
107
126
  export interface IEvent<TPayload = any> {
108
127
  id: string;
109
128
  data: TPayload;
129
+ timestamp: Date;
110
130
  }
111
131
  export type EventHandlerType<T = any> = (event: IEvent<T>) => any | Promise<any>;
112
132
  export interface IEventDefinition<TPayload = void> {
@@ -129,10 +149,23 @@ export interface IMiddlewareDefinitionConfigured<C extends Record<string, any> =
129
149
  }
130
150
  export interface IMiddlewareExecutionInput {
131
151
  taskDefinition?: ITask;
132
- input: any;
133
- next: (input?: any) => Promise<any>;
152
+ resourceDefinition?: IResource;
153
+ config?: any;
154
+ input?: any;
155
+ next: (taskInputOrResourceConfig?: any) => Promise<any>;
134
156
  }
135
- export interface IHookDefinition<D extends DependencyMapType = {}, T = any> {
136
- event: IEventDefinition<T>;
137
- run: (event: IEvent<T>, dependencies: DependencyValuesType<D>) => Promise<void> | void;
157
+ export interface IHookDefinition<D extends DependencyMapType = {}, T = any, B extends boolean = false> {
158
+ event: "*" | IEventDefinition<T>;
159
+ /**
160
+ * The higher the number, the higher the priority.
161
+ * We recommend using numbers between -1000 and 1000.
162
+ */
163
+ order?: number;
164
+ /**
165
+ * These are hooks that run before any resource instantiation.
166
+ * @param event
167
+ */
168
+ early?: B;
169
+ run: (event: IEvent<T>, dependencies: T extends true ? void : DependencyValuesType<D>) => Promise<void> | void;
138
170
  }
171
+ export {};
File without changes
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ // TODO
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/examples/express-mongo/index.ts"],"names":[],"mappings":";AAAA,OAAO"}
@@ -15,7 +15,8 @@ export declare const globalEvents: {
15
15
  output: any;
16
16
  }>;
17
17
  onError: import("./defs").IEventDefinition<{
18
- error: Error;
18
+ error: any;
19
+ suppress: () => void;
19
20
  task: ITask<any, any, any>;
20
21
  }>;
21
22
  };
@@ -31,6 +32,7 @@ export declare const globalEvents: {
31
32
  }>;
32
33
  onError: import("./defs").IEventDefinition<{
33
34
  error: Error;
35
+ suppress: () => void;
34
36
  resource: IResource<any, any, any>;
35
37
  }>;
36
38
  };
@@ -36,6 +36,7 @@ exports.globalEvents = {
36
36
  },
37
37
  };
38
38
  exports.globalEventsArray = [
39
+ exports.globalEvents.log,
39
40
  exports.globalEvents.beforeInit,
40
41
  exports.globalEvents.afterInit,
41
42
  exports.globalEvents.tasks.beforeRun,
@@ -1 +1 @@
1
- {"version":3,"file":"globalEvents.js","sourceRoot":"","sources":["../src/globalEvents.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAI1B,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,IAAA,oBAAW,EAAC;QACtB,EAAE,EAAE,mBAAmB;KACxB,CAAC;IACF,SAAS,EAAE,IAAA,oBAAW,EAAC;QACrB,EAAE,EAAE,kBAAkB;KACvB,CAAC;IACF,GAAG,EAAE,IAAA,oBAAW,EAAO;QACrB,EAAE,EAAE,YAAY;KACjB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,IAAA,oBAAW,EAGnB;YACD,EAAE,EAAE,wBAAwB;SAC7B,CAAC;QACF,QAAQ,EAAE,IAAA,oBAAW,EAIlB;YACD,EAAE,EAAE,uBAAuB;SAC5B,CAAC;QACF,OAAO,EAAE,IAAA,oBAAW,EAGjB;YACD,EAAE,EAAE,sBAAsB;SAC3B,CAAC;KACH;IACD,SAAS,EAAE;QACT,UAAU,EAAE,IAAA,oBAAW,EAGpB;YACD,EAAE,EAAE,6BAA6B;SAClC,CAAC;QACF,SAAS,EAAE,IAAA,oBAAW,EAInB;YACD,EAAE,EAAE,4BAA4B;SACjC,CAAC;QACF,OAAO,EAAE,IAAA,oBAAW,EAGjB;YACD,EAAE,EAAE,0BAA0B;SAC/B,CAAC;KACH;CACF,CAAC;AAEW,QAAA,iBAAiB,GAAG;IAC/B,oBAAY,CAAC,UAAU;IACvB,oBAAY,CAAC,SAAS;IACtB,oBAAY,CAAC,KAAK,CAAC,SAAS;IAC5B,oBAAY,CAAC,KAAK,CAAC,QAAQ;IAC3B,oBAAY,CAAC,KAAK,CAAC,OAAO;IAC1B,oBAAY,CAAC,SAAS,CAAC,UAAU;IACjC,oBAAY,CAAC,SAAS,CAAC,SAAS;IAChC,oBAAY,CAAC,SAAS,CAAC,OAAO;CAC/B,CAAC"}
1
+ {"version":3,"file":"globalEvents.js","sourceRoot":"","sources":["../src/globalEvents.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAI1B,QAAA,YAAY,GAAG;IAC1B,UAAU,EAAE,IAAA,oBAAW,EAAC;QACtB,EAAE,EAAE,mBAAmB;KACxB,CAAC;IACF,SAAS,EAAE,IAAA,oBAAW,EAAC;QACrB,EAAE,EAAE,kBAAkB;KACvB,CAAC;IACF,GAAG,EAAE,IAAA,oBAAW,EAAO;QACrB,EAAE,EAAE,YAAY;KACjB,CAAC;IACF,KAAK,EAAE;QACL,SAAS,EAAE,IAAA,oBAAW,EAGnB;YACD,EAAE,EAAE,wBAAwB;SAC7B,CAAC;QACF,QAAQ,EAAE,IAAA,oBAAW,EAIlB;YACD,EAAE,EAAE,uBAAuB;SAC5B,CAAC;QACF,OAAO,EAAE,IAAA,oBAAW,EAIjB;YACD,EAAE,EAAE,sBAAsB;SAC3B,CAAC;KACH;IACD,SAAS,EAAE;QACT,UAAU,EAAE,IAAA,oBAAW,EAGpB;YACD,EAAE,EAAE,6BAA6B;SAClC,CAAC;QACF,SAAS,EAAE,IAAA,oBAAW,EAInB;YACD,EAAE,EAAE,4BAA4B;SACjC,CAAC;QACF,OAAO,EAAE,IAAA,oBAAW,EAIjB;YACD,EAAE,EAAE,0BAA0B;SAC/B,CAAC;KACH;CACF,CAAC;AAEW,QAAA,iBAAiB,GAAG;IAC/B,oBAAY,CAAC,GAAG;IAChB,oBAAY,CAAC,UAAU;IACvB,oBAAY,CAAC,SAAS;IACtB,oBAAY,CAAC,KAAK,CAAC,SAAS;IAC5B,oBAAY,CAAC,KAAK,CAAC,QAAQ;IAC3B,oBAAY,CAAC,KAAK,CAAC,OAAO;IAC1B,oBAAY,CAAC,SAAS,CAAC,UAAU;IACjC,oBAAY,CAAC,SAAS,CAAC,SAAS;IAChC,oBAAY,CAAC,SAAS,CAAC,OAAO;CAC/B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,8 @@ declare const globals: {
16
16
  output: any;
17
17
  }>;
18
18
  onError: import("./defs").IEventDefinition<{
19
- error: Error;
19
+ error: any;
20
+ suppress: () => void;
20
21
  task: import("./defs").ITask<any, any, any>;
21
22
  }>;
22
23
  };
@@ -32,6 +33,7 @@ declare const globals: {
32
33
  }>;
33
34
  onError: import("./defs").IEventDefinition<{
34
35
  error: Error;
36
+ suppress: () => void;
35
37
  resource: import("./defs").IResource<any, any, any>;
36
38
  }>;
37
39
  };
@@ -3,6 +3,7 @@ import { ResourceStoreElementType, Store } from "./Store";
3
3
  import { EventManager } from "./EventManager";
4
4
  import { ResourceInitializer } from "./ResourceInitializer";
5
5
  import { TaskRunner } from "./TaskRunner";
6
+ import { Logger } from "./Logger";
6
7
  /**
7
8
  * This class is responsible of setting up dependencies with their respective computedValues.
8
9
  * Note that all elements must have been previously registered otherwise errors will be thrown
@@ -12,12 +13,14 @@ export declare class DependencyProcessor {
12
13
  protected readonly store: Store;
13
14
  protected readonly eventManager: EventManager;
14
15
  protected readonly taskRunner: TaskRunner;
16
+ protected readonly logger: Logger;
15
17
  protected readonly resourceInitializer: ResourceInitializer;
16
- constructor(store: Store, eventManager: EventManager, taskRunner: TaskRunner);
18
+ constructor(store: Store, eventManager: EventManager, taskRunner: TaskRunner, logger: Logger);
17
19
  /**
18
20
  * This function is going to go through all the resources, tasks and middleware to compute their required dependencies.
19
21
  */
20
22
  computeAllDependencies(): Promise<void>;
23
+ private computeTaskDependencies;
21
24
  initializeUninitializedResources(): Promise<void>;
22
25
  /**
23
26
  * Processes dependencies and hooks
@@ -27,7 +30,6 @@ export declare class DependencyProcessor {
27
30
  initializeRoot(): Promise<void>;
28
31
  /**
29
32
  * Processes all hooks, should run before emission of any event.
30
- * @returns
31
33
  */
32
34
  attachHooks(): void;
33
35
  /**
@@ -13,12 +13,14 @@ class DependencyProcessor {
13
13
  store;
14
14
  eventManager;
15
15
  taskRunner;
16
+ logger;
16
17
  resourceInitializer;
17
- constructor(store, eventManager, taskRunner) {
18
+ constructor(store, eventManager, taskRunner, logger) {
18
19
  this.store = store;
19
20
  this.eventManager = eventManager;
20
21
  this.taskRunner = taskRunner;
21
- this.resourceInitializer = new ResourceInitializer_1.ResourceInitializer(store, eventManager);
22
+ this.logger = logger;
23
+ this.resourceInitializer = new ResourceInitializer_1.ResourceInitializer(store, eventManager, logger);
22
24
  }
23
25
  /**
24
26
  * This function is going to go through all the resources, tasks and middleware to compute their required dependencies.
@@ -29,21 +31,33 @@ class DependencyProcessor {
29
31
  middleware.computedDependencies = await this.extractDependencies(deps);
30
32
  }
31
33
  for (const task of this.store.tasks.values()) {
32
- const deps = task.task.dependencies;
33
- task.computedDependencies = await this.extractDependencies(deps);
34
- let eventDefinition = task.task.on;
35
- if (eventDefinition) {
36
- if (this.store.events.get(eventDefinition.id) === undefined) {
37
- throw errors_1.Errors.eventNotFound(eventDefinition.id);
38
- }
39
- this.eventManager.addListener(eventDefinition, async (receivedEvent) => {
40
- return this.taskRunner.run(task.task, receivedEvent, task.computedDependencies);
41
- });
42
- }
34
+ await this.computeTaskDependencies(task);
43
35
  }
44
36
  for (const resource of this.store.resources.values()) {
45
37
  await this.processResourceDependencies(resource);
46
38
  }
39
+ // leftovers that were registered but not depended upon, except root
40
+ // they should still be initialized as they might extend other
41
+ await this.initializeUninitializedResources();
42
+ }
43
+ async computeTaskDependencies(task) {
44
+ const deps = task.task.dependencies;
45
+ task.computedDependencies = await this.extractDependencies(deps);
46
+ let eventDefinition = task.task.on;
47
+ if (eventDefinition) {
48
+ if (this.store.events.get(eventDefinition.id) === undefined) {
49
+ throw errors_1.Errors.eventNotFound(eventDefinition.id);
50
+ }
51
+ this.eventManager.addListener(eventDefinition, async (receivedEvent) => {
52
+ this.logger.debug({
53
+ message: `Task ${task.task.id} listened to event: ${eventDefinition.id}`,
54
+ event: receivedEvent,
55
+ });
56
+ return this.taskRunner.run(task.task, receivedEvent, task.computedDependencies);
57
+ }, {
58
+ order: task.task.listenerOrder || 0,
59
+ });
60
+ }
47
61
  }
48
62
  // Most likely these are resources that no-one has dependencies towards
49
63
  // We need to ensure they work too!
@@ -74,10 +88,8 @@ class DependencyProcessor {
74
88
  }
75
89
  /**
76
90
  * Processes all hooks, should run before emission of any event.
77
- * @returns
78
91
  */
79
92
  attachHooks() {
80
- // iterate through resources and send them to processHooks
81
93
  for (const resource of this.store.resources.values()) {
82
94
  if (resource.resource.hooks) {
83
95
  this.attachHooksToResource(resource);
@@ -99,12 +111,24 @@ class DependencyProcessor {
99
111
  }
100
112
  for (const hook of hooks) {
101
113
  const event = hook.event;
102
- if (this.store.events.has(event.id) === false) {
103
- throw errors_1.Errors.eventNotFound(event.id);
114
+ const order = hook.order || 0;
115
+ if (event === "*") {
116
+ this.eventManager.addGlobalListener(async (receivedEvent) => {
117
+ return hook.run(receivedEvent, resourceStoreElement.computedDependencies);
118
+ }, {
119
+ order,
120
+ });
121
+ }
122
+ else {
123
+ if (this.store.events.has(event.id) === false) {
124
+ throw errors_1.Errors.eventNotFound(event.id);
125
+ }
126
+ this.eventManager.addListener(event, async (receivedEvent) => {
127
+ return hook.run(receivedEvent, resourceStoreElement.computedDependencies);
128
+ }, {
129
+ order,
130
+ });
104
131
  }
105
- this.eventManager.addListener(event, async (receivedEvent) => {
106
- return hook.run(receivedEvent, resourceStoreElement.computedDependencies);
107
- });
108
132
  }
109
133
  }
110
134
  async extractDependencies(map) {
@@ -135,6 +159,7 @@ class DependencyProcessor {
135
159
  */
136
160
  extractEventDependency(object) {
137
161
  return async (input) => {
162
+ this.logger.debug(`Emitting event ${object.id}`);
138
163
  return this.eventManager.emit(object, input);
139
164
  };
140
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DependencyProcessor.js","sourceRoot":"","sources":["../../src/models/DependencyProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DependencyProcessor.js","sourceRoot":"","sources":["../../src/models/DependencyProcessor.ts"],"names":[],"mappings":";;;AASA,mCAAmC;AAEnC,+DAA4D;AAE5D,sCAAmC;AAGnC;;;;GAIG;AACH,MAAa,mBAAmB;IAIT;IACA;IACA;IACA;IANF,mBAAmB,CAAsB;IAE5D,YACqB,KAAY,EACZ,YAA0B,EAC1B,UAAsB,EACtB,MAAc;QAHd,UAAK,GAAL,KAAK,CAAO;QACZ,iBAAY,GAAZ,YAAY,CAAc;QAC1B,eAAU,GAAV,UAAU,CAAY;QACtB,WAAM,GAAN,MAAM,CAAQ;QAEjC,IAAI,CAAC,mBAAmB,GAAG,IAAI,yCAAmB,CAChD,KAAK,EACL,YAAY,EACZ,MAAM,CACP,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,sBAAsB;QAC1B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,YAAiC,CAAC;YACrE,UAAU,CAAC,oBAAoB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,IAAI,CAAC,gCAAgC,EAAE,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,IAAyC;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAiC,CAAC;QACzD,IAAI,CAAC,oBAAoB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAEjE,IAAI,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC5D,MAAM,eAAM,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,WAAW,CAC3B,eAAe,EACf,KAAK,EAAE,aAAa,EAAE,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAChB,OAAO,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,uBAAuB,eAAe,CAAC,EAAE,EAAE;oBACxE,KAAK,EAAE,aAAa;iBACrB,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,IAAI,CAAC,IAAI,EACT,aAAa,EACb,IAAI,CAAC,oBAAoB,CAC1B,CAAC;YACJ,CAAC,EACD;gBACE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC;aACpC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,mCAAmC;IAC5B,KAAK,CAAC,gCAAgC;QAC3C,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,IACE,QAAQ,CAAC,aAAa,KAAK,KAAK;gBAChC,gFAAgF;gBAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EACpD,CAAC;gBACD,MAAM,IAAI,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;gBACjD,QAAQ,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChE,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,MAAM,EACf,QAAQ,CAAC,oBAAgD,CAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,2BAA2B,CACzC,QAAgD;QAEhD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAiC,CAAC;QACjE,QAAQ,CAAC,oBAAoB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,cAAc;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAEtC,aAAa,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CACrE,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,MAAM;QACpB,4BAA4B;QAC5B,aAAa,CAAC,oBAAgD,CAC/D,CAAC;QAEF,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,qBAAqB,CAC1B,oBAA4D;QAE5D,IAAI,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACjC,KAAK,EAAE,aAAa,EAAE,EAAE;oBACtB,OAAO,IAAI,CAAC,GAAG,CACb,aAAa,EACb,oBAAoB,CAAC,oBAAgD,CACtE,CAAC;gBACJ,CAAC,EACD;oBACE,KAAK;iBACN,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;oBAC9C,MAAM,eAAM,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAI,CAAC,YAAY,CAAC,WAAW,CAC3B,KAAK,EACL,KAAK,EAAE,aAAa,EAAE,EAAE;oBACtB,OAAO,IAAI,CAAC,GAAG,CACb,aAAa,EACb,oBAAoB,CAAC,oBAAgD,CACtE,CAAC;gBACJ,CAAC,EACD;oBACE,KAAK;iBACN,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,GAAM;QAEN,MAAM,MAAM,GAAG,EAA6B,CAAC;QAE7C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAM;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,MAAM,eAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,MAA6C;QAClE,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAA2B;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,eAAM,CAAC,kBAAkB,CAAC,QAAQ,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAC7B,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;YAE/B,iBAAiB;YACjB,MAAM,YAAY,GAAG,MAAM,CAAC,YAAiC,CAAC;YAE9D,SAAS,CAAC,oBAAoB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC7D,YAAY,CACb,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,EAAE;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CACxB,SAAS,CAAC,IAAI,EACd,KAAK,EACL,SAAS,CAAC,oBAAoB,CAC/B,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,MAAgC;QAC9D,iDAAiD;QACjD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,eAAM,CAAC,kBAAkB,CAAC,YAAY,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,aAAa,CAAC;QAC3C,IAAI,aAAa,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC,KAAK,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC;YAEnC,qEAAqE;YACrE,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,aAAa,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CACrE,QAAQ,EACR,MAAM,EACN,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC,CAC5D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC;CACF;AAzQD,kDAyQC"}
@@ -10,8 +10,9 @@ export declare class EventManager {
10
10
  get isLocked(): boolean;
11
11
  lock(): void;
12
12
  checkLock(): void;
13
+ private mergeSortedListeners;
13
14
  emit<TInput>(eventDefinition: IEventDefinition<TInput>, ...args: TInput extends void ? [] : [TInput]): Promise<void>;
15
+ private insertListener;
14
16
  addListener<T>(event: IEventDefinition | Array<IEventDefinition>, handler: EventHandlerType<T>, options?: IEventHandlerOptions<T>): void;
15
17
  addGlobalListener(handler: EventHandlerType, options?: IEventHandlerOptions): void;
16
- private sortListeners;
17
18
  }
@@ -18,39 +18,71 @@ class EventManager {
18
18
  throw errors_1.Errors.locked("EventManager");
19
19
  }
20
20
  }
21
+ mergeSortedListeners(a, b) {
22
+ const result = [];
23
+ let i = 0, j = 0;
24
+ while (i < a.length && j < b.length) {
25
+ if (a[i].order <= b[j].order) {
26
+ result.push(a[i++]);
27
+ }
28
+ else {
29
+ result.push(b[j++]);
30
+ }
31
+ }
32
+ while (i < a.length)
33
+ result.push(a[i++]);
34
+ while (j < b.length)
35
+ result.push(b[j++]);
36
+ return result;
37
+ }
21
38
  async emit(eventDefinition, ...args) {
22
39
  const data = args[0];
23
40
  const eventListeners = this.listeners.get(eventDefinition.id) || [];
24
- const allListeners = this.sortListeners([
25
- ...eventListeners,
26
- ...this.globalListeners,
27
- ]);
41
+ const allListeners = this.mergeSortedListeners(eventListeners, this.globalListeners);
28
42
  const event = {
29
43
  id: eventDefinition.id,
30
44
  data,
45
+ timestamp: new Date(),
31
46
  };
32
47
  for (const listener of allListeners) {
33
- const ok = !listener.filter || listener.filter(event);
34
- if (ok) {
48
+ if (!listener.filter || listener.filter(event)) {
35
49
  await listener.handler(event);
36
50
  }
37
51
  }
38
52
  }
53
+ insertListener(listeners, newListener) {
54
+ let low = 0;
55
+ let high = listeners.length;
56
+ while (low < high) {
57
+ const mid = (low + high) >>> 1;
58
+ if (listeners[mid].order < newListener.order) {
59
+ low = mid + 1;
60
+ }
61
+ else {
62
+ high = mid;
63
+ }
64
+ }
65
+ listeners.splice(low, 0, newListener);
66
+ }
39
67
  addListener(event, handler, options = HandlerOptionsDefaults) {
40
68
  this.checkLock();
69
+ const newListener = {
70
+ handler,
71
+ order: options.order || 0,
72
+ filter: options.filter,
73
+ };
41
74
  if (Array.isArray(event)) {
42
75
  event.forEach((id) => this.addListener(id, handler, options));
43
76
  }
44
77
  else {
45
78
  const eventId = event.id;
46
- const listeners = this.listeners.get(eventId) || [];
47
- const newListener = {
48
- handler,
49
- order: options.order || 0,
50
- filter: options.filter,
51
- };
52
- const newListeners = this.sortListeners([...listeners, newListener]);
53
- this.listeners.set(eventId, newListeners);
79
+ const listeners = this.listeners.get(eventId);
80
+ if (listeners) {
81
+ this.insertListener(listeners, newListener);
82
+ }
83
+ else {
84
+ this.listeners.set(eventId, [newListener]);
85
+ }
54
86
  }
55
87
  }
56
88
  addGlobalListener(handler, options = HandlerOptionsDefaults) {
@@ -60,13 +92,7 @@ class EventManager {
60
92
  order: options.order || 0,
61
93
  filter: options.filter,
62
94
  };
63
- this.globalListeners = this.sortListeners([
64
- ...this.globalListeners,
65
- newListener,
66
- ]);
67
- }
68
- sortListeners(listeners) {
69
- return [...listeners].sort((a, b) => a.order - b.order);
95
+ this.insertListener(this.globalListeners, newListener);
70
96
  }
71
97
  }
72
98
  exports.EventManager = EventManager;
@@ -1 +1 @@
1
- {"version":3,"file":"EventManager.js","sourceRoot":"","sources":["../../src/models/EventManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventManager.js","sourceRoot":"","sources":["../../src/models/EventManager.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,8 @@ export interface ILog {
7
7
  timestamp: Date;
8
8
  }
9
9
  export declare class Logger {
10
- private eventManager;
11
- static defaultContext: string;
10
+ protected eventManager: EventManager;
11
+ printThreshold: LogLevels | null;
12
12
  severity: {
13
13
  trace: number;
14
14
  debug: number;
@@ -22,12 +22,17 @@ export declare class Logger {
22
22
  * @param level
23
23
  * @param message
24
24
  */
25
- log(level: LogLevels, data: any): Promise<void>;
26
- print(log: ILog): Promise<void>;
27
- info(data: any): Promise<void>;
28
- error(data: any): Promise<void>;
29
- warn(data: any): Promise<void>;
30
- debug(data: any): Promise<void>;
31
- trace(data: any): Promise<void>;
32
- critical(data: any): Promise<void>;
25
+ log(level: LogLevels, data: any, source?: string): Promise<void>;
26
+ /**
27
+ * Will print logs after that, use `null` to disable autoprinting.
28
+ * @param level
29
+ */
30
+ setPrintThreshold(level: LogLevels | null): void;
31
+ print(log: ILog): void;
32
+ info(data: any, context?: string): Promise<void>;
33
+ error(data: any, context?: string): Promise<void>;
34
+ warn(data: any, context?: string): Promise<void>;
35
+ debug(data: any, context?: string): Promise<void>;
36
+ trace(data: any, context?: string): Promise<void>;
37
+ critical(data: any, context?: string): Promise<void>;
33
38
  }