ballerina-core 1.0.256 → 1.0.258

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 (321) hide show
  1. package/bin/src/api-response-handler/coroutines/runner.js +20 -13
  2. package/bin/src/api-response-handler/state.js +13 -11
  3. package/bin/src/apiResultStatus/state.d.ts +10 -3
  4. package/bin/src/apiResultStatus/state.js +2 -5
  5. package/bin/src/async/domains/mirroring/domains/collection/coroutines/synchronizers.js +314 -196
  6. package/bin/src/async/domains/mirroring/domains/collection/state.js +126 -36
  7. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection/state.js +18 -11
  8. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-collection-entity/state.js +19 -19
  9. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entities/state.js +1 -1
  10. package/bin/src/async/domains/mirroring/domains/entity/domains/loaded-entity/state.js +18 -18
  11. package/bin/src/async/domains/mirroring/domains/entity/state.js +18 -9
  12. package/bin/src/async/domains/mirroring/domains/singleton/coroutines/synchronizers.js +134 -83
  13. package/bin/src/async/domains/mirroring/domains/singleton/state.js +52 -8
  14. package/bin/src/async/domains/mirroring/domains/synchronization-result/state.d.ts +15 -9
  15. package/bin/src/async/domains/mirroring/domains/synchronization-result/state.js +1 -1
  16. package/bin/src/async/domains/mirroring/domains/synchronized-entities/state.js +7 -4
  17. package/bin/src/async/domains/promise/state.d.ts +9 -4
  18. package/bin/src/async/domains/promise/state.js +20 -9
  19. package/bin/src/async/domains/synchronized/coroutines/synchronize.js +80 -28
  20. package/bin/src/async/domains/synchronized/state.d.ts +14 -7
  21. package/bin/src/async/domains/synchronized/state.js +16 -6
  22. package/bin/src/async/state.d.ts +56 -45
  23. package/bin/src/async/state.js +115 -97
  24. package/bin/src/baseEntity/domains/identifiable/state.d.ts +15 -11
  25. package/bin/src/baseEntity/domains/identifiable/state.js +9 -9
  26. package/bin/src/collections/domains/array/state.d.ts +7 -7
  27. package/bin/src/collections/domains/array/state.js +5 -5
  28. package/bin/src/collections/domains/errors/state.d.ts +10 -10
  29. package/bin/src/collections/domains/errors/state.js +10 -10
  30. package/bin/src/collections/domains/immutable/domains/list/state.js +46 -44
  31. package/bin/src/collections/domains/immutable/domains/map/state.js +41 -23
  32. package/bin/src/collections/domains/immutable/domains/orderedMap/state.js +84 -65
  33. package/bin/src/collections/domains/immutable/domains/ordereredSet/state.d.ts +6 -6
  34. package/bin/src/collections/domains/immutable/domains/ordereredSet/state.js +6 -6
  35. package/bin/src/collections/domains/maybe/state.d.ts +9 -9
  36. package/bin/src/collections/domains/maybe/state.js +12 -9
  37. package/bin/src/collections/domains/product/state.d.ts +25 -19
  38. package/bin/src/collections/domains/product/state.js +13 -10
  39. package/bin/src/collections/domains/sum/state.d.ts +101 -77
  40. package/bin/src/collections/domains/sum/state.js +49 -32
  41. package/bin/src/collections/domains/valueOrErrors/state.js +81 -56
  42. package/bin/src/coroutines/builder.js +40 -19
  43. package/bin/src/coroutines/state.js +381 -306
  44. package/bin/src/coroutines/template.js +97 -59
  45. package/bin/src/debounced/coroutines/debounce.js +115 -89
  46. package/bin/src/debounced/state.js +62 -25
  47. package/bin/src/diagnostics/domains/message-box/state.d.ts +1 -1
  48. package/bin/src/diagnostics/domains/message-box/state.js +3 -3
  49. package/bin/src/foreignMutations/state.d.ts +3 -3
  50. package/bin/src/foreignMutations/state.js +1 -1
  51. package/bin/src/forms/domains/attachments/views/attachments-view.js +30 -8
  52. package/bin/src/forms/domains/collection/domains/reference/state.js +26 -20
  53. package/bin/src/forms/domains/collection/domains/selection/state.js +1 -1
  54. package/bin/src/forms/domains/dispatched-forms/built-ins/state.js +2007 -754
  55. package/bin/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.d.ts.map +1 -1
  56. package/bin/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.js +123 -44
  57. package/bin/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.js.map +1 -1
  58. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/enum/state.js +40 -27
  59. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/primitive/state.js +21 -13
  60. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/stream/state.js +43 -27
  61. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sumUnitDate/state.js +39 -22
  62. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/serializable/state.d.ts +167 -0
  63. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/serializable/state.d.ts.map +1 -0
  64. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/serializable/state.js +367 -0
  65. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/serializable/state.js.map +1 -0
  66. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.d.ts +7 -29
  67. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.d.ts.map +1 -1
  68. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.js +1098 -572
  69. package/bin/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.js.map +1 -1
  70. package/bin/src/forms/domains/dispatched-forms/deserializer/state.d.ts +1 -0
  71. package/bin/src/forms/domains/dispatched-forms/deserializer/state.d.ts.map +1 -1
  72. package/bin/src/forms/domains/dispatched-forms/deserializer/state.js +322 -90
  73. package/bin/src/forms/domains/dispatched-forms/deserializer/state.js.map +1 -1
  74. package/bin/src/forms/domains/dispatched-forms/deserializer/template.js +3 -2
  75. package/bin/src/forms/domains/dispatched-forms/runner/coroutines/runner.d.ts +27 -4
  76. package/bin/src/forms/domains/dispatched-forms/runner/coroutines/runner.js +136 -82
  77. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/state.js +3 -3
  78. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/base-64-file/template.js +49 -23
  79. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/state.js +3 -3
  80. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/boolean/template.js +52 -24
  81. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/state.js +18 -6
  82. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/date/template.js +64 -30
  83. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/state.js +9 -6
  84. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum/template.js +153 -60
  85. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/state.js +1 -1
  86. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/enum-multiselect/template.js +127 -50
  87. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/injectables/state.js +40 -22
  88. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/state.js +31 -13
  89. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/list/template.js +452 -152
  90. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/state.js +1 -1
  91. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.js +29 -8
  92. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.js.map +1 -1
  93. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/state.js +61 -18
  94. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/map/template.js +329 -90
  95. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/state.js +3 -3
  96. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/number/template.js +54 -23
  97. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_debouncer.js +22 -10
  98. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeOne.js +49 -31
  99. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/_initializeStream.js +29 -10
  100. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/builder.js +2 -2
  101. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/coroutines/runner.js +47 -26
  102. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/state.js +88 -40
  103. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/one/template.js +386 -152
  104. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/state.js +19 -10
  105. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/readOnly/template.js +99 -33
  106. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/state.js +32 -11
  107. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/record/template.js +227 -82
  108. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/state.js +35 -13
  109. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream/template.js +195 -68
  110. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/state.js +36 -13
  111. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/searchable-infinite-stream-multiselect/template.js +246 -106
  112. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/state.js +3 -3
  113. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/secret/template.js +54 -23
  114. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/state.js +40 -27
  115. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/state.js +3 -3
  116. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/string/template.js +58 -26
  117. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/state.js +22 -7
  118. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/sum/template.js +188 -53
  119. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/builder.js +2 -2
  120. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/infiniteLoader.js +57 -24
  121. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/initialiseFiltersAndSorting.js +70 -20
  122. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/initialiseTable.d.ts.map +1 -1
  123. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/initialiseTable.js +88 -48
  124. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/initialiseTable.js.map +1 -1
  125. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/loadWithRetries.js +40 -20
  126. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/coroutines/runner.js +43 -15
  127. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/state.js +301 -137
  128. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/state.js.map +1 -1
  129. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/template.js +692 -240
  130. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/state.js +20 -8
  131. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/tuple/template.js +132 -35
  132. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/state.js +21 -8
  133. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/union/template.js +105 -33
  134. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/state.js +12 -9
  135. package/bin/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/unit/template.js +54 -20
  136. package/bin/src/forms/domains/dispatched-forms/runner/domains/deltas/state.js +716 -560
  137. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/list/state.js +58 -18
  138. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/lookup/state.js +45 -14
  139. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/map/state.js +76 -18
  140. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/multiSelection/state.js +82 -24
  141. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/nestedDispatcher/state.js +37 -8
  142. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/one/state.js +120 -36
  143. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/primitive/state.js +145 -63
  144. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/readOnly/state.js +44 -12
  145. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/recordField/state.js +14 -4
  146. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/record/state.js +81 -25
  147. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/singleSelectionDispatcher/state.js +82 -24
  148. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/sum/state.js +63 -20
  149. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/table/state.js +248 -74
  150. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/tupleDispatcher/state.js +61 -13
  151. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/domains/unionDispatcher/state.js +92 -33
  152. package/bin/src/forms/domains/dispatched-forms/runner/domains/dispatcher/state.js +144 -45
  153. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/create/coroutines/_init.js +203 -95
  154. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/create/coroutines/_sync.js +79 -37
  155. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/create/coroutines/builder.js +2 -2
  156. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/create/coroutines/runner.js +19 -17
  157. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/create/state.js +58 -11
  158. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/create/template.js +73 -25
  159. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/edit/coroutines/_init.js +205 -95
  160. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/edit/coroutines/_sync.js +78 -37
  161. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/edit/coroutines/builder.js +2 -2
  162. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/edit/coroutines/runner.js +19 -17
  163. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/edit/state.js +58 -11
  164. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/edit/template.js +71 -25
  165. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/passthrough/coroutines/runner.js +163 -85
  166. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/passthrough/state.js +10 -4
  167. package/bin/src/forms/domains/dispatched-forms/runner/domains/kind/passthrough/template.js +72 -27
  168. package/bin/src/forms/domains/dispatched-forms/runner/domains/traversal/state.js +796 -436
  169. package/bin/src/forms/domains/dispatched-forms/runner/state.js +62 -38
  170. package/bin/src/forms/domains/dispatched-forms/runner/template.js +78 -25
  171. package/bin/src/forms/domains/launcher/coroutines/runner.js +120 -45
  172. package/bin/src/forms/domains/launcher/domains/create/coroutines/runner.js +240 -101
  173. package/bin/src/forms/domains/launcher/domains/create/state.js +62 -17
  174. package/bin/src/forms/domains/launcher/domains/create/template.js +84 -42
  175. package/bin/src/forms/domains/launcher/domains/edit/coroutines/runner.js +242 -103
  176. package/bin/src/forms/domains/launcher/domains/edit/state.js +62 -17
  177. package/bin/src/forms/domains/launcher/domains/edit/template.js +86 -43
  178. package/bin/src/forms/domains/launcher/domains/merger/state.d.ts +4 -4
  179. package/bin/src/forms/domains/launcher/domains/merger/state.js +35 -26
  180. package/bin/src/forms/domains/launcher/domains/passthrough/coroutines/runner.js +88 -42
  181. package/bin/src/forms/domains/launcher/domains/passthrough/state.js +44 -19
  182. package/bin/src/forms/domains/launcher/domains/passthrough/template.js +56 -34
  183. package/bin/src/forms/domains/launcher/state.js +6 -6
  184. package/bin/src/forms/domains/launcher/template.js +169 -85
  185. package/bin/src/forms/domains/parser/coroutines/runner.js +87 -25
  186. package/bin/src/forms/domains/parser/domains/built-ins/state.js +944 -533
  187. package/bin/src/forms/domains/parser/domains/deltas/state.js +444 -318
  188. package/bin/src/forms/domains/parser/domains/injectables/state.js +29 -26
  189. package/bin/src/forms/domains/parser/domains/layout/state.js +271 -183
  190. package/bin/src/forms/domains/parser/domains/predicates/domains/extractor/state.js +324 -162
  191. package/bin/src/forms/domains/parser/domains/predicates/state.js +1514 -984
  192. package/bin/src/forms/domains/parser/domains/renderer/state.js +1137 -480
  193. package/bin/src/forms/domains/parser/domains/types/state.js +355 -170
  194. package/bin/src/forms/domains/parser/domains/validator/state.js +417 -280
  195. package/bin/src/forms/domains/parser/state.js +612 -373
  196. package/bin/src/forms/domains/parser/template.js +1 -1
  197. package/bin/src/forms/domains/primitives/domains/base-64-file/state.js +5 -5
  198. package/bin/src/forms/domains/primitives/domains/base-64-file/template.js +38 -19
  199. package/bin/src/forms/domains/primitives/domains/boolean/state.js +5 -5
  200. package/bin/src/forms/domains/primitives/domains/boolean/template.js +38 -19
  201. package/bin/src/forms/domains/primitives/domains/date/state.js +18 -9
  202. package/bin/src/forms/domains/primitives/domains/date/template.js +51 -25
  203. package/bin/src/forms/domains/primitives/domains/enum/state.js +6 -6
  204. package/bin/src/forms/domains/primitives/domains/enum/template.js +117 -48
  205. package/bin/src/forms/domains/primitives/domains/enum-multiselect/state.js +1 -1
  206. package/bin/src/forms/domains/primitives/domains/enum-multiselect/template.js +99 -40
  207. package/bin/src/forms/domains/primitives/domains/list/state.js +14 -14
  208. package/bin/src/forms/domains/primitives/domains/list/template.js +200 -71
  209. package/bin/src/forms/domains/primitives/domains/map/state.js +14 -14
  210. package/bin/src/forms/domains/primitives/domains/map/template.js +294 -103
  211. package/bin/src/forms/domains/primitives/domains/number/state.js +5 -5
  212. package/bin/src/forms/domains/primitives/domains/number/template.js +38 -19
  213. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/state.js +33 -16
  214. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream/template.js +171 -62
  215. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/state.js +1 -1
  216. package/bin/src/forms/domains/primitives/domains/searchable-infinite-stream-multiselect/template.js +182 -69
  217. package/bin/src/forms/domains/primitives/domains/secret/state.js +5 -5
  218. package/bin/src/forms/domains/primitives/domains/secret/template.js +38 -19
  219. package/bin/src/forms/domains/primitives/domains/string/state.js +5 -5
  220. package/bin/src/forms/domains/primitives/domains/string/template.js +42 -22
  221. package/bin/src/forms/domains/primitives/domains/sum/state.js +10 -10
  222. package/bin/src/forms/domains/primitives/domains/sum/template.js +141 -50
  223. package/bin/src/forms/domains/primitives/domains/tuple/state.js +9 -9
  224. package/bin/src/forms/domains/primitives/domains/tuple/template.js +100 -33
  225. package/bin/src/forms/domains/primitives/domains/unit/state.js +8 -8
  226. package/bin/src/forms/domains/primitives/domains/unit/template.js +22 -9
  227. package/bin/src/forms/domains/singleton/domains/form-label/state.d.ts +4 -4
  228. package/bin/src/forms/domains/singleton/domains/form-label/state.js +1 -1
  229. package/bin/src/forms/domains/singleton/state.js +12 -10
  230. package/bin/src/forms/domains/singleton/template.js +288 -113
  231. package/bin/src/fun/domains/curry/state.d.ts +4 -2
  232. package/bin/src/fun/domains/curry/state.js +1 -1
  233. package/bin/src/fun/domains/id/state.d.ts +1 -1
  234. package/bin/src/fun/domains/id/state.js +1 -1
  235. package/bin/src/fun/domains/predicate/domains/bool-expr.d.ts +57 -41
  236. package/bin/src/fun/domains/predicate/domains/bool-expr.js +76 -67
  237. package/bin/src/fun/domains/predicate/state.d.ts +9 -7
  238. package/bin/src/fun/domains/predicate/state.js +14 -10
  239. package/bin/src/fun/domains/simpleCallback/state.d.ts +1 -1
  240. package/bin/src/fun/domains/simpleCallback/state.js +1 -1
  241. package/bin/src/fun/domains/uncurry/state.d.ts +4 -2
  242. package/bin/src/fun/domains/uncurry/state.js +1 -1
  243. package/bin/src/fun/domains/unit/state.d.ts +1 -1
  244. package/bin/src/fun/domains/unit/state.js +1 -1
  245. package/bin/src/fun/domains/updater/domains/caseUpdater/state.d.ts +22 -7
  246. package/bin/src/fun/domains/updater/domains/caseUpdater/state.js +18 -10
  247. package/bin/src/fun/domains/updater/domains/mapUpdater/state.d.ts +24 -13
  248. package/bin/src/fun/domains/updater/domains/mapUpdater/state.js +40 -10
  249. package/bin/src/fun/domains/updater/domains/maybeUpdater/state.d.ts +19 -13
  250. package/bin/src/fun/domains/updater/domains/maybeUpdater/state.js +20 -9
  251. package/bin/src/fun/domains/updater/domains/orderedMapUpdater/state.d.ts +24 -13
  252. package/bin/src/fun/domains/updater/domains/orderedMapUpdater/state.js +47 -11
  253. package/bin/src/fun/domains/updater/domains/orderedSetUpdater/state.d.ts +20 -8
  254. package/bin/src/fun/domains/updater/domains/orderedSetUpdater/state.js +17 -5
  255. package/bin/src/fun/domains/updater/domains/replaceWith/state.d.ts +1 -1
  256. package/bin/src/fun/domains/updater/domains/replaceWith/state.js +1 -1
  257. package/bin/src/fun/domains/updater/domains/simpleUpdater/domains/baseSimpleUpdater/state.d.ts +13 -4
  258. package/bin/src/fun/domains/updater/domains/simpleUpdater/domains/baseSimpleUpdater/state.js +6 -4
  259. package/bin/src/fun/domains/updater/domains/simpleUpdater/state.d.ts +60 -22
  260. package/bin/src/fun/domains/updater/domains/simpleUpdater/state.js +42 -31
  261. package/bin/src/fun/domains/updater/state.d.ts +4 -4
  262. package/bin/src/fun/domains/updater/state.js +12 -10
  263. package/bin/src/fun/state.d.ts +3 -3
  264. package/bin/src/fun/state.js +9 -7
  265. package/bin/src/infinite-data-stream/coroutines/builder.js +1 -1
  266. package/bin/src/infinite-data-stream/coroutines/infiniteLoader.js +47 -20
  267. package/bin/src/infinite-data-stream/coroutines/runner.js +7 -7
  268. package/bin/src/infinite-data-stream/state.d.ts +84 -51
  269. package/bin/src/infinite-data-stream/state.js +125 -61
  270. package/bin/src/infinite-data-stream/template.js +3 -2
  271. package/bin/src/math/domains/DOMRect/state.d.ts +4 -4
  272. package/bin/src/math/domains/DOMRect/state.js +10 -8
  273. package/bin/src/math/domains/number/state.d.ts +5 -5
  274. package/bin/src/math/domains/number/state.js +5 -5
  275. package/bin/src/math/domains/rect/state.d.ts +8 -8
  276. package/bin/src/math/domains/rect/state.js +16 -15
  277. package/bin/src/math/domains/rgba/state.d.ts +17 -17
  278. package/bin/src/math/domains/rgba/state.js +77 -81
  279. package/bin/src/math/domains/size2/state.d.ts +8 -8
  280. package/bin/src/math/domains/size2/state.js +6 -6
  281. package/bin/src/math/domains/vector2/state.d.ts +10 -10
  282. package/bin/src/math/domains/vector2/state.js +8 -8
  283. package/bin/src/queue/state.js +23 -16
  284. package/bin/src/state/domains/repository/state.d.ts +15 -9
  285. package/bin/src/state/domains/repository/state.js +1 -1
  286. package/bin/src/template/state.js +163 -115
  287. package/bin/src/validation/state.js +38 -45
  288. package/bin/src/value/domains/mutable-value/state.js +3 -2
  289. package/bin/src/value/state.d.ts +9 -9
  290. package/bin/src/value/state.js +11 -8
  291. package/bin/src/value-infinite-data-stream/coroutines/builder.js +1 -1
  292. package/bin/src/value-infinite-data-stream/coroutines/infiniteLoader.js +55 -20
  293. package/bin/src/value-infinite-data-stream/coroutines/runner.js +6 -4
  294. package/bin/src/value-infinite-data-stream/state.js +199 -77
  295. package/bin/src/value-infinite-data-stream/template.js +4 -2
  296. package/bin/src/visibility/state.d.ts +5 -2
  297. package/bin/src/visibility/state.js +1 -1
  298. package/main.ts +1 -0
  299. package/package.json +1 -1
  300. package/src/forms/domains/dispatched-forms/deserializer/coroutines/runner.ts +2 -2
  301. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/apis/state.ts +117 -111
  302. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/list/state.ts +14 -5
  303. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/lookup/state.ts +75 -18
  304. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/map/state.ts +16 -6
  305. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/nestedRenderer/state.ts +27 -9
  306. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/one/state.ts +28 -8
  307. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/readOnly/state.ts +13 -4
  308. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/domains/recordFieldRenderer/state.ts +18 -7
  309. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/record/state.ts +40 -14
  310. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/sum/state.ts +15 -5
  311. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/domains/tableCellRenderer/state.ts +20 -6
  312. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/table/state.ts +101 -50
  313. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/tuple/state.ts +22 -23
  314. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/domains/union/state.ts +37 -19
  315. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/forms/domains/renderer/state.ts +64 -6
  316. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/serializable/state.ts +585 -0
  317. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/domains/types/state.ts +592 -340
  318. package/src/forms/domains/dispatched-forms/deserializer/domains/specification/state.ts +364 -226
  319. package/src/forms/domains/dispatched-forms/deserializer/state.ts +1 -2
  320. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/lookup-type/template.tsx +1 -1
  321. package/src/forms/domains/dispatched-forms/runner/domains/abstract-renderers/table/state.ts +2 -2
