@bluelibs/runner 2.2.4 → 3.1.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 +1409 -935
- 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 +24 -5
- package/dist/define.js +89 -20
- package/dist/define.js.map +1 -1
- package/dist/defs.d.ts +109 -73
- package/dist/defs.js +12 -2
- package/dist/defs.js.map +1 -1
- package/dist/errors.d.ts +5 -5
- package/dist/errors.js +6 -5
- 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 +54 -18
- 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 +6 -5
- package/dist/models/DependencyProcessor.js +13 -15
- package/dist/models/DependencyProcessor.js.map +1 -1
- package/dist/models/EventManager.d.ts +9 -4
- package/dist/models/EventManager.js +44 -2
- package/dist/models/EventManager.js.map +1 -1
- package/dist/models/Logger.d.ts +30 -13
- package/dist/models/Logger.js +132 -54
- 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 +22 -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 +18 -73
- 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.d.ts +1 -1
- 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/getCallerFile.d.ts +9 -1
- package/dist/tools/getCallerFile.js +41 -0
- package/dist/tools/getCallerFile.js.map +1 -1
- 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 +157 -11
- 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.anonymous.test.ts +679 -0
- package/src/__tests__/run.middleware.test.ts +312 -12
- package/src/__tests__/run.overrides.test.ts +13 -10
- package/src/__tests__/run.test.ts +364 -13
- package/src/__tests__/setOutput.test.ts +244 -0
- package/src/__tests__/tools/getCallerFile.test.ts +124 -9
- package/src/__tests__/typesafety.test.ts +71 -41
- package/src/context.ts +86 -0
- package/src/define.ts +129 -34
- package/src/defs.ts +156 -119
- package/src/errors.ts +15 -10
- 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 +42 -49
- package/src/models/EventManager.ts +64 -13
- package/src/models/Logger.ts +181 -64
- package/src/models/OverrideManager.ts +84 -0
- package/src/models/Queue.ts +66 -0
- package/src/models/ResourceInitializer.ts +40 -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 +228 -0
- package/src/models/StoreTypes.ts +46 -0
- package/src/models/StoreValidator.ts +43 -0
- package/src/models/TaskRunner.ts +54 -41
- package/src/models/index.ts +3 -0
- package/src/run.ts +7 -4
- package/src/tools/getCallerFile.ts +54 -2
- 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,10 +1,29 @@
|
|
|
1
|
-
import { ITask, ITaskDefinition, IResource, IResourceWithConfig, IResourceDefinition, IEventDefinition, IMiddlewareDefinition, DependencyMapType, IMiddleware,
|
|
1
|
+
import { ITask, ITaskDefinition, IResource, IResourceWithConfig, IResourceDefinition, IEventDefinition, IMiddlewareDefinition, DependencyMapType, DependencyValuesType, IMiddleware, IEvent, 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 = {},
|
|
4
|
-
|
|
5
|
-
|
|
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>;
|
|
13
|
+
export declare function defineEvent<TPayload = void>(config: IEventDefinition<TPayload>): IEvent<TPayload>;
|
|
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;
|
|
9
|
-
export declare function isEvent(definition: any): definition is
|
|
28
|
+
export declare function isEvent(definition: any): definition is IEvent;
|
|
10
29
|
export declare function isMiddleware(definition: any): definition is IMiddleware;
|
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;
|
|
@@ -15,30 +16,39 @@ const getCallerFile_1 = require("./tools/getCallerFile");
|
|
|
15
16
|
// Helper function to get the caller file
|
|
16
17
|
function defineTask(taskConfig) {
|
|
17
18
|
const filePath = (0, getCallerFile_1.getCallerFile)();
|
|
19
|
+
const isAnonymous = !Boolean(taskConfig.id);
|
|
20
|
+
const id = taskConfig.id || (0, getCallerFile_1.generateCallerIdFromFile)(filePath, "task");
|
|
18
21
|
return {
|
|
19
22
|
[defs_1.symbols.task]: true,
|
|
20
23
|
[defs_1.symbols.filePath]: filePath,
|
|
21
|
-
id
|
|
24
|
+
id,
|
|
22
25
|
dependencies: taskConfig.dependencies || {},
|
|
23
26
|
middleware: taskConfig.middleware || [],
|
|
24
27
|
run: taskConfig.run,
|
|
25
28
|
on: taskConfig.on,
|
|
29
|
+
listenerOrder: taskConfig.listenerOrder,
|
|
26
30
|
events: {
|
|
27
31
|
beforeRun: {
|
|
28
32
|
...defineEvent({
|
|
29
|
-
id:
|
|
33
|
+
id: isAnonymous
|
|
34
|
+
? Symbol(`anonymous-task.events.beforeRun`)
|
|
35
|
+
: `${id}.events.beforeRun`,
|
|
30
36
|
}),
|
|
31
37
|
[defs_1.symbols.filePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
32
38
|
},
|
|
33
39
|
afterRun: {
|
|
34
40
|
...defineEvent({
|
|
35
|
-
id:
|
|
41
|
+
id: isAnonymous
|
|
42
|
+
? Symbol(`anonymous-task.events.afterRun`)
|
|
43
|
+
: `${id}.events.afterRun`,
|
|
36
44
|
}),
|
|
37
45
|
[defs_1.symbols.filePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
38
46
|
},
|
|
39
47
|
onError: {
|
|
40
48
|
...defineEvent({
|
|
41
|
-
id:
|
|
49
|
+
id: isAnonymous
|
|
50
|
+
? Symbol(`anonymous-task.events.onError`)
|
|
51
|
+
: `${id}.events.onError`,
|
|
42
52
|
}),
|
|
43
53
|
[defs_1.symbols.filePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
44
54
|
},
|
|
@@ -48,16 +58,22 @@ function defineTask(taskConfig) {
|
|
|
48
58
|
};
|
|
49
59
|
}
|
|
50
60
|
function defineResource(constConfig) {
|
|
51
|
-
|
|
61
|
+
// The symbolFilePath might already come from defineIndex() for example
|
|
62
|
+
const filePath = constConfig[defs_1.symbolFilePath] || (0, getCallerFile_1.getCallerFile)();
|
|
63
|
+
const isIndexResource = constConfig[defs_1.symbolIndexResource] || false;
|
|
64
|
+
const isAnonymous = !Boolean(constConfig.id);
|
|
65
|
+
const id = constConfig.id ||
|
|
66
|
+
(0, getCallerFile_1.generateCallerIdFromFile)(filePath, isIndexResource ? "index" : "resource");
|
|
52
67
|
return {
|
|
53
68
|
[defs_1.symbols.resource]: true,
|
|
54
69
|
[defs_1.symbols.filePath]: filePath,
|
|
55
|
-
id
|
|
70
|
+
id,
|
|
56
71
|
dependencies: constConfig.dependencies,
|
|
57
72
|
dispose: constConfig.dispose,
|
|
58
73
|
register: constConfig.register || [],
|
|
59
74
|
overrides: constConfig.overrides || [],
|
|
60
|
-
init: constConfig.init
|
|
75
|
+
init: constConfig.init,
|
|
76
|
+
context: constConfig.context,
|
|
61
77
|
with: function (config) {
|
|
62
78
|
return {
|
|
63
79
|
[defs_1.symbols.resourceWithConfig]: true,
|
|
@@ -69,19 +85,25 @@ function defineResource(constConfig) {
|
|
|
69
85
|
events: {
|
|
70
86
|
beforeInit: {
|
|
71
87
|
...defineEvent({
|
|
72
|
-
id:
|
|
88
|
+
id: isAnonymous
|
|
89
|
+
? Symbol(`anonymous-resource.events.beforeInit`)
|
|
90
|
+
: `${id}.events.beforeInit`,
|
|
73
91
|
}),
|
|
74
92
|
[defs_1.symbols.filePath]: filePath,
|
|
75
93
|
},
|
|
76
94
|
afterInit: {
|
|
77
95
|
...defineEvent({
|
|
78
|
-
id:
|
|
96
|
+
id: isAnonymous
|
|
97
|
+
? Symbol(`anonymous-resource.events.afterInit`)
|
|
98
|
+
: `${id}.events.afterInit`,
|
|
79
99
|
}),
|
|
80
100
|
[defs_1.symbols.filePath]: filePath,
|
|
81
101
|
},
|
|
82
102
|
onError: {
|
|
83
103
|
...defineEvent({
|
|
84
|
-
id:
|
|
104
|
+
id: isAnonymous
|
|
105
|
+
? Symbol(`anonymous-resource.events.onError`)
|
|
106
|
+
: `${id}.events.onError`,
|
|
85
107
|
}),
|
|
86
108
|
[defs_1.symbols.filePath]: filePath,
|
|
87
109
|
},
|
|
@@ -90,28 +112,75 @@ function defineResource(constConfig) {
|
|
|
90
112
|
middleware: constConfig.middleware || [],
|
|
91
113
|
};
|
|
92
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Creates an "index" resource which groups multiple registerable items under
|
|
117
|
+
* a single dependency. The resulting resource registers every item, depends
|
|
118
|
+
* on the same items, and returns the resolved dependency map so users can
|
|
119
|
+
* access them naturally: `deps.services.myTask()` or `deps.services.myResource`.
|
|
120
|
+
*/
|
|
121
|
+
function defineIndex(items) {
|
|
122
|
+
const dependencies = {};
|
|
123
|
+
const register = [];
|
|
124
|
+
for (const key of Object.keys(items)) {
|
|
125
|
+
const item = items[key];
|
|
126
|
+
register.push(item);
|
|
127
|
+
if (isResourceWithConfig(item)) {
|
|
128
|
+
dependencies[key] = item.resource;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
dependencies[key] = item;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const callerFilePath = (0, getCallerFile_1.getCallerFile)();
|
|
135
|
+
return defineResource({
|
|
136
|
+
register,
|
|
137
|
+
dependencies,
|
|
138
|
+
async init(_, deps) {
|
|
139
|
+
return deps;
|
|
140
|
+
},
|
|
141
|
+
[defs_1.symbols.filePath]: callerFilePath,
|
|
142
|
+
[defs_1.symbols.indexResource]: true,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
93
145
|
function defineEvent(config) {
|
|
146
|
+
const callerFilePath = (0, getCallerFile_1.getCallerFile)();
|
|
94
147
|
return {
|
|
95
|
-
[defs_1.symbols.filePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
96
|
-
[defs_1.symbolEvent]: true,
|
|
97
148
|
...config,
|
|
149
|
+
id: config.id || (0, getCallerFile_1.generateCallerIdFromFile)(callerFilePath, "event"),
|
|
150
|
+
[defs_1.symbols.filePath]: callerFilePath,
|
|
151
|
+
[defs_1.symbolEvent]: true, // This is a workaround
|
|
98
152
|
};
|
|
99
153
|
}
|
|
100
|
-
function defineMiddleware(
|
|
154
|
+
function defineMiddleware(middlewareDef) {
|
|
155
|
+
const filePath = (0, getCallerFile_1.getCallerFile)();
|
|
101
156
|
const object = {
|
|
102
|
-
[defs_1.symbols.filePath]:
|
|
157
|
+
[defs_1.symbols.filePath]: filePath,
|
|
103
158
|
[defs_1.symbols.middleware]: true,
|
|
104
|
-
|
|
105
|
-
|
|
159
|
+
config: {},
|
|
160
|
+
id: middlewareDef.id || (0, getCallerFile_1.generateCallerIdFromFile)(filePath, "middleware"),
|
|
161
|
+
...middlewareDef,
|
|
162
|
+
dependencies: middlewareDef.dependencies || {},
|
|
106
163
|
};
|
|
107
164
|
return {
|
|
108
165
|
...object,
|
|
109
|
-
|
|
166
|
+
with: (config) => {
|
|
167
|
+
return {
|
|
168
|
+
...object,
|
|
169
|
+
[defs_1.symbolMiddlewareConfigured]: true,
|
|
170
|
+
config: {
|
|
171
|
+
...object.config,
|
|
172
|
+
...config,
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
everywhere(options = {}) {
|
|
177
|
+
const { tasks = true, resources = true } = options;
|
|
110
178
|
return {
|
|
111
179
|
...object,
|
|
112
|
-
[defs_1.symbols.
|
|
113
|
-
|
|
114
|
-
|
|
180
|
+
[defs_1.symbols.middlewareEverywhereTasks]: tasks,
|
|
181
|
+
[defs_1.symbols.middlewareEverywhereResources]: resources,
|
|
182
|
+
everywhere() {
|
|
183
|
+
throw errors_1.Errors.middlewareAlreadyGlobal(object.id);
|
|
115
184
|
},
|
|
116
185
|
};
|
|
117
186
|
},
|
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":"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"}
|