@bluelibs/runner 3.4.2 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI.md +621 -0
- package/README.md +1024 -577
- package/dist/context.d.ts +4 -8
- package/dist/context.js +5 -12
- package/dist/context.js.map +1 -1
- package/dist/define.d.ts +9 -113
- package/dist/define.js +29 -358
- package/dist/define.js.map +1 -1
- package/dist/definers/defineEvent.d.ts +2 -0
- package/dist/definers/defineEvent.js +23 -0
- package/dist/definers/defineEvent.js.map +1 -0
- package/dist/definers/defineHook.d.ts +6 -0
- package/dist/definers/defineHook.js +24 -0
- package/dist/definers/defineHook.js.map +1 -0
- package/dist/definers/defineOverride.d.ts +14 -0
- package/dist/definers/defineOverride.js +13 -0
- package/dist/definers/defineOverride.js.map +1 -0
- package/dist/definers/defineResource.d.ts +2 -0
- package/dist/definers/defineResource.js +69 -0
- package/dist/definers/defineResource.js.map +1 -0
- package/dist/definers/defineResourceMiddleware.d.ts +2 -0
- package/dist/definers/defineResourceMiddleware.js +42 -0
- package/dist/definers/defineResourceMiddleware.js.map +1 -0
- package/dist/definers/defineTag.d.ts +12 -0
- package/dist/definers/defineTag.js +106 -0
- package/dist/definers/defineTag.js.map +1 -0
- package/dist/definers/defineTask.d.ts +15 -0
- package/dist/definers/defineTask.js +42 -0
- package/dist/definers/defineTask.js.map +1 -0
- package/dist/definers/defineTaskMiddleware.d.ts +2 -0
- package/dist/definers/defineTaskMiddleware.js +42 -0
- package/dist/definers/defineTaskMiddleware.js.map +1 -0
- package/dist/definers/tools.d.ts +45 -0
- package/dist/definers/tools.js +75 -0
- package/dist/definers/tools.js.map +1 -0
- package/dist/defs.d.ts +16 -424
- package/dist/defs.js +26 -38
- package/dist/defs.js.map +1 -1
- package/dist/errors.d.ts +23 -8
- package/dist/errors.js +50 -10
- package/dist/errors.js.map +1 -1
- package/dist/globals/globalEvents.d.ts +15 -39
- package/dist/globals/globalEvents.js +20 -81
- package/dist/globals/globalEvents.js.map +1 -1
- package/dist/globals/globalMiddleware.d.ts +24 -17
- package/dist/globals/globalMiddleware.js +12 -4
- package/dist/globals/globalMiddleware.js.map +1 -1
- package/dist/globals/globalResources.d.ts +13 -28
- package/dist/globals/globalResources.js +15 -7
- package/dist/globals/globalResources.js.map +1 -1
- package/dist/globals/globalTags.d.ts +9 -0
- package/dist/globals/globalTags.js +23 -0
- package/dist/globals/globalTags.js.map +1 -0
- package/dist/globals/middleware/cache.middleware.d.ts +10 -17
- package/dist/globals/middleware/cache.middleware.js +4 -16
- package/dist/globals/middleware/cache.middleware.js.map +1 -1
- package/dist/globals/middleware/requireContext.middleware.d.ts +1 -1
- package/dist/globals/middleware/requireContext.middleware.js +5 -14
- package/dist/globals/middleware/requireContext.middleware.js.map +1 -1
- package/dist/globals/middleware/retry.middleware.d.ts +2 -1
- package/dist/globals/middleware/retry.middleware.js +32 -5
- package/dist/globals/middleware/retry.middleware.js.map +1 -1
- package/dist/globals/middleware/timeout.middleware.d.ts +2 -1
- package/dist/globals/middleware/timeout.middleware.js +31 -5
- package/dist/globals/middleware/timeout.middleware.js.map +1 -1
- package/dist/globals/resources/debug/debug.resource.d.ts +7 -0
- package/dist/globals/resources/debug/debug.resource.js +29 -0
- package/dist/globals/resources/debug/debug.resource.js.map +1 -0
- package/dist/globals/resources/debug/debug.tag.d.ts +2 -0
- package/dist/globals/resources/debug/debug.tag.js +12 -0
- package/dist/globals/resources/debug/debug.tag.js.map +1 -0
- package/dist/globals/resources/debug/debugConfig.resource.d.ts +22 -0
- package/dist/globals/resources/debug/debugConfig.resource.js +20 -0
- package/dist/globals/resources/debug/debugConfig.resource.js.map +1 -0
- package/dist/globals/resources/debug/executionTracker.middleware.d.ts +50 -0
- package/dist/globals/resources/debug/executionTracker.middleware.js +87 -0
- package/dist/globals/resources/debug/executionTracker.middleware.js.map +1 -0
- package/dist/globals/resources/debug/globalEvent.hook.d.ts +27 -0
- package/dist/globals/resources/debug/globalEvent.hook.js +38 -0
- package/dist/globals/resources/debug/globalEvent.hook.js.map +1 -0
- package/dist/globals/resources/debug/hook.hook.d.ts +25 -0
- package/dist/globals/resources/debug/hook.hook.js +42 -0
- package/dist/globals/resources/debug/hook.hook.js.map +1 -0
- package/dist/globals/resources/debug/index.d.ts +6 -0
- package/dist/{types → globals/resources/debug}/index.js +6 -11
- package/dist/globals/resources/debug/index.js.map +1 -0
- package/dist/globals/resources/debug/middleware.hook.d.ts +25 -0
- package/dist/globals/resources/debug/middleware.hook.js +71 -0
- package/dist/globals/resources/debug/middleware.hook.js.map +1 -0
- package/dist/globals/resources/debug/types.d.ts +25 -0
- package/dist/globals/resources/debug/types.js +65 -0
- package/dist/globals/resources/debug/types.js.map +1 -0
- package/dist/globals/resources/debug/utils.d.ts +2 -0
- package/dist/globals/resources/debug/utils.js +9 -0
- package/dist/globals/resources/debug/utils.js.map +1 -0
- package/dist/globals/resources/queue.resource.d.ts +3 -3
- package/dist/globals/resources/queue.resource.js.map +1 -1
- package/dist/globals/types.d.ts +1 -0
- package/dist/{task.types.js → globals/types.js} +2 -7
- package/dist/globals/types.js.map +1 -0
- package/dist/index.d.ts +58 -85
- package/dist/index.js +23 -10
- package/dist/index.js.map +1 -1
- package/dist/models/DependencyProcessor.d.ts +8 -6
- package/dist/models/DependencyProcessor.js +116 -33
- package/dist/models/DependencyProcessor.js.map +1 -1
- package/dist/models/EventManager.d.ts +127 -7
- package/dist/models/EventManager.js +251 -78
- package/dist/models/EventManager.js.map +1 -1
- package/dist/models/LogPrinter.d.ts +55 -0
- package/dist/models/LogPrinter.js +196 -0
- package/dist/models/LogPrinter.js.map +1 -0
- package/dist/models/Logger.d.ts +47 -27
- package/dist/models/Logger.js +133 -155
- package/dist/models/Logger.js.map +1 -1
- package/dist/models/MiddlewareManager.d.ts +86 -0
- package/dist/models/MiddlewareManager.js +409 -0
- package/dist/models/MiddlewareManager.js.map +1 -0
- package/dist/models/OverrideManager.d.ts +3 -3
- package/dist/models/OverrideManager.js +22 -7
- package/dist/models/OverrideManager.js.map +1 -1
- package/dist/models/ResourceInitializer.d.ts +4 -3
- package/dist/models/ResourceInitializer.js +12 -68
- package/dist/models/ResourceInitializer.js.map +1 -1
- package/dist/models/RunResult.d.ts +35 -0
- package/dist/models/RunResult.js +68 -0
- package/dist/models/RunResult.js.map +1 -0
- package/dist/models/Store.d.ts +30 -17
- package/dist/models/Store.js +87 -25
- package/dist/models/Store.js.map +1 -1
- package/dist/models/StoreRegistry.d.ts +34 -19
- package/dist/models/StoreRegistry.js +248 -100
- package/dist/models/StoreRegistry.js.map +1 -1
- package/dist/models/StoreValidator.d.ts +5 -7
- package/dist/models/StoreValidator.js +50 -17
- package/dist/models/StoreValidator.js.map +1 -1
- package/dist/models/TaskRunner.d.ts +3 -2
- package/dist/models/TaskRunner.js +6 -103
- package/dist/models/TaskRunner.js.map +1 -1
- package/dist/models/UnhandledError.d.ts +11 -0
- package/dist/models/UnhandledError.js +30 -0
- package/dist/models/UnhandledError.js.map +1 -0
- package/dist/models/index.d.ts +3 -0
- package/dist/models/index.js +3 -0
- package/dist/models/index.js.map +1 -1
- package/dist/{tools → models/utils}/findCircularDependencies.js +8 -16
- package/dist/models/utils/findCircularDependencies.js.map +1 -0
- package/dist/models/utils/safeStringify.d.ts +3 -0
- package/dist/models/utils/safeStringify.js +45 -0
- package/dist/models/utils/safeStringify.js.map +1 -0
- package/dist/processHooks.d.ts +2 -0
- package/dist/processHooks.js +70 -0
- package/dist/processHooks.js.map +1 -0
- package/dist/run.d.ts +14 -27
- package/dist/run.js +100 -36
- package/dist/run.js.map +1 -1
- package/dist/testing.d.ts +5 -4
- package/dist/testing.js +3 -2
- package/dist/testing.js.map +1 -1
- package/dist/tools/getCallerFile.d.ts +0 -8
- package/dist/tools/getCallerFile.js +0 -51
- package/dist/tools/getCallerFile.js.map +1 -1
- package/dist/types/contracts.d.ts +55 -0
- package/dist/types/contracts.js +4 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/event.d.ts +26 -7
- package/dist/types/event.js +1 -1
- package/dist/types/event.js.map +1 -1
- package/dist/types/hook.d.ts +21 -0
- package/dist/{models/StoreTypes.js → types/hook.js} +2 -1
- package/dist/types/hook.js.map +1 -0
- package/dist/types/meta.d.ts +6 -1
- package/dist/types/meta.js +4 -2
- package/dist/types/meta.js.map +1 -1
- package/dist/types/resource.d.ts +40 -52
- package/dist/types/resource.js +1 -0
- package/dist/types/resource.js.map +1 -1
- package/dist/types/resourceMiddleware.d.ts +47 -0
- package/dist/{middleware.types.js → types/resourceMiddleware.js} +1 -1
- package/dist/types/resourceMiddleware.js.map +1 -0
- package/dist/types/runner.d.ts +37 -0
- package/dist/types/{base.js → runner.js} +1 -1
- package/dist/types/runner.js.map +1 -0
- package/dist/types/storeTypes.d.ts +40 -0
- package/dist/types/{metadata.js → storeTypes.js} +1 -1
- package/dist/types/storeTypes.js.map +1 -0
- package/dist/types/symbols.d.ts +10 -21
- package/dist/types/symbols.js +17 -22
- package/dist/types/symbols.js.map +1 -1
- package/dist/types/tag.d.ts +46 -0
- package/dist/{resource.types.js → types/tag.js} +2 -1
- package/dist/types/tag.js.map +1 -0
- package/dist/types/task.d.ts +28 -52
- package/dist/types/task.js +1 -0
- package/dist/types/task.js.map +1 -1
- package/dist/types/taskMiddleware.d.ts +48 -0
- package/dist/{event.types.js → types/taskMiddleware.js} +1 -1
- package/dist/types/taskMiddleware.js.map +1 -0
- package/dist/types/utilities.d.ts +105 -6
- package/dist/types/utilities.js +16 -2
- package/dist/types/utilities.js.map +1 -1
- package/package.json +14 -5
- package/dist/cli/extract-docs.d.ts +0 -2
- package/dist/cli/extract-docs.js +0 -88
- package/dist/cli/extract-docs.js.map +0 -1
- package/dist/common.types.d.ts +0 -20
- package/dist/common.types.js +0 -4
- package/dist/common.types.js.map +0 -1
- package/dist/defs/core.d.ts +0 -144
- package/dist/defs/core.js +0 -6
- package/dist/defs/core.js.map +0 -1
- package/dist/defs/symbols.d.ts +0 -42
- package/dist/defs/symbols.js +0 -45
- package/dist/defs/symbols.js.map +0 -1
- package/dist/defs/tags.d.ts +0 -70
- package/dist/defs/tags.js +0 -6
- package/dist/defs/tags.js.map +0 -1
- package/dist/defs.returnTag.d.ts +0 -36
- package/dist/defs.returnTag.js +0 -4
- package/dist/defs.returnTag.js.map +0 -1
- package/dist/docs/introspect.d.ts +0 -7
- package/dist/docs/introspect.js +0 -199
- package/dist/docs/introspect.js.map +0 -1
- package/dist/docs/markdown.d.ts +0 -2
- package/dist/docs/markdown.js +0 -148
- package/dist/docs/markdown.js.map +0 -1
- package/dist/docs/model.d.ts +0 -62
- package/dist/docs/model.js +0 -33
- package/dist/docs/model.js.map +0 -1
- package/dist/event.types.d.ts +0 -18
- package/dist/event.types.js.map +0 -1
- package/dist/examples/express-mongo/index.d.ts +0 -0
- package/dist/examples/express-mongo/index.js +0 -3
- package/dist/examples/express-mongo/index.js.map +0 -1
- package/dist/examples/registrator-example.d.ts +0 -122
- package/dist/examples/registrator-example.js +0 -147
- package/dist/examples/registrator-example.js.map +0 -1
- package/dist/express/docsRouter.d.ts +0 -12
- package/dist/express/docsRouter.js +0 -54
- package/dist/express/docsRouter.js.map +0 -1
- package/dist/globalEvents.d.ts +0 -40
- package/dist/globalEvents.js +0 -94
- package/dist/globalEvents.js.map +0 -1
- package/dist/globalResources.d.ts +0 -10
- package/dist/globalResources.js +0 -43
- package/dist/globalResources.js.map +0 -1
- package/dist/middleware.types.d.ts +0 -40
- package/dist/middleware.types.js.map +0 -1
- package/dist/models/StoreConstants.d.ts +0 -14
- package/dist/models/StoreConstants.js +0 -19
- package/dist/models/StoreConstants.js.map +0 -1
- package/dist/models/StoreTypes.d.ts +0 -21
- package/dist/models/StoreTypes.js.map +0 -1
- package/dist/models/VarStore.d.ts +0 -17
- package/dist/models/VarStore.js +0 -60
- package/dist/models/VarStore.js.map +0 -1
- package/dist/resource.types.d.ts +0 -31
- package/dist/resource.types.js.map +0 -1
- package/dist/symbols.d.ts +0 -24
- package/dist/symbols.js +0 -29
- package/dist/symbols.js.map +0 -1
- package/dist/t1.d.ts +0 -1
- package/dist/t1.js +0 -13
- package/dist/t1.js.map +0 -1
- package/dist/task.types.d.ts +0 -55
- package/dist/task.types.js.map +0 -1
- package/dist/tools/findCircularDependencies.js.map +0 -1
- package/dist/tools/registratorId.d.ts +0 -4
- package/dist/tools/registratorId.js +0 -40
- package/dist/tools/registratorId.js.map +0 -1
- package/dist/tools/simpleHash.d.ts +0 -9
- package/dist/tools/simpleHash.js +0 -34
- package/dist/tools/simpleHash.js.map +0 -1
- package/dist/types/base-interfaces.d.ts +0 -18
- package/dist/types/base-interfaces.js +0 -6
- package/dist/types/base-interfaces.js.map +0 -1
- package/dist/types/base.d.ts +0 -13
- package/dist/types/base.js.map +0 -1
- package/dist/types/dependencies.d.ts +0 -51
- package/dist/types/dependencies.js +0 -3
- package/dist/types/dependencies.js.map +0 -1
- package/dist/types/dependency-core.d.ts +0 -14
- package/dist/types/dependency-core.js +0 -5
- package/dist/types/dependency-core.js.map +0 -1
- package/dist/types/events.d.ts +0 -52
- package/dist/types/events.js +0 -6
- package/dist/types/events.js.map +0 -1
- package/dist/types/hooks.d.ts +0 -16
- package/dist/types/hooks.js +0 -5
- package/dist/types/hooks.js.map +0 -1
- package/dist/types/index.d.ts +0 -8
- package/dist/types/index.js.map +0 -1
- package/dist/types/metadata.d.ts +0 -75
- package/dist/types/metadata.js.map +0 -1
- package/dist/types/middleware.d.ts +0 -63
- package/dist/types/middleware.js +0 -3
- package/dist/types/middleware.js.map +0 -1
- package/dist/types/registerable.d.ts +0 -10
- package/dist/types/registerable.js +0 -5
- package/dist/types/registerable.js.map +0 -1
- package/dist/types/resources.d.ts +0 -44
- package/dist/types/resources.js +0 -5
- package/dist/types/resources.js.map +0 -1
- package/dist/types/tasks.d.ts +0 -41
- package/dist/types/tasks.js +0 -5
- package/dist/types/tasks.js.map +0 -1
- package/src/__tests__/benchmark/benchmark.test.ts +0 -148
- package/src/__tests__/benchmark/task-benchmark.test.ts +0 -132
- package/src/__tests__/context.test.ts +0 -91
- package/src/__tests__/createTestResource.test.ts +0 -139
- package/src/__tests__/errors.test.ts +0 -341
- package/src/__tests__/globalEvents.test.ts +0 -542
- package/src/__tests__/globals/cache.middleware.test.ts +0 -772
- package/src/__tests__/globals/queue.resource.test.ts +0 -141
- package/src/__tests__/globals/requireContext.middleware.test.ts +0 -98
- package/src/__tests__/globals/retry.middleware.test.ts +0 -157
- package/src/__tests__/globals/timeout.middleware.test.ts +0 -88
- package/src/__tests__/index.helper.test.ts +0 -55
- package/src/__tests__/models/EventManager.test.ts +0 -585
- package/src/__tests__/models/Logger.test.ts +0 -519
- package/src/__tests__/models/Queue.test.ts +0 -189
- package/src/__tests__/models/ResourceInitializer.test.ts +0 -148
- package/src/__tests__/models/Semaphore.test.ts +0 -713
- package/src/__tests__/models/Store.test.ts +0 -227
- package/src/__tests__/models/TaskRunner.test.ts +0 -221
- package/src/__tests__/override.test.ts +0 -104
- package/src/__tests__/recursion/README.md +0 -3
- package/src/__tests__/recursion/a.resource.ts +0 -25
- package/src/__tests__/recursion/b.resource.ts +0 -33
- package/src/__tests__/recursion/c.resource.ts +0 -18
- package/src/__tests__/run.anonymous.test.ts +0 -706
- package/src/__tests__/run.dynamic-register-and-dependencies.test.ts +0 -1185
- package/src/__tests__/run.middleware.test.ts +0 -549
- package/src/__tests__/run.overrides.test.ts +0 -424
- package/src/__tests__/run.test.ts +0 -1040
- package/src/__tests__/setOutput.test.ts +0 -244
- package/src/__tests__/tags.test.ts +0 -396
- package/src/__tests__/tools/findCircularDependencies.test.ts +0 -217
- package/src/__tests__/tools/getCallerFile.test.ts +0 -179
- package/src/__tests__/typesafety.test.ts +0 -423
- package/src/__tests__/validation-edge-cases.test.ts +0 -111
- package/src/__tests__/validation-interface.test.ts +0 -428
- package/src/context.ts +0 -86
- package/src/define.ts +0 -480
- package/src/defs.returnTag.ts +0 -91
- package/src/defs.ts +0 -596
- package/src/errors.ts +0 -105
- package/src/globals/globalEvents.ts +0 -125
- package/src/globals/globalMiddleware.ts +0 -16
- package/src/globals/globalResources.ts +0 -53
- package/src/globals/middleware/cache.middleware.ts +0 -115
- package/src/globals/middleware/requireContext.middleware.ts +0 -36
- package/src/globals/middleware/retry.middleware.ts +0 -56
- package/src/globals/middleware/timeout.middleware.ts +0 -46
- package/src/globals/resources/queue.resource.ts +0 -34
- package/src/index.ts +0 -39
- package/src/models/DependencyProcessor.ts +0 -257
- package/src/models/EventManager.ts +0 -210
- package/src/models/Logger.ts +0 -282
- package/src/models/OverrideManager.ts +0 -79
- package/src/models/Queue.ts +0 -66
- package/src/models/ResourceInitializer.ts +0 -165
- package/src/models/Semaphore.ts +0 -208
- package/src/models/Store.ts +0 -193
- package/src/models/StoreConstants.ts +0 -18
- package/src/models/StoreRegistry.ts +0 -253
- package/src/models/StoreTypes.ts +0 -47
- package/src/models/StoreValidator.ts +0 -43
- package/src/models/TaskRunner.ts +0 -203
- package/src/models/index.ts +0 -8
- package/src/run.ts +0 -116
- package/src/testing.ts +0 -66
- package/src/tools/findCircularDependencies.ts +0 -69
- package/src/tools/getCallerFile.ts +0 -96
- /package/dist/{tools → models/utils}/findCircularDependencies.d.ts +0 -0
package/dist/context.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "async_hooks";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
export declare class ContextError extends Error {
|
|
7
|
-
constructor(message: string);
|
|
8
|
-
}
|
|
2
|
+
import { ITaskMiddlewareConfigured } from "./defs";
|
|
3
|
+
import { ContextError } from "./errors";
|
|
4
|
+
export { ContextError };
|
|
9
5
|
/**
|
|
10
6
|
* The generic Context object returned by `createContext`.
|
|
11
7
|
*/
|
|
@@ -22,7 +18,7 @@ export interface Context<T> {
|
|
|
22
18
|
* Generates a middleware that guarantees the context exists (and optionally
|
|
23
19
|
* enforces that certain keys are present on the context object).
|
|
24
20
|
*/
|
|
25
|
-
require<K extends keyof T = never>(keys?: K[]):
|
|
21
|
+
require<K extends keyof T = never>(keys?: K[]): ITaskMiddlewareConfigured<{
|
|
26
22
|
context: Context<T>;
|
|
27
23
|
}>;
|
|
28
24
|
}
|
package/dist/context.js
CHANGED
|
@@ -4,16 +4,8 @@ exports.storage = exports.ContextError = void 0;
|
|
|
4
4
|
exports.createContext = createContext;
|
|
5
5
|
const async_hooks_1 = require("async_hooks");
|
|
6
6
|
const requireContext_middleware_1 = require("./globals/middleware/requireContext.middleware");
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
class ContextError extends Error {
|
|
11
|
-
constructor(message) {
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = "ContextError";
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.ContextError = ContextError;
|
|
7
|
+
const errors_1 = require("./errors");
|
|
8
|
+
Object.defineProperty(exports, "ContextError", { enumerable: true, get: function () { return errors_1.ContextError; } });
|
|
17
9
|
// The internal storage maps Context identifiers (symbols) to their values
|
|
18
10
|
exports.storage = new async_hooks_1.AsyncLocalStorage();
|
|
19
11
|
/** Returns the currently active store or undefined. */
|
|
@@ -29,7 +21,7 @@ function createContext(name = "runner.context") {
|
|
|
29
21
|
function use() {
|
|
30
22
|
const store = getCurrentStore();
|
|
31
23
|
if (!store || !store.has(ctxId)) {
|
|
32
|
-
throw new ContextError(`Context not available for symbol ${ctxId.toString()}`);
|
|
24
|
+
throw new errors_1.ContextError(`Context not available for symbol ${ctxId.toString()}`);
|
|
33
25
|
}
|
|
34
26
|
return store.get(ctxId);
|
|
35
27
|
}
|
|
@@ -44,9 +36,10 @@ function createContext(name = "runner.context") {
|
|
|
44
36
|
/**
|
|
45
37
|
* Generates a middleware that guarantees the context exists (and optionally
|
|
46
38
|
* enforces that certain keys are present on the context object).
|
|
39
|
+
* @throws {ContextError} if the context is not available
|
|
47
40
|
*/
|
|
48
41
|
function require() {
|
|
49
|
-
return requireContext_middleware_1.
|
|
42
|
+
return requireContext_middleware_1.requireContextTaskMiddleware.with({ context: this });
|
|
50
43
|
}
|
|
51
44
|
return {
|
|
52
45
|
id: ctxId,
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;;AAuCA,sCAsCC;AA7ED,6CAAgD;AAEhD,8FAA8F;AAC9F,qCAAwC;AAE/B,6FAFA,qBAAY,OAEA;AAsBrB,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,qBAAY,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;;;;OAIG;IACH,SAAS,OAAO;QACd,OAAO,wDAA4B,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAkB,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK;QACT,GAAG;QACH,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/define.d.ts
CHANGED
|
@@ -1,113 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* Define a task.
|
|
11
|
-
* Generates a strongly-typed task object with id, lifecycle events, dependencies,
|
|
12
|
-
* middleware, and metadata.
|
|
13
|
-
*
|
|
14
|
-
* - If `id` is omitted, an anonymous, file-based id is generated.
|
|
15
|
-
* - Wires lifecycle events: `beforeRun`, `afterRun`, `onError`.
|
|
16
|
-
* - Carries through dependencies, middleware, input schema, and metadata.
|
|
17
|
-
*
|
|
18
|
-
* @typeParam Input - Input type accepted by the task's `run` function.
|
|
19
|
-
* @typeParam Output - Promise type returned by the `run` function.
|
|
20
|
-
* @typeParam Deps - Dependency map type this task requires.
|
|
21
|
-
* @typeParam TOn - Event type or "*" this task listens to.
|
|
22
|
-
* @typeParam TMeta - Arbitrary metadata type carried by the task.
|
|
23
|
-
* @param taskConfig - The task definition config.
|
|
24
|
-
* @returns A branded task definition usable by the runner.
|
|
25
|
-
*/
|
|
26
|
-
export declare function defineTask<Input = undefined, Output extends Promise<any> = any, Deps extends DependencyMapType = any, TOn extends "*" | IEventDefinition | undefined = undefined, TMeta extends ITaskMeta = any>(taskConfig: ITaskDefinition<Input, Output, Deps, TOn, TMeta>): ITask<Input, Output, Deps, TOn, TMeta>;
|
|
27
|
-
export declare function defineResource<TConfig = void, TValue extends Promise<any> = Promise<any>, TDeps extends DependencyMapType = {}, TPrivate = any, TMeta extends IResourceMeta = any>(constConfig: IResourceDefinition<TConfig, TValue, TDeps, TPrivate, any, any, TMeta>): IResource<TConfig, TValue, TDeps, TPrivate, TMeta>;
|
|
28
|
-
/**
|
|
29
|
-
* Creates an "index" resource which groups multiple registerable items under
|
|
30
|
-
* a single dependency. The resulting resource registers every item, depends
|
|
31
|
-
* on the same items, and returns the resolved dependency map so users can
|
|
32
|
-
* access them naturally: `deps.services.myTask()` or `deps.services.myResource`.
|
|
33
|
-
*/
|
|
34
|
-
export declare function defineIndex<T extends Record<string, RegisterableItems>, D extends {
|
|
35
|
-
[K in keyof T]: T[K] extends IResourceWithConfig<any, any, any> ? T[K]["resource"] : T[K];
|
|
36
|
-
} & DependencyMapType>(items: T): IResource<void, Promise<DependencyValuesType<D>>, D>;
|
|
37
|
-
export declare function defineEvent<TPayload = void>(config?: IEventDefinition<TPayload>): IEvent<TPayload>;
|
|
38
|
-
export type MiddlewareEverywhereOptions = {
|
|
39
|
-
/**
|
|
40
|
-
* Enable this for tasks. Default is true.
|
|
41
|
-
*/
|
|
42
|
-
tasks?: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Enable this for resources. Default is true.
|
|
45
|
-
*/
|
|
46
|
-
resources?: boolean;
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* Define a middleware.
|
|
50
|
-
* Creates a middleware definition with anonymous id generation, `.with(config)`,
|
|
51
|
-
* and `.everywhere()` helpers.
|
|
52
|
-
*
|
|
53
|
-
* - `.with(config)` merges config (optionally validated via `configSchema`).
|
|
54
|
-
* - `.everywhere()` marks the middleware global (optionally scoping to tasks/resources).
|
|
55
|
-
*
|
|
56
|
-
* @typeParam TConfig - Configuration type accepted by the middleware.
|
|
57
|
-
* @typeParam TDependencies - Dependency map type required by the middleware.
|
|
58
|
-
* @param middlewareDef - The middleware definition config.
|
|
59
|
-
* @returns A branded middleware definition usable by the runner.
|
|
60
|
-
*/
|
|
61
|
-
export declare function defineMiddleware<TConfig extends Record<string, any>, TDependencies extends DependencyMapType>(middlewareDef: IMiddlewareDefinition<TConfig, TDependencies>): IMiddleware<TConfig, TDependencies>;
|
|
62
|
-
/**
|
|
63
|
-
* Type guard: checks if a definition is a Task.
|
|
64
|
-
* @param definition - Any value to test.
|
|
65
|
-
* @returns True when `definition` is a branded Task.
|
|
66
|
-
*/
|
|
67
|
-
export declare function isTask(definition: any): definition is ITask;
|
|
68
|
-
/**
|
|
69
|
-
* Type guard: checks if a definition is a Resource.
|
|
70
|
-
* @param definition - Any value to test.
|
|
71
|
-
* @returns True when `definition` is a branded Resource.
|
|
72
|
-
*/
|
|
73
|
-
export declare function isResource(definition: any): definition is IResource;
|
|
74
|
-
/**
|
|
75
|
-
* Type guard: checks if a definition is a Resource that carries config via `.with()`.
|
|
76
|
-
* @param definition - Any value to test.
|
|
77
|
-
* @returns True when `definition` is a branded ResourceWithConfig.
|
|
78
|
-
*/
|
|
79
|
-
export declare function isResourceWithConfig(definition: any): definition is IResourceWithConfig;
|
|
80
|
-
/**
|
|
81
|
-
* Type guard: checks if a definition is an Event.
|
|
82
|
-
* @param definition - Any value to test.
|
|
83
|
-
* @returns True when `definition` is a branded Event.
|
|
84
|
-
*/
|
|
85
|
-
export declare function isEvent(definition: any): definition is IEvent;
|
|
86
|
-
/**
|
|
87
|
-
* Type guard: checks if a definition is a Middleware.
|
|
88
|
-
* @param definition - Any value to test.
|
|
89
|
-
* @returns True when `definition` is a branded Middleware.
|
|
90
|
-
*/
|
|
91
|
-
export declare function isMiddleware(definition: any): definition is IMiddleware;
|
|
92
|
-
/**
|
|
93
|
-
* Override helper that preserves the original `id` and returns the same type.
|
|
94
|
-
* You can override any property except `id`. The override is shallow-merged over the base.
|
|
95
|
-
*
|
|
96
|
-
* @param base - The base definition to override.
|
|
97
|
-
* @param patch - Properties to override (except `id`).
|
|
98
|
-
* @returns A definition of the same kind with overrides applied.
|
|
99
|
-
*/
|
|
100
|
-
export declare function defineOverride<T extends ITask<any, any, any, any>>(base: T, patch: Omit<Partial<T>, "id">): T;
|
|
101
|
-
export declare function defineOverride<T extends IResource<any, any, any, any>>(base: T, patch: Omit<Partial<T>, "id">): T;
|
|
102
|
-
export declare function defineOverride<T extends IMiddleware<any, any>>(base: T, patch: Omit<Partial<T>, "id">): T;
|
|
103
|
-
/**
|
|
104
|
-
* Create a tag definition.
|
|
105
|
-
* - `.with(config)` to create configured instances
|
|
106
|
-
* - `.extract(tags)` to extract this tag from a list of tags or a taggable's meta
|
|
107
|
-
*
|
|
108
|
-
* @typeParam TConfig - Configuration type carried by configured tags.
|
|
109
|
-
* @typeParam TEnforceContract - Optional helper type to enforce a contract when tags are used.
|
|
110
|
-
* @param definition - The tag definition (id).
|
|
111
|
-
* @returns A tag object with helpers to configure and extract.
|
|
112
|
-
*/
|
|
113
|
-
export declare function defineTag<TConfig = void, TEnforceContract = void>(definition: ITagDefinition<TConfig, TEnforceContract>): ITag<TConfig, TEnforceContract>;
|
|
1
|
+
export { defineTask } from "./definers/defineTask";
|
|
2
|
+
export { defineHook } from "./definers/defineHook";
|
|
3
|
+
export { defineResource } from "./definers/defineResource";
|
|
4
|
+
export { defineEvent } from "./definers/defineEvent";
|
|
5
|
+
export { defineTaskMiddleware } from "./definers/defineTaskMiddleware";
|
|
6
|
+
export { defineResourceMiddleware } from "./definers/defineResourceMiddleware";
|
|
7
|
+
export { defineOverride } from "./definers/defineOverride";
|
|
8
|
+
export { defineTag } from "./definers/defineTag";
|
|
9
|
+
export { isTask, isResource, isResourceWithConfig, isEvent, isHook, isTaskMiddleware, isResourceMiddleware, isTag, isOptional, } from "./definers/tools";
|
package/dist/define.js
CHANGED
|
@@ -1,361 +1,32 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineTask =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.
|
|
7
|
-
|
|
8
|
-
exports.
|
|
9
|
-
|
|
10
|
-
exports.
|
|
11
|
-
|
|
12
|
-
exports.
|
|
13
|
-
|
|
14
|
-
exports.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
* - Wires lifecycle events: `beforeRun`, `afterRun`, `onError`.
|
|
33
|
-
* - Carries through dependencies, middleware, input schema, and metadata.
|
|
34
|
-
*
|
|
35
|
-
* @typeParam Input - Input type accepted by the task's `run` function.
|
|
36
|
-
* @typeParam Output - Promise type returned by the `run` function.
|
|
37
|
-
* @typeParam Deps - Dependency map type this task requires.
|
|
38
|
-
* @typeParam TOn - Event type or "*" this task listens to.
|
|
39
|
-
* @typeParam TMeta - Arbitrary metadata type carried by the task.
|
|
40
|
-
* @param taskConfig - The task definition config.
|
|
41
|
-
* @returns A branded task definition usable by the runner.
|
|
42
|
-
*/
|
|
43
|
-
function defineTask(taskConfig) {
|
|
44
|
-
const filePath = (0, getCallerFile_1.getCallerFile)();
|
|
45
|
-
const isAnonymous = !Boolean(taskConfig.id);
|
|
46
|
-
const id = taskConfig.id || (0, getCallerFile_1.generateCallerIdFromFile)(filePath, "task");
|
|
47
|
-
return {
|
|
48
|
-
[defs_1.symbolTask]: true,
|
|
49
|
-
[defs_1.symbolFilePath]: filePath,
|
|
50
|
-
id,
|
|
51
|
-
dependencies: taskConfig.dependencies || {},
|
|
52
|
-
middleware: taskConfig.middleware || [],
|
|
53
|
-
run: taskConfig.run,
|
|
54
|
-
on: taskConfig.on,
|
|
55
|
-
listenerOrder: taskConfig.listenerOrder,
|
|
56
|
-
inputSchema: taskConfig.inputSchema,
|
|
57
|
-
events: {
|
|
58
|
-
beforeRun: {
|
|
59
|
-
...defineEvent({
|
|
60
|
-
id: isAnonymous
|
|
61
|
-
? Symbol(`anonymous-task.events.beforeRun`)
|
|
62
|
-
: `${id}.events.beforeRun`,
|
|
63
|
-
}),
|
|
64
|
-
[defs_1.symbolFilePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
65
|
-
},
|
|
66
|
-
afterRun: {
|
|
67
|
-
...defineEvent({
|
|
68
|
-
id: isAnonymous
|
|
69
|
-
? Symbol(`anonymous-task.events.afterRun`)
|
|
70
|
-
: `${id}.events.afterRun`,
|
|
71
|
-
}),
|
|
72
|
-
[defs_1.symbolFilePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
73
|
-
},
|
|
74
|
-
onError: {
|
|
75
|
-
...defineEvent({
|
|
76
|
-
id: isAnonymous
|
|
77
|
-
? Symbol(`anonymous-task.events.onError`)
|
|
78
|
-
: `${id}.events.onError`,
|
|
79
|
-
}),
|
|
80
|
-
[defs_1.symbolFilePath]: (0, getCallerFile_1.getCallerFile)(),
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
meta: taskConfig.meta || {},
|
|
84
|
-
// autorun,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
function defineResource(constConfig) {
|
|
88
|
-
/**
|
|
89
|
-
* Define a resource.
|
|
90
|
-
* Produces a strongly-typed resource with id, lifecycle events, registration hooks,
|
|
91
|
-
* and optional config schema.
|
|
92
|
-
*
|
|
93
|
-
* - If `id` is omitted, an anonymous, file-based id is generated (resource or index flavored).
|
|
94
|
-
* - Wires lifecycle events: `beforeInit`, `afterInit`, `onError`.
|
|
95
|
-
* - Provides `.with(config)` for config-bound registration with optional runtime validation.
|
|
96
|
-
*
|
|
97
|
-
* @typeParam TConfig - Configuration type accepted by the resource.
|
|
98
|
-
* @typeParam TValue - Promise type resolved by the resource `init`.
|
|
99
|
-
* @typeParam TDeps - Dependency map type this resource requires.
|
|
100
|
-
* @typeParam TPrivate - Private context type exposed to middleware during init.
|
|
101
|
-
* @typeParam TMeta - Arbitrary metadata type carried by the resource.
|
|
102
|
-
* @param constConfig - The resource definition config.
|
|
103
|
-
* @returns A branded resource definition usable by the runner.
|
|
104
|
-
*/
|
|
105
|
-
// The symbolFilePath might already come from defineIndex() for example
|
|
106
|
-
const filePath = constConfig[defs_1.symbolFilePath] || (0, getCallerFile_1.getCallerFile)();
|
|
107
|
-
const isIndexResource = constConfig[defs_1.symbolIndexResource] || false;
|
|
108
|
-
const isAnonymous = !Boolean(constConfig.id);
|
|
109
|
-
const id = constConfig.id ||
|
|
110
|
-
(0, getCallerFile_1.generateCallerIdFromFile)(filePath, isIndexResource ? "index" : "resource");
|
|
111
|
-
return {
|
|
112
|
-
[defs_1.symbolResource]: true,
|
|
113
|
-
[defs_1.symbolFilePath]: filePath,
|
|
114
|
-
[defs_1.symbolIndexResource]: isIndexResource,
|
|
115
|
-
id,
|
|
116
|
-
dependencies: constConfig.dependencies,
|
|
117
|
-
dispose: constConfig.dispose,
|
|
118
|
-
register: constConfig.register || [],
|
|
119
|
-
overrides: constConfig.overrides || [],
|
|
120
|
-
init: constConfig.init,
|
|
121
|
-
context: constConfig.context,
|
|
122
|
-
configSchema: constConfig.configSchema,
|
|
123
|
-
with: function (config) {
|
|
124
|
-
// Validate config with schema if provided (fail fast)
|
|
125
|
-
if (this.configSchema) {
|
|
126
|
-
try {
|
|
127
|
-
config = this.configSchema.parse(config);
|
|
128
|
-
}
|
|
129
|
-
catch (error) {
|
|
130
|
-
throw new errors_1.ValidationError("Resource config", this.id, error instanceof Error ? error : new Error(String(error)));
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return {
|
|
134
|
-
[defs_1.symbolResourceWithConfig]: true,
|
|
135
|
-
id: this.id,
|
|
136
|
-
resource: this,
|
|
137
|
-
config,
|
|
138
|
-
};
|
|
139
|
-
},
|
|
140
|
-
events: {
|
|
141
|
-
beforeInit: {
|
|
142
|
-
...defineEvent({
|
|
143
|
-
id: isAnonymous
|
|
144
|
-
? Symbol(`anonymous-resource.events.beforeInit`)
|
|
145
|
-
: `${id}.events.beforeInit`,
|
|
146
|
-
}),
|
|
147
|
-
[defs_1.symbolFilePath]: filePath,
|
|
148
|
-
},
|
|
149
|
-
afterInit: {
|
|
150
|
-
...defineEvent({
|
|
151
|
-
id: isAnonymous
|
|
152
|
-
? Symbol(`anonymous-resource.events.afterInit`)
|
|
153
|
-
: `${id}.events.afterInit`,
|
|
154
|
-
}),
|
|
155
|
-
[defs_1.symbolFilePath]: filePath,
|
|
156
|
-
},
|
|
157
|
-
onError: {
|
|
158
|
-
...defineEvent({
|
|
159
|
-
id: isAnonymous
|
|
160
|
-
? Symbol(`anonymous-resource.events.onError`)
|
|
161
|
-
: `${id}.events.onError`,
|
|
162
|
-
}),
|
|
163
|
-
[defs_1.symbolFilePath]: filePath,
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
meta: (constConfig.meta || {}),
|
|
167
|
-
middleware: constConfig.middleware || [],
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Creates an "index" resource which groups multiple registerable items under
|
|
172
|
-
* a single dependency. The resulting resource registers every item, depends
|
|
173
|
-
* on the same items, and returns the resolved dependency map so users can
|
|
174
|
-
* access them naturally: `deps.services.myTask()` or `deps.services.myResource`.
|
|
175
|
-
*/
|
|
176
|
-
function defineIndex(items) {
|
|
177
|
-
// Build dependency map from given items; unwrap `.with()` to the base resource
|
|
178
|
-
const dependencies = {};
|
|
179
|
-
const register = [];
|
|
180
|
-
for (const key of Object.keys(items)) {
|
|
181
|
-
const item = items[key];
|
|
182
|
-
register.push(item);
|
|
183
|
-
if (isResourceWithConfig(item)) {
|
|
184
|
-
dependencies[key] = item.resource;
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
dependencies[key] = item;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
const callerFilePath = (0, getCallerFile_1.getCallerFile)();
|
|
191
|
-
return defineResource({
|
|
192
|
-
register,
|
|
193
|
-
dependencies,
|
|
194
|
-
async init(_, deps) {
|
|
195
|
-
return deps;
|
|
196
|
-
},
|
|
197
|
-
[defs_1.symbolFilePath]: callerFilePath,
|
|
198
|
-
[defs_1.symbolIndexResource]: true,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
function defineEvent(config) {
|
|
202
|
-
/**
|
|
203
|
-
* Define an event.
|
|
204
|
-
* Generates a branded event definition with a stable id (anonymous if omitted)
|
|
205
|
-
* and file path metadata for better debugging.
|
|
206
|
-
*
|
|
207
|
-
* @typeParam TPayload - Payload type carried by the event.
|
|
208
|
-
* @param config - Optional event definition (id, etc.).
|
|
209
|
-
* @returns A branded event definition.
|
|
210
|
-
*/
|
|
211
|
-
const callerFilePath = (0, getCallerFile_1.getCallerFile)();
|
|
212
|
-
const eventConfig = config || {};
|
|
213
|
-
return {
|
|
214
|
-
...eventConfig,
|
|
215
|
-
id: eventConfig.id || (0, getCallerFile_1.generateCallerIdFromFile)(callerFilePath, "event"),
|
|
216
|
-
[defs_1.symbolFilePath]: callerFilePath,
|
|
217
|
-
[defs_1.symbolEvent]: true, // This is a workaround
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* Define a middleware.
|
|
222
|
-
* Creates a middleware definition with anonymous id generation, `.with(config)`,
|
|
223
|
-
* and `.everywhere()` helpers.
|
|
224
|
-
*
|
|
225
|
-
* - `.with(config)` merges config (optionally validated via `configSchema`).
|
|
226
|
-
* - `.everywhere()` marks the middleware global (optionally scoping to tasks/resources).
|
|
227
|
-
*
|
|
228
|
-
* @typeParam TConfig - Configuration type accepted by the middleware.
|
|
229
|
-
* @typeParam TDependencies - Dependency map type required by the middleware.
|
|
230
|
-
* @param middlewareDef - The middleware definition config.
|
|
231
|
-
* @returns A branded middleware definition usable by the runner.
|
|
232
|
-
*/
|
|
233
|
-
function defineMiddleware(middlewareDef) {
|
|
234
|
-
const filePath = (0, getCallerFile_1.getCallerFile)();
|
|
235
|
-
const object = {
|
|
236
|
-
[defs_1.symbolFilePath]: filePath,
|
|
237
|
-
[defs_1.symbolMiddleware]: true,
|
|
238
|
-
config: {},
|
|
239
|
-
id: middlewareDef.id || (0, getCallerFile_1.generateCallerIdFromFile)(filePath, "middleware"),
|
|
240
|
-
...middlewareDef,
|
|
241
|
-
dependencies: middlewareDef.dependencies || {},
|
|
242
|
-
};
|
|
243
|
-
return {
|
|
244
|
-
...object,
|
|
245
|
-
with: (config) => {
|
|
246
|
-
// Validate config with schema if provided (fail fast)
|
|
247
|
-
if (object.configSchema) {
|
|
248
|
-
try {
|
|
249
|
-
config = object.configSchema.parse(config);
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
throw new errors_1.ValidationError("Middleware config", object.id, error instanceof Error ? error : new Error(String(error)));
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return {
|
|
256
|
-
...object,
|
|
257
|
-
[defs_1.symbolMiddlewareConfigured]: true,
|
|
258
|
-
config: {
|
|
259
|
-
...object.config,
|
|
260
|
-
...config,
|
|
261
|
-
},
|
|
262
|
-
};
|
|
263
|
-
},
|
|
264
|
-
everywhere(options = {}) {
|
|
265
|
-
const { tasks = true, resources = true } = options;
|
|
266
|
-
return {
|
|
267
|
-
...object,
|
|
268
|
-
[defs_1.symbolMiddlewareEverywhereTasks]: tasks,
|
|
269
|
-
[defs_1.symbolMiddlewareEverywhereResources]: resources,
|
|
270
|
-
everywhere() {
|
|
271
|
-
throw new errors_1.MiddlewareAlreadyGlobalError(object.id);
|
|
272
|
-
},
|
|
273
|
-
};
|
|
274
|
-
},
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Type guard: checks if a definition is a Task.
|
|
279
|
-
* @param definition - Any value to test.
|
|
280
|
-
* @returns True when `definition` is a branded Task.
|
|
281
|
-
*/
|
|
282
|
-
function isTask(definition) {
|
|
283
|
-
return definition && definition[defs_1.symbolTask];
|
|
284
|
-
}
|
|
285
|
-
/**
|
|
286
|
-
* Type guard: checks if a definition is a Resource.
|
|
287
|
-
* @param definition - Any value to test.
|
|
288
|
-
* @returns True when `definition` is a branded Resource.
|
|
289
|
-
*/
|
|
290
|
-
function isResource(definition) {
|
|
291
|
-
return definition && definition[defs_1.symbolResource];
|
|
292
|
-
}
|
|
293
|
-
/**
|
|
294
|
-
* Type guard: checks if a definition is a Resource that carries config via `.with()`.
|
|
295
|
-
* @param definition - Any value to test.
|
|
296
|
-
* @returns True when `definition` is a branded ResourceWithConfig.
|
|
297
|
-
*/
|
|
298
|
-
function isResourceWithConfig(definition) {
|
|
299
|
-
return definition && definition[defs_1.symbolResourceWithConfig];
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Type guard: checks if a definition is an Event.
|
|
303
|
-
* @param definition - Any value to test.
|
|
304
|
-
* @returns True when `definition` is a branded Event.
|
|
305
|
-
*/
|
|
306
|
-
function isEvent(definition) {
|
|
307
|
-
return definition && definition[defs_1.symbolEvent];
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Type guard: checks if a definition is a Middleware.
|
|
311
|
-
* @param definition - Any value to test.
|
|
312
|
-
* @returns True when `definition` is a branded Middleware.
|
|
313
|
-
*/
|
|
314
|
-
function isMiddleware(definition) {
|
|
315
|
-
return definition && definition[defs_1.symbolMiddleware];
|
|
316
|
-
}
|
|
317
|
-
function defineOverride(base, patch) {
|
|
318
|
-
const { id: _ignored, ...rest } = (patch || {});
|
|
319
|
-
// Ensure we never change the id, and merge overrides last
|
|
320
|
-
return {
|
|
321
|
-
...base,
|
|
322
|
-
...rest,
|
|
323
|
-
id: base.id,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
/**
|
|
327
|
-
* Create a tag definition.
|
|
328
|
-
* - `.with(config)` to create configured instances
|
|
329
|
-
* - `.extract(tags)` to extract this tag from a list of tags or a taggable's meta
|
|
330
|
-
*
|
|
331
|
-
* @typeParam TConfig - Configuration type carried by configured tags.
|
|
332
|
-
* @typeParam TEnforceContract - Optional helper type to enforce a contract when tags are used.
|
|
333
|
-
* @param definition - The tag definition (id).
|
|
334
|
-
* @returns A tag object with helpers to configure and extract.
|
|
335
|
-
*/
|
|
336
|
-
function defineTag(definition) {
|
|
337
|
-
const id = definition.id;
|
|
338
|
-
return {
|
|
339
|
-
id,
|
|
340
|
-
with(tagConfig) {
|
|
341
|
-
return {
|
|
342
|
-
id,
|
|
343
|
-
tag: this,
|
|
344
|
-
config: tagConfig,
|
|
345
|
-
};
|
|
346
|
-
},
|
|
347
|
-
extract(target) {
|
|
348
|
-
const tags = Array.isArray(target) ? target : target?.meta?.tags || [];
|
|
349
|
-
for (const candidate of tags) {
|
|
350
|
-
if (typeof candidate === "string")
|
|
351
|
-
continue;
|
|
352
|
-
// Configured instance
|
|
353
|
-
if (candidate.id === id) {
|
|
354
|
-
return candidate;
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
return null;
|
|
358
|
-
},
|
|
359
|
-
};
|
|
360
|
-
}
|
|
3
|
+
exports.isOptional = exports.isTag = exports.isResourceMiddleware = exports.isTaskMiddleware = exports.isHook = exports.isEvent = exports.isResourceWithConfig = exports.isResource = exports.isTask = exports.defineTag = exports.defineOverride = exports.defineResourceMiddleware = exports.defineTaskMiddleware = exports.defineEvent = exports.defineResource = exports.defineHook = exports.defineTask = void 0;
|
|
4
|
+
// Re-export all define functions from their separate files
|
|
5
|
+
var defineTask_1 = require("./definers/defineTask");
|
|
6
|
+
Object.defineProperty(exports, "defineTask", { enumerable: true, get: function () { return defineTask_1.defineTask; } });
|
|
7
|
+
var defineHook_1 = require("./definers/defineHook");
|
|
8
|
+
Object.defineProperty(exports, "defineHook", { enumerable: true, get: function () { return defineHook_1.defineHook; } });
|
|
9
|
+
var defineResource_1 = require("./definers/defineResource");
|
|
10
|
+
Object.defineProperty(exports, "defineResource", { enumerable: true, get: function () { return defineResource_1.defineResource; } });
|
|
11
|
+
var defineEvent_1 = require("./definers/defineEvent");
|
|
12
|
+
Object.defineProperty(exports, "defineEvent", { enumerable: true, get: function () { return defineEvent_1.defineEvent; } });
|
|
13
|
+
var defineTaskMiddleware_1 = require("./definers/defineTaskMiddleware");
|
|
14
|
+
Object.defineProperty(exports, "defineTaskMiddleware", { enumerable: true, get: function () { return defineTaskMiddleware_1.defineTaskMiddleware; } });
|
|
15
|
+
var defineResourceMiddleware_1 = require("./definers/defineResourceMiddleware");
|
|
16
|
+
Object.defineProperty(exports, "defineResourceMiddleware", { enumerable: true, get: function () { return defineResourceMiddleware_1.defineResourceMiddleware; } });
|
|
17
|
+
var defineOverride_1 = require("./definers/defineOverride");
|
|
18
|
+
Object.defineProperty(exports, "defineOverride", { enumerable: true, get: function () { return defineOverride_1.defineOverride; } });
|
|
19
|
+
var defineTag_1 = require("./definers/defineTag");
|
|
20
|
+
Object.defineProperty(exports, "defineTag", { enumerable: true, get: function () { return defineTag_1.defineTag; } });
|
|
21
|
+
// Re-export type guards and utility functions
|
|
22
|
+
var tools_1 = require("./definers/tools");
|
|
23
|
+
Object.defineProperty(exports, "isTask", { enumerable: true, get: function () { return tools_1.isTask; } });
|
|
24
|
+
Object.defineProperty(exports, "isResource", { enumerable: true, get: function () { return tools_1.isResource; } });
|
|
25
|
+
Object.defineProperty(exports, "isResourceWithConfig", { enumerable: true, get: function () { return tools_1.isResourceWithConfig; } });
|
|
26
|
+
Object.defineProperty(exports, "isEvent", { enumerable: true, get: function () { return tools_1.isEvent; } });
|
|
27
|
+
Object.defineProperty(exports, "isHook", { enumerable: true, get: function () { return tools_1.isHook; } });
|
|
28
|
+
Object.defineProperty(exports, "isTaskMiddleware", { enumerable: true, get: function () { return tools_1.isTaskMiddleware; } });
|
|
29
|
+
Object.defineProperty(exports, "isResourceMiddleware", { enumerable: true, get: function () { return tools_1.isResourceMiddleware; } });
|
|
30
|
+
Object.defineProperty(exports, "isTag", { enumerable: true, get: function () { return tools_1.isTag; } });
|
|
31
|
+
Object.defineProperty(exports, "isOptional", { enumerable: true, get: function () { return tools_1.isOptional; } });
|
|
361
32
|
//# sourceMappingURL=define.js.map
|
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":";;;AAAA,2DAA2D;AAC3D,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AACnB,oDAAmD;AAA1C,wGAAA,UAAU,OAAA;AACnB,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AACvB,sDAAqD;AAA5C,0GAAA,WAAW,OAAA;AACpB,wEAAuE;AAA9D,4HAAA,oBAAoB,OAAA;AAC7B,gFAA+E;AAAtE,oIAAA,wBAAwB,OAAA;AACjC,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AACvB,kDAAiD;AAAxC,sGAAA,SAAS,OAAA;AAElB,8CAA8C;AAC9C,0CAU0B;AATxB,+FAAA,MAAM,OAAA;AACN,mGAAA,UAAU,OAAA;AACV,6GAAA,oBAAoB,OAAA;AACpB,gGAAA,OAAO,OAAA;AACP,+FAAA,MAAM,OAAA;AACN,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA;AACpB,8FAAA,KAAK,OAAA;AACL,mGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineEvent = defineEvent;
|
|
4
|
+
const defs_1 = require("../defs");
|
|
5
|
+
const getCallerFile_1 = require("../tools/getCallerFile");
|
|
6
|
+
function defineEvent(config) {
|
|
7
|
+
const callerFilePath = (0, getCallerFile_1.getCallerFile)();
|
|
8
|
+
const eventConfig = config;
|
|
9
|
+
return {
|
|
10
|
+
...eventConfig,
|
|
11
|
+
id: eventConfig.id,
|
|
12
|
+
[defs_1.symbolFilePath]: callerFilePath,
|
|
13
|
+
[defs_1.symbolEvent]: true, // This is a workaround
|
|
14
|
+
tags: eventConfig.tags || [],
|
|
15
|
+
optional() {
|
|
16
|
+
return {
|
|
17
|
+
inner: this,
|
|
18
|
+
[defs_1.symbolOptionalDependency]: true,
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=defineEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineEvent.js","sourceRoot":"","sources":["../../src/definers/defineEvent.ts"],"names":[],"mappings":";;AAUA,kCAkBC;AA5BD,kCAOiB;AACjB,0DAAuD;AAEvD,SAAgB,WAAW,CACzB,MAAkC;IAElC,MAAM,cAAc,GAAG,IAAA,6BAAa,GAAE,CAAC;IACvC,MAAM,WAAW,GAAG,MAAM,CAAC;IAC3B,OAAO;QACL,GAAG,WAAW;QACd,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,CAAC,qBAAc,CAAC,EAAE,cAAc;QAChC,CAAC,kBAAW,CAAC,EAAE,IAAI,EAAE,uBAAuB;QAC5C,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE;QAC5B,QAAQ;YACN,OAAO;gBACL,KAAK,EAAE,IAAI;gBACX,CAAC,+BAAwB,CAAC,EAAE,IAAI;aACQ,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DependencyMapType, IEventDefinition, ITaskMeta, IHook, IHookDefinition } from "../defs";
|
|
2
|
+
/**
|
|
3
|
+
* Define a hook (event listeners).
|
|
4
|
+
* Same shape as task with mandatory `on` and without `middleware`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function defineHook<D extends DependencyMapType = any, TOn extends "*" | IEventDefinition = any, TMeta extends ITaskMeta = any>(hookDef: IHookDefinition<D, TOn, TMeta>): IHook<D, TOn, TMeta>;
|