cogfy-data-exchange 1.0.20 → 1.0.22

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.
@@ -24,6 +24,10 @@ type ExtractPayload<T> = T extends {
24
24
  'on-click-action': {
25
25
  payload: infer P;
26
26
  };
27
+ } ? P : T extends {
28
+ 'on-select-action': {
29
+ payload: infer P;
30
+ };
27
31
  } ? P : never;
28
32
  type ExtractChildByTrigger<Children, Trigger extends string> = Children extends {
29
33
  'on-click-action': {
@@ -31,6 +35,12 @@ type ExtractChildByTrigger<Children, Trigger extends string> = Children extends
31
35
  trigger: Trigger;
32
36
  };
33
37
  };
38
+ } | {
39
+ 'on-select-action': {
40
+ payload: {
41
+ trigger: Trigger;
42
+ };
43
+ };
34
44
  } ? Children : never;
35
45
  type ExtractScreenData<T> = T extends {
36
46
  data: infer D;
@@ -1,9 +1,9 @@
1
1
  import type { FlowJson } from './flow-json';
2
2
  import type { NextScreens } from './routing';
3
3
  import type { ScreenData, ScreenName } from './screen';
4
- type ScreenErrorResult<S extends string> = {
4
+ type ScreenSelfResult<F extends FlowJson, S extends ScreenName<F>> = {
5
5
  screen: S;
6
- data: {
6
+ data: ScreenData<F, S> | {
7
7
  error_message: string;
8
8
  };
9
9
  };
@@ -22,5 +22,5 @@ export type NextResult<F extends FlowJson, S extends ScreenName<F>> = {
22
22
  screen: K;
23
23
  data: ScreenData<F, K>;
24
24
  };
25
- }[NextScreens<F, S>] | ScreenErrorResult<S> | FlowSuccessResult;
25
+ }[NextScreens<F, S>] | ScreenSelfResult<F, S> | FlowSuccessResult;
26
26
  export {};
@@ -9,17 +9,24 @@ type FlattenIfChildren<C> = C extends {
9
9
  then: infer Then;
10
10
  else?: infer Else;
11
11
  } ? (Then extends readonly unknown[] ? FlattenIfChildren<Then[number]> : never) | (Else extends readonly unknown[] ? FlattenIfChildren<Else[number]> : never) : FlattenListItems<C>;
12
- type AllChildTriggers<F extends FlowJson> = F['screens'][number] extends infer S ? S extends {
13
- layout: {
14
- children: readonly (infer C)[];
15
- };
16
- } ? FlattenIfChildren<C> extends infer FC ? FC extends {
12
+ type ExtractActionTrigger<FC> = (FC extends {
17
13
  'on-click-action': {
18
14
  payload: {
19
- trigger: infer T;
15
+ trigger: infer T extends string;
20
16
  };
21
17
  };
22
- } ? T extends string ? T : never : never : never : never : never;
18
+ } ? T : never) | (FC extends {
19
+ 'on-select-action': {
20
+ payload: {
21
+ trigger: infer T extends string;
22
+ };
23
+ };
24
+ } ? T : never);
25
+ type AllChildTriggers<F extends FlowJson> = F['screens'][number] extends infer S ? S extends {
26
+ layout: {
27
+ children: readonly (infer C)[];
28
+ };
29
+ } ? FlattenIfChildren<C> extends infer FC ? ExtractActionTrigger<FC> : never : never : never;
23
30
  export type AllTriggers<F extends FlowJson> = ScreenTrigger<ScreenName<F>> | AllChildTriggers<F>;
24
31
  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>>;
25
32
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogfy-data-exchange",
3
- "version": "1.0.20",
3
+ "version": "1.0.22",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,11 +28,15 @@ type ExtractChildren<T> = T extends { layout: { children: infer C } }
28
28
  : never
29
29
  : never
30
30
 
31
- type ExtractPayload<T> = T extends { 'on-click-action': { payload: infer P } } ? P : never
31
+ type ExtractPayload<T> = T extends { 'on-click-action': { payload: infer P } }
32
+ ? P
33
+ : T extends { 'on-select-action': { payload: infer P } }
34
+ ? P
35
+ : never
32
36
 
33
- type ExtractChildByTrigger<Children, Trigger extends string> = Children extends {
34
- 'on-click-action': { payload: { trigger: Trigger } }
35
- }
37
+ type ExtractChildByTrigger<Children, Trigger extends string> = Children extends
38
+ | { 'on-click-action': { payload: { trigger: Trigger } } }
39
+ | { 'on-select-action': { payload: { trigger: Trigger } } }
36
40
  ? Children
37
41
  : never
38
42
 
@@ -2,11 +2,9 @@ import type { FlowJson } from './flow-json'
2
2
  import type { NextScreens } from './routing'
3
3
  import type { ScreenData, ScreenName } from './screen'
4
4
 
5
- type ScreenErrorResult<S extends string> = {
5
+ type ScreenSelfResult<F extends FlowJson, S extends ScreenName<F>> = {
6
6
  screen: S
7
- data: {
8
- error_message: string
9
- }
7
+ data: ScreenData<F, S> | { error_message: string }
10
8
  }
11
9
 
12
10
  type FlowSuccessResult = {
@@ -25,5 +23,5 @@ export type NextResult<F extends FlowJson, S extends ScreenName<F>> =
25
23
  data: ScreenData<F, K>
26
24
  }
27
25
  }[NextScreens<F, S>]
28
- | ScreenErrorResult<S>
26
+ | ScreenSelfResult<F, S>
29
27
  | FlowSuccessResult
@@ -14,14 +14,14 @@ type FlattenIfChildren<C> = C extends { type: 'If'; then: infer Then; else?: inf
14
14
  (Else extends readonly unknown[] ? FlattenIfChildren<Else[number]> : never)
15
15
  : FlattenListItems<C>
16
16
 
17
+ type ExtractActionTrigger<FC> =
18
+ | (FC extends { 'on-click-action': { payload: { trigger: infer T extends string } } } ? T : never)
19
+ | (FC extends { 'on-select-action': { payload: { trigger: infer T extends string } } } ? T : never)
20
+
17
21
  type AllChildTriggers<F extends FlowJson> = F['screens'][number] extends infer S
18
22
  ? S extends { layout: { children: readonly (infer C)[] } }
19
23
  ? FlattenIfChildren<C> extends infer FC
20
- ? FC extends { 'on-click-action': { payload: { trigger: infer T } } }
21
- ? T extends string
22
- ? T
23
- : never
24
- : never
24
+ ? ExtractActionTrigger<FC>
25
25
  : never
26
26
  : never
27
27
  : never