ballerina-core 1.0.230 → 1.0.232

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