ballerina-core 1.0.136 → 1.0.138

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 CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "ballerina-core",
3
3
  "author": "Dr. Giuseppe Maggiore",
4
4
  "private": false,
5
- "version": "1.0.136",
5
+ "version": "1.0.138",
6
6
  "main": "main.ts",
7
7
  "scripts": {
8
8
  "prettier": "prettier --write ."
@@ -257,7 +257,7 @@ export type TableType<T> = {
257
257
  export type OneType<T> = {
258
258
  kind: "one";
259
259
  name: DispatchTypeName;
260
- args: Array<DispatchParsedType<T>>;
260
+ args: DispatchParsedType<T>;
261
261
  typeName: DispatchTypeName;
262
262
  };
263
263
 
@@ -384,7 +384,7 @@ export const DispatchParsedType = {
384
384
  }),
385
385
  one: <T>(
386
386
  name: DispatchTypeName,
387
- args: Array<DispatchParsedType<T>>,
387
+ args: DispatchParsedType<T>,
388
388
  typeName: DispatchTypeName,
389
389
  ): OneType<T> => ({
390
390
  kind: "one",
@@ -752,7 +752,7 @@ export const DispatchParsedType = {
752
752
  injectedPrimitives,
753
753
  ).Then((parsedArg) =>
754
754
  ValueOrErrors.Default.return(
755
- DispatchParsedType.Default.one(typeName, [parsedArg], typeName),
755
+ DispatchParsedType.Default.one(typeName, parsedArg, typeName),
756
756
  ),
757
757
  );
758
758
  return ValueOrErrors.Default.throwOne(
@@ -3,18 +3,21 @@ import {
3
3
  ValueOrErrors,
4
4
  Errors,
5
5
  DispatchParsedType,
6
+ BasicFun,
7
+ MapRepo
6
8
  } from "../../../../../../../../main";
7
9
  import { PredicateValue } from "../../state";
8
10
 
11
+ type ExtractedTypeInstances = ValueOrErrors<Array<PredicateValue>, Errors<string[]>>
12
+ type TypeInstancesExtractor = BasicFun<PredicateValue, ExtractedTypeInstances>
13
+
9
14
  export const PredicateValueExtractor = {
10
15
  Operations: {
11
16
  ExtractPredicateValue: (
12
17
  lookupName: string,
13
18
  typesMap: Map<string, DispatchParsedType<any>>,
14
19
  t: DispatchParsedType<any>,
15
- ): ((
16
- v: PredicateValue,
17
- ) => ValueOrErrors<Array<PredicateValue>, Errors<any>>) => {
20
+ ): TypeInstancesExtractor => {
18
21
  const self = PredicateValueExtractor.Operations.ExtractPredicateValue;
19
22
  switch (t.kind) {
20
23
  case "lookup": {
@@ -29,11 +32,8 @@ export const PredicateValueExtractor = {
29
32
  );
30
33
  }
31
34
 
32
- const traverseLookupValue = self(lookupName, typesMap, lookupType);
33
- return (v) =>
34
- t.name === lookupName
35
- ? ValueOrErrors.Default.return([v])
36
- : traverseLookupValue(v);
35
+ return t.name === lookupName ? ((v) => ValueOrErrors.Default.return([v])) :
36
+ self(lookupName, typesMap, lookupType)
37
37
  }
38
38
  case "primitive":
39
39
  return (_) => ValueOrErrors.Default.return([]);
@@ -52,10 +52,10 @@ export const PredicateValueExtractor = {
52
52
  const traverseRecordFields = t.fields.map((f) =>
53
53
  self(lookupName, typesMap, f),
54
54
  );
55
- return (v: PredicateValue) =>
55
+ return (v: PredicateValue) : ExtractedTypeInstances =>
56
56
  !PredicateValue.Operations.IsRecord(v)
57
57
  ? ValueOrErrors.Default.throwOne(
58
- Errors.Default.singleton(["not a ValueRecord", v]),
58
+ Errors.Default.singleton(["not a ValueRecord", JSON.stringify(v)]),
59
59
  )
60
60
  : ValueOrErrors.Operations.All(
61
61
  List(
@@ -79,7 +79,7 @@ export const PredicateValueExtractor = {
79
79
  ? ValueOrErrors.Default.throwOne(
80
80
  Errors.Default.singleton([
81
81
  "not a ValueOption (from SingleSelection)",
82
- v,
82
+ JSON.stringify(v),
83
83
  ]),
84
84
  )
85
85
  : !v.isSome
@@ -98,7 +98,7 @@ export const PredicateValueExtractor = {
98
98
  ? ValueOrErrors.Default.throwOne(
99
99
  Errors.Default.singleton([
100
100
  "not a ValueRecord (from MultiSelection)",
101
- v,
101
+ JSON.stringify(v),
102
102
  ]),
103
103
  )
104
104
  : ValueOrErrors.Operations.All(
@@ -120,7 +120,7 @@ export const PredicateValueExtractor = {
120
120
  return (v: PredicateValue) =>
121
121
  !PredicateValue.Operations.IsTuple(v)
122
122
  ? ValueOrErrors.Default.throwOne(
123
- Errors.Default.singleton(["not a ValueRecord (from Map)", v]),
123
+ Errors.Default.singleton(["not a ValueRecord (from Map)", JSON.stringify(v)]),
124
124
  )
125
125
  : (
126
126
  ValueOrErrors.Operations.All(
@@ -130,7 +130,7 @@ export const PredicateValueExtractor = {
130
130
  ? ValueOrErrors.Default.throwOne(
131
131
  Errors.Default.singleton([
132
132
  "not a ValueRecord (from inner Map)",
133
- entry,
133
+ JSON.stringify(entry),
134
134
  ]),
135
135
  )
136
136
  : ValueOrErrors.Operations.All(
@@ -162,7 +162,7 @@ export const PredicateValueExtractor = {
162
162
  return (v) =>
163
163
  !PredicateValue.Operations.IsSum(v)
164
164
  ? ValueOrErrors.Default.throwOne(
165
- Errors.Default.singleton(["not a ValueSum", v]),
165
+ Errors.Default.singleton(["not a ValueSum", JSON.stringify(v)]),
166
166
  )
167
167
  : ValueOrErrors.Operations.All(
168
168
  List(
@@ -184,7 +184,7 @@ export const PredicateValueExtractor = {
184
184
  return (v) =>
185
185
  !PredicateValue.Operations.IsTuple(v)
186
186
  ? ValueOrErrors.Default.throwOne(
187
- Errors.Default.singleton(["not a ValueTuple", v]),
187
+ Errors.Default.singleton(["not a ValueTuple", JSON.stringify(v)]),
188
188
  )
189
189
  : ValueOrErrors.Operations.All(
190
190
  List(
@@ -199,39 +199,48 @@ export const PredicateValueExtractor = {
199
199
  ),
200
200
  );
201
201
  }
202
- // case "union": {
203
- // const traverseUnionFields = t.args.map((f) =>
204
- // self(lookupName, typesMap, f.fields),
205
- // );
206
- // return (v) =>
207
- // !PredicateValue.Operations.IsTuple(v)
208
- // ? ValueOrErrors.Default.throwOne(
209
- // Errors.Default.singleton([
210
- // "not a ValueRecord (from union)",
211
- // v,
212
- // ]),
213
- // )
214
- // : (ValueOrErrors.Operations.All(
215
- // traverseUnionFields
216
- // .filter((_, k) => v.fields.has(k))
217
- // .map<ValueOrErrors<Array<PredicateValue>, Errors<any>>>(
218
- // (traverseField, k) => traverseField(v.values.get(k)!),
219
- // )
220
- // .valueSeq()
221
- // .toList(),
222
- // ).Map((listFailingChecks) =>
223
- // listFailingChecks.reduce(
224
- // (acc, curr) => [...acc, ...curr],
225
- // [] as Array<PredicateValue>,
226
- // ),
227
- // ));
228
- // }
202
+ case "union": {
203
+ const traverseCases:Map<string, TypeInstancesExtractor> = t.args.map((f) =>
204
+ self(lookupName, typesMap, f)
205
+ ).toMap();
206
+ return (v) : ExtractedTypeInstances =>
207
+ !PredicateValue.Operations.IsUnionCase(v)
208
+ ? ValueOrErrors.Default.throwOne(
209
+ Errors.Default.singleton([
210
+ "not a ValueUnion (from union)",
211
+ JSON.stringify(v),
212
+ ]),
213
+ )
214
+ : MapRepo.Operations.tryFindWithError<string, TypeInstancesExtractor, Errors<string[]>>(v.caseName, traverseCases, () => Errors.Default.singleton([
215
+ `unexpected union case ${v.caseName}`,
216
+ JSON.stringify(v),
217
+ ])).Then(
218
+ (traverseCase:TypeInstancesExtractor) =>
219
+ traverseCase(v.fields)
220
+ )
221
+ }
222
+ case "one": {
223
+ const traverseValue:TypeInstancesExtractor = self(lookupName, typesMap, t.args)
224
+ return (v) : ExtractedTypeInstances =>
225
+ PredicateValue.Operations.IsOption(v) ?
226
+ v.isSome ? traverseValue(v.value)
227
+ : ValueOrErrors.Default.return([])
228
+ : PredicateValue.Operations.IsSum(v) ?
229
+ v.value.kind == "r" ? traverseValue(v.value.value)
230
+ : ValueOrErrors.Default.return([])
231
+ : ValueOrErrors.Default.throwOne(
232
+ Errors.Default.singleton([
233
+ "not a One/Option or One/Sum (from one)",
234
+ JSON.stringify(v),
235
+ ]),
236
+ )
237
+ }
229
238
  case "list": {
230
239
  const traverseListField = self(lookupName, typesMap, t.args[0]);
231
240
  return (v) =>
232
241
  !PredicateValue.Operations.IsTuple(v)
233
242
  ? ValueOrErrors.Default.throwOne(
234
- Errors.Default.singleton(["not a ValueTuple (from List)", v]),
243
+ Errors.Default.singleton(["not a ValueTuple (from List)", JSON.stringify(v)]),
235
244
  )
236
245
  : ValueOrErrors.Operations.All(
237
246
  List(v.values.map((v) => traverseListField(v))),
@@ -248,7 +257,7 @@ export const PredicateValueExtractor = {
248
257
  default:
249
258
  return (_) =>
250
259
  ValueOrErrors.Default.throwOne(
251
- Errors.Default.singleton(["unknown type", t]),
260
+ Errors.Default.singleton(["unknown type", JSON.stringify(t)]),
252
261
  );
253
262
  }
254
263
  },