ballerina-core 1.0.187 → 1.0.189

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 (488) hide show
  1. package/bin/main.d.ts +1 -1
  2. package/bin/main.js +1 -1
  3. package/bin/src/api-response-handler/coroutines/runner.d.ts +2 -9
  4. package/bin/src/api-response-handler/coroutines/runner.js +13 -20
  5. package/bin/src/api-response-handler/state.d.ts +12 -12
  6. package/bin/src/api-response-handler/state.js +11 -13
  7. package/bin/src/apiResultStatus/state.d.ts +3 -10
  8. package/bin/src/apiResultStatus/state.js +5 -2
  9. package/bin/src/async/domains/mirroring/domains/collection/coroutines/synchronizers.d.ts +75 -400
  10. package/bin/src/async/domains/mirroring/domains/collection/coroutines/synchronizers.js +196 -314
  11. package/bin/src/async/domains/mirroring/domains/collection/state.d.ts +25 -38
  12. package/bin/src/async/domains/mirroring/domains/collection/state.js +36 -126
  13. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection/state.d.ts +8 -12
  14. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection/state.js +11 -18
  15. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection-entity/state.d.ts +9 -12
  16. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection-entity/state.js +19 -19
  17. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entities/state.d.ts +8 -17
  18. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entities/state.js +1 -1
  19. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entity/state.d.ts +13 -16
  20. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entity/state.js +18 -18
  21. package/bin/src/async/domains/mirroring/domains/entity/state.d.ts +9 -12
  22. package/bin/src/async/domains/mirroring/domains/entity/state.js +9 -18
  23. package/bin/src/async/domains/mirroring/domains/singleton/coroutines/synchronizers.d.ts +41 -233
  24. package/bin/src/async/domains/mirroring/domains/singleton/coroutines/synchronizers.js +83 -134
  25. package/bin/src/async/domains/mirroring/domains/singleton/state.d.ts +15 -24
  26. package/bin/src/async/domains/mirroring/domains/singleton/state.js +8 -52
  27. package/bin/src/async/domains/mirroring/domains/synchronization-result/state.d.ts +2 -5
  28. package/bin/src/async/domains/mirroring/domains/synchronization-result/state.js +1 -1
  29. package/bin/src/async/domains/mirroring/domains/synchronized-entities/state.d.ts +10 -16
  30. package/bin/src/async/domains/mirroring/domains/synchronized-entities/state.js +4 -7
  31. package/bin/src/async/domains/promise/state.d.ts +4 -9
  32. package/bin/src/async/domains/promise/state.js +9 -20
  33. package/bin/src/async/domains/synchronized/coroutines/synchronize.d.ts +4 -29
  34. package/bin/src/async/domains/synchronized/coroutines/synchronize.js +28 -80
  35. package/bin/src/async/domains/synchronized/state.d.ts +7 -14
  36. package/bin/src/async/domains/synchronized/state.js +6 -16
  37. package/bin/src/async/state.d.ts +45 -56
  38. package/bin/src/async/state.js +97 -115
  39. package/bin/src/baseEntity/domains/identifiable/state.d.ts +11 -15
  40. package/bin/src/baseEntity/domains/identifiable/state.js +9 -9
  41. package/bin/src/collections/domains/array/state.d.ts +7 -7
  42. package/bin/src/collections/domains/array/state.js +5 -5
  43. package/bin/src/collections/domains/errors/state.d.ts +10 -10
  44. package/bin/src/collections/domains/errors/state.js +10 -10
  45. package/bin/src/collections/domains/immutable/domains/list/state.d.ts +15 -19
  46. package/bin/src/collections/domains/immutable/domains/list/state.js +44 -46
  47. package/bin/src/collections/domains/immutable/domains/map/state.d.ts +16 -30
  48. package/bin/src/collections/domains/immutable/domains/map/state.js +23 -41
  49. package/bin/src/collections/domains/immutable/domains/orderedMap/state.d.ts +25 -53
  50. package/bin/src/collections/domains/immutable/domains/orderedMap/state.js +65 -84
  51. package/bin/src/collections/domains/immutable/domains/ordereredSet/state.d.ts +6 -6
  52. package/bin/src/collections/domains/immutable/domains/ordereredSet/state.js +6 -6
  53. package/bin/src/collections/domains/maybe/state.d.ts +9 -9
  54. package/bin/src/collections/domains/maybe/state.js +9 -12
  55. package/bin/src/collections/domains/product/state.d.ts +19 -25
  56. package/bin/src/collections/domains/product/state.js +10 -13
  57. package/bin/src/collections/domains/sum/state.d.ts +77 -101
  58. package/bin/src/collections/domains/sum/state.js +32 -49
  59. package/bin/src/collections/domains/valueOrErrors/state.d.ts +27 -53
  60. package/bin/src/collections/domains/valueOrErrors/state.js +56 -81
  61. package/bin/src/coroutines/builder.d.ts +49 -135
  62. package/bin/src/coroutines/builder.js +19 -40
  63. package/bin/src/coroutines/state.d.ts +71 -186
  64. package/bin/src/coroutines/state.js +306 -381
  65. package/bin/src/coroutines/template.d.ts +8 -17
  66. package/bin/src/coroutines/template.js +59 -97
  67. package/bin/src/debounced/coroutines/debounce.d.ts +6 -15
  68. package/bin/src/debounced/coroutines/debounce.js +89 -115
  69. package/bin/src/debounced/state.d.ts +19 -26
  70. package/bin/src/debounced/state.js +25 -62
  71. package/bin/src/diagnostics/domains/message-box/state.d.ts +1 -1
  72. package/bin/src/diagnostics/domains/message-box/state.js +3 -3
  73. package/bin/src/foreignMutations/state.d.ts +3 -3
  74. package/bin/src/foreignMutations/state.js +1 -1
  75. package/bin/src/forms/domains/attachments/views/attachments-view.d.ts +4 -4
  76. package/bin/src/forms/domains/attachments/views/attachments-view.js +8 -30
  77. package/bin/src/forms/domains/collection/domains/reference/state.d.ts +22 -29
  78. package/bin/src/forms/domains/collection/domains/reference/state.js +20 -26
  79. package/bin/src/forms/domains/collection/domains/selection/state.d.ts +15 -37
  80. package/bin/src/forms/domains/collection/domains/selection/state.js +1 -1
  81. package/bin/src/forms/domains/dispatched-forms/built-ins/state.d.ts +105 -512
  82. package/bin/src/forms/domains/dispatched-forms/built-ins/state.js +530 -1405
  83. package/bin/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.d.ts +2 -22
  84. package/bin/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.js +44 -128
  85. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/apis/state.d.ts +63 -82
  86. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/apis/state.js +86 -172
  87. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/enum/state.d.ts +19 -35
  88. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/enum/state.js +27 -40
  89. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/list/state.d.ts +28 -60
  90. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/list/state.js +40 -76
  91. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/lookup/state.d.ts +56 -121
  92. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/lookup/state.js +59 -102
  93. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/map/state.d.ts +15 -42
  94. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/map/state.js +29 -64
  95. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/nestedRenderer/state.d.ts +29 -70
  96. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/nestedRenderer/state.js +20 -52
  97. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/one/state.d.ts +18 -61
  98. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/one/state.js +33 -88
  99. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/primitive/state.d.ts +10 -20
  100. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/primitive/state.js +13 -21
  101. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/domains/recordFieldRenderer/state.d.ts +11 -42
  102. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/domains/recordFieldRenderer/state.js +18 -59
  103. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/state.d.ts +18 -46
  104. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/state.js +48 -110
  105. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/stream/state.d.ts +14 -29
  106. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/stream/state.js +27 -43
  107. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sum/state.d.ts +19 -49
  108. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sum/state.js +23 -63
  109. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sumUnitDate/state.d.ts +13 -21
  110. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sumUnitDate/state.js +22 -39
  111. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/domains/tableCellRenderer/state.d.ts +10 -39
  112. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/domains/tableCellRenderer/state.js +11 -46
  113. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/state.d.ts +34 -79
  114. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/state.js +46 -146
  115. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/tuple/state.d.ts +13 -37
  116. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/tuple/state.js +29 -64
  117. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/union/state.d.ts +15 -40
  118. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/union/state.js +33 -78
  119. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.d.ts +18 -101
  120. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.js +59 -149
  121. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.d.ts +155 -277
  122. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.js +375 -715
  123. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/state.d.ts +51 -103
  124. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/state.js +94 -252
  125. package/bin/src/forms/domains/dispatched-forms/deserializer/state.d.ts +80 -302
  126. package/bin/src/forms/domains/dispatched-forms/deserializer/state.js +55 -174
  127. package/bin/src/forms/domains/dispatched-forms/deserializer/template.d.ts +2 -27
  128. package/bin/src/forms/domains/dispatched-forms/deserializer/template.js +2 -3
  129. package/bin/src/forms/domains/dispatched-forms/runner/coroutines/runner.d.ts +4 -27
  130. package/bin/src/forms/domains/dispatched-forms/runner/coroutines/runner.js +82 -136
  131. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/state.d.ts +7 -35
  132. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/state.js +3 -3
  133. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/template.d.ts +4 -28
  134. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/template.js +23 -49
  135. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/state.d.ts +7 -32
  136. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/state.js +3 -3
  137. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/template.d.ts +4 -25
  138. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/template.js +23 -49
  139. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/state.d.ts +19 -56
  140. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/state.js +6 -18
  141. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/template.d.ts +7 -29
  142. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/template.js +30 -64
  143. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/state.d.ts +15 -42
  144. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/state.js +6 -9
  145. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/template.d.ts +8 -40
  146. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/template.js +59 -150
  147. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/state.d.ts +11 -45
  148. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/state.js +1 -1
  149. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/template.d.ts +8 -42
  150. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/template.js +50 -127
  151. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/injectables/state.d.ts +19 -55
  152. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/injectables/state.js +22 -40
  153. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.d.ts +27 -75
  154. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.js +10 -19
  155. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.d.ts +6 -50
  156. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.js +95 -289
  157. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.d.ts +7 -39
  158. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.d.ts.map +1 -1
  159. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.js +1 -1
  160. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.d.ts +4 -44
  161. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.d.ts.map +1 -1
  162. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.js +8 -26
  163. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.js.map +1 -1
  164. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/state.d.ts +26 -103
  165. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/state.js +18 -61
  166. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/template.d.ts +9 -64
  167. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/template.js +89 -308
  168. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/state.d.ts +7 -37
  169. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/state.js +3 -3
  170. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/template.d.ts +4 -29
  171. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/template.js +23 -54
  172. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.d.ts +44 -181
  173. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.js +77 -184
  174. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.d.ts +175 -418
  175. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.js +20 -76
  176. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.d.ts +12 -66
  177. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.js +212 -581
  178. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.d.ts +21 -80
  179. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.js +11 -32
  180. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.d.ts +10 -57
  181. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.js +61 -190
  182. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/state.d.ts +49 -123
  183. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/state.js +13 -35
  184. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/template.d.ts +8 -45
  185. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/template.js +68 -195
  186. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/state.d.ts +51 -121
  187. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/state.js +13 -36
  188. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/template.d.ts +8 -45
  189. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/template.js +106 -246
  190. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/state.d.ts +8 -38
  191. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/state.js +3 -3
  192. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/template.d.ts +4 -29
  193. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/template.js +23 -54
  194. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/state.d.ts +34 -58
  195. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/state.js +13 -24
  196. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/state.d.ts +8 -38
  197. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/state.js +3 -3
  198. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/template.d.ts +4 -29
  199. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/template.js +26 -58
  200. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/state.d.ts +29 -92
  201. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/state.js +7 -22
  202. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/template.d.ts +7 -55
  203. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/template.js +48 -162
  204. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/runner.d.ts +22 -81
  205. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/runner.js +40 -89
  206. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/state.d.ts +154 -324
  207. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/state.js +56 -117
  208. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.d.ts +9 -69
  209. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.d.ts.map +1 -1
  210. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.js +185 -496
  211. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.js.map +1 -1
  212. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/state.d.ts +18 -75
  213. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/state.js +8 -20
  214. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/template.d.ts +6 -51
  215. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/template.js +32 -121
  216. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/state.d.ts +18 -76
  217. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/state.js +8 -21
  218. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/template.d.ts +6 -51
  219. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/template.js +31 -90
  220. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/state.d.ts +13 -45
  221. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/state.js +9 -12
  222. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/template.d.ts +6 -29
  223. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/template.js +20 -54
  224. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.d.ts +437 -600
  225. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.d.ts.map +1 -1
  226. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js +516 -668
  227. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js.map +1 -1
  228. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/list/state.d.ts +5 -24
  229. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/list/state.js +16 -51
  230. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.d.ts +6 -26
  231. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.d.ts.map +1 -1
  232. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.js +13 -39
  233. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.js.map +1 -1
  234. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/map/state.d.ts +5 -23
  235. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/map/state.js +16 -68
  236. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/multiSelection/state.d.ts +5 -22
  237. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/multiSelection/state.js +22 -76
  238. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/nestedDispatcher/state.d.ts +6 -41
  239. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/nestedDispatcher/state.js +8 -37
  240. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.d.ts +7 -57
  241. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.d.ts.map +1 -1
  242. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.js +31 -113
  243. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.js.map +1 -1
  244. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/primitive/state.d.ts +5 -22
  245. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/primitive/state.js +61 -139
  246. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/recordField/state.d.ts +5 -26
  247. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/recordField/state.js +4 -14
  248. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/state.d.ts +6 -49
  249. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/state.js +25 -79
  250. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/singleSelectionDispatcher/state.d.ts +5 -22
  251. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/singleSelectionDispatcher/state.js +22 -76
  252. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/sum/state.d.ts +5 -25
  253. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/sum/state.js +18 -55
  254. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.d.ts +7 -54
  255. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.d.ts.map +1 -1
  256. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.js +48 -160
  257. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.js.map +1 -1
  258. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/tupleDispatcher/state.d.ts +5 -25
  259. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/tupleDispatcher/state.js +11 -54
  260. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/unionDispatcher/state.d.ts +5 -25
  261. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/unionDispatcher/state.js +15 -63
  262. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.d.ts +6 -44
  263. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.js +43 -135
  264. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.d.ts +18 -38
  265. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.js +381 -697
  266. package/bin/src/forms/domains/dispatched-forms/runner/state.d.ts +37 -90
  267. package/bin/src/forms/domains/dispatched-forms/runner/state.js +9 -12
  268. package/bin/src/forms/domains/dispatched-forms/runner/template.d.ts +4 -28
  269. package/bin/src/forms/domains/dispatched-forms/runner/template.js +19 -47
  270. package/bin/src/forms/domains/launcher/coroutines/runner.d.ts +4 -12
  271. package/bin/src/forms/domains/launcher/coroutines/runner.js +45 -120
  272. package/bin/src/forms/domains/launcher/domains/create/coroutines/runner.d.ts +3 -16
  273. package/bin/src/forms/domains/launcher/domains/create/coroutines/runner.js +101 -240
  274. package/bin/src/forms/domains/launcher/domains/create/state.d.ts +121 -236
  275. package/bin/src/forms/domains/launcher/domains/create/state.js +17 -62
  276. package/bin/src/forms/domains/launcher/domains/create/template.d.ts +6 -20
  277. package/bin/src/forms/domains/launcher/domains/create/template.js +42 -84
  278. package/bin/src/forms/domains/launcher/domains/edit/coroutines/runner.d.ts +3 -16
  279. package/bin/src/forms/domains/launcher/domains/edit/coroutines/runner.js +103 -242
  280. package/bin/src/forms/domains/launcher/domains/edit/state.d.ts +121 -230
  281. package/bin/src/forms/domains/launcher/domains/edit/state.js +17 -62
  282. package/bin/src/forms/domains/launcher/domains/edit/template.d.ts +6 -20
  283. package/bin/src/forms/domains/launcher/domains/edit/template.js +43 -86
  284. package/bin/src/forms/domains/launcher/domains/merger/state.d.ts +4 -4
  285. package/bin/src/forms/domains/launcher/domains/merger/state.js +26 -35
  286. package/bin/src/forms/domains/launcher/domains/passthrough/coroutines/runner.d.ts +5 -20
  287. package/bin/src/forms/domains/launcher/domains/passthrough/coroutines/runner.js +42 -88
  288. package/bin/src/forms/domains/launcher/domains/passthrough/state.d.ts +58 -123
  289. package/bin/src/forms/domains/launcher/domains/passthrough/state.js +19 -44
  290. package/bin/src/forms/domains/launcher/domains/passthrough/template.d.ts +6 -23
  291. package/bin/src/forms/domains/launcher/domains/passthrough/template.js +34 -56
  292. package/bin/src/forms/domains/launcher/state.d.ts +43 -62
  293. package/bin/src/forms/domains/launcher/state.js +6 -6
  294. package/bin/src/forms/domains/launcher/template.d.ts +15 -35
  295. package/bin/src/forms/domains/launcher/template.js +85 -169
  296. package/bin/src/forms/domains/parser/coroutines/runner.d.ts +5 -13
  297. package/bin/src/forms/domains/parser/coroutines/runner.js +25 -87
  298. package/bin/src/forms/domains/parser/domains/built-ins/state.d.ts +71 -135
  299. package/bin/src/forms/domains/parser/domains/built-ins/state.js +533 -944
  300. package/bin/src/forms/domains/parser/domains/deltas/state.d.ts +296 -417
  301. package/bin/src/forms/domains/parser/domains/deltas/state.js +318 -444
  302. package/bin/src/forms/domains/parser/domains/injectables/state.d.ts +20 -29
  303. package/bin/src/forms/domains/parser/domains/injectables/state.js +26 -29
  304. package/bin/src/forms/domains/parser/domains/layout/state.d.ts +41 -63
  305. package/bin/src/forms/domains/parser/domains/layout/state.js +136 -214
  306. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.d.ts +6 -19
  307. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.js +152 -306
  308. package/bin/src/forms/domains/parser/domains/predicates/state.d.ts +242 -377
  309. package/bin/src/forms/domains/parser/domains/predicates/state.js +752 -1225
  310. package/bin/src/forms/domains/parser/domains/renderer/state.d.ts +92 -245
  311. package/bin/src/forms/domains/parser/domains/renderer/state.js +480 -1137
  312. package/bin/src/forms/domains/parser/domains/types/state.d.ts +130 -170
  313. package/bin/src/forms/domains/parser/domains/types/state.js +170 -355
  314. package/bin/src/forms/domains/parser/domains/validator/state.d.ts +117 -143
  315. package/bin/src/forms/domains/parser/domains/validator/state.js +280 -417
  316. package/bin/src/forms/domains/parser/state.d.ts +82 -217
  317. package/bin/src/forms/domains/parser/state.js +373 -612
  318. package/bin/src/forms/domains/parser/template.d.ts +5 -13
  319. package/bin/src/forms/domains/parser/template.js +1 -1
  320. package/bin/src/forms/domains/primitives/domains/base-64-file/state.d.ts +11 -19
  321. package/bin/src/forms/domains/primitives/domains/base-64-file/state.js +5 -5
  322. package/bin/src/forms/domains/primitives/domains/base-64-file/template.d.ts +7 -18
  323. package/bin/src/forms/domains/primitives/domains/base-64-file/template.js +19 -38
  324. package/bin/src/forms/domains/primitives/domains/boolean/state.d.ts +11 -19
  325. package/bin/src/forms/domains/primitives/domains/boolean/state.js +5 -5
  326. package/bin/src/forms/domains/primitives/domains/boolean/template.d.ts +8 -24
  327. package/bin/src/forms/domains/primitives/domains/boolean/template.js +19 -38
  328. package/bin/src/forms/domains/primitives/domains/date/state.d.ts +20 -39
  329. package/bin/src/forms/domains/primitives/domains/date/state.js +9 -18
  330. package/bin/src/forms/domains/primitives/domains/date/template.d.ts +7 -18
  331. package/bin/src/forms/domains/primitives/domains/date/template.js +25 -51
  332. package/bin/src/forms/domains/primitives/domains/enum/state.d.ts +15 -31
  333. package/bin/src/forms/domains/primitives/domains/enum/state.js +6 -6
  334. package/bin/src/forms/domains/primitives/domains/enum/template.d.ts +7 -18
  335. package/bin/src/forms/domains/primitives/domains/enum/template.js +48 -117
  336. package/bin/src/forms/domains/primitives/domains/enum-multiselect/state.d.ts +8 -17
  337. package/bin/src/forms/domains/primitives/domains/enum-multiselect/state.js +1 -1
  338. package/bin/src/forms/domains/primitives/domains/enum-multiselect/template.d.ts +7 -18
  339. package/bin/src/forms/domains/primitives/domains/enum-multiselect/template.js +40 -99
  340. package/bin/src/forms/domains/primitives/domains/list/state.d.ts +24 -45
  341. package/bin/src/forms/domains/primitives/domains/list/state.js +14 -14
  342. package/bin/src/forms/domains/primitives/domains/list/template.d.ts +13 -38
  343. package/bin/src/forms/domains/primitives/domains/list/template.js +71 -200
  344. package/bin/src/forms/domains/primitives/domains/map/state.d.ts +29 -68
  345. package/bin/src/forms/domains/primitives/domains/map/state.js +14 -14
  346. package/bin/src/forms/domains/primitives/domains/map/template.d.ts +25 -65
  347. package/bin/src/forms/domains/primitives/domains/map/template.js +103 -294
  348. package/bin/src/forms/domains/primitives/domains/number/state.d.ts +11 -19
  349. package/bin/src/forms/domains/primitives/domains/number/state.js +5 -5
  350. package/bin/src/forms/domains/primitives/domains/number/template.d.ts +8 -24
  351. package/bin/src/forms/domains/primitives/domains/number/template.js +19 -38
  352. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/state.d.ts +42 -89
  353. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/state.js +16 -33
  354. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/template.d.ts +8 -22
  355. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/template.js +62 -171
  356. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/state.d.ts +9 -18
  357. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/state.js +1 -1
  358. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/template.d.ts +7 -18
  359. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/template.js +69 -182
  360. package/bin/src/forms/domains/primitives/domains/secret/state.d.ts +11 -19
  361. package/bin/src/forms/domains/primitives/domains/secret/state.js +5 -5
  362. package/bin/src/forms/domains/primitives/domains/secret/template.d.ts +7 -18
  363. package/bin/src/forms/domains/primitives/domains/secret/template.js +19 -38
  364. package/bin/src/forms/domains/primitives/domains/string/state.d.ts +13 -21
  365. package/bin/src/forms/domains/primitives/domains/string/state.js +5 -5
  366. package/bin/src/forms/domains/primitives/domains/string/template.d.ts +7 -18
  367. package/bin/src/forms/domains/primitives/domains/string/template.js +22 -42
  368. package/bin/src/forms/domains/primitives/domains/sum/state.d.ts +22 -62
  369. package/bin/src/forms/domains/primitives/domains/sum/state.js +10 -10
  370. package/bin/src/forms/domains/primitives/domains/sum/template.d.ts +16 -48
  371. package/bin/src/forms/domains/primitives/domains/sum/template.js +50 -141
  372. package/bin/src/forms/domains/primitives/domains/tuple/state.d.ts +23 -48
  373. package/bin/src/forms/domains/primitives/domains/tuple/state.js +9 -9
  374. package/bin/src/forms/domains/primitives/domains/tuple/template.d.ts +18 -46
  375. package/bin/src/forms/domains/primitives/domains/tuple/template.js +33 -100
  376. package/bin/src/forms/domains/primitives/domains/unit/state.d.ts +10 -17
  377. package/bin/src/forms/domains/primitives/domains/unit/state.js +8 -8
  378. package/bin/src/forms/domains/primitives/domains/unit/template.d.ts +4 -9
  379. package/bin/src/forms/domains/primitives/domains/unit/template.js +9 -22
  380. package/bin/src/forms/domains/singleton/domains/form-label/state.d.ts +4 -4
  381. package/bin/src/forms/domains/singleton/domains/form-label/state.js +1 -1
  382. package/bin/src/forms/domains/singleton/domains/mapping/state.d.ts +71 -0
  383. package/bin/src/forms/domains/singleton/domains/mapping/state.d.ts.map +1 -0
  384. package/bin/src/forms/domains/singleton/domains/mapping/state.js +91 -0
  385. package/bin/src/forms/domains/singleton/domains/mapping/state.js.map +1 -0
  386. package/bin/src/forms/domains/singleton/domains/mapping/template.d.ts +79 -0
  387. package/bin/src/forms/domains/singleton/domains/mapping/template.d.ts.map +1 -0
  388. package/bin/src/forms/domains/singleton/domains/mapping/template.js +20 -0
  389. package/bin/src/forms/domains/singleton/domains/mapping/template.js.map +1 -0
  390. package/bin/src/forms/domains/singleton/state.d.ts +43 -144
  391. package/bin/src/forms/domains/singleton/state.js +10 -12
  392. package/bin/src/forms/domains/singleton/template.d.ts +88 -177
  393. package/bin/src/forms/domains/singleton/template.js +113 -288
  394. package/bin/src/forms/domains/singleton-table/coroutines/runner.d.ts +8 -0
  395. package/bin/src/forms/domains/singleton-table/coroutines/runner.d.ts.map +1 -0
  396. package/bin/src/forms/domains/singleton-table/coroutines/runner.js +62 -0
  397. package/bin/src/forms/domains/singleton-table/coroutines/runner.js.map +1 -0
  398. package/bin/src/forms/domains/singleton-table/state.d.ts +130 -0
  399. package/bin/src/forms/domains/singleton-table/state.d.ts.map +1 -0
  400. package/bin/src/forms/domains/singleton-table/state.js +72 -0
  401. package/bin/src/forms/domains/singleton-table/state.js.map +1 -0
  402. package/bin/src/forms/domains/singleton-table/template.d.ts +25 -0
  403. package/bin/src/forms/domains/singleton-table/template.d.ts.map +1 -0
  404. package/bin/src/forms/domains/singleton-table/template.js +283 -0
  405. package/bin/src/forms/domains/singleton-table/template.js.map +1 -0
  406. package/bin/src/fun/domains/curry/state.d.ts +2 -4
  407. package/bin/src/fun/domains/curry/state.js +1 -1
  408. package/bin/src/fun/domains/id/state.d.ts +1 -1
  409. package/bin/src/fun/domains/id/state.js +1 -1
  410. package/bin/src/fun/domains/predicate/domains/bool-expr.d.ts +41 -57
  411. package/bin/src/fun/domains/predicate/domains/bool-expr.js +67 -76
  412. package/bin/src/fun/domains/predicate/state.d.ts +7 -9
  413. package/bin/src/fun/domains/predicate/state.js +10 -14
  414. package/bin/src/fun/domains/simpleCallback/state.d.ts +1 -1
  415. package/bin/src/fun/domains/simpleCallback/state.js +1 -1
  416. package/bin/src/fun/domains/uncurry/state.d.ts +2 -4
  417. package/bin/src/fun/domains/uncurry/state.js +1 -1
  418. package/bin/src/fun/domains/unit/state.d.ts +1 -1
  419. package/bin/src/fun/domains/unit/state.js +1 -1
  420. package/bin/src/fun/domains/updater/domains/caseUpdater/state.d.ts +7 -22
  421. package/bin/src/fun/domains/updater/domains/caseUpdater/state.js +10 -18
  422. package/bin/src/fun/domains/updater/domains/mapUpdater/state.d.ts +13 -24
  423. package/bin/src/fun/domains/updater/domains/mapUpdater/state.js +10 -40
  424. package/bin/src/fun/domains/updater/domains/maybeUpdater/state.d.ts +13 -19
  425. package/bin/src/fun/domains/updater/domains/maybeUpdater/state.js +9 -20
  426. package/bin/src/fun/domains/updater/domains/orderedMapUpdater/state.d.ts +13 -24
  427. package/bin/src/fun/domains/updater/domains/orderedMapUpdater/state.js +11 -47
  428. package/bin/src/fun/domains/updater/domains/orderedSetUpdater/state.d.ts +8 -20
  429. package/bin/src/fun/domains/updater/domains/orderedSetUpdater/state.js +5 -17
  430. package/bin/src/fun/domains/updater/domains/replaceWith/state.d.ts +1 -1
  431. package/bin/src/fun/domains/updater/domains/replaceWith/state.js +1 -1
  432. package/bin/src/fun/domains/updater/domains/simpleUpdater/domains/baseSimpleUpdater/state.d.ts +4 -13
  433. package/bin/src/fun/domains/updater/domains/simpleUpdater/domains/baseSimpleUpdater/state.js +4 -6
  434. package/bin/src/fun/domains/updater/domains/simpleUpdater/state.d.ts +22 -60
  435. package/bin/src/fun/domains/updater/domains/simpleUpdater/state.js +31 -42
  436. package/bin/src/fun/domains/updater/state.d.ts +4 -4
  437. package/bin/src/fun/domains/updater/state.js +10 -12
  438. package/bin/src/fun/state.d.ts +3 -3
  439. package/bin/src/fun/state.js +7 -9
  440. package/bin/src/infinite-data-stream/coroutines/builder.d.ts +27 -209
  441. package/bin/src/infinite-data-stream/coroutines/builder.js +1 -1
  442. package/bin/src/infinite-data-stream/coroutines/infiniteLoader.d.ts +5 -21
  443. package/bin/src/infinite-data-stream/coroutines/infiniteLoader.js +20 -47
  444. package/bin/src/infinite-data-stream/coroutines/runner.d.ts +3 -11
  445. package/bin/src/infinite-data-stream/coroutines/runner.js +7 -7
  446. package/bin/src/infinite-data-stream/state.d.ts +51 -84
  447. package/bin/src/infinite-data-stream/state.js +61 -125
  448. package/bin/src/infinite-data-stream/template.d.ts +3 -10
  449. package/bin/src/infinite-data-stream/template.js +2 -3
  450. package/bin/src/math/domains/DOMRect/state.d.ts +4 -4
  451. package/bin/src/math/domains/DOMRect/state.js +8 -10
  452. package/bin/src/math/domains/number/state.d.ts +5 -5
  453. package/bin/src/math/domains/number/state.js +5 -5
  454. package/bin/src/math/domains/rect/state.d.ts +8 -8
  455. package/bin/src/math/domains/rect/state.js +15 -16
  456. package/bin/src/math/domains/rgba/state.d.ts +17 -17
  457. package/bin/src/math/domains/rgba/state.js +81 -77
  458. package/bin/src/math/domains/size2/state.d.ts +8 -8
  459. package/bin/src/math/domains/size2/state.js +6 -6
  460. package/bin/src/math/domains/vector2/state.d.ts +10 -10
  461. package/bin/src/math/domains/vector2/state.js +8 -8
  462. package/bin/src/queue/state.d.ts +7 -23
  463. package/bin/src/queue/state.js +16 -23
  464. package/bin/src/state/domains/repository/state.d.ts +9 -15
  465. package/bin/src/state/domains/repository/state.js +1 -1
  466. package/bin/src/template/state.d.ts +45 -153
  467. package/bin/src/template/state.js +115 -163
  468. package/bin/src/validation/state.d.ts +9 -23
  469. package/bin/src/validation/state.js +45 -38
  470. package/bin/src/value/domains/mutable-value/state.d.ts +3 -3
  471. package/bin/src/value/domains/mutable-value/state.js +2 -3
  472. package/bin/src/value/state.d.ts +9 -9
  473. package/bin/src/value/state.js +8 -11
  474. package/bin/src/value-infinite-data-stream/coroutines/builder.d.ts +25 -207
  475. package/bin/src/value-infinite-data-stream/coroutines/builder.js +1 -1
  476. package/bin/src/value-infinite-data-stream/coroutines/infiniteLoader.d.ts +2 -4
  477. package/bin/src/value-infinite-data-stream/coroutines/infiniteLoader.js +20 -55
  478. package/bin/src/value-infinite-data-stream/coroutines/runner.d.ts +2 -8
  479. package/bin/src/value-infinite-data-stream/coroutines/runner.js +4 -6
  480. package/bin/src/value-infinite-data-stream/state.d.ts +66 -132
  481. package/bin/src/value-infinite-data-stream/state.js +75 -187
  482. package/bin/src/value-infinite-data-stream/template.d.ts +2 -7
  483. package/bin/src/value-infinite-data-stream/template.js +2 -4
  484. package/bin/src/visibility/state.d.ts +2 -5
  485. package/bin/src/visibility/state.js +1 -1
  486. package/package.json +1 -1
  487. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.tsx +18 -3
  488. package/src/forms/domains/parser/domains/predicates/domains/extractor/state.ts +1 -0
