ballerina-core 1.0.256 → 1.0.258

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