ballerina-core 1.0.220 → 1.0.222

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.
Files changed (213) hide show
  1. package/bin/main.d.ts +1 -1
  2. package/bin/src/api-response-handler/coroutines/runner.d.ts +9 -2
  3. package/bin/src/api-response-handler/state.d.ts +12 -12
  4. package/bin/src/async/domains/mirroring/domains/collection/coroutines/synchronizers.d.ts +400 -75
  5. package/bin/src/async/domains/mirroring/domains/collection/state.d.ts +38 -25
  6. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection/state.d.ts +12 -8
  7. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection-entity/state.d.ts +12 -9
  8. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entities/state.d.ts +17 -8
  9. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entity/state.d.ts +16 -13
  10. package/bin/src/async/domains/mirroring/domains/entity/state.d.ts +12 -9
  11. package/bin/src/async/domains/mirroring/domains/singleton/coroutines/synchronizers.d.ts +233 -41
  12. package/bin/src/async/domains/mirroring/domains/singleton/state.d.ts +24 -15
  13. package/bin/src/async/domains/mirroring/domains/synchronized-entities/state.d.ts +16 -10
  14. package/bin/src/async/domains/synchronized/coroutines/synchronize.d.ts +29 -4
  15. package/bin/src/collections/domains/immutable/domains/list/state.d.ts +19 -15
  16. package/bin/src/collections/domains/immutable/domains/map/state.d.ts +30 -16
  17. package/bin/src/collections/domains/immutable/domains/orderedMap/state.d.ts +53 -25
  18. package/bin/src/collections/domains/valueOrErrors/state.d.ts +53 -27
  19. package/bin/src/coroutines/builder.d.ts +135 -49
  20. package/bin/src/coroutines/state.d.ts +186 -71
  21. package/bin/src/coroutines/template.d.ts +17 -8
  22. package/bin/src/debounced/coroutines/debounce.d.ts +15 -6
  23. package/bin/src/debounced/state.d.ts +26 -19
  24. package/bin/src/forms/domains/attachments/views/attachments-view.d.ts +4 -4
  25. package/bin/src/forms/domains/collection/domains/reference/state.d.ts +29 -22
  26. package/bin/src/forms/domains/collection/domains/selection/state.d.ts +37 -15
  27. package/bin/src/forms/domains/dispatched-forms/built-ins/state.d.ts +555 -120
  28. package/bin/src/forms/domains/dispatched-forms/built-ins/state.js +1983 -740
  29. package/bin/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.d.ts +22 -2
  30. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/apis/state.d.ts +119 -63
  31. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/enum/state.d.ts +35 -19
  32. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/list/state.d.ts +60 -28
  33. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/lookup/state.d.ts +121 -56
  34. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/map/state.d.ts +42 -15
  35. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/nestedRenderer/state.d.ts +70 -29
  36. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/one/state.d.ts +61 -18
  37. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/primitive/state.d.ts +20 -10
  38. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/readOnly/state.d.ts +50 -19
  39. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/domains/recordFieldRenderer/state.d.ts +42 -11
  40. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/state.d.ts +49 -19
  41. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/state.js +129 -55
  42. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/stream/state.d.ts +29 -14
  43. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sum/state.d.ts +49 -19
  44. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sumUnitDate/state.d.ts +21 -13
  45. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/domains/tableCellRenderer/state.d.ts +39 -10
  46. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/state.d.ts +79 -34
  47. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/tuple/state.d.ts +37 -13
  48. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/union/state.d.ts +40 -15
  49. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.d.ts +107 -19
  50. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.d.ts +410 -221
  51. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/state.d.ts +103 -51
  52. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/state.js +255 -94
  53. package/bin/src/forms/domains/dispatched-forms/deserializer/state.d.ts +327 -87
  54. package/bin/src/forms/domains/dispatched-forms/deserializer/template.d.ts +27 -2
  55. package/bin/src/forms/domains/dispatched-forms/runner/coroutines/runner.d.ts +27 -4
  56. package/bin/src/forms/domains/dispatched-forms/runner/coroutines/runner.js +136 -82
  57. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/state.d.ts +35 -7
  58. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/template.d.ts +28 -4
  59. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/state.d.ts +33 -7
  60. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/template.d.ts +25 -4
  61. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/state.d.ts +56 -19
  62. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/template.d.ts +29 -7
  63. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/state.d.ts +43 -15
  64. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/template.d.ts +41 -8
  65. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/state.d.ts +45 -11
  66. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/template.d.ts +42 -8
  67. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/injectables/state.d.ts +55 -19
  68. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.d.ts +76 -27
  69. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.d.ts.map +1 -1
  70. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.js.map +1 -1
  71. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.d.ts.map +1 -1
  72. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.js +104 -290
  73. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.js.map +1 -1
  74. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.d.ts +41 -7
  75. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.d.ts +45 -4
  76. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/state.d.ts +103 -26
  77. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/template.d.ts +64 -9
  78. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/state.d.ts +37 -7
  79. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/template.d.ts +29 -4
  80. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.d.ts +50 -13
  81. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.d.ts +59 -12
  82. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.d.ts +47 -11
  83. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.d.ts +3868 -1065
  84. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.d.ts +161 -36
  85. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.d.ts +245 -80
  86. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.d.ts +61 -10
  87. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/state.d.ts +65 -20
  88. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.d.ts +47 -6
  89. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.d.ts +81 -21
  90. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.d.ts +59 -10
  91. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/state.d.ts +123 -49
  92. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/template.d.ts +45 -8
  93. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/state.d.ts +121 -51
  94. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/template.d.ts +45 -8
  95. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/state.d.ts +38 -8
  96. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/template.d.ts +29 -4
  97. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/state.d.ts +58 -34
  98. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/state.d.ts +38 -8
  99. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/template.d.ts +29 -4
  100. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/state.d.ts +93 -29
  101. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/template.d.ts +55 -7
  102. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/builder.d.ts +2737 -931
  103. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/infiniteLoader.d.ts +48 -10
  104. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/initialiseFiltersAndSorting.d.ts +54 -10
  105. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/initialiseTable.d.ts +56 -12
  106. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/loadWithRetries.d.ts +33 -3
  107. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/runner.d.ts +130 -26
  108. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/state.d.ts +406 -186
  109. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.d.ts +102 -15
  110. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/state.d.ts +75 -18
  111. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/template.d.ts +51 -6
  112. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/state.d.ts +76 -18
  113. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/template.d.ts +51 -6
  114. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/state.d.ts +45 -13
  115. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/template.d.ts +29 -6
  116. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.d.ts +600 -440
  117. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.d.ts.map +1 -1
  118. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js +5 -11
  119. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js.map +1 -1
  120. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/list/state.d.ts +24 -5
  121. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.d.ts +26 -6
  122. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/map/state.d.ts +23 -5
  123. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/multiSelection/state.d.ts +22 -5
  124. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/nestedDispatcher/state.d.ts +41 -6
  125. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.d.ts +57 -7
  126. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/primitive/state.d.ts +22 -5
  127. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/readOnly/state.d.ts +24 -5
  128. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/recordField/state.d.ts +26 -5
  129. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/state.d.ts +49 -6
  130. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/singleSelectionDispatcher/state.d.ts +22 -5
  131. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/sum/state.d.ts +25 -5
  132. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.d.ts +54 -7
  133. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/tupleDispatcher/state.d.ts +25 -5
  134. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/unionDispatcher/state.d.ts +25 -5
  135. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.d.ts +44 -6
  136. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.d.ts +38 -18
  137. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.js +773 -423
  138. package/bin/src/forms/domains/dispatched-forms/runner/state.d.ts +90 -37
  139. package/bin/src/forms/domains/dispatched-forms/runner/template.d.ts +28 -4
  140. package/bin/src/forms/domains/launcher/coroutines/runner.d.ts +12 -4
  141. package/bin/src/forms/domains/launcher/domains/create/coroutines/runner.d.ts +16 -3
  142. package/bin/src/forms/domains/launcher/domains/create/state.d.ts +236 -121
  143. package/bin/src/forms/domains/launcher/domains/create/template.d.ts +20 -6
  144. package/bin/src/forms/domains/launcher/domains/edit/coroutines/runner.d.ts +16 -3
  145. package/bin/src/forms/domains/launcher/domains/edit/state.d.ts +230 -121
  146. package/bin/src/forms/domains/launcher/domains/edit/template.d.ts +20 -6
  147. package/bin/src/forms/domains/launcher/domains/passthrough/coroutines/runner.d.ts +20 -5
  148. package/bin/src/forms/domains/launcher/domains/passthrough/state.d.ts +123 -58
  149. package/bin/src/forms/domains/launcher/domains/passthrough/template.d.ts +23 -6
  150. package/bin/src/forms/domains/launcher/state.d.ts +62 -43
  151. package/bin/src/forms/domains/launcher/template.d.ts +35 -15
  152. package/bin/src/forms/domains/parser/coroutines/runner.d.ts +13 -5
  153. package/bin/src/forms/domains/parser/domains/built-ins/state.d.ts +135 -71
  154. package/bin/src/forms/domains/parser/domains/deltas/state.d.ts +417 -296
  155. package/bin/src/forms/domains/parser/domains/injectables/state.d.ts +29 -20
  156. package/bin/src/forms/domains/parser/domains/layout/state.d.ts +78 -49
  157. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.d.ts +19 -6
  158. package/bin/src/forms/domains/parser/domains/predicates/state.d.ts +503 -315
  159. package/bin/src/forms/domains/parser/domains/renderer/state.d.ts +245 -92
  160. package/bin/src/forms/domains/parser/domains/types/state.d.ts +170 -130
  161. package/bin/src/forms/domains/parser/domains/validator/state.d.ts +143 -117
  162. package/bin/src/forms/domains/parser/state.d.ts +217 -82
  163. package/bin/src/forms/domains/parser/state.js +612 -373
  164. package/bin/src/forms/domains/parser/template.d.ts +13 -5
  165. package/bin/src/forms/domains/primitives/domains/base-64-file/state.d.ts +19 -11
  166. package/bin/src/forms/domains/primitives/domains/base-64-file/template.d.ts +18 -7
  167. package/bin/src/forms/domains/primitives/domains/boolean/state.d.ts +19 -11
  168. package/bin/src/forms/domains/primitives/domains/boolean/template.d.ts +24 -8
  169. package/bin/src/forms/domains/primitives/domains/date/state.d.ts +39 -20
  170. package/bin/src/forms/domains/primitives/domains/date/template.d.ts +18 -7
  171. package/bin/src/forms/domains/primitives/domains/enum/state.d.ts +31 -15
  172. package/bin/src/forms/domains/primitives/domains/enum/template.d.ts +18 -7
  173. package/bin/src/forms/domains/primitives/domains/enum-multiselect/state.d.ts +17 -8
  174. package/bin/src/forms/domains/primitives/domains/enum-multiselect/template.d.ts +18 -7
  175. package/bin/src/forms/domains/primitives/domains/list/state.d.ts +45 -24
  176. package/bin/src/forms/domains/primitives/domains/list/template.d.ts +38 -13
  177. package/bin/src/forms/domains/primitives/domains/map/state.d.ts +68 -29
  178. package/bin/src/forms/domains/primitives/domains/map/template.d.ts +65 -25
  179. package/bin/src/forms/domains/primitives/domains/number/state.d.ts +19 -11
  180. package/bin/src/forms/domains/primitives/domains/number/template.d.ts +24 -8
  181. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/state.d.ts +89 -42
  182. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/template.d.ts +22 -8
  183. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/state.d.ts +18 -9
  184. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/template.d.ts +18 -7
  185. package/bin/src/forms/domains/primitives/domains/secret/state.d.ts +19 -11
  186. package/bin/src/forms/domains/primitives/domains/secret/template.d.ts +18 -7
  187. package/bin/src/forms/domains/primitives/domains/string/state.d.ts +21 -13
  188. package/bin/src/forms/domains/primitives/domains/string/template.d.ts +18 -7
  189. package/bin/src/forms/domains/primitives/domains/sum/state.d.ts +62 -22
  190. package/bin/src/forms/domains/primitives/domains/sum/template.d.ts +48 -16
  191. package/bin/src/forms/domains/primitives/domains/tuple/state.d.ts +48 -23
  192. package/bin/src/forms/domains/primitives/domains/tuple/template.d.ts +46 -18
  193. package/bin/src/forms/domains/primitives/domains/unit/state.d.ts +17 -10
  194. package/bin/src/forms/domains/primitives/domains/unit/template.d.ts +9 -4
  195. package/bin/src/forms/domains/singleton/state.d.ts +144 -43
  196. package/bin/src/forms/domains/singleton/template.d.ts +177 -88
  197. package/bin/src/infinite-data-stream/coroutines/builder.d.ts +209 -27
  198. package/bin/src/infinite-data-stream/coroutines/infiniteLoader.d.ts +21 -5
  199. package/bin/src/infinite-data-stream/coroutines/runner.d.ts +11 -3
  200. package/bin/src/infinite-data-stream/template.d.ts +10 -3
  201. package/bin/src/queue/state.d.ts +23 -7
  202. package/bin/src/template/state.d.ts +153 -45
  203. package/bin/src/validation/state.d.ts +23 -9
  204. package/bin/src/value/domains/mutable-value/state.d.ts +3 -3
  205. package/bin/src/value-infinite-data-stream/coroutines/builder.d.ts +207 -25
  206. package/bin/src/value-infinite-data-stream/coroutines/infiniteLoader.d.ts +4 -2
  207. package/bin/src/value-infinite-data-stream/coroutines/runner.d.ts +8 -2
  208. package/bin/src/value-infinite-data-stream/state.d.ts +134 -68
  209. package/bin/src/value-infinite-data-stream/template.d.ts +7 -2
  210. package/package.json +1 -1
  211. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.ts +17 -1
  212. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.tsx +44 -3
  213. package/src/forms/domains/dispatched-forms/runner/domains/deltas/state.ts +13 -22
