@bluelibs/runner 2.2.3 → 3.0.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.
- package/README.md +1315 -942
- package/dist/common.types.d.ts +20 -0
- package/dist/common.types.js +4 -0
- package/dist/common.types.js.map +1 -0
- package/dist/context.d.ts +34 -0
- package/dist/context.js +58 -0
- package/dist/context.js.map +1 -0
- package/dist/define.d.ts +22 -3
- package/dist/define.js +52 -8
- package/dist/define.js.map +1 -1
- package/dist/defs.d.ts +52 -31
- package/dist/defs.js +10 -2
- package/dist/defs.js.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/event.types.d.ts +18 -0
- package/dist/event.types.js +4 -0
- package/dist/event.types.js.map +1 -0
- package/dist/examples/registrator-example.d.ts +122 -0
- package/dist/examples/registrator-example.js +147 -0
- package/dist/examples/registrator-example.js.map +1 -0
- package/dist/globals/globalEvents.d.ts +41 -0
- package/dist/globals/globalEvents.js +94 -0
- package/dist/globals/globalEvents.js.map +1 -0
- package/dist/globals/globalMiddleware.d.ts +23 -0
- package/dist/globals/globalMiddleware.js +15 -0
- package/dist/globals/globalMiddleware.js.map +1 -0
- package/dist/globals/globalResources.d.ts +27 -0
- package/dist/globals/globalResources.js +47 -0
- package/dist/globals/globalResources.js.map +1 -0
- package/dist/globals/middleware/cache.middleware.d.ts +34 -0
- package/dist/globals/middleware/cache.middleware.js +85 -0
- package/dist/globals/middleware/cache.middleware.js.map +1 -0
- package/dist/globals/middleware/requireContext.middleware.d.ts +6 -0
- package/dist/globals/middleware/requireContext.middleware.js +25 -0
- package/dist/globals/middleware/requireContext.middleware.js.map +1 -0
- package/dist/globals/middleware/retry.middleware.d.ts +20 -0
- package/dist/globals/middleware/retry.middleware.js +34 -0
- package/dist/globals/middleware/retry.middleware.js.map +1 -0
- package/dist/globals/resources/queue.resource.d.ts +7 -0
- package/dist/globals/resources/queue.resource.js +31 -0
- package/dist/globals/resources/queue.resource.js.map +1 -0
- package/dist/index.d.ts +45 -9
- package/dist/index.js +14 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware.types.d.ts +40 -0
- package/dist/middleware.types.js +4 -0
- package/dist/middleware.types.js.map +1 -0
- package/dist/models/DependencyProcessor.d.ts +2 -1
- package/dist/models/DependencyProcessor.js +11 -13
- package/dist/models/DependencyProcessor.js.map +1 -1
- package/dist/models/EventManager.d.ts +5 -0
- package/dist/models/EventManager.js +44 -2
- package/dist/models/EventManager.js.map +1 -1
- package/dist/models/Logger.d.ts +30 -12
- package/dist/models/Logger.js +130 -42
- package/dist/models/Logger.js.map +1 -1
- package/dist/models/OverrideManager.d.ts +13 -0
- package/dist/models/OverrideManager.js +70 -0
- package/dist/models/OverrideManager.js.map +1 -0
- package/dist/models/Queue.d.ts +25 -0
- package/dist/models/Queue.js +54 -0
- package/dist/models/Queue.js.map +1 -0
- package/dist/models/ResourceInitializer.d.ts +5 -2
- package/dist/models/ResourceInitializer.js +20 -14
- package/dist/models/ResourceInitializer.js.map +1 -1
- package/dist/models/Semaphore.d.ts +61 -0
- package/dist/models/Semaphore.js +166 -0
- package/dist/models/Semaphore.js.map +1 -0
- package/dist/models/Store.d.ts +17 -72
- package/dist/models/Store.js +71 -269
- package/dist/models/Store.js.map +1 -1
- package/dist/models/StoreConstants.d.ts +11 -0
- package/dist/models/StoreConstants.js +18 -0
- package/dist/models/StoreConstants.js.map +1 -0
- package/dist/models/StoreRegistry.d.ts +25 -0
- package/dist/models/StoreRegistry.js +171 -0
- package/dist/models/StoreRegistry.js.map +1 -0
- package/dist/models/StoreTypes.d.ts +21 -0
- package/dist/models/StoreTypes.js +3 -0
- package/dist/models/StoreTypes.js.map +1 -0
- package/dist/models/StoreValidator.d.ts +10 -0
- package/dist/models/StoreValidator.js +41 -0
- package/dist/models/StoreValidator.js.map +1 -0
- package/dist/models/TaskRunner.js +39 -24
- package/dist/models/TaskRunner.js.map +1 -1
- package/dist/models/VarStore.d.ts +17 -0
- package/dist/models/VarStore.js +60 -0
- package/dist/models/VarStore.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/resource.types.d.ts +31 -0
- package/dist/resource.types.js +3 -0
- package/dist/resource.types.js.map +1 -0
- package/dist/run.d.ts +4 -1
- package/dist/run.js +6 -3
- package/dist/run.js.map +1 -1
- package/dist/symbols.d.ts +24 -0
- package/dist/symbols.js +29 -0
- package/dist/symbols.js.map +1 -0
- package/dist/task.types.d.ts +55 -0
- package/dist/task.types.js +23 -0
- package/dist/task.types.js.map +1 -0
- package/dist/tools/registratorId.d.ts +4 -0
- package/dist/tools/registratorId.js +40 -0
- package/dist/tools/registratorId.js.map +1 -0
- package/dist/tools/simpleHash.d.ts +9 -0
- package/dist/tools/simpleHash.js +34 -0
- package/dist/tools/simpleHash.js.map +1 -0
- package/dist/types/base-interfaces.d.ts +18 -0
- package/dist/types/base-interfaces.js +6 -0
- package/dist/types/base-interfaces.js.map +1 -0
- package/dist/types/base.d.ts +13 -0
- package/dist/types/base.js +3 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/dependencies.d.ts +22 -0
- package/dist/types/dependencies.js +3 -0
- package/dist/types/dependencies.js.map +1 -0
- package/dist/types/dependency-core.d.ts +14 -0
- package/dist/types/dependency-core.js +5 -0
- package/dist/types/dependency-core.js.map +1 -0
- package/dist/types/events.d.ts +52 -0
- package/dist/types/events.js +6 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/hooks.d.ts +16 -0
- package/dist/types/hooks.js +5 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.js +27 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/meta.d.ts +13 -0
- package/dist/types/meta.js +5 -0
- package/dist/types/meta.js.map +1 -0
- package/dist/types/middleware.d.ts +38 -0
- package/dist/types/middleware.js +6 -0
- package/dist/types/middleware.js.map +1 -0
- package/dist/types/registerable.d.ts +10 -0
- package/dist/types/registerable.js +5 -0
- package/dist/types/registerable.js.map +1 -0
- package/dist/types/resources.d.ts +44 -0
- package/dist/types/resources.js +5 -0
- package/dist/types/resources.js.map +1 -0
- package/dist/types/symbols.d.ts +24 -0
- package/dist/types/symbols.js +30 -0
- package/dist/types/symbols.js.map +1 -0
- package/dist/types/tasks.d.ts +41 -0
- package/dist/types/tasks.js +5 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/types/utilities.d.ts +7 -0
- package/dist/types/utilities.js +5 -0
- package/dist/types/utilities.js.map +1 -0
- package/package.json +10 -6
- package/src/__tests__/benchmark/benchmark.test.ts +1 -1
- package/src/__tests__/context.test.ts +91 -0
- package/src/__tests__/errors.test.ts +8 -5
- package/src/__tests__/globalEvents.test.ts +1 -1
- package/src/__tests__/globals/cache.middleware.test.ts +772 -0
- package/src/__tests__/globals/queue.resource.test.ts +141 -0
- package/src/__tests__/globals/requireContext.middleware.test.ts +98 -0
- package/src/__tests__/globals/retry.middleware.test.ts +157 -0
- package/src/__tests__/index.helper.test.ts +55 -0
- package/src/__tests__/models/EventManager.test.ts +144 -0
- package/src/__tests__/models/Logger.test.ts +291 -34
- package/src/__tests__/models/Queue.test.ts +189 -0
- package/src/__tests__/models/ResourceInitializer.test.ts +8 -6
- package/src/__tests__/models/Semaphore.test.ts +713 -0
- package/src/__tests__/models/Store.test.ts +40 -0
- package/src/__tests__/models/TaskRunner.test.ts +86 -5
- package/src/__tests__/run.middleware.test.ts +166 -12
- package/src/__tests__/run.overrides.test.ts +13 -10
- package/src/__tests__/run.test.ts +363 -12
- package/src/__tests__/setOutput.test.ts +244 -0
- package/src/__tests__/tools/getCallerFile.test.ts +9 -9
- package/src/__tests__/typesafety.test.ts +54 -39
- package/src/context.ts +86 -0
- package/src/define.ts +84 -14
- package/src/defs.ts +91 -41
- package/src/errors.ts +3 -1
- package/src/{globalEvents.ts → globals/globalEvents.ts} +13 -12
- package/src/globals/globalMiddleware.ts +14 -0
- package/src/{globalResources.ts → globals/globalResources.ts} +14 -10
- package/src/globals/middleware/cache.middleware.ts +115 -0
- package/src/globals/middleware/requireContext.middleware.ts +36 -0
- package/src/globals/middleware/retry.middleware.ts +56 -0
- package/src/globals/resources/queue.resource.ts +34 -0
- package/src/index.ts +9 -5
- package/src/models/DependencyProcessor.ts +36 -40
- package/src/models/EventManager.ts +45 -5
- package/src/models/Logger.ts +170 -48
- package/src/models/OverrideManager.ts +84 -0
- package/src/models/Queue.ts +66 -0
- package/src/models/ResourceInitializer.ts +38 -20
- package/src/models/Semaphore.ts +208 -0
- package/src/models/Store.ts +94 -342
- package/src/models/StoreConstants.ts +17 -0
- package/src/models/StoreRegistry.ts +217 -0
- package/src/models/StoreTypes.ts +46 -0
- package/src/models/StoreValidator.ts +38 -0
- package/src/models/TaskRunner.ts +53 -40
- package/src/models/index.ts +3 -0
- package/src/run.ts +7 -4
- package/src/__tests__/index.ts +0 -15
- package/src/examples/express-mongo/index.ts +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface IMeta {
|
|
2
|
+
title?: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
tags?: string[];
|
|
5
|
+
}
|
|
6
|
+
export interface ITaskMeta extends IMeta {
|
|
7
|
+
}
|
|
8
|
+
export interface IResourceMeta extends IMeta {
|
|
9
|
+
}
|
|
10
|
+
export interface IEventMeta extends IMeta {
|
|
11
|
+
}
|
|
12
|
+
export interface IMiddlewareMeta extends IMeta {
|
|
13
|
+
}
|
|
14
|
+
export type Optional<T> = {
|
|
15
|
+
[K in keyof T]?: T[K];
|
|
16
|
+
};
|
|
17
|
+
export type IsVoid<T> = [T] extends [void] ? true : false;
|
|
18
|
+
export type IsOptional<T> = undefined extends T ? true : false;
|
|
19
|
+
export type OptionalOrVoidOrAnything<T> = IsVoid<T> extends true ? void : IsOptional<T> extends true ? Optional<T> : T;
|
|
20
|
+
export type OnlyOptionalFields<T> = {} extends T ? true : false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.types.js","sourceRoot":"","sources":["../src/common.types.ts"],"names":[],"mappings":";AAAA,wCAAwC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
2
|
+
import { IMiddlewareConfigured } from "./defs";
|
|
3
|
+
/**
|
|
4
|
+
* Error thrown whenever a requested context is not available.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ContextError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The generic Context object returned by `createContext`.
|
|
11
|
+
*/
|
|
12
|
+
export interface Context<T> {
|
|
13
|
+
/** unique symbol used as key in the AsyncLocalStorage map */
|
|
14
|
+
readonly id: symbol;
|
|
15
|
+
/** Retrieve the current context value or throw */
|
|
16
|
+
use(): T;
|
|
17
|
+
/**
|
|
18
|
+
* Provide a value for this context during the lifetime of `fn()`
|
|
19
|
+
*/
|
|
20
|
+
provide<R>(value: T, fn: () => Promise<R> | R): Promise<R> | R;
|
|
21
|
+
/**
|
|
22
|
+
* Generates a middleware that guarantees the context exists (and optionally
|
|
23
|
+
* enforces that certain keys are present on the context object).
|
|
24
|
+
*/
|
|
25
|
+
require<K extends keyof T = never>(keys?: K[]): IMiddlewareConfigured<{
|
|
26
|
+
context: Context<T>;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export declare const storage: AsyncLocalStorage<Map<symbol, unknown>>;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new typed Context. The result contains helpers similar to React’s
|
|
32
|
+
* Context API but adapted for async usage in Runner.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createContext<T>(name?: string): Context<T>;
|
package/dist/context.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.storage = exports.ContextError = void 0;
|
|
4
|
+
exports.createContext = createContext;
|
|
5
|
+
const async_hooks_1 = require("async_hooks");
|
|
6
|
+
const requireContext_middleware_1 = require("./globals/middleware/requireContext.middleware");
|
|
7
|
+
/**
|
|
8
|
+
* Error thrown whenever a requested context is not available.
|
|
9
|
+
*/
|
|
10
|
+
class ContextError extends Error {
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = "ContextError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ContextError = ContextError;
|
|
17
|
+
// The internal storage maps Context identifiers (symbols) to their values
|
|
18
|
+
exports.storage = new async_hooks_1.AsyncLocalStorage();
|
|
19
|
+
/** Returns the currently active store or undefined. */
|
|
20
|
+
function getCurrentStore() {
|
|
21
|
+
return exports.storage.getStore();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a new typed Context. The result contains helpers similar to React’s
|
|
25
|
+
* Context API but adapted for async usage in Runner.
|
|
26
|
+
*/
|
|
27
|
+
function createContext(name = "runner.context") {
|
|
28
|
+
const ctxId = Symbol(name);
|
|
29
|
+
function use() {
|
|
30
|
+
const store = getCurrentStore();
|
|
31
|
+
if (!store || !store.has(ctxId)) {
|
|
32
|
+
throw new ContextError(`Context not available for symbol ${ctxId.toString()}`);
|
|
33
|
+
}
|
|
34
|
+
return store.get(ctxId);
|
|
35
|
+
}
|
|
36
|
+
function provide(value, fn) {
|
|
37
|
+
const currentStore = getCurrentStore();
|
|
38
|
+
const map = currentStore
|
|
39
|
+
? new Map(currentStore)
|
|
40
|
+
: new Map();
|
|
41
|
+
map.set(ctxId, value);
|
|
42
|
+
return exports.storage.run(map, fn);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generates a middleware that guarantees the context exists (and optionally
|
|
46
|
+
* enforces that certain keys are present on the context object).
|
|
47
|
+
*/
|
|
48
|
+
function require() {
|
|
49
|
+
return requireContext_middleware_1.requireContextMiddleware.with({ context: this });
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
id: ctxId,
|
|
53
|
+
use,
|
|
54
|
+
provide,
|
|
55
|
+
require,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAgDA,sCAqCC;AArFD,6CAAgD;AAGhD,8FAA0F;AAE1F;;GAEG;AACH,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AALD,oCAKC;AAuBD,0EAA0E;AAC7D,QAAA,OAAO,GAAG,IAAI,+BAAiB,EAAwB,CAAC;AAErE,uDAAuD;AACvD,SAAS,eAAe;IACtB,OAAO,eAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAI,OAAe,gBAAgB;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE3B,SAAS,GAAG;QACV,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,YAAY,CACpB,oCAAoC,KAAK,CAAC,QAAQ,EAAE,EAAE,CACvD,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAM,CAAC;IAC/B,CAAC;IAED,SAAS,OAAO,CAAI,KAAQ,EAAE,EAAwB;QACpD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,YAAY;YACtB,CAAC,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC;YACvB,CAAC,CAAC,IAAI,GAAG,EAAmB,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEtB,OAAO,eAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAS,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,SAAS,OAAO;QACd,OAAO,oDAAwB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAkB,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK;QACT,GAAG;QACH,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/define.d.ts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
import { ITask, ITaskDefinition, IResource, IResourceWithConfig, IResourceDefinition, IEventDefinition, IMiddlewareDefinition, DependencyMapType, IMiddleware, IEventDefinitionConfig } from "./defs";
|
|
1
|
+
import { ITask, ITaskDefinition, IResource, IResourceWithConfig, IResourceDefinition, IEventDefinition, IMiddlewareDefinition, DependencyMapType, DependencyValuesType, IMiddleware, IEventDefinitionConfig, RegisterableItems } from "./defs";
|
|
2
2
|
export declare function defineTask<Input = undefined, Output extends Promise<any> = any, Deps extends DependencyMapType = any, TOn extends "*" | IEventDefinition | undefined = undefined>(taskConfig: ITaskDefinition<Input, Output, Deps, TOn>): ITask<Input, Output, Deps, TOn>;
|
|
3
|
-
export declare function defineResource<TConfig = void, TValue = any, TDeps extends DependencyMapType = {},
|
|
3
|
+
export declare function defineResource<TConfig = void, TValue = any, TDeps extends DependencyMapType = {}, TPrivate = any>(constConfig: IResourceDefinition<TConfig, TValue, TDeps, TPrivate>): IResource<TConfig, TValue, TDeps, TPrivate>;
|
|
4
|
+
/**
|
|
5
|
+
* Creates an "index" resource which groups multiple registerable items under
|
|
6
|
+
* a single dependency. The resulting resource registers every item, depends
|
|
7
|
+
* on the same items, and returns the resolved dependency map so users can
|
|
8
|
+
* access them naturally: `deps.services.myTask()` or `deps.services.myResource`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function defineIndex<T extends Record<string, RegisterableItems>, D extends {
|
|
11
|
+
[K in keyof T]: T[K] extends IResourceWithConfig<any, any, any> ? T[K]["resource"] : T[K];
|
|
12
|
+
} & DependencyMapType>(items: T): IResource<void, DependencyValuesType<D>, D>;
|
|
4
13
|
export declare function defineEvent<TPayload = any>(config: IEventDefinitionConfig<TPayload>): IEventDefinition<TPayload>;
|
|
5
|
-
export
|
|
14
|
+
export type MiddlewareEverywhereOptions = {
|
|
15
|
+
/**
|
|
16
|
+
* Enable this for tasks. Default is true.
|
|
17
|
+
*/
|
|
18
|
+
tasks?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Enable this for resources. Default is true.
|
|
21
|
+
*/
|
|
22
|
+
resources?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare function defineMiddleware<TConfig extends Record<string, any>, TDependencies extends DependencyMapType>(middlewareDef: IMiddlewareDefinition<TConfig, TDependencies>): IMiddleware<TConfig, TDependencies>;
|
|
6
25
|
export declare function isTask(definition: any): definition is ITask;
|
|
7
26
|
export declare function isResource(definition: any): definition is IResource;
|
|
8
27
|
export declare function isResourceWithConfig(definition: any): definition is IResourceWithConfig;
|
package/dist/define.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defineTask = defineTask;
|
|
4
4
|
exports.defineResource = defineResource;
|
|
5
|
+
exports.defineIndex = defineIndex;
|
|
5
6
|
exports.defineEvent = defineEvent;
|
|
6
7
|
exports.defineMiddleware = defineMiddleware;
|
|
7
8
|
exports.isTask = isTask;
|
|
@@ -23,6 +24,7 @@ function defineTask(taskConfig) {
|
|
|
23
24
|
middleware: taskConfig.middleware || [],
|
|
24
25
|
run: taskConfig.run,
|
|
25
26
|
on: taskConfig.on,
|
|
27
|
+
listenerOrder: taskConfig.listenerOrder,
|
|
26
28
|
events: {
|
|
27
29
|
beforeRun: {
|
|
28
30
|
...defineEvent({
|
|
@@ -57,7 +59,8 @@ function defineResource(constConfig) {
|
|
|
57
59
|
dispose: constConfig.dispose,
|
|
58
60
|
register: constConfig.register || [],
|
|
59
61
|
overrides: constConfig.overrides || [],
|
|
60
|
-
init: constConfig.init
|
|
62
|
+
init: constConfig.init,
|
|
63
|
+
context: constConfig.context,
|
|
61
64
|
with: function (config) {
|
|
62
65
|
return {
|
|
63
66
|
[defs_1.symbols.resourceWithConfig]: true,
|
|
@@ -90,6 +93,34 @@ function defineResource(constConfig) {
|
|
|
90
93
|
middleware: constConfig.middleware || [],
|
|
91
94
|
};
|
|
92
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Creates an "index" resource which groups multiple registerable items under
|
|
98
|
+
* a single dependency. The resulting resource registers every item, depends
|
|
99
|
+
* on the same items, and returns the resolved dependency map so users can
|
|
100
|
+
* access them naturally: `deps.services.myTask()` or `deps.services.myResource`.
|
|
101
|
+
*/
|
|
102
|
+
function defineIndex(items) {
|
|
103
|
+
const dependencies = {};
|
|
104
|
+
const register = [];
|
|
105
|
+
for (const key of Object.keys(items)) {
|
|
106
|
+
const item = items[key];
|
|
107
|
+
register.push(item);
|
|
108
|
+
if (isResourceWithConfig(item)) {
|
|
109
|
+
dependencies[key] = item.resource;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
dependencies[key] = item;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return defineResource({
|
|
116
|
+
id: `index.${Math.random().toString(36).slice(2)}`,
|
|
117
|
+
register,
|
|
118
|
+
dependencies,
|
|
119
|
+
async init(_, deps) {
|
|
120
|
+
return deps;
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
93
124
|
function defineEvent(config) {
|
|
94
125
|
return {
|
|
95
126
|
[defs_1.symbols.filePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
@@ -97,21 +128,34 @@ function defineEvent(config) {
|
|
|
97
128
|
...config,
|
|
98
129
|
};
|
|
99
130
|
}
|
|
100
|
-
function defineMiddleware(
|
|
131
|
+
function defineMiddleware(middlewareDef) {
|
|
101
132
|
const object = {
|
|
102
133
|
[defs_1.symbols.filePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
103
134
|
[defs_1.symbols.middleware]: true,
|
|
104
|
-
|
|
105
|
-
|
|
135
|
+
config: {},
|
|
136
|
+
...middlewareDef,
|
|
137
|
+
dependencies: middlewareDef.dependencies || {},
|
|
106
138
|
};
|
|
107
139
|
return {
|
|
108
140
|
...object,
|
|
109
|
-
|
|
141
|
+
with: (config) => {
|
|
142
|
+
return {
|
|
143
|
+
...object,
|
|
144
|
+
[defs_1.symbolMiddlewareConfigured]: true,
|
|
145
|
+
config: {
|
|
146
|
+
...object.config,
|
|
147
|
+
...config,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
everywhere(options = {}) {
|
|
152
|
+
const { tasks = true, resources = true } = options;
|
|
110
153
|
return {
|
|
111
154
|
...object,
|
|
112
|
-
[defs_1.symbols.
|
|
113
|
-
|
|
114
|
-
|
|
155
|
+
[defs_1.symbols.middlewareEverywhereTasks]: tasks,
|
|
156
|
+
[defs_1.symbols.middlewareEverywhereResources]: resources,
|
|
157
|
+
everywhere() {
|
|
158
|
+
throw errors_1.Errors.middlewareAlreadyGlobal(middlewareDef.id);
|
|
115
159
|
},
|
|
116
160
|
};
|
|
117
161
|
},
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":";;AAyBA,gCAyCC;AAED,wCAmDC;AAQD,kCA8BC;AAED,kCAQC;AAaD,4CAuCC;AAED,wBAEC;AAED,gCAEC;AAED,oDAIC;AAED,0BAEC;AAED,oCAEC;AAhPD,iCAkBgB;AAChB,qCAAkC;AAClC,yDAAsD;AAEtD,yCAAyC;AAEzC,SAAgB,UAAU,CAMxB,UAAqD;IAErD,MAAM,QAAQ,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,OAAO;QACL,CAAC,cAAO,CAAC,IAAI,CAAC,EAAE,IAAI;QACpB,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;QAC5B,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,YAAY,EAAE,UAAU,CAAC,YAAY,IAAK,EAAW;QACrD,UAAU,EAAE,UAAU,CAAC,UAAU,IAAI,EAAE;QACvC,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,MAAM,EAAE;YACN,SAAS,EAAE;gBACT,GAAG,WAAW,CAAC;oBACb,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,mBAAmB;iBACxC,CAAC;gBACF,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,IAAA,6BAAa,GAAE;aACpC;YACD,QAAQ,EAAE;gBACR,GAAG,WAAW,CAAC;oBACb,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,kBAAkB;iBACvC,CAAC;gBACF,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,IAAA,6BAAa,GAAE;aACpC;YACD,OAAO,EAAE;gBACP,GAAG,WAAW,CAAC;oBACb,EAAE,EAAE,GAAG,UAAU,CAAC,EAAE,iBAAiB;iBACtC,CAAC;gBACF,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,IAAA,6BAAa,GAAE;aACpC;SACF;QACD,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE;QAC3B,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAM5B,WAAkE;IAElE,MAAM,QAAQ,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,OAAO;QACL,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,IAAI;QACxB,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;QAC5B,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;QACpC,SAAS,EAAE,WAAW,CAAC,SAAS,IAAI,EAAE;QACtC,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,IAAI,EAAE,UAAU,MAAe;YAC7B,OAAO;gBACL,CAAC,cAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI;gBAClC,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,MAAM;aACP,CAAC;QACJ,CAAC;QAED,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,WAAW,CAAC;oBACb,EAAE,EAAE,GAAG,WAAW,CAAC,EAAE,oBAAoB;iBAC1C,CAAC;gBACF,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;aAC7B;YACD,SAAS,EAAE;gBACT,GAAG,WAAW,CAAC;oBACb,EAAE,EAAE,GAAG,WAAW,CAAC,EAAE,mBAAmB;iBACzC,CAAC;gBACF,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;aAC7B;YACD,OAAO,EAAE;gBACP,GAAG,WAAW,CAAC;oBACb,EAAE,EAAE,GAAG,WAAW,CAAC,EAAE,iBAAiB;iBACvC,CAAC;gBACF,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ;aAC7B;SACF;QACD,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE;QAC5B,UAAU,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE;KACzC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW,CAOzB,KAAQ;IACR,MAAM,YAAY,GAAG,EAAO,CAAC;IAC7B,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAgB,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,YAAoB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,CAAC;aAAM,CAAC;YACL,YAAoB,CAAC,GAAG,CAAC,GAAG,IAAW,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAC;QACpB,EAAE,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAClD,QAAQ;QACR,YAAY;QACZ,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI;YAChB,OAAO,IAAW,CAAC;QACrB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CACzB,MAAwC;IAExC,OAAO;QACL,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,IAAA,6BAAa,GAAE;QACnC,CAAC,kBAAW,CAAC,EAAE,IAAI;QACnB,GAAG,MAAM;KACV,CAAC;AACJ,CAAC;AAaD,SAAgB,gBAAgB,CAI9B,aAA4D;IAE5D,MAAM,MAAM,GAAG;QACb,CAAC,cAAO,CAAC,QAAQ,CAAC,EAAE,IAAA,6BAAa,GAAE;QACnC,CAAC,cAAO,CAAC,UAAU,CAAC,EAAE,IAAI;QAC1B,MAAM,EAAE,EAAa;QACrB,GAAG,aAAa;QAChB,YAAY,EAAE,aAAa,CAAC,YAAY,IAAK,EAAoB;KAC3B,CAAC;IAEzC,OAAO;QACL,GAAG,MAAM;QACT,IAAI,EAAE,CAAC,MAAe,EAAE,EAAE;YACxB,OAAO;gBACL,GAAG,MAAM;gBACT,CAAC,iCAA0B,CAAC,EAAE,IAAI;gBAClC,MAAM,EAAE;oBACN,GAAG,MAAM,CAAC,MAAM;oBAChB,GAAG,MAAM;iBACV;aACF,CAAC;QACJ,CAAC;QACD,UAAU,CAAC,UAAuC,EAAE;YAClD,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YAEnD,OAAO;gBACL,GAAG,MAAM;gBACT,CAAC,cAAO,CAAC,yBAAyB,CAAC,EAAE,KAAK;gBAC1C,CAAC,cAAO,CAAC,6BAA6B,CAAC,EAAE,SAAS;gBAClD,UAAU;oBACR,MAAM,eAAM,CAAC,uBAAuB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBACzD,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,MAAM,CAAC,UAAe;IACpC,OAAO,UAAU,IAAI,UAAU,CAAC,cAAO,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,UAAU,CAAC,UAAe;IACxC,OAAO,UAAU,IAAI,UAAU,CAAC,cAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,oBAAoB,CAClC,UAAe;IAEf,OAAO,UAAU,IAAI,UAAU,CAAC,cAAO,CAAC,kBAAkB,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,OAAO,CAAC,UAAe;IACrC,OAAO,UAAU,IAAI,UAAU,CAAC,cAAO,CAAC,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,YAAY,CAAC,UAAe;IAC1C,OAAO,UAAU,IAAI,UAAU,CAAC,cAAO,CAAC,UAAU,CAAC,CAAC;AACtD,CAAC"}
|
package/dist/defs.d.ts
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
+
export { ICacheInstance } from "./globals/middleware/cache.middleware";
|
|
1
2
|
export declare const symbolTask: unique symbol;
|
|
2
3
|
export declare const symbolResource: unique symbol;
|
|
3
4
|
export declare const symbolResourceWithConfig: unique symbol;
|
|
4
5
|
export declare const symbolEvent: unique symbol;
|
|
5
6
|
export declare const symbolMiddleware: unique symbol;
|
|
7
|
+
export declare const symbolMiddlewareConfigured: unique symbol;
|
|
6
8
|
export declare const symbolMiddlewareGlobal: unique symbol;
|
|
9
|
+
export declare const symbolMiddlewareEverywhereTasks: unique symbol;
|
|
10
|
+
export declare const symbolMiddlewareEverywhereResources: unique symbol;
|
|
7
11
|
export declare const symbolFilePath: unique symbol;
|
|
12
|
+
export declare const symbolDispose: unique symbol;
|
|
13
|
+
export declare const symbolStore: unique symbol;
|
|
8
14
|
export declare const symbols: {
|
|
9
15
|
task: symbol;
|
|
10
16
|
resource: symbol;
|
|
11
17
|
resourceWithConfig: symbol;
|
|
12
18
|
event: symbol;
|
|
13
19
|
middleware: symbol;
|
|
14
|
-
|
|
20
|
+
middlewareEverywhereTasks: symbol;
|
|
21
|
+
middlewareEverywhereResources: symbol;
|
|
15
22
|
filePath: symbol;
|
|
23
|
+
dispose: symbol;
|
|
24
|
+
store: symbol;
|
|
16
25
|
};
|
|
17
26
|
export interface IMeta {
|
|
18
27
|
title?: string;
|
|
@@ -39,17 +48,16 @@ export type DependencyValueType<T> = T extends ITask<any, any, any> ? TaskDepend
|
|
|
39
48
|
export type DependencyValuesType<T extends DependencyMapType> = {
|
|
40
49
|
[K in keyof T]: DependencyValueType<T[K]>;
|
|
41
50
|
};
|
|
42
|
-
type
|
|
43
|
-
[K in
|
|
44
|
-
}
|
|
45
|
-
type
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
export type RegisterableItems<T = any> = IResourceWithConfig<any> | IResource<OptionalOrVoidOrAnything<T>, any, any> | ITaskDefinition<any, any, any, any> | IMiddlewareDefinition<any> | IEventDefinition<any>;
|
|
51
|
+
export type RegisterableItems<T = any> = IResourceWithConfig<any> | IResource<void, any, any, any> | IResource<{
|
|
52
|
+
[K in any]?: any;
|
|
53
|
+
}, any, any, any> | ITaskDefinition<any, any, any, any> | IMiddlewareDefinition<any> | IEventDefinition<any>;
|
|
54
|
+
export type MiddlewareAttachments = IMiddleware<void> | IMiddleware<{
|
|
55
|
+
[K in any]?: any;
|
|
56
|
+
}> | IMiddlewareConfigured<any>;
|
|
49
57
|
export interface ITaskDefinition<TInput = any, TOutput extends Promise<any> = any, TDependencies extends DependencyMapType = {}, TOn extends "*" | IEventDefinition<any> | undefined = undefined> {
|
|
50
58
|
id: string;
|
|
51
59
|
dependencies?: TDependencies | (() => TDependencies);
|
|
52
|
-
middleware?:
|
|
60
|
+
middleware?: MiddlewareAttachments[];
|
|
53
61
|
/**
|
|
54
62
|
* Listen to events in a simple way
|
|
55
63
|
*/
|
|
@@ -67,7 +75,8 @@ export type BeforeRunEventPayload<TInput> = {
|
|
|
67
75
|
};
|
|
68
76
|
export type AfterRunEventPayload<TInput, TOutput> = {
|
|
69
77
|
input: TInput;
|
|
70
|
-
output: TOutput;
|
|
78
|
+
output: TOutput extends Promise<infer U> ? U : TOutput;
|
|
79
|
+
setOutput(newOutput: TOutput extends Promise<infer U> ? U : TOutput): void;
|
|
71
80
|
};
|
|
72
81
|
export type OnErrorEventPayload = {
|
|
73
82
|
error: any;
|
|
@@ -89,7 +98,7 @@ export type AfterInitEventPayload<TConfig, TValue> = {
|
|
|
89
98
|
export interface ITask<TInput = any, TOutput extends Promise<any> = any, TDependencies extends DependencyMapType = {}, TOn extends "*" | IEventDefinition<any> | undefined = undefined> extends ITaskDefinition<TInput, TOutput, TDependencies, TOn> {
|
|
90
99
|
dependencies: TDependencies | (() => TDependencies);
|
|
91
100
|
computedDependencies?: DependencyValuesType<TDependencies>;
|
|
92
|
-
middleware:
|
|
101
|
+
middleware: MiddlewareAttachments[];
|
|
93
102
|
/**
|
|
94
103
|
* These events are automatically populated after the task has been defined.
|
|
95
104
|
*/
|
|
@@ -99,26 +108,26 @@ export interface ITask<TInput = any, TOutput extends Promise<any> = any, TDepend
|
|
|
99
108
|
onError: IEventDefinition<OnErrorEventPayload>;
|
|
100
109
|
};
|
|
101
110
|
}
|
|
102
|
-
export interface IResourceDefinition<TConfig = any, TValue = unknown, TDependencies extends DependencyMapType = {}, TRegisterableItems = any> {
|
|
111
|
+
export interface IResourceDefinition<TConfig = any, TValue = unknown, TDependencies extends DependencyMapType = {}, TContext = any, THooks = any, TRegisterableItems = any> {
|
|
103
112
|
id: string;
|
|
104
113
|
dependencies?: TDependencies | ((config: TConfig) => TDependencies);
|
|
105
114
|
register?: Array<RegisterableItems> | ((config: TConfig) => Array<RegisterableItems>);
|
|
106
|
-
init?: (config: TConfig, dependencies: DependencyValuesType<TDependencies
|
|
115
|
+
init?: (this: any, config: TConfig, dependencies: DependencyValuesType<TDependencies>, context: TContext) => Promise<TValue>;
|
|
107
116
|
/**
|
|
108
117
|
* Clean-up function for the resource. This is called when the resource is no longer needed.
|
|
109
118
|
*
|
|
110
|
-
* @param value The value of the resource
|
|
119
|
+
* @param value The value of the resource (undefined if no init method)
|
|
111
120
|
* @param config The configuration it received
|
|
112
121
|
* @param dependencies The dependencies it needed
|
|
113
|
-
* @returns
|
|
122
|
+
* @returns Promise<void>
|
|
114
123
|
*/
|
|
115
|
-
dispose?: (value: TValue, config: TConfig, dependencies: DependencyValuesType<TDependencies
|
|
124
|
+
dispose?: (this: any, value: TValue, config: TConfig, dependencies: DependencyValuesType<TDependencies>, context: TContext) => Promise<void>;
|
|
116
125
|
meta?: IResourceMeta;
|
|
117
126
|
overrides?: Array<IResource | ITask | IMiddleware | IResourceWithConfig>;
|
|
118
|
-
middleware?:
|
|
127
|
+
middleware?: MiddlewareAttachments[];
|
|
128
|
+
context?: () => TContext;
|
|
119
129
|
}
|
|
120
|
-
export interface IResource<TConfig = void, TValue = any, TDependencies extends DependencyMapType = any> extends IResourceDefinition<TConfig, TValue, TDependencies> {
|
|
121
|
-
init: (config: TConfig, dependencies: DependencyValuesType<TDependencies>) => Promise<TValue>;
|
|
130
|
+
export interface IResource<TConfig = void, TValue = any, TDependencies extends DependencyMapType = any, TContext = any> extends IResourceDefinition<TConfig, TValue, TDependencies, TContext> {
|
|
122
131
|
with(config: TConfig): IResourceWithConfig<TConfig, TValue, TDependencies>;
|
|
123
132
|
register: Array<RegisterableItems> | ((config: TConfig) => Array<RegisterableItems>);
|
|
124
133
|
/**
|
|
@@ -130,7 +139,7 @@ export interface IResource<TConfig = void, TValue = any, TDependencies extends D
|
|
|
130
139
|
onError: IEventDefinition<OnErrorEventPayload>;
|
|
131
140
|
};
|
|
132
141
|
overrides: Array<IResource | ITask | IMiddleware | IResourceWithConfig>;
|
|
133
|
-
middleware:
|
|
142
|
+
middleware: MiddlewareAttachments[];
|
|
134
143
|
}
|
|
135
144
|
export interface IResourceWithConfig<TConfig = any, TValue = any, TDependencies extends DependencyMapType = any> {
|
|
136
145
|
id: string;
|
|
@@ -165,26 +174,39 @@ export interface IEventDefinition<TPayload = void> {
|
|
|
165
174
|
[symbolEvent]: true;
|
|
166
175
|
meta?: IEventMeta;
|
|
167
176
|
}
|
|
168
|
-
export interface IMiddlewareDefinition<TDependencies extends DependencyMapType = any> {
|
|
177
|
+
export interface IMiddlewareDefinition<TConfig = any, TDependencies extends DependencyMapType = any> {
|
|
169
178
|
id: string;
|
|
170
179
|
dependencies?: TDependencies | (() => TDependencies);
|
|
171
|
-
run: (input: IMiddlewareExecutionInput, dependencies: DependencyValuesType<TDependencies
|
|
180
|
+
run: (input: IMiddlewareExecutionInput, dependencies: DependencyValuesType<TDependencies>, config: TConfig) => Promise<any>;
|
|
172
181
|
meta?: IMiddlewareMeta;
|
|
173
182
|
}
|
|
174
|
-
export interface IMiddleware<TDependencies extends DependencyMapType = any> extends IMiddlewareDefinition<TDependencies> {
|
|
183
|
+
export interface IMiddleware<TConfig = any, TDependencies extends DependencyMapType = any> extends IMiddlewareDefinition<TConfig, TDependencies> {
|
|
184
|
+
[symbolMiddleware]: true;
|
|
185
|
+
[symbolMiddlewareConfigured]?: boolean;
|
|
186
|
+
[symbolMiddlewareEverywhereTasks]?: boolean;
|
|
187
|
+
[symbolMiddlewareEverywhereResources]?: boolean;
|
|
175
188
|
dependencies: TDependencies | (() => TDependencies);
|
|
176
|
-
|
|
189
|
+
everywhere(): IMiddleware<TConfig, TDependencies>;
|
|
190
|
+
config: TConfig;
|
|
191
|
+
with: (config: TConfig) => IMiddlewareConfigured<TConfig, TDependencies>;
|
|
192
|
+
}
|
|
193
|
+
export interface IMiddlewareConfigured<TConfig = any, TDependencies extends DependencyMapType = any> extends IMiddleware<TConfig, TDependencies> {
|
|
194
|
+
[symbolMiddlewareConfigured]: true;
|
|
177
195
|
}
|
|
178
196
|
export interface IMiddlewareDefinitionConfigured<C extends Record<string, any> = {}> {
|
|
179
197
|
middleware: IMiddleware<C>;
|
|
180
198
|
config?: C;
|
|
181
199
|
}
|
|
182
|
-
export interface IMiddlewareExecutionInput {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
200
|
+
export interface IMiddlewareExecutionInput<TTaskInput = any, TResourceConfig = any> {
|
|
201
|
+
task?: {
|
|
202
|
+
definition: ITask<TTaskInput>;
|
|
203
|
+
input: TTaskInput;
|
|
204
|
+
};
|
|
205
|
+
resource?: {
|
|
206
|
+
definition: IResource<TResourceConfig>;
|
|
207
|
+
config: TResourceConfig;
|
|
208
|
+
};
|
|
209
|
+
next: (taskInputOrResourceConfig?: TTaskInput | TResourceConfig) => Promise<any>;
|
|
188
210
|
}
|
|
189
211
|
export interface IHookDefinition<D extends DependencyMapType = {}, T = any, B extends boolean = false> {
|
|
190
212
|
event: "*" | IEventDefinition<T>;
|
|
@@ -200,4 +222,3 @@ export interface IHookDefinition<D extends DependencyMapType = {}, T = any, B ex
|
|
|
200
222
|
early?: B;
|
|
201
223
|
run: (event: IEvent<T>, dependencies: T extends true ? void : DependencyValuesType<D>) => Promise<void> | void;
|
|
202
224
|
}
|
|
203
|
-
export {};
|
package/dist/defs.js
CHANGED
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.symbols = exports.symbolFilePath = exports.symbolMiddlewareGlobal = exports.symbolMiddleware = exports.symbolEvent = exports.symbolResourceWithConfig = exports.symbolResource = exports.symbolTask = void 0;
|
|
3
|
+
exports.symbols = exports.symbolStore = exports.symbolDispose = exports.symbolFilePath = exports.symbolMiddlewareEverywhereResources = exports.symbolMiddlewareEverywhereTasks = exports.symbolMiddlewareGlobal = exports.symbolMiddlewareConfigured = exports.symbolMiddleware = exports.symbolEvent = exports.symbolResourceWithConfig = exports.symbolResource = exports.symbolTask = void 0;
|
|
4
4
|
exports.symbolTask = Symbol("runner.task");
|
|
5
5
|
exports.symbolResource = Symbol("runner.resource");
|
|
6
6
|
exports.symbolResourceWithConfig = Symbol("runner.resourceWithConfig");
|
|
7
7
|
exports.symbolEvent = Symbol("runner.event");
|
|
8
8
|
exports.symbolMiddleware = Symbol("runner.middleware");
|
|
9
|
+
exports.symbolMiddlewareConfigured = Symbol("runner.middlewareConfigured");
|
|
9
10
|
exports.symbolMiddlewareGlobal = Symbol("runner.middlewareGlobal");
|
|
11
|
+
exports.symbolMiddlewareEverywhereTasks = Symbol("runner.middlewareGlobalTasks");
|
|
12
|
+
exports.symbolMiddlewareEverywhereResources = Symbol("runner.middlewareGlobalResources");
|
|
10
13
|
exports.symbolFilePath = Symbol("runner.filePath");
|
|
14
|
+
exports.symbolDispose = Symbol("runner.dispose");
|
|
15
|
+
exports.symbolStore = Symbol("runner.store");
|
|
11
16
|
exports.symbols = {
|
|
12
17
|
task: exports.symbolTask,
|
|
13
18
|
resource: exports.symbolResource,
|
|
14
19
|
resourceWithConfig: exports.symbolResourceWithConfig,
|
|
15
20
|
event: exports.symbolEvent,
|
|
16
21
|
middleware: exports.symbolMiddleware,
|
|
17
|
-
|
|
22
|
+
middlewareEverywhereTasks: exports.symbolMiddlewareEverywhereTasks,
|
|
23
|
+
middlewareEverywhereResources: exports.symbolMiddlewareEverywhereResources,
|
|
18
24
|
filePath: exports.symbolFilePath,
|
|
25
|
+
dispose: exports.symbolDispose,
|
|
26
|
+
store: exports.symbolStore,
|
|
19
27
|
};
|
|
20
28
|
//# sourceMappingURL=defs.js.map
|
package/dist/defs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defs.js","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"defs.js","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAClD,QAAA,cAAc,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1D,QAAA,wBAAwB,GAAkB,MAAM,CAC3D,2BAA2B,CAC5B,CAAC;AACW,QAAA,WAAW,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAC;AACpD,QAAA,gBAAgB,GAAkB,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,0BAA0B,GAAkB,MAAM,CAC7D,6BAA6B,CAC9B,CAAC;AACW,QAAA,sBAAsB,GAAkB,MAAM,CACzD,yBAAyB,CAC1B,CAAC;AACW,QAAA,+BAA+B,GAAkB,MAAM,CAClE,8BAA8B,CAC/B,CAAC;AACW,QAAA,mCAAmC,GAAkB,MAAM,CACtE,kCAAkC,CACnC,CAAC;AAEW,QAAA,cAAc,GAAkB,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1D,QAAA,aAAa,GAAkB,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACxD,QAAA,WAAW,GAAkB,MAAM,CAAC,cAAc,CAAC,CAAC;AAEpD,QAAA,OAAO,GAAG;IACrB,IAAI,EAAE,kBAAU;IAChB,QAAQ,EAAE,sBAAc;IACxB,kBAAkB,EAAE,gCAAwB;IAC5C,KAAK,EAAE,mBAAW;IAClB,UAAU,EAAE,wBAAgB;IAC5B,yBAAyB,EAAE,uCAA+B;IAC1D,6BAA6B,EAAE,2CAAmC;IAClE,QAAQ,EAAE,sBAAc;IACxB,OAAO,EAAE,qBAAa;IACtB,KAAK,EAAE,mBAAW;CACnB,CAAC"}
|
package/dist/errors.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.Errors = {
|
|
|
7
7
|
unknownItemType: (item) => new Error(`Unknown item type: ${item}`),
|
|
8
8
|
circularDependencies: (cycles) => new Error(`Circular dependencies detected: ${cycles.join(", ")}`),
|
|
9
9
|
eventNotFound: (id) => new Error(`Event "${id}" not found. Did you forget to register it?`),
|
|
10
|
-
middlewareAlreadyGlobal: (id) => new Error("Cannot call
|
|
10
|
+
middlewareAlreadyGlobal: (id) => new Error("Cannot call .everywhere() on an already global middleware: " + id),
|
|
11
11
|
locked: (what) => new Error(`Cannot modify the ${what} when it is locked.`),
|
|
12
12
|
storeAlreadyInitialized: () => new Error("Store already initialized. Cannot reinitialize."),
|
|
13
13
|
};
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEa,QAAA,MAAM,GAAG;IACpB,qBAAqB,EAAE,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAClD,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,sBAAsB,CAAC;IAEjD,kBAAkB,EAAE,CAAC,GAAW,EAAE,EAAE,CAClC,IAAI,KAAK,CACP,cAAc,GAAG,+DAA+D,CACjF;IAEH,eAAe,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAEvE,oBAAoB,EAAE,CAAC,MAAgB,EAAE,EAAE,CACzC,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAEnE,aAAa,EAAE,CAAC,EAAU,EAAE,EAAE,CAC5B,IAAI,KAAK,CAAC,UAAU,EAAE,6CAA6C,CAAC;IAEtE,uBAAuB,EAAE,CAAC,EAAU,EAAE,EAAE,CACtC,IAAI,KAAK,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAEa,QAAA,MAAM,GAAG;IACpB,qBAAqB,EAAE,CAAC,IAAY,EAAE,EAAU,EAAE,EAAE,CAClD,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE,sBAAsB,CAAC;IAEjD,kBAAkB,EAAE,CAAC,GAAW,EAAE,EAAE,CAClC,IAAI,KAAK,CACP,cAAc,GAAG,+DAA+D,CACjF;IAEH,eAAe,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC;IAEvE,oBAAoB,EAAE,CAAC,MAAgB,EAAE,EAAE,CACzC,IAAI,KAAK,CAAC,mCAAmC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAEnE,aAAa,EAAE,CAAC,EAAU,EAAE,EAAE,CAC5B,IAAI,KAAK,CAAC,UAAU,EAAE,6CAA6C,CAAC;IAEtE,uBAAuB,EAAE,CAAC,EAAU,EAAE,EAAE,CACtC,IAAI,KAAK,CACP,6DAA6D,GAAG,EAAE,CACnE;IAEH,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CACvB,IAAI,KAAK,CAAC,qBAAqB,IAAI,qBAAqB,CAAC;IAE3D,uBAAuB,EAAE,GAAG,EAAE,CAC5B,IAAI,KAAK,CAAC,iDAAiD,CAAC;CAC/D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IEventMeta } from "./common.types";
|
|
2
|
+
import { symbolEvent } from "./symbols";
|
|
3
|
+
export interface IEvent<TPayload = any> {
|
|
4
|
+
id: string;
|
|
5
|
+
data: TPayload;
|
|
6
|
+
timestamp: Date;
|
|
7
|
+
source: string;
|
|
8
|
+
}
|
|
9
|
+
export type EventHandlerType<T = any> = (event: IEvent<T>) => any | Promise<any>;
|
|
10
|
+
export interface IEventDefinitionConfig<TPayload = void> {
|
|
11
|
+
id: string;
|
|
12
|
+
meta?: IEventMeta;
|
|
13
|
+
}
|
|
14
|
+
export interface IEventDefinition<TPayload = void> {
|
|
15
|
+
id: string;
|
|
16
|
+
[symbolEvent]: true;
|
|
17
|
+
meta?: IEventMeta;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.types.js","sourceRoot":"","sources":["../src/event.types.ts"],"names":[],"mappings":";;AACA,uCAAwC"}
|