@@ -1,639 +1,1165 @@
1
1
  import { List, Map } from "immutable";
2
2
  import { ValueOrErrors } from "../../../../../../../../collections/domains/valueOrErrors/state";
3
- import { DispatchGenericTypes, MapRepo, } from "../../../../../../../../../main";
3
+ import {
4
+ DispatchGenericTypes,
5
+ MapRepo,
6
+ isString,
7
+ } from "../../../../../../../../../main";
4
8
  export const DispatchisString = (_) => typeof _ == "string";
5
9
  export const DispatchIsObject = (_) => typeof _ == "object";
6
- export const DispatchIsGenericType = (_) => _ && DispatchGenericTypes.includes(_);
7
- export const DispatchHasFun = (_) => DispatchIsObject(_) && "fun" in _ && DispatchisString(_.fun);
8
- export const DispatchHasArgs = (_) => DispatchIsObject(_) && "args" in _ && Array.isArray(_.args);
10
+ export const DispatchIsGenericType = (_) =>
11
+ _ && DispatchGenericTypes.includes(_);
12
+ export const DispatchHasFun = (_) =>
13
+ DispatchIsObject(_) && "fun" in _ && DispatchisString(_.fun);
14
+ export const DispatchHasArgs = (_) =>
15
+ DispatchIsObject(_) && "args" in _ && Array.isArray(_.args);
9
16
  export const DispatchPrimitiveTypeNames = [
10
- "unit",
11
- "guid", //resolves to string
12
- "entityIdString", //resolves to string
13
- "entityIdUUID", //resolves to string
14
- "calculatedDisplayValue", //resolves to string
15
- "string",
16
- "number",
17
- "boolean",
18
- "Date",
19
- "base64File",
20
- "secret",
17
+ "unit",
18
+ "guid", //resolves to string
19
+ "entityIdString", //resolves to string
20
+ "entityIdUUID", //resolves to string
21
+ "calculatedDisplayValue", //resolves to string
22
+ "string",
23
+ "number",
24
+ "boolean",
25
+ "Date",
26
+ "base64File",
27
+ "secret",
28
+ ];
29
+ const STRINGY_TYPES = [
30
+ "guid",
31
+ "entityIdUUID",
32
+ "entityIdString",
33
+ "calculatedDisplayValue",
21
34
  ];
