cogfy-data-exchange 1.0.16 → 1.0.18

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.
@@ -7,11 +7,16 @@ type ExtractScreenById<T, Id extends string> = T extends {
7
7
  } ? Screens extends readonly unknown[] ? Extract<Screens[number], {
8
8
  id: Id;
9
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;
10
15
  type ExtractChildren<T> = T extends {
11
16
  layout: {
12
17
  children: infer C;
13
18
  };
14
- } ? C extends readonly unknown[] ? C[number] : never : never;
19
+ } ? C extends readonly unknown[] ? FlattenIfChildren<C[number]> : never : never;
15
20
  type ExtractPayload<T> = T extends {
16
21
  'on-click-action': {
17
22
  payload: infer P;
@@ -30,6 +35,19 @@ type ExtractScreenData<T> = T extends {
30
35
  type ExtractDataSourceIds<DS> = DS extends readonly {
31
36
  id: infer Id;
32
37
  }[] ? Id : string;
38
+ type DocumentPickerFile = {
39
+ file_name: string;
40
+ media_id: string;
41
+ cdn_url: string;
42
+ encryption_metadata: {
43
+ encryption_key: string;
44
+ hmac_key: string;
45
+ hmac: string;
46
+ iv: string;
47
+ plaintext_hash: string;
48
+ encrypted_hash: string;
49
+ };
50
+ };
33
51
  type ComponentFormValue<C> = C extends {
34
52
  type: 'RadioButtonsGroup' | 'Dropdown';
35
53
  'data-source': infer DS;
@@ -40,7 +58,9 @@ type ComponentFormValue<C> = C extends {
40
58
  type: 'TextInput' | 'TextArea' | 'DatePicker';
41
59
  } ? string : C extends {
42
60
  type: 'OptIn';
43
- } ? boolean : string;
61
+ } ? boolean : C extends {
62
+ type: 'DocumentPicker';
63
+ } ? DocumentPickerFile[] : string;
44
64
  type ResolvePayloadValue<V, Children, ScreenData> = V extends `$${'{'}form.${infer FieldName}}` ? [Extract<Children, {
45
65
  name: FieldName;
46
66
  }>] extends [never] ? string : ComponentFormValue<Extract<Children, {
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cogfy-data-exchange",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -11,9 +11,14 @@ type ExtractScreenById<T, Id extends string> = T extends {
11
11
  : never
12
12
  : never
13
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
+
14
19
  type ExtractChildren<T> = T extends { layout: { children: infer C } }
15
20
  ? C extends readonly unknown[]
16
- ? C[number]
21
+ ? FlattenIfChildren<C[number]>
17
22
  : never
18
23
  : never
19
24
 
@@ -29,6 +34,20 @@ type ExtractScreenData<T> = T extends { data: infer D } ? D : never
29
34
 
30
35
  type ExtractDataSourceIds<DS> = DS extends readonly { id: infer Id }[] ? Id : string
31
36
 
37
+ type DocumentPickerFile = {
38
+ file_name: string
39
+ media_id: string
40
+ cdn_url: string
41
+ encryption_metadata: {
42
+ encryption_key: string
43
+ hmac_key: string
44
+ hmac: string
45
+ iv: string
46
+ plaintext_hash: string
47
+ encrypted_hash: string
48
+ }
49
+ }
50
+
32
51
  type ComponentFormValue<C> = C extends {
33
52
  type: 'RadioButtonsGroup' | 'Dropdown'
34
53
  'data-source': infer DS
@@ -43,7 +62,9 @@ type ComponentFormValue<C> = C extends {
43
62
  ? string
44
63
  : C extends { type: 'OptIn' }
45
64
  ? boolean
46
- : string
65
+ : C extends { type: 'DocumentPicker' }
66
+ ? DocumentPickerFile[]
67
+ : string
47
68
 
48
69
  type ResolvePayloadValue<V, Children, ScreenData> = V extends `$${'{'}form.${infer FieldName}}`
49
70
  ? [Extract<Children, { name: FieldName }>] extends [never]
@@ -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 { 'on-click-action': { payload: { trigger: infer T } } }
9
- ? T extends string
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