ballerina-core 1.0.199 → 1.0.201

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