22
35
  export const SerializedType = {
23
- isExtendedType: (type) => typeof type == "object" &&
24
- "extends" in type &&
25
- Array.isArray(type.extends) &&
26
- type.extends.length > 0 &&
27
- type.extends.every(DispatchisString),
28
- hasFields: (type) => typeof type == "object" && "fields" in type,
29
- isPrimitive: (_, injectedPrimitives) => Boolean(DispatchPrimitiveTypeNames.some((__) => _ == __) ||
30
- (injectedPrimitives === null || injectedPrimitives === void 0 ? void 0 : injectedPrimitives.has(_))),
31
- isApplication: (_) => DispatchHasFun(_) && DispatchIsGenericType(_.fun) && DispatchHasArgs(_),
32
- isLookup: (_, forms) => DispatchisString(_) && forms.has(_),
33
- isList: (_) => SerializedType.isApplication(_) && _.fun == "List" && _.args.length == 1,
34
- isMap: (_) => SerializedType.isApplication(_) && _.fun == "Map" && _.args.length == 2,
35
- isSum: (_) => SerializedType.isApplication(_) && _.fun == "Sum" && _.args.length == 2,
36
- isSumUnitDate: (_) => typeof _ == "string" && _ == "SumUnitDate",
37
- isSingleSelection: (_) => SerializedType.isApplication(_) &&
38
- _.fun == "SingleSelection" &&
39
- _.args.length == 1,
40
- isMultiSelection: (_) => SerializedType.isApplication(_) &&
41
- _.fun == "MultiSelection" &&
42
- _.args.length == 1,
43
- isUnion: (_) => DispatchHasFun(_) &&
44
- DispatchIsGenericType(_.fun) &&
45
- DispatchHasArgs(_) &&
46
- _.fun == "Union" &&
47
- _.args.length > 0 &&
48
- _.args.every((arg) => (DispatchIsObject(arg) && "caseName" in arg && !("fields" in arg)) ||
49
- ("fields" in arg &&
50
- (DispatchisString(arg.fields) || DispatchIsObject(arg.fields)))),
51
- isTuple: (_) => SerializedType.isApplication(_) && _.fun == "Tuple",
52
- isRecord: (_) => _ != null &&
53
- typeof _ == "object" &&
54
- "fields" in _ &&
55
- (DispatchIsObject(_.fields) || DispatchisString(_.fields)),
56
- isTable: (_) => SerializedType.isApplication(_) && _.fun == "Table" && _.args.length == 1,
57
- isOption: (_) => typeof _ == "object" &&
58
- "fun" in _ &&
59
- _.fun == "Option" &&
60
- "args" in _ &&
61
- Array.isArray(_.args) &&
62
- _.args.length == 1,
63
- isUnit: (_) => _ == "unit",
64
- isKeyOf: (_) => typeof _ == "object" &&
65
- "fun" in _ &&
66
- _.fun == "KeyOf" &&
67
- "args" in _ &&
68
- Array.isArray(_.args) &&
69
- (_.args.length == 1 || (_.args.length == 2 && Array.isArray(_.args[1]))) &&
70
- DispatchisString(_.args[0]),
71
- isOne: (_) => SerializedType.isApplication(_) && _.fun == "One" && _.args.length == 1,
72
- isReadOnly: (_) => SerializedType.isApplication(_) &&
73
- _.fun == "ReadOnly" &&
74
- _.args.length == 1,
75
- isRecordFields: (_) => typeof _ == "object" && _ != null && !("fun" in _) && !("args" in _),
76
- isTranslationOverride: (_) => typeof _ == "object" &&
77
- _ != null &&
78
- "fun" in _ &&
79
- _.fun == "TranslationOverride" &&
80
- "args" in _ &&
81
- Array.isArray(_.args) &&
82
- _.args.length == 2 &&
83
- DispatchisString(_.args[0]),
36
+ isExtendedType: (type) =>
37
+ typeof type == "object" &&
38
+ "extends" in type &&
39
+ Array.isArray(type.extends) &&
40
+ type.extends.length > 0 &&
41
+ type.extends.every(DispatchisString),
42
+ hasFields: (type) => typeof type == "object" && "fields" in type,
43
+ isPrimitive: (_, injectedPrimitives) =>
44
+ Boolean(
45
+ DispatchPrimitiveTypeNames.some((__) => _ == __) ||
46
+ (injectedPrimitives === null || injectedPrimitives === void 0
47
+ ? void 0
48
+ : injectedPrimitives.has(_)),
49
+ ),
50
+ isApplication: (_) =>
51
+ DispatchHasFun(_) && DispatchIsGenericType(_.fun) && DispatchHasArgs(_),
52
+ isLookup: (_, injectedPrimitives) =>
53
+ DispatchisString(_) &&
54
+ !(injectedPrimitives === null || injectedPrimitives === void 0
55
+ ? void 0
56
+ : injectedPrimitives.has(_)) &&
57
+ !(_ in DispatchPrimitiveTypeNames),
58
+ isList: (_) =>
59
+ SerializedType.isApplication(_) && _.fun == "List" && _.args.length == 1,
60
+ isMap: (_) =>
61
+ SerializedType.isApplication(_) && _.fun == "Map" && _.args.length == 2,
62
+ isSum: (_) =>
63
+ SerializedType.isApplication(_) && _.fun == "Sum" && _.args.length == 2,
64
+ isSumUnitDate: (_) => typeof _ == "string" && _ == "SumUnitDate",
65
+ isSingleSelection: (_) =>
66
+ SerializedType.isApplication(_) &&
67
+ _.fun == "SingleSelection" &&
68
+ _.args.length == 1,
69
+ isMultiSelection: (_) =>
70
+ SerializedType.isApplication(_) &&
71
+ _.fun == "MultiSelection" &&
72
+ _.args.length == 1,
73
+ isUnion: (_) =>
74
+ DispatchHasFun(_) &&
75
+ DispatchIsGenericType(_.fun) &&
76
+ DispatchHasArgs(_) &&
77
+ _.fun == "Union" &&
78
+ _.args.length > 0 &&
79
+ _.args.every(
80
+ (arg) =>
81
+ (DispatchIsObject(arg) && "caseName" in arg && !("fields" in arg)) ||
82
+ ("fields" in arg &&
83
+ (DispatchisString(arg.fields) || DispatchIsObject(arg.fields))),
84
+ ),
85
+ isTuple: (_) => SerializedType.isApplication(_) && _.fun == "Tuple",
86
+ isRecord: (_) =>
87
+ _ != null &&
88
+ typeof _ == "object" &&
89
+ "fields" in _ &&
90
+ (DispatchIsObject(_.fields) || DispatchisString(_.fields)),
91
+ isTable: (_) =>
92
+ SerializedType.isApplication(_) && _.fun == "Table" && _.args.length == 1,
93
+ isOption: (_) =>
94
+ typeof _ == "object" &&
95
+ "fun" in _ &&
96
+ _.fun == "Option" &&
97
+ "args" in _ &&
98
+ Array.isArray(_.args) &&
99
+ _.args.length == 1,
100
+ isUnit: (_) => _ == "unit",
101
+ isKeyOf: (_) =>
102
+ typeof _ == "object" &&
103
+ "fun" in _ &&
104
+ _.fun == "KeyOf" &&
105
+ "args" in _ &&
106
+ Array.isArray(_.args) &&
107
+ (_.args.length == 1 || (_.args.length == 2 && Array.isArray(_.args[1]))) &&
108
+ DispatchisString(_.args[0]),
109
+ isOne: (_) =>
110
+ SerializedType.isApplication(_) && _.fun == "One" && _.args.length == 1,
111
+ isReadOnly: (_) =>
112
+ SerializedType.isApplication(_) &&
113
+ _.fun == "ReadOnly" &&
114
+ _.args.length == 1,
115
+ isRecordFields: (_) =>
116
+ typeof _ == "object" && _ != null && !("fun" in _) && !("args" in _),
117
+ isTranslationOverride: (_) =>
118
+ typeof _ == "object" &&
119
+ _ != null &&
120
+ "fun" in _ &&
121
+ _.fun == "TranslationOverride" &&
122
+ "args" in _ &&
123
+ Array.isArray(_.args) &&
124
+ _.args.length == 2 &&
125
+ DispatchisString(_.args[0]),
84
126
  };
85
127
  export const UnionType = {
86
- SerializeToString: (serializedArgs) => {
87
- return `[union; cases: {${serializedArgs.map((v, k) => `${k}: ${v}`).join(", ")}}]`;
88
- },
128
+ SerializeToString: (serializedArgs) => {
129
+ return `[union; cases: {${serializedArgs.map((v, k) => `${k}: ${v}`).join(", ")}}]`;
130
+ },
89
131
  };
90
132
  export const RecordType = {
91
- SerializeToString: (serializedFields) => {
92
- return `[record; fields: {${serializedFields.map((v, k) => `${k}: ${v}`).join(", ")}}]`;
93
- },
133
+ SerializeToString: (serializedFields) => {
134
+ return `[record; fields: {${serializedFields.map((v, k) => `${k}: ${v}`).join(", ")}}]`;
135
+ },
94
136
  };
95
137
  export const LookupType = {
96
- SerializeToString: (name) => {
97
- return `${name}`;
98
- },
138
+ SerializeToString: (name) => {
139
+ return `${name}`;
140
+ },
99
141
  };
100
142
  export const DispatchPrimitiveType = {
101
- SerializeToString: (name) => {
102
- return `[primitive; name: ${String(name)}]`;
103
- },
143
+ SerializeToString: (name) => {
144
+ return `[primitive; name: ${String(name)}]`;
145
+ },
104
146
  };
105
147
  export const SingleSelectionType = {
106
- SerializeToString: (serializedArgs) => {
107
- return `[singleSelection; args: [${serializedArgs.join(", ")}]]`;
108
- },
148
+ SerializeToString: (serializedArgs) => {
149
+ return `[singleSelection; args: [${serializedArgs.join(", ")}]]`;
150
+ },
109
151
  };
110
152
  export const MultiSelectionType = {
111
- SerializeToString: (serializedArgs) => {
112
- return `[multiSelection; args: [${serializedArgs.join(", ")}]]`;
113
- },
153
+ SerializeToString: (serializedArgs) => {
154
+ return `[multiSelection; args: [${serializedArgs.join(", ")}]]`;
155
+ },
114
156
  };
115
157
  export const ListType = {
116
- SerializeToString: (serializedArgs) => {
117
- return `[list; args: [${serializedArgs.join(", ")}]]`;
118
- },
158
+ SerializeToString: (serializedArgs) => {
159
+ return `[list; args: [${serializedArgs.join(", ")}]]`;
160
+ },
119
161
  };
120
162
  export const TupleType = {
121
- SerializeToString: (serializedArgs) => {
122
- return `[tuple; args: [${serializedArgs.join(", ")}]]`;
123
- },
163
+ SerializeToString: (serializedArgs) => {
164
+ return `[tuple; args: [${serializedArgs.join(", ")}]]`;
165
+ },
124
166
  };
125
167
  export const SumType = {
126
- SerializeToString: (serializedArgs) => {
127
- return `[sum; args: [${serializedArgs.join(", ")}]]`;
128
- },
168
+ SerializeToString: (serializedArgs) => {
169
+ return `[sum; args: [${serializedArgs.join(", ")}]]`;
170
+ },
129
171
  };
130
172
  export const SumNType = {
131
- SerializeToString: (serializedArgs, arity) => {
132
- return `[sumN; arity: ${arity}; args: [${serializedArgs.join(", ")}]]`;
133
- },
173
+ SerializeToString: (serializedArgs, arity) => {
174
+ return `[sumN; arity: ${arity}; args: [${serializedArgs.join(", ")}]]`;
175
+ },
134
176
  };
135
177
  export const MapType = {
136
- SerializeToString: (serializedArgs) => {
137
- return `[map; args: [${serializedArgs.join(", ")}]]`;
138
- },
178
+ SerializeToString: (serializedArgs) => {
179
+ return `[map; args: [${serializedArgs.join(", ")}]]`;
180
+ },
139
181
  };
140
182
  export const TableType = {
141
- SerializeToString: (serializedArg) => {
142
- return `[table; arg: ${serializedArg}]`;
143
- },
183
+ SerializeToString: (serializedArg) => {
184
+ return `[table; arg: ${serializedArg}]`;
185
+ },
144
186
  };
145
187
  export const ReadOnlyType = {
146
- SerializeToString: (serializedArg) => {
147
- return `[readOnly; arg: ${serializedArg}]`;
148
- },
188
+ SerializeToString: (serializedArg) => {
189
+ return `[readOnly; arg: ${serializedArg}]`;
190
+ },
149
191
  };
