@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
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { Store } from "../../models/Store";
|
|
2
|
-
import { EventManager } from "../../models/EventManager";
|
|
3
|
-
import {
|
|
4
|
-
defineResource,
|
|
5
|
-
defineTask,
|
|
6
|
-
defineMiddleware,
|
|
7
|
-
defineEvent,
|
|
8
|
-
defineTag,
|
|
9
|
-
} from "../../define";
|
|
10
|
-
import { Logger } from "../../models";
|
|
11
|
-
|
|
12
|
-
describe("Store", () => {
|
|
13
|
-
let eventManager: EventManager;
|
|
14
|
-
let store: Store;
|
|
15
|
-
let logger: Logger;
|
|
16
|
-
|
|
17
|
-
beforeEach(() => {
|
|
18
|
-
eventManager = new EventManager();
|
|
19
|
-
logger = new Logger(eventManager);
|
|
20
|
-
store = new Store(eventManager, logger);
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it("should initialize the store with a root resource", () => {
|
|
24
|
-
const rootResource = defineResource({
|
|
25
|
-
id: "root",
|
|
26
|
-
init: async () => "Root Value",
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
store.initializeStore(rootResource, {});
|
|
30
|
-
|
|
31
|
-
expect(store.root.resource).toBe(rootResource);
|
|
32
|
-
expect(store.resources.has("root")).toBe(true);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
it("should lock the store and prevent modifications", () => {
|
|
36
|
-
store.lock();
|
|
37
|
-
expect(store.isLocked).toBe(true);
|
|
38
|
-
|
|
39
|
-
expect(() => store.checkLock()).toThrow(
|
|
40
|
-
"Cannot modify the Store when it is locked."
|
|
41
|
-
);
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it("should store a task and retrieve it", () => {
|
|
45
|
-
const testTask = defineTask({
|
|
46
|
-
id: "test.task",
|
|
47
|
-
run: async () => "Task executed",
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
store.storeGenericItem(testTask);
|
|
51
|
-
|
|
52
|
-
expect(store.tasks.has("test.task")).toBe(true);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
it("should store a resource and retrieve it", () => {
|
|
56
|
-
const testResource = defineResource({
|
|
57
|
-
id: "test.resource",
|
|
58
|
-
init: async () => "Resource Value",
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
store.storeGenericItem(testResource);
|
|
62
|
-
|
|
63
|
-
expect(store.resources.has("test.resource")).toBe(true);
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
it("should store a middleware and retrieve it", () => {
|
|
67
|
-
const testMiddleware = defineMiddleware({
|
|
68
|
-
id: "test.middleware",
|
|
69
|
-
run: async ({ next }) => {
|
|
70
|
-
return `Middleware: ${await next()}`;
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
store.storeGenericItem(testMiddleware);
|
|
75
|
-
|
|
76
|
-
expect(store.middlewares.has("test.middleware")).toBe(true);
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it("should store an event and retrieve it", () => {
|
|
80
|
-
const testEvent = defineEvent({ id: "test.event" });
|
|
81
|
-
|
|
82
|
-
store.storeGenericItem(testEvent);
|
|
83
|
-
|
|
84
|
-
expect(store.events.has("test.event")).toBe(true);
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
it("should dispose of resources correctly", async () => {
|
|
88
|
-
const disposeFn = jest.fn(async (...args: any[]) => {});
|
|
89
|
-
const testResource = defineResource({
|
|
90
|
-
id: "test.resource",
|
|
91
|
-
dispose: disposeFn,
|
|
92
|
-
init: async () => "Resource Value",
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
store.storeGenericItem(testResource);
|
|
96
|
-
|
|
97
|
-
// Simulate resource initialization
|
|
98
|
-
store.resources.get("test.resource")!.value = "Resource Value";
|
|
99
|
-
store.resources.get("test.resource")!.isInitialized = true;
|
|
100
|
-
|
|
101
|
-
await store.dispose();
|
|
102
|
-
|
|
103
|
-
expect(disposeFn).toHaveBeenCalled();
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
it("should throw an error for duplicate registration", () => {
|
|
107
|
-
const testTask = defineTask({
|
|
108
|
-
id: "duplicate.task",
|
|
109
|
-
run: async () => "Task executed",
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
store.storeGenericItem(testTask);
|
|
113
|
-
|
|
114
|
-
expect(() => store.storeGenericItem(testTask)).toThrow(
|
|
115
|
-
/already registered/i
|
|
116
|
-
);
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
it("should throw an error if you're trying to initialize the store twice", () => {
|
|
120
|
-
const rootResource = defineResource({
|
|
121
|
-
id: "root",
|
|
122
|
-
init: async () => "Root Value",
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
store.initializeStore(rootResource, {});
|
|
126
|
-
|
|
127
|
-
expect(() => store.initializeStore(rootResource, {})).toThrow(
|
|
128
|
-
/Store already initialized/i
|
|
129
|
-
);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it("should access overrides and overrideRequests getters", () => {
|
|
133
|
-
// Test the overrides getter (line 56)
|
|
134
|
-
const overrides = store.overrides;
|
|
135
|
-
expect(overrides).toBeDefined();
|
|
136
|
-
expect(overrides instanceof Map).toBe(true);
|
|
137
|
-
|
|
138
|
-
// Test the overrideRequests getter (line 57)
|
|
139
|
-
const overrideRequests = store.overrideRequests;
|
|
140
|
-
expect(overrideRequests).toBeDefined();
|
|
141
|
-
expect(overrideRequests instanceof Set).toBe(true);
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
it("should call processOverrides method", () => {
|
|
145
|
-
// Test processOverrides method (line 149)
|
|
146
|
-
expect(() => store.processOverrides()).not.toThrow();
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
it("should call getEverywhereMiddlewareForTasks method", () => {
|
|
150
|
-
// Test getEverywhereMiddlewareForTasks method (lines 152-153)
|
|
151
|
-
const result = store.getEverywhereMiddlewareForTasks([]);
|
|
152
|
-
expect(Array.isArray(result)).toBe(true);
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
it("should call getEverywhereMiddlewareForResources method", () => {
|
|
156
|
-
// Test getEverywhereMiddlewareForResources method (lines 156-157)
|
|
157
|
-
const result = store.getEverywhereMiddlewareForResources([]);
|
|
158
|
-
expect(Array.isArray(result)).toBe(true);
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
it("should call storeEventsForAllTasks method", () => {
|
|
162
|
-
// Test storeEventsForAllTasks method (line 165)
|
|
163
|
-
expect(() => store.storeEventsForAllTasks()).not.toThrow();
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
it("should call getDependentNodes method", () => {
|
|
167
|
-
// Test getDependentNodes method (line 169)
|
|
168
|
-
const result = store.getDependentNodes();
|
|
169
|
-
expect(Array.isArray(result)).toBe(true);
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
it("should call getTasksWithTag method", () => {
|
|
173
|
-
const tag = defineTag({
|
|
174
|
-
id: "tags.test",
|
|
175
|
-
});
|
|
176
|
-
const taskTest = defineTask({
|
|
177
|
-
meta: {
|
|
178
|
-
tags: [tag, "test"],
|
|
179
|
-
},
|
|
180
|
-
async run() {
|
|
181
|
-
return "OK";
|
|
182
|
-
},
|
|
183
|
-
});
|
|
184
|
-
const unfindableTask = defineTask({
|
|
185
|
-
run: async () => 1,
|
|
186
|
-
});
|
|
187
|
-
const rootResource = defineResource({
|
|
188
|
-
id: "root",
|
|
189
|
-
register: [taskTest, unfindableTask],
|
|
190
|
-
init: async () => "Root Value",
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
store.initializeStore(rootResource, {});
|
|
194
|
-
const result = store.getTasksWithTag(tag);
|
|
195
|
-
expect(Array.isArray(result)).toBe(true);
|
|
196
|
-
expect(result).toHaveLength(1);
|
|
197
|
-
const result2 = store.getTasksWithTag("test");
|
|
198
|
-
expect(result2).toHaveLength(1);
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it("should call getResourcesWithTag method", () => {
|
|
202
|
-
const tag = defineTag({
|
|
203
|
-
id: "tags.test",
|
|
204
|
-
});
|
|
205
|
-
const resourceTest = defineResource({
|
|
206
|
-
meta: {
|
|
207
|
-
tags: [tag, "test"],
|
|
208
|
-
},
|
|
209
|
-
});
|
|
210
|
-
|
|
211
|
-
const unfindableResource = defineResource({
|
|
212
|
-
init: async () => 1,
|
|
213
|
-
});
|
|
214
|
-
const rootResource = defineResource({
|
|
215
|
-
id: "root",
|
|
216
|
-
register: [resourceTest, unfindableResource],
|
|
217
|
-
init: async () => "Root Value",
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
store.initializeStore(rootResource, {});
|
|
221
|
-
const result = store.getResourcesWithTag(tag);
|
|
222
|
-
expect(Array.isArray(result)).toBe(true);
|
|
223
|
-
expect(result).toHaveLength(1);
|
|
224
|
-
const result2 = store.getResourcesWithTag("test");
|
|
225
|
-
expect(result2).toHaveLength(1);
|
|
226
|
-
});
|
|
227
|
-
});
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { TaskRunner } from "../../models/TaskRunner";
|
|
2
|
-
import { Store } from "../../models/Store";
|
|
3
|
-
import { EventManager } from "../../models/EventManager";
|
|
4
|
-
import { defineTask, defineResource, defineMiddleware } from "../../define";
|
|
5
|
-
import { ITask } from "../../defs";
|
|
6
|
-
import { Logger } from "../../models";
|
|
7
|
-
import { globalEvents } from "../../globals/globalEvents";
|
|
8
|
-
|
|
9
|
-
describe("TaskRunner", () => {
|
|
10
|
-
let store: Store;
|
|
11
|
-
let eventManager: EventManager;
|
|
12
|
-
let taskRunner: TaskRunner;
|
|
13
|
-
let logger: Logger;
|
|
14
|
-
|
|
15
|
-
beforeEach(() => {
|
|
16
|
-
eventManager = new EventManager();
|
|
17
|
-
logger = new Logger(eventManager);
|
|
18
|
-
store = new Store(eventManager, logger);
|
|
19
|
-
taskRunner = new TaskRunner(store, eventManager, logger);
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("should run an task without middleware", async () => {
|
|
23
|
-
const app = defineResource({
|
|
24
|
-
id: "app",
|
|
25
|
-
register: () => [task],
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
const task = defineTask({
|
|
29
|
-
id: "testTask",
|
|
30
|
-
run: async (input: number) => input * 2,
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
store.tasks.set(task.id, {
|
|
34
|
-
task,
|
|
35
|
-
computedDependencies: {},
|
|
36
|
-
isInitialized: false,
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
const result = await taskRunner.run(task, 5);
|
|
40
|
-
expect(result).toBe(10);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("should run an task with middleware", async () => {
|
|
44
|
-
const middleware1 = defineMiddleware({
|
|
45
|
-
id: "middleware1",
|
|
46
|
-
run: async ({ next, task }) => {
|
|
47
|
-
const result = await next(task?.input);
|
|
48
|
-
return result + 1;
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
const middleware2 = defineMiddleware({
|
|
53
|
-
id: "middleware2",
|
|
54
|
-
run: async ({ task, next }, deps, config) => {
|
|
55
|
-
const result = await next(task?.input);
|
|
56
|
-
return result * 2;
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
const task = defineTask({
|
|
61
|
-
id: "testTask",
|
|
62
|
-
middleware: [middleware1, middleware2],
|
|
63
|
-
run: async (input: number) => input + 5,
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
store.tasks.set(task.id, {
|
|
67
|
-
task,
|
|
68
|
-
computedDependencies: {},
|
|
69
|
-
isInitialized: true,
|
|
70
|
-
});
|
|
71
|
-
store.middlewares.set(middleware1.id, {
|
|
72
|
-
middleware: middleware1,
|
|
73
|
-
computedDependencies: {},
|
|
74
|
-
});
|
|
75
|
-
store.middlewares.set(middleware2.id, {
|
|
76
|
-
middleware: middleware2,
|
|
77
|
-
computedDependencies: {},
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
const result = await taskRunner.run(task, 5);
|
|
81
|
-
expect(result).toBe(21); // ((5 + 5) * 2) + 1
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
it("should emit events during task execution", async () => {
|
|
85
|
-
const task = defineTask({
|
|
86
|
-
id: "testTask",
|
|
87
|
-
run: async (input: number) => input * 2,
|
|
88
|
-
});
|
|
89
|
-
|
|
90
|
-
store.tasks.set(task.id, {
|
|
91
|
-
task,
|
|
92
|
-
computedDependencies: {},
|
|
93
|
-
isInitialized: false,
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
const beforeRunSpy = jest.fn();
|
|
97
|
-
const afterRunSpy = jest.fn();
|
|
98
|
-
|
|
99
|
-
eventManager.addListener(task.events.beforeRun, beforeRunSpy);
|
|
100
|
-
eventManager.addListener(task.events.afterRun, afterRunSpy);
|
|
101
|
-
|
|
102
|
-
await taskRunner.run(task, 5);
|
|
103
|
-
|
|
104
|
-
expect(beforeRunSpy).toHaveBeenCalledWith(
|
|
105
|
-
expect.objectContaining({ data: { input: 5 } })
|
|
106
|
-
);
|
|
107
|
-
expect(afterRunSpy).toHaveBeenCalledWith(
|
|
108
|
-
expect.objectContaining({
|
|
109
|
-
data: expect.objectContaining({
|
|
110
|
-
input: 5,
|
|
111
|
-
output: 10,
|
|
112
|
-
setOutput: expect.any(Function),
|
|
113
|
-
}),
|
|
114
|
-
})
|
|
115
|
-
);
|
|
116
|
-
|
|
117
|
-
// Verify that the output getter actually works
|
|
118
|
-
const afterRunCall = afterRunSpy.mock.calls[0][0];
|
|
119
|
-
expect(afterRunCall.data.output).toBe(10);
|
|
120
|
-
|
|
121
|
-
// Also test the setOutput function to cover line 71
|
|
122
|
-
afterRunCall.data.setOutput(20);
|
|
123
|
-
expect(afterRunCall.data.output).toBe(20);
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it("should handle errors and emit onError event", async () => {
|
|
127
|
-
const error = new Error("Test error");
|
|
128
|
-
const task = defineTask({
|
|
129
|
-
id: "testTask",
|
|
130
|
-
run: async () => {
|
|
131
|
-
throw error;
|
|
132
|
-
},
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
store.tasks.set(task.id, {
|
|
136
|
-
task,
|
|
137
|
-
computedDependencies: {},
|
|
138
|
-
isInitialized: false,
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
const onErrorSpy = jest.fn();
|
|
142
|
-
eventManager.addListener(task.events.onError, onErrorSpy);
|
|
143
|
-
|
|
144
|
-
expect(taskRunner.run(task, undefined)).rejects.toThrow(error);
|
|
145
|
-
|
|
146
|
-
// since it quickly throws and is not run asnc we might need to wait a bit
|
|
147
|
-
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
148
|
-
|
|
149
|
-
expect(onErrorSpy).toHaveBeenCalledWith(
|
|
150
|
-
expect.objectContaining({
|
|
151
|
-
data: { error, suppress: expect.any(Function) },
|
|
152
|
-
})
|
|
153
|
-
);
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
it("should handle error suppression", async () => {
|
|
157
|
-
const error = new Error("Test error");
|
|
158
|
-
const onErrorSpy = jest.fn().mockImplementation((event) => {
|
|
159
|
-
// Call suppress to cover line 113
|
|
160
|
-
event.data.suppress();
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
const task = defineTask({
|
|
164
|
-
id: "testTask",
|
|
165
|
-
run: async () => {
|
|
166
|
-
throw error;
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
store.tasks.set(task.id, {
|
|
171
|
-
task,
|
|
172
|
-
computedDependencies: {},
|
|
173
|
-
isInitialized: false,
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
eventManager.addListener(task.events.onError, onErrorSpy);
|
|
177
|
-
|
|
178
|
-
// The error should be suppressed, so no exception should be thrown
|
|
179
|
-
const result = await taskRunner.run(task, undefined);
|
|
180
|
-
|
|
181
|
-
expect(result).toBeUndefined();
|
|
182
|
-
expect(onErrorSpy).toHaveBeenCalledWith(
|
|
183
|
-
expect.objectContaining({
|
|
184
|
-
data: expect.objectContaining({
|
|
185
|
-
error,
|
|
186
|
-
suppress: expect.any(Function),
|
|
187
|
-
}),
|
|
188
|
-
})
|
|
189
|
-
);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
it("should handle global events and access output getter", async () => {
|
|
193
|
-
const globalAfterRunSpy = jest.fn();
|
|
194
|
-
|
|
195
|
-
const task = defineTask({
|
|
196
|
-
id: "testTask",
|
|
197
|
-
run: async (input: number) => input * 2,
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
store.tasks.set(task.id, {
|
|
201
|
-
task,
|
|
202
|
-
computedDependencies: {},
|
|
203
|
-
isInitialized: false,
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
// Listen to global afterRun event
|
|
207
|
-
eventManager.addListener(globalEvents.tasks.afterRun, globalAfterRunSpy);
|
|
208
|
-
|
|
209
|
-
await taskRunner.run(task, 5);
|
|
210
|
-
|
|
211
|
-
expect(globalAfterRunSpy).toHaveBeenCalledTimes(1);
|
|
212
|
-
|
|
213
|
-
// Access the output property to trigger the getter
|
|
214
|
-
const globalCall = globalAfterRunSpy.mock.calls[0][0];
|
|
215
|
-
expect(globalCall.data.output).toBe(10);
|
|
216
|
-
|
|
217
|
-
// Test setOutput function as well
|
|
218
|
-
globalCall.data.setOutput(25);
|
|
219
|
-
expect(globalCall.data.output).toBe(25);
|
|
220
|
-
});
|
|
221
|
-
});
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { definitions, task, resource, middleware, override } from "..";
|
|
2
|
-
|
|
3
|
-
describe("override() helper", () => {
|
|
4
|
-
it("should preserve id and override run for tasks", async () => {
|
|
5
|
-
const base = task({
|
|
6
|
-
id: "test.task",
|
|
7
|
-
run: async () => "base",
|
|
8
|
-
});
|
|
9
|
-
|
|
10
|
-
const changed = override(base, {
|
|
11
|
-
run: async () => "changed",
|
|
12
|
-
meta: { title: "Updated" },
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
expect(changed).not.toBe(base);
|
|
16
|
-
expect(changed.id).toBe(base.id);
|
|
17
|
-
expect(await base.run(undefined as any, {} as any)).toBe("base");
|
|
18
|
-
expect(await changed.run(undefined as any, {} as any)).toBe("changed");
|
|
19
|
-
expect(changed.meta?.title).toBe("Updated");
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("should preserve id and override init for resources", async () => {
|
|
23
|
-
const base = resource({
|
|
24
|
-
id: "test.resource",
|
|
25
|
-
init: async () => 1,
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
const changed = override(base, {
|
|
29
|
-
init: async () => 2,
|
|
30
|
-
meta: { description: "Updated" },
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
expect(changed).not.toBe(base);
|
|
34
|
-
expect(changed.id).toBe(base.id);
|
|
35
|
-
// Call the init functions directly (without runner) to validate override
|
|
36
|
-
// Signatures: init(config, deps, ctx)
|
|
37
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
38
|
-
const v1 = await base.init!(undefined as any, {} as any, undefined as any);
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
40
|
-
const v2 = await changed.init!(
|
|
41
|
-
undefined as any,
|
|
42
|
-
{} as any,
|
|
43
|
-
undefined as any
|
|
44
|
-
);
|
|
45
|
-
expect(v1).toBe(1);
|
|
46
|
-
expect(v2).toBe(2);
|
|
47
|
-
expect(changed.meta?.description).toBe("Updated");
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("should preserve id and override run for middleware", async () => {
|
|
51
|
-
const mw = middleware({
|
|
52
|
-
id: "test.middleware",
|
|
53
|
-
run: async ({ next }) => {
|
|
54
|
-
return next();
|
|
55
|
-
},
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
const changed = override(mw, {
|
|
59
|
-
run: async ({ task, next }) => {
|
|
60
|
-
const result = await next(task?.input as any);
|
|
61
|
-
return { wrapped: result } as any;
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
expect(changed).not.toBe(mw);
|
|
66
|
-
expect(changed.id).toBe(mw.id);
|
|
67
|
-
|
|
68
|
-
const input = {
|
|
69
|
-
task: { definition: undefined as any, input: 123 },
|
|
70
|
-
next: async () => 456,
|
|
71
|
-
} as definitions.IMiddlewareExecutionInput<any, any>;
|
|
72
|
-
|
|
73
|
-
const baseResult = await mw.run(input, {} as any, undefined as any);
|
|
74
|
-
const changedResult = await changed.run(input, {} as any, undefined as any);
|
|
75
|
-
expect(baseResult).toBe(456);
|
|
76
|
-
expect(changedResult).toEqual({ wrapped: 456 });
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
it("should be type-safe: cannot override id on task/resource/middleware", () => {
|
|
80
|
-
const t = task({ id: "tt", run: async () => undefined });
|
|
81
|
-
const r = resource({ id: "rr", init: async () => undefined });
|
|
82
|
-
const m = middleware({ id: "mm", run: async ({ next }) => next() });
|
|
83
|
-
|
|
84
|
-
// @ts-expect-error id cannot be overridden
|
|
85
|
-
override(t, { id: "new" });
|
|
86
|
-
|
|
87
|
-
// @ts-expect-error id cannot be overridden
|
|
88
|
-
override(r, { id: "new" });
|
|
89
|
-
|
|
90
|
-
// @ts-expect-error id cannot be overridden
|
|
91
|
-
override(m, { id: "new" });
|
|
92
|
-
|
|
93
|
-
expect(true).toBe(true);
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it("should handle undefined patch (robustness)", () => {
|
|
97
|
-
const base = task({ id: "robust.task", run: async () => 1 });
|
|
98
|
-
const changed = (override as any)(base, undefined);
|
|
99
|
-
|
|
100
|
-
expect(changed).not.toBe(base);
|
|
101
|
-
expect(changed.id).toBe(base.id);
|
|
102
|
-
expect(changed.run).toBe(base.run);
|
|
103
|
-
});
|
|
104
|
-
});
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { defineResource, defineTask } from "../../define";
|
|
2
|
-
import { bResource } from "./b.resource";
|
|
3
|
-
|
|
4
|
-
export const aResource = defineResource({
|
|
5
|
-
id: "a.resource",
|
|
6
|
-
dependencies: {
|
|
7
|
-
b: bResource,
|
|
8
|
-
},
|
|
9
|
-
async init(_, { b }) {
|
|
10
|
-
const result: string = b;
|
|
11
|
-
// @ts-expect-error
|
|
12
|
-
const result2: number = b;
|
|
13
|
-
return `A depends on ${b}`;
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
export const aTask = defineTask({
|
|
18
|
-
id: "a.task",
|
|
19
|
-
dependencies: {
|
|
20
|
-
a: aResource,
|
|
21
|
-
},
|
|
22
|
-
async run(_, { a }) {
|
|
23
|
-
return `Task A executed with dependency: ${a}`;
|
|
24
|
-
},
|
|
25
|
-
});
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { defineResource } from "../../define";
|
|
2
|
-
import { cResource } from "./c.resource";
|
|
3
|
-
|
|
4
|
-
export const bResource = defineResource({
|
|
5
|
-
id: "b.resource",
|
|
6
|
-
dependencies: {
|
|
7
|
-
c: cResource,
|
|
8
|
-
},
|
|
9
|
-
async init(_, { c }) {
|
|
10
|
-
const result: string = c;
|
|
11
|
-
// @ts-expect-error
|
|
12
|
-
const result2: number = c;
|
|
13
|
-
return `B depends on ${c}`;
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
export const b1Resource = defineResource({
|
|
17
|
-
id: "b.resource",
|
|
18
|
-
dependencies: {
|
|
19
|
-
c: cResource,
|
|
20
|
-
},
|
|
21
|
-
async init(_, { c }) {
|
|
22
|
-
return 123;
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
export const b2Resource = defineResource({
|
|
26
|
-
id: "b.resource",
|
|
27
|
-
dependencies: {
|
|
28
|
-
c: cResource,
|
|
29
|
-
},
|
|
30
|
-
async init(_, { c }) {
|
|
31
|
-
return true;
|
|
32
|
-
},
|
|
33
|
-
});
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { defineResource } from "../../define";
|
|
2
|
-
import { IResource } from "../../defs";
|
|
3
|
-
import { aResource, aTask } from "./a.resource";
|
|
4
|
-
import { b1Resource, b2Resource } from "./b.resource";
|
|
5
|
-
|
|
6
|
-
const value = Math.random() > 0.5 ? b1Resource : b2Resource;
|
|
7
|
-
|
|
8
|
-
export const cResource = defineResource({
|
|
9
|
-
id: "c.resource",
|
|
10
|
-
dependencies: {
|
|
11
|
-
aTask,
|
|
12
|
-
customResource: value,
|
|
13
|
-
},
|
|
14
|
-
async init(_, { aTask, customResource }) {
|
|
15
|
-
const result: string = await aTask(); // Still benefits of autocompletion
|
|
16
|
-
return `C depends on ${result}`;
|
|
17
|
-
},
|
|
18
|
-
}) as IResource<void, Promise<string>>; // This is the key change.
|