ballerina-core 1.0.197 → 1.0.199

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