@@ -1,1276 +1,803 @@
1
1
  import { Map, Set, List, OrderedMap } from "immutable";
2
- import {
3
- ValueOrErrors,
4
- MapRepo,
5
- Updater,
6
- simpleUpdater,
7
- replaceWith,
8
- ListRepo,
9
- } from "../../../../../../main";
2
+ import { ValueOrErrors, MapRepo, Updater, simpleUpdater, replaceWith, ListRepo, } from "../../../../../../main";
10
3
  const calculateVisibility = (expr, bindings) => {
11
- if (typeof expr == "boolean") {
12
- return ValueOrErrors.Default.return(expr);
13
- }
14
- return Expr.Operations.Evaluate(bindings)(expr).Then((result) => {
15
- if (typeof result == "boolean") {
16
- return ValueOrErrors.Default.return(result);
4
+ if (typeof expr == "boolean") {
5
+ return ValueOrErrors.Default.return(expr);
17
6
  }
18
- return ValueOrErrors.Default.throwOne(
19
- `Error: cannot evaluate expression ${JSON.stringify(expr)} to a boolean`,
20
- );
21
- });
7
+ return Expr.Operations.Evaluate(bindings)(expr).Then((result) => {
8
+ if (typeof result == "boolean") {
9
+ return ValueOrErrors.Default.return(result);
10
+ }
11
+ return ValueOrErrors.Default.throwOne(`Error: cannot evaluate expression ${JSON.stringify(expr)} to a boolean`);
12
+ });
22
13
  };
23
14
  export const FieldPredicateExpression = {
24
- Default: {
25
- unit: (value) => ({ kind: "unit", value }),
26
- primitive: (value) => ({
27
- kind: "primitive",
28
- value,
29
- }),
30
- record: (value, fields) => ({ kind: "record", value, fields }),
31
- list: (value, elementExpression) => ({
32
- kind: "list",
33
- value,
34
- elementExpression,
35
- }),
36
- map: (value, keyExpression, valueExpression) => ({
37
- kind: "map",
38
- value,
39
- keyExpression,
40
- valueExpression,
41
- }),
42
- tuple: (value, elementExpressions) => ({
43
- kind: "tuple",
44
- value,
45
- elementExpressions,
46
- }),
47
- sum: (value, leftExpression, rightExpression) => ({
48
- kind: "sum",
49
- value,
50
- leftExpression:
51
- leftExpression !== null && leftExpression !== void 0
52
- ? leftExpression
53
- : FieldPredicateExpression.Default.unit(false),
54
- rightExpression:
55
- rightExpression !== null && rightExpression !== void 0
56
- ? rightExpression
57
- : FieldPredicateExpression.Default.unit(false),
58
- }),
59
- },
15
+ Default: {
16
+ unit: (value) => ({ kind: "unit", value }),
17
+ primitive: (value) => ({
18
+ kind: "primitive",
19
+ value,
20
+ }),
21
+ record: (value, fields) => ({ kind: "record", value, fields }),
22
+ list: (value, elementExpression) => ({ kind: "list", value, elementExpression }),
23
+ map: (value, keyExpression, valueExpression) => ({
24
+ kind: "map",
25
+ value,
26
+ keyExpression,
27
+ valueExpression,
28
+ }),
29
+ tuple: (value, elementExpressions) => ({
30
+ kind: "tuple",
31
+ value,
32
+ elementExpressions,
33
+ }),
34
+ sum: (value, leftExpression, rightExpression) => ({
35
+ kind: "sum",
36
+ value,
37
+ leftExpression: leftExpression !== null && leftExpression !== void 0 ? leftExpression : FieldPredicateExpression.Default.unit(false),
38
+ rightExpression: rightExpression !== null && rightExpression !== void 0 ? rightExpression : FieldPredicateExpression.Default.unit(false),
39
+ }),
40
+ },
60
41
  };
61
42
  export const FormFieldPredicateEvaluation = {
62
- Default: {
63
- unit: (value) => ({
64
- kind: "unit",
65
- value,
66
- }),
67
- primitive: (value) => ({
68
- kind: "primitive",
69
- value,
70
- }),
71
- form: (value, fields) => ({ kind: "form", value, fields }),
72
- list: (value, elementValues) => ({
73
- kind: "list",
74
- value,
75
- elementValues,
76
- }),
77
- map: (value, elementValues) => ({ kind: "map", value, elementValues }),
78
- tuple: (value, elementValues) => ({
79
- kind: "tuple",
80
- value,
81
- elementValues,
82
- }),
83
- sum: (value, innerValue) => ({ kind: "sum", value, innerValue }),
84
- },
43
+ Default: {
44
+ unit: (value) => ({
45
+ kind: "unit",
46
+ value,
47
+ }),
48
+ primitive: (value) => ({
49
+ kind: "primitive",
50
+ value,
51
+ }),
52
+ form: (value, fields) => ({ kind: "form", value, fields }),
53
+ list: (value, elementValues) => ({
54
+ kind: "list",
55
+ value,
56
+ elementValues,
57
+ }),
58
+ map: (value, elementValues) => ({ kind: "map", value, elementValues }),
59
+ tuple: (value, elementValues) => ({
60
+ kind: "tuple",
61
+ value,
62
+ elementValues,
63
+ }),
64
+ sum: (value, innerValue) => ({ kind: "sum", value, innerValue }),
65
+ },
85
66
  };
86
67
  export const ValueRecord = {
87
- Default: {
88
- empty: () => ({ kind: "record", fields: OrderedMap() }),
89
- fromJSON: (json) => ({
90
- kind: "record",
91
- fields: OrderedMap(Object.assign({}, json)), // TODO - check this works ok
92
- }),
93
- fromMap: (map) => ({
94
- kind: "record",
95
- fields: OrderedMap(map),
96
- }),
97
- },
98
- Operations: {
99
- has: (record, key) => {
100
- return record.fields.has(key);
101
- },
102
- },
103
- Updaters: Object.assign(Object.assign({}, simpleUpdater()("fields")), {
104
- update: (key, updater) => {
105
- return ValueRecord.Updaters.fields(MapRepo.Updaters.update(key, updater));
106
- },
107
- set: (key, value) => {
108
- return ValueRecord.Updaters.fields(MapRepo.Updaters.set(key, value));
109
- },
110
- remove: (key) => {
111
- return ValueRecord.Updaters.fields(MapRepo.Updaters.remove(key));
112
- },
113
- clear: () => {
114
- return ValueRecord.Updaters.fields(replaceWith(OrderedMap()));
68
+ Default: {
69
+ empty: () => ({ kind: "record", fields: OrderedMap() }),
70
+ fromJSON: (json) => ({
71
+ kind: "record",
72
+ fields: OrderedMap(Object.assign({}, json)), // TODO - check this works ok
73
+ }),
74
+ fromMap: (map) => ({
75
+ kind: "record",
76
+ fields: OrderedMap(map),
77
+ }),
115
78
  },
116
- }),
79
+ Operations: {
80
+ has: (record, key) => {
81
+ return record.fields.has(key);
82
+ },
83
+ },
84
+ Updaters: Object.assign(Object.assign({}, simpleUpdater()("fields")), { update: (key, updater) => {
85
+ return ValueRecord.Updaters.fields(MapRepo.Updaters.update(key, updater));
86
+ }, set: (key, value) => {
87
+ return ValueRecord.Updaters.fields(MapRepo.Updaters.set(key, value));
88
+ }, remove: (key) => {
89
+ return ValueRecord.Updaters.fields(MapRepo.Updaters.remove(key));
90
+ }, clear: () => {
91
+ return ValueRecord.Updaters.fields(replaceWith(OrderedMap()));
92
+ } }),
117
93
  };
118
94
  export const ValueUnionCase = {
119
- Default: (caseName, fields) => ({
120
- kind: "unionCase",
121
- caseName,
122
- fields,
123
- }),
124
- Updaters: Object.assign(
125
- {
126
- case: (caseName) => (upd) =>
127
- Updater((v) => ValueUnionCase.Default(caseName, upd(v.fields))),
128
- },
129
- simpleUpdater()("fields"),
130
- ),
95
+ Default: (caseName, fields) => ({
96
+ kind: "unionCase",
97
+ caseName,
98
+ fields,
99
+ }),
100
+ Updaters: Object.assign({ case: (caseName) => (upd) => Updater((v) => ValueUnionCase.Default(caseName, upd(v.fields))) }, simpleUpdater()("fields")),
131
101
  };
132
102
  export const ValueUnit = {
133
- Default: () => ({ kind: "unit" }),
103
+ Default: () => ({ kind: "unit" }),
134
104
  };
135
105
  export const ValueOption = {
136
- Default: {
137
- some: (value) => ({
138
- kind: "option",
139
- isSome: true,
140
- value,
141
- }),
142
- none: () => ({
143
- kind: "option",
144
- isSome: false,
145
- value: { kind: "unit" },
146
- }),
147
- },
148
- Updaters: {
149
- value: (_) => Updater((v) => ValueOption.Default.some(_(v))),
150
- },
106
+ Default: {
107
+ some: (value) => ({
108
+ kind: "option",
109
+ isSome: true,
110
+ value,
111
+ }),
112
+ none: () => ({
113
+ kind: "option",
114
+ isSome: false,
115
+ value: { kind: "unit" },
116
+ }),
117
+ },
118
+ Updaters: {
119
+ value: (_) => Updater((v) => ValueOption.Default.some(_(v))),
120
+ },
151
121
  };
152
122
  export const ValueSum = {
153
- Default: (value) => ({
154
- kind: "sum",
155
- value,
156
- }),
157
- Updaters: Object.assign({}, simpleUpdater()("value")),
123
+ Default: (value) => ({
124
+ kind: "sum",
125
+ value,
126
+ }),
127
+ Updaters: Object.assign({}, simpleUpdater()("value")),
158
128
  };
159
129
  export const ValueTuple = {
160
- Default: () => ({
161
- kind: "tuple",
162
- values: List(),
163
- }),
164
- Updaters: Object.assign({}, simpleUpdater()("values")),
130
+ Default: () => ({
131
+ kind: "tuple",
132
+ values: List(),
133
+ }),
134
+ Updaters: Object.assign({}, simpleUpdater()("values")),
165
135
  };
166
136
  export const ValueTable = {
167
- Default: {
168
- empty: () => ({
169
- kind: "table",
170
- from: 0,
171
- to: 0,
172
- data: OrderedMap(),
173
- hasMoreValues: false,
174
- }),
175
- fromParsed: (from, to, hasMoreValues, data) => ({
176
- kind: "table",
177
- from,
178
- to,
179
- data,
180
- hasMoreValues,
181
- }),
182
- },
183
- Updaters: Object.assign({}, simpleUpdater()("data")),
137
+ Default: {
138
+ empty: () => ({
139
+ kind: "table",
140
+ from: 0,
141
+ to: 0,
142
+ data: OrderedMap(),
143
+ hasMoreValues: false,
144
+ }),
145
+ fromParsed: (from, to, hasMoreValues, data) => ({
146
+ kind: "table",
147
+ from,
148
+ to,
149
+ data,
150
+ hasMoreValues,
151
+ }),
152
+ },
153
+ Updaters: Object.assign({}, simpleUpdater()("data")),
184
154
  };
185
155
  export const BinaryOperators = ["or", "equals"];
186
156
  export const BinaryOperatorsSet = Set(BinaryOperators);
187
157
  export const PredicateValue = {
188
- Default: {
189
- string: () => "",
190
- number: () => 0,
191
- boolean: () => false,
192
- date: () => new Date(),
193
- unit: () => ({ kind: "unit" }),
194
- tuple: (values) => ({
195
- kind: "tuple",
196
- values,
197
- }),
198
- record: (fields) => ({
199
- kind: "record",
200
- fields,
201
- }),
202
- unionCase: (caseName, fields) => ({
203
- kind: "unionCase",
204
- caseName,
205
- fields,
206
- }),
207
- option: (isSome, value) => ({
208
- kind: "option",
209
- isSome,
210
- value,
211
- }),
212
- varLookup: (varName) => ({
213
- kind: "varLookup",
214
- varName,
215
- }),
216
- sum: (value) => ({
217
- kind: "sum",
218
- value,
219
- }),
220
- table: (from, to, data, hasMoreValues) => ({
221
- kind: "table",
222
- from,
223
- to,
224
- data,
225
- hasMoreValues,
226
- }),
227
- },
228
- Operations: {
229
- GetKind: (value) =>
230
- typeof value == "object"
231
- ? "kind" in value
232
- ? ValueOrErrors.Default.return(value.kind)
233
- : PredicateValue.Operations.IsDate(value)
234
- ? ValueOrErrors.Default.return("date")
235
- : ValueOrErrors.Default.throwOne("invalid")
236
- : ValueOrErrors.Default.return(typeof value),
237
- IsPrimitive: (value) => {
238
- return (
239
- PredicateValue.Operations.IsBoolean(value) ||
240
- PredicateValue.Operations.IsNumber(value) ||
241
- PredicateValue.Operations.IsString(value) ||
242
- PredicateValue.Operations.IsDate(value)
243
- );
244
- },
245
- IsBoolean: (value) => {
246
- return typeof value == "boolean";
247
- },
248
- IsNumber: (value) => {
249
- return typeof value == "number";
250
- },
251
- IsString: (value) => {
252
- return typeof value == "string";
253
- },
254
- IsDate: (value) => {
255
- return (
256
- typeof value == "object" &&
257
- Object.prototype.toString.call(value) === "[object Date]" &&
258
- value instanceof Date &&
259
- !isNaN(value.getTime())
260
- );
261
- },
262
- IsUnit: (value) => {
263
- return (
264
- typeof value == "object" &&
265
- !PredicateValue.Operations.IsDate(value) &&
266
- value.kind == "unit"
267
- );
268
- },
269
- IsUnionCase: (value) => {
270
- return (
271
- typeof value == "object" &&
272
- !PredicateValue.Operations.IsDate(value) &&
273
- value.kind == "unionCase"
274
- );
275
- },
276
- IsRecord: (value) => {
277
- return (
278
- typeof value == "object" &&
279
- !PredicateValue.Operations.IsDate(value) &&
280
- value.kind == "record"
281
- );
282
- },
283
- IsTuple: (value) => {
284
- return (
285
- typeof value == "object" &&
286
- !PredicateValue.Operations.IsDate(value) &&
287
- value.kind == "tuple"
288
- );
289
- },
290
- IsOption: (value) => {
291
- return (
292
- typeof value == "object" &&
293
- !PredicateValue.Operations.IsDate(value) &&
294
- value.kind == "option"
295
- );
296
- },
297
- IsTable: (value) => {
298
- return (
299
- typeof value == "object" &&
300
- !PredicateValue.Operations.IsDate(value) &&
301
- value.kind == "table"
302
- );
303
- },
304
- IsSum: (value) => {
305
- return (
306
- typeof value == "object" &&
307
- !PredicateValue.Operations.IsDate(value) &&
308
- value.kind == "sum"
309
- );
310
- },
311
- IsVarLookup: (value) => {
312
- return (
313
- typeof value == "object" &&
314
- !PredicateValue.Operations.IsDate(value) &&
315
- value.kind == "varLookup"
316
- );
317
- },
318
- IsCustom: (value) => {
319
- return (
320
- typeof value == "object" &&
321
- !PredicateValue.Operations.IsDate(value) &&
322
- value.kind == "custom"
323
- );
324
- },
325
- ParseAsDate: (json) => {
326
- if (PredicateValue.Operations.IsDate(json))
327
- return ValueOrErrors.Default.return(json);
328
- return ValueOrErrors.Default.throwOne(`date has invalid value property`);
329
- },
330
- ParseAsVarLookup: (json) => {
331
- if (json.kind == "varLookup" && typeof json.varName == "string")
332
- return ValueOrErrors.Default.return(
333
- PredicateValue.Default.varLookup(json.varName),
334
- );
335
- return ValueOrErrors.Default.throwOne(
336
- `varLookup has invalid varName property`,
337
- );
338
- },
339
- ParseAsUnionCase: (json) => {
340
- if (typeof json.caseName == "string")
341
- return ValueOrErrors.Default.return(
342
- PredicateValue.Default.unionCase(json.caseName, json.value),
343
- );
344
- return ValueOrErrors.Default.throwOne(
345
- `union case has invalid caseName property`,
346
- );
347
- },
348
- ParseAsRecord: (json, types) => {
349
- if ("fields" in json && typeof json.fields == "object") {
350
- return ValueOrErrors.Operations.All(
351
- List(
352
- Object.entries(json.fields).map(([fieldName, fieldValue]) =>
353
- PredicateValue.Operations.parse(
354
- fieldValue,
355
- { kind: "expression" },
356
- types,
357
- ).Then((value) =>
358
- ValueOrErrors.Default.return([fieldName, value]),
359
- ),
360
- ),
361
- ),
362
- ).Then((entries) =>
363
- ValueOrErrors.Default.return(
364
- PredicateValue.Default.record(OrderedMap(entries)),
365
- ),
366
- );
367
- }
368
- return ValueOrErrors.Default.throwOne(`record has no field property`);
369
- },
370
- ParseAsTuple: (json, types) => {
371
- if (json.values != undefined && Array.isArray(json.values)) {
372
- return ValueOrErrors.Operations.All(
373
- List(
374
- json.values.map((elementValue) =>
375
- PredicateValue.Operations.parse(
376
- elementValue,
377
- { kind: "expression" },
378
- types,
379
- ),
380
- ),
381
- ),
382
- ).Then((values) =>
383
- ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)),
384
- );
385
- }
386
- return ValueOrErrors.Default.throwOne(
387
- `Error: tuple has no values property`,
388
- );
389
- },
390
- // TODO -- do we need to add table here ?
391
- parse: (json, type, types) => {
392
- const result = (() => {
393
- if (
394
- type.kind == "expression" &&
395
- (typeof json == "boolean" ||
396
- typeof json == "number" ||
397
- typeof json == "string")
398
- )
399
- return ValueOrErrors.Default.return(json);
400
- if (type.kind == "expression" && json.kind == undefined) {
401
- return ValueOrErrors.Default.throwOne(
402
- `evaluation statement has no kind value`,
403
- );
404
- }
405
- if (type.kind == "expression" && json.kind == "guid") {
406
- return ValueOrErrors.Default.return(json);
407
- }
408
- if (type.kind == "expression" && json.kind == "date") {
409
- return PredicateValue.Operations.ParseAsDate(json);
410
- }
411
- if (type.kind == "expression" && json.kind == "unit") {
412
- return ValueOrErrors.Default.return(PredicateValue.Default.unit());
413
- }
414
- if (type.kind == "expression" && json.kind == "varLookup") {
415
- return PredicateValue.Operations.ParseAsVarLookup(json);
416
- }
417
- if (
418
- type.kind == "expression" &&
419
- json.kind == "record" &&
420
- "caseName" in json
421
- ) {
422
- return PredicateValue.Operations.ParseAsUnionCase(json);
423
- }
424
- if (
425
- type.kind == "expression" &&
426
- json.kind == "record" &&
427
- "fields" in json
428
- ) {
429
- return PredicateValue.Operations.ParseAsRecord(json, types);
430
- }
431
- if (
432
- type.kind == "expression" &&
433
- json.kind == "tuple" &&
434
- "values" in json
435
- ) {
436
- return PredicateValue.Operations.ParseAsTuple(json, types);
437
- }
438
- if (type.kind == "primitive" && type.value == "Date") {
439
- if (PredicateValue.Operations.IsDate(json)) {
440
- return ValueOrErrors.Default.return(json);
441
- }
442
- return ValueOrErrors.Default.throwOne(
443
- `failed to parse date ${JSON.stringify(json)}`,
444
- );
445
- }
446
- if (type.kind == "primitive" && type.value == "maybeBoolean") {
447
- return json == undefined
448
- ? ValueOrErrors.Default.return(false)
449
- : ValueOrErrors.Default.return(json);
450
- }
451
- if (type.kind == "primitive") {
452
- return ValueOrErrors.Default.return(json);
453
- }
454
- if (type.kind == "lookup") {
455
- const subType = types.get(type.name);
456
- if (subType == undefined) {
457
- return ValueOrErrors.Default.throwOne(
458
- `cannot find field ${type.name} in types`,
459
- );
460
- }
461
- return PredicateValue.Operations.parse(json, subType, types);
462
- }
463
- if (type.kind == "union") {
464
- const unionCase = type.args.get(json);
465
- if (unionCase == undefined) {
466
- return ValueOrErrors.Default.throwOne(
467
- `Error: cannot find union case ${JSON.stringify(json)} in types`,
468
- );
469
- }
470
- return PredicateValue.Operations.ParseAsUnionCase({
158
+ Default: {
159
+ string: () => "",
160
+ number: () => 0,
161
+ boolean: () => false,
162
+ date: () => new Date(),
163
+ unit: () => ({ kind: "unit" }),
164
+ tuple: (values) => ({
165
+ kind: "tuple",
166
+ values,
167
+ }),
168
+ record: (fields) => ({
169
+ kind: "record",
170
+ fields,
171
+ }),
172
+ unionCase: (caseName, fields) => ({
471
173
  kind: "unionCase",
472
- caseName: json,
473
- value: { kind: "form", value: Map() },
474
- });
475
- }
476
- if (type.kind == "application" && type.value == "List") {
477
- return ValueOrErrors.Operations.All(
478
- List(
479
- json.map((elementValue) =>
480
- PredicateValue.Operations.parse(
481
- elementValue,
482
- type.args[0],
483
- types,
484
- ),
485
- ),
486
- ),
487
- ).Then((values) =>
488
- ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)),
489
- );
490
- }
491
- if (type.kind == "application" && type.value == "Map") {
492
- return ValueOrErrors.Operations.All(
493
- List(
494
- json.map((keyValue) =>
495
- PredicateValue.Operations.parse(
496
- keyValue.key,
497
- type.args[0],
498
- types,
499
- ).Then((key) =>
500
- PredicateValue.Operations.parse(
501
- keyValue.value,
502
- type === null || type === void 0 ? void 0 : type.args[1],
503
- types,
504
- ).Then((value) =>
505
- ValueOrErrors.Default.return(
506
- PredicateValue.Default.tuple(List([key, value])),
507
- ),
508
- ),
509
- ),
510
- ),
511
- ),
512
- ).Then((values) =>
513
- ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)),
514
- );
515
- }
516
- if (type.kind == "application" && type.value == "Sum") {
517
- return PredicateValue.Operations.parse(
518
- json.left,
519
- type === null || type === void 0 ? void 0 : type.args[0],
520
- types,
521
- ).Then((left) =>
522
- PredicateValue.Operations.parse(
523
- json.right,
524
- type === null || type === void 0 ? void 0 : type.args[1],
525
- types,
526
- ).Then((right) =>
527
- ValueOrErrors.Default.return(
528
- PredicateValue.Default.tuple(List([left, right])),
529
- ),
530
- ),
531
- );
532
- }
533
- if (type.kind == "application" && type.value == "SingleSelection") {
534
- ValueOrErrors.Default.return(
535
- PredicateValue.Default.option(json["IsSome"], json["Value"]),
536
- );
537
- }
538
- if (type.kind == "application" && type.value == "MultiSelection") {
539
- return ValueOrErrors.Operations.All(
540
- List(
541
- json.map((elementValue) =>
542
- PredicateValue.Operations.parse(
543
- elementValue,
544
- type.args[0],
545
- types,
546
- ),
547
- ),
548
- ),
549
- ).Then((values) =>
550
- ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)),
551
- );
552
- }
553
- if (type.kind == "record") {
554
- return ValueOrErrors.Operations.All(
555
- List(
556
- Object.entries(json).map(([fieldName, fieldValue]) => {
557
- const subType = type.fields.get(fieldName);
558
- if (subType == undefined) {
559
- return ValueOrErrors.Default.throwOne(
560
- `cannot find field ${fieldName} in type ${JSON.stringify(type)}`,
561
- );
562
- }
563
- return PredicateValue.Operations.parse(
564
- fieldValue,
565
- subType,
566
- types,
567
- ).Then((value) =>
568
- ValueOrErrors.Default.return([fieldName, value]),
569
- );
570
- }),
571
- ),
572
- ).Then((entries) =>
573
- ValueOrErrors.Default.return(
574
- PredicateValue.Default.record(
575
- OrderedMap(entries.map((_) => [_[0], _[1]])),
576
- ),
577
- ),
578
- );
579
- }
580
- return ValueOrErrors.Default.throwOne(
581
- `unsupported type ${JSON.stringify(type)}`,
582
- );
583
- })();
584
- return result.MapErrors((errors) =>
585
- errors.map(
586
- (error) =>
587
- `${error}\n...When parsing expression ${JSON.stringify(json, null, 2)}`,
588
- ),
589
- );
590
- },
591
- recordToTuple: (r) => {
592
- const valuesSortedByName = r.fields
593
- .toSeq()
594
- .map((v, k) => [k, v])
595
- .sortBy(([k, v]) => k)
596
- .map(([k, v]) => v)
597
- .valueSeq()
598
- .toArray();
599
- return PredicateValue.Default.tuple(List(valuesSortedByName));
174
+ caseName,
175
+ fields,
176
+ }),
177
+ option: (isSome, value) => ({
178
+ kind: "option",
179
+ isSome,
180
+ value,
181
+ }),
182
+ varLookup: (varName) => ({
183
+ kind: "varLookup",
184
+ varName,
185
+ }),
186
+ sum: (value) => ({
187
+ kind: "sum",
188
+ value,
189
+ }),
190
+ table: (from, to, data, hasMoreValues) => ({
191
+ kind: "table",
192
+ from,
193
+ to,
194
+ data,
195
+ hasMoreValues,
196
+ }),
600
197
  },