@@ -1,449 +1,799 @@
1
- import { Option, ValueOrErrors, PredicateValue, Expr, Updater, FormLayout, unit, TableLayout, } from "ballerina-core";
1
+ import {
2
+ Option,
3
+ ValueOrErrors,
4
+ PredicateValue,
5
+ Expr,
6
+ Updater,
7
+ FormLayout,
8
+ unit,
9
+ TableLayout,
10
+ } from "ballerina-core";
2
11
  import { List, Map } from "immutable";
3
12
  import { LookupRenderer } from "../../../deserializer/domains/specification/domains/forms/domains/renderer/domains/lookup/state";
4
13
  export const RendererTraversal = {
5
- Operations: {
6
- Run: (renderer, traversalContext) => {
7
- const rec = (RendererTraversal.Operations.Run);
8
- const mapEvalContext = (f) => Updater(Option.Updaters.some((v) => (ctx) => v(f(ctx))));
9
- const traverseNode = traversalContext.traverseSingleType(renderer.type);
10
- if (renderer.type.kind == "primitive" ||
11
- renderer.type.kind == "singleSelection" ||
12
- renderer.type.kind == "multiSelection") {
13
- return ValueOrErrors.Default.return(traverseNode);
14
- }
15
- if (renderer.kind == "lookupType-lookupRenderer" ||
16
- renderer.kind == "lookupType-inlinedRenderer" ||
17
- renderer.kind == "inlinedType-lookupRenderer") {
18
- if (renderer.kind == "lookupType-lookupRenderer" ||
19
- renderer.kind == "lookupType-inlinedRenderer") {
20
- return LookupRenderer.Operations.ResolveRenderer(renderer, traversalContext.forms).Then((resolvedRenderer) => rec(resolvedRenderer, traversalContext).Then((valueTraversal) => ValueOrErrors.Default.return(
21
- // reassign local if it's a lookup renderer
22
- renderer.kind == "lookupType-lookupRenderer"
23
- ? mapEvalContext((ctx) => (Object.assign(Object.assign({}, ctx), { local: ctx.traversalIterator })))(valueTraversal)
24
- : valueTraversal).Then((resolvedTraversal) => {
25
- if (traverseNode.kind == "l" &&
26
- resolvedTraversal.kind == "l") {
27
- return ValueOrErrors.Default.return(Option.Default.none());
28
- }
29
- if (traverseNode.kind == "l") {
30
- return ValueOrErrors.Default.return(resolvedTraversal);
31
- }
32
- if (resolvedTraversal.kind == "l") {
33
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => traverseNode
34
- .value(evalContext)
35
- .Then((nodeResult) => ValueOrErrors.Default.return(nodeResult))));
36
- }
37
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
38
- return resolvedTraversal
39
- .value(evalContext)
40
- .Then((resolvedTraversal) => traverseNode
41
- .value(evalContext)
42
- .Then((nodeResult) => ValueOrErrors.Default.return(traversalContext.joinRes([
14
+ Operations: {
15
+ Run: (renderer, traversalContext) => {
16
+ const rec = RendererTraversal.Operations.Run;
17
+ const mapEvalContext = (f) =>
18
+ Updater(Option.Updaters.some((v) => (ctx) => v(f(ctx))));
19
+ const traverseNode = traversalContext.traverseSingleType(renderer.type);
20
+ if (
21
+ renderer.type.kind == "primitive" ||
22
+ renderer.type.kind == "singleSelection" ||
23
+ renderer.type.kind == "multiSelection"
24
+ ) {
25
+ return ValueOrErrors.Default.return(traverseNode);
26
+ }
27
+ if (
28
+ renderer.kind == "lookupType-lookupRenderer" ||
29
+ renderer.kind == "lookupType-inlinedRenderer" ||
30
+ renderer.kind == "inlinedType-lookupRenderer"
31
+ ) {
32
+ if (
33
+ renderer.kind == "lookupType-lookupRenderer" ||
34
+ renderer.kind == "lookupType-inlinedRenderer"
35
+ ) {
36
+ return LookupRenderer.Operations.ResolveRenderer(
37
+ renderer,
38
+ traversalContext.forms,
39
+ ).Then((resolvedRenderer) =>
40
+ rec(resolvedRenderer, traversalContext).Then((valueTraversal) =>
41
+ ValueOrErrors.Default.return(
42
+ // reassign local if it's a lookup renderer
43
+ renderer.kind == "lookupType-lookupRenderer"
44
+ ? mapEvalContext((ctx) =>
45
+ Object.assign(Object.assign({}, ctx), {
46
+ local: ctx.traversalIterator,
47
+ }),
48
+ )(valueTraversal)
49
+ : valueTraversal,
50
+ ).Then((resolvedTraversal) => {
51
+ if (traverseNode.kind == "l" && resolvedTraversal.kind == "l") {
52
+ return ValueOrErrors.Default.return(Option.Default.none());
53
+ }
54
+ if (traverseNode.kind == "l") {
55
+ return ValueOrErrors.Default.return(resolvedTraversal);
56
+ }
57
+ if (resolvedTraversal.kind == "l") {
58
+ return ValueOrErrors.Default.return(
59
+ Option.Default.some((evalContext) =>
60
+ traverseNode
61
+ .value(evalContext)
62
+ .Then((nodeResult) =>
63
+ ValueOrErrors.Default.return(nodeResult),
64
+ ),
65
+ ),
66
+ );
67
+ }
68
+ return ValueOrErrors.Default.return(
69
+ Option.Default.some((evalContext) => {
70
+ return resolvedTraversal
71
+ .value(evalContext)
72
+ .Then((resolvedTraversal) =>
73
+ traverseNode
74
+ .value(evalContext)
75
+ .Then((nodeResult) =>
76
+ ValueOrErrors.Default.return(
77
+ traversalContext.joinRes([
43
78
  nodeResult,
44
79
  resolvedTraversal,
45
- ]))));
46
- }));
47
- })));
48
- }
49
- return LookupRenderer.Operations.ResolveRenderer(renderer, traversalContext.forms).Then((resolvedRenderer) => rec(resolvedRenderer, traversalContext).Then((valueTraversal) => ValueOrErrors.Default.return(valueTraversal)));
80
+ ]),
81
+ ),
82
+ ),
83
+ );
84
+ }),
85
+ );
86
+ }),
87
+ ),
88
+ );
89
+ }
90
+ return LookupRenderer.Operations.ResolveRenderer(
91
+ renderer,
92
+ traversalContext.forms,
93
+ ).Then((resolvedRenderer) =>
94
+ rec(resolvedRenderer, traversalContext).Then((valueTraversal) =>
95
+ ValueOrErrors.Default.return(valueTraversal),
96
+ ),
97
+ );
98
+ }
99
+ if (
100
+ renderer.type.kind == "readOnly" &&
101
+ renderer.kind == "readOnlyRenderer"
102
+ ) {
103
+ return rec(renderer.childRenderer.renderer, traversalContext).Then(
104
+ (valueTraversal) => {
105
+ if (valueTraversal.kind == "l" && traverseNode.kind == "l") {
106
+ return ValueOrErrors.Default.return(Option.Default.none());
50
107
  }
51
- if (renderer.type.kind == "readOnly" &&
52
- renderer.kind == "readOnlyRenderer") {
53
- return rec(renderer.childRenderer.renderer, traversalContext).Then((valueTraversal) => {
54
- if (valueTraversal.kind == "l" && traverseNode.kind == "l") {
55
- return ValueOrErrors.Default.return(Option.Default.none());
56
- }
57
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
58
- const iterator = evalContext.traversalIterator;
59
- if (!PredicateValue.Operations.IsReadOnly(iterator)) {
60
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator is not read only, got ${JSON.stringify(iterator, undefined, 2)}`);
61
- }
62
- return (valueTraversal.kind == "r"
63
- ? valueTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.ReadOnly }))
64
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit))).Then((valueResult) => traverseNode.kind == "r"
65
- ? traverseNode
66
- .value(evalContext)
67
- .Then((nodeResult) => ValueOrErrors.Default.return(traversalContext.joinRes([valueResult, nodeResult])))
68
- : ValueOrErrors.Default.return(valueResult));
69
- }));
70
- });
71
- }
72
- if (renderer.type.kind == "record" && renderer.kind == "recordRenderer") {
73
- return ValueOrErrors.Operations.All(List(renderer.fields
74
- .map((fieldRenderer, fieldName) => rec(fieldRenderer.renderer, traversalContext).Then((fieldTraversal) => {
108
+ return ValueOrErrors.Default.return(
109
+ Option.Default.some((evalContext) => {
110
+ const iterator = evalContext.traversalIterator;
111
+ if (!PredicateValue.Operations.IsReadOnly(iterator)) {
112
+ return ValueOrErrors.Default.throwOne(
113
+ `Error: traversal iterator is not read only, got ${JSON.stringify(iterator, undefined, 2)}`,
114
+ );
115
+ }
116
+ return (
117
+ valueTraversal.kind == "r"
118
+ ? valueTraversal.value(
119
+ Object.assign(Object.assign({}, evalContext), {
120
+ traversalIterator: iterator.ReadOnly,
121
+ }),
122
+ )
123
+ : ValueOrErrors.Default.return(
124
+ traversalContext.zeroRes(unit),
125
+ )
126
+ ).Then((valueResult) =>
127
+ traverseNode.kind == "r"
128
+ ? traverseNode
129
+ .value(evalContext)
130
+ .Then((nodeResult) =>
131
+ ValueOrErrors.Default.return(
132
+ traversalContext.joinRes([valueResult, nodeResult]),
133
+ ),
134
+ )
135
+ : ValueOrErrors.Default.return(valueResult),
136
+ );
137
+ }),
138
+ );
139
+ },
140
+ );
141
+ }
142
+ if (renderer.type.kind == "record" && renderer.kind == "recordRenderer") {
143
+ return ValueOrErrors.Operations.All(
144
+ List(
145
+ renderer.fields
146
+ .map((fieldRenderer, fieldName) =>
147
+ rec(fieldRenderer.renderer, traversalContext).Then(
148
+ (fieldTraversal) => {
75
149
  return ValueOrErrors.Default.return({
76
- fieldName: fieldName,
77
- visibility: fieldRenderer.visible,
78
- fieldTraversal: fieldTraversal,
150
+ fieldName: fieldName,
151
+ visibility: fieldRenderer.visible,
152
+ fieldTraversal: fieldTraversal,
79
153
  });
80
- }))
81
- .valueSeq())).Then((fieldTraversals) => {
82
- if (fieldTraversals.every((f) => f.fieldTraversal.kind == "l") &&
83
- traverseNode.kind == "l") {
84
- return ValueOrErrors.Default.return(Option.Default.none());
85
- }
86
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
87
- if (!PredicateValue.Operations.IsRecord(evalContext.traversalIterator))
88
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator is not a record, got ${JSON.stringify(evalContext.traversalIterator, undefined, 2)}`);
89
- const visibleFieldsRes = FormLayout.Operations.ComputeVisibleFieldsForRecord(Map([
90
- ["global", evalContext.global],
91
- ["local", evalContext.local],
92
- ["root", evalContext.root],
93
- ]), renderer.tabs);
94
- // TODO later, make this monadic
95
- if (visibleFieldsRes.kind == "errors") {
96
- return visibleFieldsRes;
97
- }
98
- const visibleFields = visibleFieldsRes.value;
99
- const traversalIteratorFields = evalContext.traversalIterator.fields;
100
- return ValueOrErrors.Operations.All(fieldTraversals.flatMap((f) => {
101
- // should be a map and instead of flatmap and [] a VoE.default.return([]) then an All on this and then a flatmap, everything is returned in a VoE
102
- if (f.fieldTraversal.kind == "l" ||
103
- !visibleFields.includes(f.fieldName))
104
- return [];
105
- if (f.visibility != undefined) {
106
- const visible = Expr.Operations.Evaluate(Map([
107
- ["global", evalContext.global],
108
- ["local", evalContext.local],
109
- ["root", evalContext.root],
110
- ]))(f.visibility);
111
- if (visible.kind == "value" && !visible.value) {
112
- return [];
113
- }
114
- }
115
- return [
116
- f.fieldTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: traversalIteratorFields.get(f.fieldName) })),
117
- ];
118
- })).Then((fieldResults) => {
119
- return traverseNode.kind == "r"
120
- ? traverseNode
121
- .value(evalContext)
122
- .Then((nodeResult) => ValueOrErrors.Default.return(fieldResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), nodeResult)))
123
- : ValueOrErrors.Default.return(fieldResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), traversalContext.zeroRes(unit)));
124
- });
125
- }));
126
- });
127
- }
128
- if (renderer.type.kind == "sum" &&
129
- (renderer.kind == "sumRenderer" ||
130
- renderer.kind == "sumUnitDateRenderer")) {
131
- // this will be removed when sums become proper partials
132
- if (renderer.kind == "sumUnitDateRenderer") {
133
- if (traverseNode.kind == "l") {
134
- return ValueOrErrors.Default.return(Option.Default.none());
154
+ },
155
+ ),
156
+ )
157
+ .valueSeq(),
158
+ ),
159
+ ).Then((fieldTraversals) => {
160
+ if (
161
+ fieldTraversals.every((f) => f.fieldTraversal.kind == "l") &&
162
+ traverseNode.kind == "l"
163
+ ) {
164
+ return ValueOrErrors.Default.return(Option.Default.none());
165
+ }
166
+ return ValueOrErrors.Default.return(
167
+ Option.Default.some((evalContext) => {
168
+ if (
169
+ !PredicateValue.Operations.IsRecord(
170
+ evalContext.traversalIterator,
171
+ )
172
+ )
173
+ return ValueOrErrors.Default.throwOne(
174
+ `Error: traversal iterator is not a record, got ${JSON.stringify(evalContext.traversalIterator, undefined, 2)}`,
175
+ );
176
+ const visibleFieldsRes =
177
+ FormLayout.Operations.ComputeVisibleFieldsForRecord(
178
+ Map([
179
+ ["global", evalContext.global],
180
+ ["local", evalContext.local],
181
+ ["root", evalContext.root],
182
+ ]),
183
+ renderer.tabs,
184
+ );
185
+ // TODO later, make this monadic
186
+ if (visibleFieldsRes.kind == "errors") {
187
+ return visibleFieldsRes;
188
+ }
189
+ const visibleFields = visibleFieldsRes.value;
190
+ const traversalIteratorFields =
191
+ evalContext.traversalIterator.fields;
192
+ return ValueOrErrors.Operations.All(
193
+ fieldTraversals.flatMap((f) => {
194
+ // should be a map and instead of flatmap and [] a VoE.default.return([]) then an All on this and then a flatmap, everything is returned in a VoE
195
+ if (
196
+ f.fieldTraversal.kind == "l" ||
197
+ !visibleFields.includes(f.fieldName)
198
+ )
199
+ return [];
200
+ if (f.visibility != undefined) {
201
+ const visible = Expr.Operations.Evaluate(
202
+ Map([
203
+ ["global", evalContext.global],
204
+ ["local", evalContext.local],
205
+ ["root", evalContext.root],
206
+ ]),
207
+ )(f.visibility);
208
+ if (visible.kind == "value" && !visible.value) {
209
+ return [];
135
210
  }
136
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => traverseNode.value(evalContext)));
137
- }
138
- if (renderer.kind == "sumRenderer") {
139
- return rec(renderer.leftRenderer.renderer, traversalContext).Then((leftTraversal) => rec(renderer.rightRenderer.renderer, traversalContext).Then((rightTraversal) => {
140
- if (leftTraversal.kind == "l" &&
141
- rightTraversal.kind == "l" &&
142
- traverseNode.kind == "l") {
143
- return ValueOrErrors.Default.return(Option.Default.none());
144
- }
145
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
146
- const iterator = evalContext.traversalIterator;
147
- if (!PredicateValue.Operations.IsSum(iterator)) {
148
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator is not a sum, got ${evalContext.traversalIterator}`);
149
- }
150
- const isRight = iterator.value.kind == "r";
151
- if (isRight && rightTraversal.kind == "r") {
152
- if (traverseNode.kind == "r") {
153
- return traverseNode
154
- .value(evalContext)
155
- .Then((nodeResult) => {
156
- return rightTraversal
157
- .value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.value.value }))
158
- .Then((rightRes) => {
159
- return ValueOrErrors.Default.return(traversalContext.joinRes([
160
- nodeResult,
161
- rightRes,
162
- ]));
163
- });
164
- });
165
- }
166
- return rightTraversal
167
- .value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.value.value }))
168
- .Then((rightRes) => {
169
- return ValueOrErrors.Default.return(rightRes);
211
+ }
212
+ return [
213
+ f.fieldTraversal.value(
214
+ Object.assign(Object.assign({}, evalContext), {
215
+ traversalIterator: traversalIteratorFields.get(
216
+ f.fieldName,
217
+ ),
218
+ }),
219
+ ),
220
+ ];
221
+ }),
222
+ ).Then((fieldResults) => {
223
+ return traverseNode.kind == "r"
224
+ ? traverseNode
225
+ .value(evalContext)
226
+ .Then((nodeResult) =>
227
+ ValueOrErrors.Default.return(
228
+ fieldResults.reduce(
229
+ (acc, res) => traversalContext.joinRes([acc, res]),
230
+ nodeResult,
231
+ ),
232
+ ),
233
+ )
234
+ : ValueOrErrors.Default.return(
235
+ fieldResults.reduce(
236
+ (acc, res) => traversalContext.joinRes([acc, res]),
237
+ traversalContext.zeroRes(unit),
238
+ ),
239
+ );
240
+ });
241
+ }),
242
+ );
243
+ });
244
+ }
245
+ if (
246
+ renderer.type.kind == "sum" &&
247
+ (renderer.kind == "sumRenderer" ||
248
+ renderer.kind == "sumUnitDateRenderer")
249
+ ) {
250
+ // this will be removed when sums become proper partials
251
+ if (renderer.kind == "sumUnitDateRenderer") {
252
+ if (traverseNode.kind == "l") {
253
+ return ValueOrErrors.Default.return(Option.Default.none());
254
+ }
255
+ return ValueOrErrors.Default.return(
256
+ Option.Default.some((evalContext) =>
257
+ traverseNode.value(evalContext),
258
+ ),
259
+ );
260
+ }
261
+ if (renderer.kind == "sumRenderer") {
262
+ return rec(renderer.leftRenderer.renderer, traversalContext).Then(
263
+ (leftTraversal) =>
264
+ rec(renderer.rightRenderer.renderer, traversalContext).Then(
265
+ (rightTraversal) => {
266
+ if (
267
+ leftTraversal.kind == "l" &&
268
+ rightTraversal.kind == "l" &&
269
+ traverseNode.kind == "l"
270
+ ) {
271
+ return ValueOrErrors.Default.return(Option.Default.none());
272
+ }
273
+ return ValueOrErrors.Default.return(
274
+ Option.Default.some((evalContext) => {
275
+ const iterator = evalContext.traversalIterator;
276
+ if (!PredicateValue.Operations.IsSum(iterator)) {
277
+ return ValueOrErrors.Default.throwOne(
278
+ `Error: traversal iterator is not a sum, got ${evalContext.traversalIterator}`,
279
+ );
280
+ }
281
+ const isRight = iterator.value.kind == "r";
282
+ if (isRight && rightTraversal.kind == "r") {
283
+ if (traverseNode.kind == "r") {
284
+ return traverseNode
285
+ .value(evalContext)
286
+ .Then((nodeResult) => {
287
+ return rightTraversal
288
+ .value(
289
+ Object.assign(
290
+ Object.assign({}, evalContext),
291
+ { traversalIterator: iterator.value.value },
292
+ ),
293
+ )
294
+ .Then((rightRes) => {
295
+ return ValueOrErrors.Default.return(
296
+ traversalContext.joinRes([
297
+ nodeResult,
298
+ rightRes,
299
+ ]),
300
+ );
170
301
  });
171
- }
172
- if (!isRight && leftTraversal.kind == "r") {
173
- if (traverseNode.kind == "r") {
174
- return traverseNode
175
- .value(evalContext)
176
- .Then((nodeResult) => {
177
- return leftTraversal
178
- .value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.value.value }))
179
- .Then((leftRes) => {
180
- return ValueOrErrors.Default.return(traversalContext.joinRes([
181
- nodeResult,
182
- leftRes,
183
- ]));
184
- });
185
- });
186
- }
187
- return leftTraversal
188
- .value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.value.value }))
189
- .Then((leftRes) => {
190
- return ValueOrErrors.Default.return(leftRes);
302
+ });
303
+ }
304
+ return rightTraversal
305
+ .value(
306
+ Object.assign(Object.assign({}, evalContext), {
307
+ traversalIterator: iterator.value.value,
308
+ }),
309
+ )
310
+ .Then((rightRes) => {
311
+ return ValueOrErrors.Default.return(rightRes);
312
+ });
313
+ }
314
+ if (!isRight && leftTraversal.kind == "r") {
315
+ if (traverseNode.kind == "r") {
316
+ return traverseNode
317
+ .value(evalContext)
318
+ .Then((nodeResult) => {
319
+ return leftTraversal
320
+ .value(
321
+ Object.assign(
322
+ Object.assign({}, evalContext),
323
+ { traversalIterator: iterator.value.value },
324
+ ),
325
+ )
326
+ .Then((leftRes) => {
327
+ return ValueOrErrors.Default.return(
328
+ traversalContext.joinRes([
329
+ nodeResult,
330
+ leftRes,
331
+ ]),
332
+ );
191
333
  });
192
- }
193
- return ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
194
- }));
195
- }));
196
- }
197
- }
198
- if (renderer.type.kind == "tuple" && renderer.kind == "tupleRenderer") {
199
- return ValueOrErrors.Operations.All(List(renderer.itemRenderers.map((itemRenderer, index) => {
200
- return rec(itemRenderer.renderer, traversalContext).Then((itemTraversal) => {
201
- return ValueOrErrors.Default.return({
202
- index: index,
203
- itemTraversal: itemTraversal,
204
- });
205
- });
206
- }))).Then((itemTraversals) => {
207
- if (itemTraversals.every((i) => i.itemTraversal.kind == "l") &&
208
- traverseNode.kind == "l") {
209
- return ValueOrErrors.Default.return(Option.Default.none());
210
- }
211
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
212
- const iterator = evalContext.traversalIterator;
213
- if (!PredicateValue.Operations.IsTuple(iterator)) {
214
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator is not a tuple, got ${evalContext.traversalIterator}`);
334
+ });
215
335
  }
216
- return ValueOrErrors.Operations.All(itemTraversals.flatMap((i) => i.itemTraversal.kind == "r"
217
- ? [
218
- i.itemTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.values.get(i.index) })),
219
- ]
220
- : [])).Then((itemResults) => {
221
- return traverseNode.kind == "r"
222
- ? traverseNode
223
- .value(evalContext)
224
- .Then((nodeResult) => ValueOrErrors.Default.return(itemResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), nodeResult)))
225
- : ValueOrErrors.Default.return(itemResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), traversalContext.zeroRes(unit)));
226
- });
227
- }));
228
- });
229
- }
230
- if (renderer.type.kind == "union" && renderer.kind == "unionRenderer") {
231
- return ValueOrErrors.Operations.All(List(renderer.cases
232
- .map((caseRenderer, caseName) => rec(caseRenderer, traversalContext).Then((caseTraversal) => ValueOrErrors.Default.return({
336
+ return leftTraversal
337
+ .value(
338
+ Object.assign(Object.assign({}, evalContext), {
339
+ traversalIterator: iterator.value.value,
340
+ }),
341
+ )
342
+ .Then((leftRes) => {
343
+ return ValueOrErrors.Default.return(leftRes);
344
+ });
345
+ }
346
+ return ValueOrErrors.Default.return(
347
+ traversalContext.zeroRes(unit),
348
+ );
349
+ }),
350
+ );
351
+ },
352
+ ),
353
+ );
354
+ }
355
+ }
356
+ if (renderer.type.kind == "tuple" && renderer.kind == "tupleRenderer") {
357
+ return ValueOrErrors.Operations.All(
358
+ List(
359
+ renderer.itemRenderers.map((itemRenderer, index) => {
360
+ return rec(itemRenderer.renderer, traversalContext).Then(
361
+ (itemTraversal) => {
362
+ return ValueOrErrors.Default.return({
363
+ index: index,
364
+ itemTraversal: itemTraversal,
365
+ });
366
+ },
367
+ );
368
+ }),
369
+ ),
370
+ ).Then((itemTraversals) => {
371
+ if (
372
+ itemTraversals.every((i) => i.itemTraversal.kind == "l") &&
373
+ traverseNode.kind == "l"
374
+ ) {
375
+ return ValueOrErrors.Default.return(Option.Default.none());
376
+ }
377
+ return ValueOrErrors.Default.return(
378
+ Option.Default.some((evalContext) => {
379
+ const iterator = evalContext.traversalIterator;
380
+ if (!PredicateValue.Operations.IsTuple(iterator)) {
381
+ return ValueOrErrors.Default.throwOne(
382
+ `Error: traversal iterator is not a tuple, got ${evalContext.traversalIterator}`,
383
+ );
384
+ }
385
+ return ValueOrErrors.Operations.All(
386
+ itemTraversals.flatMap((i) =>
387
+ i.itemTraversal.kind == "r"
388
+ ? [
389
+ i.itemTraversal.value(
390
+ Object.assign(Object.assign({}, evalContext), {
391
+ traversalIterator: iterator.values.get(i.index),
392
+ }),
393
+ ),
394
+ ]
395
+ : [],
396
+ ),
397
+ ).Then((itemResults) => {
398
+ return traverseNode.kind == "r"
399
+ ? traverseNode
400
+ .value(evalContext)
401
+ .Then((nodeResult) =>
402
+ ValueOrErrors.Default.return(
403
+ itemResults.reduce(
404
+ (acc, res) => traversalContext.joinRes([acc, res]),
405
+ nodeResult,
406
+ ),
407
+ ),
408
+ )
409
+ : ValueOrErrors.Default.return(
410
+ itemResults.reduce(
411
+ (acc, res) => traversalContext.joinRes([acc, res]),
412
+ traversalContext.zeroRes(unit),
413
+ ),
414
+ );
415
+ });
416
+ }),
417
+ );
418
+ });
419
+ }
420
+ if (renderer.type.kind == "union" && renderer.kind == "unionRenderer") {
421
+ return ValueOrErrors.Operations.All(
422
+ List(
423
+ renderer.cases
424
+ .map((caseRenderer, caseName) =>
425
+ rec(caseRenderer, traversalContext).Then((caseTraversal) =>
426
+ ValueOrErrors.Default.return({
233
427
  caseName: caseName,
234
428
  caseTraversal: caseTraversal,
235
- })))
236
- .valueSeq())).Then((caseTraversals) => {
237
- if (caseTraversals.every((c) => c.caseTraversal.kind == "l") &&
238
- traverseNode.kind == "l") {
239
- return ValueOrErrors.Default.return(Option.Default.none());
240
- }
241
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
242
- var _a;
243
- const iterator = evalContext.traversalIterator;
244
- if (!PredicateValue.Operations.IsUnionCase(iterator)) {
245
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator is not a union case, got ${evalContext.traversalIterator}`);
246
- }
247
- const caseName = iterator.caseName;
248
- const caseTraversal = (_a = caseTraversals.find((c) => c.caseName == caseName)) === null || _a === void 0 ? void 0 : _a.caseTraversal;
249
- if (!caseTraversal) {
250
- return ValueOrErrors.Default.throwOne(`Error: cannot find case traversal for case ${caseName}`);
251
- }
252
- return caseTraversal.kind == "r"
253
- ? caseTraversal
254
- .value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.fields }))
255
- .Then((caseRes) => {
256
- return traverseNode.kind == "r"
257
- ? traverseNode
258
- .value(evalContext)
259
- .Then((nodeResult) => {
260
- return ValueOrErrors.Default.return(traversalContext.joinRes([nodeResult, caseRes]));
261
- })
262
- : ValueOrErrors.Default.return(caseRes);
263
- })
264
- : traverseNode.kind == "r"
265
- ? traverseNode.value(evalContext).Then((nodeResult) => {
266
- return ValueOrErrors.Default.return(nodeResult);
267
- })
268
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
269
- }));
270
- });
271
- }
272
- // TODO -- add recursion for the detailsRenderer, but requires state
273
- if (renderer.type.kind == "table" && renderer.kind == "tableRenderer") {
274
- return ValueOrErrors.Operations.All(List(renderer.columns
275
- .map((column, columnName) => {
276
- return rec(column.renderer, traversalContext).Then((columnTraversal) => {
277
- return ValueOrErrors.Default.return({
278
- columnName: columnName,
279
- columnTraversal: columnTraversal,
280
- });
429
+ }),
430
+ ),
431
+ )
432
+ .valueSeq(),
433
+ ),
434
+ ).Then((caseTraversals) => {
435
+ if (
436
+ caseTraversals.every((c) => c.caseTraversal.kind == "l") &&
437
+ traverseNode.kind == "l"
438
+ ) {
439
+ return ValueOrErrors.Default.return(Option.Default.none());
440
+ }
441
+ return ValueOrErrors.Default.return(
442
+ Option.Default.some((evalContext) => {
443
+ var _a;
444
+ const iterator = evalContext.traversalIterator;
445
+ if (!PredicateValue.Operations.IsUnionCase(iterator)) {
446
+ return ValueOrErrors.Default.throwOne(
447
+ `Error: traversal iterator is not a union case, got ${evalContext.traversalIterator}`,
448
+ );
449
+ }
450
+ const caseName = iterator.caseName;
451
+ const caseTraversal =
452
+ (_a = caseTraversals.find((c) => c.caseName == caseName)) ===
453
+ null || _a === void 0
454
+ ? void 0
455
+ : _a.caseTraversal;
456
+ if (!caseTraversal) {
457
+ return ValueOrErrors.Default.throwOne(
458
+ `Error: cannot find case traversal for case ${caseName}`,
459
+ );
460
+ }
461
+ return caseTraversal.kind == "r"
462
+ ? caseTraversal
463
+ .value(
464
+ Object.assign(Object.assign({}, evalContext), {
465
+ traversalIterator: iterator.fields,
466
+ }),
467
+ )
468
+ .Then((caseRes) => {
469
+ return traverseNode.kind == "r"
470
+ ? traverseNode.value(evalContext).Then((nodeResult) => {
471
+ return ValueOrErrors.Default.return(
472
+ traversalContext.joinRes([nodeResult, caseRes]),
473
+ );
474
+ })
475
+ : ValueOrErrors.Default.return(caseRes);
476
+ })
477
+ : traverseNode.kind == "r"
478
+ ? traverseNode.value(evalContext).Then((nodeResult) => {
479
+ return ValueOrErrors.Default.return(nodeResult);
480
+ })
481
+ : ValueOrErrors.Default.return(
482
+ traversalContext.zeroRes(unit),
483
+ );
484
+ }),
485
+ );
486
+ });
487
+ }
488
+ // TODO -- add recursion for the detailsRenderer, but requires state
489
+ if (renderer.type.kind == "table" && renderer.kind == "tableRenderer") {
490
+ return ValueOrErrors.Operations.All(
491
+ List(
492
+ renderer.columns
493
+ .map((column, columnName) => {
494
+ return rec(column.renderer, traversalContext).Then(
495
+ (columnTraversal) => {
496
+ return ValueOrErrors.Default.return({
497
+ columnName: columnName,
498
+ columnTraversal: columnTraversal,
281
499
  });
282
- })
283
- .valueSeq())).Then((columnTraversals) => {
284
- if (columnTraversals.every((c) => c.columnTraversal.kind == "l") &&
285
- traverseNode.kind == "l") {
286
- return ValueOrErrors.Default.return(Option.Default.none());
500
+ },
501
+ );
502
+ })
503
+ .valueSeq(),
504
+ ),
505
+ ).Then((columnTraversals) => {
506
+ if (
507
+ columnTraversals.every((c) => c.columnTraversal.kind == "l") &&
508
+ traverseNode.kind == "l"
509
+ ) {
510
+ return ValueOrErrors.Default.return(Option.Default.none());
511
+ }
512
+ return ValueOrErrors.Default.return(
513
+ Option.Default.some((evalContext) => {
514
+ const iterator = evalContext.traversalIterator;
515
+ if (!PredicateValue.Operations.IsTable(iterator)) {
516
+ return ValueOrErrors.Default.throwOne(
517
+ `Error: traversal iterator is not a table, got ${evalContext.traversalIterator}`,
518
+ );
519
+ }
520
+ return TableLayout.Operations.ComputeLayout(
521
+ Map([
522
+ ["global", evalContext.global],
523
+ ["local", evalContext.local],
524
+ ["root", evalContext.root],
525
+ ]),
526
+ renderer.visibleColumns,
527
+ ).Then((visibleColumns) => {
528
+ // Note: we do not allow visiblity predicates on individual column cells
529
+ return ValueOrErrors.Operations.All(
530
+ columnTraversals.flatMap((c) => {
531
+ const colTraversal = c.columnTraversal;
532
+ if (
533
+ colTraversal.kind == "l" ||
534
+ !visibleColumns.columns.includes(c.columnName)
535
+ ) {
536
+ return [];
287
537
  }
288
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
289
- const iterator = evalContext.traversalIterator;
290
- if (!PredicateValue.Operations.IsTable(iterator)) {
291
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator is not a table, got ${evalContext.traversalIterator}`);
292
- }
293
- return TableLayout.Operations.ComputeLayout(Map([
294
- ["global", evalContext.global],
295
- ["local", evalContext.local],
296
- ["root", evalContext.root],
297
- ]), renderer.visibleColumns).Then((visibleColumns) => {
298
- // Note: we do not allow visiblity predicates on individual column cells
299
- return ValueOrErrors.Operations.All(columnTraversals.flatMap((c) => {
300
- const colTraversal = c.columnTraversal;
301
- if (colTraversal.kind == "l" ||
302
- !visibleColumns.columns.includes(c.columnName)) {
303
- return [];
304
- }
305
- return iterator.data.valueSeq().flatMap((row) => {
306
- // TODO make this monadic
307
- const columnValue = row.fields.get(c.columnName);
308
- if (!columnValue) {
309
- return [
310
- ValueOrErrors.Default.throwOne(`Error: cannot find column ${c.columnName} in row ${JSON.stringify(row)}`),
311
- ];
312
- }
313
- return [
314
- colTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: columnValue })),
315
- ];
316
- });
317
- })).Then((columnResults) => {
318
- return traverseNode.kind == "r"
319
- ? traverseNode
320
- .value(evalContext)
321
- .Then((nodeResult) => ValueOrErrors.Default.return(columnResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), nodeResult)))
322
- : ValueOrErrors.Default.return(columnResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), traversalContext.zeroRes(unit)));
323
- });
324
- });
325
- }));
538
+ return iterator.data.valueSeq().flatMap((row) => {
539
+ // TODO make this monadic
540
+ const columnValue = row.fields.get(c.columnName);
541
+ if (!columnValue) {
542
+ return [
543
+ ValueOrErrors.Default.throwOne(
544
+ `Error: cannot find column ${c.columnName} in row ${JSON.stringify(row)}`,
545
+ ),
546
+ ];
547
+ }
548
+ return [
549
+ colTraversal.value(
550
+ Object.assign(Object.assign({}, evalContext), {
551
+ traversalIterator: columnValue,
552
+ }),
553
+ ),
554
+ ];
555
+ });
556
+ }),
557
+ ).Then((columnResults) => {
558
+ return traverseNode.kind == "r"
559
+ ? traverseNode
560
+ .value(evalContext)
561
+ .Then((nodeResult) =>
562
+ ValueOrErrors.Default.return(
563
+ columnResults.reduce(
564
+ (acc, res) =>
565
+ traversalContext.joinRes([acc, res]),
566
+ nodeResult,
567
+ ),
568
+ ),
569
+ )
570
+ : ValueOrErrors.Default.return(
571
+ columnResults.reduce(
572
+ (acc, res) => traversalContext.joinRes([acc, res]),
573
+ traversalContext.zeroRes(unit),
574
+ ),
575
+ );
326
576
  });
