@contember/binding-common 2.0.0-alpha.17

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 (699) hide show
  1. package/api-extractor.json +3 -0
  2. package/dist/development/index.cjs +110 -0
  3. package/dist/development/index.cjs.map +1 -0
  4. package/dist/development/index.js +98 -0
  5. package/dist/development/index.js.map +1 -0
  6. package/dist/development/src/BindingError.cjs +10 -0
  7. package/dist/development/src/BindingError.cjs.map +1 -0
  8. package/dist/development/src/BindingError.js +10 -0
  9. package/dist/development/src/BindingError.js.map +1 -0
  10. package/dist/development/src/DataBindingExtendAborted.cjs +5 -0
  11. package/dist/development/src/DataBindingExtendAborted.cjs.map +1 -0
  12. package/dist/development/src/DataBindingExtendAborted.js +5 -0
  13. package/dist/development/src/DataBindingExtendAborted.js.map +1 -0
  14. package/dist/development/src/LocalizedBindingError.cjs +14 -0
  15. package/dist/development/src/LocalizedBindingError.cjs.map +1 -0
  16. package/dist/development/src/LocalizedBindingError.js +14 -0
  17. package/dist/development/src/LocalizedBindingError.js.map +1 -0
  18. package/dist/development/src/RuntimeId.cjs +61 -0
  19. package/dist/development/src/RuntimeId.cjs.map +1 -0
  20. package/dist/development/src/RuntimeId.js +61 -0
  21. package/dist/development/src/RuntimeId.js.map +1 -0
  22. package/dist/development/src/consts.cjs +9 -0
  23. package/dist/development/src/consts.cjs.map +1 -0
  24. package/dist/development/src/consts.js +9 -0
  25. package/dist/development/src/consts.js.map +1 -0
  26. package/dist/development/src/environment/Environment.cjs +216 -0
  27. package/dist/development/src/environment/Environment.cjs.map +1 -0
  28. package/dist/development/src/environment/Environment.js +216 -0
  29. package/dist/development/src/environment/Environment.js.map +1 -0
  30. package/dist/development/src/environment/TreeNodeEnvironmentFactory.cjs +89 -0
  31. package/dist/development/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -0
  32. package/dist/development/src/environment/TreeNodeEnvironmentFactory.js +89 -0
  33. package/dist/development/src/environment/TreeNodeEnvironmentFactory.js.map +1 -0
  34. package/dist/development/src/environment/VariableFieldValue.cjs +9 -0
  35. package/dist/development/src/environment/VariableFieldValue.cjs.map +1 -0
  36. package/dist/development/src/environment/VariableFieldValue.js +9 -0
  37. package/dist/development/src/environment/VariableFieldValue.js.map +1 -0
  38. package/dist/development/src/environment/VariableInputTransformer.cjs +24 -0
  39. package/dist/development/src/environment/VariableInputTransformer.cjs.map +1 -0
  40. package/dist/development/src/environment/VariableInputTransformer.js +24 -0
  41. package/dist/development/src/environment/VariableInputTransformer.js.map +1 -0
  42. package/dist/development/src/markers/EntityFieldMarkersContainer.cjs +11 -0
  43. package/dist/development/src/markers/EntityFieldMarkersContainer.cjs.map +1 -0
  44. package/dist/development/src/markers/EntityFieldMarkersContainer.js +11 -0
  45. package/dist/development/src/markers/EntityFieldMarkersContainer.js.map +1 -0
  46. package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.cjs +11 -0
  47. package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.cjs.map +1 -0
  48. package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.js +11 -0
  49. package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.js.map +1 -0
  50. package/dist/development/src/markers/EntityListSubTreeMarker.cjs +20 -0
  51. package/dist/development/src/markers/EntityListSubTreeMarker.cjs.map +1 -0
  52. package/dist/development/src/markers/EntityListSubTreeMarker.js +20 -0
  53. package/dist/development/src/markers/EntityListSubTreeMarker.js.map +1 -0
  54. package/dist/development/src/markers/EntitySubTreeMarker.cjs +20 -0
  55. package/dist/development/src/markers/EntitySubTreeMarker.cjs.map +1 -0
  56. package/dist/development/src/markers/EntitySubTreeMarker.js +20 -0
  57. package/dist/development/src/markers/EntitySubTreeMarker.js.map +1 -0
  58. package/dist/development/src/markers/FieldMarker.cjs +24 -0
  59. package/dist/development/src/markers/FieldMarker.cjs.map +1 -0
  60. package/dist/development/src/markers/FieldMarker.js +24 -0
  61. package/dist/development/src/markers/FieldMarker.js.map +1 -0
  62. package/dist/development/src/markers/HasManyRelationMarker.cjs +26 -0
  63. package/dist/development/src/markers/HasManyRelationMarker.cjs.map +1 -0
  64. package/dist/development/src/markers/HasManyRelationMarker.js +26 -0
  65. package/dist/development/src/markers/HasManyRelationMarker.js.map +1 -0
  66. package/dist/development/src/markers/HasOneRelationMarker.cjs +20 -0
  67. package/dist/development/src/markers/HasOneRelationMarker.cjs.map +1 -0
  68. package/dist/development/src/markers/HasOneRelationMarker.js +20 -0
  69. package/dist/development/src/markers/HasOneRelationMarker.js.map +1 -0
  70. package/dist/development/src/markers/MarkerComparator.cjs +79 -0
  71. package/dist/development/src/markers/MarkerComparator.cjs.map +1 -0
  72. package/dist/development/src/markers/MarkerComparator.js +79 -0
  73. package/dist/development/src/markers/MarkerComparator.js.map +1 -0
  74. package/dist/development/src/markers/MarkerMerger.cjs +254 -0
  75. package/dist/development/src/markers/MarkerMerger.cjs.map +1 -0
  76. package/dist/development/src/markers/MarkerMerger.js +254 -0
  77. package/dist/development/src/markers/MarkerMerger.js.map +1 -0
  78. package/dist/development/src/markers/MarkerTreeRoot.cjs +10 -0
  79. package/dist/development/src/markers/MarkerTreeRoot.cjs.map +1 -0
  80. package/dist/development/src/markers/MarkerTreeRoot.js +10 -0
  81. package/dist/development/src/markers/MarkerTreeRoot.js.map +1 -0
  82. package/dist/development/src/markers/PlaceholderGenerator.cjs +23 -0
  83. package/dist/development/src/markers/PlaceholderGenerator.cjs.map +1 -0
  84. package/dist/development/src/markers/PlaceholderGenerator.js +23 -0
  85. package/dist/development/src/markers/PlaceholderGenerator.js.map +1 -0
  86. package/dist/development/src/markers/PlaceholderParametersGenerator.cjs +62 -0
  87. package/dist/development/src/markers/PlaceholderParametersGenerator.cjs.map +1 -0
  88. package/dist/development/src/markers/PlaceholderParametersGenerator.js +62 -0
  89. package/dist/development/src/markers/PlaceholderParametersGenerator.js.map +1 -0
  90. package/dist/development/src/queryLanguage/CacheStore.cjs +44 -0
  91. package/dist/development/src/queryLanguage/CacheStore.cjs.map +1 -0
  92. package/dist/development/src/queryLanguage/CacheStore.js +44 -0
  93. package/dist/development/src/queryLanguage/CacheStore.js.map +1 -0
  94. package/dist/development/src/queryLanguage/MarkerFactory.cjs +200 -0
  95. package/dist/development/src/queryLanguage/MarkerFactory.cjs.map +1 -0
  96. package/dist/development/src/queryLanguage/MarkerFactory.js +200 -0
  97. package/dist/development/src/queryLanguage/MarkerFactory.js.map +1 -0
  98. package/dist/development/src/queryLanguage/Parser.cjs +724 -0
  99. package/dist/development/src/queryLanguage/Parser.cjs.map +1 -0
  100. package/dist/development/src/queryLanguage/Parser.js +724 -0
  101. package/dist/development/src/queryLanguage/Parser.js.map +1 -0
  102. package/dist/development/src/queryLanguage/QueryLanguage.cjs +536 -0
  103. package/dist/development/src/queryLanguage/QueryLanguage.cjs.map +1 -0
  104. package/dist/development/src/queryLanguage/QueryLanguage.js +536 -0
  105. package/dist/development/src/queryLanguage/QueryLanguage.js.map +1 -0
  106. package/dist/development/src/queryLanguage/QueryLanguageError.cjs +6 -0
  107. package/dist/development/src/queryLanguage/QueryLanguageError.cjs.map +1 -0
  108. package/dist/development/src/queryLanguage/QueryLanguageError.js +6 -0
  109. package/dist/development/src/queryLanguage/QueryLanguageError.js.map +1 -0
  110. package/dist/development/src/queryLanguage/tokenList.cjs +151 -0
  111. package/dist/development/src/queryLanguage/tokenList.cjs.map +1 -0
  112. package/dist/development/src/queryLanguage/tokenList.js +152 -0
  113. package/dist/development/src/queryLanguage/tokenList.js.map +1 -0
  114. package/dist/development/src/schema/Schema.cjs +36 -0
  115. package/dist/development/src/schema/Schema.cjs.map +1 -0
  116. package/dist/development/src/schema/Schema.js +36 -0
  117. package/dist/development/src/schema/Schema.js.map +1 -0
  118. package/dist/development/src/schema/SchemaLoader.cjs +25 -0
  119. package/dist/development/src/schema/SchemaLoader.cjs.map +1 -0
  120. package/dist/development/src/schema/SchemaLoader.js +25 -0
  121. package/dist/development/src/schema/SchemaLoader.js.map +1 -0
  122. package/dist/development/src/schema/SchemaPreprocessor.cjs +38 -0
  123. package/dist/development/src/schema/SchemaPreprocessor.cjs.map +1 -0
  124. package/dist/development/src/schema/SchemaPreprocessor.js +38 -0
  125. package/dist/development/src/schema/SchemaPreprocessor.js.map +1 -0
  126. package/dist/development/src/treeParameters/EventListenersStore.cjs +93 -0
  127. package/dist/development/src/treeParameters/EventListenersStore.cjs.map +1 -0
  128. package/dist/development/src/treeParameters/EventListenersStore.js +93 -0
  129. package/dist/development/src/treeParameters/EventListenersStore.js.map +1 -0
  130. package/dist/development/src/treeParameters/TreeParameterMerger.cjs +282 -0
  131. package/dist/development/src/treeParameters/TreeParameterMerger.cjs.map +1 -0
  132. package/dist/development/src/treeParameters/TreeParameterMerger.js +282 -0
  133. package/dist/development/src/treeParameters/TreeParameterMerger.js.map +1 -0
  134. package/dist/development/src/treeParameters/defaults.cjs +24 -0
  135. package/dist/development/src/treeParameters/defaults.cjs.map +1 -0
  136. package/dist/development/src/treeParameters/defaults.js +24 -0
  137. package/dist/development/src/treeParameters/defaults.js.map +1 -0
  138. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.cjs +22 -0
  139. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -0
  140. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.js +22 -0
  141. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -0
  142. package/dist/development/src/types/EntityAccessor.cjs +5 -0
  143. package/dist/development/src/types/EntityAccessor.cjs.map +1 -0
  144. package/dist/development/src/types/EntityAccessor.js +5 -0
  145. package/dist/development/src/types/EntityAccessor.js.map +1 -0
  146. package/dist/development/src/types/EntityListAccessor.cjs +5 -0
  147. package/dist/development/src/types/EntityListAccessor.cjs.map +1 -0
  148. package/dist/development/src/types/EntityListAccessor.js +5 -0
  149. package/dist/development/src/types/EntityListAccessor.js.map +1 -0
  150. package/dist/development/src/types/ErrorAccessor.cjs +11 -0
  151. package/dist/development/src/types/ErrorAccessor.cjs.map +1 -0
  152. package/dist/development/src/types/ErrorAccessor.js +12 -0
  153. package/dist/development/src/types/ErrorAccessor.js.map +1 -0
  154. package/dist/development/src/types/FieldAccessor.cjs +5 -0
  155. package/dist/development/src/types/FieldAccessor.cjs.map +1 -0
  156. package/dist/development/src/types/FieldAccessor.js +5 -0
  157. package/dist/development/src/types/FieldAccessor.js.map +1 -0
  158. package/dist/development/src/types/TreeRootAccessor.cjs +14 -0
  159. package/dist/development/src/types/TreeRootAccessor.cjs.map +1 -0
  160. package/dist/development/src/types/TreeRootAccessor.js +14 -0
  161. package/dist/development/src/types/TreeRootAccessor.js.map +1 -0
  162. package/dist/development/src/utils/Hashing.cjs +22 -0
  163. package/dist/development/src/utils/Hashing.cjs.map +1 -0
  164. package/dist/development/src/utils/Hashing.js +22 -0
  165. package/dist/development/src/utils/Hashing.js.map +1 -0
  166. package/dist/development/src/utils/TreeNodeUtils.cjs +77 -0
  167. package/dist/development/src/utils/TreeNodeUtils.cjs.map +1 -0
  168. package/dist/development/src/utils/TreeNodeUtils.js +77 -0
  169. package/dist/development/src/utils/TreeNodeUtils.js.map +1 -0
  170. package/dist/development/src/utils/assertNever.cjs +10 -0
  171. package/dist/development/src/utils/assertNever.cjs.map +1 -0
  172. package/dist/development/src/utils/assertNever.js +10 -0
  173. package/dist/development/src/utils/assertNever.js.map +1 -0
  174. package/dist/development/src/utils/createQueryBuilder.cjs +32 -0
  175. package/dist/development/src/utils/createQueryBuilder.cjs.map +1 -0
  176. package/dist/development/src/utils/createQueryBuilder.js +32 -0
  177. package/dist/development/src/utils/createQueryBuilder.js.map +1 -0
  178. package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.cjs +7 -0
  179. package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.cjs.map +1 -0
  180. package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.js +7 -0
  181. package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.js.map +1 -0
  182. package/dist/production/index.cjs +110 -0
  183. package/dist/production/index.cjs.map +1 -0
  184. package/dist/production/index.js +98 -0
  185. package/dist/production/index.js.map +1 -0
  186. package/dist/production/src/BindingError.cjs +10 -0
  187. package/dist/production/src/BindingError.cjs.map +1 -0
  188. package/dist/production/src/BindingError.js +10 -0
  189. package/dist/production/src/BindingError.js.map +1 -0
  190. package/dist/production/src/DataBindingExtendAborted.cjs +5 -0
  191. package/dist/production/src/DataBindingExtendAborted.cjs.map +1 -0
  192. package/dist/production/src/DataBindingExtendAborted.js +5 -0
  193. package/dist/production/src/DataBindingExtendAborted.js.map +1 -0
  194. package/dist/production/src/LocalizedBindingError.cjs +14 -0
  195. package/dist/production/src/LocalizedBindingError.cjs.map +1 -0
  196. package/dist/production/src/LocalizedBindingError.js +14 -0
  197. package/dist/production/src/LocalizedBindingError.js.map +1 -0
  198. package/dist/production/src/RuntimeId.cjs +61 -0
  199. package/dist/production/src/RuntimeId.cjs.map +1 -0
  200. package/dist/production/src/RuntimeId.js +61 -0
  201. package/dist/production/src/RuntimeId.js.map +1 -0
  202. package/dist/production/src/consts.cjs +9 -0
  203. package/dist/production/src/consts.cjs.map +1 -0
  204. package/dist/production/src/consts.js +9 -0
  205. package/dist/production/src/consts.js.map +1 -0
  206. package/dist/production/src/environment/Environment.cjs +216 -0
  207. package/dist/production/src/environment/Environment.cjs.map +1 -0
  208. package/dist/production/src/environment/Environment.js +216 -0
  209. package/dist/production/src/environment/Environment.js.map +1 -0
  210. package/dist/production/src/environment/TreeNodeEnvironmentFactory.cjs +89 -0
  211. package/dist/production/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -0
  212. package/dist/production/src/environment/TreeNodeEnvironmentFactory.js +89 -0
  213. package/dist/production/src/environment/TreeNodeEnvironmentFactory.js.map +1 -0
  214. package/dist/production/src/environment/VariableFieldValue.cjs +9 -0
  215. package/dist/production/src/environment/VariableFieldValue.cjs.map +1 -0
  216. package/dist/production/src/environment/VariableFieldValue.js +9 -0
  217. package/dist/production/src/environment/VariableFieldValue.js.map +1 -0
  218. package/dist/production/src/environment/VariableInputTransformer.cjs +24 -0
  219. package/dist/production/src/environment/VariableInputTransformer.cjs.map +1 -0
  220. package/dist/production/src/environment/VariableInputTransformer.js +24 -0
  221. package/dist/production/src/environment/VariableInputTransformer.js.map +1 -0
  222. package/dist/production/src/markers/EntityFieldMarkersContainer.cjs +11 -0
  223. package/dist/production/src/markers/EntityFieldMarkersContainer.cjs.map +1 -0
  224. package/dist/production/src/markers/EntityFieldMarkersContainer.js +11 -0
  225. package/dist/production/src/markers/EntityFieldMarkersContainer.js.map +1 -0
  226. package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.cjs +11 -0
  227. package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.cjs.map +1 -0
  228. package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.js +11 -0
  229. package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.js.map +1 -0
  230. package/dist/production/src/markers/EntityListSubTreeMarker.cjs +20 -0
  231. package/dist/production/src/markers/EntityListSubTreeMarker.cjs.map +1 -0
  232. package/dist/production/src/markers/EntityListSubTreeMarker.js +20 -0
  233. package/dist/production/src/markers/EntityListSubTreeMarker.js.map +1 -0
  234. package/dist/production/src/markers/EntitySubTreeMarker.cjs +20 -0
  235. package/dist/production/src/markers/EntitySubTreeMarker.cjs.map +1 -0
  236. package/dist/production/src/markers/EntitySubTreeMarker.js +20 -0
  237. package/dist/production/src/markers/EntitySubTreeMarker.js.map +1 -0
  238. package/dist/production/src/markers/FieldMarker.cjs +24 -0
  239. package/dist/production/src/markers/FieldMarker.cjs.map +1 -0
  240. package/dist/production/src/markers/FieldMarker.js +24 -0
  241. package/dist/production/src/markers/FieldMarker.js.map +1 -0
  242. package/dist/production/src/markers/HasManyRelationMarker.cjs +20 -0
  243. package/dist/production/src/markers/HasManyRelationMarker.cjs.map +1 -0
  244. package/dist/production/src/markers/HasManyRelationMarker.js +20 -0
  245. package/dist/production/src/markers/HasManyRelationMarker.js.map +1 -0
  246. package/dist/production/src/markers/HasOneRelationMarker.cjs +20 -0
  247. package/dist/production/src/markers/HasOneRelationMarker.cjs.map +1 -0
  248. package/dist/production/src/markers/HasOneRelationMarker.js +20 -0
  249. package/dist/production/src/markers/HasOneRelationMarker.js.map +1 -0
  250. package/dist/production/src/markers/MarkerComparator.cjs +79 -0
  251. package/dist/production/src/markers/MarkerComparator.cjs.map +1 -0
  252. package/dist/production/src/markers/MarkerComparator.js +79 -0
  253. package/dist/production/src/markers/MarkerComparator.js.map +1 -0
  254. package/dist/production/src/markers/MarkerMerger.cjs +254 -0
  255. package/dist/production/src/markers/MarkerMerger.cjs.map +1 -0
  256. package/dist/production/src/markers/MarkerMerger.js +254 -0
  257. package/dist/production/src/markers/MarkerMerger.js.map +1 -0
  258. package/dist/production/src/markers/MarkerTreeRoot.cjs +10 -0
  259. package/dist/production/src/markers/MarkerTreeRoot.cjs.map +1 -0
  260. package/dist/production/src/markers/MarkerTreeRoot.js +10 -0
  261. package/dist/production/src/markers/MarkerTreeRoot.js.map +1 -0
  262. package/dist/production/src/markers/PlaceholderGenerator.cjs +23 -0
  263. package/dist/production/src/markers/PlaceholderGenerator.cjs.map +1 -0
  264. package/dist/production/src/markers/PlaceholderGenerator.js +23 -0
  265. package/dist/production/src/markers/PlaceholderGenerator.js.map +1 -0
  266. package/dist/production/src/markers/PlaceholderParametersGenerator.cjs +62 -0
  267. package/dist/production/src/markers/PlaceholderParametersGenerator.cjs.map +1 -0
  268. package/dist/production/src/markers/PlaceholderParametersGenerator.js +62 -0
  269. package/dist/production/src/markers/PlaceholderParametersGenerator.js.map +1 -0
  270. package/dist/production/src/queryLanguage/CacheStore.cjs +44 -0
  271. package/dist/production/src/queryLanguage/CacheStore.cjs.map +1 -0
  272. package/dist/production/src/queryLanguage/CacheStore.js +44 -0
  273. package/dist/production/src/queryLanguage/CacheStore.js.map +1 -0
  274. package/dist/production/src/queryLanguage/MarkerFactory.cjs +200 -0
  275. package/dist/production/src/queryLanguage/MarkerFactory.cjs.map +1 -0
  276. package/dist/production/src/queryLanguage/MarkerFactory.js +200 -0
  277. package/dist/production/src/queryLanguage/MarkerFactory.js.map +1 -0
  278. package/dist/production/src/queryLanguage/Parser.cjs +721 -0
  279. package/dist/production/src/queryLanguage/Parser.cjs.map +1 -0
  280. package/dist/production/src/queryLanguage/Parser.js +721 -0
  281. package/dist/production/src/queryLanguage/Parser.js.map +1 -0
  282. package/dist/production/src/queryLanguage/QueryLanguage.cjs +533 -0
  283. package/dist/production/src/queryLanguage/QueryLanguage.cjs.map +1 -0
  284. package/dist/production/src/queryLanguage/QueryLanguage.js +533 -0
  285. package/dist/production/src/queryLanguage/QueryLanguage.js.map +1 -0
  286. package/dist/production/src/queryLanguage/QueryLanguageError.cjs +6 -0
  287. package/dist/production/src/queryLanguage/QueryLanguageError.cjs.map +1 -0
  288. package/dist/production/src/queryLanguage/QueryLanguageError.js +6 -0
  289. package/dist/production/src/queryLanguage/QueryLanguageError.js.map +1 -0
  290. package/dist/production/src/queryLanguage/tokenList.cjs +151 -0
  291. package/dist/production/src/queryLanguage/tokenList.cjs.map +1 -0
  292. package/dist/production/src/queryLanguage/tokenList.js +152 -0
  293. package/dist/production/src/queryLanguage/tokenList.js.map +1 -0
  294. package/dist/production/src/schema/Schema.cjs +36 -0
  295. package/dist/production/src/schema/Schema.cjs.map +1 -0
  296. package/dist/production/src/schema/Schema.js +36 -0
  297. package/dist/production/src/schema/Schema.js.map +1 -0
  298. package/dist/production/src/schema/SchemaLoader.cjs +25 -0
  299. package/dist/production/src/schema/SchemaLoader.cjs.map +1 -0
  300. package/dist/production/src/schema/SchemaLoader.js +25 -0
  301. package/dist/production/src/schema/SchemaLoader.js.map +1 -0
  302. package/dist/production/src/schema/SchemaPreprocessor.cjs +38 -0
  303. package/dist/production/src/schema/SchemaPreprocessor.cjs.map +1 -0
  304. package/dist/production/src/schema/SchemaPreprocessor.js +38 -0
  305. package/dist/production/src/schema/SchemaPreprocessor.js.map +1 -0
  306. package/dist/production/src/treeParameters/EventListenersStore.cjs +93 -0
  307. package/dist/production/src/treeParameters/EventListenersStore.cjs.map +1 -0
  308. package/dist/production/src/treeParameters/EventListenersStore.js +93 -0
  309. package/dist/production/src/treeParameters/EventListenersStore.js.map +1 -0
  310. package/dist/production/src/treeParameters/TreeParameterMerger.cjs +282 -0
  311. package/dist/production/src/treeParameters/TreeParameterMerger.cjs.map +1 -0
  312. package/dist/production/src/treeParameters/TreeParameterMerger.js +282 -0
  313. package/dist/production/src/treeParameters/TreeParameterMerger.js.map +1 -0
  314. package/dist/production/src/treeParameters/defaults.cjs +24 -0
  315. package/dist/production/src/treeParameters/defaults.cjs.map +1 -0
  316. package/dist/production/src/treeParameters/defaults.js +24 -0
  317. package/dist/production/src/treeParameters/defaults.js.map +1 -0
  318. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.cjs +22 -0
  319. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -0
  320. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.js +22 -0
  321. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -0
  322. package/dist/production/src/types/EntityAccessor.cjs +5 -0
  323. package/dist/production/src/types/EntityAccessor.cjs.map +1 -0
  324. package/dist/production/src/types/EntityAccessor.js +5 -0
  325. package/dist/production/src/types/EntityAccessor.js.map +1 -0
  326. package/dist/production/src/types/EntityListAccessor.cjs +5 -0
  327. package/dist/production/src/types/EntityListAccessor.cjs.map +1 -0
  328. package/dist/production/src/types/EntityListAccessor.js +5 -0
  329. package/dist/production/src/types/EntityListAccessor.js.map +1 -0
  330. package/dist/production/src/types/ErrorAccessor.cjs +11 -0
  331. package/dist/production/src/types/ErrorAccessor.cjs.map +1 -0
  332. package/dist/production/src/types/ErrorAccessor.js +12 -0
  333. package/dist/production/src/types/ErrorAccessor.js.map +1 -0
  334. package/dist/production/src/types/FieldAccessor.cjs +5 -0
  335. package/dist/production/src/types/FieldAccessor.cjs.map +1 -0
  336. package/dist/production/src/types/FieldAccessor.js +5 -0
  337. package/dist/production/src/types/FieldAccessor.js.map +1 -0
  338. package/dist/production/src/types/TreeRootAccessor.cjs +14 -0
  339. package/dist/production/src/types/TreeRootAccessor.cjs.map +1 -0
  340. package/dist/production/src/types/TreeRootAccessor.js +14 -0
  341. package/dist/production/src/types/TreeRootAccessor.js.map +1 -0
  342. package/dist/production/src/utils/Hashing.cjs +22 -0
  343. package/dist/production/src/utils/Hashing.cjs.map +1 -0
  344. package/dist/production/src/utils/Hashing.js +22 -0
  345. package/dist/production/src/utils/Hashing.js.map +1 -0
  346. package/dist/production/src/utils/TreeNodeUtils.cjs +77 -0
  347. package/dist/production/src/utils/TreeNodeUtils.cjs.map +1 -0
  348. package/dist/production/src/utils/TreeNodeUtils.js +77 -0
  349. package/dist/production/src/utils/TreeNodeUtils.js.map +1 -0
  350. package/dist/production/src/utils/assertNever.cjs +10 -0
  351. package/dist/production/src/utils/assertNever.cjs.map +1 -0
  352. package/dist/production/src/utils/assertNever.js +10 -0
  353. package/dist/production/src/utils/assertNever.js.map +1 -0
  354. package/dist/production/src/utils/createQueryBuilder.cjs +32 -0
  355. package/dist/production/src/utils/createQueryBuilder.cjs.map +1 -0
  356. package/dist/production/src/utils/createQueryBuilder.js +32 -0
  357. package/dist/production/src/utils/createQueryBuilder.js.map +1 -0
  358. package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.cjs +7 -0
  359. package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.cjs.map +1 -0
  360. package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.js +7 -0
  361. package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.js.map +1 -0
  362. package/dist/types/BindingError.d.ts +4 -0
  363. package/dist/types/BindingError.d.ts.map +1 -0
  364. package/dist/types/DataBindingExtendAborted.d.ts +2 -0
  365. package/dist/types/DataBindingExtendAborted.d.ts.map +1 -0
  366. package/dist/types/LocalizedBindingError.d.ts +8 -0
  367. package/dist/types/LocalizedBindingError.d.ts.map +1 -0
  368. package/dist/types/RuntimeId.d.ts +35 -0
  369. package/dist/types/RuntimeId.d.ts.map +1 -0
  370. package/dist/types/consts.d.ts +4 -0
  371. package/dist/types/consts.d.ts.map +1 -0
  372. package/dist/types/environment/Environment.d.ts +108 -0
  373. package/dist/types/environment/Environment.d.ts.map +1 -0
  374. package/dist/types/environment/TreeNodeEnvironmentFactory.d.ts +15 -0
  375. package/dist/types/environment/TreeNodeEnvironmentFactory.d.ts.map +1 -0
  376. package/dist/types/environment/VariableFieldValue.d.ts +5 -0
  377. package/dist/types/environment/VariableFieldValue.d.ts.map +1 -0
  378. package/dist/types/environment/VariableInputTransformer.d.ts +8 -0
  379. package/dist/types/environment/VariableInputTransformer.d.ts.map +1 -0
  380. package/dist/types/environment/index.d.ts +5 -0
  381. package/dist/types/environment/index.d.ts.map +1 -0
  382. package/dist/types/index.d.ts +16 -0
  383. package/dist/types/index.d.ts.map +1 -0
  384. package/dist/types/markers/EntityFieldMarkers.d.ts +7 -0
  385. package/dist/types/markers/EntityFieldMarkers.d.ts.map +1 -0
  386. package/dist/types/markers/EntityFieldMarkersContainer.d.ts +10 -0
  387. package/dist/types/markers/EntityFieldMarkersContainer.d.ts.map +1 -0
  388. package/dist/types/markers/EntityFieldPlaceholders.d.ts +3 -0
  389. package/dist/types/markers/EntityFieldPlaceholders.d.ts.map +1 -0
  390. package/dist/types/markers/EntityFieldsWithHoistablesMarker.d.ts +10 -0
  391. package/dist/types/markers/EntityFieldsWithHoistablesMarker.d.ts.map +1 -0
  392. package/dist/types/markers/EntityListSubTreeMarker.d.ts +12 -0
  393. package/dist/types/markers/EntityListSubTreeMarker.d.ts.map +1 -0
  394. package/dist/types/markers/EntitySubTreeMarker.d.ts +12 -0
  395. package/dist/types/markers/EntitySubTreeMarker.d.ts.map +1 -0
  396. package/dist/types/markers/FieldMarker.d.ts +15 -0
  397. package/dist/types/markers/FieldMarker.d.ts.map +1 -0
  398. package/dist/types/markers/HasManyRelationMarker.d.ts +12 -0
  399. package/dist/types/markers/HasManyRelationMarker.d.ts.map +1 -0
  400. package/dist/types/markers/HasOneRelationMarker.d.ts +12 -0
  401. package/dist/types/markers/HasOneRelationMarker.d.ts.map +1 -0
  402. package/dist/types/markers/MarkerComparator.d.ts +8 -0
  403. package/dist/types/markers/MarkerComparator.d.ts.map +1 -0
  404. package/dist/types/markers/MarkerMerger.d.ts +22 -0
  405. package/dist/types/markers/MarkerMerger.d.ts.map +1 -0
  406. package/dist/types/markers/MarkerTreeRoot.d.ts +8 -0
  407. package/dist/types/markers/MarkerTreeRoot.d.ts.map +1 -0
  408. package/dist/types/markers/MeaningfulMarker.d.ts +7 -0
  409. package/dist/types/markers/MeaningfulMarker.d.ts.map +1 -0
  410. package/dist/types/markers/PlaceholderGenerator.d.ts +10 -0
  411. package/dist/types/markers/PlaceholderGenerator.d.ts.map +1 -0
  412. package/dist/types/markers/PlaceholderParametersGenerator.d.ts +9 -0
  413. package/dist/types/markers/PlaceholderParametersGenerator.d.ts.map +1 -0
  414. package/dist/types/markers/SubTreeMarkers.d.ts +5 -0
  415. package/dist/types/markers/SubTreeMarkers.d.ts.map +1 -0
  416. package/dist/types/markers/index.d.ts +17 -0
  417. package/dist/types/markers/index.d.ts.map +1 -0
  418. package/dist/types/queryLanguage/CacheStore.d.ts +9 -0
  419. package/dist/types/queryLanguage/CacheStore.d.ts.map +1 -0
  420. package/dist/types/queryLanguage/MarkerFactory.d.ts +21 -0
  421. package/dist/types/queryLanguage/MarkerFactory.d.ts.map +1 -0
  422. package/dist/types/queryLanguage/Parser.d.ts +83 -0
  423. package/dist/types/queryLanguage/Parser.d.ts.map +1 -0
  424. package/dist/types/queryLanguage/ParserResults.d.ts +63 -0
  425. package/dist/types/queryLanguage/ParserResults.d.ts.map +1 -0
  426. package/dist/types/queryLanguage/QueryLanguage.d.ts +42 -0
  427. package/dist/types/queryLanguage/QueryLanguage.d.ts.map +1 -0
  428. package/dist/types/queryLanguage/QueryLanguageError.d.ts +3 -0
  429. package/dist/types/queryLanguage/QueryLanguageError.d.ts.map +1 -0
  430. package/dist/types/queryLanguage/index.d.ts +6 -0
  431. package/dist/types/queryLanguage/index.d.ts.map +1 -0
  432. package/dist/types/queryLanguage/tokenList.d.ts +36 -0
  433. package/dist/types/queryLanguage/tokenList.d.ts.map +1 -0
  434. package/dist/types/schema/RawSchema.d.ts +7 -0
  435. package/dist/types/schema/RawSchema.d.ts.map +1 -0
  436. package/dist/types/schema/RawSchemaEntity.d.ts +13 -0
  437. package/dist/types/schema/RawSchemaEntity.d.ts.map +1 -0
  438. package/dist/types/schema/RawSchemaEnum.d.ts +6 -0
  439. package/dist/types/schema/RawSchemaEnum.d.ts.map +1 -0
  440. package/dist/types/schema/Schema.d.ts +20 -0
  441. package/dist/types/schema/Schema.d.ts.map +1 -0
  442. package/dist/types/schema/SchemaColumn.d.ts +12 -0
  443. package/dist/types/schema/SchemaColumn.d.ts.map +1 -0
  444. package/dist/types/schema/SchemaColumnType.d.ts +3 -0
  445. package/dist/types/schema/SchemaColumnType.d.ts.map +1 -0
  446. package/dist/types/schema/SchemaEntities.d.ts +4 -0
  447. package/dist/types/schema/SchemaEntities.d.ts.map +1 -0
  448. package/dist/types/schema/SchemaEntity.d.ts +10 -0
  449. package/dist/types/schema/SchemaEntity.d.ts.map +1 -0
  450. package/dist/types/schema/SchemaEnums.d.ts +4 -0
  451. package/dist/types/schema/SchemaEnums.d.ts.map +1 -0
  452. package/dist/types/schema/SchemaField.d.ts +4 -0
  453. package/dist/types/schema/SchemaField.d.ts.map +1 -0
  454. package/dist/types/schema/SchemaFields.d.ts +4 -0
  455. package/dist/types/schema/SchemaFields.d.ts.map +1 -0
  456. package/dist/types/schema/SchemaLoader.d.ts +8 -0
  457. package/dist/types/schema/SchemaLoader.d.ts.map +1 -0
  458. package/dist/types/schema/SchemaPreprocessor.d.ts +9 -0
  459. package/dist/types/schema/SchemaPreprocessor.d.ts.map +1 -0
  460. package/dist/types/schema/SchemaRelation.d.ts +24 -0
  461. package/dist/types/schema/SchemaRelation.d.ts.map +1 -0
  462. package/dist/types/schema/SchemaRelationOrderBy.d.ts +5 -0
  463. package/dist/types/schema/SchemaRelationOrderBy.d.ts.map +1 -0
  464. package/dist/types/schema/SchemaStore.d.ts +7 -0
  465. package/dist/types/schema/SchemaStore.d.ts.map +1 -0
  466. package/dist/types/schema/SchemaUniqueConstraint.d.ts +5 -0
  467. package/dist/types/schema/SchemaUniqueConstraint.d.ts.map +1 -0
  468. package/dist/types/schema/index.d.ts +16 -0
  469. package/dist/types/schema/index.d.ts.map +1 -0
  470. package/dist/types/treeParameters/EventListenersStore.d.ts +36 -0
  471. package/dist/types/treeParameters/EventListenersStore.d.ts.map +1 -0
  472. package/dist/types/treeParameters/Normalized.d.ts +113 -0
  473. package/dist/types/treeParameters/Normalized.d.ts.map +1 -0
  474. package/dist/types/treeParameters/Sugared.d.ts +139 -0
  475. package/dist/types/treeParameters/Sugared.d.ts.map +1 -0
  476. package/dist/types/treeParameters/TreeParameterMerger.d.ts +17 -0
  477. package/dist/types/treeParameters/TreeParameterMerger.d.ts.map +1 -0
  478. package/dist/types/treeParameters/defaults.d.ts +16 -0
  479. package/dist/types/treeParameters/defaults.d.ts.map +1 -0
  480. package/dist/types/treeParameters/helpers/index.d.ts +2 -0
  481. package/dist/types/treeParameters/helpers/index.d.ts.map +1 -0
  482. package/dist/types/treeParameters/helpers/wrapFilterInHasOnes.d.ts +3 -0
  483. package/dist/types/treeParameters/helpers/wrapFilterInHasOnes.d.ts.map +1 -0
  484. package/dist/types/treeParameters/index.d.ts +12 -0
  485. package/dist/types/treeParameters/index.d.ts.map +1 -0
  486. package/dist/types/treeParameters/primitives/Alias.d.ts +2 -0
  487. package/dist/types/treeParameters/primitives/Alias.d.ts.map +1 -0
  488. package/dist/types/treeParameters/primitives/EntityId.d.ts +2 -0
  489. package/dist/types/treeParameters/primitives/EntityId.d.ts.map +1 -0
  490. package/dist/types/treeParameters/primitives/EntityName.d.ts +2 -0
  491. package/dist/types/treeParameters/primitives/EntityName.d.ts.map +1 -0
  492. package/dist/types/treeParameters/primitives/EntityRealmKey.d.ts +2 -0
  493. package/dist/types/treeParameters/primitives/EntityRealmKey.d.ts.map +1 -0
  494. package/dist/types/treeParameters/primitives/ExpectedEntityCount.d.ts +2 -0
  495. package/dist/types/treeParameters/primitives/ExpectedEntityCount.d.ts.map +1 -0
  496. package/dist/types/treeParameters/primitives/ExpectedQualifiedEntityMutation.d.ts +2 -0
  497. package/dist/types/treeParameters/primitives/ExpectedQualifiedEntityMutation.d.ts.map +1 -0
  498. package/dist/types/treeParameters/primitives/ExpectedRelationMutation.d.ts +2 -0
  499. package/dist/types/treeParameters/primitives/ExpectedRelationMutation.d.ts.map +1 -0
  500. package/dist/types/treeParameters/primitives/FieldName.d.ts +2 -0
  501. package/dist/types/treeParameters/primitives/FieldName.d.ts.map +1 -0
  502. package/dist/types/treeParameters/primitives/FieldValue.d.ts +5 -0
  503. package/dist/types/treeParameters/primitives/FieldValue.d.ts.map +1 -0
  504. package/dist/types/treeParameters/primitives/Filter.d.ts +4 -0
  505. package/dist/types/treeParameters/primitives/Filter.d.ts.map +1 -0
  506. package/dist/types/treeParameters/primitives/Json.d.ts +7 -0
  507. package/dist/types/treeParameters/primitives/Json.d.ts.map +1 -0
  508. package/dist/types/treeParameters/primitives/Limit.d.ts +2 -0
  509. package/dist/types/treeParameters/primitives/Limit.d.ts.map +1 -0
  510. package/dist/types/treeParameters/primitives/Offset.d.ts +2 -0
  511. package/dist/types/treeParameters/primitives/Offset.d.ts.map +1 -0
  512. package/dist/types/treeParameters/primitives/OrderBy.d.ts +4 -0
  513. package/dist/types/treeParameters/primitives/OrderBy.d.ts.map +1 -0
  514. package/dist/types/treeParameters/primitives/PlaceholderName.d.ts +2 -0
  515. package/dist/types/treeParameters/primitives/PlaceholderName.d.ts.map +1 -0
  516. package/dist/types/treeParameters/primitives/RemovalType.d.ts +2 -0
  517. package/dist/types/treeParameters/primitives/RemovalType.d.ts.map +1 -0
  518. package/dist/types/treeParameters/primitives/Scalar.d.ts +2 -0
  519. package/dist/types/treeParameters/primitives/Scalar.d.ts.map +1 -0
  520. package/dist/types/treeParameters/primitives/SetOnCreate.d.ts +4 -0
  521. package/dist/types/treeParameters/primitives/SetOnCreate.d.ts.map +1 -0
  522. package/dist/types/treeParameters/primitives/TreeRootId.d.ts +2 -0
  523. package/dist/types/treeParameters/primitives/TreeRootId.d.ts.map +1 -0
  524. package/dist/types/treeParameters/primitives/UniqueWhere.d.ts +4 -0
  525. package/dist/types/treeParameters/primitives/UniqueWhere.d.ts.map +1 -0
  526. package/dist/types/treeParameters/primitives/index.d.ts +21 -0
  527. package/dist/types/treeParameters/primitives/index.d.ts.map +1 -0
  528. package/dist/types/tsconfig.tsbuildinfo +1 -0
  529. package/dist/types/types/AsyncBatchUpdatesOptions.d.ts +8 -0
  530. package/dist/types/types/AsyncBatchUpdatesOptions.d.ts.map +1 -0
  531. package/dist/types/types/BatchUpdatesOptions.d.ts +9 -0
  532. package/dist/types/types/BatchUpdatesOptions.d.ts.map +1 -0
  533. package/dist/types/types/BindingOperations.d.ts +24 -0
  534. package/dist/types/types/BindingOperations.d.ts.map +1 -0
  535. package/dist/types/types/DataBindingTransactionResult.d.ts +4 -0
  536. package/dist/types/types/DataBindingTransactionResult.d.ts.map +1 -0
  537. package/dist/types/types/EntityAccessor.d.ts +77 -0
  538. package/dist/types/types/EntityAccessor.d.ts.map +1 -0
  539. package/dist/types/types/EntityListAccessor.d.ts +84 -0
  540. package/dist/types/types/EntityListAccessor.d.ts.map +1 -0
  541. package/dist/types/types/ErrorAccessor.d.ts +30 -0
  542. package/dist/types/types/ErrorAccessor.d.ts.map +1 -0
  543. package/dist/types/types/Errorable.d.ts +5 -0
  544. package/dist/types/types/Errorable.d.ts.map +1 -0
  545. package/dist/types/types/ExtendTree.d.ts +9 -0
  546. package/dist/types/types/ExtendTree.d.ts.map +1 -0
  547. package/dist/types/types/FieldAccessor.d.ts +49 -0
  548. package/dist/types/types/FieldAccessor.d.ts.map +1 -0
  549. package/dist/types/types/GetEntityByKey.d.ts +3 -0
  550. package/dist/types/types/GetEntityByKey.d.ts.map +1 -0
  551. package/dist/types/types/GetEntityListSubTree.d.ts +5 -0
  552. package/dist/types/types/GetEntityListSubTree.d.ts.map +1 -0
  553. package/dist/types/types/GetEntitySubTree.d.ts +5 -0
  554. package/dist/types/types/GetEntitySubTree.d.ts.map +1 -0
  555. package/dist/types/types/Persist.d.ts +10 -0
  556. package/dist/types/types/Persist.d.ts.map +1 -0
  557. package/dist/types/types/PersistErrorOptions.d.ts +4 -0
  558. package/dist/types/types/PersistErrorOptions.d.ts.map +1 -0
  559. package/dist/types/types/PersistResult.d.ts +23 -0
  560. package/dist/types/types/PersistResult.d.ts.map +1 -0
  561. package/dist/types/types/PersistSuccessOptions.d.ts +5 -0
  562. package/dist/types/types/PersistSuccessOptions.d.ts.map +1 -0
  563. package/dist/types/types/QueryRequestResponse.d.ts +20 -0
  564. package/dist/types/types/QueryRequestResponse.d.ts.map +1 -0
  565. package/dist/types/types/TreeRootAccessor.d.ts +11 -0
  566. package/dist/types/types/TreeRootAccessor.d.ts.map +1 -0
  567. package/dist/types/types/index.d.ts +20 -0
  568. package/dist/types/types/index.d.ts.map +1 -0
  569. package/dist/types/utils/Hashing.d.ts +5 -0
  570. package/dist/types/utils/Hashing.d.ts.map +1 -0
  571. package/dist/types/utils/TreeNodeUtils.d.ts +13 -0
  572. package/dist/types/utils/TreeNodeUtils.d.ts.map +1 -0
  573. package/dist/types/utils/assertNever.d.ts +2 -0
  574. package/dist/types/utils/assertNever.d.ts.map +1 -0
  575. package/dist/types/utils/createQueryBuilder.d.ts +4 -0
  576. package/dist/types/utils/createQueryBuilder.d.ts.map +1 -0
  577. package/dist/types/utils/generateEnumerabilityPreventingEntropy.d.ts +2 -0
  578. package/dist/types/utils/generateEnumerabilityPreventingEntropy.d.ts.map +1 -0
  579. package/package.json +50 -0
  580. package/src/BindingError.ts +5 -0
  581. package/src/DataBindingExtendAborted.ts +1 -0
  582. package/src/LocalizedBindingError.ts +20 -0
  583. package/src/RuntimeId.ts +70 -0
  584. package/src/consts.ts +3 -0
  585. package/src/environment/Environment.ts +346 -0
  586. package/src/environment/TreeNodeEnvironmentFactory.ts +137 -0
  587. package/src/environment/VariableFieldValue.ts +3 -0
  588. package/src/environment/VariableInputTransformer.ts +27 -0
  589. package/src/environment/index.ts +4 -0
  590. package/src/index.ts +17 -0
  591. package/src/markers/EntityFieldMarkers.ts +7 -0
  592. package/src/markers/EntityFieldMarkersContainer.ts +10 -0
  593. package/src/markers/EntityFieldPlaceholders.ts +3 -0
  594. package/src/markers/EntityFieldsWithHoistablesMarker.ts +11 -0
  595. package/src/markers/EntityListSubTreeMarker.ts +20 -0
  596. package/src/markers/EntitySubTreeMarker.ts +20 -0
  597. package/src/markers/FieldMarker.ts +29 -0
  598. package/src/markers/HasManyRelationMarker.ts +27 -0
  599. package/src/markers/HasOneRelationMarker.ts +21 -0
  600. package/src/markers/MarkerComparator.ts +102 -0
  601. package/src/markers/MarkerMerger.ts +300 -0
  602. package/src/markers/MarkerTreeRoot.ts +9 -0
  603. package/src/markers/MeaningfulMarker.ts +12 -0
  604. package/src/markers/PlaceholderGenerator.ts +40 -0
  605. package/src/markers/PlaceholderParametersGenerator.ts +79 -0
  606. package/src/markers/SubTreeMarkers.ts +5 -0
  607. package/src/markers/index.ts +17 -0
  608. package/src/queryLanguage/CacheStore.ts +57 -0
  609. package/src/queryLanguage/MarkerFactory.ts +319 -0
  610. package/src/queryLanguage/Parser.ts +911 -0
  611. package/src/queryLanguage/ParserResults.ts +81 -0
  612. package/src/queryLanguage/QueryLanguage.ts +751 -0
  613. package/src/queryLanguage/QueryLanguageError.ts +1 -0
  614. package/src/queryLanguage/index.ts +5 -0
  615. package/src/queryLanguage/tokenList.ts +177 -0
  616. package/src/schema/RawSchema.ts +7 -0
  617. package/src/schema/RawSchemaEntity.ts +12 -0
  618. package/src/schema/RawSchemaEnum.ts +6 -0
  619. package/src/schema/Schema.ts +46 -0
  620. package/src/schema/SchemaColumn.ts +15 -0
  621. package/src/schema/SchemaColumnType.ts +3 -0
  622. package/src/schema/SchemaEntities.ts +4 -0
  623. package/src/schema/SchemaEntity.ts +10 -0
  624. package/src/schema/SchemaEnums.ts +3 -0
  625. package/src/schema/SchemaField.ts +4 -0
  626. package/src/schema/SchemaFields.ts +4 -0
  627. package/src/schema/SchemaLoader.ts +64 -0
  628. package/src/schema/SchemaPreprocessor.ts +51 -0
  629. package/src/schema/SchemaRelation.ts +29 -0
  630. package/src/schema/SchemaRelationOrderBy.ts +4 -0
  631. package/src/schema/SchemaStore.ts +8 -0
  632. package/src/schema/SchemaUniqueConstraint.ts +5 -0
  633. package/src/schema/index.ts +15 -0
  634. package/src/treeParameters/EventListenersStore.ts +105 -0
  635. package/src/treeParameters/Normalized.ts +168 -0
  636. package/src/treeParameters/Sugared.ts +228 -0
  637. package/src/treeParameters/TreeParameterMerger.ts +352 -0
  638. package/src/treeParameters/defaults.ts +33 -0
  639. package/src/treeParameters/helpers/index.ts +1 -0
  640. package/src/treeParameters/helpers/wrapFilterInHasOnes.ts +21 -0
  641. package/src/treeParameters/index.ts +14 -0
  642. package/src/treeParameters/primitives/Alias.ts +1 -0
  643. package/src/treeParameters/primitives/EntityId.ts +2 -0
  644. package/src/treeParameters/primitives/EntityName.ts +4 -0
  645. package/src/treeParameters/primitives/EntityRealmKey.ts +2 -0
  646. package/src/treeParameters/primitives/ExpectedEntityCount.ts +1 -0
  647. package/src/treeParameters/primitives/ExpectedQualifiedEntityMutation.ts +1 -0
  648. package/src/treeParameters/primitives/ExpectedRelationMutation.ts +1 -0
  649. package/src/treeParameters/primitives/FieldName.ts +7 -0
  650. package/src/treeParameters/primitives/FieldValue.ts +6 -0
  651. package/src/treeParameters/primitives/Filter.ts +7 -0
  652. package/src/treeParameters/primitives/Json.ts +7 -0
  653. package/src/treeParameters/primitives/Limit.ts +1 -0
  654. package/src/treeParameters/primitives/Offset.ts +1 -0
  655. package/src/treeParameters/primitives/OrderBy.ts +6 -0
  656. package/src/treeParameters/primitives/PlaceholderName.ts +4 -0
  657. package/src/treeParameters/primitives/RemovalType.ts +1 -0
  658. package/src/treeParameters/primitives/Scalar.ts +1 -0
  659. package/src/treeParameters/primitives/SetOnCreate.ts +8 -0
  660. package/src/treeParameters/primitives/TreeRootId.ts +1 -0
  661. package/src/treeParameters/primitives/UniqueWhere.ts +7 -0
  662. package/src/treeParameters/primitives/index.ts +20 -0
  663. package/src/tsconfig.json +14 -0
  664. package/src/types/AsyncBatchUpdatesOptions.ts +8 -0
  665. package/src/types/BatchUpdatesOptions.ts +9 -0
  666. package/src/types/BindingOperations.ts +26 -0
  667. package/src/types/DataBindingTransactionResult.ts +4 -0
  668. package/src/types/EntityAccessor.ts +126 -0
  669. package/src/types/EntityListAccessor.ts +123 -0
  670. package/src/types/ErrorAccessor.ts +43 -0
  671. package/src/types/Errorable.ts +5 -0
  672. package/src/types/ExtendTree.ts +10 -0
  673. package/src/types/FieldAccessor.ts +74 -0
  674. package/src/types/GetEntityByKey.ts +3 -0
  675. package/src/types/GetEntityListSubTree.ts +14 -0
  676. package/src/types/GetEntitySubTree.ts +14 -0
  677. package/src/types/Persist.ts +11 -0
  678. package/src/types/PersistErrorOptions.ts +5 -0
  679. package/src/types/PersistResult.ts +28 -0
  680. package/src/types/PersistSuccessOptions.ts +5 -0
  681. package/src/types/QueryRequestResponse.ts +23 -0
  682. package/src/types/TreeRootAccessor.ts +14 -0
  683. package/src/types/index.ts +19 -0
  684. package/src/utils/Hashing.ts +20 -0
  685. package/src/utils/TreeNodeUtils.ts +92 -0
  686. package/src/utils/assertNever.ts +7 -0
  687. package/src/utils/createQueryBuilder.ts +31 -0
  688. package/src/utils/generateEnumerabilityPreventingEntropy.ts +3 -0
  689. package/tests/cases/unit/queryLanguage/filter.spec.tsx +100 -0
  690. package/tests/cases/unit/queryLanguage/general.spec.tsx +59 -0
  691. package/tests/cases/unit/queryLanguage/orderBy.spec.tsx +48 -0
  692. package/tests/cases/unit/queryLanguage/qualifiedEntityList.spec.tsx +30 -0
  693. package/tests/cases/unit/queryLanguage/qualifiedFieldList.spec.tsx +29 -0
  694. package/tests/cases/unit/queryLanguage/relativeEntityList.spec.tsx +49 -0
  695. package/tests/cases/unit/queryLanguage/singleRelativeField.spec.tsx +132 -0
  696. package/tests/cases/unit/queryLanguage/taggedMap.spec.tsx +41 -0
  697. package/tests/tsconfig.json +10 -0
  698. package/tsconfig.json +8 -0
  699. package/tsdoc.json +6 -0