601
- Equals: (vars) => (v1, v2) =>
602
- typeof v1 == "boolean" ||
603
- typeof v1 == "number" ||
604
- typeof v1 == "string" ||
605
- typeof v2 == "boolean" ||
606
- typeof v2 == "number" ||
607
- typeof v2 == "string"
608
- ? typeof v1 == typeof v2
609
- ? ValueOrErrors.Default.return(v1 == v2)
610
- : ValueOrErrors.Default.throwOne(
611
- `cannot compare expressions of different types ${JSON.stringify(v1)} and ${JSON.stringify(v2)}.`,
612
- )
613
- : PredicateValue.Operations.IsDate(v1) &&
614
- PredicateValue.Operations.IsDate(v2)
615
- ? v1.getTime() == v2.getTime()
616
- ? ValueOrErrors.Default.return(true)
617
- : ValueOrErrors.Default.return(false)
618
- : PredicateValue.Operations.IsUnionCase(v1) &&
619
- PredicateValue.Operations.IsUnionCase(v2)
620
- ? v1.caseName == v2.caseName
621
- ? PredicateValue.Operations.Equals(vars)(v1.fields, v2.fields)
622
- : ValueOrErrors.Default.return(false)
623
- : PredicateValue.Operations.IsTuple(v1) &&
624
- PredicateValue.Operations.IsTuple(v2)
625
- ? v1.values.size != v2.values.size
626
- ? ValueOrErrors.Default.return(false)
627
- : v1.values.size == 0
628
- ? ValueOrErrors.Default.return(true)
629
- : PredicateValue.Operations.Equals(vars)(
630
- v1.values.get(0),
631
- v2.values.get(0),
632
- ).Then((firstEqual) =>
633
- firstEqual
634
- ? PredicateValue.Operations.Equals(vars)(
635
- PredicateValue.Default.tuple(v1.values.slice(1)),
636
- PredicateValue.Default.tuple(v2.values.slice(1)),
637
- )
638
- : ValueOrErrors.Default.return(false),
639
- )
640
- : PredicateValue.Operations.IsRecord(v1) &&
641
- PredicateValue.Operations.IsRecord(v2)
642
- ? PredicateValue.Operations.Equals(vars)(
643
- PredicateValue.Operations.recordToTuple(v1),
644
- PredicateValue.Operations.recordToTuple(v2),
645
- )
646
- : PredicateValue.Operations.IsTable(v1) &&
647
- PredicateValue.Operations.IsTable(v2)
648
- ? v1.data.size == v2.data.size
649
- ? ValueOrErrors.Default.return(
650
- v1.data.keySeq().equals(v2.data.keySeq()),
651
- )
652
- : ValueOrErrors.Default.return(false)
653
- : PredicateValue.Operations.IsUnit(v1) &&
654
- PredicateValue.Operations.IsUnit(v2)
198
+ Operations: {
199
+ GetKind: (value) => typeof value == "object"
200
+ ? "kind" in value
201
+ ? ValueOrErrors.Default.return(value.kind)
202
+ : PredicateValue.Operations.IsDate(value)
203
+ ? ValueOrErrors.Default.return("date")
204
+ : ValueOrErrors.Default.throwOne("invalid")
205
+ : ValueOrErrors.Default.return(typeof value),
206
+ IsPrimitive: (value) => {
207
+ return (PredicateValue.Operations.IsBoolean(value) ||
208
+ PredicateValue.Operations.IsNumber(value) ||
209
+ PredicateValue.Operations.IsString(value) ||
210
+ PredicateValue.Operations.IsDate(value));
211
+ },
212
+ IsBoolean: (value) => {
213
+ return typeof value == "boolean";
214
+ },
215
+ IsNumber: (value) => {
216
+ return typeof value == "number";
217
+ },
218
+ IsString: (value) => {
219
+ return typeof value == "string";
220
+ },
221
+ IsDate: (value) => {
222
+ return (typeof value == "object" &&
223
+ Object.prototype.toString.call(value) === "[object Date]" &&
224
+ value instanceof Date &&
225
+ !isNaN(value.getTime()));
226
+ },
227
+ IsUnit: (value) => {
228
+ return (typeof value == "object" &&
229
+ !PredicateValue.Operations.IsDate(value) &&
230
+ value.kind == "unit");
231
+ },
232
+ IsUnionCase: (value) => {
233
+ return (typeof value == "object" &&
234
+ !PredicateValue.Operations.IsDate(value) &&
235
+ value.kind == "unionCase");
236
+ },
237
+ IsRecord: (value) => {
238
+ return (typeof value == "object" &&
239
+ !PredicateValue.Operations.IsDate(value) &&
240
+ value.kind == "record");
241
+ },
242
+ IsTuple: (value) => {
243
+ return (typeof value == "object" &&
244
+ !PredicateValue.Operations.IsDate(value) &&
245
+ value.kind == "tuple");
246
+ },
247
+ IsOption: (value) => {
248
+ return (typeof value == "object" &&
249
+ !PredicateValue.Operations.IsDate(value) &&
250
+ value.kind == "option");
251
+ },
252
+ IsTable: (value) => {
253
+ return (typeof value == "object" &&
254
+ !PredicateValue.Operations.IsDate(value) &&
255
+ value.kind == "table");
256
+ },
257
+ IsSum: (value) => {
258
+ return (typeof value == "object" &&
259
+ !PredicateValue.Operations.IsDate(value) &&
260
+ value.kind == "sum");
261
+ },
262
+ IsVarLookup: (value) => {
263
+ return (typeof value == "object" &&
264
+ !PredicateValue.Operations.IsDate(value) &&
265
+ value.kind == "varLookup");
266
+ },
267
+ IsCustom: (value) => {
268
+ return (typeof value == "object" &&
269
+ !PredicateValue.Operations.IsDate(value) &&
270
+ value.kind == "custom");
271
+ },
272
+ ParseAsDate: (json) => {
273
+ if (PredicateValue.Operations.IsDate(json))
274
+ return ValueOrErrors.Default.return(json);
275
+ return ValueOrErrors.Default.throwOne(`date has invalid value property`);
276
+ },
277
+ ParseAsVarLookup: (json) => {
278
+ if (json.kind == "varLookup" && typeof json.varName == "string")
279
+ return ValueOrErrors.Default.return(PredicateValue.Default.varLookup(json.varName));
280
+ return ValueOrErrors.Default.throwOne(`varLookup has invalid varName property`);
281
+ },
282
+ ParseAsUnionCase: (json) => {
283
+ if (typeof json.caseName == "string")
284
+ return ValueOrErrors.Default.return(PredicateValue.Default.unionCase(json.caseName, json.value));
285
+ return ValueOrErrors.Default.throwOne(`union case has invalid caseName property`);
286
+ },
287
+ ParseAsRecord: (json, types) => {
288
+ if ("fields" in json && typeof json.fields == "object") {
289
+ return ValueOrErrors.Operations.All(List(Object.entries(json.fields).map(([fieldName, fieldValue]) => PredicateValue.Operations.parse(fieldValue, { kind: "expression" }, types).Then((value) => ValueOrErrors.Default.return([fieldName, value]))))).Then((entries) => ValueOrErrors.Default.return(PredicateValue.Default.record(OrderedMap(entries))));
290
+ }
291
+ return ValueOrErrors.Default.throwOne(`record has no field property`);
292
+ },
293
+ ParseAsTuple: (json, types) => {
294
+ if (json.values != undefined && Array.isArray(json.values)) {
295
+ return ValueOrErrors.Operations.All(List(json.values.map((elementValue) => PredicateValue.Operations.parse(elementValue, { kind: "expression" }, types)))).Then((values) => ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)));
296
+ }
297
+ return ValueOrErrors.Default.throwOne(`Error: tuple has no values property`);
298
+ },
299
+ // TODO -- do we need to add table here ?
300
+ parse: (json, type, types) => {
301
+ const result = (() => {
302
+ if (type.kind == "expression" &&
303
+ (typeof json == "boolean" ||
304
+ typeof json == "number" ||
305
+ typeof json == "string"))
306
+ return ValueOrErrors.Default.return(json);
307
+ if (type.kind == "expression" && json.kind == undefined) {
308
+ return ValueOrErrors.Default.throwOne(`evaluation statement has no kind value`);
309
+ }
310
+ if (type.kind == "expression" && json.kind == "guid") {
311
+ return ValueOrErrors.Default.return(json);
312
+ }
313
+ if (type.kind == "expression" && json.kind == "date") {
314
+ return PredicateValue.Operations.ParseAsDate(json);
315
+ }
316
+ if (type.kind == "expression" && json.kind == "unit") {
317
+ return ValueOrErrors.Default.return(PredicateValue.Default.unit());
318
+ }
319
+ if (type.kind == "expression" && json.kind == "varLookup") {
320
+ return PredicateValue.Operations.ParseAsVarLookup(json);
321
+ }
322
+ if (type.kind == "expression" &&
323
+ json.kind == "record" &&
324
+ "caseName" in json) {
325
+ return PredicateValue.Operations.ParseAsUnionCase(json);
326
+ }
327
+ if (type.kind == "expression" &&
328
+ json.kind == "record" &&
329
+ "fields" in json) {
330
+ return PredicateValue.Operations.ParseAsRecord(json, types);
331
+ }
332
+ if (type.kind == "expression" &&
333
+ json.kind == "tuple" &&
334
+ "values" in json) {
335
+ return PredicateValue.Operations.ParseAsTuple(json, types);
336
+ }
337
+ if (type.kind == "primitive" && type.value == "Date") {
338
+ if (PredicateValue.Operations.IsDate(json)) {
339
+ return ValueOrErrors.Default.return(json);
340
+ }
341
+ return ValueOrErrors.Default.throwOne(`failed to parse date ${JSON.stringify(json)}`);
342
+ }
343
+ if (type.kind == "primitive" && type.value == "maybeBoolean") {
344
+ return json == undefined
345
+ ? ValueOrErrors.Default.return(false)
346
+ : ValueOrErrors.Default.return(json);
347
+ }
348
+ if (type.kind == "primitive") {
349
+ return ValueOrErrors.Default.return(json);
350
+ }
351
+ if (type.kind == "lookup") {
352
+ const subType = types.get(type.name);
353
+ if (subType == undefined) {
354
+ return ValueOrErrors.Default.throwOne(`cannot find field ${type.name} in types`);
355
+ }
356
+ return PredicateValue.Operations.parse(json, subType, types);
357
+ }
358
+ if (type.kind == "union") {
359
+ const unionCase = type.args.get(json);
360
+ if (unionCase == undefined) {
361
+ return ValueOrErrors.Default.throwOne(`Error: cannot find union case ${JSON.stringify(json)} in types`);
362
+ }
363
+ return PredicateValue.Operations.ParseAsUnionCase({
364
+ kind: "unionCase",
365
+ caseName: json,
366
+ value: { kind: "form", value: Map() },
367
+ });
368
+ }
369
+ if (type.kind == "application" && type.value == "List") {
370
+ return ValueOrErrors.Operations.All(List(json.map((elementValue) => PredicateValue.Operations.parse(elementValue, type.args[0], types)))).Then((values) => ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)));
371
+ }
372
+ if (type.kind == "application" && type.value == "Map") {
373
+ return ValueOrErrors.Operations.All(List(json.map((keyValue) => PredicateValue.Operations.parse(keyValue.key, type.args[0], types).Then((key) => PredicateValue.Operations.parse(keyValue.value, type === null || type === void 0 ? void 0 : type.args[1], types).Then((value) => ValueOrErrors.Default.return(PredicateValue.Default.tuple(List([key, value])))))))).Then((values) => ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)));
374
+ }
375
+ if (type.kind == "application" && type.value == "Sum") {
376
+ return PredicateValue.Operations.parse(json.left, type === null || type === void 0 ? void 0 : type.args[0], types).Then((left) => PredicateValue.Operations.parse(json.right, type === null || type === void 0 ? void 0 : type.args[1], types).Then((right) => ValueOrErrors.Default.return(PredicateValue.Default.tuple(List([left, right])))));
377
+ }
378
+ if (type.kind == "application" && type.value == "SingleSelection") {
379
+ ValueOrErrors.Default.return(PredicateValue.Default.option(json["IsSome"], json["Value"]));
380
+ }
381
+ if (type.kind == "application" && type.value == "MultiSelection") {
382
+ return ValueOrErrors.Operations.All(List(json.map((elementValue) => PredicateValue.Operations.parse(elementValue, type.args[0], types)))).Then((values) => ValueOrErrors.Default.return(PredicateValue.Default.tuple(values)));
383
+ }
384
+ if (type.kind == "record") {
385
+ return ValueOrErrors.Operations.All(List(Object.entries(json).map(([fieldName, fieldValue]) => {
386
+ const subType = type.fields.get(fieldName);
387
+ if (subType == undefined) {
388
+ return ValueOrErrors.Default.throwOne(`cannot find field ${fieldName} in type ${JSON.stringify(type)}`);
389
+ }
390
+ return PredicateValue.Operations.parse(fieldValue, subType, types).Then((value) => ValueOrErrors.Default.return([fieldName, value]));
391
+ }))).Then((entries) => ValueOrErrors.Default.return(PredicateValue.Default.record(OrderedMap(entries.map((_) => [_[0], _[1]])))));
392
+ }
393
+ return ValueOrErrors.Default.throwOne(`unsupported type ${JSON.stringify(type)}`);
394
+ })();
395
+ return result.MapErrors((errors) => errors.map((error) => `${error}\n...When parsing expression ${JSON.stringify(json, null, 2)}`));
396
+ },
397
+ recordToTuple: (r) => {
398
+ const valuesSortedByName = r.fields
399
+ .toSeq()
400
+ .map((v, k) => [k, v])
401
+ .sortBy(([k, v]) => k)
402
+ .map(([k, v]) => v)
403
+ .valueSeq()
404
+ .toArray();
405
+ return PredicateValue.Default.tuple(List(valuesSortedByName));
406
+ },
407
+ Equals: (vars) => (v1, v2) => typeof v1 == "boolean" ||
408
+ typeof v1 == "number" ||
409
+ typeof v1 == "string" ||
410
+ typeof v2 == "boolean" ||
411
+ typeof v2 == "number" ||
412
+ typeof v2 == "string"
413
+ ? typeof v1 == typeof v2
414
+ ? ValueOrErrors.Default.return(v1 == v2)
415
+ : ValueOrErrors.Default.throwOne(`cannot compare expressions of different types ${JSON.stringify(v1)} and ${JSON.stringify(v2)}.`)
416
+ : PredicateValue.Operations.IsDate(v1) &&
417
+ PredicateValue.Operations.IsDate(v2)
418
+ ? v1.getTime() == v2.getTime()
655
419
  ? ValueOrErrors.Default.return(true)
