ballerina-core 1.0.119 → 1.0.121
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/package.json +1 -1
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/apis/state.ts +257 -10
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/baseRenderer/domains/list/state.ts +14 -3
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/baseRenderer/domains/map/state.ts +14 -5
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/baseRenderer/domains/sum/state.ts +17 -6
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/baseRenderer/domains/tuple/state.ts +23 -4
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/baseRenderer/domains/union/state.ts +35 -5
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/baseRenderer/state.ts +105 -4
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/recordFormRenderer/state.ts +29 -4
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/domains/renderers/domains/tableFormRenderer/state.ts +88 -13
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/form/state.ts +1 -0
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/state.ts +256 -331
- package/src/forms/domains/dispatched-forms/deserializer/state.ts +3 -6
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/base-64-file/template.tsx +5 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/boolean/template.tsx +5 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/date/template.tsx +5 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/enum/template.tsx +6 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/list/template.tsx +14 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/map/template.tsx +22 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/record/template.tsx +18 -4
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/searchable-infinite-stream/template.tsx +6 -2
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/searchable-infinite-stream-multiselect/template.tsx +8 -3
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/secret/template.tsx +7 -3
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/string/template.tsx +7 -3
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/sum/template.tsx +19 -3
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/table/coroutines/runner.ts +33 -29
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/table/state.ts +23 -1
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/table/template.tsx +156 -14
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/tuple/template.tsx +21 -3
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/union/template.tsx +17 -4
- package/src/forms/domains/dispatched-forms/dispatcher/domains/abstract-renderers/unit/template.tsx +27 -19
- package/src/forms/domains/dispatched-forms/dispatcher/domains/nestedDispatcher/state.ts +53 -29
- package/src/forms/domains/dispatched-forms/dispatcher/domains/recordFormDispatcher/state.ts +11 -0
- package/src/forms/domains/dispatched-forms/dispatcher/domains/runner/coroutines/runner.ts +18 -20
- package/src/forms/domains/dispatched-forms/dispatcher/domains/runner/state.ts +3 -4
- package/src/forms/domains/dispatched-forms/dispatcher/domains/runner/template.tsx +4 -4
- package/src/forms/domains/dispatched-forms/dispatcher/domains/tableFormDispatcher/state.ts +62 -36
- package/src/forms/domains/dispatched-forms/dispatcher/state.ts +3 -0
- package/src/forms/domains/parser/domains/built-ins/state.ts +0 -3
- package/src/forms/domains/parser/domains/predicates/domains/extractor/state.ts +176 -209
- package/src/value-infinite-data-stream/state.ts +55 -2
package/package.json
CHANGED
package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/apis/state.ts
CHANGED
|
@@ -1,16 +1,263 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { List, Map } from "immutable";
|
|
2
|
+
import {
|
|
3
|
+
EntityApi,
|
|
4
|
+
isObject,
|
|
5
|
+
isString,
|
|
6
|
+
ValueOrErrors,
|
|
7
|
+
} from "../../../../../../../../../main";
|
|
8
|
+
import { DispatchIsObject, DispatchTypeName } from "../types/state";
|
|
2
9
|
|
|
3
10
|
export type SerializedEntityApi = {
|
|
4
11
|
type?: any;
|
|
5
12
|
methods?: any;
|
|
6
13
|
};
|
|
7
14
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
export type SerializedLookupApi = {
|
|
16
|
+
enums?: unknown;
|
|
17
|
+
streams?: unknown;
|
|
18
|
+
one?: unknown;
|
|
19
|
+
many?: unknown;
|
|
20
|
+
tables?: unknown;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export type SpecificationApis = {
|
|
24
|
+
entities: Map<string, EntityApi>; // TODO move entity apis out
|
|
25
|
+
enums?: EnumApis;
|
|
26
|
+
streams?: StreamApis;
|
|
27
|
+
tables?: TableApis;
|
|
28
|
+
lookups?: LookupApis;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export type EnumApiName = string;
|
|
32
|
+
export type EnumApis = Map<EnumApiName, DispatchTypeName>;
|
|
33
|
+
export const EnumApis = {
|
|
34
|
+
Operations: {
|
|
35
|
+
Deserialize: (
|
|
36
|
+
serializedApiEnums?: unknown,
|
|
37
|
+
): ValueOrErrors<undefined | EnumApis, string> =>
|
|
38
|
+
serializedApiEnums === undefined
|
|
39
|
+
? ValueOrErrors.Default.return(undefined)
|
|
40
|
+
: !isObject(serializedApiEnums)
|
|
41
|
+
? ValueOrErrors.Default.throwOne(
|
|
42
|
+
`serializedApiEnums is not an object`,
|
|
43
|
+
)
|
|
44
|
+
: ValueOrErrors.Operations.All(
|
|
45
|
+
List<ValueOrErrors<[EnumApiName, DispatchTypeName], string>>(
|
|
46
|
+
Object.entries(serializedApiEnums).map(([key, value]) =>
|
|
47
|
+
!isString(key)
|
|
48
|
+
? ValueOrErrors.Default.throwOne(`key is not a string`)
|
|
49
|
+
: !isString(value)
|
|
50
|
+
? ValueOrErrors.Default.throwOne(`value is not a string`)
|
|
51
|
+
: ValueOrErrors.Default.return([key, value]),
|
|
52
|
+
),
|
|
53
|
+
),
|
|
54
|
+
)
|
|
55
|
+
.Then((entries) =>
|
|
56
|
+
ValueOrErrors.Default.return(
|
|
57
|
+
Map<EnumApiName, DispatchTypeName>(entries),
|
|
58
|
+
),
|
|
59
|
+
)
|
|
60
|
+
.MapErrors((errors) =>
|
|
61
|
+
errors.map(
|
|
62
|
+
(error) => `${error}\n...When deserializing enum apis`,
|
|
63
|
+
),
|
|
64
|
+
),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export type StreamApiName = string;
|
|
69
|
+
export type StreamApis = Map<StreamApiName, DispatchTypeName>;
|
|
70
|
+
export const StreamApis = {
|
|
71
|
+
Operations: {
|
|
72
|
+
Deserialize: (
|
|
73
|
+
serializedApiStreams?: unknown,
|
|
74
|
+
): ValueOrErrors<undefined | StreamApis, string> =>
|
|
75
|
+
serializedApiStreams === undefined
|
|
76
|
+
? ValueOrErrors.Default.return(undefined)
|
|
77
|
+
: !isObject(serializedApiStreams)
|
|
78
|
+
? ValueOrErrors.Default.throwOne(
|
|
79
|
+
`serializedApiStreams is not an object`,
|
|
80
|
+
)
|
|
81
|
+
: ValueOrErrors.Operations.All(
|
|
82
|
+
List<ValueOrErrors<[StreamApiName, DispatchTypeName], string>>(
|
|
83
|
+
Object.entries(serializedApiStreams).map(([key, value]) =>
|
|
84
|
+
!isString(key)
|
|
85
|
+
? ValueOrErrors.Default.throwOne(`key is not a string`)
|
|
86
|
+
: !isString(value)
|
|
87
|
+
? ValueOrErrors.Default.throwOne(`value is not a string`)
|
|
88
|
+
: ValueOrErrors.Default.return([key, value]),
|
|
89
|
+
),
|
|
90
|
+
),
|
|
91
|
+
)
|
|
92
|
+
.Then((entries) =>
|
|
93
|
+
ValueOrErrors.Default.return(
|
|
94
|
+
Map<StreamApiName, DispatchTypeName>(entries),
|
|
95
|
+
),
|
|
96
|
+
)
|
|
97
|
+
.MapErrors((errors) =>
|
|
98
|
+
errors.map(
|
|
99
|
+
(error) => `${error}\n...When deserializing stream apis`,
|
|
100
|
+
),
|
|
101
|
+
),
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export type TableApiName = string;
|
|
106
|
+
export type TableApis = Map<TableApiName, { type: DispatchTypeName }>;
|
|
107
|
+
export const TableApis = {
|
|
108
|
+
Operations: {
|
|
109
|
+
Deserialize: (
|
|
110
|
+
serializedApiTables?: unknown,
|
|
111
|
+
): ValueOrErrors<undefined | TableApis, string> =>
|
|
112
|
+
serializedApiTables === undefined
|
|
113
|
+
? ValueOrErrors.Default.return(undefined)
|
|
114
|
+
: !isObject(serializedApiTables)
|
|
115
|
+
? ValueOrErrors.Default.throwOne(
|
|
116
|
+
`serializedApiTables is not an object`,
|
|
117
|
+
)
|
|
118
|
+
: ValueOrErrors.Operations.All(
|
|
119
|
+
List<
|
|
120
|
+
ValueOrErrors<
|
|
121
|
+
[TableApiName, { type: DispatchTypeName }],
|
|
122
|
+
string
|
|
123
|
+
>
|
|
124
|
+
>(
|
|
125
|
+
Object.entries(serializedApiTables).map(([key, value]) =>
|
|
126
|
+
!isString(key)
|
|
127
|
+
? ValueOrErrors.Default.throwOne(`key is not a string`)
|
|
128
|
+
: !isObject(value)
|
|
129
|
+
? ValueOrErrors.Default.throwOne(`value is not an object`)
|
|
130
|
+
: !("type" in value)
|
|
131
|
+
? ValueOrErrors.Default.throwOne(
|
|
132
|
+
`type is missing from value`,
|
|
133
|
+
)
|
|
134
|
+
: !isString(value.type)
|
|
135
|
+
? ValueOrErrors.Default.throwOne(
|
|
136
|
+
`type is not a string`,
|
|
137
|
+
)
|
|
138
|
+
: // TODO: type assertion is safe but would like typescript to know that
|
|
139
|
+
ValueOrErrors.Default.return([
|
|
140
|
+
key,
|
|
141
|
+
value as { type: DispatchTypeName },
|
|
142
|
+
]),
|
|
143
|
+
),
|
|
144
|
+
),
|
|
145
|
+
)
|
|
146
|
+
.Then((entries) =>
|
|
147
|
+
ValueOrErrors.Default.return(
|
|
148
|
+
Map<TableApiName, { type: DispatchTypeName }>(entries),
|
|
149
|
+
),
|
|
150
|
+
)
|
|
151
|
+
.MapErrors((errors) =>
|
|
152
|
+
errors.map(
|
|
153
|
+
(error) => `${error}\n...When deserializing table apis`,
|
|
154
|
+
),
|
|
155
|
+
),
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export type LookupApiName = string;
|
|
160
|
+
export type LookupApis = Map<LookupApiName, LookupApi>;
|
|
161
|
+
export type LookupApi = {
|
|
162
|
+
enums?: EnumApis;
|
|
163
|
+
streams?: StreamApis;
|
|
164
|
+
tables?: TableApis;
|
|
165
|
+
lookups?: LookupApis;
|
|
166
|
+
one?: Map<
|
|
167
|
+
string,
|
|
168
|
+
{
|
|
169
|
+
type: DispatchTypeName;
|
|
170
|
+
methods: {
|
|
171
|
+
update: boolean;
|
|
172
|
+
getManyUnlinked: boolean;
|
|
173
|
+
create: boolean;
|
|
174
|
+
delete: boolean;
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
>;
|
|
178
|
+
many?: Map<
|
|
179
|
+
string,
|
|
180
|
+
{
|
|
181
|
+
type: DispatchTypeName;
|
|
182
|
+
methods: {
|
|
183
|
+
update: boolean;
|
|
184
|
+
getManyUnlinked: boolean;
|
|
185
|
+
create: boolean;
|
|
186
|
+
delete: boolean;
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
>;
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
// TODO add one and many deserialization
|
|
193
|
+
export const LookupApis = {
|
|
194
|
+
Operations: {
|
|
195
|
+
isLookupApi: (
|
|
196
|
+
_: unknown,
|
|
197
|
+
): _ is {
|
|
198
|
+
enums?: unknown;
|
|
199
|
+
streams?: unknown;
|
|
200
|
+
tables?: unknown;
|
|
201
|
+
lookups?: unknown;
|
|
202
|
+
one?: unknown;
|
|
203
|
+
many?: unknown;
|
|
204
|
+
} => DispatchIsObject(_),
|
|
205
|
+
DeserializeOne: (
|
|
206
|
+
serializedLookupApi: unknown,
|
|
207
|
+
): ValueOrErrors<LookupApi, string> =>
|
|
208
|
+
!LookupApis.Operations.isLookupApi(serializedLookupApi)
|
|
209
|
+
? ValueOrErrors.Default.throwOne(`serializedLookupApi is not an object`)
|
|
210
|
+
: EnumApis.Operations.Deserialize(serializedLookupApi.enums)
|
|
211
|
+
.Then((enums) =>
|
|
212
|
+
StreamApis.Operations.Deserialize(
|
|
213
|
+
serializedLookupApi.streams,
|
|
214
|
+
).Then((streams) =>
|
|
215
|
+
TableApis.Operations.Deserialize(
|
|
216
|
+
serializedLookupApi.tables,
|
|
217
|
+
).Then((tables) =>
|
|
218
|
+
LookupApis.Operations.Deserialize(
|
|
219
|
+
serializedLookupApi.lookups,
|
|
220
|
+
).Then((lookups) =>
|
|
221
|
+
ValueOrErrors.Default.return({
|
|
222
|
+
enums,
|
|
223
|
+
streams,
|
|
224
|
+
tables,
|
|
225
|
+
lookups,
|
|
226
|
+
}),
|
|
227
|
+
),
|
|
228
|
+
),
|
|
229
|
+
),
|
|
230
|
+
)
|
|
231
|
+
.MapErrors((errors) =>
|
|
232
|
+
errors.map(
|
|
233
|
+
(error) => `${error}\n...When deserializing lookup api`,
|
|
234
|
+
),
|
|
235
|
+
),
|
|
236
|
+
Deserialize: (
|
|
237
|
+
serializedApiLookups?: unknown,
|
|
238
|
+
): ValueOrErrors<undefined | LookupApis, string> =>
|
|
239
|
+
serializedApiLookups === undefined
|
|
240
|
+
? ValueOrErrors.Default.return(undefined)
|
|
241
|
+
: !isObject(serializedApiLookups)
|
|
242
|
+
? ValueOrErrors.Default.throwOne(
|
|
243
|
+
`serializedApiLookups is not an object`,
|
|
244
|
+
)
|
|
245
|
+
: ValueOrErrors.Operations.All(
|
|
246
|
+
List<ValueOrErrors<[LookupApiName, LookupApi], string>>(
|
|
247
|
+
Object.entries(serializedApiLookups).map(([key, value]) =>
|
|
248
|
+
ValueOrErrors.Default.return([key, value]),
|
|
249
|
+
),
|
|
250
|
+
),
|
|
251
|
+
)
|
|
252
|
+
.Then((entries) =>
|
|
253
|
+
ValueOrErrors.Default.return(
|
|
254
|
+
Map<LookupApiName, LookupApi>(entries),
|
|
255
|
+
),
|
|
256
|
+
)
|
|
257
|
+
.MapErrors((errors) =>
|
|
258
|
+
errors.map(
|
|
259
|
+
(error) => `${error}\n...When deserializing lookup apis`,
|
|
260
|
+
),
|
|
261
|
+
),
|
|
262
|
+
},
|
|
263
|
+
};
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
+
import { Map } from "immutable";
|
|
1
2
|
import {
|
|
2
3
|
Expr,
|
|
3
4
|
ValueOrErrors,
|
|
4
5
|
} from "../../../../../../../../../../../../../../../main";
|
|
5
|
-
import { ListType } from "../../../../../../../types/state";
|
|
6
|
+
import { DispatchParsedType, ListType } from "../../../../../../../types/state";
|
|
6
7
|
import {
|
|
7
8
|
BaseBaseRenderer,
|
|
8
9
|
BaseSerializedBaseRenderer,
|
|
9
10
|
ParentContext,
|
|
10
11
|
BaseRenderer,
|
|
11
12
|
} from "../../state";
|
|
13
|
+
import { TableFormRenderer } from "../../../tableFormRenderer/state";
|
|
14
|
+
import { RecordFormRenderer } from "../../../recordFormRenderer/state";
|
|
12
15
|
|
|
13
16
|
export type SerializedBaseListRenderer = {
|
|
14
17
|
elementRenderer?: unknown;
|
|
@@ -18,7 +21,10 @@ export type SerializedBaseListRenderer = {
|
|
|
18
21
|
|
|
19
22
|
export type BaseListRenderer<T> = BaseBaseRenderer & {
|
|
20
23
|
kind: "baseListRenderer";
|
|
21
|
-
elementRenderer:
|
|
24
|
+
elementRenderer:
|
|
25
|
+
| BaseRenderer<T>
|
|
26
|
+
| TableFormRenderer<T>
|
|
27
|
+
| RecordFormRenderer<T>;
|
|
22
28
|
type: ListType<T>;
|
|
23
29
|
concreteRendererName: string;
|
|
24
30
|
};
|
|
@@ -27,7 +33,10 @@ export const BaseListRenderer = {
|
|
|
27
33
|
Default: <T>(
|
|
28
34
|
type: ListType<T>,
|
|
29
35
|
concreteRendererName: string,
|
|
30
|
-
elementRenderer:
|
|
36
|
+
elementRenderer:
|
|
37
|
+
| BaseRenderer<T>
|
|
38
|
+
| TableFormRenderer<T>
|
|
39
|
+
| RecordFormRenderer<T>,
|
|
31
40
|
visible?: Expr,
|
|
32
41
|
disabled?: Expr,
|
|
33
42
|
label?: string,
|
|
@@ -96,6 +105,7 @@ export const BaseListRenderer = {
|
|
|
96
105
|
serialized: SerializedBaseListRenderer,
|
|
97
106
|
fieldViews: any,
|
|
98
107
|
renderingContext: ParentContext,
|
|
108
|
+
types: Map<string, DispatchParsedType<T>>,
|
|
99
109
|
): ValueOrErrors<BaseListRenderer<T>, string> =>
|
|
100
110
|
BaseListRenderer.Operations.tryAsValidBaseListRenderer(serialized)
|
|
101
111
|
.Then((renderer) =>
|
|
@@ -113,6 +123,7 @@ export const BaseListRenderer = {
|
|
|
113
123
|
fieldViews,
|
|
114
124
|
"nested",
|
|
115
125
|
"Element",
|
|
126
|
+
types,
|
|
116
127
|
).Then((elementRenderer) =>
|
|
117
128
|
ValueOrErrors.Default.return(
|
|
118
129
|
BaseListRenderer.Default(
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { Map } from "immutable";
|
|
1
2
|
import {
|
|
2
3
|
Expr,
|
|
4
|
+
TableFormRenderer,
|
|
3
5
|
ValueOrErrors,
|
|
4
6
|
} from "../../../../../../../../../../../../../../../main";
|
|
5
|
-
import { MapType } from "../../../../../../../types/state";
|
|
7
|
+
import { DispatchParsedType, MapType } from "../../../../../../../types/state";
|
|
6
8
|
import {
|
|
7
9
|
BaseBaseRenderer,
|
|
8
10
|
BaseSerializedBaseRenderer,
|
|
@@ -10,6 +12,7 @@ import {
|
|
|
10
12
|
ParentContext,
|
|
11
13
|
BaseRenderer,
|
|
12
14
|
} from "../../state";
|
|
15
|
+
import { RecordFormRenderer } from "../../../recordFormRenderer/state";
|
|
13
16
|
|
|
14
17
|
export type SerializedBaseMapRenderer = {
|
|
15
18
|
keyRenderer?: unknown;
|
|
@@ -18,8 +21,8 @@ export type SerializedBaseMapRenderer = {
|
|
|
18
21
|
|
|
19
22
|
export type BaseMapRenderer<T> = BaseBaseRenderer & {
|
|
20
23
|
kind: "baseMapRenderer";
|
|
21
|
-
keyRenderer: BaseRenderer<T>;
|
|
22
|
-
valueRenderer: BaseRenderer<T>;
|
|
24
|
+
keyRenderer: BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>;
|
|
25
|
+
valueRenderer: BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>;
|
|
23
26
|
type: MapType<T>;
|
|
24
27
|
concreteRendererName: string;
|
|
25
28
|
};
|
|
@@ -28,8 +31,11 @@ export const BaseMapRenderer = {
|
|
|
28
31
|
Default: <T>(
|
|
29
32
|
type: MapType<T>,
|
|
30
33
|
concreteRendererName: string,
|
|
31
|
-
keyRenderer: BaseRenderer<T>,
|
|
32
|
-
valueRenderer:
|
|
34
|
+
keyRenderer: BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>,
|
|
35
|
+
valueRenderer:
|
|
36
|
+
| BaseRenderer<T>
|
|
37
|
+
| TableFormRenderer<T>
|
|
38
|
+
| RecordFormRenderer<T>,
|
|
33
39
|
visible?: Expr,
|
|
34
40
|
disabled?: Expr,
|
|
35
41
|
label?: string,
|
|
@@ -82,6 +88,7 @@ export const BaseMapRenderer = {
|
|
|
82
88
|
serialized: SerializedBaseMapRenderer,
|
|
83
89
|
fieldViews: any,
|
|
84
90
|
renderingContext: ParentContext,
|
|
91
|
+
types: Map<string, DispatchParsedType<T>>,
|
|
85
92
|
): ValueOrErrors<BaseMapRenderer<T>, string> =>
|
|
86
93
|
BaseMapRenderer.Operations.tryAsValidMapBaseRenderer(serialized)
|
|
87
94
|
.Then((renderer) =>
|
|
@@ -99,6 +106,7 @@ export const BaseMapRenderer = {
|
|
|
99
106
|
fieldViews,
|
|
100
107
|
"nested",
|
|
101
108
|
"Key",
|
|
109
|
+
types,
|
|
102
110
|
).Then((deserializedKeyRenderer) =>
|
|
103
111
|
BaseRenderer.Operations.DeserializeAs(
|
|
104
112
|
type.args[1],
|
|
@@ -106,6 +114,7 @@ export const BaseMapRenderer = {
|
|
|
106
114
|
fieldViews,
|
|
107
115
|
"nested",
|
|
108
116
|
"Value",
|
|
117
|
+
types,
|
|
109
118
|
).Then((deserializedValueRenderer) =>
|
|
110
119
|
ValueOrErrors.Default.return(
|
|
111
120
|
BaseMapRenderer.Default(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Map } from "immutable";
|
|
2
2
|
import {
|
|
3
3
|
SerializedBaseRenderer,
|
|
4
4
|
BaseSerializedBaseRenderer,
|
|
@@ -6,11 +6,13 @@ import {
|
|
|
6
6
|
BaseBaseRenderer as BaseBaseRenderer,
|
|
7
7
|
ParentContext,
|
|
8
8
|
} from "../../state";
|
|
9
|
-
import { SumType } from "../../../../../../../types/state";
|
|
9
|
+
import { DispatchParsedType, SumType } from "../../../../../../../types/state";
|
|
10
10
|
import {
|
|
11
11
|
Expr,
|
|
12
|
+
TableFormRenderer,
|
|
12
13
|
ValueOrErrors,
|
|
13
14
|
} from "../../../../../../../../../../../../../../../main";
|
|
15
|
+
import { RecordFormRenderer } from "../../../recordFormRenderer/state";
|
|
14
16
|
|
|
15
17
|
export type SerializedSumBaseRenderer = {
|
|
16
18
|
leftRenderer?: unknown;
|
|
@@ -19,8 +21,8 @@ export type SerializedSumBaseRenderer = {
|
|
|
19
21
|
|
|
20
22
|
export type BaseSumRenderer<T> = BaseBaseRenderer & {
|
|
21
23
|
kind: "baseSumRenderer";
|
|
22
|
-
leftRenderer: BaseRenderer<T>;
|
|
23
|
-
rightRenderer: BaseRenderer<T>;
|
|
24
|
+
leftRenderer: BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>;
|
|
25
|
+
rightRenderer: BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>;
|
|
24
26
|
type: SumType<T>;
|
|
25
27
|
concreteRendererName: string;
|
|
26
28
|
};
|
|
@@ -29,8 +31,14 @@ export const BaseSumRenderer = {
|
|
|
29
31
|
Default: <T>(
|
|
30
32
|
type: SumType<T>,
|
|
31
33
|
concreteRendererName: string,
|
|
32
|
-
leftRenderer:
|
|
33
|
-
|
|
34
|
+
leftRenderer:
|
|
35
|
+
| BaseRenderer<T>
|
|
36
|
+
| TableFormRenderer<T>
|
|
37
|
+
| RecordFormRenderer<T>,
|
|
38
|
+
rightRenderer:
|
|
39
|
+
| BaseRenderer<T>
|
|
40
|
+
| TableFormRenderer<T>
|
|
41
|
+
| RecordFormRenderer<T>,
|
|
34
42
|
visible?: Expr,
|
|
35
43
|
disabled?: Expr,
|
|
36
44
|
label?: string,
|
|
@@ -83,6 +91,7 @@ export const BaseSumRenderer = {
|
|
|
83
91
|
serialized: SerializedSumBaseRenderer,
|
|
84
92
|
renderingContext: ParentContext,
|
|
85
93
|
fieldViews: any,
|
|
94
|
+
types: Map<string, DispatchParsedType<T>>,
|
|
86
95
|
): ValueOrErrors<BaseSumRenderer<T>, string> =>
|
|
87
96
|
BaseSumRenderer.Operations.tryAsValidSumBaseRenderer(serialized)
|
|
88
97
|
.Then((renderer) =>
|
|
@@ -100,6 +109,7 @@ export const BaseSumRenderer = {
|
|
|
100
109
|
fieldViews,
|
|
101
110
|
"nested",
|
|
102
111
|
"Left",
|
|
112
|
+
types,
|
|
103
113
|
).Then((deserializedLeftRenderer) =>
|
|
104
114
|
BaseRenderer.Operations.DeserializeAs(
|
|
105
115
|
type.args[1],
|
|
@@ -107,6 +117,7 @@ export const BaseSumRenderer = {
|
|
|
107
117
|
fieldViews,
|
|
108
118
|
"nested",
|
|
109
119
|
"Right",
|
|
120
|
+
types,
|
|
110
121
|
).Then((deserializedRightRenderer) =>
|
|
111
122
|
ValueOrErrors.Default.return(
|
|
112
123
|
BaseSumRenderer.Default(
|
|
@@ -1,8 +1,14 @@
|
|
|
1
|
+
import { Map } from "immutable";
|
|
1
2
|
import {
|
|
2
3
|
Expr,
|
|
4
|
+
TableFormRenderer,
|
|
3
5
|
ValueOrErrors,
|
|
4
6
|
} from "../../../../../../../../../../../../../../../main";
|
|
5
|
-
import {
|
|
7
|
+
import { RecordFormRenderer } from "../../../recordFormRenderer/state";
|
|
8
|
+
import {
|
|
9
|
+
DispatchParsedType,
|
|
10
|
+
TupleType,
|
|
11
|
+
} from "../../../../../../../types/state";
|
|
6
12
|
|
|
7
13
|
import {
|
|
8
14
|
BaseBaseRenderer,
|
|
@@ -19,7 +25,9 @@ export type SerializedBaseTupleRenderer = {
|
|
|
19
25
|
|
|
20
26
|
export type BaseTupleRenderer<T> = BaseBaseRenderer & {
|
|
21
27
|
kind: "baseTupleRenderer";
|
|
22
|
-
itemRenderers: Array<
|
|
28
|
+
itemRenderers: Array<
|
|
29
|
+
BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>
|
|
30
|
+
>;
|
|
23
31
|
type: TupleType<T>;
|
|
24
32
|
concreteRendererName: string;
|
|
25
33
|
};
|
|
@@ -28,7 +36,9 @@ export const BaseTupleRenderer = {
|
|
|
28
36
|
Default: <T>(
|
|
29
37
|
type: TupleType<T>,
|
|
30
38
|
concreteRendererName: string,
|
|
31
|
-
itemRenderers: Array<
|
|
39
|
+
itemRenderers: Array<
|
|
40
|
+
BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>
|
|
41
|
+
>,
|
|
32
42
|
visible?: Expr,
|
|
33
43
|
disabled?: Expr,
|
|
34
44
|
label?: string,
|
|
@@ -96,6 +106,7 @@ export const BaseTupleRenderer = {
|
|
|
96
106
|
serialized: SerializedBaseTupleRenderer,
|
|
97
107
|
fieldViews: any,
|
|
98
108
|
renderingContext: ParentContext,
|
|
109
|
+
types: Map<string, DispatchParsedType<T>>,
|
|
99
110
|
): ValueOrErrors<BaseTupleRenderer<T>, string> =>
|
|
100
111
|
BaseTupleRenderer.Operations.tryAsValidBaseTupleRenderer(serialized)
|
|
101
112
|
.Then((renderer) =>
|
|
@@ -108,7 +119,14 @@ export const BaseTupleRenderer = {
|
|
|
108
119
|
renderingContext,
|
|
109
120
|
).Then((disabledExpr) =>
|
|
110
121
|
ValueOrErrors.Operations.All(
|
|
111
|
-
List<
|
|
122
|
+
List<
|
|
123
|
+
ValueOrErrors<
|
|
124
|
+
| BaseRenderer<T>
|
|
125
|
+
| TableFormRenderer<T>
|
|
126
|
+
| RecordFormRenderer<T>,
|
|
127
|
+
string
|
|
128
|
+
>
|
|
129
|
+
>(
|
|
112
130
|
renderer.itemRenderers.map((itemRenderer, index) =>
|
|
113
131
|
BaseRenderer.Operations.DeserializeAs(
|
|
114
132
|
type.args[index],
|
|
@@ -116,6 +134,7 @@ export const BaseTupleRenderer = {
|
|
|
116
134
|
fieldViews,
|
|
117
135
|
"nested",
|
|
118
136
|
`Item ${index + 1}`,
|
|
137
|
+
types,
|
|
119
138
|
).Then((deserializedItemRenderer) =>
|
|
120
139
|
ValueOrErrors.Default.return(deserializedItemRenderer),
|
|
121
140
|
),
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Expr,
|
|
3
|
+
TableFormRenderer,
|
|
3
4
|
ValueOrErrors,
|
|
4
5
|
} from "../../../../../../../../../../../../../../../main";
|
|
5
|
-
import {
|
|
6
|
+
import { RecordFormRenderer } from "../../../recordFormRenderer/state";
|
|
7
|
+
import {
|
|
8
|
+
DispatchParsedType,
|
|
9
|
+
UnionType,
|
|
10
|
+
} from "../../../../../../../types/state";
|
|
6
11
|
|
|
7
12
|
import {
|
|
8
13
|
BaseBaseRenderer,
|
|
@@ -19,7 +24,10 @@ export type SerializedBaseUnionRenderer = {
|
|
|
19
24
|
|
|
20
25
|
export type BaseUnionRenderer<T> = BaseBaseRenderer & {
|
|
21
26
|
kind: "baseUnionRenderer";
|
|
22
|
-
cases: Map<
|
|
27
|
+
cases: Map<
|
|
28
|
+
string,
|
|
29
|
+
BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>
|
|
30
|
+
>;
|
|
23
31
|
type: UnionType<T>;
|
|
24
32
|
concreteRendererName: string;
|
|
25
33
|
};
|
|
@@ -28,7 +36,10 @@ export const BaseUnionRenderer = {
|
|
|
28
36
|
Default: <T>(
|
|
29
37
|
type: UnionType<T>,
|
|
30
38
|
concreteRendererName: string,
|
|
31
|
-
cases: Map<
|
|
39
|
+
cases: Map<
|
|
40
|
+
string,
|
|
41
|
+
BaseRenderer<T> | TableFormRenderer<T> | RecordFormRenderer<T>
|
|
42
|
+
>,
|
|
32
43
|
visible?: Expr,
|
|
33
44
|
disabled?: Expr,
|
|
34
45
|
label?: string,
|
|
@@ -95,6 +106,7 @@ export const BaseUnionRenderer = {
|
|
|
95
106
|
serialized: SerializedBaseUnionRenderer,
|
|
96
107
|
fieldViews: any,
|
|
97
108
|
renderingContext: ParentContext,
|
|
109
|
+
types: Map<string, DispatchParsedType<T>>,
|
|
98
110
|
): ValueOrErrors<BaseUnionRenderer<T>, string> =>
|
|
99
111
|
BaseUnionRenderer.Operations.tryAsValidBaseUnionRenderer(serialized)
|
|
100
112
|
.Then((renderer) =>
|
|
@@ -107,7 +119,19 @@ export const BaseUnionRenderer = {
|
|
|
107
119
|
renderingContext,
|
|
108
120
|
).Then((disabledExpr) =>
|
|
109
121
|
ValueOrErrors.Operations.All(
|
|
110
|
-
List<
|
|
122
|
+
List<
|
|
123
|
+
ValueOrErrors<
|
|
124
|
+
[
|
|
125
|
+
string,
|
|
126
|
+
(
|
|
127
|
+
| BaseRenderer<T>
|
|
128
|
+
| TableFormRenderer<T>
|
|
129
|
+
| RecordFormRenderer<T>
|
|
130
|
+
),
|
|
131
|
+
],
|
|
132
|
+
string
|
|
133
|
+
>
|
|
134
|
+
>(
|
|
111
135
|
Object.entries(renderer.cases).map(([caseName, caseProp]) => {
|
|
112
136
|
const caseType = type.args.get(caseName);
|
|
113
137
|
if (!caseType) {
|
|
@@ -121,6 +145,7 @@ export const BaseUnionRenderer = {
|
|
|
121
145
|
fieldViews,
|
|
122
146
|
"nested",
|
|
123
147
|
`case ${caseName}`,
|
|
148
|
+
types,
|
|
124
149
|
).Then((deserializedCase) =>
|
|
125
150
|
ValueOrErrors.Default.return([
|
|
126
151
|
caseName,
|
|
@@ -134,7 +159,12 @@ export const BaseUnionRenderer = {
|
|
|
134
159
|
BaseUnionRenderer.Default(
|
|
135
160
|
type,
|
|
136
161
|
renderer.renderer,
|
|
137
|
-
Map<
|
|
162
|
+
Map<
|
|
163
|
+
string,
|
|
164
|
+
| BaseRenderer<T>
|
|
165
|
+
| TableFormRenderer<T>
|
|
166
|
+
| RecordFormRenderer<T>
|
|
167
|
+
>(deserializedCases),
|
|
138
168
|
visibleExpr,
|
|
139
169
|
disabledExpr,
|
|
140
170
|
renderer.label,
|