ballerina-core 1.0.191 → 1.0.193
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/built-ins/state.ts +3 -18
- package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.ts +21 -35
- package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.tsx +0 -3
- package/src/forms/domains/dispatched-forms/runner/domains/traversal/state.ts +106 -12
- package/src/forms/domains/parser/domains/predicates/state.ts +1 -1
package/package.json
CHANGED
|
@@ -1324,30 +1324,15 @@ export const dispatchFromAPIRawValue =
|
|
|
1324
1324
|
)}`,
|
|
1325
1325
|
);
|
|
1326
1326
|
|
|
1327
|
-
if (caseType.kind != "record" && caseType.kind != "lookup")
|
|
1328
|
-
return ValueOrErrors.Default.throwOne(
|
|
1329
|
-
`union case ${
|
|
1330
|
-
result.caseName
|
|
1331
|
-
} expected record or lookup type, got ${JSON.stringify(caseType)}`,
|
|
1332
|
-
);
|
|
1333
|
-
|
|
1334
1327
|
return dispatchFromAPIRawValue(
|
|
1335
1328
|
caseType,
|
|
1336
1329
|
types,
|
|
1337
1330
|
converters,
|
|
1338
1331
|
injectedPrimitives,
|
|
1339
1332
|
)(result.fields).Then((value) =>
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
)
|
|
1344
|
-
: ValueOrErrors.Default.throwOne(
|
|
1345
|
-
`union case ${
|
|
1346
|
-
result.caseName
|
|
1347
|
-
} expected record, got ${PredicateValue.Operations.GetKind(
|
|
1348
|
-
value,
|
|
1349
|
-
)}`,
|
|
1350
|
-
),
|
|
1333
|
+
ValueOrErrors.Default.return(
|
|
1334
|
+
PredicateValue.Default.unionCase(result.caseName, value),
|
|
1335
|
+
),
|
|
1351
1336
|
);
|
|
1352
1337
|
}
|
|
1353
1338
|
|
package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.ts
CHANGED
|
@@ -191,6 +191,8 @@ export const SerializedType = {
|
|
|
191
191
|
SerializedType.isApplication(_) &&
|
|
192
192
|
_.fun == "ReadOnly" &&
|
|
193
193
|
_.args.length == 1,
|
|
194
|
+
isRecordFields: (_: unknown) =>
|
|
195
|
+
typeof _ == "object" && _ != null && !("fun" in _) && !("args" in _),
|
|
194
196
|
};
|
|
195
197
|
|
|
196
198
|
export type StringSerializedType = string;
|
|
@@ -1042,41 +1044,25 @@ export const DispatchParsedType = {
|
|
|
1042
1044
|
return ValueOrErrors.Operations.All(
|
|
1043
1045
|
List<ValueOrErrors<[string, DispatchParsedType<T>], string>>(
|
|
1044
1046
|
rawType.args.map((unionCase) =>
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
)
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
)
|
|
1065
|
-
: DispatchParsedType.Operations.ParseRawType(
|
|
1066
|
-
`Union:Case ${unionCase.caseName}`,
|
|
1067
|
-
unionCase.fields == undefined
|
|
1068
|
-
? { fields: {} }
|
|
1069
|
-
: unionCase,
|
|
1070
|
-
typeNames,
|
|
1071
|
-
serializedTypes,
|
|
1072
|
-
alreadyParsedTypes,
|
|
1073
|
-
injectedPrimitives,
|
|
1074
|
-
).Then((parsedType) =>
|
|
1075
|
-
ValueOrErrors.Default.return([
|
|
1076
|
-
unionCase.caseName,
|
|
1077
|
-
parsedType[0],
|
|
1078
|
-
]),
|
|
1079
|
-
),
|
|
1047
|
+
DispatchParsedType.Operations.ParseRawType(
|
|
1048
|
+
`Union:Case ${unionCase.caseName}`,
|
|
1049
|
+
unionCase.fields == undefined
|
|
1050
|
+
? { fields: {} }
|
|
1051
|
+
: // we allow the record fields to be defined directly in the spec instead of
|
|
1052
|
+
// inside a fields key
|
|
1053
|
+
SerializedType.isRecordFields(unionCase.fields)
|
|
1054
|
+
? { fields: unionCase.fields }
|
|
1055
|
+
: unionCase.fields,
|
|
1056
|
+
typeNames,
|
|
1057
|
+
serializedTypes,
|
|
1058
|
+
alreadyParsedTypes,
|
|
1059
|
+
injectedPrimitives,
|
|
1060
|
+
).Then((parsedType) =>
|
|
1061
|
+
ValueOrErrors.Default.return([
|
|
1062
|
+
unionCase.caseName,
|
|
1063
|
+
parsedType[0],
|
|
1064
|
+
]),
|
|
1065
|
+
),
|
|
1080
1066
|
),
|
|
1081
1067
|
),
|
|
1082
1068
|
).Then((parsedUnionCases) =>
|
package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.tsx
CHANGED
|
@@ -504,9 +504,6 @@ export const TableAbstractRenderer = <
|
|
|
504
504
|
.flatMap((_, column) => {
|
|
505
505
|
const EmbeddedCell = EmbeddedCellTemplates.get(column);
|
|
506
506
|
if (EmbeddedCell == undefined) {
|
|
507
|
-
console.error(
|
|
508
|
-
`Cannot find column ${column} in fields ${rowData.fields.keySeq().toArray()}, this is likely due to a mismatch between the data we are trying to parse and the specs.`,
|
|
509
|
-
);
|
|
510
507
|
return [];
|
|
511
508
|
}
|
|
512
509
|
return [
|
|
@@ -78,31 +78,77 @@ export const RendererTraversal = {
|
|
|
78
78
|
|
|
79
79
|
if (
|
|
80
80
|
renderer.kind == "lookupType-lookupRenderer" ||
|
|
81
|
-
renderer.kind == "
|
|
82
|
-
renderer.kind == "
|
|
81
|
+
renderer.kind == "lookupType-inlinedRenderer" ||
|
|
82
|
+
renderer.kind == "inlinedType-lookupRenderer"
|
|
83
83
|
) {
|
|
84
84
|
if (
|
|
85
85
|
renderer.kind == "lookupType-lookupRenderer" ||
|
|
86
|
-
renderer.kind == "
|
|
86
|
+
renderer.kind == "lookupType-inlinedRenderer"
|
|
87
87
|
) {
|
|
88
|
-
// renderer.renderer.renderer is the form name
|
|
89
|
-
// this is a form lookup, so "local" changes here to the traversed value
|
|
90
88
|
return LookupRenderer.Operations.ResolveRenderer(
|
|
91
89
|
renderer,
|
|
92
90
|
traversalContext.forms,
|
|
93
91
|
).Then((resolvedRenderer) =>
|
|
94
92
|
rec(resolvedRenderer, traversalContext).Then(
|
|
95
93
|
(valueTraversal: Option<ValueTraversal<T, Res>>) =>
|
|
96
|
-
ValueOrErrors.Default.return
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
94
|
+
ValueOrErrors.Default.return<
|
|
95
|
+
Option<ValueTraversal<T, Res>>,
|
|
96
|
+
string
|
|
97
|
+
>(
|
|
98
|
+
// reassign local if it's a lookup renderer
|
|
99
|
+
renderer.kind == "lookupType-lookupRenderer"
|
|
100
|
+
? mapEvalContext((ctx) => ({
|
|
101
|
+
...ctx,
|
|
102
|
+
local: ctx.traversalIterator,
|
|
103
|
+
}))(valueTraversal)
|
|
104
|
+
: valueTraversal,
|
|
105
|
+
).Then((resolvedTraversal) => {
|
|
106
|
+
if (
|
|
107
|
+
traverseNode.kind == "l" &&
|
|
108
|
+
resolvedTraversal.kind == "l"
|
|
109
|
+
) {
|
|
110
|
+
return ValueOrErrors.Default.return(Option.Default.none());
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (traverseNode.kind == "l") {
|
|
114
|
+
return ValueOrErrors.Default.return(resolvedTraversal);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (resolvedTraversal.kind == "l") {
|
|
118
|
+
return ValueOrErrors.Default.return(
|
|
119
|
+
Option.Default.some((evalContext: EvalContext<T, Res>) =>
|
|
120
|
+
traverseNode
|
|
121
|
+
.value(evalContext)
|
|
122
|
+
.Then((nodeResult) =>
|
|
123
|
+
ValueOrErrors.Default.return(nodeResult),
|
|
124
|
+
),
|
|
125
|
+
),
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return ValueOrErrors.Default.return(
|
|
130
|
+
Option.Default.some((evalContext: EvalContext<T, Res>) => {
|
|
131
|
+
return resolvedTraversal
|
|
132
|
+
.value(evalContext)
|
|
133
|
+
.Then((resolvedTraversal) =>
|
|
134
|
+
traverseNode
|
|
135
|
+
.value(evalContext)
|
|
136
|
+
.Then((nodeResult) =>
|
|
137
|
+
ValueOrErrors.Default.return<Res, string>(
|
|
138
|
+
traversalContext.joinRes([
|
|
139
|
+
nodeResult,
|
|
140
|
+
resolvedTraversal,
|
|
141
|
+
]),
|
|
142
|
+
),
|
|
143
|
+
),
|
|
144
|
+
);
|
|
145
|
+
}),
|
|
146
|
+
);
|
|
147
|
+
}),
|
|
102
148
|
),
|
|
103
149
|
);
|
|
104
150
|
}
|
|
105
|
-
|
|
151
|
+
|
|
106
152
|
return LookupRenderer.Operations.ResolveRenderer(
|
|
107
153
|
renderer,
|
|
108
154
|
traversalContext.forms,
|
|
@@ -113,6 +159,54 @@ export const RendererTraversal = {
|
|
|
113
159
|
),
|
|
114
160
|
);
|
|
115
161
|
}
|
|
162
|
+
|
|
163
|
+
if (
|
|
164
|
+
renderer.type.kind == "readOnly" &&
|
|
165
|
+
renderer.kind == "readOnlyRenderer"
|
|
166
|
+
) {
|
|
167
|
+
return rec(renderer.childRenderer.renderer, traversalContext).Then(
|
|
168
|
+
(valueTraversal: Option<ValueTraversal<T, Res>>) => {
|
|
169
|
+
if (valueTraversal.kind == "l" && traverseNode.kind == "l") {
|
|
170
|
+
return ValueOrErrors.Default.return(Option.Default.none());
|
|
171
|
+
}
|
|
172
|
+
return ValueOrErrors.Default.return(
|
|
173
|
+
Option.Default.some((evalContext: EvalContext<T, Res>) => {
|
|
174
|
+
const iterator = evalContext.traversalIterator;
|
|
175
|
+
if (!PredicateValue.Operations.IsReadOnly(iterator)) {
|
|
176
|
+
return ValueOrErrors.Default.throwOne<Res, string>(
|
|
177
|
+
`Error: traversal iterator is not read only, got ${JSON.stringify(
|
|
178
|
+
iterator,
|
|
179
|
+
undefined,
|
|
180
|
+
2,
|
|
181
|
+
)}`,
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
return (
|
|
185
|
+
valueTraversal.kind == "r"
|
|
186
|
+
? valueTraversal.value({
|
|
187
|
+
...evalContext,
|
|
188
|
+
traversalIterator: iterator.ReadOnly,
|
|
189
|
+
})
|
|
190
|
+
: ValueOrErrors.Default.return<Res, string>(
|
|
191
|
+
traversalContext.zeroRes(unit),
|
|
192
|
+
)
|
|
193
|
+
).Then((valueResult) =>
|
|
194
|
+
traverseNode.kind == "r"
|
|
195
|
+
? traverseNode
|
|
196
|
+
.value(evalContext)
|
|
197
|
+
.Then((nodeResult) =>
|
|
198
|
+
ValueOrErrors.Default.return(
|
|
199
|
+
traversalContext.joinRes([valueResult, nodeResult]),
|
|
200
|
+
),
|
|
201
|
+
)
|
|
202
|
+
: ValueOrErrors.Default.return(valueResult),
|
|
203
|
+
);
|
|
204
|
+
}),
|
|
205
|
+
);
|
|
206
|
+
},
|
|
207
|
+
);
|
|
208
|
+
}
|
|
209
|
+
|
|
116
210
|
if (renderer.type.kind == "record" && renderer.kind == "recordRenderer") {
|
|
117
211
|
return ValueOrErrors.Operations.All(
|
|
118
212
|
List(
|
|
@@ -425,7 +425,7 @@ export const PredicateValue = {
|
|
|
425
425
|
kind: "record",
|
|
426
426
|
fields,
|
|
427
427
|
}),
|
|
428
|
-
unionCase: (caseName: string, fields:
|
|
428
|
+
unionCase: (caseName: string, fields: PredicateValue): ValueUnionCase => ({
|
|
429
429
|
kind: "unionCase",
|
|
430
430
|
caseName,
|
|
431
431
|
fields,
|