150
192
  export const OneType = {
151
- SerializeToString: (serializedArg) => {
152
- return `[one; arg: ${serializedArg}]`;
153
- },
193
+ SerializeToString: (serializedArg) => {
194
+ return `[one; arg: ${serializedArg}]`;
195
+ },
154
196
  };
155
197
  export const FilterContainsType = {
156
- SerializeToString: (serializedContains) => {
157
- return `[filter; contains: ${serializedContains}]`;
158
- },
198
+ SerializeToString: (serializedContains) => {
199
+ return `[filter; contains: ${serializedContains}]`;
200
+ },
159
201
  };
160
202
  export const FilterEqualsToType = {
161
- SerializeToString: (serializedEqualsTo) => {
162
- return `[filter; equalsTo: ${serializedEqualsTo}]`;
163
- },
203
+ SerializeToString: (serializedEqualsTo) => {
204
+ return `[filter; equalsTo: ${serializedEqualsTo}]`;
205
+ },
164
206
  };
165
207
  export const FilterNotEqualsToType = {
166
- SerializeToString: (serializedNotEqualsTo) => {
167
- return `[filter; != ${serializedNotEqualsTo}]`;
168
- },
208
+ SerializeToString: (serializedNotEqualsTo) => {
209
+ return `[filter; != ${serializedNotEqualsTo}]`;
210
+ },
169
211
  };
170
212
  export const FilterGreaterThanOrEqualsToType = {
171
- SerializeToString: (serializedGreaterThanOrEqualsTo) => {
172
- return `[filter; >= ${serializedGreaterThanOrEqualsTo}]`;
173
- },
213
+ SerializeToString: (serializedGreaterThanOrEqualsTo) => {
214
+ return `[filter; >= ${serializedGreaterThanOrEqualsTo}]`;
215
+ },
174
216
  };
175
217
  export const FilterGreaterThanType = {
176
- SerializeToString: (serializedGreaterThan) => {
177
- return `[filter; > ${serializedGreaterThan}]`;
178
- },
218
+ SerializeToString: (serializedGreaterThan) => {
219
+ return `[filter; > ${serializedGreaterThan}]`;
220
+ },
179
221
  };
180
222
  export const FilterIsNotNullType = {
181
- SerializeToString: () => {
182
- return `[filter; !=null]`;
183
- },
223
+ SerializeToString: () => {
224
+ return `[filter; !=null]`;
225
+ },
184
226
  };
185
227
  export const FilterIsNullType = {
186
- SerializeToString: () => {
187
- return `[filter; =null]`;
188
- },
228
+ SerializeToString: () => {
229
+ return `[filter; =null]`;
230
+ },
189
231
  };
190
232
  export const FilterSmallerThanOrEqualsToType = {
191
- SerializeToString: (serializedSmallerThanOrEqualsTo) => {
192
- return `[filter; <= ${serializedSmallerThanOrEqualsTo}]`;
193
- },
233
+ SerializeToString: (serializedSmallerThanOrEqualsTo) => {
234
+ return `[filter; <= ${serializedSmallerThanOrEqualsTo}]`;
235
+ },
194
236
  };
195
237
  export const FilterSmallerThanType = {
196
- SerializeToString: (serializedSmallerThan) => {
197
- return `[filter; < ${serializedSmallerThan}]`;
198
- },
238
+ SerializeToString: (serializedSmallerThan) => {
239
+ return `[filter; < ${serializedSmallerThan}]`;
240
+ },
199
241
  };
200
242
  export const FilterStartsWithType = {
201
- SerializeToString: (serializedStartsWith) => {
202
- return `[filter; startsWith ${serializedStartsWith}]`;
203
- },
243
+ SerializeToString: (serializedStartsWith) => {
244
+ return `[filter; startsWith ${serializedStartsWith}]`;
245
+ },
204
246
  };
205
247
  export const FilterTypeKinds = [
206
- "contains",
207
- "=",
208
- "!=",
209
- ">=",
210
- ">",
211
- "!=null",
212
- "=null",
213
- "<=",
214
- "<",
215
- "startsWith",
248
+ "contains",
249
+ "=",
250
+ "!=",
251
+ ">=",
252
+ ">",
253
+ "!=null",
254
+ "=null",
255
+ "<=",
256
+ "<",
257
+ "startsWith",
216
258
  ];