656
- : PredicateValue.Operations.IsUnit(v1) !=
657
- PredicateValue.Operations.IsUnit(v2)
658
- ? ValueOrErrors.Default.throwOne(
659
- `cannot compare expressions of different types ${JSON.stringify(v1)} and ${JSON.stringify(v2)}.`,
660
- )
661
- : ValueOrErrors.Default.throwOne(
662
- `structural equality is not implemented yet between ${JSON.stringify(v1)} and ${JSON.stringify(v2)}.`,
663
- ),
664
- },
420
+ : ValueOrErrors.Default.return(false)
421
+ : PredicateValue.Operations.IsUnionCase(v1) &&
422
+ PredicateValue.Operations.IsUnionCase(v2)
423
+ ? v1.caseName == v2.caseName
424
+ ? PredicateValue.Operations.Equals(vars)(v1.fields, v2.fields)
425
+ : ValueOrErrors.Default.return(false)
426
+ : PredicateValue.Operations.IsTuple(v1) &&
427
+ PredicateValue.Operations.IsTuple(v2)
428
+ ? v1.values.size != v2.values.size
429
+ ? ValueOrErrors.Default.return(false)
430
+ : v1.values.size == 0
431
+ ? ValueOrErrors.Default.return(true)
432
+ : PredicateValue.Operations.Equals(vars)(v1.values.get(0), v2.values.get(0)).Then((firstEqual) => firstEqual
433
+ ? PredicateValue.Operations.Equals(vars)(PredicateValue.Default.tuple(v1.values.slice(1)), PredicateValue.Default.tuple(v2.values.slice(1)))
434
+ : ValueOrErrors.Default.return(false))
435
+ : PredicateValue.Operations.IsRecord(v1) &&
436
+ PredicateValue.Operations.IsRecord(v2)
437
+ ? PredicateValue.Operations.Equals(vars)(PredicateValue.Operations.recordToTuple(v1), PredicateValue.Operations.recordToTuple(v2))
438
+ : PredicateValue.Operations.IsTable(v1) &&
439
+ PredicateValue.Operations.IsTable(v2)
440
+ ? v1.data.size == v2.data.size
441
+ ? ValueOrErrors.Default.return(v1.data.keySeq().equals(v2.data.keySeq()))
442
+ : ValueOrErrors.Default.return(false)
443
+ : PredicateValue.Operations.IsUnit(v1) &&
444
+ PredicateValue.Operations.IsUnit(v2)
445
+ ? ValueOrErrors.Default.return(true)
446
+ : PredicateValue.Operations.IsUnit(v1) !=
447
+ PredicateValue.Operations.IsUnit(v2)
448
+ ? ValueOrErrors.Default.throwOne(`cannot compare expressions of different types ${JSON.stringify(v1)} and ${JSON.stringify(v2)}.`)
449
+ : ValueOrErrors.Default.throwOne(`structural equality is not implemented yet between ${JSON.stringify(v1)} and ${JSON.stringify(v2)}.`),
450
+ },
665
451
  };
