cogfy-data-exchange 1.0.15 → 1.0.17
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/dist/types/payload.d.ts +11 -3
- package/dist/types/trigger.d.ts +7 -2
- package/package.json +1 -1
- package/src/types/payload.ts +16 -4
- package/src/types/trigger.ts +10 -3
package/dist/types/payload.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
import type { FlowJson } from './flow-json';
|
|
1
2
|
import type { FromSchema } from './schema';
|
|
3
|
+
import type { ScreenName } from './screen';
|
|
4
|
+
import type { AllTriggers } from './trigger';
|
|
2
5
|
type ExtractScreenById<T, Id extends string> = T extends {
|
|
3
6
|
screens: infer Screens;
|
|
4
7
|
} ? Screens extends readonly unknown[] ? Extract<Screens[number], {
|
|
5
8
|
id: Id;
|
|
6
9
|
}> : never : never;
|
|
10
|
+
type FlattenIfChildren<C> = C extends {
|
|
11
|
+
type: 'If';
|
|
12
|
+
then: infer Then;
|
|
13
|
+
else?: infer Else;
|
|
14
|
+
} ? (Then extends readonly unknown[] ? FlattenIfChildren<Then[number]> : never) | (Else extends readonly unknown[] ? FlattenIfChildren<Else[number]> : never) : C;
|
|
7
15
|
type ExtractChildren<T> = T extends {
|
|
8
16
|
layout: {
|
|
9
17
|
children: infer C;
|
|
10
18
|
};
|
|
11
|
-
} ? C extends readonly unknown[] ? C[number] : never : never;
|
|
19
|
+
} ? C extends readonly unknown[] ? FlattenIfChildren<C[number]> : never : never;
|
|
12
20
|
type ExtractPayload<T> = T extends {
|
|
13
21
|
'on-click-action': {
|
|
14
22
|
payload: infer P;
|
|
@@ -48,6 +56,6 @@ type ResolvePayloadValue<V, Children, ScreenData> = V extends `$${'{'}form.${inf
|
|
|
48
56
|
type ResolvePayload<P, Children, ScreenData> = P extends unknown ? {
|
|
49
57
|
[K in keyof P]: ResolvePayloadValue<P[K], Children, ScreenData>;
|
|
50
58
|
} : never;
|
|
51
|
-
export type PayloadByScreenId<T, Id extends
|
|
52
|
-
export type PayloadByTrigger<T, Trigger extends
|
|
59
|
+
export type PayloadByScreenId<T extends FlowJson, Id extends ScreenName<T>> = ResolvePayload<ExtractPayload<ExtractChildByTrigger<ExtractChildren<ExtractScreenById<T, Id>>, `screen.${Id}`>>, ExtractChildren<ExtractScreenById<T, Id>>, ExtractScreenData<ExtractScreenById<T, Id>>>;
|
|
60
|
+
export type PayloadByTrigger<T extends FlowJson, Trigger extends AllTriggers<T>, ScreenId extends ScreenName<T>> = ResolvePayload<ExtractPayload<ExtractChildByTrigger<ExtractChildren<ExtractScreenById<T, ScreenId>>, Trigger>>, ExtractChildren<ExtractScreenById<T, ScreenId>>, ExtractScreenData<ExtractScreenById<T, ScreenId>>>;
|
|
53
61
|
export {};
|
package/dist/types/trigger.d.ts
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import type { FlowJson } from './flow-json';
|
|
2
2
|
import type { ScreenName } from './screen';
|
|
3
3
|
export type ScreenTrigger<S extends string> = `screen.${S}`;
|
|
4
|
+
type FlattenIfChildren<C> = C extends {
|
|
5
|
+
type: 'If';
|
|
6
|
+
then: infer Then;
|
|
7
|
+
else?: infer Else;
|
|
8
|
+
} ? (Then extends readonly unknown[] ? FlattenIfChildren<Then[number]> : never) | (Else extends readonly unknown[] ? FlattenIfChildren<Else[number]> : never) : C;
|
|
4
9
|
type AllChildTriggers<F extends FlowJson> = F['screens'][number] extends infer S ? S extends {
|
|
5
10
|
layout: {
|
|
6
11
|
children: readonly (infer C)[];
|
|
7
12
|
};
|
|
8
|
-
} ? C extends {
|
|
13
|
+
} ? FlattenIfChildren<C> extends infer FC ? FC extends {
|
|
9
14
|
'on-click-action': {
|
|
10
15
|
payload: {
|
|
11
16
|
trigger: infer T;
|
|
12
17
|
};
|
|
13
18
|
};
|
|
14
|
-
} ? T extends string ? T : never : never : never : never;
|
|
19
|
+
} ? T extends string ? T : never : never : never : never : never;
|
|
15
20
|
export type AllTriggers<F extends FlowJson> = ScreenTrigger<ScreenName<F>> | AllChildTriggers<F>;
|
|
16
21
|
export type ExtractScreen<T extends string, F extends FlowJson> = Extract<T extends `screen.${infer S}.event.${string}` ? S : T extends `screen.${infer S}` ? S : never, ScreenName<F>>;
|
|
17
22
|
export {};
|
package/package.json
CHANGED
package/src/types/payload.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import type { FlowJson } from './flow-json'
|
|
1
2
|
import type { FromSchema } from './schema'
|
|
3
|
+
import type { ScreenName } from './screen'
|
|
4
|
+
import type { AllTriggers } from './trigger'
|
|
2
5
|
|
|
3
6
|
type ExtractScreenById<T, Id extends string> = T extends {
|
|
4
7
|
screens: infer Screens
|
|
@@ -8,9 +11,14 @@ type ExtractScreenById<T, Id extends string> = T extends {
|
|
|
8
11
|
: never
|
|
9
12
|
: never
|
|
10
13
|
|
|
14
|
+
type FlattenIfChildren<C> = C extends { type: 'If'; then: infer Then; else?: infer Else }
|
|
15
|
+
? (Then extends readonly unknown[] ? FlattenIfChildren<Then[number]> : never) |
|
|
16
|
+
(Else extends readonly unknown[] ? FlattenIfChildren<Else[number]> : never)
|
|
17
|
+
: C
|
|
18
|
+
|
|
11
19
|
type ExtractChildren<T> = T extends { layout: { children: infer C } }
|
|
12
20
|
? C extends readonly unknown[]
|
|
13
|
-
? C[number]
|
|
21
|
+
? FlattenIfChildren<C[number]>
|
|
14
22
|
: never
|
|
15
23
|
: never
|
|
16
24
|
|
|
@@ -58,13 +66,17 @@ type ResolvePayload<P, Children, ScreenData> = P extends unknown
|
|
|
58
66
|
? { [K in keyof P]: ResolvePayloadValue<P[K], Children, ScreenData> }
|
|
59
67
|
: never
|
|
60
68
|
|
|
61
|
-
export type PayloadByScreenId<T, Id extends
|
|
62
|
-
ExtractPayload<ExtractChildren<ExtractScreenById<T, Id
|
|
69
|
+
export type PayloadByScreenId<T extends FlowJson, Id extends ScreenName<T>> = ResolvePayload<
|
|
70
|
+
ExtractPayload<ExtractChildByTrigger<ExtractChildren<ExtractScreenById<T, Id>>, `screen.${Id}`>>,
|
|
63
71
|
ExtractChildren<ExtractScreenById<T, Id>>,
|
|
64
72
|
ExtractScreenData<ExtractScreenById<T, Id>>
|
|
65
73
|
>
|
|
66
74
|
|
|
67
|
-
export type PayloadByTrigger<
|
|
75
|
+
export type PayloadByTrigger<
|
|
76
|
+
T extends FlowJson,
|
|
77
|
+
Trigger extends AllTriggers<T>,
|
|
78
|
+
ScreenId extends ScreenName<T>,
|
|
79
|
+
> = ResolvePayload<
|
|
68
80
|
ExtractPayload<ExtractChildByTrigger<ExtractChildren<ExtractScreenById<T, ScreenId>>, Trigger>>,
|
|
69
81
|
ExtractChildren<ExtractScreenById<T, ScreenId>>,
|
|
70
82
|
ExtractScreenData<ExtractScreenById<T, ScreenId>>
|
package/src/types/trigger.ts
CHANGED
|
@@ -3,11 +3,18 @@ import type { ScreenName } from './screen'
|
|
|
3
3
|
|
|
4
4
|
export type ScreenTrigger<S extends string> = `screen.${S}`
|
|
5
5
|
|
|
6
|
+
type FlattenIfChildren<C> = C extends { type: 'If'; then: infer Then; else?: infer Else }
|
|
7
|
+
? (Then extends readonly unknown[] ? FlattenIfChildren<Then[number]> : never) |
|
|
8
|
+
(Else extends readonly unknown[] ? FlattenIfChildren<Else[number]> : never)
|
|
9
|
+
: C
|
|
10
|
+
|
|
6
11
|
type AllChildTriggers<F extends FlowJson> = F['screens'][number] extends infer S
|
|
7
12
|
? S extends { layout: { children: readonly (infer C)[] } }
|
|
8
|
-
? C extends
|
|
9
|
-
?
|
|
10
|
-
? T
|
|
13
|
+
? FlattenIfChildren<C> extends infer FC
|
|
14
|
+
? FC extends { 'on-click-action': { payload: { trigger: infer T } } }
|
|
15
|
+
? T extends string
|
|
16
|
+
? T
|
|
17
|
+
: never
|
|
11
18
|
: never
|
|
12
19
|
: never
|
|
13
20
|
: never
|