217
259
  export const DispatchParsedType = {
218
- Default: {
219
- table: (arg) => ({
220
- kind: "table",
221
- arg,
222
- asString: () => TableType.SerializeToString(arg.asString()),
223
- }),
224
- record: (fields) => ({
225
- kind: "record",
226
- fields,
227
- asString: () => RecordType.SerializeToString(fields.map((v) => v.asString())),
228
- }),
229
- primitive: (name) => ({
230
- kind: "primitive",
231
- name,
232
- asString: () => DispatchPrimitiveType.SerializeToString(name),
233
- }),
234
- singleSelection: (args) => ({
235
- kind: "singleSelection",
236
- args,
237
- asString: () => SingleSelectionType.SerializeToString(args.map((v) => v.asString())),
238
- }),
239
- multiSelection: (args) => ({
240
- kind: "multiSelection",
241
- args,
242
- asString: () => MultiSelectionType.SerializeToString(args.map((v) => v.asString())),
243
- }),
244
- list: (args) => ({
245
- kind: "list",
246
- args,
247
- asString: () => ListType.SerializeToString(args.map((v) => v.asString())),
248
- }),
249
- tuple: (args) => ({
250
- kind: "tuple",
251
- args,
252
- asString: () => TupleType.SerializeToString(args.map((v) => v.asString())),
253
- }),
254
- sum: (args) => ({
255
- kind: "sum",
256
- args,
257
- asString: () => SumType.SerializeToString(args.map((v) => v.asString())),
258
- }),
259
- sumN: (args) => ({
260
- kind: "sumN",
261
- args,
262
- asString: () => SumNType.SerializeToString(args.map((v) => v.asString()), args.length),
263
- }),
264
- map: (args) => ({
265
- kind: "map",
266
- args,
267
- asString: () => MapType.SerializeToString(args.map((v) => v.asString())),
268
- }),
269
- union: (args) => ({
270
- kind: "union",
271
- args,
272
- asString: () => UnionType.SerializeToString(args.map((v) => v.asString())),
273
- }),
274
- readOnly: (arg) => ({
275
- kind: "readOnly",
276
- arg,
277
- asString: () => ReadOnlyType.SerializeToString(arg.asString()),
278
- }),
279
- lookup: (name) => ({
280
- kind: "lookup",
281
- name,
282
- asString: () => LookupType.SerializeToString(name),
283
- }),
284
- one: (arg) => ({
285
- kind: "one",
286
- arg,
287
- asString: () => OneType.SerializeToString(arg.asString()),
288
- }),
289
- filterContains: (contains) => ({
290
- kind: "contains",
291
- contains,
292
- asString: () => FilterContainsType.SerializeToString(contains.asString()),
293
- }),
294
- filterEqualsTo: (equalsTo) => ({
295
- kind: "=",
296
- equalsTo,
297
- asString: () => FilterEqualsToType.SerializeToString(equalsTo.asString()),
298
- }),
299
- filterNotEqualsTo: (notEqualsTo) => ({
300
- kind: "!=",
301
- notEqualsTo,
302
- asString: () => FilterNotEqualsToType.SerializeToString(notEqualsTo.asString()),
303
- }),
304
- filterGreaterThanOrEqualsTo: (greaterThanOrEqualsTo) => ({
305
- kind: ">=",
306
- greaterThanOrEqualsTo,
307
- asString: () => FilterGreaterThanOrEqualsToType.SerializeToString(greaterThanOrEqualsTo.asString()),
308
- }),
309
- filterGreaterThan: (greaterThan) => ({
310
- kind: ">",
311
- greaterThan,
312
- asString: () => FilterGreaterThanType.SerializeToString(greaterThan.asString()),
313
- }),
314
- filterIsNotNull: () => ({
315
- kind: "!=null",
316
- asString: () => FilterIsNotNullType.SerializeToString(),
317
- }),
318
- filterIsNull: () => ({
319
- kind: "=null",
320
- asString: () => FilterIsNullType.SerializeToString(),
321
- }),
322
- filterSmallerThanOrEqualsTo: (smallerThanOrEqualsTo) => ({
323
- kind: "<=",
324
- smallerThanOrEqualsTo,
325
- asString: () => FilterSmallerThanOrEqualsToType.SerializeToString(smallerThanOrEqualsTo.asString()),
326
- }),
327
- filterSmallerThan: (smallerThan) => ({
328
- kind: "<",
329
- smallerThan,
330
- asString: () => FilterSmallerThanType.SerializeToString(smallerThan.asString()),
331
- }),
332
- filterStartsWith: (startsWith) => ({
333
- kind: "startsWith",
334
- startsWith,
335
- asString: () => FilterStartsWithType.SerializeToString(startsWith.asString()),
336
- }),
260
+ Default: {
261
+ table: (arg) => ({
262
+ kind: "table",
263
+ arg,
264
+ }),
265
+ record: (fields) => ({
266
+ kind: "record",
267
+ fields,
268
+ }),
269
+ primitive: (name) => ({
270
+ kind: "primitive",
271
+ name,
272
+ }),
273
+ singleSelection: (args) => ({
274
+ kind: "singleSelection",
275
+ args,
276
+ }),
277
+ multiSelection: (args) => ({
278
+ kind: "multiSelection",
279
+ args,
280
+ }),
281
+ list: (args) => ({
282
+ kind: "list",
283
+ args,
284
+ }),
285
+ tuple: (args) => ({
286
+ kind: "tuple",
287
+ args,
288
+ }),
289
+ sum: (args) => ({
290
+ kind: "sum",
291
+ args,
292
+ }),
293
+ sumN: (args) => ({
294
+ kind: "sumN",
295
+ args,
296
+ }),
297
+ map: (args) => ({
298
+ kind: "map",
299
+ args,
300
+ }),
301
+ union: (args) => ({
302
+ kind: "union",
303
+ args,
304
+ }),
305
+ readOnly: (arg) => ({
306
+ kind: "readOnly",
307
+ arg,
308
+ }),
309
+ lookup: (name) => ({
310
+ kind: "lookup",
311
+ name,
312
+ }),
313
+ one: (arg) => ({
314
+ kind: "one",
315
+ arg,
316
+ }),
317
+ filterContains: (contains) => ({
318
+ kind: "contains",
319
+ contains,
320
+ }),
321
+ filterEqualsTo: (equalsTo) => ({
322
+ kind: "=",
323
+ equalsTo,
324
+ }),
325
+ filterNotEqualsTo: (notEqualsTo) => ({
326
+ kind: "!=",
327
+ notEqualsTo,
328
+ }),
329
+ filterGreaterThanOrEqualsTo: (greaterThanOrEqualsTo) => ({
330
+ kind: ">=",
331
+ greaterThanOrEqualsTo,
332
+ }),
333
+ filterGreaterThan: (greaterThan) => ({
334
+ kind: ">",
335
+ greaterThan,
336
+ }),
337
+ filterIsNotNull: () => ({
338
+ kind: "!=null",
339
+ }),
340
+ filterIsNull: () => ({
341
+ kind: "=null",
342
+ }),
343
+ filterSmallerThanOrEqualsTo: (smallerThanOrEqualsTo) => ({
344
+ kind: "<=",
345
+ smallerThanOrEqualsTo,
346
+ }),
347
+ filterSmallerThan: (smallerThan) => ({
348
+ kind: "<",
349
+ smallerThan,
350
+ }),
351
+ filterStartsWith: (startsWith) => ({
352
+ kind: "startsWith",
353
+ startsWith,
354
+ }),
355
+ },
356
+ Operations: {
357
+ AsString: (type) => {
358
+ switch (type.kind) {
359
+ case "record":
360
+ return RecordType.SerializeToString(
361
+ type.fields.map((v) => DispatchParsedType.Operations.AsString(v)),
362
+ );
363
+ case "table":
364
+ return TableType.SerializeToString(
365
+ DispatchParsedType.Operations.AsString(type.arg),
366
+ );
367
+ case "one":
368
+ return OneType.SerializeToString(
369
+ DispatchParsedType.Operations.AsString(type.arg),
370
+ );
371
+ case "singleSelection":
372
+ return SingleSelectionType.SerializeToString(
373
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
374
+ );
375
+ case "multiSelection":
376
+ return MultiSelectionType.SerializeToString(
377
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
378
+ );
379
+ case "list":
380
+ return ListType.SerializeToString(
381
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
382
+ );
383
+ case "tuple":
384
+ return TupleType.SerializeToString(
385
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
386
+ );
387
+ case "sum":
388
+ return SumType.SerializeToString(
389
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
390
+ );
391
+ case "sumN":
392
+ return SumNType.SerializeToString(
393
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
394
+ type.args.length,
395
+ );
396
+ case "map":
397
+ return MapType.SerializeToString(
398
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
399
+ );
400
+ case "union":
401
+ return UnionType.SerializeToString(
402
+ type.args.map((v) => DispatchParsedType.Operations.AsString(v)),
403
+ );
404
+ case "lookup":
405
+ return LookupType.SerializeToString(type.name);
406
+ case "contains":
407
+ return FilterContainsType.SerializeToString(
408
+ DispatchParsedType.Operations.AsString(type.contains),
409
+ );
410
+ case "=":
411
+ return FilterEqualsToType.SerializeToString(
412
+ DispatchParsedType.Operations.AsString(type.equalsTo),
413
+ );
414
+ case "!=":
415
+ return FilterNotEqualsToType.SerializeToString(
416
+ DispatchParsedType.Operations.AsString(type.notEqualsTo),
417
+ );
418
+ case ">=":
419
+ return FilterGreaterThanOrEqualsToType.SerializeToString(
420
+ DispatchParsedType.Operations.AsString(type.greaterThanOrEqualsTo),
421
+ );
422
+ case ">":
423
+ return FilterGreaterThanType.SerializeToString(
424
+ DispatchParsedType.Operations.AsString(type.greaterThan),
425
+ );
426
+ case "!=null":
427
+ return FilterIsNotNullType.SerializeToString();
428
+ case "=null":
429
+ return FilterIsNullType.SerializeToString();
430
+ case "<=":
431
+ return FilterSmallerThanOrEqualsToType.SerializeToString(
432
+ DispatchParsedType.Operations.AsString(type.smallerThanOrEqualsTo),
433
+ );
434
+ case "<":
435
+ return FilterSmallerThanType.SerializeToString(
436
+ DispatchParsedType.Operations.AsString(type.smallerThan),
437
+ );
438
+ case "startsWith":
439
+ return FilterStartsWithType.SerializeToString(
440
+ DispatchParsedType.Operations.AsString(type.startsWith),
441
+ );
442
+ default:
443
+ throw new Error(`Unknown type: ${JSON.stringify(type)}`);
444
+ }
337
445
  },
338
- Operations: {
339
- // We don't use this at the moment, if we need it, then we can fix
340
- // Equals: <T>(
341
- // fst: DispatchParsedType<T>,
342
- // snd: DispatchParsedType<T>,
343
- // ): boolean =>
344
- // fst.kind == "record" && snd.kind == "record"
345
- // ? fst.name == snd.name
346
- // : fst.kind == "table" && snd.kind == "table"
347
- // ? fst.name == snd.name
348
- // : fst.kind == "one" && snd.kind == "one"
349
- // ? fst.name == snd.name
350
- // : fst.kind == "lookup" && snd.kind == "lookup"
351
- // ? fst.name == snd.name
352
- // : fst.kind == "primitive" && snd.kind == "primitive"
353
- // ? fst.name == snd.name
354
- // : fst.kind == "list" && snd.kind == "list"
355
- // ? fst.name == snd.name
356
- // : fst.kind == "singleSelection" &&
357
- // snd.kind == "singleSelection"
358
- // ? fst.name == snd.name
359
- // : fst.kind == "multiSelection" &&
360
- // snd.kind == "multiSelection"
361
- // ? fst.name == snd.name
362
- // : fst.kind == "map" && snd.kind == "map"
363
- // ? fst.name == snd.name
364
- // : fst.kind == "sum" && snd.kind == "sum"
365
- // ? fst.name == snd.name
366
- // : fst.kind == "tuple" && snd.kind == "tuple"
367
- // ? fst.name == snd.name &&
368
- // fst.args.length == snd.args.length &&
369
- // fst.args.every((v, i) =>
370
- // DispatchParsedType.Operations.Equals(
371
- // v,
372
- // snd.args[i],
373
- // ),
374
- // )
375
- // : fst.kind == "union" && snd.kind == "union"
376
- // ? fst.args.size == snd.args.size &&
377
- // fst.args.every(
378
- // (v, i) => v.name == snd.args.get(i)!.name,
379
- // )
380
- // : false,
381
- ParseRawKeyOf: (rawType, typeNames, serializedTypes, alreadyParsedTypes) => (alreadyParsedTypes.has(rawType.args[0])
382
- ? alreadyParsedTypes
383
- .get(rawType.args[0])
384
- .Then((parsedType) => ValueOrErrors.Default.return([parsedType, alreadyParsedTypes]))
385
- : DispatchParsedType.Operations.ParseRawType(rawType.args[0], serializedTypes[rawType.args[0]], typeNames, serializedTypes, alreadyParsedTypes))
386
- .Then((parsingResult) => parsingResult[0].kind != "record"
387
- ? ValueOrErrors.Default.throwOne(`Error: ${JSON.stringify(parsingResult[0])} is not a record type`)
446
+ // We don't use this at the moment, if we need it, then we can fix
447
+ // Equals: <T>(
448
+ // fst: DispatchParsedType<T>,
449
+ // snd: DispatchParsedType<T>,
450
+ // ): boolean =>
451
+ // fst.kind == "record" && snd.kind == "record"
452
+ // ? fst.name == snd.name
453
+ // : fst.kind == "table" && snd.kind == "table"
454
+ // ? fst.name == snd.name
455
+ // : fst.kind == "one" && snd.kind == "one"
456
+ // ? fst.name == snd.name
457
+ // : fst.kind == "lookup" && snd.kind == "lookup"
458
+ // ? fst.name == snd.name
459
+ // : fst.kind == "primitive" && snd.kind == "primitive"
460
+ // ? fst.name == snd.name
461
+ // : fst.kind == "list" && snd.kind == "list"
462
+ // ? fst.name == snd.name
463
+ // : fst.kind == "singleSelection" &&
464
+ // snd.kind == "singleSelection"
465
+ // ? fst.name == snd.name
466
+ // : fst.kind == "multiSelection" &&
467
+ // snd.kind == "multiSelection"
468
+ // ? fst.name == snd.name
469
+ // : fst.kind == "map" && snd.kind == "map"
470
+ // ? fst.name == snd.name
471
+ // : fst.kind == "sum" && snd.kind == "sum"
472
+ // ? fst.name == snd.name
473
+ // : fst.kind == "tuple" && snd.kind == "tuple"
474
+ // ? fst.name == snd.name &&
475
+ // fst.args.length == snd.args.length &&
476
+ // fst.args.every((v, i) =>
477
+ // DispatchParsedType.Operations.Equals(
478
+ // v,
479
+ // snd.args[i],
480
+ // ),
481
+ // )
482
+ // : fst.kind == "union" && snd.kind == "union"
483
+ // ? fst.args.size == snd.args.size &&
484
+ // fst.args.every(
485
+ // (v, i) => v.name == snd.args.get(i)!.name,
486
+ // )
487
+ // : false,
488
+ ParseRawKeyOf: (
489
+ rawType,
490
+ serializedTypes,
491
+ alreadyParsedTypes,
492
+ injectedPrimitives,
493
+ ) =>
494
+ (alreadyParsedTypes.has(rawType.args[0])
495
+ ? alreadyParsedTypes
496
+ .get(rawType.args[0])
497
+ .Then((parsedType) =>
498
+ ValueOrErrors.Default.return([parsedType, alreadyParsedTypes]),
499
+ )
500
+ : DispatchParsedType.Operations.ParseRawType(
501
+ rawType.args[0],
502
+ serializedTypes[rawType.args[0]],
503
+ serializedTypes,
504
+ alreadyParsedTypes,
505
+ injectedPrimitives,
506
+ )
507
+ )
508
+ .Then((parsingResult) =>
509
+ parsingResult[0].kind != "record"
510
+ ? ValueOrErrors.Default.throwOne(
511
+ `Error: ${JSON.stringify(parsingResult[0])} is not a record type`,
512
+ )
388
513
  : ValueOrErrors.Default.return([
389
- DispatchParsedType.Default.union(Map(parsingResult[0].fields
390
- .keySeq()
391
- .filter((key) => rawType.args[1] == undefined ||
392
- !rawType.args[1].includes(key))
393
- .toArray()
394
- .map((key) => [
395
- key,
396
- DispatchParsedType.Default.record(Map()),
397
- ]))),
514
+ DispatchParsedType.Default.union(
515
+ Map(
516
+ (() => {
517
+ const excludedKeys = rawType.args[1]
518
+ ? rawType.args[1].reduce((acc, key) => {
519
+ acc[key] = true;
520
+ return acc;
521
+ }, {})
522
+ : null;
523
+ return parsingResult[0].fields
524
+ .keySeq()
525
+ .filter(
526
+ (key) =>
527
+ excludedKeys == null || !(key in excludedKeys),
528
+ )
529
+ .toArray()
530
+ .map((key) => [
531
+ key,
532
+ DispatchParsedType.Default.record(Map()),
533
+ ]);
534
+ })(),
535
+ ),
536
+ ),
398
537
  parsingResult[1],
399
- ]))
400
- .MapErrors((errors) => errors.map((error) => `${error}\n...When parsing keyOf type`)),
401
- SerializeToString: (type) => {
402
- switch (type.kind) {
403
- case "primitive":
404
- return DispatchPrimitiveType.SerializeToString(type.name);
405
- case "record":
406
- return RecordType.SerializeToString(type.fields.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
407
- case "table":
408
- return TableType.SerializeToString(DispatchParsedType.Operations.SerializeToString(type.arg));
409
- case "one":
410
- return OneType.SerializeToString(DispatchParsedType.Operations.SerializeToString(type.arg));
411
- case "singleSelection":
412
- return SingleSelectionType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
413
- case "multiSelection":
414
- return MultiSelectionType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
415
- case "list":
416
- return ListType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
417
- case "tuple":
418
- return TupleType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
419
- case "sum":
420
- return SumType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
421
- case "sumN":
422
- return SumNType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)), type.args.length);
423
- case "map":
424
- return MapType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
425
- case "union":
426
- return UnionType.SerializeToString(type.args.map((v) => DispatchParsedType.Operations.SerializeToString(v)));
427
- case "lookup":
428
- return LookupType.SerializeToString(type.name);
429
- case "contains":
430
- return FilterContainsType.SerializeToString(type.contains.asString());
431
- case "=":
432
- return FilterEqualsToType.SerializeToString(type.equalsTo.asString());
433
- case "!=":
434
- return FilterNotEqualsToType.SerializeToString(type.notEqualsTo.asString());
435
- case ">=":
436
- return FilterGreaterThanOrEqualsToType.SerializeToString(type.greaterThanOrEqualsTo.asString());
437
- case ">":
438
- return FilterGreaterThanType.SerializeToString(type.greaterThan.asString());
439
- case "!=null":
440
- return FilterIsNotNullType.SerializeToString();
441
- case "=null":
442
- return FilterIsNullType.SerializeToString();
443
- case "<=":
444
- return FilterSmallerThanOrEqualsToType.SerializeToString(type.smallerThanOrEqualsTo.asString());
445
- case "<":
446
- return FilterSmallerThanType.SerializeToString(type.smallerThan.asString());
447
- case "startsWith":
448
- return FilterStartsWithType.SerializeToString(type.startsWith.asString());
449
- default:
450
- throw new Error(`Unknown type: ${JSON.stringify(type)}`);
451
- }
452
- },
453
- ParseRecord: (typeName, rawType, typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives) =>
454
- // will already been parsed if it was extended by another type which was already parsed
455
- alreadyParsedTypes.has(typeName)
456
- ? alreadyParsedTypes
457
- .get(typeName)
458
- .Then((parsedType) => parsedType.kind != "record"
459
- ? ValueOrErrors.Default.throwOne(`Error: ${JSON.stringify(parsedType)} is not a record type`)
460
- : ValueOrErrors.Default.return([
461
- parsedType,
462
- alreadyParsedTypes,
463
- ]))
464
- : !SerializedType.isRecord(rawType)
465
- ? ValueOrErrors.Default.throwOne(`Error: ${JSON.stringify(rawType)} is not a valid record`)
466
- : (SerializedType.isExtendedType(rawType)
467
- ? ValueOrErrors.Operations.All(List(rawType.extends.map((extendedTypeName) => alreadyParsedTypes.has(extendedTypeName)
468
- ? alreadyParsedTypes
469
- .get(extendedTypeName)
470
- .Then((extendedType) => extendedType.kind != "record"
471
- ? ValueOrErrors.Default.throwOne(`Error: ${JSON.stringify(extendedType)} is not a record type`)
472
- : ValueOrErrors.Default.return([extendedTypeName, extendedType]))
538
+ ]),
539
+ )
540
+ .MapErrors((errors) =>
541
+ errors.map((error) => `${error}\n...When parsing keyOf type`),
542
+ ),
543
+ SerializeToString: (type) => {
544
+ switch (type.kind) {
545
+ case "primitive":
546
+ return DispatchPrimitiveType.SerializeToString(type.name);
547
+ case "record":
548
+ return RecordType.SerializeToString(
549
+ type.fields.map((v) =>
550
+ DispatchParsedType.Operations.SerializeToString(v),
551
+ ),
552
+ );
553
+ case "table":
554
+ return TableType.SerializeToString(
555
+ DispatchParsedType.Operations.SerializeToString(type.arg),
556
+ );
557
+ case "one":
558
+ return OneType.SerializeToString(
559
+ DispatchParsedType.Operations.SerializeToString(type.arg),
560
+ );
561
+ case "singleSelection":
562
+ return SingleSelectionType.SerializeToString(
563
+ type.args.map((v) =>
564
+ DispatchParsedType.Operations.SerializeToString(v),
565
+ ),
566
+ );
567
+ case "multiSelection":
568
+ return MultiSelectionType.SerializeToString(
569
+ type.args.map((v) =>
570
+ DispatchParsedType.Operations.SerializeToString(v),
571
+ ),
572
+ );
573
+ case "list":
574
+ return ListType.SerializeToString(
575
+ type.args.map((v) =>
576
+ DispatchParsedType.Operations.SerializeToString(v),
577
+ ),
578
+ );
579
+ case "tuple":
580
+ return TupleType.SerializeToString(
581
+ type.args.map((v) =>
582
+ DispatchParsedType.Operations.SerializeToString(v),
583
+ ),
584
+ );
585
+ case "sum":
586
+ return SumType.SerializeToString(
587
+ type.args.map((v) =>
588
+ DispatchParsedType.Operations.SerializeToString(v),
589
+ ),
590
+ );
591
+ case "sumN":
592
+ return SumNType.SerializeToString(
593
+ type.args.map((v) =>
594
+ DispatchParsedType.Operations.SerializeToString(v),
595
+ ),
596
+ type.args.length,
597
+ );
598
+ case "map":
599
+ return MapType.SerializeToString(
600
+ type.args.map((v) =>
601
+ DispatchParsedType.Operations.SerializeToString(v),
602
+ ),
603
+ );
604
+ case "union":
605
+ return UnionType.SerializeToString(
606
+ type.args.map((v) =>
607
+ DispatchParsedType.Operations.SerializeToString(v),
608
+ ),
609
+ );
610
+ case "lookup":
611
+ return LookupType.SerializeToString(type.name);
612
+ case "contains":
613
+ return FilterContainsType.SerializeToString(
614
+ // type.contains.asString(),
615
+ "",
616
+ );
617
+ case "=":
618
+ return FilterEqualsToType.SerializeToString(
619
+ // type.equalsTo.asString(),
620
+ "",
621
+ );
622
+ case "!=":
623
+ return FilterNotEqualsToType.SerializeToString(
624
+ // type.notEqualsTo.asString(),
625
+ "",
626
+ );
627
+ case ">=":
628
+ return FilterGreaterThanOrEqualsToType.SerializeToString(
629
+ // type.greaterThanOrEqualsTo.asString(),
630
+ "",
631
+ );
632
+ case ">":
633
+ return FilterGreaterThanType.SerializeToString("");
634
+ case "!=null":
635
+ return FilterIsNotNullType.SerializeToString();
636
+ case "=null":
637
+ return FilterIsNullType.SerializeToString();
638
+ case "<=":
639
+ return FilterSmallerThanOrEqualsToType.SerializeToString("");
640
+ case "<":
641
+ return FilterSmallerThanType.SerializeToString(
642
+ // type.smallerThan.asString(),
643
+ "",
644
+ );
645
+ case "startsWith":
646
+ return FilterStartsWithType.SerializeToString(
647
+ // type.startsWith.asString(),
648
+ "",
649
+ );
650
+ default:
651
+ throw new Error(`Unknown type: ${JSON.stringify(type)}`);
652
+ }
653
+ },
654
+ GetExtendedRecordTypes: (extendedTypeName, alreadyParsedTypes) => {
655
+ return MapRepo.Operations.tryFindWithError(
656
+ extendedTypeName,
657
+ alreadyParsedTypes,
658
+ () => `cannot find extended type ${extendedTypeName} in types`,
659
+ ).Then((extendedType) =>
660
+ extendedType.Then((extendedType) =>
661
+ extendedType.kind != "record"
662
+ ? ValueOrErrors.Default.throwOne(
663
+ `Error: ${JSON.stringify(extendedType)} is not a record type`,
664
+ )
665
+ : ValueOrErrors.Default.return([extendedTypeName, extendedType]),
666
+ ),
667
+ );
668
+ },
669
+ ParseRecord: (
670
+ rawType,
671
+ serializedTypes,
672
+ alreadyParsedTypes,
673
+ injectedPrimitives,
674
+ ) =>
675
+ !SerializedType.isRecord(rawType)
676
+ ? ValueOrErrors.Default.throwOne(
677
+ `Error: ${JSON.stringify(rawType)} is not a valid record`,
678
+ )
679
+ : (SerializedType.isExtendedType(rawType)
680
+ ? rawType.extends
681
+ .reduce(
682
+ (acc, extendedTypeName) =>
683
+ acc.Then(([resultMap, accumulatedAlreadyParsedTypes]) =>
684
+ accumulatedAlreadyParsedTypes.has(extendedTypeName)
685
+ ? DispatchParsedType.Operations.GetExtendedRecordTypes(
686
+ extendedTypeName,
687
+ accumulatedAlreadyParsedTypes,
688
+ ).Then(([extendedTypeName, recordType]) =>
689
+ ValueOrErrors.Default.return([
690
+ resultMap.set(extendedTypeName, recordType),
691
+ accumulatedAlreadyParsedTypes,
692
+ ]),
693
+ )
473
694
  : serializedTypes[extendedTypeName] == undefined
474
- ? ValueOrErrors.Default.throwOne(`Error: cannot find extended type ${extendedTypeName} in types`)
475
- : DispatchParsedType.Operations.ParseRawType(extendedTypeName, serializedTypes[extendedTypeName], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedType) => parsedType[0].kind == "record"
476
- ? ValueOrErrors.Default.return([extendedTypeName, parsedType[0]])
477
- : ValueOrErrors.Default.throwOne(`Error: ${JSON.stringify(parsedType[0])} is not a record type`)))))
478
- .MapErrors((errors) => errors.map((error) => `${error}\n...When parsing extended types`))
479
- .Then((parsedExtendedRecordTypes) => ValueOrErrors.Default.return(parsedExtendedRecordTypes.reduce((acc, type) => acc.set(type[0], type[1]), Map())))
480
- : ValueOrErrors.Default.return(Map())).Then((parsedExtendedRecordTypesMap) => ValueOrErrors.Operations.All(List(Object.entries(rawType.fields).map(([fieldName, fieldType]) => DispatchParsedType.Operations.ParseRawType(fieldName, fieldType, typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedField) => ValueOrErrors.Default.return([fieldName, parsedField])))))
481
- .Then((parsedFields) => ValueOrErrors.Default.return(Map(parsedFields.map(([fieldName, parsedField]) => [
482
- fieldName,
483
- parsedField[0],
484
- ]))))
485
- .Then((parsedFieldsMap) => ValueOrErrors.Default.return(DispatchParsedType.Default.record(parsedFieldsMap.merge(parsedExtendedRecordTypesMap.reduce((acc, type) => acc.merge(type.fields), Map())))).Then((parsedRecord) => ValueOrErrors.Default.return([
486
- parsedRecord,
487
- parsedExtendedRecordTypesMap.reduce((acc, type, name) => acc.set(name, ValueOrErrors.Default.return(type)), alreadyParsedTypes),
488
- ])))),
489
- ParseRawFilterType: (rawFilterType, arg) => {
490
- if (typeof rawFilterType != "string") {
491
- return ValueOrErrors.Default.throwOne(`rawType is not a string`);
492
- }
493
- switch (rawFilterType) {
494
- case "contains":
495
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterContains(arg));
496
- case "equalsTo":
497
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterEqualsTo(arg));
498
- case "startswith":
499
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterStartsWith(arg));
500
- case "!=":
501
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterNotEqualsTo(arg));
502
- case "=":
503
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterEqualsTo(arg));
504
- case ">=":
505
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterGreaterThanOrEqualsTo(arg));
506
- case ">":
507
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterGreaterThan(arg));
508
- case "<=":
509
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterSmallerThanOrEqualsTo(arg));
510
- case "<":
511
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterSmallerThan(arg));
512
- case "=null":
513
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterIsNull());
514
- case "!=null":
515
- return ValueOrErrors.Default.return(DispatchParsedType.Default.filterIsNotNull());
516
- default:
517
- return ValueOrErrors.Default.throwOne(`Unknown filter type: ${rawFilterType}`);
518
- }
519
- },
520
- ParseRawType: (typeName, rawType, typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives) => {
521
- const result = (() => {
522
- const stringyTypes = [
523
- "guid",
524
- "entityIdUUID",
525
- "entityIdString",
526
- "calculatedDisplayValue",
527
- ];
528
- if (SerializedType.isPrimitive(rawType, injectedPrimitives))
529
- return ValueOrErrors.Default.return([
530
- DispatchParsedType.Default.primitive(typeof rawType === "string" && stringyTypes.includes(rawType)
531
- ? "string"
532
- : rawType),
533
- alreadyParsedTypes,
534
- ]);
535
- if (SerializedType.isSingleSelection(rawType))
536
- return DispatchParsedType.Operations.ParseRawType(`SingleSelection:Element`, rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs) => ValueOrErrors.Default.return([
537
- DispatchParsedType.Default.singleSelection([parsedArgs[0]]),
538
- alreadyParsedTypes,
539
- ]));
540
- if (SerializedType.isMultiSelection(rawType))
541
- return DispatchParsedType.Operations.ParseRawType(`MultiSelection:Element`, rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs) => ValueOrErrors.Default.return([
542
- DispatchParsedType.Default.multiSelection([parsedArgs[0]]),
543
- alreadyParsedTypes,
544
- ]));
545
- if (SerializedType.isList(rawType))
546
- return DispatchParsedType.Operations.ParseRawType(`List:Element`, rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs) => ValueOrErrors.Default.return([
547
- DispatchParsedType.Default.list([parsedArgs[0]]),
548
- alreadyParsedTypes,
549
- ]));
550
- if (SerializedType.isTuple(rawType))
551
- return ValueOrErrors.Operations.All(List(rawType.args.map((arg, index) => DispatchParsedType.Operations.ParseRawType(`Tuple:Item ${index + 1}`, arg, typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives)))).Then((parsedArgs) => ValueOrErrors.Default.return([
552
- DispatchParsedType.Default.tuple(parsedArgs.map(([parsedArg]) => parsedArg).toArray()),
553
- alreadyParsedTypes,
554
- ]));
555
- if (SerializedType.isMap(rawType))
556
- return DispatchParsedType.Operations.ParseRawType("Map:Key", rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs0) => DispatchParsedType.Operations.ParseRawType("Map:Value", rawType.args[1], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs1) => ValueOrErrors.Default.return([
557
- DispatchParsedType.Default.map([
558
- parsedArgs0[0],
559
- parsedArgs1[0],
560
- ]),
561
- alreadyParsedTypes,
562
- ])));
563
- if (SerializedType.isSum(rawType))
564
- return DispatchParsedType.Operations.ParseRawType("Sum:Left", rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs0) => DispatchParsedType.Operations.ParseRawType("Sum:Right", rawType.args[1], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArgs1) => ValueOrErrors.Default.return([
565
- DispatchParsedType.Default.sum([
566
- parsedArgs0[0],
567
- parsedArgs1[0],
568
- ]),
569
- alreadyParsedTypes,
570
- ])));
571
- if (SerializedType.isRecord(rawType))
572
- return DispatchParsedType.Operations.ParseRecord(typeName, rawType, typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives);
573
- if (SerializedType.isTable(rawType)) {
574
- return DispatchParsedType.Operations.ParseRawType("TableArg", rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArg) => parsedArg[0].kind != "lookup"
575
- ? ValueOrErrors.Default.throwOne(`Error: ${JSON.stringify(parsedArg[0])} is not a lookup type`)
576
- : ValueOrErrors.Default.return([
577
- DispatchParsedType.Default.table(parsedArg[0]),
578
- alreadyParsedTypes,
579
- ]));
580
- }
581
- if (SerializedType.isLookup(rawType, typeNames))
582
- return ValueOrErrors.Default.return([
583
- DispatchParsedType.Default.lookup(rawType),
584
- alreadyParsedTypes,
585
- ]);
586
- if (SerializedType.isUnit(rawType)) {
587
- return ValueOrErrors.Default.return([
588
- DispatchParsedType.Default.primitive("unit"),
589
- alreadyParsedTypes,
590
- ]);
591
- }
592
- if (SerializedType.isUnion(rawType))
593
- // for now we assume all union cases are lookup types
594
- return ValueOrErrors.Operations.All(List(rawType.args.map((unionCase) => DispatchParsedType.Operations.ParseRawType(`Union:Case ${unionCase.caseName}`, unionCase.fields == undefined
695
+ ? ValueOrErrors.Default.throwOne(
696
+ `Error: cannot find extended type ${extendedTypeName} in types`,
697
+ )
698
+ : DispatchParsedType.Operations.ParseRawType(
699
+ extendedTypeName,
700
+ serializedTypes[extendedTypeName],
701
+ serializedTypes,
702
+ accumulatedAlreadyParsedTypes,
703
+ injectedPrimitives,
704
+ ).Then((parsedType) =>
705
+ parsedType[0].kind == "record"
706
+ ? ValueOrErrors.Default.return([
707
+ resultMap.set(
708
+ extendedTypeName,
709
+ parsedType[0],
710
+ ),
711
+ parsedType[1].set(
712
+ extendedTypeName,
713
+ ValueOrErrors.Default.return(
714
+ parsedType[0],
715
+ ),
716
+ ),
717
+ ])
718
+ : ValueOrErrors.Default.throwOne(
719
+ `Error: ${JSON.stringify(parsedType[0])} is not a record type`,
720
+ ),
721
+ ),
722
+ ),
723
+ ValueOrErrors.Default.return([Map(), alreadyParsedTypes]),
724
+ )
725
+ .MapErrors((errors) =>
726
+ errors.map(
727
+ (error) => `${error}\n...When parsing extended types`,
728
+ ),
729
+ )
730
+ .Then(
731
+ ([
732
+ parsedExtendedRecordTypesMap,
733
+ accumulatedAlreadyParsedTypes,
734
+ ]) =>
735
+ ValueOrErrors.Default.return([
736
+ parsedExtendedRecordTypesMap,
737
+ accumulatedAlreadyParsedTypes,
738
+ ]),
739
+ )
740
+ : ValueOrErrors.Default.return([Map(), alreadyParsedTypes])
741
+ ).Then(
742
+ ([parsedExtendedRecordTypesMap, accumulatedAlreadyParsedTypes]) =>
743
+ Object.keys(rawType.fields)
744
+ .reduce(
745
+ (acc, fieldName) =>
746
+ acc.Then(
747
+ ([
748
+ parsedFieldsMap,
749
+ accumulatedAlreadyParsedTypesForFields,
750
+ ]) =>
751
+ DispatchParsedType.Operations.ParseRawType(
752
+ `Record field type: ${fieldName}`,
753
+ rawType.fields[fieldName],
754
+ serializedTypes,
755
+ accumulatedAlreadyParsedTypesForFields,
756
+ injectedPrimitives,
757
+ ).Then((parsedField) =>
758
+ ValueOrErrors.Default.return([
759
+ parsedFieldsMap.set(fieldName, parsedField[0]),
760
+ parsedField[1],
761
+ ]),
762
+ ),
763
+ ),
764
+ ValueOrErrors.Default.return([
765
+ Map(),
766
+ accumulatedAlreadyParsedTypes,
767
+ ]),
768
+ )
769
+ .Then(
770
+ ([
771
+ parsedFieldsMap,
772
+ accumulatedAlreadyParsedTypesForFields,
773
+ ]) => {
774
+ const { mergedFields, updatedAccumulatedTypes } =
775
+ parsedExtendedRecordTypesMap.reduce(
776
+ (acc, type, name) => ({
777
+ mergedFields: acc.mergedFields.merge(type.fields),
778
+ updatedAccumulatedTypes:
779
+ acc.updatedAccumulatedTypes.set(
780
+ name,
781
+ ValueOrErrors.Default.return(type),
782
+ ),
783
+ }),
784
+ {
785
+ mergedFields: Map(),
786
+ updatedAccumulatedTypes:
787
+ accumulatedAlreadyParsedTypesForFields,
788
+ },
789
+ );
790
+ return ValueOrErrors.Default.return(
791
+ DispatchParsedType.Default.record(
792
+ parsedFieldsMap.merge(mergedFields),
793
+ ),
794
+ ).Then((parsedRecord) =>
795
+ ValueOrErrors.Default.return([
796
+ parsedRecord,
797
+ updatedAccumulatedTypes,
798
+ ]),
799
+ );
800
+ },
801
+ ),
802
+ ),
803
+ ParseRawFilterType: (rawFilterType, arg) => {
804
+ if (typeof rawFilterType != "string") {
805
+ return ValueOrErrors.Default.throwOne(`rawType is not a string`);
806
+ }
807
+ switch (rawFilterType) {
808
+ case "contains":
809
+ return ValueOrErrors.Default.return(
810
+ DispatchParsedType.Default.filterContains(arg),
811
+ );
812
+ case "equalsTo":
813
+ return ValueOrErrors.Default.return(
814
+ DispatchParsedType.Default.filterEqualsTo(arg),
815
+ );
816
+ case "startswith":
817
+ return ValueOrErrors.Default.return(
818
+ DispatchParsedType.Default.filterStartsWith(arg),
819
+ );
820
+ case "!=":
821
+ return ValueOrErrors.Default.return(
822
+ DispatchParsedType.Default.filterNotEqualsTo(arg),
823
+ );
824
+ case "=":
825
+ return ValueOrErrors.Default.return(
826
+ DispatchParsedType.Default.filterEqualsTo(arg),
827
+ );
828
+ case ">=":
829
+ return ValueOrErrors.Default.return(
830
+ DispatchParsedType.Default.filterGreaterThanOrEqualsTo(arg),
831
+ );
832
+ case ">":
833
+ return ValueOrErrors.Default.return(
834
+ DispatchParsedType.Default.filterGreaterThan(arg),
835
+ );
836
+ case "<=":
837
+ return ValueOrErrors.Default.return(
838
+ DispatchParsedType.Default.filterSmallerThanOrEqualsTo(arg),
839
+ );
840
+ case "<":
841
+ return ValueOrErrors.Default.return(
842
+ DispatchParsedType.Default.filterSmallerThan(arg),
843
+ );
844
+ case "=null":
845
+ return ValueOrErrors.Default.return(
846
+ DispatchParsedType.Default.filterIsNull(),
847
+ );
848
+ case "!=null":
849
+ return ValueOrErrors.Default.return(
850
+ DispatchParsedType.Default.filterIsNotNull(),
851
+ );
852
+ default:
853
+ return ValueOrErrors.Default.throwOne(
854
+ `Unknown filter type: ${rawFilterType}`,
855
+ );
856
+ }
857
+ },
858
+ ParseRawType: (
859
+ typeName,
860
+ rawType,
861
+ serializedTypes,
862
+ alreadyParsedTypes,
863
+ injectedPrimitives,
864
+ ) => {
865
+ if (
866
+ alreadyParsedTypes.has(typeName) &&
867
+ !SerializedType.isLookup(rawType, injectedPrimitives)
868
+ )
869
+ return alreadyParsedTypes
870
+ .get(typeName)
871
+ .Then((parsedType) =>
872
+ ValueOrErrors.Default.return([parsedType, alreadyParsedTypes]),
873
+ );
874
+ const result = (() => {
875
+ if (SerializedType.isPrimitive(rawType, injectedPrimitives))
876
+ return ValueOrErrors.Default.return([
877
+ DispatchParsedType.Default.primitive(
878
+ typeof rawType === "string" && STRINGY_TYPES.includes(rawType)
879
+ ? "string"
880
+ : rawType,
881
+ ),
882
+ alreadyParsedTypes,
883
+ ]);
884
+ if (SerializedType.isSingleSelection(rawType))
885
+ return DispatchParsedType.Operations.ParseRawType(
886
+ `SingleSelection:Element`,
887
+ rawType.args[0],
888
+ serializedTypes,
889
+ alreadyParsedTypes,
890
+ injectedPrimitives,
891
+ ).Then(([parsedArg, newAlreadyParsedTypes]) =>
892
+ ValueOrErrors.Default.return([
893
+ DispatchParsedType.Default.singleSelection([parsedArg]),
894
+ newAlreadyParsedTypes,
895
+ ]),
896
+ );
897
+ if (SerializedType.isMultiSelection(rawType))
898
+ return DispatchParsedType.Operations.ParseRawType(
899
+ `MultiSelection:Element`,
900
+ rawType.args[0],
901
+ serializedTypes,
902
+ alreadyParsedTypes,
903
+ injectedPrimitives,
904
+ ).Then(([parsedArg, newAlreadyParsedTypes]) =>
905
+ ValueOrErrors.Default.return([
906
+ DispatchParsedType.Default.multiSelection([parsedArg]),
907
+ newAlreadyParsedTypes,
908
+ ]),
909
+ );
910
+ if (SerializedType.isList(rawType))
911
+ return DispatchParsedType.Operations.ParseRawType(
912
+ `List:Element`,
913
+ rawType.args[0],
914
+ serializedTypes,
915
+ alreadyParsedTypes,
916
+ injectedPrimitives,
917
+ ).Then(([parsedArg, newAlreadyParsedTypes]) =>
918
+ ValueOrErrors.Default.return([
919
+ DispatchParsedType.Default.list([parsedArg]),
920
+ newAlreadyParsedTypes,
921
+ ]),
922
+ );
923
+ if (SerializedType.isTuple(rawType))
924
+ return rawType.args
925
+ .reduce(
926
+ (acc, arg, index) =>
927
+ acc.Then(([parsedArgsList, accumulatedAlreadyParsedTypes]) =>
928
+ DispatchParsedType.Operations.ParseRawType(
929
+ `Tuple:Item ${index + 1}`,
930
+ arg,
931
+ serializedTypes,
932
+ accumulatedAlreadyParsedTypes,
933
+ injectedPrimitives,
934
+ ).Then((parsedArg) =>
935
+ ValueOrErrors.Default.return([
936
+ parsedArgsList.push(parsedArg[0]),
937
+ parsedArg[1],
938
+ ]),
939
+ ),
940
+ ),
941
+ ValueOrErrors.Default.return([List(), alreadyParsedTypes]),
942
+ )
943
+ .Then(([parsedArgsList, accumulatedAlreadyParsedTypes]) =>
944
+ ValueOrErrors.Default.return([
945
+ DispatchParsedType.Default.tuple(parsedArgsList.toArray()),
946
+ accumulatedAlreadyParsedTypes,
947
+ ]),
948
+ );
949
+ if (SerializedType.isMap(rawType))
950
+ return DispatchParsedType.Operations.ParseRawType(
951
+ "Map:Key",
952
+ rawType.args[0],
953
+ serializedTypes,
954
+ alreadyParsedTypes,
955
+ injectedPrimitives,
956
+ ).Then(([parsedArg0, newAlreadyParsedTypes]) =>
957
+ DispatchParsedType.Operations.ParseRawType(
958
+ "Map:Value",
959
+ rawType.args[1],
960
+ serializedTypes,
961
+ newAlreadyParsedTypes,
962
+ injectedPrimitives,
963
+ ).Then(([parsedArg1, newAlreadyParsedTypes2]) =>
964
+ ValueOrErrors.Default.return([
965
+ DispatchParsedType.Default.map([parsedArg0, parsedArg1]),
966
+ newAlreadyParsedTypes2,
967
+ ]),
968
+ ),
969
+ );
970
+ if (SerializedType.isSum(rawType))
971
+ return DispatchParsedType.Operations.ParseRawType(
972
+ "Sum:Left",
973
+ rawType.args[0],
974
+ serializedTypes,
975
+ alreadyParsedTypes,
976
+ injectedPrimitives,
977
+ ).Then(([parsedArg0, newAlreadyParsedTypes]) =>
978
+ DispatchParsedType.Operations.ParseRawType(
979
+ "Sum:Right",
980
+ rawType.args[1],
981
+ serializedTypes,
982
+ newAlreadyParsedTypes,
983
+ injectedPrimitives,
984
+ ).Then(([parsedArg1, newAlreadyParsedTypes2]) =>
985
+ ValueOrErrors.Default.return([
986
+ DispatchParsedType.Default.sum([parsedArg0, parsedArg1]),
987
+ newAlreadyParsedTypes2,
988
+ ]),
989
+ ),
990
+ );
991
+ if (SerializedType.isRecord(rawType))
992
+ return DispatchParsedType.Operations.ParseRecord(
993
+ rawType,
994
+ serializedTypes,
995
+ alreadyParsedTypes,
996
+ injectedPrimitives,
997
+ );
998
+ if (SerializedType.isTable(rawType)) {
999
+ return DispatchParsedType.Operations.ParseRawType(
1000
+ "TableArg",
1001
+ rawType.args[0],
1002
+ serializedTypes,
1003
+ alreadyParsedTypes,
1004
+ injectedPrimitives,
1005
+ ).Then(([parsedArg, newAlreadyParsedTypes]) =>
1006
+ parsedArg.kind != "lookup"
1007
+ ? ValueOrErrors.Default.throwOne(
1008
+ `Error: ${JSON.stringify(parsedArg)} is not a lookup type`,
1009
+ )
1010
+ : ValueOrErrors.Default.return([
1011
+ DispatchParsedType.Default.table(parsedArg),
1012
+ newAlreadyParsedTypes,
1013
+ ]),
1014
+ );
1015
+ }
1016
+ if (SerializedType.isLookup(rawType, injectedPrimitives)) {
1017
+ const resolvedType = serializedTypes[rawType];
1018
+ if (!resolvedType) {
1019
+ return ValueOrErrors.Default.throwOne(
1020
+ `Error: ${JSON.stringify(rawType)} is not a valid lookup type (not found in serializedTypes)`,
1021
+ );
1022
+ }
1023
+ if (!isString(rawType)) {
1024
+ return ValueOrErrors.Default.throwOne(
1025
+ `Error: ${JSON.stringify(rawType)} is not a valid lookup type (not a string)`,
1026
+ );
1027
+ }
1028
+ if (alreadyParsedTypes.has(rawType)) {
1029
+ return ValueOrErrors.Default.return([
1030
+ DispatchParsedType.Default.lookup(rawType),
1031
+ alreadyParsedTypes,
1032
+ ]);
1033
+ }
1034
+ return DispatchParsedType.Operations.ParseRawType(
1035
+ rawType,
1036
+ resolvedType,
1037
+ serializedTypes,
1038
+ alreadyParsedTypes,
1039
+ injectedPrimitives,
1040
+ ).Then(([parsedType, newAlreadyParsedTypes]) =>
1041
+ ValueOrErrors.Default.return([
1042
+ DispatchParsedType.Default.lookup(rawType),
1043
+ newAlreadyParsedTypes.set(
1044
+ rawType,
1045
+ ValueOrErrors.Default.return(parsedType),
1046
+ ),
1047
+ ]),
1048
+ );
1049
+ }
1050
+ if (SerializedType.isUnit(rawType)) {
1051
+ return ValueOrErrors.Default.return([
1052
+ DispatchParsedType.Default.primitive("unit"),
1053
+ alreadyParsedTypes,
1054
+ ]);
1055
+ }
1056
+ if (SerializedType.isUnion(rawType))
1057
+ return rawType.args
1058
+ .reduce(
1059
+ (acc, unionCase) =>
1060
+ acc.Then(
1061
+ ([parsedUnionCasesMap, accumulatedAlreadyParsedTypes]) =>
1062
+ DispatchParsedType.Operations.ParseRawType(
1063
+ isString(unionCase.fields)
1064
+ ? unionCase.fields
1065
+ : `Union:Case ${unionCase.caseName}`,
1066
+ unionCase.fields == undefined
595
1067
  ? { fields: {} }
596
1068
  : // we allow the record fields to be defined directly in the spec instead of
597
- // inside a fields key
598
- SerializedType.isRecordFields(unionCase.fields)
599
- ? { fields: unionCase.fields }
600
- : unionCase.fields, typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedType) => ValueOrErrors.Default.return([
601
- unionCase.caseName,
602
- parsedType[0],
603
- ]))))).Then((parsedUnionCases) => ValueOrErrors.Default.return([
604
- DispatchParsedType.Default.union(Map(parsedUnionCases)),
605
- alreadyParsedTypes,
606
- ]));
607
- if (SerializedType.isOne(rawType))
608
- return DispatchParsedType.Operations.ParseRawType("One:Element", rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then((parsedArg) => parsedArg[0].kind != "lookup"
609
- ? ValueOrErrors.Default.throwOne(`one content type ${JSON.stringify(parsedArg[0])} is not a lookup type`)
610
- : ValueOrErrors.Default.return([
611
- DispatchParsedType.Default.one(parsedArg[0]),
612
- alreadyParsedTypes,
613
- ]));
614
- if (SerializedType.isReadOnly(rawType))
615
- return DispatchParsedType.Operations.ParseRawType("ReadOnly:Element", rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then(([parsedArg, _]) => ValueOrErrors.Default.return([
616
- DispatchParsedType.Default.readOnly(parsedArg),
617
- alreadyParsedTypes,
618
- ]));
619
- if (SerializedType.isKeyOf(rawType))
620
- return DispatchParsedType.Operations.ParseRawKeyOf(rawType, typeNames, serializedTypes, alreadyParsedTypes);
621
- if (SerializedType.isTranslationOverride(rawType))
622
- return DispatchParsedType.Operations.ParseRawType("TranslationOverride:Language", rawType.args[0], typeNames, serializedTypes, alreadyParsedTypes, injectedPrimitives).Then(([parsedArg0, ..._]) => ValueOrErrors.Default.return([
623
- DispatchParsedType.Default.map([
624
- DispatchParsedType.Default.singleSelection([parsedArg0]),
625
- DispatchParsedType.Default.primitive("string"),
626
- ]),
627
- alreadyParsedTypes,
628
- ]));
629
- return ValueOrErrors.Default.throwOne(`Unrecognised type "${typeName}" : ${JSON.stringify(rawType)}`);
630
- })();
631
- return result.MapErrors((errors) => errors.map((error) => `${error}\n...When parsing type "${typeName}"`));
632
- },
633
- ResolveLookupType: (typeName, types) => MapRepo.Operations.tryFindWithError(typeName, types, () => `cannot find lookup type ${typeName} in types`),
634
- AsResolvedType: (type, types) => type.kind == "lookup"
635
- ? DispatchParsedType.Operations.ResolveLookupType(type.name, types)
636
- : ValueOrErrors.Default.return(type),
1069
+ // inside a fields key
1070
+ SerializedType.isRecordFields(unionCase.fields)
1071
+ ? { fields: unionCase.fields }
1072
+ : unionCase.fields,
1073
+ serializedTypes,
1074
+ accumulatedAlreadyParsedTypes,
1075
+ injectedPrimitives,
1076
+ ).Then(([parsedType, newAlreadyParsedTypes]) =>
1077
+ ValueOrErrors.Default.return([
1078
+ parsedUnionCasesMap.set(unionCase.caseName, parsedType),
1079
+ newAlreadyParsedTypes,
1080
+ ]),
1081
+ ),
1082
+ ),
1083
+ ValueOrErrors.Default.return([Map(), alreadyParsedTypes]),
1084
+ )
1085
+ .Then(([parsedUnionCasesMap, accumulatedAlreadyParsedTypes]) =>
1086
+ ValueOrErrors.Default.return([
1087
+ DispatchParsedType.Default.union(parsedUnionCasesMap),
1088
+ accumulatedAlreadyParsedTypes,
1089
+ ]),
1090
+ );
1091
+ if (SerializedType.isOne(rawType)) {
1092
+ return DispatchParsedType.Operations.ParseRawType(
1093
+ rawType.args[0],
1094
+ rawType.args[0],
1095
+ serializedTypes,
1096
+ alreadyParsedTypes,
1097
+ injectedPrimitives,
1098
+ ).Then(([parsedArg, newAlreadyParsedTypes]) =>
1099
+ parsedArg.kind != "lookup"
1100
+ ? ValueOrErrors.Default.throwOne(
1101
+ `one content type ${JSON.stringify(parsedArg)} is not a lookup type`,
1102
+ )
1103
+ : ValueOrErrors.Default.return([
1104
+ DispatchParsedType.Default.one(parsedArg),
1105
+ newAlreadyParsedTypes,
1106
+ ]),
1107
+ );
1108
+ }
1109
+ if (SerializedType.isReadOnly(rawType))
1110
+ return DispatchParsedType.Operations.ParseRawType(
1111
+ "ReadOnly:Element",
1112
+ rawType.args[0],
1113
+ serializedTypes,
1114
+ alreadyParsedTypes,
1115
+ injectedPrimitives,
1116
+ ).Then(([parsedArg, newAlreadyParsedTypes]) =>
1117
+ ValueOrErrors.Default.return([
1118
+ DispatchParsedType.Default.readOnly(parsedArg),
1119
+ newAlreadyParsedTypes,
1120
+ ]),
1121
+ );
1122
+ if (SerializedType.isKeyOf(rawType))
1123
+ return DispatchParsedType.Operations.ParseRawKeyOf(
1124
+ rawType,
1125
+ serializedTypes,
1126
+ alreadyParsedTypes,
1127
+ injectedPrimitives,
1128
+ );
1129
+ if (SerializedType.isTranslationOverride(rawType))
1130
+ return DispatchParsedType.Operations.ParseRawType(
1131
+ "TranslationOverride:Language",
1132
+ rawType.args[0],
1133
+ serializedTypes,
1134
+ alreadyParsedTypes,
1135
+ injectedPrimitives,
1136
+ ).Then(([parsedArg0, newAlreadyParsedTypes]) =>
1137
+ ValueOrErrors.Default.return([
1138
+ DispatchParsedType.Default.map([
1139
+ DispatchParsedType.Default.singleSelection([parsedArg0]),
1140
+ DispatchParsedType.Default.primitive("string"),
1141
+ ]),
1142
+ newAlreadyParsedTypes,
1143
+ ]),
1144
+ );
1145
+ return ValueOrErrors.Default.throwOne(
1146
+ `Unrecognised type "${typeName}" : ${JSON.stringify(rawType)}`,
1147
+ );
1148
+ })();
1149
+ return result.MapErrors((errors) =>
1150
+ errors.map((error) => `${error}\n...When parsing type "${typeName}"`),
1151
+ );
637
1152
  },
1153
+ ResolveLookupType: (typeName, types) =>
1154
+ MapRepo.Operations.tryFindWithError(
1155
+ typeName,
1156
+ types,
1157
+ () => `cannot find lookup type ${typeName} in types`,
1158
+ ),
1159
+ AsResolvedType: (type, types) =>
1160
+ type.kind == "lookup"
1161
+ ? DispatchParsedType.Operations.ResolveLookupType(type.name, types)
1162
+ : ValueOrErrors.Default.return(type),
1163
+ },
638
1164
  };
639
- //# sourceMappingURL=state.js.map
1165
+ //# sourceMappingURL=state.js.map