ballerina-core 1.0.257 → 1.0.259

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