cogfy-data-exchange 1.0.8 → 1.0.10
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/create-flow.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ExtractScreen, FlowJson, NextResult,
|
|
1
|
+
import type { ExtractScreen, FlowJson, NextResult, PayloadByScreenId, ScreenName, ScreenTrigger } from './types';
|
|
2
2
|
type Handlers<F extends FlowJson> = {
|
|
3
|
-
[K in ScreenName<F>]: (data:
|
|
3
|
+
[K in ScreenName<F>]: (data: PayloadByScreenId<F, K>) => Promise<NextResult<F, K>>;
|
|
4
4
|
};
|
|
5
5
|
/**
|
|
6
6
|
* Creates a flow engine based on the provided flow definition and handlers.
|
|
@@ -9,7 +9,7 @@ type Handlers<F extends FlowJson> = {
|
|
|
9
9
|
* @returns An object with a `dispatch` method to trigger screen handlers and the original flow definition.
|
|
10
10
|
*/
|
|
11
11
|
export declare function createFlow<F extends FlowJson>(flow: F, handlers: Handlers<F>): {
|
|
12
|
-
dispatch<T extends ScreenTrigger<ScreenName<F>>>(trigger: T,
|
|
12
|
+
dispatch<T extends ScreenTrigger<ScreenName<F>>>(trigger: T, payload: PayloadByScreenId<F, ExtractScreen<T, F>>): Promise<NextResult<F, ExtractScreen<T, F>>>;
|
|
13
13
|
flow: F;
|
|
14
14
|
};
|
|
15
15
|
export {};
|
package/dist/create-flow.js
CHANGED
|
@@ -9,9 +9,9 @@ exports.createFlow = createFlow;
|
|
|
9
9
|
*/
|
|
10
10
|
function createFlow(flow, handlers) {
|
|
11
11
|
return {
|
|
12
|
-
dispatch(trigger,
|
|
12
|
+
dispatch(trigger, payload) {
|
|
13
13
|
const screen = trigger.replace('screen.', '');
|
|
14
|
-
return handlers[screen](
|
|
14
|
+
return handlers[screen](payload);
|
|
15
15
|
},
|
|
16
16
|
flow
|
|
17
17
|
};
|
package/package.json
CHANGED
|
@@ -10,7 +10,27 @@ const flow = {
|
|
|
10
10
|
SCREEN_D: []
|
|
11
11
|
},
|
|
12
12
|
screens: [
|
|
13
|
-
{
|
|
13
|
+
{
|
|
14
|
+
data: { name: { __example__: 'John', type: 'string' } },
|
|
15
|
+
id: 'SCREEN_A',
|
|
16
|
+
layout: {
|
|
17
|
+
children: [
|
|
18
|
+
{
|
|
19
|
+
label: 'Continuar',
|
|
20
|
+
'on-click-action': {
|
|
21
|
+
name: 'data_exchange',
|
|
22
|
+
payload: {
|
|
23
|
+
age: 30,
|
|
24
|
+
trigger: 'screen.SCREEN_A'
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
type: 'Footer'
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
type: 'SingleColumnLayout'
|
|
31
|
+
},
|
|
32
|
+
title: 'Screen A'
|
|
33
|
+
},
|
|
14
34
|
{ data: { age: { __example__: 30, type: 'number' } }, id: 'SCREEN_B', title: 'Screen B' },
|
|
15
35
|
{ data: { isActive: { __example__: true, type: 'boolean' } }, id: 'SCREEN_C', title: 'Screen C' },
|
|
16
36
|
{
|
|
@@ -60,7 +80,7 @@ describe('createFlow', () => {
|
|
|
60
80
|
}
|
|
61
81
|
})
|
|
62
82
|
|
|
63
|
-
const result = await engine.dispatch('screen.SCREEN_A', {
|
|
83
|
+
const result = await engine.dispatch('screen.SCREEN_A', { age: 30, trigger: 'screen.SCREEN_A' })
|
|
64
84
|
|
|
65
85
|
expect(result).toEqual({
|
|
66
86
|
data: { age: 30 },
|
package/src/create-flow.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ExtractScreen, FlowJson, NextResult,
|
|
1
|
+
import type { ExtractScreen, FlowJson, NextResult, PayloadByScreenId, ScreenName, ScreenTrigger } from './types'
|
|
2
2
|
|
|
3
3
|
type Handlers<F extends FlowJson> = {
|
|
4
|
-
[K in ScreenName<F>]: (data:
|
|
4
|
+
[K in ScreenName<F>]: (data: PayloadByScreenId<F, K>) => Promise<NextResult<F, K>>
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -14,11 +14,11 @@ export function createFlow<F extends FlowJson>(flow: F, handlers: Handlers<F>) {
|
|
|
14
14
|
return {
|
|
15
15
|
dispatch<T extends ScreenTrigger<ScreenName<F>>>(
|
|
16
16
|
trigger: T,
|
|
17
|
-
|
|
17
|
+
payload: PayloadByScreenId<F, ExtractScreen<T, F>>
|
|
18
18
|
): Promise<NextResult<F, ExtractScreen<T, F>>> {
|
|
19
19
|
const screen = trigger.replace('screen.', '') as ExtractScreen<T, F>
|
|
20
20
|
|
|
21
|
-
return handlers[screen](
|
|
21
|
+
return handlers[screen](payload)
|
|
22
22
|
},
|
|
23
23
|
|
|
24
24
|
flow
|
package/src/types/flow-json.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export type FlowJsonDataValue =
|
|
2
|
-
| { type: 'string'; __example__
|
|
3
|
-
| { type: 'number'; __example__
|
|
4
|
-
| { type: 'boolean'; __example__
|
|
5
|
-
| { type: 'object'; properties
|
|
2
|
+
| { type: 'string'; __example__: string }
|
|
3
|
+
| { type: 'number'; __example__: number }
|
|
4
|
+
| { type: 'boolean'; __example__: boolean }
|
|
5
|
+
| { type: 'object'; properties?: Record<string, FlowJsonDataValue>; __example__?: Record<string, unknown> }
|
|
6
6
|
| { type: 'array'; items: FlowJsonDataValue; __example__?: unknown[] }
|
|
7
7
|
|
|
8
8
|
export type FlowJsonData = Record<string, FlowJsonDataValue>
|