666
452
  export const Expr = {
667
- Default: {
668
- itemLookup: (e, i) => ({
669
- kind: "itemLookup",
670
- operands: [e, i],
671
- }),
672
- fieldLookup: (e, f) => ({
673
- kind: "fieldLookup",
674
- operands: [e, f],
675
- }),
676
- isCase: (e, c) => ({
677
- kind: "isCase",
678
- operands: [e, c],
679
- }),
680
- binaryOperator: (op, e1, e2) => ({
681
- kind: op,
682
- operands: [e1, e2],
683
- }),
684
- matchCase: (operands) => ({
685
- kind: "matchCase",
686
- operands,
687
- }),
688
- lambda: (parameter, body) => ({
689
- kind: "lambda",
690
- parameter,
691
- body,
692
- }),
693
- case: (caseName, handler) => ({
694
- kind: "caseName",
695
- caseName,
696
- handler,
697
- }),
698
- },
699
- Operations: {
700
- IsItemLookup: (e) => {
701
- return (
702
- typeof e == "object" &&
703
- !PredicateValue.Operations.IsDate(e) &&
704
- e.kind == "itemLookup"
705
- );
706
- },
707
- IsFieldLookup: (e) => {
708
- return (
709
- typeof e == "object" &&
710
- !PredicateValue.Operations.IsDate(e) &&
711
- e.kind == "fieldLookup"
712
- );
713
- },
714
- IsIsCase: (e) => {
715
- return (
716
- typeof e == "object" &&
717
- !PredicateValue.Operations.IsDate(e) &&
718
- e.kind == "isCase"
719
- );
720
- },
721
- IsBinaryOperator: (e) => {
722
- return (
723
- typeof e == "object" &&
724
- !PredicateValue.Operations.IsDate(e) &&
725
- BinaryOperatorsSet.has(e.kind)
726
- );
727
- },
728
- IsCase: (e) => {
729
- return (
730
- typeof e == "object" &&
731
- !PredicateValue.Operations.IsDate(e) &&
732
- e.kind == "caseName"
733
- );
734
- },
735
- IsCaseArray: (e) => {
736
- return e.every((e) => Expr.Operations.IsCase(e));
737
- },
738
- AsCaseArray: (e) => {
739
- return e.every((e) => Expr.Operations.IsCase(e))
740
- ? ValueOrErrors.Default.return(e)
741
- : ValueOrErrors.Default.throwOne(
742
- `Error: expected cases, got ${JSON.stringify(e)}`,
743
- );
744
- },
745
- IsMatchCase: (e) => {
746
- return (
747
- typeof e == "object" &&
748
- !PredicateValue.Operations.IsDate(e) &&
749
- e.kind == "matchCase"
750
- );
751
- },
752
- IsLambda: (e) => {
753
- return (
754
- typeof e == "object" &&
755
- !PredicateValue.Operations.IsDate(e) &&
756
- e.kind == "lambda"
757
- );
758
- },
759
- parseAsVisibilityExpression: (json) =>
760
- Expr.Operations.parse(json).MapErrors((errors) =>
761
- errors.map(
762
- (error) => `${error}\n...When parsing visibility expression`,
763
- ),
764
- ),
765
- parseAsDisabledExpression: (json) =>
766
- Expr.Operations.parse(json).MapErrors((errors) =>
767
- errors.map((error) => `${error}\n...When parsing disabled expression`),
768
- ),
769
- parse: (json) => {
770
- const asValue = PredicateValue.Operations.parse(
771
- json,
772
- { kind: "expression" },
773
- Map(),
774
- );
775
- if (asValue.kind == "value") return asValue;
776
- if (Expr.Operations.IsItemLookup(json)) {
777
- const [first, second] = json["operands"];
778
- return Expr.Operations.parse(first).Then((first) =>
779
- ValueOrErrors.Default.return(
780
- // Tuples are 1-indexed
781
- Expr.Default.itemLookup(first, second - 1),
782
- ),
783
- );
784
- }
785
- if (Expr.Operations.IsFieldLookup(json)) {
786
- const [first, second] = json["operands"];
787
- return Expr.Operations.parse(first).Then((first) =>
788
- ValueOrErrors.Default.return(Expr.Default.fieldLookup(first, second)),
789
- );
790
- }
791
- if (Expr.Operations.IsIsCase(json)) {
792
- const [first, second] = json["operands"];
793
- return Expr.Operations.parse(first).Then((first) =>
794
- ValueOrErrors.Default.return(Expr.Default.isCase(first, second)),
795
- );
796
- }
797
- if (Expr.Operations.IsBinaryOperator(json)) {
798
- const [first, second] = json["operands"];
799
- if (BinaryOperatorsSet.contains(json["kind"])) {
800
- return Expr.Operations.parse(first).Then((first) =>
801
- Expr.Operations.parse(second).Then((second) =>
802
- ValueOrErrors.Default.return(
803
- Expr.Default.binaryOperator(json["kind"], first, second),
804
- ),
805
- ),
806
- );
807
- }
808
- }
809
- if (Expr.Operations.IsMatchCase(json)) {
810
- return ValueOrErrors.Operations.All(
811
- List(
812
- json["operands"].map((operand) => Expr.Operations.parse(operand)),
813
- ),
814
- ).Then((operands) =>
815
- ValueOrErrors.Default.return(
816
- Expr.Default.matchCase(operands.toArray()),
817
- ),
818
- );
819
- }
820
- if (Expr.Operations.IsLambda(json)) {
821
- return Expr.Operations.parse(json["body"]).Then((body) =>
822
- ValueOrErrors.Default.return(
823
- Expr.Default.lambda(json["parameter"], body),
824
- ),
825
- );
826
- }
827
- if (Expr.Operations.IsCase(json)) {
828
- return Expr.Operations.parse(json["handler"]).Then((handler) =>
829
- Expr.Operations.IsLambda(handler)
830
- ? ValueOrErrors.Default.return(
831
- Expr.Default.case(json["caseName"], handler),
832
- )
833
- : ValueOrErrors.Default.throwOne(
834
- `expected lambda expression, got ${JSON.stringify(handler)}`,
835
- ),
836
- );
837
- }
838
- return ValueOrErrors.Default.throwOne(
839
- `cannot parse ${JSON.stringify(json)} to Expr.`,
840
- );
841
- },
842
- EvaluateAsTuple: (vars) => (e) =>
843
- !PredicateValue.Operations.IsTuple(e)
844
- ? ValueOrErrors.Default.throwOne(
845
- `expected tuple expression, got ${JSON.stringify(e)}`,
846
- )
847
- : ValueOrErrors.Default.return(e),
848
- EvaluateAsRecord: (vars) => (e) =>
849
- !PredicateValue.Operations.IsRecord(e)
850
- ? ValueOrErrors.Default.throwOne(
851
- `expected record expression, got ${JSON.stringify(e)}`,
852
- )
853
- : ValueOrErrors.Default.return(e),
854
- EvaluateAsUnionCase: (vars) => (e) =>
855
- !PredicateValue.Operations.IsUnionCase(e)
856
- ? ValueOrErrors.Default.throwOne(
857
- `expected union case expression, got ${JSON.stringify(e)}`,
858
- )
859
- : ValueOrErrors.Default.return(e),
860
- EvaluateAsBoolean: (vars) => (e) =>
861
- !PredicateValue.Operations.IsBoolean(e)
862
- ? ValueOrErrors.Default.throwOne(
863
- `expected boolean expression, got ${JSON.stringify(e)}`,
864
- )
865
- : ValueOrErrors.Default.return(e),
866
- MatchCase: (vars) => (e, cases) =>
867
- Expr.Operations.Evaluate(vars)(e).Then((matchable) =>
868
- PredicateValue.Operations.IsSum(matchable)
869
- ? matchable.value.kind == "l"
870
- ? MapRepo.Operations.tryFindWithError(
871
- "Sum.Left",
872
- cases,
873
- () => `cannot find match case Sum.Left`,
874
- ).Then((leftCaseHandler) =>
875
- Expr.Operations.Evaluate(
876
- vars.set(leftCaseHandler.parameter, matchable.value.value),
877
- )(leftCaseHandler),
878
- )
879
- : MapRepo.Operations.tryFindWithError(
880
- "Sum.Right",
881
- cases,
882
- () => `cannot find match case Sum.Right`,
883
- ).Then((rightCaseHandler) =>
884
- Expr.Operations.Evaluate(
885
- vars.set(rightCaseHandler.parameter, matchable.value.value),
886
- )(rightCaseHandler),
887
- )
888
- : PredicateValue.Operations.IsUnionCase(matchable)
889
- ? MapRepo.Operations.tryFindWithError(
890
- matchable.caseName,
891
- cases,
892
- () => `cannot find match case ${matchable.caseName}`,
893
- ).Then((matchedCaseHandler) =>
894
- Expr.Operations.Evaluate(
895
- vars.set(matchedCaseHandler.parameter, matchable.fields),
896
- )(matchedCaseHandler),
897
- )
898
- : ValueOrErrors.Default.throwOne(
899
- `unsupported matchable type in MatchCase: ${JSON.stringify(matchable)}`,
900
- ),
901
- ),
902
- ComputePredicateEvaluation: (vars) => (expr) => {
903
- if (typeof expr == "boolean") {
904
- return ValueOrErrors.Default.return(expr);
905
- }
906
- return Expr.Operations.Evaluate(vars)(expr).Then((result) => {
907
- if (typeof result == "boolean") {
908
- return ValueOrErrors.Default.return(result);
909
- }
910
- return ValueOrErrors.Default.throwOne(
911
- `Error: cannot evaluate expression ${JSON.stringify(expr)} to a boolean`,
912
- );
913
- });
914
- },
915
- EvaluateAs: (as) => (vars) => (e) => {
916
- return Expr.Operations.Evaluate(vars)(e).MapErrors((errors) =>
917
- errors.map(
918
- (error) =>
919
- `${error}\n...When evaluating expression ${JSON.stringify(e)} as ${as}`,
920
- ),
921
- );
453
+ Default: {
454
+ itemLookup: (e, i) => ({
455
+ kind: "itemLookup",
456
+ operands: [e, i],
457
+ }),
458
+ fieldLookup: (e, f) => ({
459
+ kind: "fieldLookup",
460
+ operands: [e, f],
461
+ }),
462
+ isCase: (e, c) => ({
463
+ kind: "isCase",
464
+ operands: [e, c],
465
+ }),
466
+ binaryOperator: (op, e1, e2) => ({
467
+ kind: op,
468
+ operands: [e1, e2],
469
+ }),
470
+ matchCase: (operands) => ({
471
+ kind: "matchCase",
472
+ operands,
473
+ }),
474
+ lambda: (parameter, body) => ({
475
+ kind: "lambda",
476
+ parameter,
477
+ body,
478
+ }),
479
+ case: (caseName, handler) => ({
480
+ kind: "caseName",
481
+ caseName,
482
+ handler,
483
+ }),
922
484
  },
923
- Evaluate: (vars) => (e) => {
924
- const result = (() => {
925
- return PredicateValue.Operations.IsBoolean(e) ||
926
- PredicateValue.Operations.IsNumber(e) ||
927
- PredicateValue.Operations.IsString(e) ||
928
- PredicateValue.Operations.IsUnit(e) ||
929
- PredicateValue.Operations.IsRecord(e) ||
930
- PredicateValue.Operations.IsTuple(e) ||
931
- PredicateValue.Operations.IsUnionCase(e) ||
932
- PredicateValue.Operations.IsUnit(e) ||
933
- PredicateValue.Operations.IsSum(e)
934
- ? ValueOrErrors.Default.return(e)
935
- : PredicateValue.Operations.IsVarLookup(e)
936
- ? MapRepo.Operations.tryFindWithError(
937
- e.varName,
938
- vars,
939
- () =>
940
- `Error: cannot find variable ${JSON.stringify(e.varName)}`,
941
- )
942
- : Expr.Operations.IsItemLookup(e)
943
- ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then(
944
- (maybeTuple) =>
945
- Expr.Operations.EvaluateAsTuple(vars)(maybeTuple).Then(
946
- (tuple) =>
947
- ListRepo.Operations.tryFindWithError(
948
- e.operands[1],
949
- tuple.values,
950
- () =>
951
- `Error: cannot find element of index ${e.operands[1]} in tuple ${JSON.stringify(tuple)}`,
952
- ),
953
- ),
954
- )
955
- : Expr.Operations.IsFieldLookup(e)
956
- ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then(
957
- (maybeRecord) =>
958
- Expr.Operations.EvaluateAsRecord(vars)(maybeRecord).Then(
959
- (record) =>
960
- MapRepo.Operations.tryFindWithError(
961
- e.operands[1],
962
- record.fields,
963
- () => `Error: cannot find field ${e.operands[1]}`,
964
- ),
965
- ),
966
- )
967
- : Expr.Operations.IsIsCase(e)
968
- ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then(
969
- (maybeUnionCase) =>
970
- Expr.Operations.EvaluateAsUnionCase(vars)(
971
- maybeUnionCase,
972
- ).Then((unionCase) =>
973
- ValueOrErrors.Default.return(
974
- unionCase.caseName == e.operands[1],
975
- ),
976
- ),
977
- )
978
- : Expr.Operations.IsMatchCase(e)
979
- ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then(
980
- (matchable) =>
981
- Expr.Operations.AsCaseArray(e.operands.slice(1)).Then(
982
- (cases) =>
983
- Expr.Operations.MatchCase(vars)(
984
- matchable,
985
- Map(cases.map((c) => [c.caseName, c.handler])),
986
- ),
987
- ),
988
- )
989
- : Expr.Operations.IsLambda(e)
990
- ? Expr.Operations.Evaluate(vars)(e.body)
991
- : Expr.Operations.IsBinaryOperator(e) &&
992
- e.kind == "equals"
993
- ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then(
994
- (v1) =>
995
- Expr.Operations.Evaluate(vars)(
996
- e.operands[1],
997
- ).Then((v2) =>
998
- PredicateValue.Operations.Equals(vars)(
999
- v1,
1000
- v2,
1001
- ).Then((eq) =>
1002
- ValueOrErrors.Default.return(eq),
1003
- ),
1004
- ),
1005
- )
1006
- : Expr.Operations.IsBinaryOperator(e) && e.kind == "or"
1007
- ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then(
1008
- (v1) =>
1009
- Expr.Operations.Evaluate(vars)(
1010
- e.operands[1],
1011
- ).Then((v2) =>
1012
- Expr.Operations.EvaluateAsBoolean(vars)(
1013
- v1,
1014
- ).Then((v1) =>
1015
- Expr.Operations.EvaluateAsBoolean(vars)(
1016
- v2,
1017
- ).Then((v2) =>
1018
- ValueOrErrors.Default.return(v1 || v2),
1019
- ),
1020
- ),
1021
- ),
1022
- )
1023
- : ValueOrErrors.Default.throwOne(
1024
- `Error: unsupported expression ${JSON.stringify(e)}`,
1025
- );
1026
- })();
1027
- return result.MapErrors((errors) =>
1028
- errors.map(
1029
- (error) =>
1030
- `${error}\n...When evaluating expression ${JSON.stringify(e, null, 2)}`,
1031
- ),
1032
- );
485
+ Operations: {
486
+ IsItemLookup: (e) => {
487
+ return (typeof e == "object" &&
488
+ !PredicateValue.Operations.IsDate(e) &&
489
+ e.kind == "itemLookup");
490
+ },
491
+ IsFieldLookup: (e) => {
492
+ return (typeof e == "object" &&
493
+ !PredicateValue.Operations.IsDate(e) &&
494
+ e.kind == "fieldLookup");
495
+ },
496
+ IsIsCase: (e) => {
497
+ return (typeof e == "object" &&
498
+ !PredicateValue.Operations.IsDate(e) &&
499
+ e.kind == "isCase");
500
+ },
501
+ IsBinaryOperator: (e) => {
502
+ return (typeof e == "object" &&
503
+ !PredicateValue.Operations.IsDate(e) &&
504
+ BinaryOperatorsSet.has(e.kind));
505
+ },
506
+ IsCase: (e) => {
507
+ return (typeof e == "object" &&
508
+ !PredicateValue.Operations.IsDate(e) &&
509
+ e.kind == "caseName");
510
+ },
511
+ IsCaseArray: (e) => {
512
+ return e.every((e) => Expr.Operations.IsCase(e));
513
+ },
514
+ AsCaseArray: (e) => {
515
+ return e.every((e) => Expr.Operations.IsCase(e))
516
+ ? ValueOrErrors.Default.return(e)
517
+ : ValueOrErrors.Default.throwOne(`Error: expected cases, got ${JSON.stringify(e)}`);
518
+ },
519
+ IsMatchCase: (e) => {
520
+ return (typeof e == "object" &&
521
+ !PredicateValue.Operations.IsDate(e) &&
522
+ e.kind == "matchCase");
523
+ },
524
+ IsLambda: (e) => {
525
+ return (typeof e == "object" &&
526
+ !PredicateValue.Operations.IsDate(e) &&
527
+ e.kind == "lambda");
528
+ },
529
+ parseAsVisibilityExpression: (json) => Expr.Operations.parse(json).MapErrors((errors) => errors.map((error) => `${error}\n...When parsing visibility expression`)),
530
+ parseAsDisabledExpression: (json) => Expr.Operations.parse(json).MapErrors((errors) => errors.map((error) => `${error}\n...When parsing disabled expression`)),
531
+ parse: (json) => {
532
+ const asValue = PredicateValue.Operations.parse(json, { kind: "expression" }, Map());
533
+ if (asValue.kind == "value")
534
+ return asValue;
535
+ if (Expr.Operations.IsItemLookup(json)) {
536
+ const [first, second] = json["operands"];
537
+ return Expr.Operations.parse(first).Then((first) => ValueOrErrors.Default.return(
538
+ // Tuples are 1-indexed
539
+ Expr.Default.itemLookup(first, second - 1)));
540
+ }
541
+ if (Expr.Operations.IsFieldLookup(json)) {
542
+ const [first, second] = json["operands"];
543
+ return Expr.Operations.parse(first).Then((first) => ValueOrErrors.Default.return(Expr.Default.fieldLookup(first, second)));
544
+ }
545
+ if (Expr.Operations.IsIsCase(json)) {
546
+ const [first, second] = json["operands"];
547
+ return Expr.Operations.parse(first).Then((first) => ValueOrErrors.Default.return(Expr.Default.isCase(first, second)));
548
+ }
549
+ if (Expr.Operations.IsBinaryOperator(json)) {
550
+ const [first, second] = json["operands"];
551
+ if (BinaryOperatorsSet.contains(json["kind"])) {
552
+ return Expr.Operations.parse(first).Then((first) => Expr.Operations.parse(second).Then((second) => ValueOrErrors.Default.return(Expr.Default.binaryOperator(json["kind"], first, second))));
553
+ }
554
+ }
555
+ if (Expr.Operations.IsMatchCase(json)) {
556
+ return ValueOrErrors.Operations.All(List(json["operands"].map((operand) => Expr.Operations.parse(operand)))).Then((operands) => ValueOrErrors.Default.return(Expr.Default.matchCase(operands.toArray())));
557
+ }
558
+ if (Expr.Operations.IsLambda(json)) {
559
+ return Expr.Operations.parse(json["body"]).Then((body) => ValueOrErrors.Default.return(Expr.Default.lambda(json["parameter"], body)));
560
+ }
561
+ if (Expr.Operations.IsCase(json)) {
562
+ return Expr.Operations.parse(json["handler"]).Then((handler) => Expr.Operations.IsLambda(handler)
563
+ ? ValueOrErrors.Default.return(Expr.Default.case(json["caseName"], handler))
564
+ : ValueOrErrors.Default.throwOne(`expected lambda expression, got ${JSON.stringify(handler)}`));
565
+ }
566
+ return ValueOrErrors.Default.throwOne(`cannot parse ${JSON.stringify(json)} to Expr.`);
567
+ },
568
+ EvaluateAsTuple: (vars) => (e) => !PredicateValue.Operations.IsTuple(e)
569
+ ? ValueOrErrors.Default.throwOne(`expected tuple expression, got ${JSON.stringify(e)}`)
570
+ : ValueOrErrors.Default.return(e),
571
+ EvaluateAsRecord: (vars) => (e) => !PredicateValue.Operations.IsRecord(e)
572
+ ? ValueOrErrors.Default.throwOne(`expected record expression, got ${JSON.stringify(e)}`)
573
+ : ValueOrErrors.Default.return(e),
574
+ EvaluateAsUnionCase: (vars) => (e) => !PredicateValue.Operations.IsUnionCase(e)
575
+ ? ValueOrErrors.Default.throwOne(`expected union case expression, got ${JSON.stringify(e)}`)
576
+ : ValueOrErrors.Default.return(e),
577
+ EvaluateAsBoolean: (vars) => (e) => !PredicateValue.Operations.IsBoolean(e)
578
+ ? ValueOrErrors.Default.throwOne(`expected boolean expression, got ${JSON.stringify(e)}`)
579
+ : ValueOrErrors.Default.return(e),
580
+ MatchCase: (vars) => (e, cases) => Expr.Operations.Evaluate(vars)(e).Then((matchable) => PredicateValue.Operations.IsSum(matchable)
581
+ ? matchable.value.kind == "l"
582
+ ? MapRepo.Operations.tryFindWithError("Sum.Left", cases, () => `cannot find match case Sum.Left`).Then((leftCaseHandler) => Expr.Operations.Evaluate(vars.set(leftCaseHandler.parameter, matchable.value.value))(leftCaseHandler))
583
+ : MapRepo.Operations.tryFindWithError("Sum.Right", cases, () => `cannot find match case Sum.Right`).Then((rightCaseHandler) => Expr.Operations.Evaluate(vars.set(rightCaseHandler.parameter, matchable.value.value))(rightCaseHandler))
584
+ : PredicateValue.Operations.IsUnionCase(matchable)
585
+ ? MapRepo.Operations.tryFindWithError(matchable.caseName, cases, () => `cannot find match case ${matchable.caseName}`).Then((matchedCaseHandler) => Expr.Operations.Evaluate(vars.set(matchedCaseHandler.parameter, matchable.fields))(matchedCaseHandler))
586
+ : ValueOrErrors.Default.throwOne(`unsupported matchable type in MatchCase: ${JSON.stringify(matchable)}`)),
587
+ ComputePredicateEvaluation: (vars) => (expr) => {
588
+ if (typeof expr == "boolean") {
589
+ return ValueOrErrors.Default.return(expr);
590
+ }
591
+ return Expr.Operations.Evaluate(vars)(expr).Then((result) => {
592
+ if (typeof result == "boolean") {
593
+ return ValueOrErrors.Default.return(result);
594
+ }
595
+ return ValueOrErrors.Default.throwOne(`Error: cannot evaluate expression ${JSON.stringify(expr)} to a boolean`);
596
+ });
597
+ },
598
+ EvaluateAs: (as) => (vars) => (e) => {
599
+ return Expr.Operations.Evaluate(vars)(e).MapErrors((errors) => errors.map((error) => `${error}\n...When evaluating expression ${JSON.stringify(e)} as ${as}`));
600
+ },
601
+ Evaluate: (vars) => (e) => {
602
+ const result = (() => {
603
+ return PredicateValue.Operations.IsBoolean(e) ||
604
+ PredicateValue.Operations.IsNumber(e) ||
605
+ PredicateValue.Operations.IsString(e) ||
606
+ PredicateValue.Operations.IsUnit(e) ||
607
+ PredicateValue.Operations.IsRecord(e) ||
608
+ PredicateValue.Operations.IsTuple(e) ||
609
+ PredicateValue.Operations.IsUnionCase(e) ||
610
+ PredicateValue.Operations.IsUnit(e) ||
611
+ PredicateValue.Operations.IsSum(e)
612
+ ? ValueOrErrors.Default.return(e)
613
+ : PredicateValue.Operations.IsVarLookup(e)
614
+ ? MapRepo.Operations.tryFindWithError(e.varName, vars, () => `Error: cannot find variable ${JSON.stringify(e.varName)}`)
615
+ : Expr.Operations.IsItemLookup(e)
616
+ ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then((maybeTuple) => Expr.Operations.EvaluateAsTuple(vars)(maybeTuple).Then((tuple) => ListRepo.Operations.tryFindWithError(e.operands[1], tuple.values, () => `Error: cannot find element of index ${e.operands[1]} in tuple ${JSON.stringify(tuple)}`)))
617
+ : Expr.Operations.IsFieldLookup(e)
618
+ ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then((maybeRecord) => Expr.Operations.EvaluateAsRecord(vars)(maybeRecord).Then((record) => MapRepo.Operations.tryFindWithError(e.operands[1], record.fields, () => `Error: cannot find field ${e.operands[1]}`)))
619
+ : Expr.Operations.IsIsCase(e)
620
+ ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then((maybeUnionCase) => Expr.Operations.EvaluateAsUnionCase(vars)(maybeUnionCase).Then((unionCase) => ValueOrErrors.Default.return(unionCase.caseName == e.operands[1])))
621
+ : Expr.Operations.IsMatchCase(e)
622
+ ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then((matchable) => Expr.Operations.AsCaseArray(e.operands.slice(1)).Then((cases) => Expr.Operations.MatchCase(vars)(matchable, Map(cases.map((c) => [c.caseName, c.handler])))))
623
+ : Expr.Operations.IsLambda(e)
624
+ ? Expr.Operations.Evaluate(vars)(e.body)
625
+ : Expr.Operations.IsBinaryOperator(e) &&
626
+ e.kind == "equals"
627
+ ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then((v1) => Expr.Operations.Evaluate(vars)(e.operands[1]).Then((v2) => PredicateValue.Operations.Equals(vars)(v1, v2).Then((eq) => ValueOrErrors.Default.return(eq))))
628
+ : Expr.Operations.IsBinaryOperator(e) &&
629
+ e.kind == "or"
630
+ ? Expr.Operations.Evaluate(vars)(e.operands[0]).Then((v1) => Expr.Operations.Evaluate(vars)(e.operands[1]).Then((v2) => Expr.Operations.EvaluateAsBoolean(vars)(v1).Then((v1) => Expr.Operations.EvaluateAsBoolean(vars)(v2).Then((v2) => ValueOrErrors.Default.return(v1 || v2)))))
631
+ : ValueOrErrors.Default.throwOne(`Error: unsupported expression ${JSON.stringify(e)}`);
632
+ })();
633
+ return result.MapErrors((errors) => errors.map((error) => `${error}\n...When evaluating expression ${JSON.stringify(e, null, 2)}`));
634
+ },
1033
635
  },
1034
- },
1035
636
  };
1036
637
  export const evaluatePredicates = (context, root) => {
1037
- const bindings = Map()
1038
- .set("global", context.global)
1039
- .set("root", root)
1040
- .set("local", root);
1041
- const traverse = (bindings, predicate, raw) => {
1042
- if (predicate.kind == "primitive") {
1043
- return calculateVisibility(predicate.value, bindings).Then((result) => {
1044
- return ValueOrErrors.Default.return({
1045
- kind: "primitive",
1046
- value: result,
1047
- });
1048
- });
1049
- }
1050
- if (predicate.kind == "record") {
1051
- if (typeof raw != "object" || !("kind" in raw) || raw.kind != "record") {
1052
- return ValueOrErrors.Default.throwOne(
1053
- `parsing expected record in raw, got ${JSON.stringify(raw)}`,
1054
- );
1055
- }
1056
- return calculateVisibility(predicate.value, bindings).Then((result) =>
1057
- ValueOrErrors.Operations.All(
1058
- List(
1059
- predicate.fields.entrySeq().map(([fieldName, fieldPredicate]) => {
1060
- const fieldRaw = raw.fields.get(fieldName);
1061
- if (fieldRaw == undefined) {
1062
- return ValueOrErrors.Default.return([
1063
- fieldName,
1064
- { kind: "primitive", value: false },
1065
- ]);
1066
- }
1067
- if (fieldPredicate.kind == "record") {
1068
- const localBindings = bindings.get("local");
1069
- const fieldLocal = localBindings.fields.get(fieldName);
1070
- if (fieldLocal == undefined) {
1071
- return ValueOrErrors.Default.throwOne(
1072
- `Error: parsing cannot find field ${fieldName} in local ${JSON.stringify(localBindings)}`,
1073
- );
638
+ const bindings = Map()
639
+ .set("global", context.global)
640
+ .set("root", root)
641
+ .set("local", root);
642
+ const traverse = (bindings, predicate, raw) => {
643
+ if (predicate.kind == "primitive") {
644
+ return calculateVisibility(predicate.value, bindings).Then((result) => {
645
+ return ValueOrErrors.Default.return({
646
+ kind: "primitive",
647
+ value: result,
648
+ });
649
+ });
650
+ }
651
+ if (predicate.kind == "record") {
652
+ if (typeof raw != "object" || !("kind" in raw) || raw.kind != "record") {
653
+ return ValueOrErrors.Default.throwOne(`parsing expected record in raw, got ${JSON.stringify(raw)}`);
654
+ }
655
+ return calculateVisibility(predicate.value, bindings).Then((result) => ValueOrErrors.Operations.All(List(predicate.fields
656
+ .entrySeq()
657
+ .map(([fieldName, fieldPredicate]) => {
658
+ const fieldRaw = raw.fields.get(fieldName);
659
+ if (fieldRaw == undefined) {
660
+ return ValueOrErrors.Default.return([
661
+ fieldName,
662
+ { kind: "primitive", value: false },
663
+ ]);
1074
664
  }
1075
- const fieldBindings = bindings.set("local", fieldLocal);
1076
- return traverse(fieldBindings, fieldPredicate, fieldRaw).Then(
1077
- (evaluation) =>
1078
- ValueOrErrors.Default.return([fieldName, evaluation]),
1079
- );
1080
- }
1081
- return traverse(bindings, fieldPredicate, fieldRaw).Then(
1082
- (evaluation) =>
1083
- ValueOrErrors.Default.return([fieldName, evaluation]),
1084
- );
1085
- }),
1086
- ),
1087
- ).Then((evaluations) => {
1088
- return ValueOrErrors.Default.return({
1089
- kind: "form",
1090
- value: result,
1091
- fields: Map(evaluations.map((_) => [_[0], _[1]])),
1092
- });
1093
- }),
1094
- );
1095
- }
1096
- if (predicate.kind == "list") {
1097
- return calculateVisibility(predicate.value, bindings).Then((result) => {
1098
- if (PredicateValue.Operations.IsTuple(raw)) {
1099
- return ValueOrErrors.Operations.All(
1100
- List(
1101
- raw.values.map((value, index) => {
1102
- const elementLocal = raw.values.get(index);
1103
- if (elementLocal == undefined) {
1104
- return ValueOrErrors.Default.throwOne(
1105
- `Error: cannot find element of index ${index} in local ${JSON.stringify(raw)}`,
1106
- );
665
+ if (fieldPredicate.kind == "record") {
666
+ const localBindings = bindings.get("local");
667
+ const fieldLocal = localBindings.fields.get(fieldName);
668
+ if (fieldLocal == undefined) {
669
+ return ValueOrErrors.Default.throwOne(`Error: parsing cannot find field ${fieldName} in local ${JSON.stringify(localBindings)}`);
670
+ }
671
+ const fieldBindings = bindings.set("local", fieldLocal);
672
+ return traverse(fieldBindings, fieldPredicate, fieldRaw).Then((evaluation) => ValueOrErrors.Default.return([fieldName, evaluation]));
1107
673
  }
1108
- const elementBindings = bindings.set("local", elementLocal);
1109
- return traverse(
1110
- elementBindings,
1111
- predicate.elementExpression,
1112
- value,
1113
- );
1114
- }),
1115
- ),
1116
- ).Then((elementResults) => {
1117
- return ValueOrErrors.Default.return({
1118
- kind: "list",
1119
- value: result,
1120
- elementValues: elementResults.toArray(),
674
+ return traverse(bindings, fieldPredicate, fieldRaw).Then((evaluation) => ValueOrErrors.Default.return([fieldName, evaluation]));
675
+ }))).Then((evaluations) => {
676
+ return ValueOrErrors.Default.return({
677
+ kind: "form",
678
+ value: result,
679
+ fields: Map(evaluations.map((_) => [_[0], _[1]])),
680
+ });
681
+ }));
682
+ }
683
+ if (predicate.kind == "list") {
684
+ return calculateVisibility(predicate.value, bindings).Then((result) => {
685
+ if (PredicateValue.Operations.IsTuple(raw)) {
686
+ return ValueOrErrors.Operations.All(List(raw.values.map((value, index) => {
687
+ const elementLocal = raw.values.get(index);
688
+ if (elementLocal == undefined) {
689
+ return ValueOrErrors.Default.throwOne(`Error: cannot find element of index ${index} in local ${JSON.stringify(raw)}`);
690
+ }
691
+ const elementBindings = bindings.set("local", elementLocal);
692
+ return traverse(elementBindings, predicate.elementExpression, value);
693
+ }))).Then((elementResults) => {
694
+ return ValueOrErrors.Default.return({
695
+ kind: "list",
696
+ value: result,
697
+ elementValues: elementResults.toArray(),
698
+ });
699
+ });
700
+ }
701
+ return ValueOrErrors.Default.throwOne(`Error: parsing expected tuple, got ${JSON.stringify(raw)}`);
1121
702
  });
1122
- });
1123
703
  }
1124
- return ValueOrErrors.Default.throwOne(
1125
- `Error: parsing expected tuple, got ${JSON.stringify(raw)}`,
1126
- );
1127
- });
1128
- }
1129
- if (predicate.kind == "map") {
1130
- return calculateVisibility(predicate.value, bindings).Then((result) => {
1131
- if (typeof raw == "object" && "kind" in raw && raw.kind == "tuple") {
1132
- return ValueOrErrors.Operations.All(
1133
- List(
1134
- raw.values.map((kv) => {
1135
- if (PredicateValue.Operations.IsTuple(kv)) {
1136
- const keyLocal = kv.values.get(0);
1137
- const valueLocal = kv.values.get(1);
1138
- if (keyLocal == undefined || valueLocal == undefined) {
1139
- return ValueOrErrors.Default.throwOne(
1140
- `Error: cannot find key or value of ${JSON.stringify(kv)} in local ${JSON.stringify(raw)}`,
1141
- );
1142
- }
1143
- const keyBindings = bindings.set("local", keyLocal);
1144
- const valueBindings = bindings.set("local", valueLocal);
1145
- return traverse(
1146
- keyBindings,
1147
- predicate.keyExpression,
1148
- keyLocal,
1149
- ).Then((keyResult) => {
1150
- return traverse(
1151
- valueBindings,
1152
- predicate.valueExpression,
1153
- valueLocal,
1154
- ).Then((valueResult) => {
1155
- return ValueOrErrors.Default.return({
1156
- key: keyResult,
1157
- value: valueResult,
1158
- });
704
+ if (predicate.kind == "map") {
705
+ return calculateVisibility(predicate.value, bindings).Then((result) => {
706
+ if (typeof raw == "object" && "kind" in raw && raw.kind == "tuple") {
707
+ return ValueOrErrors.Operations.All(List(raw.values.map((kv) => {
708
+ if (PredicateValue.Operations.IsTuple(kv)) {
709
+ const keyLocal = kv.values.get(0);
710
+ const valueLocal = kv.values.get(1);
711
+ if (keyLocal == undefined || valueLocal == undefined) {
712
+ return ValueOrErrors.Default.throwOne(`Error: cannot find key or value of ${JSON.stringify(kv)} in local ${JSON.stringify(raw)}`);
713
+ }
714
+ const keyBindings = bindings.set("local", keyLocal);
715
+ const valueBindings = bindings.set("local", valueLocal);
716
+ return traverse(keyBindings, predicate.keyExpression, keyLocal).Then((keyResult) => {
717
+ return traverse(valueBindings, predicate.valueExpression, valueLocal).Then((valueResult) => {
718
+ return ValueOrErrors.Default.return({
719
+ key: keyResult,
720
+ value: valueResult,
721
+ });
722
+ });
723
+ });
724
+ }
725
+ return ValueOrErrors.Default.throwOne(`Error: parsing expected tuple of key and value, got ${JSON.stringify(kv)}`);
726
+ }))).Then((keyValues) => {
727
+ return ValueOrErrors.Default.return({
728
+ kind: "map",
729
+ value: result,
730
+ elementValues: keyValues.toArray(),
731
+ });
1159
732
  });
1160
- });
1161
733
  }
1162
- return ValueOrErrors.Default.throwOne(
1163
- `Error: parsing expected tuple of key and value, got ${JSON.stringify(kv)}`,
1164
- );
1165
- }),
1166
- ),
1167
- ).Then((keyValues) => {
1168
- return ValueOrErrors.Default.return({
1169
- kind: "map",
1170
- value: result,
1171
- elementValues: keyValues.toArray(),
734
+ return ValueOrErrors.Default.throwOne(`Error: parsing expected tuple of key value pairs, got ${JSON.stringify(raw)}`);
1172
735
  });
1173
- });
1174
736
  }
1175
- return ValueOrErrors.Default.throwOne(
1176
- `Error: parsing expected tuple of key value pairs, got ${JSON.stringify(raw)}`,
1177
- );
1178
- });
1179
- }
1180
- if (predicate.kind == "tuple") {
1181
- return calculateVisibility(predicate.value, bindings).Then((result) => {
1182
- if (PredicateValue.Operations.IsTuple(raw)) {
1183
- return ValueOrErrors.Operations.All(
1184
- List(
1185
- raw.values.map((value, index) => {
1186
- const elementLocal = raw.values.get(index);
1187
- if (elementLocal == undefined) {
1188
- return ValueOrErrors.Default.throwOne(
1189
- `Error: cannot find element of index ${index} in local ${JSON.stringify(raw)}`,
1190
- );
737
+ if (predicate.kind == "tuple") {
738
+ return calculateVisibility(predicate.value, bindings).Then((result) => {
739
+ if (PredicateValue.Operations.IsTuple(raw)) {
740
+ return ValueOrErrors.Operations.All(List(raw.values.map((value, index) => {
741
+ const elementLocal = raw.values.get(index);
742
+ if (elementLocal == undefined) {
743
+ return ValueOrErrors.Default.throwOne(`Error: cannot find element of index ${index} in local ${JSON.stringify(raw)}`);
744
+ }
745
+ const elementBindings = bindings.set("local", elementLocal);
746
+ return traverse(elementBindings, predicate.elementExpressions[index], value);
747
+ }))).Then((elementResults) => {
748
+ return ValueOrErrors.Default.return({
749
+ kind: "tuple",
750
+ value: result,
751
+ elementValues: elementResults.toArray(),
752
+ });
753
+ });
1191
754
  }
1192
- const elementBindings = bindings.set("local", elementLocal);
1193
- return traverse(
1194
- elementBindings,
1195
- predicate.elementExpressions[index],
1196
- value,
1197
- );
1198
- }),
1199
- ),
1200
- ).Then((elementResults) => {
1201
- return ValueOrErrors.Default.return({
1202
- kind: "tuple",
1203
- value: result,
1204
- elementValues: elementResults.toArray(),
755
+ return ValueOrErrors.Default.throwOne(`Error: parsing expected tuple, got ${JSON.stringify(raw)}`);
1205
756
  });
1206
- });
1207
757
  }
1208
- return ValueOrErrors.Default.throwOne(
1209
- `Error: parsing expected tuple, got ${JSON.stringify(raw)}`,
1210
- );
1211
- });
1212
- }
1213
- if (predicate.kind == "sum") {
1214
- return calculateVisibility(predicate.value, bindings).Then((result) => {
1215
- if (PredicateValue.Operations.IsSum(raw)) {
1216
- const local = raw.value.value;
1217
- const innerBindings = bindings.set("local", local);
1218
- return traverse(
1219
- innerBindings,
1220
- raw.value.kind === "l"
1221
- ? predicate.leftExpression
1222
- : predicate.rightExpression,
1223
- local,
1224
- ).Then((innerRes) => {
1225
- return ValueOrErrors.Default.return(
1226
- FormFieldPredicateEvaluation.Default.sum(result, innerRes),
1227
- );
1228
- });
758
+ if (predicate.kind == "sum") {
759
+ return calculateVisibility(predicate.value, bindings).Then((result) => {
760
+ if (PredicateValue.Operations.IsSum(raw)) {
761
+ const local = raw.value.value;
762
+ const innerBindings = bindings.set("local", local);
763
+ return traverse(innerBindings, raw.value.kind === "l"
764
+ ? predicate.leftExpression
765
+ : predicate.rightExpression, local).Then((innerRes) => {
766
+ return ValueOrErrors.Default.return(FormFieldPredicateEvaluation.Default.sum(result, innerRes));
767
+ });
768
+ }
769
+ return ValueOrErrors.Default.throwOne(`Error: parsing expected sum, got ${JSON.stringify(raw)}`);
770
+ });
1229
771
  }
1230
- return ValueOrErrors.Default.throwOne(
1231
- `Error: parsing expected sum, got ${JSON.stringify(raw)}`,
1232
- );
1233
- });
1234
- }
1235
- if (predicate.kind == "unit") {
1236
- return calculateVisibility(predicate.value, bindings).Then((result) => {
1237
- return ValueOrErrors.Default.return({
1238
- kind: "unit",
1239
- value: result,
1240
- });
1241
- });
1242
- }
1243
- return ValueOrErrors.Default.throwOne(
1244
- `Error: parsing unsupported predicate kind ${JSON.stringify(raw)}`,
1245
- );
1246
- };
1247
- const res = traverse(
1248
- bindings,
1249
- {
1250
- kind: "record",
1251
- value: true,
1252
- fields: context.visibilityPredicateExpressions,
1253
- },
1254
- root,
1255
- ).Then((visibilities) => {
1256
- return traverse(
1257
- bindings,
1258
- {
772
+ if (predicate.kind == "unit") {
773
+ return calculateVisibility(predicate.value, bindings).Then((result) => {
774
+ return ValueOrErrors.Default.return({
775
+ kind: "unit",
776
+ value: result,
777
+ });
778
+ });
779
+ }
780
+ return ValueOrErrors.Default.throwOne(`Error: parsing unsupported predicate kind ${JSON.stringify(raw)}`);
781
+ };
782
+ const res = traverse(bindings, {
1259
783
  kind: "record",
1260
784
  value: true,
1261
- fields: context.disabledPredicatedExpressions,
1262
- },
1263
- root,
1264
- ).Then((disabledFields) => {
1265
- return ValueOrErrors.Default.return({
1266
- visiblityPredicateEvaluations: visibilities,
1267
- disabledPredicateEvaluations: disabledFields,
1268
- });
785
+ fields: context.visibilityPredicateExpressions,
786
+ }, root).Then((visibilities) => {
787
+ return traverse(bindings, {
788
+ kind: "record",
789
+ value: true,
790
+ fields: context.disabledPredicatedExpressions,
791
+ }, root).Then((disabledFields) => {
792
+ return ValueOrErrors.Default.return({
793
+ visiblityPredicateEvaluations: visibilities,
794
+ disabledPredicateEvaluations: disabledFields,
795
+ });
796
+ });
1269
797
  });
1270
- });
1271
- if (res.kind == "errors") {
1272
- console.error("error evaluating predicates", res);
1273
- }
1274
- return res;
798
+ if (res.kind == "errors") {
799
+ console.error("error evaluating predicates", res);
800
+ }
801
+ return res;
1275
802
  };
1276
- //# sourceMappingURL=state.js.map
803
+ //# sourceMappingURL=state.js.map