577
+ });
578
+ }),
579
+ );
580
+ });
581
+ }
582
+ // TODO -- should we also look at the previewRenderer? Woud also requite state
583
+ if (renderer.type.kind == "one" && renderer.kind == "oneRenderer") {
584
+ return rec(renderer.detailsRenderer.renderer, traversalContext).Then(
585
+ (itemTraversal) => {
586
+ if (itemTraversal.kind == "l" && traverseNode.kind == "l") {
587
+ return ValueOrErrors.Default.return(Option.Default.none());
327
588
  }
328
- // TODO -- should we also look at the previewRenderer? Woud also requite state
329
- if (renderer.type.kind == "one" && renderer.kind == "oneRenderer") {
330
- return rec(renderer.detailsRenderer.renderer, traversalContext).Then((itemTraversal) => {
331
- if (itemTraversal.kind == "l" && traverseNode.kind == "l") {
332
- return ValueOrErrors.Default.return(Option.Default.none());
333
- }
334
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
335
- const iterator = evalContext.traversalIterator;
336
- // Handle partial ones
337
- if (PredicateValue.Operations.IsUnit(iterator)) {
338
- return traverseNode.kind == "r"
339
- ? traverseNode.value(evalContext)
340
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
341
- }
342
- if (!PredicateValue.Operations.IsOption(iterator)) {
343
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator for one is not an option, got ${iterator}`);
344
- }
345
- const isSome = PredicateValue.Operations.IsOption(iterator) &&
346
- iterator.isSome;
347
- if (!isSome) {
348
- return traverseNode.kind == "r"
349
- ? traverseNode.value(evalContext)
350
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
351
- }
352
- return traverseNode.kind == "r"
353
- ? traverseNode
354
- .value(evalContext)
355
- .Then((nodeResult) => {
356
- return itemTraversal.kind == "r"
357
- ? itemTraversal
358
- .value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.value }))
359
- .Then((itemResult) => {
360
- return ValueOrErrors.Default.return(traversalContext.joinRes([
361
- nodeResult,
362
- itemResult,
363
- ]));
364
- })
365
- : ValueOrErrors.Default.return(nodeResult);
589
+ return ValueOrErrors.Default.return(
590
+ Option.Default.some((evalContext) => {
591
+ const iterator = evalContext.traversalIterator;
592
+ // Handle partial ones
593
+ if (PredicateValue.Operations.IsUnit(iterator)) {
594
+ return traverseNode.kind == "r"
595
+ ? traverseNode.value(evalContext)
596
+ : ValueOrErrors.Default.return(
597
+ traversalContext.zeroRes(unit),
598
+ );
599
+ }
600
+ if (!PredicateValue.Operations.IsOption(iterator)) {
601
+ return ValueOrErrors.Default.throwOne(
602
+ `Error: traversal iterator for one is not an option, got ${iterator}`,
603
+ );
604
+ }
605
+ const isSome =
606
+ PredicateValue.Operations.IsOption(iterator) &&
607
+ iterator.isSome;
608
+ if (!isSome) {
609
+ return traverseNode.kind == "r"
610
+ ? traverseNode.value(evalContext)
611
+ : ValueOrErrors.Default.return(
612
+ traversalContext.zeroRes(unit),
613
+ );
614
+ }
615
+ return traverseNode.kind == "r"
616
+ ? traverseNode.value(evalContext).Then((nodeResult) => {
617
+ return itemTraversal.kind == "r"
618
+ ? itemTraversal
619
+ .value(
620
+ Object.assign(Object.assign({}, evalContext), {
621
+ traversalIterator: iterator.value,
622
+ }),
623
+ )
624
+ .Then((itemResult) => {
625
+ return ValueOrErrors.Default.return(
626
+ traversalContext.joinRes([
627
+ nodeResult,
628
+ itemResult,
629
+ ]),
630
+ );
366
631
  })
367
- : itemTraversal.kind == "r"
368
- ? itemTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: iterator.value }))
369
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
370
- }));
371
- });
632
+ : ValueOrErrors.Default.return(nodeResult);
633
+ })
634
+ : itemTraversal.kind == "r"
635
+ ? itemTraversal.value(
636
+ Object.assign(Object.assign({}, evalContext), {
637
+ traversalIterator: iterator.value,
638
+ }),
639
+ )
640
+ : ValueOrErrors.Default.return(
641
+ traversalContext.zeroRes(unit),
642
+ );
643
+ }),
644
+ );
645
+ },
646
+ );
647
+ }
648
+ if (renderer.type.kind == "list" && renderer.kind == "listRenderer") {
649
+ return rec(renderer.elementRenderer.renderer, traversalContext).Then(
650
+ (elementTraversal) => {
651
+ if (elementTraversal.kind == "l" && traverseNode.kind == "l") {
652
+ return ValueOrErrors.Default.return(Option.Default.none());
372
653
  }
373
- if (renderer.type.kind == "list" && renderer.kind == "listRenderer") {
374
- return rec(renderer.elementRenderer.renderer, traversalContext).Then((elementTraversal) => {
375
- if (elementTraversal.kind == "l" && traverseNode.kind == "l") {
376
- return ValueOrErrors.Default.return(Option.Default.none());
654
+ return ValueOrErrors.Default.return(
655
+ Option.Default.some((evalContext) => {
656
+ const iterator = evalContext.traversalIterator;
657
+ if (!PredicateValue.Operations.IsTuple(iterator)) {
658
+ return ValueOrErrors.Default.throwOne(
659
+ `Error: traversal iterator for list is not a tuple, got ${JSON.stringify(iterator, null, 2)}`,
660
+ );
661
+ }
662
+ return ValueOrErrors.Operations.All(
663
+ iterator.values.map((value) =>
664
+ elementTraversal.kind == "r"
665
+ ? elementTraversal.value(
666
+ Object.assign(Object.assign({}, evalContext), {
667
+ traversalIterator: value,
668
+ }),
669
+ )
670
+ : ValueOrErrors.Default.return(
671
+ traversalContext.zeroRes(unit),
672
+ ),
673
+ ),
674
+ ).Then((elementResults) =>
675
+ traverseNode.kind == "r"
676
+ ? traverseNode
677
+ .value(evalContext)
678
+ .Then((nodeResult) =>
679
+ ValueOrErrors.Default.return(
680
+ elementResults.reduce(
681
+ (acc, res) =>
682
+ traversalContext.joinRes([acc, res]),
683
+ nodeResult,
684
+ ),
685
+ ),
686
+ )
687
+ : ValueOrErrors.Default.return(
688
+ elementResults.reduce(
689
+ (acc, res) => traversalContext.joinRes([acc, res]),
690
+ traversalContext.zeroRes(unit),
691
+ ),
692
+ ),
693
+ );
694
+ }),
695
+ );
696
+ },
697
+ );
698
+ }
699
+ if (renderer.type.kind == "map" && renderer.kind == "mapRenderer") {
700
+ return rec(renderer.keyRenderer.renderer, traversalContext).Then(
701
+ (keyTraversal) => {
702
+ return rec(renderer.valueRenderer.renderer, traversalContext).Then(
703
+ (valueTraversal) => {
704
+ if (
705
+ keyTraversal.kind == "l" &&
706
+ valueTraversal.kind == "l" &&
707
+ traverseNode.kind == "l"
708
+ ) {
709
+ return ValueOrErrors.Default.return(Option.Default.none());
710
+ }
711
+ return ValueOrErrors.Default.return(
712
+ Option.Default.some((evalContext) => {
713
+ if (
714
+ keyTraversal.kind == "l" &&
715
+ valueTraversal.kind == "l"
716
+ ) {
717
+ return traverseNode.kind == "r"
718
+ ? traverseNode.value(evalContext)
719
+ : ValueOrErrors.Default.return(
720
+ traversalContext.zeroRes(unit),
721
+ );
377
722
  }
378
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
379
- const iterator = evalContext.traversalIterator;
380
- if (!PredicateValue.Operations.IsTuple(iterator)) {
381
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator for list is not a tuple, got ${JSON.stringify(iterator, null, 2)}`);
723
+ const iterator = evalContext.traversalIterator;
724
+ if (!PredicateValue.Operations.IsTuple(iterator)) {
725
+ return ValueOrErrors.Default.throwOne(
726
+ `Error: traversal iterator for map is not a tuple, got ${JSON.stringify(iterator, null, 2)}`,
727
+ );
728
+ }
729
+ return ValueOrErrors.Operations.All(
730
+ iterator.values.map((value) => {
731
+ if (!PredicateValue.Operations.IsTuple(value)) {
732
+ return ValueOrErrors.Default.throwOne(
733
+ `Error: traversal iterator for map keyValue is not a tuple, got ${JSON.stringify(value, null, 2)}`,
734
+ );
382
735
  }
383
- return ValueOrErrors.Operations.All(iterator.values.map((value) => elementTraversal.kind == "r"
384
- ? elementTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: value }))
385
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit)))).Then((elementResults) => traverseNode.kind == "r"
386
- ? traverseNode
387
- .value(evalContext)
388
- .Then((nodeResult) => ValueOrErrors.Default.return(elementResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), nodeResult)))
389
- : ValueOrErrors.Default.return(elementResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), traversalContext.zeroRes(unit))));
390
- }));
391
- });
392
- }
393
- if (renderer.type.kind == "map" && renderer.kind == "mapRenderer") {
394
- return rec(renderer.keyRenderer.renderer, traversalContext).Then((keyTraversal) => {
395
- return rec(renderer.valueRenderer.renderer, traversalContext).Then((valueTraversal) => {
396
- if (keyTraversal.kind == "l" &&
397
- valueTraversal.kind == "l" &&
398
- traverseNode.kind == "l") {
399
- return ValueOrErrors.Default.return(Option.Default.none());
736
+ const keyRes =
737
+ keyTraversal.kind == "r"
738
+ ? keyTraversal.value(
739
+ Object.assign(Object.assign({}, evalContext), {
740
+ traversalIterator: value.values.get(0),
741
+ }),
742
+ )
743
+ : ValueOrErrors.Default.return(
744
+ traversalContext.zeroRes(unit),
745
+ );
746
+ const valueRes =
747
+ valueTraversal.kind == "r"
748
+ ? valueTraversal.value(
749
+ Object.assign(Object.assign({}, evalContext), {
750
+ traversalIterator: value.values.get(1),
751
+ }),
752
+ )
753
+ : ValueOrErrors.Default.return(
754
+ traversalContext.zeroRes(unit),
755
+ );
756
+ if (keyRes.kind == "errors") {
757
+ return keyRes;
400
758
  }
401
- return ValueOrErrors.Default.return(Option.Default.some((evalContext) => {
402
- if (keyTraversal.kind == "l" &&
403
- valueTraversal.kind == "l") {
404
- return traverseNode.kind == "r"
405
- ? traverseNode.value(evalContext)
406
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
407
- }
408
- const iterator = evalContext.traversalIterator;
409
- if (!PredicateValue.Operations.IsTuple(iterator)) {
410
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator for map is not a tuple, got ${JSON.stringify(iterator, null, 2)}`);
411
- }
412
- return ValueOrErrors.Operations.All(iterator.values.map((value) => {
413
- if (!PredicateValue.Operations.IsTuple(value)) {
414
- return ValueOrErrors.Default.throwOne(`Error: traversal iterator for map keyValue is not a tuple, got ${JSON.stringify(value, null, 2)}`);
415
- }
416
- const keyRes = keyTraversal.kind == "r"
417
- ? keyTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: value.values.get(0) }))
418
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
419
- const valueRes = valueTraversal.kind == "r"
420
- ? valueTraversal.value(Object.assign(Object.assign({}, evalContext), { traversalIterator: value.values.get(1) }))
421
- : ValueOrErrors.Default.return(traversalContext.zeroRes(unit));
422
- if (keyRes.kind == "errors") {
423
- return keyRes;
424
- }
425
- if (valueRes.kind == "errors") {
426
- return valueRes;
427
- }
428
- return ValueOrErrors.Default.return(traversalContext.joinRes([
429
- keyRes.value,
430
- valueRes.value,
431
- ]));
432
- })).Then((keyValueResults) => {
433
- return traverseNode.kind == "r"
434
- ? traverseNode
435
- .value(evalContext)
436
- .Then((nodeResult) => {
437
- return ValueOrErrors.Default.return(keyValueResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), nodeResult));
438
- })
439
- : ValueOrErrors.Default.return(keyValueResults.reduce((acc, res) => traversalContext.joinRes([acc, res]), traversalContext.zeroRes(unit)));
440
- });
441
- }));
759
+ if (valueRes.kind == "errors") {
760
+ return valueRes;
761
+ }
762
+ return ValueOrErrors.Default.return(
763
+ traversalContext.joinRes([
764
+ keyRes.value,
765
+ valueRes.value,
766
+ ]),
767
+ );
768
+ }),
769
+ ).Then((keyValueResults) => {
770
+ return traverseNode.kind == "r"
771
+ ? traverseNode.value(evalContext).Then((nodeResult) => {
772
+ return ValueOrErrors.Default.return(
773
+ keyValueResults.reduce(
774
+ (acc, res) =>
775
+ traversalContext.joinRes([acc, res]),
776
+ nodeResult,
777
+ ),
778
+ );
779
+ })
780
+ : ValueOrErrors.Default.return(
781
+ keyValueResults.reduce(
782
+ (acc, res) =>
783
+ traversalContext.joinRes([acc, res]),
784
+ traversalContext.zeroRes(unit),
785
+ ),
786
+ );
442
787
  });
443
- });
444
- }
445
- return ValueOrErrors.Default.return(Option.Default.none());
446
- },
788
+ }),
789
+ );
790
+ },
791
+ );
792
+ },
793
+ );
794
+ }
795
+ return ValueOrErrors.Default.return(Option.Default.none());
447
796
  },
797
+ },
448
798
  };
449
- //# sourceMappingURL=state.js.map
799
+ //# sourceMappingURL=state.js.map