ballerina-core 1.0.255 → 1.0.256

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