rhachet 1.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/LICENSE +21 -0
- package/dist/__nonpublished_modules__/file-fns/src/getFile.d.ts +6 -0
- package/dist/__nonpublished_modules__/file-fns/src/getFile.js +14 -0
- package/dist/__nonpublished_modules__/file-fns/src/getFile.js.map +1 -0
- package/dist/__test_assets__/directory.d.ts +1 -0
- package/dist/__test_assets__/directory.js +5 -0
- package/dist/__test_assets__/directory.js.map +1 -0
- package/dist/__test_assets__/genContextLogTrail.d.ts +2 -0
- package/dist/__test_assets__/genContextLogTrail.js +12 -0
- package/dist/__test_assets__/genContextLogTrail.js.map +1 -0
- package/dist/__test_assets__/genContextStitchTrail.d.ts +2 -0
- package/dist/__test_assets__/genContextStitchTrail.js +8 -0
- package/dist/__test_assets__/genContextStitchTrail.js.map +1 -0
- package/dist/__test_assets__/getContextOpenAI.d.ts +2 -0
- package/dist/__test_assets__/getContextOpenAI.js +18 -0
- package/dist/__test_assets__/getContextOpenAI.js.map +1 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.d.ts +14 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.js +23 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeFileRead.js.map +1 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.d.ts +16 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.js +29 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeFileWrite.js.map +1 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.d.ts +15 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.js +97 -0
- package/dist/__test_assets__/stitchers/genStitcherCodeReviewImagine.js.map +1 -0
- package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.d.ts +13 -0
- package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.js +33 -0
- package/dist/__test_assets__/stitchers/stitcherCodeDiffImagine.js.map +1 -0
- package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.d.ts +13 -0
- package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.js +45 -0
- package/dist/__test_assets__/stitchers/stitcherFanoutRandomSum.js.map +1 -0
- package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.d.ts +29 -0
- package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.js +76 -0
- package/dist/__test_assets__/stitchers/stitcherFanoutSubroutes.js.map +1 -0
- package/dist/__test_assets__/threads/codeArtist.d.ts +6 -0
- package/dist/__test_assets__/threads/codeArtist.js +26 -0
- package/dist/__test_assets__/threads/codeArtist.js.map +1 -0
- package/dist/__test_assets__/threads/codeCritic.d.ts +6 -0
- package/dist/__test_assets__/threads/codeCritic.js +21 -0
- package/dist/__test_assets__/threads/codeCritic.js.map +1 -0
- package/dist/__test_assets__/threads/director.d.ts +6 -0
- package/dist/__test_assets__/threads/director.js +14 -0
- package/dist/__test_assets__/threads/director.js.map +1 -0
- package/dist/contract/sdk.d.ts +8 -0
- package/dist/contract/sdk.js +33 -0
- package/dist/contract/sdk.js.map +1 -0
- package/dist/domain/objects/Stitch.d.ts +42 -0
- package/dist/domain/objects/Stitch.js +9 -0
- package/dist/domain/objects/Stitch.js.map +1 -0
- package/dist/domain/objects/StitchChoice.d.ts +30 -0
- package/dist/domain/objects/StitchChoice.js +8 -0
- package/dist/domain/objects/StitchChoice.js.map +1 -0
- package/dist/domain/objects/StitchCycle.d.ts +44 -0
- package/dist/domain/objects/StitchCycle.js +8 -0
- package/dist/domain/objects/StitchCycle.js.map +1 -0
- package/dist/domain/objects/StitchFanout.d.ts +35 -0
- package/dist/domain/objects/StitchFanout.js +8 -0
- package/dist/domain/objects/StitchFanout.js.map +1 -0
- package/dist/domain/objects/StitchRoute.d.ts +22 -0
- package/dist/domain/objects/StitchRoute.js +8 -0
- package/dist/domain/objects/StitchRoute.js.map +1 -0
- package/dist/domain/objects/StitchSetEvent.d.ts +23 -0
- package/dist/domain/objects/StitchSetEvent.js +8 -0
- package/dist/domain/objects/StitchSetEvent.js.map +1 -0
- package/dist/domain/objects/StitchStep.d.ts +55 -0
- package/dist/domain/objects/StitchStep.js +11 -0
- package/dist/domain/objects/StitchStep.js.map +1 -0
- package/dist/domain/objects/StitchTrail.d.ts +26 -0
- package/dist/domain/objects/StitchTrail.js +19 -0
- package/dist/domain/objects/StitchTrail.js.map +1 -0
- package/dist/domain/objects/Stitcher.d.ts +105 -0
- package/dist/domain/objects/Stitcher.js +49 -0
- package/dist/domain/objects/Stitcher.js.map +1 -0
- package/dist/domain/objects/Stitcher.test.d.ts +1 -0
- package/dist/domain/objects/Stitcher.test.js +78 -0
- package/dist/domain/objects/Stitcher.test.js.map +1 -0
- package/dist/domain/objects/Thread.d.ts +31 -0
- package/dist/domain/objects/Thread.js +11 -0
- package/dist/domain/objects/Thread.js.map +1 -0
- package/dist/domain/objects/Threads.d.ts +56 -0
- package/dist/domain/objects/Threads.js +26 -0
- package/dist/domain/objects/Threads.js.map +1 -0
- package/dist/domain/objects/Weave.d.ts +0 -0
- package/dist/domain/objects/Weave.js +2 -0
- package/dist/domain/objects/Weave.js.map +1 -0
- package/dist/domain/objects/Weaver.d.ts +5 -0
- package/dist/domain/objects/Weaver.js +7 -0
- package/dist/domain/objects/Weaver.js.map +1 -0
- package/dist/domain/objects/index.d.ts +11 -0
- package/dist/domain/objects/index.js +30 -0
- package/dist/domain/objects/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/logic/stitch/adapters/imagineViaOpenAI.d.ts +13 -0
- package/dist/logic/stitch/adapters/imagineViaOpenAI.js +36 -0
- package/dist/logic/stitch/adapters/imagineViaOpenAI.js.map +1 -0
- package/dist/logic/stitch/enstitch.d.ts +27 -0
- package/dist/logic/stitch/enstitch.js +97 -0
- package/dist/logic/stitch/enstitch.js.map +1 -0
- package/dist/logic/stitch/enstitch.test.d.ts +1 -0
- package/dist/logic/stitch/enstitch.test.js +87 -0
- package/dist/logic/stitch/enstitch.test.js.map +1 -0
- package/dist/logic/stitch/invokeImagineStitcher.d.ts +10 -0
- package/dist/logic/stitch/invokeImagineStitcher.integration.test.d.ts +1 -0
- package/dist/logic/stitch/invokeImagineStitcher.integration.test.js +193 -0
- package/dist/logic/stitch/invokeImagineStitcher.integration.test.js.map +1 -0
- package/dist/logic/stitch/invokeImagineStitcher.js +23 -0
- package/dist/logic/stitch/invokeImagineStitcher.js.map +1 -0
- package/dist/logic/stitch/withStitchTrail.d.ts +16 -0
- package/dist/logic/stitch/withStitchTrail.js +40 -0
- package/dist/logic/stitch/withStitchTrail.js.map +1 -0
- package/dist/logic/thread/enroleThread.d.ts +4 -0
- package/dist/logic/thread/enroleThread.js +6 -0
- package/dist/logic/thread/enroleThread.js.map +1 -0
- package/dist/logic/thread/genThread.d.ts +7 -0
- package/dist/logic/thread/genThread.js +10 -0
- package/dist/logic/thread/genThread.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.d.ts +17 -0
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.js +3 -0
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.d.ts +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js +67 -0
- package/dist/logic/weave/compose/GStitcherInferredFromChoice.generic.test.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.d.ts +18 -0
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.js +3 -0
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.d.ts +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js +132 -0
- package/dist/logic/weave/compose/GStitcherInferredFromCycle.generic.test.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.d.ts +23 -0
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.js +3 -0
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.d.ts +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js +74 -0
- package/dist/logic/weave/compose/GStitcherInferredFromFanout.generic.test.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.d.ts +24 -0
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.js +3 -0
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.js.map +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.d.ts +1 -0
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js +190 -0
- package/dist/logic/weave/compose/GStitcherInferredFromRoute.generic.test.js.map +1 -0
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.d.ts +36 -0
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.js +3 -0
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.js.map +1 -0
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.d.ts +1 -0
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.js +29 -0
- package/dist/logic/weave/compose/ProcedureContextMerged.generic.test.js.map +1 -0
- package/dist/logic/weave/compose/ThreadsMerged.generic.d.ts +65 -0
- package/dist/logic/weave/compose/ThreadsMerged.generic.js +3 -0
- package/dist/logic/weave/compose/ThreadsMerged.generic.js.map +1 -0
- package/dist/logic/weave/compose/ThreadsMerged.generic.test.d.ts +1 -0
- package/dist/logic/weave/compose/ThreadsMerged.generic.test.js +420 -0
- package/dist/logic/weave/compose/ThreadsMerged.generic.test.js.map +1 -0
- package/dist/logic/weave/compose/asStitcher.d.ts +12 -0
- package/dist/logic/weave/compose/asStitcher.js +15 -0
- package/dist/logic/weave/compose/asStitcher.js.map +1 -0
- package/dist/logic/weave/compose/asStitcher.test.d.ts +1 -0
- package/dist/logic/weave/compose/asStitcher.test.js +95 -0
- package/dist/logic/weave/compose/asStitcher.test.js.map +1 -0
- package/dist/logic/weave/compose/asStitcherFlat.d.ts +10 -0
- package/dist/logic/weave/compose/asStitcherFlat.js +13 -0
- package/dist/logic/weave/compose/asStitcherFlat.js.map +1 -0
- package/dist/logic/weave/compose/asStitcherFlat.test.d.ts +1 -0
- package/dist/logic/weave/compose/asStitcherFlat.test.js +96 -0
- package/dist/logic/weave/compose/asStitcherFlat.test.js.map +1 -0
- package/dist/logic/weave/compose/genStitchChoice.d.ts +22 -0
- package/dist/logic/weave/compose/genStitchChoice.js +23 -0
- package/dist/logic/weave/compose/genStitchChoice.js.map +1 -0
- package/dist/logic/weave/compose/genStitchChoice.test.d.ts +1 -0
- package/dist/logic/weave/compose/genStitchChoice.test.js +200 -0
- package/dist/logic/weave/compose/genStitchChoice.test.js.map +1 -0
- package/dist/logic/weave/compose/genStitchCycle.d.ts +28 -0
- package/dist/logic/weave/compose/genStitchCycle.js +30 -0
- package/dist/logic/weave/compose/genStitchCycle.js.map +1 -0
- package/dist/logic/weave/compose/genStitchCycle.test.d.ts +1 -0
- package/dist/logic/weave/compose/genStitchCycle.test.js +152 -0
- package/dist/logic/weave/compose/genStitchCycle.test.js.map +1 -0
- package/dist/logic/weave/compose/genStitchFanout.d.ts +17 -0
- package/dist/logic/weave/compose/genStitchFanout.js +21 -0
- package/dist/logic/weave/compose/genStitchFanout.js.map +1 -0
- package/dist/logic/weave/compose/genStitchFanout.test.d.ts +1 -0
- package/dist/logic/weave/compose/genStitchFanout.test.js +79 -0
- package/dist/logic/weave/compose/genStitchFanout.test.js.map +1 -0
- package/dist/logic/weave/compose/genStitchRoute.d.ts +15 -0
- package/dist/logic/weave/compose/genStitchRoute.js +20 -0
- package/dist/logic/weave/compose/genStitchRoute.js.map +1 -0
- package/dist/logic/weave/compose/genStitchRoute.test.d.ts +1 -0
- package/dist/logic/weave/compose/genStitchRoute.test.js +120 -0
- package/dist/logic/weave/compose/genStitchRoute.test.js.map +1 -0
- package/dist/logic/weave/enweave.d.ts +0 -0
- package/dist/logic/weave/enweave.js +2 -0
- package/dist/logic/weave/enweave.js.map +1 -0
- package/dist/logic/weave/enweaveAllStitchers.d.ts +0 -0
- package/dist/logic/weave/enweaveAllStitchers.js +2 -0
- package/dist/logic/weave/enweaveAllStitchers.js.map +1 -0
- package/dist/logic/weave/enweaveOneChoice.d.ts +14 -0
- package/dist/logic/weave/enweaveOneChoice.js +48 -0
- package/dist/logic/weave/enweaveOneChoice.js.map +1 -0
- package/dist/logic/weave/enweaveOneChoice.test.d.ts +1 -0
- package/dist/logic/weave/enweaveOneChoice.test.js +181 -0
- package/dist/logic/weave/enweaveOneChoice.test.js.map +1 -0
- package/dist/logic/weave/enweaveOneCycle.d.ts +19 -0
- package/dist/logic/weave/enweaveOneCycle.js +98 -0
- package/dist/logic/weave/enweaveOneCycle.js.map +1 -0
- package/dist/logic/weave/enweaveOneCycle.test.d.ts +1 -0
- package/dist/logic/weave/enweaveOneCycle.test.js +180 -0
- package/dist/logic/weave/enweaveOneCycle.test.js.map +1 -0
- package/dist/logic/weave/enweaveOneFanout.d.ts +12 -0
- package/dist/logic/weave/enweaveOneFanout.integration.test.d.ts +1 -0
- package/dist/logic/weave/enweaveOneFanout.integration.test.js +166 -0
- package/dist/logic/weave/enweaveOneFanout.integration.test.js.map +1 -0
- package/dist/logic/weave/enweaveOneFanout.js +37 -0
- package/dist/logic/weave/enweaveOneFanout.js.map +1 -0
- package/dist/logic/weave/enweaveOneRoute.d.ts +12 -0
- package/dist/logic/weave/enweaveOneRoute.integration.test.d.ts +1 -0
- package/dist/logic/weave/enweaveOneRoute.integration.test.js +159 -0
- package/dist/logic/weave/enweaveOneRoute.integration.test.js.map +1 -0
- package/dist/logic/weave/enweaveOneRoute.js +33 -0
- package/dist/logic/weave/enweaveOneRoute.js.map +1 -0
- package/dist/logic/weave/enweaveOneStitcher.d.ts +11 -0
- package/dist/logic/weave/enweaveOneStitcher.integration.test.d.ts +2 -0
- package/dist/logic/weave/enweaveOneStitcher.integration.test.js +258 -0
- package/dist/logic/weave/enweaveOneStitcher.integration.test.js.map +1 -0
- package/dist/logic/weave/enweaveOneStitcher.js +42 -0
- package/dist/logic/weave/enweaveOneStitcher.js.map +1 -0
- package/package.json +88 -0
- package/readme.md +61 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Empty } from 'type-fns';
|
|
2
|
+
import { GStitcher, Stitcher } from '../../../domain/objects/Stitcher';
|
|
3
|
+
import { Thread } from '../../../domain/objects/Thread';
|
|
4
|
+
import { Threads } from '../../../domain/objects/Threads';
|
|
5
|
+
/**
|
|
6
|
+
* .what = extracts the context (excluding `role`) from a Thread
|
|
7
|
+
* .why = isolates the business-relevant part of a thread's context
|
|
8
|
+
* .fallback = `Empty` if no keys besides `role`
|
|
9
|
+
*/
|
|
10
|
+
type ThreadContext<T> = T extends Thread<infer C> ? Omit<C, 'role'> extends infer R ? keyof R extends never ? Empty : R : never : never;
|
|
11
|
+
/**
|
|
12
|
+
* .what = merges two thread context objects safely
|
|
13
|
+
* .why = avoids `Empty` accidentally widening to `any`
|
|
14
|
+
*/
|
|
15
|
+
type MergeThreadContexts<A, B> = [A] extends [Empty] ? B : [B] extends [Empty] ? A : A & B;
|
|
16
|
+
/**
|
|
17
|
+
* .what = merges two thread maps (e.g., from Threads<...>)
|
|
18
|
+
* .why = produces a new thread map where overlapping roles have merged context
|
|
19
|
+
*/
|
|
20
|
+
type MergeTwoThreadMaps<A extends Record<string, Thread<any>>, B extends Record<string, Thread<any>>> = {
|
|
21
|
+
[K in keyof A | keyof B]: K extends keyof A ? K extends keyof B ? Thread<{
|
|
22
|
+
role: K;
|
|
23
|
+
} & MergeThreadContexts<ThreadContext<A[K]>, ThreadContext<B[K]>>> : A[K] : K extends keyof B ? B[K] : never;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* .what = recursively merges a list of thread maps
|
|
27
|
+
* .why = folds the list down left-to-right
|
|
28
|
+
*/
|
|
29
|
+
type MergeThreadList<T extends readonly Record<string, Thread<any>>[]> = T extends readonly [infer Head, ...infer Tail] ? Head extends Record<string, Thread<any>> ? Tail extends readonly Record<string, Thread<any>>[] ? MergeTwoThreadMaps<Head, MergeThreadList<Tail>> : Head : never : {};
|
|
30
|
+
/**
|
|
31
|
+
* .what = merges threads together safely
|
|
32
|
+
* .cases =
|
|
33
|
+
* - example.1
|
|
34
|
+
* - input
|
|
35
|
+
* ```ts
|
|
36
|
+
* type T1 = Threads<{ artist: Empty }>;
|
|
37
|
+
* type T2 = Threads<{ artist: { skills: string[] }, director: Empty }>;
|
|
38
|
+
* type T3 = Threads<{ director: { vision: string }, judge: Empty }>;
|
|
39
|
+
* ```
|
|
40
|
+
* - output
|
|
41
|
+
* ```ts
|
|
42
|
+
* type Merged = ThreadsMerged<[T1, T2, T3]>;
|
|
43
|
+
* // => Threads<{
|
|
44
|
+
* // artist: { skills: string[] };
|
|
45
|
+
* // director: { vision: string };
|
|
46
|
+
* // judge: Empty;
|
|
47
|
+
* // }>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export type ThreadsMerged<TList extends readonly [Threads<any, 'single'>, ...Threads<any, 'single'>[]]> = Threads<{
|
|
51
|
+
[K in keyof MergeThreadList<TList> & string]: ThreadContext<MergeThreadList<TList>[K]>;
|
|
52
|
+
}, 'single'>;
|
|
53
|
+
/**
|
|
54
|
+
* .what = enables [...spread, plus] composition of threads tuple, pre merge
|
|
55
|
+
*/
|
|
56
|
+
export type ThreadsSpread<T extends readonly [Stitcher<GStitcher>, ...Stitcher<GStitcher>[]]> = T extends readonly [
|
|
57
|
+
infer A extends Stitcher<GStitcher>,
|
|
58
|
+
...infer R extends Stitcher<GStitcher>[]
|
|
59
|
+
] ? [
|
|
60
|
+
A extends Stitcher<infer GA> ? GA['threads'] : never,
|
|
61
|
+
...{
|
|
62
|
+
[K in keyof R]: R[K] extends Stitcher<infer GR> ? GR['threads'] : never;
|
|
63
|
+
}
|
|
64
|
+
] : never;
|
|
65
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadsMerged.generic.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/ThreadsMerged.generic.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_fns_1 = require("test-fns");
|
|
4
|
+
const Thread_1 = require("../../../domain/objects/Thread");
|
|
5
|
+
const genThread_1 = require("../../thread/genThread");
|
|
6
|
+
describe('ThreadsMerged', () => {
|
|
7
|
+
const artistEmpty = new Thread_1.Thread({
|
|
8
|
+
context: { role: 'artist' },
|
|
9
|
+
stitches: [],
|
|
10
|
+
});
|
|
11
|
+
const criticEmpty = new Thread_1.Thread({
|
|
12
|
+
context: { role: 'critic' },
|
|
13
|
+
stitches: [],
|
|
14
|
+
});
|
|
15
|
+
const directorEmpty = new Thread_1.Thread({
|
|
16
|
+
context: { role: 'director' },
|
|
17
|
+
stitches: [],
|
|
18
|
+
});
|
|
19
|
+
const judgeEmpty = new Thread_1.Thread({
|
|
20
|
+
context: { role: 'judge' },
|
|
21
|
+
stitches: [],
|
|
22
|
+
});
|
|
23
|
+
const directorWithVision = new Thread_1.Thread({
|
|
24
|
+
context: {
|
|
25
|
+
role: 'director',
|
|
26
|
+
vision: 'denser habitats -> more nature',
|
|
27
|
+
},
|
|
28
|
+
stitches: [],
|
|
29
|
+
});
|
|
30
|
+
const artistWithSkills = new Thread_1.Thread({
|
|
31
|
+
context: { role: 'artist', skills: ['code:diff:conflictMarkers'] },
|
|
32
|
+
stitches: [],
|
|
33
|
+
});
|
|
34
|
+
(0, test_fns_1.given)('threads with the same exact role.names & role.contexts', () => {
|
|
35
|
+
const threadsA = {
|
|
36
|
+
artist: artistEmpty,
|
|
37
|
+
director: directorEmpty,
|
|
38
|
+
};
|
|
39
|
+
const threadsB = {
|
|
40
|
+
artist: artistEmpty,
|
|
41
|
+
director: directorEmpty,
|
|
42
|
+
};
|
|
43
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
44
|
+
const threadsMerged = {
|
|
45
|
+
artist: artistEmpty,
|
|
46
|
+
director: directorEmpty,
|
|
47
|
+
};
|
|
48
|
+
expect(threadsMerged);
|
|
49
|
+
});
|
|
50
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
51
|
+
// @ts-expect-error: Property 'director' is missing in type '{ artist: Thread<ThreadContextRole<"artist">>; }' but required in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
52
|
+
const threadsMerged = {
|
|
53
|
+
artist: artistEmpty,
|
|
54
|
+
};
|
|
55
|
+
expect(threadsMerged);
|
|
56
|
+
});
|
|
57
|
+
(0, test_fns_1.then)('they should complain at incorrect inputs', () => {
|
|
58
|
+
const threadsMerged = {
|
|
59
|
+
artist: artistEmpty,
|
|
60
|
+
// @ts-expect-error: Type 'Thread<ThreadContextRole<"artist">>' is not assignable to type 'Thread<ThreadContextRole<"director">>'.
|
|
61
|
+
director: artistEmpty,
|
|
62
|
+
};
|
|
63
|
+
expect(threadsMerged);
|
|
64
|
+
});
|
|
65
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
66
|
+
const threadsMerged = {
|
|
67
|
+
artist: artistEmpty,
|
|
68
|
+
director: directorEmpty,
|
|
69
|
+
// @ts-expect-error: 'critic' does not exist in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
70
|
+
critic: criticEmpty,
|
|
71
|
+
};
|
|
72
|
+
expect(threadsMerged);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
(0, test_fns_1.given)('threads with different roles, one is a superset', () => {
|
|
76
|
+
const threadsA = {
|
|
77
|
+
artist: artistEmpty,
|
|
78
|
+
};
|
|
79
|
+
const threadsB = {
|
|
80
|
+
artist: artistEmpty,
|
|
81
|
+
director: directorEmpty,
|
|
82
|
+
};
|
|
83
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
84
|
+
const threadsMerged = {
|
|
85
|
+
artist: artistEmpty,
|
|
86
|
+
director: directorEmpty,
|
|
87
|
+
};
|
|
88
|
+
expect(threadsMerged);
|
|
89
|
+
});
|
|
90
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
91
|
+
// @ts-expect-error: Property 'director' is missing in type '{ artist: Thread<ThreadContextRole<"artist">>; }' but required in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
92
|
+
const threadsMerged = {
|
|
93
|
+
artist: artistEmpty,
|
|
94
|
+
};
|
|
95
|
+
expect(threadsMerged);
|
|
96
|
+
});
|
|
97
|
+
(0, test_fns_1.then)('they should complain at incorrect inputs', () => {
|
|
98
|
+
const threadsMerged = {
|
|
99
|
+
artist: artistEmpty,
|
|
100
|
+
// @ts-expect-error: Type 'Thread<ThreadContextRole<"artist">>' is not assignable to type 'Thread<ThreadContextRole<"director">>'.
|
|
101
|
+
director: threadsA.artist,
|
|
102
|
+
};
|
|
103
|
+
expect(threadsMerged);
|
|
104
|
+
});
|
|
105
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
106
|
+
const threadsMerged = {
|
|
107
|
+
artist: artistEmpty,
|
|
108
|
+
director: directorEmpty,
|
|
109
|
+
// @ts-expect-error: 'judge' does not exist in type ...
|
|
110
|
+
judge: judgeEmpty,
|
|
111
|
+
};
|
|
112
|
+
expect(threadsMerged);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
(0, test_fns_1.given)('threads with different roles, partial overlap', () => {
|
|
116
|
+
const threadsA = {
|
|
117
|
+
artist: artistEmpty,
|
|
118
|
+
critic: criticEmpty,
|
|
119
|
+
};
|
|
120
|
+
const threadsB = {
|
|
121
|
+
artist: artistEmpty,
|
|
122
|
+
director: directorEmpty,
|
|
123
|
+
};
|
|
124
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
125
|
+
const threadsMerged = {
|
|
126
|
+
artist: artistEmpty,
|
|
127
|
+
critic: criticEmpty,
|
|
128
|
+
director: directorEmpty,
|
|
129
|
+
};
|
|
130
|
+
expect(threadsMerged);
|
|
131
|
+
});
|
|
132
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
133
|
+
// @ts-expect-error: Property 'director' is missing in type '{ artist: Thread<ThreadContextRole<"artist">>; }' but required in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
134
|
+
const threadsMerged = {
|
|
135
|
+
artist: artistEmpty,
|
|
136
|
+
critic: criticEmpty,
|
|
137
|
+
};
|
|
138
|
+
expect(threadsMerged);
|
|
139
|
+
});
|
|
140
|
+
(0, test_fns_1.then)('they should complain at incorrect inputs', () => {
|
|
141
|
+
const threadsMerged = {
|
|
142
|
+
artist: artistEmpty,
|
|
143
|
+
critic: criticEmpty,
|
|
144
|
+
// @ts-expect-error: Type 'Thread<ThreadContextRole<"artist">>' is not assignable to type 'Thread<ThreadContextRole<"director">>'.
|
|
145
|
+
director: artistEmpty,
|
|
146
|
+
};
|
|
147
|
+
expect(threadsMerged);
|
|
148
|
+
});
|
|
149
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
150
|
+
const threadsMerged = {
|
|
151
|
+
artist: artistEmpty,
|
|
152
|
+
director: directorEmpty,
|
|
153
|
+
critic: criticEmpty,
|
|
154
|
+
// @ts-expect-error: 'judge' does not exist in type ...
|
|
155
|
+
judge: judgeEmpty,
|
|
156
|
+
};
|
|
157
|
+
expect(threadsMerged);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
(0, test_fns_1.given)('threads with different roles, no overlap', () => {
|
|
161
|
+
const threadsA = {
|
|
162
|
+
artist: artistEmpty,
|
|
163
|
+
};
|
|
164
|
+
const threadsB = {
|
|
165
|
+
director: directorEmpty,
|
|
166
|
+
};
|
|
167
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
168
|
+
const threadsMerged = {
|
|
169
|
+
artist: artistEmpty,
|
|
170
|
+
director: directorEmpty,
|
|
171
|
+
};
|
|
172
|
+
expect(threadsMerged);
|
|
173
|
+
});
|
|
174
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
175
|
+
// @ts-expect-error: Property 'director' is missing in type '{ artist: Thread<ThreadContextRole<"artist">>; }' but required in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
176
|
+
const threadsMerged = {
|
|
177
|
+
artist: artistEmpty,
|
|
178
|
+
};
|
|
179
|
+
expect(threadsMerged);
|
|
180
|
+
});
|
|
181
|
+
(0, test_fns_1.then)('they should complain at incorrect inputs', () => {
|
|
182
|
+
const threadsMerged = {
|
|
183
|
+
artist: artistEmpty,
|
|
184
|
+
// @ts-expect-error: Type 'Thread<ThreadContextRole<"artist">>' is not assignable to type 'Thread<ThreadContextRole<"director">>'.
|
|
185
|
+
director: threadsA.artist,
|
|
186
|
+
};
|
|
187
|
+
expect(threadsMerged);
|
|
188
|
+
});
|
|
189
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
190
|
+
const threadsMerged = {
|
|
191
|
+
artist: artistEmpty,
|
|
192
|
+
director: directorEmpty,
|
|
193
|
+
// @ts-expect-error: 'critic' does not exist in type ...
|
|
194
|
+
critic: criticEmpty,
|
|
195
|
+
};
|
|
196
|
+
expect(threadsMerged);
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
(0, test_fns_1.given)('threads with the same exact role.names & role.contexts, but the contexts are extended', () => {
|
|
200
|
+
const threadsA = {
|
|
201
|
+
artist: artistWithSkills,
|
|
202
|
+
};
|
|
203
|
+
const threadsB = {
|
|
204
|
+
artist: artistWithSkills,
|
|
205
|
+
};
|
|
206
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
207
|
+
const threadsMerged = {
|
|
208
|
+
artist: artistWithSkills,
|
|
209
|
+
};
|
|
210
|
+
expect(threadsMerged);
|
|
211
|
+
});
|
|
212
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
213
|
+
// @ts-expect-error: Property 'artist' is missing in type ...
|
|
214
|
+
const threadsMerged = {};
|
|
215
|
+
expect(threadsMerged);
|
|
216
|
+
});
|
|
217
|
+
(0, test_fns_1.then)('they should complain at incorrect inputs', () => {
|
|
218
|
+
const threadsMerged = {
|
|
219
|
+
// @ts-expect-error: Property 'skills' is missing in type '{ role: "artist"; }' but required in type ...
|
|
220
|
+
artist: artistEmpty,
|
|
221
|
+
};
|
|
222
|
+
expect(threadsMerged);
|
|
223
|
+
});
|
|
224
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
225
|
+
const threadsMerged = {
|
|
226
|
+
artist: artistWithSkills,
|
|
227
|
+
// @ts-expect-error: 'critic' does not exist in type ...
|
|
228
|
+
critic: criticEmpty,
|
|
229
|
+
};
|
|
230
|
+
expect(threadsMerged);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
(0, test_fns_1.given)('threads with the one same exact role.names, but different role.contexts', () => {
|
|
234
|
+
const threadsA = {
|
|
235
|
+
artist: artistEmpty,
|
|
236
|
+
};
|
|
237
|
+
const threadsB = {
|
|
238
|
+
artist: artistWithSkills,
|
|
239
|
+
};
|
|
240
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
241
|
+
const threadsMerged = {
|
|
242
|
+
artist: artistWithSkills,
|
|
243
|
+
};
|
|
244
|
+
expect(threadsMerged);
|
|
245
|
+
});
|
|
246
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
247
|
+
// @ts-expect-error: Property 'artist' is missing in type ...
|
|
248
|
+
const threadsMerged = {};
|
|
249
|
+
expect(threadsMerged);
|
|
250
|
+
});
|
|
251
|
+
(0, test_fns_1.then)('they should complain at incorrect inputs', { because: 'it should demand the superset context: artistWithSkills' }, () => {
|
|
252
|
+
const threadsMerged = {
|
|
253
|
+
// @ts-expect-error: Property 'skills' is missing in type '{ role: "artist"; }' but required in type ...
|
|
254
|
+
artist: artistEmpty,
|
|
255
|
+
};
|
|
256
|
+
expect(threadsMerged);
|
|
257
|
+
});
|
|
258
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
259
|
+
const threadsMerged = {
|
|
260
|
+
artist: artistWithSkills,
|
|
261
|
+
// @ts-expect-error: 'critic' does not exist in type ...
|
|
262
|
+
critic: criticEmpty,
|
|
263
|
+
};
|
|
264
|
+
expect(threadsMerged);
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
(0, test_fns_1.given)('threads with the same exact role.names, but different role.contexts', () => {
|
|
268
|
+
const threadsA = {
|
|
269
|
+
artist: artistEmpty,
|
|
270
|
+
director: directorWithVision,
|
|
271
|
+
};
|
|
272
|
+
const threadsB = {
|
|
273
|
+
artist: artistWithSkills,
|
|
274
|
+
director: directorEmpty,
|
|
275
|
+
};
|
|
276
|
+
(0, test_fns_1.then)('they should support correct instantiation', () => {
|
|
277
|
+
const threadsMerged = {
|
|
278
|
+
artist: artistWithSkills,
|
|
279
|
+
director: directorWithVision,
|
|
280
|
+
};
|
|
281
|
+
expect(threadsMerged);
|
|
282
|
+
});
|
|
283
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
284
|
+
// @ts-expect-error: Property 'director' is missing in type '{ artist: Thread<ThreadContextRole<"artist">>; }' but required in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
285
|
+
const threadsMerged = {
|
|
286
|
+
artist: artistWithSkills,
|
|
287
|
+
};
|
|
288
|
+
expect(threadsMerged);
|
|
289
|
+
});
|
|
290
|
+
(0, test_fns_1.then)('they should complain at incorrect input.roles', () => {
|
|
291
|
+
const threadsMerged = {
|
|
292
|
+
artist: artistWithSkills,
|
|
293
|
+
// @ts-expect-error: Type 'Thread<ThreadContextRole<"artist">>' is not assignable to type 'Thread<ThreadContextRole<"director">>'.
|
|
294
|
+
director: artistWithSkills,
|
|
295
|
+
};
|
|
296
|
+
expect(threadsMerged);
|
|
297
|
+
});
|
|
298
|
+
(0, test_fns_1.then)('they should complain at incorrect input.contexts, 1', () => {
|
|
299
|
+
const threadsMerged = {
|
|
300
|
+
// @ts-expect-error: Property 'skills' is missing in type '{ role: "artist"; }'
|
|
301
|
+
artist: artistEmpty,
|
|
302
|
+
director: directorWithVision,
|
|
303
|
+
};
|
|
304
|
+
expect(threadsMerged);
|
|
305
|
+
});
|
|
306
|
+
(0, test_fns_1.then)('they should complain at incorrect input.contexts, 2', () => {
|
|
307
|
+
const threadsMerged = {
|
|
308
|
+
artist: artistWithSkills,
|
|
309
|
+
// @ts-expect-error: Property 'vision' is missing in type '{ role: "artist"; }'
|
|
310
|
+
director: directorEmpty,
|
|
311
|
+
};
|
|
312
|
+
expect(threadsMerged);
|
|
313
|
+
});
|
|
314
|
+
(0, test_fns_1.then)('they should complain at unexpected inputs', () => {
|
|
315
|
+
const threadsMerged = {
|
|
316
|
+
artist: artistWithSkills,
|
|
317
|
+
director: directorWithVision,
|
|
318
|
+
// @ts-expect-error: 'critic' does not exist in type 'ThreadsMerged<[Threads<{ artist: Empty; director: Empty; }>, Threads<{ artist: Empty; director: Empty; }>]>'
|
|
319
|
+
critic: criticEmpty,
|
|
320
|
+
};
|
|
321
|
+
expect(threadsMerged);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
(0, test_fns_1.given)('three thread sets with overlap and disjoint roles', () => {
|
|
325
|
+
const threadsA = {
|
|
326
|
+
artist: artistWithSkills,
|
|
327
|
+
};
|
|
328
|
+
const threadsB = {
|
|
329
|
+
director: directorWithVision,
|
|
330
|
+
};
|
|
331
|
+
const threadsC = {
|
|
332
|
+
artist: artistWithSkills,
|
|
333
|
+
judge: judgeEmpty,
|
|
334
|
+
};
|
|
335
|
+
(0, test_fns_1.then)('they should support correct merged instantiation', () => {
|
|
336
|
+
const threadsMerged = {
|
|
337
|
+
artist: artistWithSkills,
|
|
338
|
+
director: directorWithVision,
|
|
339
|
+
judge: judgeEmpty,
|
|
340
|
+
};
|
|
341
|
+
expect(threadsMerged);
|
|
342
|
+
});
|
|
343
|
+
(0, test_fns_1.then)('they should complain at missed inputs', () => {
|
|
344
|
+
// @ts-expect-error: Property 'director' is missing
|
|
345
|
+
const threadsMerged = {
|
|
346
|
+
artist: artistWithSkills,
|
|
347
|
+
judge: judgeEmpty,
|
|
348
|
+
};
|
|
349
|
+
expect(threadsMerged);
|
|
350
|
+
});
|
|
351
|
+
});
|
|
352
|
+
(0, test_fns_1.given)('merger with one empty thread set', () => {
|
|
353
|
+
const threadsA = {};
|
|
354
|
+
const threadsB = {
|
|
355
|
+
artist: artistWithSkills,
|
|
356
|
+
};
|
|
357
|
+
(0, test_fns_1.then)('it should infer just the non-empty threads', () => {
|
|
358
|
+
const threadsMerged = {
|
|
359
|
+
artist: artistWithSkills,
|
|
360
|
+
};
|
|
361
|
+
expect(threadsMerged);
|
|
362
|
+
});
|
|
363
|
+
(0, test_fns_1.then)('it should fail if required threads are missing', () => {
|
|
364
|
+
// @ts-expect-error: Property 'artist' is missing
|
|
365
|
+
const threadsMerged = {};
|
|
366
|
+
expect(threadsMerged);
|
|
367
|
+
});
|
|
368
|
+
});
|
|
369
|
+
(0, test_fns_1.given)('threads with same role but conflicting context field types', () => {
|
|
370
|
+
const artistWithSkillStrings = new Thread_1.Thread({
|
|
371
|
+
context: { role: 'artist', skills: ['draw'] },
|
|
372
|
+
stitches: [],
|
|
373
|
+
});
|
|
374
|
+
const artistWithSkillNumbers = new Thread_1.Thread({
|
|
375
|
+
context: { role: 'artist', skills: [123] },
|
|
376
|
+
stitches: [],
|
|
377
|
+
});
|
|
378
|
+
const threadsA = {
|
|
379
|
+
artist: artistWithSkillStrings,
|
|
380
|
+
};
|
|
381
|
+
const threadsB = {
|
|
382
|
+
artist: artistWithSkillNumbers,
|
|
383
|
+
};
|
|
384
|
+
(0, test_fns_1.then)('they should error due to conflicting types, choice one', () => {
|
|
385
|
+
const threadsMerged = {
|
|
386
|
+
// @ts-expect-error: skills type conflict
|
|
387
|
+
artist: artistWithSkillStrings,
|
|
388
|
+
};
|
|
389
|
+
expect(threadsMerged);
|
|
390
|
+
});
|
|
391
|
+
(0, test_fns_1.then)('they should error due to conflicting types, choice two', () => {
|
|
392
|
+
const threadsMerged = {
|
|
393
|
+
// @ts-expect-error: skills type conflict
|
|
394
|
+
artist: artistWithSkillNumbers,
|
|
395
|
+
};
|
|
396
|
+
expect(threadsMerged);
|
|
397
|
+
});
|
|
398
|
+
});
|
|
399
|
+
(0, test_fns_1.given)('an array instead of a tuple input of threads', () => {
|
|
400
|
+
(0, test_fns_1.then)('it should fail fast and block the usage', () => {
|
|
401
|
+
// // @ts-expect-error: 'anything' does not exist in type 'ThreadsMerged<Threads<{ main: Empty; }>[]>'.
|
|
402
|
+
// const expectError: Merged = { anything: 'goes' };
|
|
403
|
+
// expect(expectError);
|
|
404
|
+
// // and this should succeed
|
|
405
|
+
// const expectSuccess: Merged = { main: genThread({ role: 'main' }) };
|
|
406
|
+
// expect(expectSuccess);
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
(0, test_fns_1.given)('an readonly tuple', () => {
|
|
410
|
+
(0, test_fns_1.then)('it should resolve the type strictly still', () => {
|
|
411
|
+
// @ts-expect-error: 'anything' does not exist in type 'ThreadsMerged<Threads<{ main: Empty; }>[]>'.
|
|
412
|
+
const expectError = { anything: 'goes' };
|
|
413
|
+
expect(expectError);
|
|
414
|
+
// and this should succeed
|
|
415
|
+
const expectSuccess = { main: (0, genThread_1.genThread)({ role: 'main' }) };
|
|
416
|
+
expect(expectSuccess);
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
//# sourceMappingURL=ThreadsMerged.generic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThreadsMerged.generic.test.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/ThreadsMerged.generic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Stitcher, GStitcher } from '../../../domain/objects/Stitcher';
|
|
2
|
+
import { Threads } from '../../../domain/objects/Threads';
|
|
3
|
+
/**
|
|
4
|
+
* .what = applies a standardized type wrapper around a stitcher to enforce single-thread compatibility
|
|
5
|
+
* .note
|
|
6
|
+
* - forces Threads<,single>, since by definition generic stitchers are always single threaded per role
|
|
7
|
+
* .why =
|
|
8
|
+
* - enables composition of stitchers
|
|
9
|
+
* - without this, they're not composable, due to typescript(generic invariance on classes cause)
|
|
10
|
+
* - infers the type deeply
|
|
11
|
+
*/
|
|
12
|
+
export declare const asStitcher: <T extends Stitcher<GStitcher<any, any, any>>>(input: T) => T extends Stitcher<GStitcher<infer TThreads extends Threads<any, any>, infer TContext extends import("simple-log-methods").ContextLogTrail & import("../../stitch/withStitchTrail").ContextStitchTrail, infer TOutput>> ? Stitcher<GStitcher<Threads<TThreads extends Threads<infer TContextDict extends Record<string, object>, any> ? TContextDict : never, "single">, TContext, TOutput>> : never;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.asStitcher = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* .what = applies a standardized type wrapper around a stitcher to enforce single-thread compatibility
|
|
6
|
+
* .note
|
|
7
|
+
* - forces Threads<,single>, since by definition generic stitchers are always single threaded per role
|
|
8
|
+
* .why =
|
|
9
|
+
* - enables composition of stitchers
|
|
10
|
+
* - without this, they're not composable, due to typescript(generic invariance on classes cause)
|
|
11
|
+
* - infers the type deeply
|
|
12
|
+
*/
|
|
13
|
+
const asStitcher = (input) => input;
|
|
14
|
+
exports.asStitcher = asStitcher;
|
|
15
|
+
//# sourceMappingURL=asStitcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asStitcher.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/asStitcher.ts"],"names":[],"mappings":";;;AAGA;;;;;;;;GAQG;AAEI,MAAM,UAAU,GAAG,CACxB,KAAQ,EAcA,EAAE,CAAC,KAAY,CAAC;AAfb,QAAA,UAAU,cAeG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const test_fns_1 = require("test-fns");
|
|
4
|
+
const StitchStep_1 = require("../../../domain/objects/StitchStep");
|
|
5
|
+
const genThread_1 = require("../../thread/genThread");
|
|
6
|
+
const asStitcher_1 = require("./asStitcher");
|
|
7
|
+
const genStitchRoute_1 = require("./genStitchRoute");
|
|
8
|
+
describe('asStitcher type normalization', () => {
|
|
9
|
+
(0, test_fns_1.given)('a StitchStepCompute with basic threads and number output', () => {
|
|
10
|
+
const step = new StitchStep_1.StitchStepCompute({
|
|
11
|
+
slug: 'step',
|
|
12
|
+
readme: null,
|
|
13
|
+
form: 'COMPUTE',
|
|
14
|
+
stitchee: 'main',
|
|
15
|
+
invoke: () => ({ input: null, output: 42 }),
|
|
16
|
+
});
|
|
17
|
+
const stitcher = (0, asStitcher_1.asStitcher)(step);
|
|
18
|
+
(0, test_fns_1.then)('the thread type should be narrowly defined', () => {
|
|
19
|
+
const threads = {
|
|
20
|
+
main: (0, genThread_1.genThread)({ role: 'main' }),
|
|
21
|
+
// @ts-expect-error: bert does not exist
|
|
22
|
+
bert: (0, genThread_1.genThread)({ role: 'main' }),
|
|
23
|
+
};
|
|
24
|
+
expect(threads);
|
|
25
|
+
});
|
|
26
|
+
(0, test_fns_1.then)('it should preserve thread keys and force single fanin', () => {
|
|
27
|
+
const checkA = true;
|
|
28
|
+
const checkB = true;
|
|
29
|
+
expect(checkA);
|
|
30
|
+
expect(checkB);
|
|
31
|
+
});
|
|
32
|
+
(0, test_fns_1.then)('it should preserve context and output', () => {
|
|
33
|
+
const checkA = true;
|
|
34
|
+
const checkB = true;
|
|
35
|
+
expect(checkA);
|
|
36
|
+
expect(checkB);
|
|
37
|
+
});
|
|
38
|
+
(0, test_fns_1.then)('it should still be assignable to Stitcher<GStitcher>', () => {
|
|
39
|
+
const result = true;
|
|
40
|
+
expect(result);
|
|
41
|
+
});
|
|
42
|
+
(0, test_fns_1.then)('it should no longer exactly match the original', () => {
|
|
43
|
+
// @ts-expect-error: structural change after normalization
|
|
44
|
+
const exactMatch = true;
|
|
45
|
+
expect(exactMatch);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
(0, test_fns_1.given)('a genStitchRoute that needs to be normalized for reuse', () => {
|
|
49
|
+
const step1 = new StitchStep_1.StitchStepCompute({
|
|
50
|
+
slug: 's1',
|
|
51
|
+
readme: null,
|
|
52
|
+
form: 'COMPUTE',
|
|
53
|
+
stitchee: 'main',
|
|
54
|
+
invoke: () => ({ input: null, output: 1 }),
|
|
55
|
+
});
|
|
56
|
+
const step2 = new StitchStep_1.StitchStepCompute({
|
|
57
|
+
slug: 's2',
|
|
58
|
+
readme: null,
|
|
59
|
+
form: 'COMPUTE',
|
|
60
|
+
stitchee: 'main',
|
|
61
|
+
invoke: () => ({ input: null, output: 2 }),
|
|
62
|
+
});
|
|
63
|
+
const route = (0, genStitchRoute_1.genStitchRoute)({
|
|
64
|
+
slug: 'route',
|
|
65
|
+
readme: null,
|
|
66
|
+
sequence: [step1, step2],
|
|
67
|
+
});
|
|
68
|
+
const stitcher = (0, asStitcher_1.asStitcher)(route);
|
|
69
|
+
(0, test_fns_1.then)('it should allow reuse in another route that expects single-threaded steps', () => {
|
|
70
|
+
const outer = (0, genStitchRoute_1.genStitchRoute)({
|
|
71
|
+
slug: 'outer',
|
|
72
|
+
readme: null,
|
|
73
|
+
sequence: [stitcher],
|
|
74
|
+
});
|
|
75
|
+
expect(outer.slug).toBe('outer');
|
|
76
|
+
expect(outer.sequence[0].slug).toBe('route');
|
|
77
|
+
});
|
|
78
|
+
(0, test_fns_1.then)('it should preserve thread structure', () => {
|
|
79
|
+
const checkA = true;
|
|
80
|
+
const checkB = true;
|
|
81
|
+
expect(checkA);
|
|
82
|
+
expect(checkB);
|
|
83
|
+
});
|
|
84
|
+
(0, test_fns_1.then)('it should be assignable to Stitcher<GStitcher>', () => {
|
|
85
|
+
const result = true;
|
|
86
|
+
expect(result);
|
|
87
|
+
});
|
|
88
|
+
(0, test_fns_1.then)('it should no longer match StitchRoute<T> exactly', () => {
|
|
89
|
+
// @ts-expect-error: nominal break due to generic rewrite
|
|
90
|
+
const exactMatch = true;
|
|
91
|
+
expect(exactMatch);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=asStitcher.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asStitcher.test.js","sourceRoot":"","sources":["../../../../src/logic/weave/compose/asStitcher.test.ts"],"names":[],"mappings":"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"}
|