@@ -0,0 +1,126 @@
1
+ import { Environment } from '../environment'
2
+ import { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker } from '../markers'
3
+ import type {
4
+ EntityId,
5
+ EntityName,
6
+ EntityRealmKey,
7
+ FieldName,
8
+ FieldValue,
9
+ RelativeEntityList,
10
+ RelativeSingleEntity,
11
+ RelativeSingleField,
12
+ SugaredRelativeEntityList,
13
+ SugaredRelativeSingleEntity,
14
+ SugaredRelativeSingleField,
15
+ } from '../treeParameters'
16
+ import type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'
17
+ import type { BatchUpdatesOptions } from './BatchUpdatesOptions'
18
+ import { EntityListAccessor } from './EntityListAccessor'
19
+ import type { Errorable } from './Errorable'
20
+ import { ErrorAccessor } from './ErrorAccessor'
21
+ import type { FieldAccessor } from './FieldAccessor'
22
+ import type { PersistErrorOptions } from './PersistErrorOptions'
23
+ import type { PersistSuccessOptions } from './PersistSuccessOptions'
24
+
25
+ export const isEntityAccessor = (accessor: unknown): accessor is EntityAccessor =>
26
+ accessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityAccessor'
27
+
28
+ interface EntityAccessor extends Errorable {
29
+ readonly __type: 'EntityAccessor'
30
+ /**
31
+ * The key is a unique identifier of the entity. It is not the id of the entity.
32
+ */
33
+ readonly key?: EntityRealmKey
34
+ readonly name: EntityName
35
+ readonly hasUnpersistedChanges: boolean
36
+ readonly errors: ErrorAccessor | undefined
37
+ readonly environment: Environment
38
+ readonly getAccessor: EntityAccessor.GetEntityAccessor
39
+ readonly idOnServer: EntityId | undefined
40
+ readonly id: EntityId
41
+ readonly existsOnServer: boolean
42
+
43
+ addError: ErrorAccessor.AddError
44
+
45
+ addEventListener: EntityAccessor.AddEventListener
46
+
47
+ batchUpdates(performUpdates: EntityAccessor.BatchUpdatesHandler): void
48
+
49
+ connectEntityAtField(field: SugaredRelativeSingleEntity | string, entityToConnect: EntityAccessor): void
50
+
51
+ disconnectEntityAtField(field: SugaredRelativeSingleEntity | string, initializeReplacement?: EntityAccessor.BatchUpdatesHandler): void
52
+
53
+ deleteEntity(): void
54
+
55
+ updateValues(fieldValuePairs: EntityAccessor.FieldValuePairs): void
56
+
57
+ /**
58
+ * Please keep in mind that this method signature is literally impossible to implement safely. The generic parameter
59
+ * is really just a way to succinctly write a type cast. Nothing more, really.
60
+ */
61
+ getField<Value extends FieldValue = FieldValue>(field: SugaredRelativeSingleField | string | RelativeSingleField): FieldAccessor<Value>
62
+
63
+ getEntity(entity: SugaredRelativeSingleEntity | string | RelativeSingleEntity): EntityAccessor
64
+
65
+ getEntityList(entityList: SugaredRelativeEntityList | string | RelativeEntityList): EntityListAccessor
66
+
67
+ getParent(): EntityAccessor | EntityListAccessor | undefined
68
+
69
+ getMarker(): HasManyRelationMarker | HasOneRelationMarker | EntitySubTreeMarker | EntityListSubTreeMarker
70
+ }
71
+
72
+ namespace EntityAccessor {
73
+ export interface FieldDatum {
74
+ getAccessor(): NestedAccessor
75
+ }
76
+ export type NestedAccessor = EntityAccessor | EntityListAccessor | FieldAccessor<any>
77
+
78
+ export type FieldValuePairs =
79
+ | {
80
+ [field: string]: FieldValue
81
+ }
82
+ | Iterable<[SugaredRelativeSingleField | string, FieldValue]>
83
+
84
+ export type FieldData = Map<FieldName, FieldDatum>
85
+
86
+ export type GetEntityAccessor = () => EntityAccessor
87
+ export type BatchUpdatesHandler = (getAccessor: GetEntityAccessor, options: BatchUpdatesOptions) => void
88
+ export type UpdateListener = (accessor: EntityAccessor) => void
89
+
90
+ export type BeforePersistHandler = (
91
+ getAccessor: GetEntityAccessor,
92
+ options: AsyncBatchUpdatesOptions,
93
+ ) => void | BeforePersistHandler | Promise<void | BeforePersistHandler>
94
+
95
+ export type PersistErrorHandler = (
96
+ getAccessor: GetEntityAccessor,
97
+ options: PersistErrorOptions,
98
+ ) => void | Promise<void>
99
+
100
+ export type PersistSuccessHandler = (
101
+ getAccessor: GetEntityAccessor,
102
+ options: PersistSuccessOptions,
103
+ ) => void | PersistSuccessHandler | Promise<void | PersistSuccessHandler>
104
+
105
+ export type RuntimeEntityEventListenerMap = {
106
+ beforePersist: BeforePersistHandler
107
+ beforeUpdate: BatchUpdatesHandler
108
+ connectionUpdate: UpdateListener
109
+ persistError: PersistErrorHandler
110
+ persistSuccess: PersistSuccessHandler
111
+ update: UpdateListener
112
+ }
113
+ export type EntityEventListenerMap =
114
+ & RuntimeEntityEventListenerMap
115
+ & {
116
+ initialize: BatchUpdatesHandler
117
+ }
118
+ export type EntityEventType = keyof EntityEventListenerMap
119
+
120
+ export type AddEventListener = <Type extends keyof EntityAccessor.RuntimeEntityEventListenerMap>(
121
+ event: { type: Type; key?: string },
122
+ listener: EntityAccessor.EntityEventListenerMap[Type],
123
+ ) => () => void
124
+ }
125
+
126
+ export type { EntityAccessor }
@@ -0,0 +1,123 @@
1
+ import type { Environment } from '../environment'
2
+ import type { EntityId, EntityName, EntityRealmKey } from '../treeParameters'
3
+ import type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'
4
+ import type { BatchUpdatesOptions } from './BatchUpdatesOptions'
5
+ import type { EntityAccessor } from './EntityAccessor'
6
+ import type { Errorable } from './Errorable'
7
+ import { ErrorAccessor } from './ErrorAccessor'
8
+ import type { PersistErrorOptions } from './PersistErrorOptions'
9
+ import type { PersistSuccessOptions } from './PersistSuccessOptions'
10
+ import { RuntimeId } from '../RuntimeId'
11
+ import { EntityListSubTreeMarker, HasManyRelationMarker } from '../markers'
12
+
13
+ export const isEntityListAccessor = (accessor: unknown): accessor is EntityListAccessor =>
14
+ accessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'EntityListAccessor'
15
+
16
+ interface EntityListAccessor extends Errorable {
17
+ readonly __type: 'EntityListAccessor'
18
+ readonly name: EntityName
19
+ readonly hasUnpersistedChanges: boolean
20
+ readonly errors: ErrorAccessor | undefined
21
+ readonly environment: Environment
22
+ readonly getAccessor: EntityListAccessor.GetEntityListAccessor
23
+
24
+ /**
25
+ * Returns all entity keys that are on the list.
26
+ * **KEYS ARE NOT IDS!**
27
+ * @see EntityAccessor.key
28
+ */
29
+ keys(): IterableIterator<EntityRealmKey>
30
+
31
+ ids(): IterableIterator<EntityId>
32
+
33
+ /**
34
+ * This will only contain the ids that the server knows about. Not necessarily the ids that have been added on
35
+ * the list since the last server query.
36
+ */
37
+ idsPersistedOnServer: Set<EntityId>
38
+
39
+ [Symbol.iterator](): IterableIterator<EntityAccessor>
40
+
41
+ hasEntityId(id: EntityId): boolean
42
+
43
+ isEmpty(): boolean
44
+
45
+ length: number
46
+
47
+ deleteAll(): void
48
+
49
+ disconnectAll(): void
50
+
51
+ addError(error: ErrorAccessor.Error | string): () => void
52
+
53
+ addEventListener: EntityListAccessor.AddEventListener
54
+
55
+ addChildEventListener: EntityListAccessor.AddChildEventListener
56
+
57
+ batchUpdates(performUpdates: EntityListAccessor.BatchUpdatesHandler): void
58
+
59
+ connectEntity(entityToConnect: EntityAccessor): void
60
+
61
+ createNewEntity(initialize?: EntityAccessor.BatchUpdatesHandler): RuntimeId
62
+ disconnectEntity(childEntity: EntityAccessor, options?: { noPersist?: boolean }): void
63
+ getChildEntityById(id: EntityId): EntityAccessor
64
+
65
+ getParent(): EntityAccessor | undefined
66
+
67
+ getMarker(): EntityListSubTreeMarker | HasManyRelationMarker
68
+ }
69
+
70
+ namespace EntityListAccessor {
71
+ export type GetEntityListAccessor = () => EntityListAccessor
72
+ export type BatchUpdatesHandler = (getAccessor: GetEntityListAccessor, options: BatchUpdatesOptions) => void
73
+
74
+ export type UpdateListener = (accessor: EntityListAccessor) => void
75
+
76
+ export type BeforePersistHandler = (
77
+ getAccessor: GetEntityListAccessor,
78
+ options: AsyncBatchUpdatesOptions,
79
+ ) => void | Promise<void | BeforePersistHandler>
80
+
81
+ export type PersistErrorHandler = (
82
+ getAccessor: GetEntityListAccessor,
83
+ options: PersistErrorOptions,
84
+ ) => void | Promise<void>
85
+
86
+ export type PersistSuccessHandler = (
87
+ getAccessor: GetEntityListAccessor,
88
+ options: PersistSuccessOptions,
89
+ ) => void | Promise<void | PersistSuccessHandler>
90
+
91
+ export type ChildEventListenerMap = {
92
+ childBeforeUpdate: EntityAccessor.BatchUpdatesHandler
93
+ childInitialize: EntityAccessor.BatchUpdatesHandler
94
+ childUpdate: EntityAccessor.UpdateListener
95
+ }
96
+
97
+ export type RuntimeEntityListEventListenerMap = {
98
+ beforePersist: BeforePersistHandler
99
+ beforeUpdate: BatchUpdatesHandler
100
+ persistError: PersistErrorHandler
101
+ persistSuccess: PersistSuccessHandler
102
+ update: UpdateListener
103
+ }
104
+ export type EntityListEventListenerMap =
105
+ & RuntimeEntityListEventListenerMap
106
+ & {
107
+ initialize: BatchUpdatesHandler
108
+ }
109
+
110
+ export type EntityListEventType = keyof EntityListEventListenerMap
111
+
112
+ export type AddEventListener = <Type extends keyof EntityListAccessor.RuntimeEntityListEventListenerMap>(
113
+ event: { type: Type; key?: string },
114
+ listener: EntityListAccessor.EntityListEventListenerMap[Type],
115
+ ) => () => void
116
+
117
+ export type AddChildEventListener = <Type extends keyof EntityAccessor.EntityEventListenerMap>(
118
+ event: { type: Type; key?: string },
119
+ listener: EntityAccessor.EntityEventListenerMap[Type],
120
+ ) => () => void
121
+ }
122
+
123
+ export { type EntityListAccessor }
@@ -0,0 +1,43 @@
1
+ import type { Result } from '@contember/client'
2
+
3
+ interface ErrorAccessor {
4
+ readonly errors: ErrorAccessor.Error[]
5
+ }
6
+
7
+ namespace ErrorAccessor {
8
+ export type ErrorId = number
9
+ export type Error = ExecutionError | ValidationError
10
+ export type ErrorsById = Map<ErrorId, Error>
11
+ export type ClearError = () => void
12
+
13
+ export type AddError = (error: ErrorAccessor.Error | string) => ClearError
14
+
15
+ export type ExecutionErrors = ExecutionError[]
16
+
17
+ export interface ExecutionError {
18
+ type: 'execution'
19
+ code: Result.ExecutionErrorType
20
+ developerMessage: string | null
21
+ }
22
+
23
+ export type ValidationErrors = ValidationError[]
24
+
25
+ export interface ValidationError {
26
+ type: 'validation'
27
+ code: WellKnownErrorCode | string | undefined
28
+ message: string
29
+ }
30
+
31
+ export type WellKnownErrorCode = 'fieldRequired'
32
+
33
+ export const normalizeError = (error: Error | string): Error => typeof error === 'string' ? {
34
+ type: 'validation',
35
+ message: error,
36
+ code: undefined,
37
+ } : error
38
+ }
39
+ export { ErrorAccessor }
40
+
41
+ export interface ErrorAccessorHolder {
42
+ readonly errors: ErrorAccessor | undefined
43
+ }
@@ -0,0 +1,5 @@
1
+ import type { ErrorAccessor } from './ErrorAccessor'
2
+
3
+ export interface Errorable {
4
+ errors: ErrorAccessor | undefined
5
+ }
@@ -0,0 +1,10 @@
1
+ import type { Environment } from '../environment'
2
+ import type { TreeRootId } from '../treeParameters'
3
+
4
+ export interface ExtendTreeOptions {
5
+ signal?: AbortSignal
6
+ environment?: Environment
7
+ force?: boolean
8
+ }
9
+
10
+ export type ExtendTree<Node> = (newFragment: Node, options?: ExtendTreeOptions) => Promise<TreeRootId | undefined>
@@ -0,0 +1,74 @@
1
+ import type { FieldName, FieldValue } from '../treeParameters'
2
+ import type { BatchUpdatesOptions } from './BatchUpdatesOptions'
3
+ import type { Errorable } from './Errorable'
4
+ import { ErrorAccessor } from './ErrorAccessor'
5
+ import type { SchemaColumn } from '../schema'
6
+ import { EntityAccessor } from './EntityAccessor'
7
+
8
+
9
+ export const isFieldAccessor = (accessor: unknown): accessor is FieldAccessor =>
10
+ accessor !== null && typeof accessor === 'object' && '__type' in accessor && accessor.__type === 'FieldAccessor'
11
+
12
+ interface FieldAccessor<Value extends FieldValue = FieldValue> extends Errorable {
13
+ readonly __type: 'FieldAccessor'
14
+ readonly fieldName: FieldName
15
+ readonly value: Value | null
16
+ readonly valueOnServer: Value | null
17
+ readonly defaultValue: Value | undefined
18
+ readonly errors: ErrorAccessor | undefined
19
+ readonly hasUnpersistedChanges: boolean
20
+ readonly getAccessor: FieldAccessor.GetFieldAccessor<Value>
21
+ readonly schema: SchemaColumn
22
+
23
+ addError(error: ErrorAccessor.Error | string): ErrorAccessor.ClearError
24
+
25
+ clearErrors(): void
26
+
27
+ addEventListener: FieldAccessor.AddEventListener<Value>
28
+
29
+ updateValue(newValue: Value | null, options?: FieldAccessor.UpdateOptions): void
30
+
31
+ isTouchedBy(agent: FieldAccessor.TouchAgent): boolean
32
+
33
+ isTouched: boolean
34
+
35
+ getParent(): EntityAccessor
36
+ }
37
+
38
+ namespace FieldAccessor {
39
+ export type TouchAgent = 'user' | (string & {})
40
+ export interface UpdateOptions {
41
+ agent?: TouchAgent
42
+ }
43
+
44
+ export type GetFieldAccessor<Value extends FieldValue = FieldValue> = () => FieldAccessor<Value>
45
+
46
+ export type BeforeUpdateListener<Value extends FieldValue = FieldValue> = (
47
+ updatedAccessor: FieldAccessor<Value>,
48
+ ) => void
49
+ export type InitializeListener<Value extends FieldValue = FieldValue> = (
50
+ getAccessor: GetFieldAccessor<Value>,
51
+ options: BatchUpdatesOptions,
52
+ ) => void
53
+ export type UpdateListener<Value extends FieldValue = FieldValue> = (accessor: FieldAccessor<Value>) => void
54
+
55
+ export type RuntimeFieldEventListenerMap<Value extends FieldValue = FieldValue> = {
56
+ beforeUpdate: BeforeUpdateListener<Value>
57
+ update: UpdateListener<Value>
58
+ }
59
+
60
+ export type FieldEventListenerMap<Value extends FieldValue = FieldValue> =
61
+ & RuntimeFieldEventListenerMap<Value>
62
+ & {
63
+ initialize: InitializeListener<Value>
64
+ }
65
+
66
+ export type FieldEventType = keyof FieldEventListenerMap
67
+
68
+ export type AddEventListener<Value extends FieldValue = FieldValue> = <Type extends FieldEventType>(
69
+ event: { type: Type; key?: string },
70
+ listener: FieldEventListenerMap<Value>[Type],
71
+ ) => () => void
72
+ }
73
+
74
+ export { type FieldAccessor }
@@ -0,0 +1,3 @@
1
+ import type { EntityAccessor } from './EntityAccessor'
2
+
3
+ export type GetEntityByKey = (key: string | (() => EntityAccessor)) => EntityAccessor
@@ -0,0 +1,14 @@
1
+ import type { Environment } from '../environment'
2
+ import type {
3
+ Alias,
4
+ SugaredQualifiedEntityList,
5
+ SugaredUnconstrainedQualifiedEntityList,
6
+ TreeRootId,
7
+ } from '../treeParameters'
8
+ import type { EntityListAccessor } from './EntityListAccessor'
9
+
10
+ export type GetEntityListSubTree = (
11
+ parametersOrAlias: Alias | SugaredQualifiedEntityList | SugaredUnconstrainedQualifiedEntityList,
12
+ treeId?: TreeRootId,
13
+ environment?: Environment,
14
+ ) => EntityListAccessor
@@ -0,0 +1,14 @@
1
+ import type { Environment } from '../environment'
2
+ import type {
3
+ Alias,
4
+ SugaredQualifiedSingleEntity,
5
+ SugaredUnconstrainedQualifiedSingleEntity,
6
+ TreeRootId,
7
+ } from '../treeParameters'
8
+ import type { EntityAccessor } from './EntityAccessor'
9
+
10
+ export type GetEntitySubTree = (
11
+ parametersOrAlias: Alias | SugaredQualifiedSingleEntity | SugaredUnconstrainedQualifiedSingleEntity,
12
+ treeId?: TreeRootId,
13
+ environment?: Environment,
14
+ ) => EntityAccessor
@@ -0,0 +1,11 @@
1
+ import type { SuccessfulPersistResult } from './PersistResult'
2
+ import type { PersistErrorOptions } from './PersistErrorOptions'
3
+ import type { PersistSuccessOptions } from './PersistSuccessOptions'
4
+
5
+ export interface PersistOptions {
6
+ signal?: AbortSignal
7
+ onPersistSuccess?: (options: PersistSuccessOptions) => void | Promise<void>
8
+ onPersistError?: (options: PersistErrorOptions) => void | Promise<void>
9
+ }
10
+
11
+ export type Persist = (options?: PersistOptions) => Promise<SuccessfulPersistResult>
@@ -0,0 +1,5 @@
1
+ import type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'
2
+
3
+
4
+ export interface PersistErrorOptions extends AsyncBatchUpdatesOptions {
5
+ }
@@ -0,0 +1,28 @@
1
+ import { ErrorAccessor } from './ErrorAccessor'
2
+ import { EntityId } from '../treeParameters'
3
+ import { DataBindingTransactionResult } from './DataBindingTransactionResult'
4
+
5
+ export interface NothingToPersistPersistResult {
6
+ type: 'nothingToPersist'
7
+ }
8
+
9
+ export interface JustSuccessPersistResult {
10
+ type: 'justSuccess'
11
+ persistedEntityIds: EntityId[]
12
+ afterPersistError?: any
13
+ }
14
+
15
+ export interface InvalidInputPersistResult {
16
+ type: 'invalidInput'
17
+ errors: ErrorAccessor.Error[]
18
+ response?: DataBindingTransactionResult
19
+ }
20
+
21
+ export interface InvalidResponseResult {
22
+ type: 'invalidResponse'
23
+ errors: any // todo
24
+ }
25
+
26
+ export type SuccessfulPersistResult = NothingToPersistPersistResult | JustSuccessPersistResult
27
+
28
+ export type ErrorPersistResult = InvalidInputPersistResult | InvalidResponseResult
@@ -0,0 +1,5 @@
1
+ import type { AsyncBatchUpdatesOptions } from './AsyncBatchUpdatesOptions'
2
+
3
+ export interface PersistSuccessOptions extends AsyncBatchUpdatesOptions {
4
+ successType: 'justSuccess' | 'nothingToPersist'
5
+ }
@@ -0,0 +1,23 @@
1
+ import type { EntityId, FieldValue } from '../treeParameters'
2
+
3
+ export type ReceivedFieldData = FieldValue | ReceivedEntityData | Array<ReceivedEntityData>
4
+
5
+ export type ReceivedEntityData =
6
+ & {
7
+ __typename: string
8
+ id: EntityId
9
+ }
10
+ & {
11
+ [fieldName: string]: ReceivedFieldData
12
+ }
13
+
14
+ export type ReceivedData = ReceivedEntityData | ReceivedEntityData[]
15
+
16
+ export interface ReceivedDataTree {
17
+ [treeId: string]: ReceivedData | null
18
+ }
19
+
20
+ export interface QueryRequestResponse {
21
+ data: ReceivedDataTree
22
+ errors?: { message: string; path?: string[] }[]
23
+ }
@@ -0,0 +1,14 @@
1
+ import type { BindingOperations } from './BindingOperations'
2
+
3
+ // This allows us to have several parallel sub-trees without one having to be the main tree
4
+ // and all the other ones subordinate.
5
+ export class TreeRootAccessor<Node> {
6
+ /**
7
+ * Whenever an update occurs, a new instance of this class is created.
8
+ */
9
+ public constructor(
10
+ public readonly hasUnpersistedChanges: boolean,
11
+ public readonly isMutating: boolean,
12
+ public readonly bindingOperations: BindingOperations<Node>,
13
+ ) {}
14
+ }
@@ -0,0 +1,19 @@
1
+ export * from './AsyncBatchUpdatesOptions'
2
+ export * from './BatchUpdatesOptions'
3
+ export * from './BindingOperations'
4
+ export * from './DataBindingTransactionResult'
5
+ export * from './EntityAccessor'
6
+ export * from './EntityListAccessor'
7
+ export * from './Errorable'
8
+ export * from './ErrorAccessor'
9
+ export * from './ExtendTree'
10
+ export * from './GetEntityByKey'
11
+ export * from './GetEntityListSubTree'
12
+ export * from './GetEntitySubTree'
13
+ export * from './FieldAccessor'
14
+ export * from './Persist'
15
+ export * from './PersistErrorOptions'
16
+ export * from './PersistResult'
17
+ export * from './PersistSuccessOptions'
18
+ export * from './QueryRequestResponse'
19
+ export * from './TreeRootAccessor'
@@ -0,0 +1,20 @@
1
+ // TODO update hashing so that for offset, 0 == undefined
2
+ export class Hashing {
3
+ public static hashAny(array: any[]): number {
4
+ const json = JSON.stringify(array)
5
+ return Hashing.hash(json)
6
+ }
7
+
8
+ // Taken from Java
9
+ public static hash(str: string): number {
10
+ let hash = 0
11
+ if (str.length === 0) {
12
+ return hash
13
+ }
14
+ for (let i = 0; i < str.length; i++) {
15
+ hash = (hash << 5) - hash + str.charCodeAt(i)
16
+ hash = hash & hash // Convert to 32bit integer
17
+ }
18
+ return Math.abs(hash)
19
+ }
20
+ }
@@ -0,0 +1,92 @@
1
+ import { Environment } from '../environment'
2
+ import { BaseRelation, Schema, SchemaColumn, SchemaEntity, SchemaField, SchemaRelation } from '../schema'
3
+ import { BindingError } from '../BindingError'
4
+ import levenshtein from 'js-levenshtein'
5
+
6
+ export class TreeNodeUtils {
7
+
8
+ public static resolveEntity(schema: Schema, entityName: string, type: 'entity' | 'entity list'): SchemaEntity {
9
+ const entity = schema.getEntityOrUndefined(entityName)
10
+ if (!entity) {
11
+ const alternative = this.recommendAlternative(entityName, schema.getEntityNames())
12
+ const didYouMean = alternative ? `Did you mean '${alternative}'?` : ''
13
+ throw new BindingError(`Invalid ${type} sub tree: Entity '${entityName}' doesn't exist. ${didYouMean}`)
14
+ }
15
+ return entity
16
+ }
17
+
18
+ public static resolveHasOneRelation(environment: Environment, field: string, isReduced: boolean): SchemaRelation {
19
+ if (isReduced) {
20
+ return this.resolveRelation(environment, field, 'reduced has-one relation', ['ManyHasMany', 'OneHasMany'])
21
+ }
22
+ return this.resolveRelation(environment, field, 'a has-one relation', ['ManyHasOne', 'OneHasOne'])
23
+ }
24
+
25
+
26
+ public static resolveHasManyRelation(environment: Environment, field: string): SchemaRelation {
27
+ return this.resolveRelation(environment, field, 'a has-many relation', ['ManyHasMany', 'OneHasMany'])
28
+ }
29
+
30
+ private static resolveRelation(environment: Environment, field: string, relationDescription: string, expectedRelationType: BaseRelation['type'][]): SchemaRelation {
31
+ return this.resolveField(environment, field, (field): field is SchemaRelation => {
32
+ return field.__typename === '_Relation' && expectedRelationType.includes(field.type)
33
+ }, relationDescription)
34
+ }
35
+
36
+ public static resolveColumn(environment: Environment, fieldName: string): SchemaColumn {
37
+ return this.resolveField(environment, fieldName, (field): field is SchemaColumn => field.__typename === '_Column', 'an ordinary field')
38
+ // TODO check that defaultValue matches the type
39
+ // TODO run custom validators
40
+ }
41
+
42
+ private static resolveField<T extends SchemaField>(environment: Environment, fieldName: string, matcher: (field: SchemaField) => field is T, expectedDescription: string): T {
43
+ const treeLocation = environment.getSubTreeNode()
44
+ const entity = treeLocation.entity
45
+ const field = entity.fields.get(fieldName)
46
+ if (!field) {
47
+ const alternative = this.recommendAlternative(
48
+ fieldName,
49
+ Array.from(entity.fields)
50
+ .filter(([, field]) => matcher(field))
51
+ .map(([fieldName]) => fieldName),
52
+ )
53
+ const didYouMean = alternative ? `Did you mean '${alternative}'?` : ''
54
+ throw new BindingError(`Field '${fieldName}' doesn't exist on ${this.describeLocation(environment)}. ${didYouMean}`)
55
+ }
56
+ if (!matcher(field)) {
57
+ const actual = field.__typename === '_Column' ? 'an ordinary field' : `a ${field.type} relation`
58
+ throw new BindingError(
59
+ `Invalid field: the name '${field.name}' on ${this.describeLocation(environment)} ` +
60
+ `refers to ${actual} but is being used as a ${expectedDescription}.`,
61
+ )
62
+ }
63
+ return field
64
+ }
65
+
66
+ public static describeLocation(environment: Environment): string {
67
+ const path = []
68
+ const loc = environment.getSubTreeNode()
69
+ for (let env = environment; ; env = env.getParent()) {
70
+ const node = env.getSubTreeNode()
71
+ if (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {
72
+ return `entity '${loc.entity.name}' in path '${[node.entity.name, ...path.reverse()].join('.')}'`
73
+ }
74
+ path.push(node.field.name)
75
+ }
76
+ }
77
+
78
+ public static recommendAlternative(original: string, possibleAlternatives: Iterable<string>): string | undefined {
79
+ let bestAlternative: string | undefined = undefined
80
+ let bestAlternativeDistance = Number.MAX_SAFE_INTEGER
81
+
82
+ for (const alternative of possibleAlternatives) {
83
+ const distance = levenshtein(original, alternative)
84
+
85
+ if (distance < bestAlternativeDistance) {
86
+ bestAlternative = alternative
87
+ bestAlternativeDistance = distance
88
+ }
89
+ }
90
+ return bestAlternative
91
+ }
92
+ }
@@ -0,0 +1,7 @@
1
+ import { BindingError } from '../BindingError'
2
+
3
+ export function assertNever(_: never): never {
4
+ throw new BindingError(
5
+ `FATAL ERROR. This should absolutely never have happened. Please report this bug.`,
6
+ )
7
+ }