@contember/binding-common 2.1.0-alpha.9 → 2.1.0-beta.2

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 (277) hide show
  1. package/dist/development/index.cjs +43 -43
  2. package/dist/development/index.js +16 -16
  3. package/dist/development/src/BindingError.cjs.map +1 -1
  4. package/dist/development/src/BindingError.js.map +1 -1
  5. package/dist/development/src/DataBindingExtendAborted.cjs +1 -1
  6. package/dist/development/src/DataBindingExtendAborted.cjs.map +1 -1
  7. package/dist/development/src/DataBindingExtendAborted.js +1 -1
  8. package/dist/development/src/DataBindingExtendAborted.js.map +1 -1
  9. package/dist/development/src/LocalizedBindingError.cjs.map +1 -1
  10. package/dist/development/src/LocalizedBindingError.js.map +1 -1
  11. package/dist/development/src/RuntimeId.cjs.map +1 -1
  12. package/dist/development/src/RuntimeId.js.map +1 -1
  13. package/dist/development/src/environment/Environment.cjs +4 -2
  14. package/dist/development/src/environment/Environment.cjs.map +1 -1
  15. package/dist/development/src/environment/Environment.js +4 -2
  16. package/dist/development/src/environment/Environment.js.map +1 -1
  17. package/dist/development/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -1
  18. package/dist/development/src/environment/TreeNodeEnvironmentFactory.js.map +1 -1
  19. package/dist/development/src/environment/VariableFieldValue.cjs.map +1 -1
  20. package/dist/development/src/environment/VariableFieldValue.js.map +1 -1
  21. package/dist/development/src/environment/VariableInputTransformer.cjs.map +1 -1
  22. package/dist/development/src/environment/VariableInputTransformer.js.map +1 -1
  23. package/dist/development/src/markers/EntityFieldMarkersContainer.cjs.map +1 -1
  24. package/dist/development/src/markers/EntityFieldMarkersContainer.js.map +1 -1
  25. package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.cjs.map +1 -1
  26. package/dist/development/src/markers/EntityFieldsWithHoistablesMarker.js.map +1 -1
  27. package/dist/development/src/markers/EntityListSubTreeMarker.cjs.map +1 -1
  28. package/dist/development/src/markers/EntityListSubTreeMarker.js.map +1 -1
  29. package/dist/development/src/markers/EntitySubTreeMarker.cjs.map +1 -1
  30. package/dist/development/src/markers/EntitySubTreeMarker.js.map +1 -1
  31. package/dist/development/src/markers/FieldMarker.cjs.map +1 -1
  32. package/dist/development/src/markers/FieldMarker.js.map +1 -1
  33. package/dist/development/src/markers/HasManyRelationMarker.cjs.map +1 -1
  34. package/dist/development/src/markers/HasManyRelationMarker.js.map +1 -1
  35. package/dist/development/src/markers/HasOneRelationMarker.cjs.map +1 -1
  36. package/dist/development/src/markers/HasOneRelationMarker.js.map +1 -1
  37. package/dist/development/src/markers/MarkerComparator.cjs +1 -1
  38. package/dist/development/src/markers/MarkerComparator.cjs.map +1 -1
  39. package/dist/development/src/markers/MarkerComparator.js +1 -1
  40. package/dist/development/src/markers/MarkerComparator.js.map +1 -1
  41. package/dist/development/src/markers/MarkerMerger.cjs.map +1 -1
  42. package/dist/development/src/markers/MarkerMerger.js.map +1 -1
  43. package/dist/development/src/markers/MarkerTreeRoot.cjs.map +1 -1
  44. package/dist/development/src/markers/MarkerTreeRoot.js.map +1 -1
  45. package/dist/development/src/markers/PlaceholderGenerator.cjs.map +1 -1
  46. package/dist/development/src/markers/PlaceholderGenerator.js.map +1 -1
  47. package/dist/development/src/markers/PlaceholderParametersGenerator.cjs.map +1 -1
  48. package/dist/development/src/markers/PlaceholderParametersGenerator.js.map +1 -1
  49. package/dist/development/src/queryLanguage/CacheStore.cjs.map +1 -1
  50. package/dist/development/src/queryLanguage/CacheStore.js.map +1 -1
  51. package/dist/development/src/queryLanguage/MarkerFactory.cjs.map +1 -1
  52. package/dist/development/src/queryLanguage/MarkerFactory.js.map +1 -1
  53. package/dist/development/src/queryLanguage/Parser.cjs +4 -12
  54. package/dist/development/src/queryLanguage/Parser.cjs.map +1 -1
  55. package/dist/development/src/queryLanguage/Parser.js +5 -13
  56. package/dist/development/src/queryLanguage/Parser.js.map +1 -1
  57. package/dist/development/src/queryLanguage/QueryLanguage.cjs +1 -1
  58. package/dist/development/src/queryLanguage/QueryLanguage.cjs.map +1 -1
  59. package/dist/development/src/queryLanguage/QueryLanguage.js +1 -1
  60. package/dist/development/src/queryLanguage/QueryLanguage.js.map +1 -1
  61. package/dist/development/src/queryLanguage/tokenList.cjs.map +1 -1
  62. package/dist/development/src/queryLanguage/tokenList.js.map +1 -1
  63. package/dist/development/src/schema/Schema.cjs.map +1 -1
  64. package/dist/development/src/schema/Schema.js.map +1 -1
  65. package/dist/development/src/schema/SchemaLoader.cjs.map +1 -1
  66. package/dist/development/src/schema/SchemaLoader.js.map +1 -1
  67. package/dist/development/src/schema/SchemaPreprocessor.cjs.map +1 -1
  68. package/dist/development/src/schema/SchemaPreprocessor.js.map +1 -1
  69. package/dist/development/src/treeParameters/EventListenersStore.cjs.map +1 -1
  70. package/dist/development/src/treeParameters/EventListenersStore.js.map +1 -1
  71. package/dist/development/src/treeParameters/TreeParameterMerger.cjs +3 -1
  72. package/dist/development/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
  73. package/dist/development/src/treeParameters/TreeParameterMerger.js +3 -1
  74. package/dist/development/src/treeParameters/TreeParameterMerger.js.map +1 -1
  75. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -1
  76. package/dist/development/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -1
  77. package/dist/development/src/types/EntityAccessor.cjs.map +1 -1
  78. package/dist/development/src/types/EntityAccessor.js.map +1 -1
  79. package/dist/development/src/types/EntityListAccessor.cjs.map +1 -1
  80. package/dist/development/src/types/EntityListAccessor.js.map +1 -1
  81. package/dist/development/src/types/ErrorAccessor.cjs.map +1 -1
  82. package/dist/development/src/types/ErrorAccessor.js.map +1 -1
  83. package/dist/development/src/types/FieldAccessor.cjs.map +1 -1
  84. package/dist/development/src/types/FieldAccessor.js.map +1 -1
  85. package/dist/development/src/types/PersistResult.cjs.map +1 -1
  86. package/dist/development/src/types/PersistResult.js.map +1 -1
  87. package/dist/development/src/types/TreeRootAccessor.cjs.map +1 -1
  88. package/dist/development/src/types/TreeRootAccessor.js.map +1 -1
  89. package/dist/development/src/utils/Hashing.cjs.map +1 -1
  90. package/dist/development/src/utils/Hashing.js.map +1 -1
  91. package/dist/development/src/utils/TreeNodeUtils.cjs +1 -1
  92. package/dist/development/src/utils/TreeNodeUtils.cjs.map +1 -1
  93. package/dist/development/src/utils/TreeNodeUtils.js +1 -1
  94. package/dist/development/src/utils/TreeNodeUtils.js.map +1 -1
  95. package/dist/development/src/utils/assertNever.cjs.map +1 -1
  96. package/dist/development/src/utils/assertNever.js.map +1 -1
  97. package/dist/development/src/utils/createQueryBuilder.cjs +25 -21
  98. package/dist/development/src/utils/createQueryBuilder.cjs.map +1 -1
  99. package/dist/development/src/utils/createQueryBuilder.js +25 -21
  100. package/dist/development/src/utils/createQueryBuilder.js.map +1 -1
  101. package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.cjs.map +1 -1
  102. package/dist/development/src/utils/generateEnumerabilityPreventingEntropy.js.map +1 -1
  103. package/dist/development/src/utils/whereToFilter.cjs.map +1 -1
  104. package/dist/development/src/utils/whereToFilter.js.map +1 -1
  105. package/dist/production/index.cjs +43 -43
  106. package/dist/production/index.js +16 -16
  107. package/dist/production/src/BindingError.cjs.map +1 -1
  108. package/dist/production/src/BindingError.js.map +1 -1
  109. package/dist/production/src/DataBindingExtendAborted.cjs +1 -1
  110. package/dist/production/src/DataBindingExtendAborted.cjs.map +1 -1
  111. package/dist/production/src/DataBindingExtendAborted.js +1 -1
  112. package/dist/production/src/DataBindingExtendAborted.js.map +1 -1
  113. package/dist/production/src/LocalizedBindingError.cjs.map +1 -1
  114. package/dist/production/src/LocalizedBindingError.js.map +1 -1
  115. package/dist/production/src/RuntimeId.cjs.map +1 -1
  116. package/dist/production/src/RuntimeId.js.map +1 -1
  117. package/dist/production/src/environment/Environment.cjs +4 -2
  118. package/dist/production/src/environment/Environment.cjs.map +1 -1
  119. package/dist/production/src/environment/Environment.js +4 -2
  120. package/dist/production/src/environment/Environment.js.map +1 -1
  121. package/dist/production/src/environment/TreeNodeEnvironmentFactory.cjs.map +1 -1
  122. package/dist/production/src/environment/TreeNodeEnvironmentFactory.js.map +1 -1
  123. package/dist/production/src/environment/VariableFieldValue.cjs.map +1 -1
  124. package/dist/production/src/environment/VariableFieldValue.js.map +1 -1
  125. package/dist/production/src/environment/VariableInputTransformer.cjs.map +1 -1
  126. package/dist/production/src/environment/VariableInputTransformer.js.map +1 -1
  127. package/dist/production/src/markers/EntityFieldMarkersContainer.cjs.map +1 -1
  128. package/dist/production/src/markers/EntityFieldMarkersContainer.js.map +1 -1
  129. package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.cjs.map +1 -1
  130. package/dist/production/src/markers/EntityFieldsWithHoistablesMarker.js.map +1 -1
  131. package/dist/production/src/markers/EntityListSubTreeMarker.cjs.map +1 -1
  132. package/dist/production/src/markers/EntityListSubTreeMarker.js.map +1 -1
  133. package/dist/production/src/markers/EntitySubTreeMarker.cjs.map +1 -1
  134. package/dist/production/src/markers/EntitySubTreeMarker.js.map +1 -1
  135. package/dist/production/src/markers/FieldMarker.cjs.map +1 -1
  136. package/dist/production/src/markers/FieldMarker.js.map +1 -1
  137. package/dist/production/src/markers/HasManyRelationMarker.cjs.map +1 -1
  138. package/dist/production/src/markers/HasManyRelationMarker.js.map +1 -1
  139. package/dist/production/src/markers/HasOneRelationMarker.cjs.map +1 -1
  140. package/dist/production/src/markers/HasOneRelationMarker.js.map +1 -1
  141. package/dist/production/src/markers/MarkerComparator.cjs +1 -1
  142. package/dist/production/src/markers/MarkerComparator.cjs.map +1 -1
  143. package/dist/production/src/markers/MarkerComparator.js +1 -1
  144. package/dist/production/src/markers/MarkerComparator.js.map +1 -1
  145. package/dist/production/src/markers/MarkerMerger.cjs.map +1 -1
  146. package/dist/production/src/markers/MarkerMerger.js.map +1 -1
  147. package/dist/production/src/markers/MarkerTreeRoot.cjs.map +1 -1
  148. package/dist/production/src/markers/MarkerTreeRoot.js.map +1 -1
  149. package/dist/production/src/markers/PlaceholderGenerator.cjs.map +1 -1
  150. package/dist/production/src/markers/PlaceholderGenerator.js.map +1 -1
  151. package/dist/production/src/markers/PlaceholderParametersGenerator.cjs.map +1 -1
  152. package/dist/production/src/markers/PlaceholderParametersGenerator.js.map +1 -1
  153. package/dist/production/src/queryLanguage/CacheStore.cjs.map +1 -1
  154. package/dist/production/src/queryLanguage/CacheStore.js.map +1 -1
  155. package/dist/production/src/queryLanguage/MarkerFactory.cjs.map +1 -1
  156. package/dist/production/src/queryLanguage/MarkerFactory.js.map +1 -1
  157. package/dist/production/src/queryLanguage/Parser.cjs +4 -12
  158. package/dist/production/src/queryLanguage/Parser.cjs.map +1 -1
  159. package/dist/production/src/queryLanguage/Parser.js +5 -13
  160. package/dist/production/src/queryLanguage/Parser.js.map +1 -1
  161. package/dist/production/src/queryLanguage/QueryLanguage.cjs +1 -1
  162. package/dist/production/src/queryLanguage/QueryLanguage.cjs.map +1 -1
  163. package/dist/production/src/queryLanguage/QueryLanguage.js +1 -1
  164. package/dist/production/src/queryLanguage/QueryLanguage.js.map +1 -1
  165. package/dist/production/src/queryLanguage/tokenList.cjs.map +1 -1
  166. package/dist/production/src/queryLanguage/tokenList.js.map +1 -1
  167. package/dist/production/src/schema/Schema.cjs.map +1 -1
  168. package/dist/production/src/schema/Schema.js.map +1 -1
  169. package/dist/production/src/schema/SchemaLoader.cjs.map +1 -1
  170. package/dist/production/src/schema/SchemaLoader.js.map +1 -1
  171. package/dist/production/src/schema/SchemaPreprocessor.cjs.map +1 -1
  172. package/dist/production/src/schema/SchemaPreprocessor.js.map +1 -1
  173. package/dist/production/src/treeParameters/EventListenersStore.cjs.map +1 -1
  174. package/dist/production/src/treeParameters/EventListenersStore.js.map +1 -1
  175. package/dist/production/src/treeParameters/TreeParameterMerger.cjs +3 -1
  176. package/dist/production/src/treeParameters/TreeParameterMerger.cjs.map +1 -1
  177. package/dist/production/src/treeParameters/TreeParameterMerger.js +3 -1
  178. package/dist/production/src/treeParameters/TreeParameterMerger.js.map +1 -1
  179. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.cjs.map +1 -1
  180. package/dist/production/src/treeParameters/helpers/wrapFilterInHasOnes.js.map +1 -1
  181. package/dist/production/src/types/EntityAccessor.cjs.map +1 -1
  182. package/dist/production/src/types/EntityAccessor.js.map +1 -1
  183. package/dist/production/src/types/EntityListAccessor.cjs.map +1 -1
  184. package/dist/production/src/types/EntityListAccessor.js.map +1 -1
  185. package/dist/production/src/types/ErrorAccessor.cjs.map +1 -1
  186. package/dist/production/src/types/ErrorAccessor.js.map +1 -1
  187. package/dist/production/src/types/FieldAccessor.cjs.map +1 -1
  188. package/dist/production/src/types/FieldAccessor.js.map +1 -1
  189. package/dist/production/src/types/PersistResult.cjs.map +1 -1
  190. package/dist/production/src/types/PersistResult.js.map +1 -1
  191. package/dist/production/src/types/TreeRootAccessor.cjs.map +1 -1
  192. package/dist/production/src/types/TreeRootAccessor.js.map +1 -1
  193. package/dist/production/src/utils/Hashing.cjs.map +1 -1
  194. package/dist/production/src/utils/Hashing.js.map +1 -1
  195. package/dist/production/src/utils/TreeNodeUtils.cjs +1 -1
  196. package/dist/production/src/utils/TreeNodeUtils.cjs.map +1 -1
  197. package/dist/production/src/utils/TreeNodeUtils.js +1 -1
  198. package/dist/production/src/utils/TreeNodeUtils.js.map +1 -1
  199. package/dist/production/src/utils/assertNever.cjs.map +1 -1
  200. package/dist/production/src/utils/assertNever.js.map +1 -1
  201. package/dist/production/src/utils/createQueryBuilder.cjs +25 -21
  202. package/dist/production/src/utils/createQueryBuilder.cjs.map +1 -1
  203. package/dist/production/src/utils/createQueryBuilder.js +25 -21
  204. package/dist/production/src/utils/createQueryBuilder.js.map +1 -1
  205. package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.cjs.map +1 -1
  206. package/dist/production/src/utils/generateEnumerabilityPreventingEntropy.js.map +1 -1
  207. package/dist/production/src/utils/whereToFilter.cjs.map +1 -1
  208. package/dist/production/src/utils/whereToFilter.js.map +1 -1
  209. package/dist/types/LocalizedBindingError.d.ts.map +1 -1
  210. package/dist/types/environment/Environment.d.ts.map +1 -1
  211. package/dist/types/environment/TreeNodeEnvironmentFactory.d.ts.map +1 -1
  212. package/dist/types/markers/PlaceholderParametersGenerator.d.ts.map +1 -1
  213. package/dist/types/queryLanguage/MarkerFactory.d.ts.map +1 -1
  214. package/dist/types/queryLanguage/Parser.d.ts.map +1 -1
  215. package/dist/types/queryLanguage/ParserResults.d.ts.map +1 -1
  216. package/dist/types/queryLanguage/QueryLanguage.d.ts +1 -1
  217. package/dist/types/queryLanguage/QueryLanguage.d.ts.map +1 -1
  218. package/dist/types/schema/Schema.d.ts.map +1 -1
  219. package/dist/types/schema/SchemaLoader.d.ts.map +1 -1
  220. package/dist/types/treeParameters/EventListenersStore.d.ts.map +1 -1
  221. package/dist/types/treeParameters/Normalized.d.ts.map +1 -1
  222. package/dist/types/treeParameters/Sugared.d.ts.map +1 -1
  223. package/dist/types/treeParameters/TreeParameterMerger.d.ts.map +1 -1
  224. package/dist/types/treeParameters/index.d.ts.map +1 -1
  225. package/dist/types/treeParameters/primitives/SetOnCreate.d.ts.map +1 -1
  226. package/dist/types/tsconfig.tsbuildinfo +1 -1
  227. package/dist/types/types/EntityAccessor.d.ts.map +1 -1
  228. package/dist/types/types/EntityListAccessor.d.ts +1 -1
  229. package/dist/types/types/EntityListAccessor.d.ts.map +1 -1
  230. package/dist/types/types/ErrorAccessor.d.ts.map +1 -1
  231. package/dist/types/types/FieldAccessor.d.ts +1 -1
  232. package/dist/types/types/FieldAccessor.d.ts.map +1 -1
  233. package/dist/types/types/GetEntityListSubTree.d.ts.map +1 -1
  234. package/dist/types/types/GetEntitySubTree.d.ts.map +1 -1
  235. package/dist/types/types/PersistErrorOptions.d.ts.map +1 -1
  236. package/dist/types/types/PersistResult.d.ts.map +1 -1
  237. package/dist/types/utils/TreeNodeUtils.d.ts.map +1 -1
  238. package/dist/types/utils/createQueryBuilder.d.ts.map +1 -1
  239. package/package.json +14 -9
  240. package/src/LocalizedBindingError.ts +1 -7
  241. package/src/environment/Environment.ts +5 -5
  242. package/src/environment/TreeNodeEnvironmentFactory.ts +1 -5
  243. package/src/markers/MarkerComparator.ts +7 -7
  244. package/src/markers/MarkerMerger.ts +2 -2
  245. package/src/markers/PlaceholderParametersGenerator.ts +0 -2
  246. package/src/queryLanguage/CacheStore.ts +3 -3
  247. package/src/queryLanguage/MarkerFactory.ts +6 -19
  248. package/src/queryLanguage/Parser.ts +16 -24
  249. package/src/queryLanguage/ParserResults.ts +2 -7
  250. package/src/queryLanguage/QueryLanguage.ts +33 -44
  251. package/src/schema/Schema.ts +0 -1
  252. package/src/schema/SchemaLoader.ts +37 -39
  253. package/src/treeParameters/EventListenersStore.ts +0 -1
  254. package/src/treeParameters/Normalized.ts +0 -2
  255. package/src/treeParameters/Sugared.ts +15 -27
  256. package/src/treeParameters/TreeParameterMerger.ts +13 -9
  257. package/src/treeParameters/index.ts +0 -1
  258. package/src/treeParameters/primitives/SetOnCreate.ts +0 -2
  259. package/src/types/EntityAccessor.ts +1 -1
  260. package/src/types/EntityListAccessor.ts +1 -1
  261. package/src/types/ErrorAccessor.ts +8 -5
  262. package/src/types/FieldAccessor.ts +1 -2
  263. package/src/types/GetEntityListSubTree.ts +1 -6
  264. package/src/types/GetEntitySubTree.ts +1 -6
  265. package/src/types/PersistErrorOptions.ts +0 -1
  266. package/src/types/PersistResult.ts +1 -1
  267. package/src/utils/TreeNodeUtils.ts +16 -8
  268. package/src/utils/createQueryBuilder.ts +26 -22
  269. package/tests/cases/unit/queryLanguage/filter.spec.tsx +1 -2
  270. package/tests/cases/unit/queryLanguage/general.spec.tsx +1 -1
  271. package/tests/cases/unit/queryLanguage/orderBy.spec.tsx +1 -1
  272. package/tests/cases/unit/queryLanguage/qualifiedEntityList.spec.tsx +1 -1
  273. package/tests/cases/unit/queryLanguage/qualifiedFieldList.spec.tsx +1 -1
  274. package/tests/cases/unit/queryLanguage/relativeEntityList.spec.tsx +1 -1
  275. package/tests/cases/unit/queryLanguage/singleRelativeField.spec.tsx +1 -1
  276. package/tests/cases/unit/queryLanguage/taggedMap.spec.tsx +1 -2
  277. package/tests/cases/unit/whereToFilter.ts +1 -1
@@ -10,40 +10,40 @@ const assertNever = require("./src/utils/assertNever.cjs");
10
10
  const createQueryBuilder = require("./src/utils/createQueryBuilder.cjs");
11
11
  const whereToFilter = require("./src/utils/whereToFilter.cjs");
12
12
  const uuid = require("uuid");
13
+ const defaults = require("./src/treeParameters/defaults.cjs");
13
14
  const EntityFieldMarkersContainer = require("./src/markers/EntityFieldMarkersContainer.cjs");
14
15
  const EntityFieldsWithHoistablesMarker = require("./src/markers/EntityFieldsWithHoistablesMarker.cjs");
15
16
  const EntityListSubTreeMarker = require("./src/markers/EntityListSubTreeMarker.cjs");
16
17
  const EntitySubTreeMarker = require("./src/markers/EntitySubTreeMarker.cjs");
18
+ const Environment = require("./src/environment/Environment.cjs");
19
+ const ErrorAccessor = require("./src/types/ErrorAccessor.cjs");
20
+ const EventListenersStore = require("./src/treeParameters/EventListenersStore.cjs");
17
21
  const FieldMarker = require("./src/markers/FieldMarker.cjs");
18
22
  const HasManyRelationMarker = require("./src/markers/HasManyRelationMarker.cjs");
19
23
  const HasOneRelationMarker = require("./src/markers/HasOneRelationMarker.cjs");
20
- const MarkerTreeRoot = require("./src/markers/MarkerTreeRoot.cjs");
21
- const PlaceholderGenerator = require("./src/markers/PlaceholderGenerator.cjs");
22
- const PlaceholderParametersGenerator = require("./src/markers/PlaceholderParametersGenerator.cjs");
23
- const MarkerMerger = require("./src/markers/MarkerMerger.cjs");
24
24
  const MarkerComparator = require("./src/markers/MarkerComparator.cjs");
25
- const defaults = require("./src/treeParameters/defaults.cjs");
26
- const wrapFilterInHasOnes = require("./src/treeParameters/helpers/wrapFilterInHasOnes.cjs");
27
- const EventListenersStore = require("./src/treeParameters/EventListenersStore.cjs");
28
- const TreeParameterMerger = require("./src/treeParameters/TreeParameterMerger.cjs");
29
- const Environment = require("./src/environment/Environment.cjs");
30
- const TreeNodeEnvironmentFactory = require("./src/environment/TreeNodeEnvironmentFactory.cjs");
31
- const VariableFieldValue = require("./src/environment/VariableFieldValue.cjs");
32
- const VariableInputTransformer = require("./src/environment/VariableInputTransformer.cjs");
33
25
  const MarkerFactory = require("./src/queryLanguage/MarkerFactory.cjs");
26
+ const MarkerMerger = require("./src/markers/MarkerMerger.cjs");
27
+ const MarkerTreeRoot = require("./src/markers/MarkerTreeRoot.cjs");
34
28
  const Parser = require("./src/queryLanguage/Parser.cjs");
29
+ const PlaceholderGenerator = require("./src/markers/PlaceholderGenerator.cjs");
30
+ const PlaceholderParametersGenerator = require("./src/markers/PlaceholderParametersGenerator.cjs");
35
31
  const QueryLanguage = require("./src/queryLanguage/QueryLanguage.cjs");
36
32
  const QueryLanguageError = require("./src/queryLanguage/QueryLanguageError.cjs");
37
- const tokenList = require("./src/queryLanguage/tokenList.cjs");
38
33
  const Schema = require("./src/schema/Schema.cjs");
39
34
  const SchemaLoader = require("./src/schema/SchemaLoader.cjs");
40
35
  const SchemaPreprocessor = require("./src/schema/SchemaPreprocessor.cjs");
36
+ const tokenList = require("./src/queryLanguage/tokenList.cjs");
37
+ const TreeNodeEnvironmentFactory = require("./src/environment/TreeNodeEnvironmentFactory.cjs");
38
+ const TreeParameterMerger = require("./src/treeParameters/TreeParameterMerger.cjs");
39
+ const TreeRootAccessor = require("./src/types/TreeRootAccessor.cjs");
40
+ const VariableFieldValue = require("./src/environment/VariableFieldValue.cjs");
41
+ const VariableInputTransformer = require("./src/environment/VariableInputTransformer.cjs");
41
42
  const EntityAccessor = require("./src/types/EntityAccessor.cjs");
42
43
  const EntityListAccessor = require("./src/types/EntityListAccessor.cjs");
43
- const ErrorAccessor = require("./src/types/ErrorAccessor.cjs");
44
- const FieldAccessor = require("./src/types/FieldAccessor.cjs");
45
44
  const PersistResult = require("./src/types/PersistResult.cjs");
46
- const TreeRootAccessor = require("./src/types/TreeRootAccessor.cjs");
45
+ const FieldAccessor = require("./src/types/FieldAccessor.cjs");
46
+ const wrapFilterInHasOnes = require("./src/treeParameters/helpers/wrapFilterInHasOnes.cjs");
47
47
  exports.NIL_UUID = consts.NIL_UUID;
48
48
  exports.PRIMARY_KEY_NAME = consts.PRIMARY_KEY_NAME;
49
49
  exports.TYPENAME_KEY_NAME = consts.TYPENAME_KEY_NAME;
@@ -62,53 +62,53 @@ Object.defineProperty(exports, "generateUuid", {
62
62
  enumerable: true,
63
63
  get: () => uuid.v4
64
64
  });
65
- exports.EntityFieldMarkersContainer = EntityFieldMarkersContainer.EntityFieldMarkersContainer;
66
- exports.EntityFieldsWithHoistablesMarker = EntityFieldsWithHoistablesMarker.EntityFieldsWithHoistablesMarker;
67
- exports.EntityListSubTreeMarker = EntityListSubTreeMarker.EntityListSubTreeMarker;
68
- exports.EntitySubTreeMarker = EntitySubTreeMarker.EntitySubTreeMarker;
69
- exports.FieldMarker = FieldMarker.FieldMarker;
70
- exports.HasManyRelationMarker = HasManyRelationMarker.HasManyRelationMarker;
71
- exports.HasOneRelationMarker = HasOneRelationMarker.HasOneRelationMarker;
72
- exports.MarkerTreeRoot = MarkerTreeRoot.MarkerTreeRoot;
73
- exports.PlaceholderGenerator = PlaceholderGenerator.PlaceholderGenerator;
74
- exports.PlaceholderParametersGenerator = PlaceholderParametersGenerator.PlaceholderParametersGenerator;
75
- exports.MarkerMerger = MarkerMerger.MarkerMerger;
76
- exports.MarkerComparator = MarkerComparator.MarkerComparator;
77
65
  exports.EntityCreationParametersDefaults = defaults.EntityCreationParametersDefaults;
78
66
  exports.EntityListPreferencesDefaults = defaults.EntityListPreferencesDefaults;
79
67
  exports.LeafFieldDefaults = defaults.LeafFieldDefaults;
80
68
  exports.QualifiedEntityParametersDefaults = defaults.QualifiedEntityParametersDefaults;
81
69
  exports.RelationDefaults = defaults.RelationDefaults;
82
- exports.wrapFilterInHasOnes = wrapFilterInHasOnes.wrapFilterInHasOnes;
83
- exports.EventListenersStore = EventListenersStore.EventListenersStore;
84
- exports.TreeParameterMerger = TreeParameterMerger.TreeParameterMerger;
70
+ exports.EntityFieldMarkersContainer = EntityFieldMarkersContainer.EntityFieldMarkersContainer;
71
+ exports.EntityFieldsWithHoistablesMarker = EntityFieldsWithHoistablesMarker.EntityFieldsWithHoistablesMarker;
72
+ exports.EntityListSubTreeMarker = EntityListSubTreeMarker.EntityListSubTreeMarker;
73
+ exports.EntitySubTreeMarker = EntitySubTreeMarker.EntitySubTreeMarker;
85
74
  Object.defineProperty(exports, "Environment", {
86
75
  enumerable: true,
87
76
  get: () => Environment.Environment
88
77
  });
89
- exports.TreeNodeEnvironmentFactory = TreeNodeEnvironmentFactory.TreeNodeEnvironmentFactory;
90
- exports.VariableFieldValue = VariableFieldValue.VariableFieldValue;
91
- exports.VariableInputTransformer = VariableInputTransformer.VariableInputTransformer;
78
+ Object.defineProperty(exports, "ErrorAccessor", {
79
+ enumerable: true,
80
+ get: () => ErrorAccessor.ErrorAccessor
81
+ });
82
+ exports.EventListenersStore = EventListenersStore.EventListenersStore;
83
+ exports.FieldMarker = FieldMarker.FieldMarker;
84
+ exports.HasManyRelationMarker = HasManyRelationMarker.HasManyRelationMarker;
85
+ exports.HasOneRelationMarker = HasOneRelationMarker.HasOneRelationMarker;
86
+ exports.MarkerComparator = MarkerComparator.MarkerComparator;
92
87
  exports.MarkerFactory = MarkerFactory.MarkerFactory;
88
+ exports.MarkerMerger = MarkerMerger.MarkerMerger;
89
+ exports.MarkerTreeRoot = MarkerTreeRoot.MarkerTreeRoot;
93
90
  exports.Parser = Parser.Parser;
91
+ exports.PlaceholderGenerator = PlaceholderGenerator.PlaceholderGenerator;
92
+ exports.PlaceholderParametersGenerator = PlaceholderParametersGenerator.PlaceholderParametersGenerator;
94
93
  exports.QueryLanguage = QueryLanguage.QueryLanguage;
95
94
  exports.QueryLanguageError = QueryLanguageError.QueryLanguageError;
95
+ exports.Schema = Schema.Schema;
96
+ exports.SchemaLoader = SchemaLoader.SchemaLoader;
97
+ exports.SchemaPreprocessor = SchemaPreprocessor.SchemaPreprocessor;
96
98
  Object.defineProperty(exports, "TokenRegExps", {
97
99
  enumerable: true,
98
100
  get: () => tokenList.TokenRegExps
99
101
  });
100
102
  exports.tokenList = tokenList.tokenList;
101
103
  exports.tokens = tokenList.tokens;
102
- exports.Schema = Schema.Schema;
103
- exports.SchemaLoader = SchemaLoader.SchemaLoader;
104
- exports.SchemaPreprocessor = SchemaPreprocessor.SchemaPreprocessor;
104
+ exports.TreeNodeEnvironmentFactory = TreeNodeEnvironmentFactory.TreeNodeEnvironmentFactory;
105
+ exports.TreeParameterMerger = TreeParameterMerger.TreeParameterMerger;
106
+ exports.TreeRootAccessor = TreeRootAccessor.TreeRootAccessor;
107
+ exports.VariableFieldValue = VariableFieldValue.VariableFieldValue;
108
+ exports.VariableInputTransformer = VariableInputTransformer.VariableInputTransformer;
105
109
  exports.isEntityAccessor = EntityAccessor.isEntityAccessor;
106
110
  exports.isEntityListAccessor = EntityListAccessor.isEntityListAccessor;
107
- Object.defineProperty(exports, "ErrorAccessor", {
108
- enumerable: true,
109
- get: () => ErrorAccessor.ErrorAccessor
110
- });
111
- exports.isFieldAccessor = FieldAccessor.isFieldAccessor;
112
111
  exports.isErrorPersistResult = PersistResult.isErrorPersistResult;
113
- exports.TreeRootAccessor = TreeRootAccessor.TreeRootAccessor;
112
+ exports.isFieldAccessor = FieldAccessor.isFieldAccessor;
113
+ exports.wrapFilterInHasOnes = wrapFilterInHasOnes.wrapFilterInHasOnes;
114
114
  //# sourceMappingURL=index.cjs.map
@@ -8,40 +8,40 @@ import { assertNever } from "./src/utils/assertNever.js";
8
8
  import { createQueryBuilder } from "./src/utils/createQueryBuilder.js";
9
9
  import { whereToFilter } from "./src/utils/whereToFilter.js";
10
10
  import { v4 } from "uuid";
11
+ import { EntityCreationParametersDefaults, EntityListPreferencesDefaults, LeafFieldDefaults, QualifiedEntityParametersDefaults, RelationDefaults } from "./src/treeParameters/defaults.js";
11
12
  import { EntityFieldMarkersContainer } from "./src/markers/EntityFieldMarkersContainer.js";
12
13
  import { EntityFieldsWithHoistablesMarker } from "./src/markers/EntityFieldsWithHoistablesMarker.js";
13
14
  import { EntityListSubTreeMarker } from "./src/markers/EntityListSubTreeMarker.js";
14
15
  import { EntitySubTreeMarker } from "./src/markers/EntitySubTreeMarker.js";
16
+ import { Environment } from "./src/environment/Environment.js";
17
+ import { ErrorAccessor } from "./src/types/ErrorAccessor.js";
18
+ import { EventListenersStore } from "./src/treeParameters/EventListenersStore.js";
15
19
  import { FieldMarker } from "./src/markers/FieldMarker.js";
16
20
  import { HasManyRelationMarker } from "./src/markers/HasManyRelationMarker.js";
17
21
  import { HasOneRelationMarker } from "./src/markers/HasOneRelationMarker.js";
18
- import { MarkerTreeRoot } from "./src/markers/MarkerTreeRoot.js";
19
- import { PlaceholderGenerator } from "./src/markers/PlaceholderGenerator.js";
20
- import { PlaceholderParametersGenerator } from "./src/markers/PlaceholderParametersGenerator.js";
21
- import { MarkerMerger } from "./src/markers/MarkerMerger.js";
22
22
  import { MarkerComparator } from "./src/markers/MarkerComparator.js";
23
- import { EntityCreationParametersDefaults, EntityListPreferencesDefaults, LeafFieldDefaults, QualifiedEntityParametersDefaults, RelationDefaults } from "./src/treeParameters/defaults.js";
24
- import { wrapFilterInHasOnes } from "./src/treeParameters/helpers/wrapFilterInHasOnes.js";
25
- import { EventListenersStore } from "./src/treeParameters/EventListenersStore.js";
26
- import { TreeParameterMerger } from "./src/treeParameters/TreeParameterMerger.js";
27
- import { Environment } from "./src/environment/Environment.js";
28
- import { TreeNodeEnvironmentFactory } from "./src/environment/TreeNodeEnvironmentFactory.js";
29
- import { VariableFieldValue } from "./src/environment/VariableFieldValue.js";
30
- import { VariableInputTransformer } from "./src/environment/VariableInputTransformer.js";
31
23
  import { MarkerFactory } from "./src/queryLanguage/MarkerFactory.js";
24
+ import { MarkerMerger } from "./src/markers/MarkerMerger.js";
25
+ import { MarkerTreeRoot } from "./src/markers/MarkerTreeRoot.js";
32
26
  import { Parser } from "./src/queryLanguage/Parser.js";
27
+ import { PlaceholderGenerator } from "./src/markers/PlaceholderGenerator.js";
28
+ import { PlaceholderParametersGenerator } from "./src/markers/PlaceholderParametersGenerator.js";
33
29
  import { QueryLanguage } from "./src/queryLanguage/QueryLanguage.js";
34
30
  import { QueryLanguageError } from "./src/queryLanguage/QueryLanguageError.js";
35
- import { TokenRegExps, tokenList, tokens } from "./src/queryLanguage/tokenList.js";
36
31
  import { Schema } from "./src/schema/Schema.js";
37
32
  import { SchemaLoader } from "./src/schema/SchemaLoader.js";
38
33
  import { SchemaPreprocessor } from "./src/schema/SchemaPreprocessor.js";
34
+ import { TokenRegExps, tokenList, tokens } from "./src/queryLanguage/tokenList.js";
35
+ import { TreeNodeEnvironmentFactory } from "./src/environment/TreeNodeEnvironmentFactory.js";
36
+ import { TreeParameterMerger } from "./src/treeParameters/TreeParameterMerger.js";
37
+ import { TreeRootAccessor } from "./src/types/TreeRootAccessor.js";
38
+ import { VariableFieldValue } from "./src/environment/VariableFieldValue.js";
39
+ import { VariableInputTransformer } from "./src/environment/VariableInputTransformer.js";
39
40
  import { isEntityAccessor } from "./src/types/EntityAccessor.js";
40
41
  import { isEntityListAccessor } from "./src/types/EntityListAccessor.js";
41
- import { ErrorAccessor } from "./src/types/ErrorAccessor.js";
42
- import { isFieldAccessor } from "./src/types/FieldAccessor.js";
43
42
  import { isErrorPersistResult } from "./src/types/PersistResult.js";
44
- import { TreeRootAccessor } from "./src/types/TreeRootAccessor.js";
43
+ import { isFieldAccessor } from "./src/types/FieldAccessor.js";
44
+ import { wrapFilterInHasOnes } from "./src/treeParameters/helpers/wrapFilterInHasOnes.js";
45
45
  export {
46
46
  BindingError,
47
47
  ClientGeneratedUuid,
@@ -1 +1 @@
1
- {"version":3,"file":"BindingError.cjs","sources":["../../../../packages/binding-common/src/BindingError.ts"],"sourcesContent":["export class BindingError extends Error {}\n\nexport const throwBindingError = (message: string): never => {\n\tthrow new BindingError(message)\n}\n"],"names":[],"mappings":";;AAAO,MAAM,qBAAqB,MAAM;AAAC;AAE5B,MAAA,oBAAoB,CAAC,YAA2B;AACtD,QAAA,IAAI,aAAa,OAAO;AAC/B;;;"}
1
+ {"version":3,"file":"BindingError.cjs","sources":["../../../../packages/binding-common/src/BindingError.ts"],"sourcesContent":["export class BindingError extends Error {}\n\nexport const throwBindingError = (message: string): never => {\n\tthrow new BindingError(message)\n}\n"],"names":[],"mappings":";;AAAO,MAAM,qBAAqB,MAAM;AAAC;AAElC,MAAM,oBAAoB,CAAC,YAA2B;AAC5D,QAAM,IAAI,aAAa,OAAO;AAC/B;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"BindingError.js","sources":["../../../../packages/binding-common/src/BindingError.ts"],"sourcesContent":["export class BindingError extends Error {}\n\nexport const throwBindingError = (message: string): never => {\n\tthrow new BindingError(message)\n}\n"],"names":[],"mappings":"AAAO,MAAM,qBAAqB,MAAM;AAAC;AAE5B,MAAA,oBAAoB,CAAC,YAA2B;AACtD,QAAA,IAAI,aAAa,OAAO;AAC/B;"}
1
+ {"version":3,"file":"BindingError.js","sources":["../../../../packages/binding-common/src/BindingError.ts"],"sourcesContent":["export class BindingError extends Error {}\n\nexport const throwBindingError = (message: string): never => {\n\tthrow new BindingError(message)\n}\n"],"names":[],"mappings":"AAAO,MAAM,qBAAqB,MAAM;AAAC;AAElC,MAAM,oBAAoB,CAAC,YAA2B;AAC5D,QAAM,IAAI,aAAa,OAAO;AAC/B;"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const DataBindingExtendAborted = Symbol("aborted");
3
+ const DataBindingExtendAborted = /* @__PURE__ */ Symbol("aborted");
4
4
  exports.DataBindingExtendAborted = DataBindingExtendAborted;
5
5
  //# sourceMappingURL=DataBindingExtendAborted.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataBindingExtendAborted.cjs","sources":["../../../../packages/binding-common/src/DataBindingExtendAborted.ts"],"sourcesContent":["export const DataBindingExtendAborted = Symbol('aborted')\n"],"names":[],"mappings":";;AAAa,MAAA,2BAA2B,OAAO,SAAS;;"}
1
+ {"version":3,"file":"DataBindingExtendAborted.cjs","sources":["../../../../packages/binding-common/src/DataBindingExtendAborted.ts"],"sourcesContent":["export const DataBindingExtendAborted = Symbol('aborted')\n"],"names":[],"mappings":";;AAAO,MAAM,kDAAkC,SAAS;;"}
@@ -1,4 +1,4 @@
1
- const DataBindingExtendAborted = Symbol("aborted");
1
+ const DataBindingExtendAborted = /* @__PURE__ */ Symbol("aborted");
2
2
  export {
3
3
  DataBindingExtendAborted
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DataBindingExtendAborted.js","sources":["../../../../packages/binding-common/src/DataBindingExtendAborted.ts"],"sourcesContent":["export const DataBindingExtendAborted = Symbol('aborted')\n"],"names":[],"mappings":"AAAa,MAAA,2BAA2B,OAAO,SAAS;"}
1
+ {"version":3,"file":"DataBindingExtendAborted.js","sources":["../../../../packages/binding-common/src/DataBindingExtendAborted.ts"],"sourcesContent":["export const DataBindingExtendAborted = Symbol('aborted')\n"],"names":[],"mappings":"AAAO,MAAM,kDAAkC,SAAS;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizedBindingError.cjs","sources":["../../../../packages/binding-common/src/LocalizedBindingError.ts"],"sourcesContent":["import type {\n\tEntityListSubTreeMarker,\n\tEntitySubTreeMarker,\n\tHasManyRelationMarker,\n\tHasOneRelationMarker,\n\tMeaningfulMarker,\n} from './markers'\nimport { BindingError } from './BindingError'\n\nexport class LocalizedBindingError extends BindingError {\n\tpublic constructor(message: string, public readonly markerPath: MeaningfulMarker[]) {\n\t\tsuper(message)\n\t}\n\n\tpublic nestedIn(\n\t\twrapper: EntitySubTreeMarker | EntityListSubTreeMarker | HasOneRelationMarker | HasManyRelationMarker,\n\t): LocalizedBindingError {\n\t\treturn new LocalizedBindingError(this.message, [wrapper, ...this.markerPath])\n\t}\n}\n"],"names":["BindingError"],"mappings":";;;AASO,MAAM,8BAA8BA,aAAAA,aAAa;AAAA,EAChD,YAAY,SAAiC,YAAgC;AACnF,UAAM,OAAO;AADsC,SAAA,aAAA;AAAA,EAAA;AAAA,EAI7C,SACN,SACwB;AACjB,WAAA,IAAI,sBAAsB,KAAK,SAAS,CAAC,SAAS,GAAG,KAAK,UAAU,CAAC;AAAA,EAAA;AAE9E;;"}
1
+ {"version":3,"file":"LocalizedBindingError.cjs","sources":["../../../../packages/binding-common/src/LocalizedBindingError.ts"],"sourcesContent":["import type { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker, MeaningfulMarker } from './markers'\nimport { BindingError } from './BindingError'\n\nexport class LocalizedBindingError extends BindingError {\n\tpublic constructor(message: string, public readonly markerPath: MeaningfulMarker[]) {\n\t\tsuper(message)\n\t}\n\n\tpublic nestedIn(\n\t\twrapper: EntitySubTreeMarker | EntityListSubTreeMarker | HasOneRelationMarker | HasManyRelationMarker,\n\t): LocalizedBindingError {\n\t\treturn new LocalizedBindingError(this.message, [wrapper, ...this.markerPath])\n\t}\n}\n"],"names":["BindingError"],"mappings":";;;AAGO,MAAM,8BAA8BA,aAAAA,aAAa;AAAA,EAChD,YAAY,SAAiC,YAAgC;AACnF,UAAM,OAAO;AADsC,SAAA,aAAA;AAAA,EAEpD;AAAA,EAEO,SACN,SACwB;AACxB,WAAO,IAAI,sBAAsB,KAAK,SAAS,CAAC,SAAS,GAAG,KAAK,UAAU,CAAC;AAAA,EAC7E;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocalizedBindingError.js","sources":["../../../../packages/binding-common/src/LocalizedBindingError.ts"],"sourcesContent":["import type {\n\tEntityListSubTreeMarker,\n\tEntitySubTreeMarker,\n\tHasManyRelationMarker,\n\tHasOneRelationMarker,\n\tMeaningfulMarker,\n} from './markers'\nimport { BindingError } from './BindingError'\n\nexport class LocalizedBindingError extends BindingError {\n\tpublic constructor(message: string, public readonly markerPath: MeaningfulMarker[]) {\n\t\tsuper(message)\n\t}\n\n\tpublic nestedIn(\n\t\twrapper: EntitySubTreeMarker | EntityListSubTreeMarker | HasOneRelationMarker | HasManyRelationMarker,\n\t): LocalizedBindingError {\n\t\treturn new LocalizedBindingError(this.message, [wrapper, ...this.markerPath])\n\t}\n}\n"],"names":[],"mappings":";AASO,MAAM,8BAA8B,aAAa;AAAA,EAChD,YAAY,SAAiC,YAAgC;AACnF,UAAM,OAAO;AADsC,SAAA,aAAA;AAAA,EAAA;AAAA,EAI7C,SACN,SACwB;AACjB,WAAA,IAAI,sBAAsB,KAAK,SAAS,CAAC,SAAS,GAAG,KAAK,UAAU,CAAC;AAAA,EAAA;AAE9E;"}
1
+ {"version":3,"file":"LocalizedBindingError.js","sources":["../../../../packages/binding-common/src/LocalizedBindingError.ts"],"sourcesContent":["import type { EntityListSubTreeMarker, EntitySubTreeMarker, HasManyRelationMarker, HasOneRelationMarker, MeaningfulMarker } from './markers'\nimport { BindingError } from './BindingError'\n\nexport class LocalizedBindingError extends BindingError {\n\tpublic constructor(message: string, public readonly markerPath: MeaningfulMarker[]) {\n\t\tsuper(message)\n\t}\n\n\tpublic nestedIn(\n\t\twrapper: EntitySubTreeMarker | EntityListSubTreeMarker | HasOneRelationMarker | HasManyRelationMarker,\n\t): LocalizedBindingError {\n\t\treturn new LocalizedBindingError(this.message, [wrapper, ...this.markerPath])\n\t}\n}\n"],"names":[],"mappings":";AAGO,MAAM,8BAA8B,aAAa;AAAA,EAChD,YAAY,SAAiC,YAAgC;AACnF,UAAM,OAAO;AADsC,SAAA,aAAA;AAAA,EAEpD;AAAA,EAEO,SACN,SACwB;AACxB,WAAO,IAAI,sBAAsB,KAAK,SAAS,CAAC,SAAS,GAAG,KAAK,UAAU,CAAC;AAAA,EAC7E;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeId.cjs","sources":["../../../../packages/binding-common/src/RuntimeId.ts"],"sourcesContent":["import { generateEnumerabilityPreventingEntropy } from './utils/generateEnumerabilityPreventingEntropy'\nimport { EntityId } from './treeParameters'\n\nexport type UniqueEntityId = string & { __type: 'UniqueEntityId' }\n\nexport interface RuntimeIdSpec {\n\texistsOnServer: boolean\n\tvalue: EntityId\n\tuniqueValue: UniqueEntityId\n}\n\nexport class ServerId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): true {\n\t\treturn true\n\t}\n\tpublic constructor(public readonly value: EntityId, public readonly entityName: string) {\n\t}\n\n\tget uniqueValue() {\n\t\treturn ServerId.formatUniqueValue(this.value, this.entityName)\n\t}\n\n\tstatic formatUniqueValue(id: EntityId, entityName: string): UniqueEntityId {\n\t\treturn `${entityName}_${id}` as UniqueEntityId\n\t}\n}\n\nexport class ClientGeneratedUuid implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic constructor(public readonly value: string) {}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport class UnpersistedEntityDummyId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic readonly value: string\n\n\tprivate static getNextSeed = (() => {\n\t\tlet seed = 0\n\t\treturn () => seed++\n\t})()\n\n\tpublic constructor() {\n\t\tconst enumerabilityPreventingEntropy = generateEnumerabilityPreventingEntropy(\n\t\t\tUnpersistedEntityDummyId.entropyLength,\n\t\t)\n\n\t\t// KEEP THIS IN SYNC WITH THE REGEX BELOW!!!\n\t\tthis.value = `adminOnlyDummyId-${enumerabilityPreventingEntropy}-${UnpersistedEntityDummyId.getNextSeed()}`\n\t}\n\n\tprivate static entropyLength = 5\n\tprivate static dummyIdRegex = new RegExp(`^adminOnlyDummyId-\\\\d{${UnpersistedEntityDummyId.entropyLength}}-\\\\d+$`)\n\tpublic static matchesDummyId(candidate: EntityId): boolean {\n\t\treturn typeof candidate === 'string' && UnpersistedEntityDummyId.dummyIdRegex.test(candidate)\n\t}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport type RuntimeId = ServerId | ClientGeneratedUuid | UnpersistedEntityDummyId\n"],"names":["_UnpersistedEntityDummyId","generateEnumerabilityPreventingEntropy"],"mappings":";;;;;;AAWO,MAAM,SAAkC;AAAA,EAIvC,YAA4B,OAAiC,YAAoB;AAArD,SAAA,QAAA;AAAiC,SAAA,aAAA;AAAA,EAAA;AAAA,EAHpE,IAAW,iBAAuB;AAC1B,WAAA;AAAA,EAAA;AAAA,EAKR,IAAI,cAAc;AACjB,WAAO,SAAS,kBAAkB,KAAK,OAAO,KAAK,UAAU;AAAA,EAAA;AAAA,EAG9D,OAAO,kBAAkB,IAAc,YAAoC;AACnE,WAAA,GAAG,UAAU,IAAI,EAAE;AAAA,EAAA;AAE5B;AAEO,MAAM,oBAA6C;AAAA,EAIlD,YAA4B,OAAe;AAAf,SAAA,QAAA;AAAA,EAAA;AAAA,EAHnC,IAAW,iBAAwB;AAC3B,WAAA;AAAA,EAAA;AAAA,EAIR,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EAAA;AAEd;AAEO,MAAM,4BAAN,MAAMA,2BAAkD;AAAA,EAWvD,cAAc;AAPL,kBAAA,MAAA,OAAA;AAQf,UAAM,iCAAiCC,uCAAA;AAAA,MACtCD,2BAAyB;AAAA,IAC1B;AAGA,SAAK,QAAQ,oBAAoB,8BAA8B,IAAIA,2BAAyB,aAAa;AAAA,EAAA;AAAA,EAhB1G,IAAW,iBAAwB;AAC3B,WAAA;AAAA,EAAA;AAAA,EAoBR,OAAc,eAAe,WAA8B;AAC1D,WAAO,OAAO,cAAc,YAAYA,2BAAyB,aAAa,KAAK,SAAS;AAAA,EAAA;AAAA,EAG7F,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EAAA;AAEd;AAvBC,cANY,2BAMG,eAAqB,uBAAA;AACnC,MAAI,OAAO;AACX,SAAO,MAAM;AACd,IAAG;AAWH,cApBY,2BAoBG,iBAAgB,CAAA;AAC/B,cArBY,2BAqBG,gBAAe,IAAI,OAAO,yBAAyB,0BAAyB,aAAa,SAAS,CAAA;AArB3G,IAAM,2BAAN;;;;"}
1
+ {"version":3,"file":"RuntimeId.cjs","sources":["../../../../packages/binding-common/src/RuntimeId.ts"],"sourcesContent":["import { generateEnumerabilityPreventingEntropy } from './utils/generateEnumerabilityPreventingEntropy'\nimport { EntityId } from './treeParameters'\n\nexport type UniqueEntityId = string & { __type: 'UniqueEntityId' }\n\nexport interface RuntimeIdSpec {\n\texistsOnServer: boolean\n\tvalue: EntityId\n\tuniqueValue: UniqueEntityId\n}\n\nexport class ServerId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): true {\n\t\treturn true\n\t}\n\tpublic constructor(public readonly value: EntityId, public readonly entityName: string) {\n\t}\n\n\tget uniqueValue() {\n\t\treturn ServerId.formatUniqueValue(this.value, this.entityName)\n\t}\n\n\tstatic formatUniqueValue(id: EntityId, entityName: string): UniqueEntityId {\n\t\treturn `${entityName}_${id}` as UniqueEntityId\n\t}\n}\n\nexport class ClientGeneratedUuid implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic constructor(public readonly value: string) {}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport class UnpersistedEntityDummyId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic readonly value: string\n\n\tprivate static getNextSeed = (() => {\n\t\tlet seed = 0\n\t\treturn () => seed++\n\t})()\n\n\tpublic constructor() {\n\t\tconst enumerabilityPreventingEntropy = generateEnumerabilityPreventingEntropy(\n\t\t\tUnpersistedEntityDummyId.entropyLength,\n\t\t)\n\n\t\t// KEEP THIS IN SYNC WITH THE REGEX BELOW!!!\n\t\tthis.value = `adminOnlyDummyId-${enumerabilityPreventingEntropy}-${UnpersistedEntityDummyId.getNextSeed()}`\n\t}\n\n\tprivate static entropyLength = 5\n\tprivate static dummyIdRegex = new RegExp(`^adminOnlyDummyId-\\\\d{${UnpersistedEntityDummyId.entropyLength}}-\\\\d+$`)\n\tpublic static matchesDummyId(candidate: EntityId): boolean {\n\t\treturn typeof candidate === 'string' && UnpersistedEntityDummyId.dummyIdRegex.test(candidate)\n\t}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport type RuntimeId = ServerId | ClientGeneratedUuid | UnpersistedEntityDummyId\n"],"names":["_UnpersistedEntityDummyId","generateEnumerabilityPreventingEntropy"],"mappings":";;;;;;AAWO,MAAM,SAAkC;AAAA,EAIvC,YAA4B,OAAiC,YAAoB;AAArD,SAAA,QAAA;AAAiC,SAAA,aAAA;AAAA,EACpE;AAAA,EAJA,IAAW,iBAAuB;AACjC,WAAO;AAAA,EACR;AAAA,EAIA,IAAI,cAAc;AACjB,WAAO,SAAS,kBAAkB,KAAK,OAAO,KAAK,UAAU;AAAA,EAC9D;AAAA,EAEA,OAAO,kBAAkB,IAAc,YAAoC;AAC1E,WAAO,GAAG,UAAU,IAAI,EAAE;AAAA,EAC3B;AACD;AAEO,MAAM,oBAA6C;AAAA,EAIlD,YAA4B,OAAe;AAAf,SAAA,QAAA;AAAA,EAAgB;AAAA,EAHnD,IAAW,iBAAwB;AAClC,WAAO;AAAA,EACR;AAAA,EAGA,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EACb;AACD;AAEO,MAAM,4BAAN,MAAMA,2BAAkD;AAAA,EAWvD,cAAc;AAPrB,kBAAA,MAAgB,OAAA;AAQf,UAAM,iCAAiCC,uCAAAA;AAAAA,MACtCD,2BAAyB;AAAA,IAAA;AAI1B,SAAK,QAAQ,oBAAoB,8BAA8B,IAAIA,2BAAyB,aAAa;AAAA,EAC1G;AAAA,EAjBA,IAAW,iBAAwB;AAClC,WAAO;AAAA,EACR;AAAA,EAmBA,OAAc,eAAe,WAA8B;AAC1D,WAAO,OAAO,cAAc,YAAYA,2BAAyB,aAAa,KAAK,SAAS;AAAA,EAC7F;AAAA,EAEA,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EACb;AACD;AAvBC,cANY,2BAMG,eAAe,uBAAM;AACnC,MAAI,OAAO;AACX,SAAO,MAAM;AACd,IAAG;AAWH,cApBY,2BAoBG,iBAAgB,CAAA;AAC/B,cArBY,2BAqBG,gBAAe,IAAI,OAAO,yBAAyB,0BAAyB,aAAa,SAAS,CAAA;AArB3G,IAAM,2BAAN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeId.js","sources":["../../../../packages/binding-common/src/RuntimeId.ts"],"sourcesContent":["import { generateEnumerabilityPreventingEntropy } from './utils/generateEnumerabilityPreventingEntropy'\nimport { EntityId } from './treeParameters'\n\nexport type UniqueEntityId = string & { __type: 'UniqueEntityId' }\n\nexport interface RuntimeIdSpec {\n\texistsOnServer: boolean\n\tvalue: EntityId\n\tuniqueValue: UniqueEntityId\n}\n\nexport class ServerId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): true {\n\t\treturn true\n\t}\n\tpublic constructor(public readonly value: EntityId, public readonly entityName: string) {\n\t}\n\n\tget uniqueValue() {\n\t\treturn ServerId.formatUniqueValue(this.value, this.entityName)\n\t}\n\n\tstatic formatUniqueValue(id: EntityId, entityName: string): UniqueEntityId {\n\t\treturn `${entityName}_${id}` as UniqueEntityId\n\t}\n}\n\nexport class ClientGeneratedUuid implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic constructor(public readonly value: string) {}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport class UnpersistedEntityDummyId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic readonly value: string\n\n\tprivate static getNextSeed = (() => {\n\t\tlet seed = 0\n\t\treturn () => seed++\n\t})()\n\n\tpublic constructor() {\n\t\tconst enumerabilityPreventingEntropy = generateEnumerabilityPreventingEntropy(\n\t\t\tUnpersistedEntityDummyId.entropyLength,\n\t\t)\n\n\t\t// KEEP THIS IN SYNC WITH THE REGEX BELOW!!!\n\t\tthis.value = `adminOnlyDummyId-${enumerabilityPreventingEntropy}-${UnpersistedEntityDummyId.getNextSeed()}`\n\t}\n\n\tprivate static entropyLength = 5\n\tprivate static dummyIdRegex = new RegExp(`^adminOnlyDummyId-\\\\d{${UnpersistedEntityDummyId.entropyLength}}-\\\\d+$`)\n\tpublic static matchesDummyId(candidate: EntityId): boolean {\n\t\treturn typeof candidate === 'string' && UnpersistedEntityDummyId.dummyIdRegex.test(candidate)\n\t}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport type RuntimeId = ServerId | ClientGeneratedUuid | UnpersistedEntityDummyId\n"],"names":["_UnpersistedEntityDummyId"],"mappings":";;;;AAWO,MAAM,SAAkC;AAAA,EAIvC,YAA4B,OAAiC,YAAoB;AAArD,SAAA,QAAA;AAAiC,SAAA,aAAA;AAAA,EAAA;AAAA,EAHpE,IAAW,iBAAuB;AAC1B,WAAA;AAAA,EAAA;AAAA,EAKR,IAAI,cAAc;AACjB,WAAO,SAAS,kBAAkB,KAAK,OAAO,KAAK,UAAU;AAAA,EAAA;AAAA,EAG9D,OAAO,kBAAkB,IAAc,YAAoC;AACnE,WAAA,GAAG,UAAU,IAAI,EAAE;AAAA,EAAA;AAE5B;AAEO,MAAM,oBAA6C;AAAA,EAIlD,YAA4B,OAAe;AAAf,SAAA,QAAA;AAAA,EAAA;AAAA,EAHnC,IAAW,iBAAwB;AAC3B,WAAA;AAAA,EAAA;AAAA,EAIR,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EAAA;AAEd;AAEO,MAAM,4BAAN,MAAMA,2BAAkD;AAAA,EAWvD,cAAc;AAPL,kBAAA,MAAA,OAAA;AAQf,UAAM,iCAAiC;AAAA,MACtCA,2BAAyB;AAAA,IAC1B;AAGA,SAAK,QAAQ,oBAAoB,8BAA8B,IAAIA,2BAAyB,aAAa;AAAA,EAAA;AAAA,EAhB1G,IAAW,iBAAwB;AAC3B,WAAA;AAAA,EAAA;AAAA,EAoBR,OAAc,eAAe,WAA8B;AAC1D,WAAO,OAAO,cAAc,YAAYA,2BAAyB,aAAa,KAAK,SAAS;AAAA,EAAA;AAAA,EAG7F,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EAAA;AAEd;AAvBC,cANY,2BAMG,eAAqB,uBAAA;AACnC,MAAI,OAAO;AACX,SAAO,MAAM;AACd,IAAG;AAWH,cApBY,2BAoBG,iBAAgB,CAAA;AAC/B,cArBY,2BAqBG,gBAAe,IAAI,OAAO,yBAAyB,0BAAyB,aAAa,SAAS,CAAA;AArB3G,IAAM,2BAAN;"}
1
+ {"version":3,"file":"RuntimeId.js","sources":["../../../../packages/binding-common/src/RuntimeId.ts"],"sourcesContent":["import { generateEnumerabilityPreventingEntropy } from './utils/generateEnumerabilityPreventingEntropy'\nimport { EntityId } from './treeParameters'\n\nexport type UniqueEntityId = string & { __type: 'UniqueEntityId' }\n\nexport interface RuntimeIdSpec {\n\texistsOnServer: boolean\n\tvalue: EntityId\n\tuniqueValue: UniqueEntityId\n}\n\nexport class ServerId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): true {\n\t\treturn true\n\t}\n\tpublic constructor(public readonly value: EntityId, public readonly entityName: string) {\n\t}\n\n\tget uniqueValue() {\n\t\treturn ServerId.formatUniqueValue(this.value, this.entityName)\n\t}\n\n\tstatic formatUniqueValue(id: EntityId, entityName: string): UniqueEntityId {\n\t\treturn `${entityName}_${id}` as UniqueEntityId\n\t}\n}\n\nexport class ClientGeneratedUuid implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic constructor(public readonly value: string) {}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport class UnpersistedEntityDummyId implements RuntimeIdSpec {\n\tpublic get existsOnServer(): false {\n\t\treturn false\n\t}\n\tpublic readonly value: string\n\n\tprivate static getNextSeed = (() => {\n\t\tlet seed = 0\n\t\treturn () => seed++\n\t})()\n\n\tpublic constructor() {\n\t\tconst enumerabilityPreventingEntropy = generateEnumerabilityPreventingEntropy(\n\t\t\tUnpersistedEntityDummyId.entropyLength,\n\t\t)\n\n\t\t// KEEP THIS IN SYNC WITH THE REGEX BELOW!!!\n\t\tthis.value = `adminOnlyDummyId-${enumerabilityPreventingEntropy}-${UnpersistedEntityDummyId.getNextSeed()}`\n\t}\n\n\tprivate static entropyLength = 5\n\tprivate static dummyIdRegex = new RegExp(`^adminOnlyDummyId-\\\\d{${UnpersistedEntityDummyId.entropyLength}}-\\\\d+$`)\n\tpublic static matchesDummyId(candidate: EntityId): boolean {\n\t\treturn typeof candidate === 'string' && UnpersistedEntityDummyId.dummyIdRegex.test(candidate)\n\t}\n\n\tget uniqueValue() {\n\t\treturn this.value as UniqueEntityId\n\t}\n}\n\nexport type RuntimeId = ServerId | ClientGeneratedUuid | UnpersistedEntityDummyId\n"],"names":["_UnpersistedEntityDummyId"],"mappings":";;;;AAWO,MAAM,SAAkC;AAAA,EAIvC,YAA4B,OAAiC,YAAoB;AAArD,SAAA,QAAA;AAAiC,SAAA,aAAA;AAAA,EACpE;AAAA,EAJA,IAAW,iBAAuB;AACjC,WAAO;AAAA,EACR;AAAA,EAIA,IAAI,cAAc;AACjB,WAAO,SAAS,kBAAkB,KAAK,OAAO,KAAK,UAAU;AAAA,EAC9D;AAAA,EAEA,OAAO,kBAAkB,IAAc,YAAoC;AAC1E,WAAO,GAAG,UAAU,IAAI,EAAE;AAAA,EAC3B;AACD;AAEO,MAAM,oBAA6C;AAAA,EAIlD,YAA4B,OAAe;AAAf,SAAA,QAAA;AAAA,EAAgB;AAAA,EAHnD,IAAW,iBAAwB;AAClC,WAAO;AAAA,EACR;AAAA,EAGA,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EACb;AACD;AAEO,MAAM,4BAAN,MAAMA,2BAAkD;AAAA,EAWvD,cAAc;AAPrB,kBAAA,MAAgB,OAAA;AAQf,UAAM,iCAAiC;AAAA,MACtCA,2BAAyB;AAAA,IAAA;AAI1B,SAAK,QAAQ,oBAAoB,8BAA8B,IAAIA,2BAAyB,aAAa;AAAA,EAC1G;AAAA,EAjBA,IAAW,iBAAwB;AAClC,WAAO;AAAA,EACR;AAAA,EAmBA,OAAc,eAAe,WAA8B;AAC1D,WAAO,OAAO,cAAc,YAAYA,2BAAyB,aAAa,KAAK,SAAS;AAAA,EAC7F;AAAA,EAEA,IAAI,cAAc;AACjB,WAAO,KAAK;AAAA,EACb;AACD;AAvBC,cANY,2BAMG,eAAe,uBAAM;AACnC,MAAI,OAAO;AACX,SAAO,MAAM;AACd,IAAG;AAWH,cApBY,2BAoBG,iBAAgB,CAAA;AAC/B,cArBY,2BAqBG,gBAAe,IAAI,OAAO,yBAAyB,0BAAyB,aAAa,SAAS,CAAA;AArB3G,IAAM,2BAAN;"}
@@ -175,8 +175,10 @@ class Environment {
175
175
  }
176
176
  for (const key in other.options.variables) {
177
177
  if (key in this.options.variables && !equal(this.options.variables[key], other.options.variables[key])) {
178
- throw new BindingError.BindingError(`Cannot merge two environments with different value of variable ${key}:
179
- ` + JSON.stringify(this.options.variables[key]) + "\n" + JSON.stringify(other.options.variables[key]));
178
+ throw new BindingError.BindingError(
179
+ `Cannot merge two environments with different value of variable ${key}:
180
+ ` + JSON.stringify(this.options.variables[key]) + "\n" + JSON.stringify(other.options.variables[key])
181
+ );
180
182
  }
181
183
  }
182
184
  return new Environment({
@@ -1 +1 @@
1
- {"version":3,"file":"Environment.cjs","sources":["../../../../../packages/binding-common/src/environment/Environment.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\nimport type { Filter } from '../treeParameters'\nimport equal from 'fast-deep-equal/es6/index.js'\nimport { Schema, SchemaColumn, SchemaEntity, SchemaRelation } from '../schema'\n\nclass Environment<Node extends Environment.AnyNode | undefined = Environment.AnyNode | undefined> {\n\tprivate constructor(\n\t\tprivate readonly options: Environment.Options<Node>,\n\t) {\n\t}\n\n\tpublic static create() {\n\t\treturn new Environment({\n\t\t\tdimensions: {},\n\t\t\tvariables: {},\n\t\t\tparameters: {},\n\t\t\textensions: new Map(),\n\t\t})\n\t}\n\n\tpublic getSubTree(): Environment.SubTreeNode {\n\t\tfor (let env: Environment = this; env.options.node; env = env.getParent()) {\n\t\t\tconst node = env.options.node\n\t\t\tif (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {\n\t\t\t\treturn node\n\t\t\t}\n\t\t}\n\t\tthrow new BindingError('Not in a SubTree')\n\t}\n\n\tpublic getSubTreeNode(): Node & Environment.AnyNode {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn this.options.node\n\t}\n\n\tpublic withSubTree<Node extends Environment.SubTreeNode>(SubTree: Node): Environment<Node> {\n\t\tconst { parent, ...options } = this.options\n\t\treturn new Environment({\n\t\t\t...options,\n\t\t\tnode: SubTree,\n\t\t})\n\t}\n\n\tpublic withSubTreeChild<Node extends Environment.InnerNode>(node: Node): Environment<Node> {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError(`Cannot call withSubTreeChild without previous call of withSubTree`)\n\t\t}\n\t\tif (this.options.node.entity.fields.get(node.field.name) !== node.field) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tnode,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\n\tpublic hasVariable(key: string): boolean {\n\t\treturn key in this.options.variables\n\t}\n\n\tpublic getVariable<V extends Environment.Value = Environment.Value>(key: string): V {\n\t\tif (!(key in this.options.variables)) {\n\t\t\tthrow new BindingError(`Variable ${key} not found`)\n\t\t}\n\t\treturn this.options.variables[key] as V\n\t}\n\n\tpublic getVariableOrElse<F, V extends Environment.Value = Environment.Value>(key: string, fallback: F): V | F {\n\t\treturn (this.options.variables[key] as V) ?? fallback\n\t}\n\n\n\tpublic withVariables(variables: Environment.ValuesMapWithFactory | undefined): Environment {\n\t\tif (variables === undefined) {\n\t\t\treturn this\n\t\t}\n\t\tconst newVariables = { ...this.options.variables }\n\t\tfor (const [newName, newValue] of Object.entries(variables)) {\n\t\t\tconst resolvedValue = typeof newValue === 'function' ? newValue(this) : newValue\n\t\t\tif (resolvedValue === undefined) {\n\t\t\t\tdelete newVariables[newName]\n\t\t\t} else {\n\t\t\t\tnewVariables[newName] = resolvedValue\n\t\t\t}\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tvariables: newVariables,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\tpublic getAllVariables() {\n\t\treturn this.options.variables\n\t}\n\n\tpublic hasParameter(key: string): boolean {\n\t\treturn key in this.options.parameters\n\t}\n\n\tpublic getParameter<F>(key: string): string | number {\n\t\tif (!(key in this.options.parameters)) {\n\t\t\tthrow new BindingError(`Parameter ${key} not found`)\n\t\t}\n\t\treturn this.options.parameters[key] as string | number\n\t}\n\n\tpublic getParameterOrElse<F>(key: string, fallback: F): string | number | F {\n\t\treturn this.options.parameters[key] ?? fallback\n\t}\n\n\tpublic getAllParameters() {\n\t\treturn this.options.parameters\n\t}\n\n\tpublic withParameters(parameters: Environment.Parameters): Environment {\n\t\treturn new Environment({ ...this.options, parameters })\n\t}\n\n\tpublic hasDimension(dimensionName: string): boolean {\n\t\treturn dimensionName in this.options.dimensions\n\t}\n\n\tpublic getDimension<F>(dimensionName: string): string[] {\n\t\tif (!(dimensionName in this.options.dimensions)) {\n\t\t\tthrow new BindingError(`Dimension ${dimensionName} does not exist.`)\n\t\t}\n\t\treturn this.options.dimensions[dimensionName]\n\t}\n\n\tpublic getDimensionOrElse<F>(dimensionName: string, fallback: F): string[] | F {\n\t\treturn this.options.dimensions[dimensionName] ?? fallback\n\t}\n\n\tpublic getAllDimensions(): Environment.SelectedDimensions {\n\t\treturn this.options.dimensions\n\t}\n\n\tpublic withDimensions(dimensions: Environment.SelectedDimensions): Environment {\n\t\tconst newDimensions = {\n\t\t\t...this.options.dimensions,\n\t\t\t...dimensions,\n\t\t}\n\t\tif (equal(newDimensions, this.options.dimensions)) {\n\t\t\treturn this\n\t\t}\n\t\treturn new Environment({ ...this.options, dimensions: newDimensions })\n\t}\n\n\thasSchema(): boolean {\n\t\treturn this.options.schema !== undefined\n\t}\n\n\tpublic getSchema(): Schema {\n\t\tif (!this.options.schema) {\n\t\t\tthrow new BindingError('Schema is not set')\n\t\t}\n\t\treturn this.options.schema\n\t}\n\n\tpublic withSchema(schema: Schema): Environment {\n\t\treturn new Environment({ ...this.options, schema })\n\t}\n\n\tpublic getParent(): Environment {\n\t\tif (!this.options.parent) {\n\t\t\tthrow new BindingError('There is no parent environment')\n\t\t}\n\t\treturn this.options.parent\n\t}\n\n\tpublic withExtension<S, R>(extension: Environment.Extension<S, R>, state: S): Environment {\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\textensions: new Map([...this.options.extensions, [extension, state] as [Environment.Extension<unknown, unknown>, unknown]]),\n\t\t})\n\t}\n\n\tpublic getExtension<S, R>(extension: Environment.Extension<S, R>): R {\n\t\tconst state = this.options.extensions.get(extension as Environment.Extension<unknown, unknown>)\n\t\treturn extension.create(state as S, this)\n\t}\n\n\tpublic merge(other: Environment): Environment {\n\t\tif (other === this) {\n\t\t\treturn this\n\t\t}\n\t\tif (!equal(this.options.node, other.options.node)) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different tree position.`)\n\t\t}\n\t\tif (this.options.parameters !== other.options.parameters) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different parameters.`)\n\t\t}\n\t\tif (this.options.dimensions !== other.options.dimensions) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different dimensions.`)\n\t\t}\n\t\tif (this.options.extensions !== other.options.extensions) {\n\t\t\t// todo: deep compare?\n\t\t\tthrow new BindingError(`Cannot merge two environments with different extensions.`)\n\t\t}\n\n\t\tif (equal(this.options.variables, other.options.variables) && this.options.parent === other.options.parent) {\n\t\t\treturn this\n\t\t}\n\t\tfor (const key in other.options.variables) {\n\t\t\tif (key in this.options.variables && !equal(this.options.variables[key], other.options.variables[key])) {\n\t\t\t\tthrow new BindingError(`Cannot merge two environments with different value of variable ${key}:\\n`\n\t\t\t\t\t+ JSON.stringify(this.options.variables[key]) + '\\n'\n\t\t\t\t\t+ JSON.stringify(other.options.variables[key]))\n\t\t\t}\n\t\t}\n\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tparent: this.options.parent && other.options.parent ? this.options.parent.merge(other.options.parent) : undefined,\n\t\t\tvariables: { ...this.options.variables, ...other.options.variables },\n\t\t})\n\t}\n}\n\nnamespace Environment {\n\texport type Name = string\n\n\texport type Value = unknown\n\n\texport type ResolvedValue = Value\n\n\texport interface Options<Node extends AnyNode | undefined> {\n\t\tnode?: Node\n\t\tschema?: Schema\n\t\tdimensions: SelectedDimensions\n\t\tparameters: Parameters\n\t\tvariables: CustomVariables\n\t\tparent?: Environment\n\t\textensions: Map<Extension<unknown, unknown>, unknown>\n\t}\n\n\texport type SubTreeNode =\n\t\t| SubTreeEntityNode\n\t\t| SubTreeEntityListNode\n\n\texport type InnerNode =\n\t\t| EntityNode\n\t\t| EntityListNode\n\t\t| ColumnNode\n\n\texport type AnyNode =\n\t\t| SubTreeNode\n\t\t| InnerNode\n\n\texport interface SubTreeEntityNode {\n\t\ttype: 'subtree-entity'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero' | 'one' | 'zero-or-one'\n\t\tfilter: Filter\n\t}\n\n\texport interface SubTreeEntityListNode {\n\t\ttype: 'subtree-entity-list'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero-to-many' | 'zero'\n\t\tfilter: Filter\n\t}\n\n\texport interface EntityNode {\n\t\ttype: 'entity'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface EntityListNode {\n\t\ttype: 'entity-list'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface ColumnNode {\n\t\ttype: 'column'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaColumn\n\t}\n\n\texport interface SelectedDimensions {\n\t\t[key: string]: string[]\n\t}\n\n\texport type Parameters = {\n\t\t[K in string]?: string | number\n\t}\n\n\texport interface CustomVariables {\n\t\t[key: string]: Value\n\t}\n\n\texport interface ValuesMapWithFactory {\n\t\t[key: string]:\n\t\t\t| ((environment: Environment) => Value)\n\t\t\t| Value\n\t}\n\n\texport type Extension<State, Result> = {\n\t\tcreate: (state: State | undefined, environment: Environment) => Result\n\t}\n\n\texport const createExtension = <S, R>(create: Extension<S, R>['create'], otherMethods?: Omit<Extension<S, R>, 'create'>): Extension<S, R> => {\n\t\treturn {\n\t\t\tcreate,\n\t\t\t...otherMethods,\n\t\t}\n\t}\n}\n\nexport { Environment }\n"],"names":["BindingError","Environment"],"mappings":"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"}
1
+ {"version":3,"file":"Environment.cjs","sources":["../../../../../packages/binding-common/src/environment/Environment.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\nimport type { Filter } from '../treeParameters'\nimport equal from 'fast-deep-equal/es6/index.js'\nimport { Schema, SchemaColumn, SchemaEntity, SchemaRelation } from '../schema'\n\nclass Environment<Node extends Environment.AnyNode | undefined = Environment.AnyNode | undefined> {\n\tprivate constructor(\n\t\tprivate readonly options: Environment.Options<Node>,\n\t) {\n\t}\n\n\tpublic static create() {\n\t\treturn new Environment({\n\t\t\tdimensions: {},\n\t\t\tvariables: {},\n\t\t\tparameters: {},\n\t\t\textensions: new Map(),\n\t\t})\n\t}\n\n\tpublic getSubTree(): Environment.SubTreeNode {\n\t\tfor (let env: Environment = this; env.options.node; env = env.getParent()) {\n\t\t\tconst node = env.options.node\n\t\t\tif (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {\n\t\t\t\treturn node\n\t\t\t}\n\t\t}\n\t\tthrow new BindingError('Not in a SubTree')\n\t}\n\n\tpublic getSubTreeNode(): Node & Environment.AnyNode {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn this.options.node\n\t}\n\n\tpublic withSubTree<Node extends Environment.SubTreeNode>(SubTree: Node): Environment<Node> {\n\t\tconst { parent, ...options } = this.options\n\t\treturn new Environment({\n\t\t\t...options,\n\t\t\tnode: SubTree,\n\t\t})\n\t}\n\n\tpublic withSubTreeChild<Node extends Environment.InnerNode>(node: Node): Environment<Node> {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError(`Cannot call withSubTreeChild without previous call of withSubTree`)\n\t\t}\n\t\tif (this.options.node.entity.fields.get(node.field.name) !== node.field) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tnode,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\tpublic hasVariable(key: string): boolean {\n\t\treturn key in this.options.variables\n\t}\n\n\tpublic getVariable<V extends Environment.Value = Environment.Value>(key: string): V {\n\t\tif (!(key in this.options.variables)) {\n\t\t\tthrow new BindingError(`Variable ${key} not found`)\n\t\t}\n\t\treturn this.options.variables[key] as V\n\t}\n\n\tpublic getVariableOrElse<F, V extends Environment.Value = Environment.Value>(key: string, fallback: F): V | F {\n\t\treturn (this.options.variables[key] as V) ?? fallback\n\t}\n\n\tpublic withVariables(variables: Environment.ValuesMapWithFactory | undefined): Environment {\n\t\tif (variables === undefined) {\n\t\t\treturn this\n\t\t}\n\t\tconst newVariables = { ...this.options.variables }\n\t\tfor (const [newName, newValue] of Object.entries(variables)) {\n\t\t\tconst resolvedValue = typeof newValue === 'function' ? newValue(this) : newValue\n\t\t\tif (resolvedValue === undefined) {\n\t\t\t\tdelete newVariables[newName]\n\t\t\t} else {\n\t\t\t\tnewVariables[newName] = resolvedValue\n\t\t\t}\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tvariables: newVariables,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\tpublic getAllVariables() {\n\t\treturn this.options.variables\n\t}\n\n\tpublic hasParameter(key: string): boolean {\n\t\treturn key in this.options.parameters\n\t}\n\n\tpublic getParameter<F>(key: string): string | number {\n\t\tif (!(key in this.options.parameters)) {\n\t\t\tthrow new BindingError(`Parameter ${key} not found`)\n\t\t}\n\t\treturn this.options.parameters[key] as string | number\n\t}\n\n\tpublic getParameterOrElse<F>(key: string, fallback: F): string | number | F {\n\t\treturn this.options.parameters[key] ?? fallback\n\t}\n\n\tpublic getAllParameters() {\n\t\treturn this.options.parameters\n\t}\n\n\tpublic withParameters(parameters: Environment.Parameters): Environment {\n\t\treturn new Environment({ ...this.options, parameters })\n\t}\n\n\tpublic hasDimension(dimensionName: string): boolean {\n\t\treturn dimensionName in this.options.dimensions\n\t}\n\n\tpublic getDimension<F>(dimensionName: string): string[] {\n\t\tif (!(dimensionName in this.options.dimensions)) {\n\t\t\tthrow new BindingError(`Dimension ${dimensionName} does not exist.`)\n\t\t}\n\t\treturn this.options.dimensions[dimensionName]\n\t}\n\n\tpublic getDimensionOrElse<F>(dimensionName: string, fallback: F): string[] | F {\n\t\treturn this.options.dimensions[dimensionName] ?? fallback\n\t}\n\n\tpublic getAllDimensions(): Environment.SelectedDimensions {\n\t\treturn this.options.dimensions\n\t}\n\n\tpublic withDimensions(dimensions: Environment.SelectedDimensions): Environment {\n\t\tconst newDimensions = {\n\t\t\t...this.options.dimensions,\n\t\t\t...dimensions,\n\t\t}\n\t\tif (equal(newDimensions, this.options.dimensions)) {\n\t\t\treturn this\n\t\t}\n\t\treturn new Environment({ ...this.options, dimensions: newDimensions })\n\t}\n\n\thasSchema(): boolean {\n\t\treturn this.options.schema !== undefined\n\t}\n\n\tpublic getSchema(): Schema {\n\t\tif (!this.options.schema) {\n\t\t\tthrow new BindingError('Schema is not set')\n\t\t}\n\t\treturn this.options.schema\n\t}\n\n\tpublic withSchema(schema: Schema): Environment {\n\t\treturn new Environment({ ...this.options, schema })\n\t}\n\n\tpublic getParent(): Environment {\n\t\tif (!this.options.parent) {\n\t\t\tthrow new BindingError('There is no parent environment')\n\t\t}\n\t\treturn this.options.parent\n\t}\n\n\tpublic withExtension<S, R>(extension: Environment.Extension<S, R>, state: S): Environment {\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\textensions: new Map([...this.options.extensions, [extension, state] as [Environment.Extension<unknown, unknown>, unknown]]),\n\t\t})\n\t}\n\n\tpublic getExtension<S, R>(extension: Environment.Extension<S, R>): R {\n\t\tconst state = this.options.extensions.get(extension as Environment.Extension<unknown, unknown>)\n\t\treturn extension.create(state as S, this)\n\t}\n\n\tpublic merge(other: Environment): Environment {\n\t\tif (other === this) {\n\t\t\treturn this\n\t\t}\n\t\tif (!equal(this.options.node, other.options.node)) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different tree position.`)\n\t\t}\n\t\tif (this.options.parameters !== other.options.parameters) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different parameters.`)\n\t\t}\n\t\tif (this.options.dimensions !== other.options.dimensions) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different dimensions.`)\n\t\t}\n\t\tif (this.options.extensions !== other.options.extensions) {\n\t\t\t// todo: deep compare?\n\t\t\tthrow new BindingError(`Cannot merge two environments with different extensions.`)\n\t\t}\n\n\t\tif (equal(this.options.variables, other.options.variables) && this.options.parent === other.options.parent) {\n\t\t\treturn this\n\t\t}\n\t\tfor (const key in other.options.variables) {\n\t\t\tif (key in this.options.variables && !equal(this.options.variables[key], other.options.variables[key])) {\n\t\t\t\tthrow new BindingError(\n\t\t\t\t\t`Cannot merge two environments with different value of variable ${key}:\\n`\n\t\t\t\t\t\t+ JSON.stringify(this.options.variables[key]) + '\\n'\n\t\t\t\t\t\t+ JSON.stringify(other.options.variables[key]),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tparent: this.options.parent && other.options.parent ? this.options.parent.merge(other.options.parent) : undefined,\n\t\t\tvariables: { ...this.options.variables, ...other.options.variables },\n\t\t})\n\t}\n}\n\nnamespace Environment {\n\texport type Name = string\n\n\texport type Value = unknown\n\n\texport type ResolvedValue = Value\n\n\texport interface Options<Node extends AnyNode | undefined> {\n\t\tnode?: Node\n\t\tschema?: Schema\n\t\tdimensions: SelectedDimensions\n\t\tparameters: Parameters\n\t\tvariables: CustomVariables\n\t\tparent?: Environment\n\t\textensions: Map<Extension<unknown, unknown>, unknown>\n\t}\n\n\texport type SubTreeNode =\n\t\t| SubTreeEntityNode\n\t\t| SubTreeEntityListNode\n\n\texport type InnerNode =\n\t\t| EntityNode\n\t\t| EntityListNode\n\t\t| ColumnNode\n\n\texport type AnyNode =\n\t\t| SubTreeNode\n\t\t| InnerNode\n\n\texport interface SubTreeEntityNode {\n\t\ttype: 'subtree-entity'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero' | 'one' | 'zero-or-one'\n\t\tfilter: Filter\n\t}\n\n\texport interface SubTreeEntityListNode {\n\t\ttype: 'subtree-entity-list'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero-to-many' | 'zero'\n\t\tfilter: Filter\n\t}\n\n\texport interface EntityNode {\n\t\ttype: 'entity'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface EntityListNode {\n\t\ttype: 'entity-list'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface ColumnNode {\n\t\ttype: 'column'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaColumn\n\t}\n\n\texport interface SelectedDimensions {\n\t\t[key: string]: string[]\n\t}\n\n\texport type Parameters = {\n\t\t[K in string]?: string | number\n\t}\n\n\texport interface CustomVariables {\n\t\t[key: string]: Value\n\t}\n\n\texport interface ValuesMapWithFactory {\n\t\t[key: string]:\n\t\t\t| ((environment: Environment) => Value)\n\t\t\t| Value\n\t}\n\n\texport type Extension<State, Result> = {\n\t\tcreate: (state: State | undefined, environment: Environment) => Result\n\t}\n\n\texport const createExtension = <S, R>(create: Extension<S, R>['create'], otherMethods?: Omit<Extension<S, R>, 'create'>): Extension<S, R> => {\n\t\treturn {\n\t\t\tcreate,\n\t\t\t...otherMethods,\n\t\t}\n\t}\n}\n\nexport { Environment }\n"],"names":["BindingError","Environment"],"mappings":"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"}
@@ -173,8 +173,10 @@ class Environment {
173
173
  }
174
174
  for (const key in other.options.variables) {
175
175
  if (key in this.options.variables && !equal(this.options.variables[key], other.options.variables[key])) {
176
- throw new BindingError(`Cannot merge two environments with different value of variable ${key}:
177
- ` + JSON.stringify(this.options.variables[key]) + "\n" + JSON.stringify(other.options.variables[key]));
176
+ throw new BindingError(
177
+ `Cannot merge two environments with different value of variable ${key}:
178
+ ` + JSON.stringify(this.options.variables[key]) + "\n" + JSON.stringify(other.options.variables[key])
179
+ );
178
180
  }
179
181
  }
180
182
  return new Environment({
@@ -1 +1 @@
1
- {"version":3,"file":"Environment.js","sources":["../../../../../packages/binding-common/src/environment/Environment.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\nimport type { Filter } from '../treeParameters'\nimport equal from 'fast-deep-equal/es6/index.js'\nimport { Schema, SchemaColumn, SchemaEntity, SchemaRelation } from '../schema'\n\nclass Environment<Node extends Environment.AnyNode | undefined = Environment.AnyNode | undefined> {\n\tprivate constructor(\n\t\tprivate readonly options: Environment.Options<Node>,\n\t) {\n\t}\n\n\tpublic static create() {\n\t\treturn new Environment({\n\t\t\tdimensions: {},\n\t\t\tvariables: {},\n\t\t\tparameters: {},\n\t\t\textensions: new Map(),\n\t\t})\n\t}\n\n\tpublic getSubTree(): Environment.SubTreeNode {\n\t\tfor (let env: Environment = this; env.options.node; env = env.getParent()) {\n\t\t\tconst node = env.options.node\n\t\t\tif (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {\n\t\t\t\treturn node\n\t\t\t}\n\t\t}\n\t\tthrow new BindingError('Not in a SubTree')\n\t}\n\n\tpublic getSubTreeNode(): Node & Environment.AnyNode {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn this.options.node\n\t}\n\n\tpublic withSubTree<Node extends Environment.SubTreeNode>(SubTree: Node): Environment<Node> {\n\t\tconst { parent, ...options } = this.options\n\t\treturn new Environment({\n\t\t\t...options,\n\t\t\tnode: SubTree,\n\t\t})\n\t}\n\n\tpublic withSubTreeChild<Node extends Environment.InnerNode>(node: Node): Environment<Node> {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError(`Cannot call withSubTreeChild without previous call of withSubTree`)\n\t\t}\n\t\tif (this.options.node.entity.fields.get(node.field.name) !== node.field) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tnode,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\n\tpublic hasVariable(key: string): boolean {\n\t\treturn key in this.options.variables\n\t}\n\n\tpublic getVariable<V extends Environment.Value = Environment.Value>(key: string): V {\n\t\tif (!(key in this.options.variables)) {\n\t\t\tthrow new BindingError(`Variable ${key} not found`)\n\t\t}\n\t\treturn this.options.variables[key] as V\n\t}\n\n\tpublic getVariableOrElse<F, V extends Environment.Value = Environment.Value>(key: string, fallback: F): V | F {\n\t\treturn (this.options.variables[key] as V) ?? fallback\n\t}\n\n\n\tpublic withVariables(variables: Environment.ValuesMapWithFactory | undefined): Environment {\n\t\tif (variables === undefined) {\n\t\t\treturn this\n\t\t}\n\t\tconst newVariables = { ...this.options.variables }\n\t\tfor (const [newName, newValue] of Object.entries(variables)) {\n\t\t\tconst resolvedValue = typeof newValue === 'function' ? newValue(this) : newValue\n\t\t\tif (resolvedValue === undefined) {\n\t\t\t\tdelete newVariables[newName]\n\t\t\t} else {\n\t\t\t\tnewVariables[newName] = resolvedValue\n\t\t\t}\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tvariables: newVariables,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\tpublic getAllVariables() {\n\t\treturn this.options.variables\n\t}\n\n\tpublic hasParameter(key: string): boolean {\n\t\treturn key in this.options.parameters\n\t}\n\n\tpublic getParameter<F>(key: string): string | number {\n\t\tif (!(key in this.options.parameters)) {\n\t\t\tthrow new BindingError(`Parameter ${key} not found`)\n\t\t}\n\t\treturn this.options.parameters[key] as string | number\n\t}\n\n\tpublic getParameterOrElse<F>(key: string, fallback: F): string | number | F {\n\t\treturn this.options.parameters[key] ?? fallback\n\t}\n\n\tpublic getAllParameters() {\n\t\treturn this.options.parameters\n\t}\n\n\tpublic withParameters(parameters: Environment.Parameters): Environment {\n\t\treturn new Environment({ ...this.options, parameters })\n\t}\n\n\tpublic hasDimension(dimensionName: string): boolean {\n\t\treturn dimensionName in this.options.dimensions\n\t}\n\n\tpublic getDimension<F>(dimensionName: string): string[] {\n\t\tif (!(dimensionName in this.options.dimensions)) {\n\t\t\tthrow new BindingError(`Dimension ${dimensionName} does not exist.`)\n\t\t}\n\t\treturn this.options.dimensions[dimensionName]\n\t}\n\n\tpublic getDimensionOrElse<F>(dimensionName: string, fallback: F): string[] | F {\n\t\treturn this.options.dimensions[dimensionName] ?? fallback\n\t}\n\n\tpublic getAllDimensions(): Environment.SelectedDimensions {\n\t\treturn this.options.dimensions\n\t}\n\n\tpublic withDimensions(dimensions: Environment.SelectedDimensions): Environment {\n\t\tconst newDimensions = {\n\t\t\t...this.options.dimensions,\n\t\t\t...dimensions,\n\t\t}\n\t\tif (equal(newDimensions, this.options.dimensions)) {\n\t\t\treturn this\n\t\t}\n\t\treturn new Environment({ ...this.options, dimensions: newDimensions })\n\t}\n\n\thasSchema(): boolean {\n\t\treturn this.options.schema !== undefined\n\t}\n\n\tpublic getSchema(): Schema {\n\t\tif (!this.options.schema) {\n\t\t\tthrow new BindingError('Schema is not set')\n\t\t}\n\t\treturn this.options.schema\n\t}\n\n\tpublic withSchema(schema: Schema): Environment {\n\t\treturn new Environment({ ...this.options, schema })\n\t}\n\n\tpublic getParent(): Environment {\n\t\tif (!this.options.parent) {\n\t\t\tthrow new BindingError('There is no parent environment')\n\t\t}\n\t\treturn this.options.parent\n\t}\n\n\tpublic withExtension<S, R>(extension: Environment.Extension<S, R>, state: S): Environment {\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\textensions: new Map([...this.options.extensions, [extension, state] as [Environment.Extension<unknown, unknown>, unknown]]),\n\t\t})\n\t}\n\n\tpublic getExtension<S, R>(extension: Environment.Extension<S, R>): R {\n\t\tconst state = this.options.extensions.get(extension as Environment.Extension<unknown, unknown>)\n\t\treturn extension.create(state as S, this)\n\t}\n\n\tpublic merge(other: Environment): Environment {\n\t\tif (other === this) {\n\t\t\treturn this\n\t\t}\n\t\tif (!equal(this.options.node, other.options.node)) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different tree position.`)\n\t\t}\n\t\tif (this.options.parameters !== other.options.parameters) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different parameters.`)\n\t\t}\n\t\tif (this.options.dimensions !== other.options.dimensions) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different dimensions.`)\n\t\t}\n\t\tif (this.options.extensions !== other.options.extensions) {\n\t\t\t// todo: deep compare?\n\t\t\tthrow new BindingError(`Cannot merge two environments with different extensions.`)\n\t\t}\n\n\t\tif (equal(this.options.variables, other.options.variables) && this.options.parent === other.options.parent) {\n\t\t\treturn this\n\t\t}\n\t\tfor (const key in other.options.variables) {\n\t\t\tif (key in this.options.variables && !equal(this.options.variables[key], other.options.variables[key])) {\n\t\t\t\tthrow new BindingError(`Cannot merge two environments with different value of variable ${key}:\\n`\n\t\t\t\t\t+ JSON.stringify(this.options.variables[key]) + '\\n'\n\t\t\t\t\t+ JSON.stringify(other.options.variables[key]))\n\t\t\t}\n\t\t}\n\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tparent: this.options.parent && other.options.parent ? this.options.parent.merge(other.options.parent) : undefined,\n\t\t\tvariables: { ...this.options.variables, ...other.options.variables },\n\t\t})\n\t}\n}\n\nnamespace Environment {\n\texport type Name = string\n\n\texport type Value = unknown\n\n\texport type ResolvedValue = Value\n\n\texport interface Options<Node extends AnyNode | undefined> {\n\t\tnode?: Node\n\t\tschema?: Schema\n\t\tdimensions: SelectedDimensions\n\t\tparameters: Parameters\n\t\tvariables: CustomVariables\n\t\tparent?: Environment\n\t\textensions: Map<Extension<unknown, unknown>, unknown>\n\t}\n\n\texport type SubTreeNode =\n\t\t| SubTreeEntityNode\n\t\t| SubTreeEntityListNode\n\n\texport type InnerNode =\n\t\t| EntityNode\n\t\t| EntityListNode\n\t\t| ColumnNode\n\n\texport type AnyNode =\n\t\t| SubTreeNode\n\t\t| InnerNode\n\n\texport interface SubTreeEntityNode {\n\t\ttype: 'subtree-entity'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero' | 'one' | 'zero-or-one'\n\t\tfilter: Filter\n\t}\n\n\texport interface SubTreeEntityListNode {\n\t\ttype: 'subtree-entity-list'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero-to-many' | 'zero'\n\t\tfilter: Filter\n\t}\n\n\texport interface EntityNode {\n\t\ttype: 'entity'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface EntityListNode {\n\t\ttype: 'entity-list'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface ColumnNode {\n\t\ttype: 'column'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaColumn\n\t}\n\n\texport interface SelectedDimensions {\n\t\t[key: string]: string[]\n\t}\n\n\texport type Parameters = {\n\t\t[K in string]?: string | number\n\t}\n\n\texport interface CustomVariables {\n\t\t[key: string]: Value\n\t}\n\n\texport interface ValuesMapWithFactory {\n\t\t[key: string]:\n\t\t\t| ((environment: Environment) => Value)\n\t\t\t| Value\n\t}\n\n\texport type Extension<State, Result> = {\n\t\tcreate: (state: State | undefined, environment: Environment) => Result\n\t}\n\n\texport const createExtension = <S, R>(create: Extension<S, R>['create'], otherMethods?: Omit<Extension<S, R>, 'create'>): Extension<S, R> => {\n\t\treturn {\n\t\t\tcreate,\n\t\t\t...otherMethods,\n\t\t}\n\t}\n}\n\nexport { Environment }\n"],"names":["Environment"],"mappings":"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"}
1
+ {"version":3,"file":"Environment.js","sources":["../../../../../packages/binding-common/src/environment/Environment.ts"],"sourcesContent":["import { BindingError } from '../BindingError'\nimport type { Filter } from '../treeParameters'\nimport equal from 'fast-deep-equal/es6/index.js'\nimport { Schema, SchemaColumn, SchemaEntity, SchemaRelation } from '../schema'\n\nclass Environment<Node extends Environment.AnyNode | undefined = Environment.AnyNode | undefined> {\n\tprivate constructor(\n\t\tprivate readonly options: Environment.Options<Node>,\n\t) {\n\t}\n\n\tpublic static create() {\n\t\treturn new Environment({\n\t\t\tdimensions: {},\n\t\t\tvariables: {},\n\t\t\tparameters: {},\n\t\t\textensions: new Map(),\n\t\t})\n\t}\n\n\tpublic getSubTree(): Environment.SubTreeNode {\n\t\tfor (let env: Environment = this; env.options.node; env = env.getParent()) {\n\t\t\tconst node = env.options.node\n\t\t\tif (node.type === 'subtree-entity' || node.type === 'subtree-entity-list') {\n\t\t\t\treturn node\n\t\t\t}\n\t\t}\n\t\tthrow new BindingError('Not in a SubTree')\n\t}\n\n\tpublic getSubTreeNode(): Node & Environment.AnyNode {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn this.options.node\n\t}\n\n\tpublic withSubTree<Node extends Environment.SubTreeNode>(SubTree: Node): Environment<Node> {\n\t\tconst { parent, ...options } = this.options\n\t\treturn new Environment({\n\t\t\t...options,\n\t\t\tnode: SubTree,\n\t\t})\n\t}\n\n\tpublic withSubTreeChild<Node extends Environment.InnerNode>(node: Node): Environment<Node> {\n\t\tif (!this.options.node) {\n\t\t\tthrow new BindingError(`Cannot call withSubTreeChild without previous call of withSubTree`)\n\t\t}\n\t\tif (this.options.node.entity.fields.get(node.field.name) !== node.field) {\n\t\t\tthrow new BindingError()\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tnode,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\tpublic hasVariable(key: string): boolean {\n\t\treturn key in this.options.variables\n\t}\n\n\tpublic getVariable<V extends Environment.Value = Environment.Value>(key: string): V {\n\t\tif (!(key in this.options.variables)) {\n\t\t\tthrow new BindingError(`Variable ${key} not found`)\n\t\t}\n\t\treturn this.options.variables[key] as V\n\t}\n\n\tpublic getVariableOrElse<F, V extends Environment.Value = Environment.Value>(key: string, fallback: F): V | F {\n\t\treturn (this.options.variables[key] as V) ?? fallback\n\t}\n\n\tpublic withVariables(variables: Environment.ValuesMapWithFactory | undefined): Environment {\n\t\tif (variables === undefined) {\n\t\t\treturn this\n\t\t}\n\t\tconst newVariables = { ...this.options.variables }\n\t\tfor (const [newName, newValue] of Object.entries(variables)) {\n\t\t\tconst resolvedValue = typeof newValue === 'function' ? newValue(this) : newValue\n\t\t\tif (resolvedValue === undefined) {\n\t\t\t\tdelete newVariables[newName]\n\t\t\t} else {\n\t\t\t\tnewVariables[newName] = resolvedValue\n\t\t\t}\n\t\t}\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tvariables: newVariables,\n\t\t\tparent: this,\n\t\t})\n\t}\n\n\tpublic getAllVariables() {\n\t\treturn this.options.variables\n\t}\n\n\tpublic hasParameter(key: string): boolean {\n\t\treturn key in this.options.parameters\n\t}\n\n\tpublic getParameter<F>(key: string): string | number {\n\t\tif (!(key in this.options.parameters)) {\n\t\t\tthrow new BindingError(`Parameter ${key} not found`)\n\t\t}\n\t\treturn this.options.parameters[key] as string | number\n\t}\n\n\tpublic getParameterOrElse<F>(key: string, fallback: F): string | number | F {\n\t\treturn this.options.parameters[key] ?? fallback\n\t}\n\n\tpublic getAllParameters() {\n\t\treturn this.options.parameters\n\t}\n\n\tpublic withParameters(parameters: Environment.Parameters): Environment {\n\t\treturn new Environment({ ...this.options, parameters })\n\t}\n\n\tpublic hasDimension(dimensionName: string): boolean {\n\t\treturn dimensionName in this.options.dimensions\n\t}\n\n\tpublic getDimension<F>(dimensionName: string): string[] {\n\t\tif (!(dimensionName in this.options.dimensions)) {\n\t\t\tthrow new BindingError(`Dimension ${dimensionName} does not exist.`)\n\t\t}\n\t\treturn this.options.dimensions[dimensionName]\n\t}\n\n\tpublic getDimensionOrElse<F>(dimensionName: string, fallback: F): string[] | F {\n\t\treturn this.options.dimensions[dimensionName] ?? fallback\n\t}\n\n\tpublic getAllDimensions(): Environment.SelectedDimensions {\n\t\treturn this.options.dimensions\n\t}\n\n\tpublic withDimensions(dimensions: Environment.SelectedDimensions): Environment {\n\t\tconst newDimensions = {\n\t\t\t...this.options.dimensions,\n\t\t\t...dimensions,\n\t\t}\n\t\tif (equal(newDimensions, this.options.dimensions)) {\n\t\t\treturn this\n\t\t}\n\t\treturn new Environment({ ...this.options, dimensions: newDimensions })\n\t}\n\n\thasSchema(): boolean {\n\t\treturn this.options.schema !== undefined\n\t}\n\n\tpublic getSchema(): Schema {\n\t\tif (!this.options.schema) {\n\t\t\tthrow new BindingError('Schema is not set')\n\t\t}\n\t\treturn this.options.schema\n\t}\n\n\tpublic withSchema(schema: Schema): Environment {\n\t\treturn new Environment({ ...this.options, schema })\n\t}\n\n\tpublic getParent(): Environment {\n\t\tif (!this.options.parent) {\n\t\t\tthrow new BindingError('There is no parent environment')\n\t\t}\n\t\treturn this.options.parent\n\t}\n\n\tpublic withExtension<S, R>(extension: Environment.Extension<S, R>, state: S): Environment {\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\textensions: new Map([...this.options.extensions, [extension, state] as [Environment.Extension<unknown, unknown>, unknown]]),\n\t\t})\n\t}\n\n\tpublic getExtension<S, R>(extension: Environment.Extension<S, R>): R {\n\t\tconst state = this.options.extensions.get(extension as Environment.Extension<unknown, unknown>)\n\t\treturn extension.create(state as S, this)\n\t}\n\n\tpublic merge(other: Environment): Environment {\n\t\tif (other === this) {\n\t\t\treturn this\n\t\t}\n\t\tif (!equal(this.options.node, other.options.node)) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different tree position.`)\n\t\t}\n\t\tif (this.options.parameters !== other.options.parameters) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different parameters.`)\n\t\t}\n\t\tif (this.options.dimensions !== other.options.dimensions) {\n\t\t\tthrow new BindingError(`Cannot merge two environments with different dimensions.`)\n\t\t}\n\t\tif (this.options.extensions !== other.options.extensions) {\n\t\t\t// todo: deep compare?\n\t\t\tthrow new BindingError(`Cannot merge two environments with different extensions.`)\n\t\t}\n\n\t\tif (equal(this.options.variables, other.options.variables) && this.options.parent === other.options.parent) {\n\t\t\treturn this\n\t\t}\n\t\tfor (const key in other.options.variables) {\n\t\t\tif (key in this.options.variables && !equal(this.options.variables[key], other.options.variables[key])) {\n\t\t\t\tthrow new BindingError(\n\t\t\t\t\t`Cannot merge two environments with different value of variable ${key}:\\n`\n\t\t\t\t\t\t+ JSON.stringify(this.options.variables[key]) + '\\n'\n\t\t\t\t\t\t+ JSON.stringify(other.options.variables[key]),\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\treturn new Environment({\n\t\t\t...this.options,\n\t\t\tparent: this.options.parent && other.options.parent ? this.options.parent.merge(other.options.parent) : undefined,\n\t\t\tvariables: { ...this.options.variables, ...other.options.variables },\n\t\t})\n\t}\n}\n\nnamespace Environment {\n\texport type Name = string\n\n\texport type Value = unknown\n\n\texport type ResolvedValue = Value\n\n\texport interface Options<Node extends AnyNode | undefined> {\n\t\tnode?: Node\n\t\tschema?: Schema\n\t\tdimensions: SelectedDimensions\n\t\tparameters: Parameters\n\t\tvariables: CustomVariables\n\t\tparent?: Environment\n\t\textensions: Map<Extension<unknown, unknown>, unknown>\n\t}\n\n\texport type SubTreeNode =\n\t\t| SubTreeEntityNode\n\t\t| SubTreeEntityListNode\n\n\texport type InnerNode =\n\t\t| EntityNode\n\t\t| EntityListNode\n\t\t| ColumnNode\n\n\texport type AnyNode =\n\t\t| SubTreeNode\n\t\t| InnerNode\n\n\texport interface SubTreeEntityNode {\n\t\ttype: 'subtree-entity'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero' | 'one' | 'zero-or-one'\n\t\tfilter: Filter\n\t}\n\n\texport interface SubTreeEntityListNode {\n\t\ttype: 'subtree-entity-list'\n\t\tentity: SchemaEntity\n\t\texpectedCardinality: 'zero-to-many' | 'zero'\n\t\tfilter: Filter\n\t}\n\n\texport interface EntityNode {\n\t\ttype: 'entity'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface EntityListNode {\n\t\ttype: 'entity-list'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaRelation\n\t}\n\n\texport interface ColumnNode {\n\t\ttype: 'column'\n\t\tentity: SchemaEntity\n\t\tfield: SchemaColumn\n\t}\n\n\texport interface SelectedDimensions {\n\t\t[key: string]: string[]\n\t}\n\n\texport type Parameters = {\n\t\t[K in string]?: string | number\n\t}\n\n\texport interface CustomVariables {\n\t\t[key: string]: Value\n\t}\n\n\texport interface ValuesMapWithFactory {\n\t\t[key: string]:\n\t\t\t| ((environment: Environment) => Value)\n\t\t\t| Value\n\t}\n\n\texport type Extension<State, Result> = {\n\t\tcreate: (state: State | undefined, environment: Environment) => Result\n\t}\n\n\texport const createExtension = <S, R>(create: Extension<S, R>['create'], otherMethods?: Omit<Extension<S, R>, 'create'>): Extension<S, R> => {\n\t\treturn {\n\t\t\tcreate,\n\t\t\t...otherMethods,\n\t\t}\n\t}\n}\n\nexport { Environment }\n"],"names":["Environment"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeEnvironmentFactory.cjs","sources":["../../../../../packages/binding-common/src/environment/TreeNodeEnvironmentFactory.ts"],"sourcesContent":["import { Environment } from './Environment'\nimport {\n\tHasOneRelation,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n} from '../treeParameters'\nimport { QueryLanguage } from '../queryLanguage'\nimport { TreeNodeUtils } from '../utils/TreeNodeUtils'\nimport { whereToFilter } from '../utils/whereToFilter'\n\nexport class TreeNodeEnvironmentFactory {\n\n\tpublic static createEnvironmentForEntityListSubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedEntityList | SugaredUnconstrainedQualifiedEntityList,\n\t): Environment {\n\t\tlet entityList\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\tentityList = QueryLanguage.desugarUnconstrainedQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = {} as const\n\t\t\texpectedCardinality = 'zero'\n\n\t\t} else {\n\t\t\tentityList = QueryLanguage.desugarQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = entityList.filter ?? {}\n\t\t\texpectedCardinality = 'zero-to-many'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entityList.entityName, 'entity list')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity-list',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntitySubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedSingleEntity | SugaredUnconstrainedQualifiedSingleEntity,\n\t): Environment {\n\t\tlet entity\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\trootWhere = { } as const\n\t\t\texpectedCardinality = 'zero'\n\t\t\tentity = QueryLanguage.desugarUnconstrainedQualifiedSingleEntity(sugaredEntityList, environment)\n\n\t\t} else {\n\t\t\tentity = QueryLanguage.desugarQualifiedSingleEntity(sugaredEntityList, environment)\n\t\t\trootWhere = whereToFilter(entity.where)\n\t\t\texpectedCardinality = entity.setOnCreate ? 'zero-or-one' : 'one'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entity.entityName, 'entity')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality: expectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntityList(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeEntityList: SugaredRelativeEntityList,\n\t): Environment {\n\t\tconst relativeEntityList = QueryLanguage.desugarRelativeEntityList(sugaredRelativeEntityList, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeEntityList.hasOneRelationPath)\n\t\tconst hasManyField = relativeEntityList.hasManyRelation.field\n\n\t\tconst field = TreeNodeUtils.resolveHasManyRelation(hasOneEnvironment, hasManyField)\n\n\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'entity-list',\n\t\t\tfield,\n\t\t\tentity: targetEntity,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntity(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleEntity: SugaredRelativeSingleEntity,\n\t) {\n\t\tconst relativeSingleEntity = QueryLanguage.desugarRelativeSingleEntity(sugaredRelativeSingleEntity, environment)\n\n\t\treturn this.traverseHasOnePath(environment, relativeSingleEntity.hasOneRelationPath)\n\t}\n\n\tpublic static createEnvironmentForField(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleField: SugaredRelativeSingleField,\n\t) {\n\t\tconst relativeSingleField = QueryLanguage.desugarRelativeSingleField(sugaredRelativeSingleField, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeSingleField.hasOneRelationPath)\n\n\t\tconst field = TreeNodeUtils.resolveColumn(hasOneEnvironment, relativeSingleField.field)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'column',\n\t\t\tentity: environment.getSubTreeNode().entity,\n\t\t\tfield,\n\t\t})\n\t}\n\n\tprivate static traverseHasOnePath(\n\t\tenvironment: Environment,\n\t\thasOneRelationPath: HasOneRelation[],\n\t): Environment {\n\t\tfor (const pathItem of hasOneRelationPath) {\n\t\t\tconst field = TreeNodeUtils.resolveHasOneRelation(environment, pathItem.field, !!pathItem.reducedBy)\n\t\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\t\tenvironment = environment.withSubTreeChild({\n\t\t\t\ttype: 'entity',\n\t\t\t\tfield,\n\t\t\t\tentity: targetEntity,\n\t\t\t})\n\t\t}\n\t\treturn environment\n\t}\n\n}\n"],"names":["QueryLanguage","TreeNodeUtils","whereToFilter"],"mappings":";;;;;AAeO,MAAM,2BAA2B;AAAA,EAEvC,OAAc,sCACb,aACA,mBACc;AACV,QAAA;AACA,QAAA;AACA,QAAA;AAEJ,QAAI,kBAAkB,YAAY;AACpB,mBAAAA,cAAA,cAAc,wCAAwC,mBAAmB,WAAW;AACjG,kBAAY,CAAC;AACS,4BAAA;AAAA,IAAA,OAEhB;AACO,mBAAAA,cAAA,cAAc,2BAA2B,mBAAmB,WAAW;AACxE,kBAAA,WAAW,UAAU,CAAC;AACZ,4BAAA;AAAA,IAAA;AAGjB,UAAA,eAAeC,4BAAc,cAAc,YAAY,aAAa,WAAW,YAAY,aAAa;AAE9G,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGF,OAAc,kCACb,aACA,mBACc;AACV,QAAA;AACA,QAAA;AACA,QAAA;AAEJ,QAAI,kBAAkB,YAAY;AACjC,kBAAY,CAAE;AACQ,4BAAA;AACb,eAAAD,cAAA,cAAc,0CAA0C,mBAAmB,WAAW;AAAA,IAAA,OAEzF;AACG,eAAAA,cAAA,cAAc,6BAA6B,mBAAmB,WAAW;AACtE,kBAAAE,cAAAA,cAAc,OAAO,KAAK;AAChB,4BAAA,OAAO,cAAc,gBAAgB;AAAA,IAAA;AAGtD,UAAA,eAAeD,4BAAc,cAAc,YAAY,aAAa,OAAO,YAAY,QAAQ;AAErG,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGF,OAAc,+BACb,aACA,2BACc;AACd,UAAM,qBAAqBD,cAAA,cAAc,0BAA0B,2BAA2B,WAAW;AACzG,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,mBAAmB,kBAAkB;AAC9F,UAAA,eAAe,mBAAmB,gBAAgB;AAExD,UAAM,QAAQC,cAAA,cAAc,uBAAuB,mBAAmB,YAAY;AAElF,UAAM,eAAe,YAAY,UAAY,EAAA,UAAU,MAAM,YAAY;AAEzE,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGF,OAAc,2BACb,aACA,6BACC;AACD,UAAM,uBAAuBD,cAAA,cAAc,4BAA4B,6BAA6B,WAAW;AAE/G,WAAO,KAAK,mBAAmB,aAAa,qBAAqB,kBAAkB;AAAA,EAAA;AAAA,EAGpF,OAAc,0BACb,aACA,4BACC;AACD,UAAM,sBAAsBA,cAAA,cAAc,2BAA2B,4BAA4B,WAAW;AAC5G,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,oBAAoB,kBAAkB;AAErG,UAAM,QAAQC,cAAAA,cAAc,cAAc,mBAAmB,oBAAoB,KAAK;AAEtF,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ,YAAY,eAAA,EAAiB;AAAA,MACrC;AAAA,IAAA,CACA;AAAA,EAAA;AAAA,EAGF,OAAe,mBACd,aACA,oBACc;AACd,eAAW,YAAY,oBAAoB;AACpC,YAAA,QAAQA,4BAAc,sBAAsB,aAAa,SAAS,OAAO,CAAC,CAAC,SAAS,SAAS;AACnG,YAAM,eAAe,YAAY,UAAY,EAAA,UAAU,MAAM,YAAY;AAEzE,oBAAc,YAAY,iBAAiB;AAAA,QAC1C,MAAM;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,MAAA,CACR;AAAA,IAAA;AAEK,WAAA;AAAA,EAAA;AAGT;;"}
1
+ {"version":3,"file":"TreeNodeEnvironmentFactory.cjs","sources":["../../../../../packages/binding-common/src/environment/TreeNodeEnvironmentFactory.ts"],"sourcesContent":["import { Environment } from './Environment'\nimport {\n\tHasOneRelation,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n} from '../treeParameters'\nimport { QueryLanguage } from '../queryLanguage'\nimport { TreeNodeUtils } from '../utils/TreeNodeUtils'\nimport { whereToFilter } from '../utils/whereToFilter'\n\nexport class TreeNodeEnvironmentFactory {\n\tpublic static createEnvironmentForEntityListSubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedEntityList | SugaredUnconstrainedQualifiedEntityList,\n\t): Environment {\n\t\tlet entityList\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\tentityList = QueryLanguage.desugarUnconstrainedQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = {} as const\n\t\t\texpectedCardinality = 'zero'\n\t\t} else {\n\t\t\tentityList = QueryLanguage.desugarQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = entityList.filter ?? {}\n\t\t\texpectedCardinality = 'zero-to-many'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entityList.entityName, 'entity list')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity-list',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntitySubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedSingleEntity | SugaredUnconstrainedQualifiedSingleEntity,\n\t): Environment {\n\t\tlet entity\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\trootWhere = {} as const\n\t\t\texpectedCardinality = 'zero'\n\t\t\tentity = QueryLanguage.desugarUnconstrainedQualifiedSingleEntity(sugaredEntityList, environment)\n\t\t} else {\n\t\t\tentity = QueryLanguage.desugarQualifiedSingleEntity(sugaredEntityList, environment)\n\t\t\trootWhere = whereToFilter(entity.where)\n\t\t\texpectedCardinality = entity.setOnCreate ? 'zero-or-one' : 'one'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entity.entityName, 'entity')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality: expectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntityList(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeEntityList: SugaredRelativeEntityList,\n\t): Environment {\n\t\tconst relativeEntityList = QueryLanguage.desugarRelativeEntityList(sugaredRelativeEntityList, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeEntityList.hasOneRelationPath)\n\t\tconst hasManyField = relativeEntityList.hasManyRelation.field\n\n\t\tconst field = TreeNodeUtils.resolveHasManyRelation(hasOneEnvironment, hasManyField)\n\n\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'entity-list',\n\t\t\tfield,\n\t\t\tentity: targetEntity,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntity(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleEntity: SugaredRelativeSingleEntity,\n\t) {\n\t\tconst relativeSingleEntity = QueryLanguage.desugarRelativeSingleEntity(sugaredRelativeSingleEntity, environment)\n\n\t\treturn this.traverseHasOnePath(environment, relativeSingleEntity.hasOneRelationPath)\n\t}\n\n\tpublic static createEnvironmentForField(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleField: SugaredRelativeSingleField,\n\t) {\n\t\tconst relativeSingleField = QueryLanguage.desugarRelativeSingleField(sugaredRelativeSingleField, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeSingleField.hasOneRelationPath)\n\n\t\tconst field = TreeNodeUtils.resolveColumn(hasOneEnvironment, relativeSingleField.field)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'column',\n\t\t\tentity: environment.getSubTreeNode().entity,\n\t\t\tfield,\n\t\t})\n\t}\n\n\tprivate static traverseHasOnePath(\n\t\tenvironment: Environment,\n\t\thasOneRelationPath: HasOneRelation[],\n\t): Environment {\n\t\tfor (const pathItem of hasOneRelationPath) {\n\t\t\tconst field = TreeNodeUtils.resolveHasOneRelation(environment, pathItem.field, !!pathItem.reducedBy)\n\t\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\t\tenvironment = environment.withSubTreeChild({\n\t\t\t\ttype: 'entity',\n\t\t\t\tfield,\n\t\t\t\tentity: targetEntity,\n\t\t\t})\n\t\t}\n\t\treturn environment\n\t}\n}\n"],"names":["QueryLanguage","TreeNodeUtils","whereToFilter"],"mappings":";;;;;AAeO,MAAM,2BAA2B;AAAA,EACvC,OAAc,sCACb,aACA,mBACc;AACd,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,kBAAkB,YAAY;AACjC,mBAAaA,cAAAA,cAAc,wCAAwC,mBAAmB,WAAW;AACjG,kBAAY,CAAA;AACZ,4BAAsB;AAAA,IACvB,OAAO;AACN,mBAAaA,cAAAA,cAAc,2BAA2B,mBAAmB,WAAW;AACpF,kBAAY,WAAW,UAAU,CAAA;AACjC,4BAAsB;AAAA,IACvB;AAEA,UAAM,eAAeC,cAAAA,cAAc,cAAc,YAAY,aAAa,WAAW,YAAY,aAAa;AAE9G,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAAA,EAEA,OAAc,kCACb,aACA,mBACc;AACd,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,kBAAkB,YAAY;AACjC,kBAAY,CAAA;AACZ,4BAAsB;AACtB,eAASD,cAAAA,cAAc,0CAA0C,mBAAmB,WAAW;AAAA,IAChG,OAAO;AACN,eAASA,cAAAA,cAAc,6BAA6B,mBAAmB,WAAW;AAClF,kBAAYE,cAAAA,cAAc,OAAO,KAAK;AACtC,4BAAsB,OAAO,cAAc,gBAAgB;AAAA,IAC5D;AAEA,UAAM,eAAeD,cAAAA,cAAc,cAAc,YAAY,aAAa,OAAO,YAAY,QAAQ;AAErG,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAAA,EAEA,OAAc,+BACb,aACA,2BACc;AACd,UAAM,qBAAqBD,cAAAA,cAAc,0BAA0B,2BAA2B,WAAW;AACzG,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,mBAAmB,kBAAkB;AACpG,UAAM,eAAe,mBAAmB,gBAAgB;AAExD,UAAM,QAAQC,cAAAA,cAAc,uBAAuB,mBAAmB,YAAY;AAElF,UAAM,eAAe,YAAY,UAAA,EAAY,UAAU,MAAM,YAAY;AAEzE,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAAA,EAEA,OAAc,2BACb,aACA,6BACC;AACD,UAAM,uBAAuBD,cAAAA,cAAc,4BAA4B,6BAA6B,WAAW;AAE/G,WAAO,KAAK,mBAAmB,aAAa,qBAAqB,kBAAkB;AAAA,EACpF;AAAA,EAEA,OAAc,0BACb,aACA,4BACC;AACD,UAAM,sBAAsBA,cAAAA,cAAc,2BAA2B,4BAA4B,WAAW;AAC5G,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,oBAAoB,kBAAkB;AAErG,UAAM,QAAQC,cAAAA,cAAc,cAAc,mBAAmB,oBAAoB,KAAK;AAEtF,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ,YAAY,eAAA,EAAiB;AAAA,MACrC;AAAA,IAAA,CACA;AAAA,EACF;AAAA,EAEA,OAAe,mBACd,aACA,oBACc;AACd,eAAW,YAAY,oBAAoB;AAC1C,YAAM,QAAQA,4BAAc,sBAAsB,aAAa,SAAS,OAAO,CAAC,CAAC,SAAS,SAAS;AACnG,YAAM,eAAe,YAAY,UAAA,EAAY,UAAU,MAAM,YAAY;AAEzE,oBAAc,YAAY,iBAAiB;AAAA,QAC1C,MAAM;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,MAAA,CACR;AAAA,IACF;AACA,WAAO;AAAA,EACR;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeEnvironmentFactory.js","sources":["../../../../../packages/binding-common/src/environment/TreeNodeEnvironmentFactory.ts"],"sourcesContent":["import { Environment } from './Environment'\nimport {\n\tHasOneRelation,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n} from '../treeParameters'\nimport { QueryLanguage } from '../queryLanguage'\nimport { TreeNodeUtils } from '../utils/TreeNodeUtils'\nimport { whereToFilter } from '../utils/whereToFilter'\n\nexport class TreeNodeEnvironmentFactory {\n\n\tpublic static createEnvironmentForEntityListSubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedEntityList | SugaredUnconstrainedQualifiedEntityList,\n\t): Environment {\n\t\tlet entityList\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\tentityList = QueryLanguage.desugarUnconstrainedQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = {} as const\n\t\t\texpectedCardinality = 'zero'\n\n\t\t} else {\n\t\t\tentityList = QueryLanguage.desugarQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = entityList.filter ?? {}\n\t\t\texpectedCardinality = 'zero-to-many'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entityList.entityName, 'entity list')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity-list',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntitySubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedSingleEntity | SugaredUnconstrainedQualifiedSingleEntity,\n\t): Environment {\n\t\tlet entity\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\trootWhere = { } as const\n\t\t\texpectedCardinality = 'zero'\n\t\t\tentity = QueryLanguage.desugarUnconstrainedQualifiedSingleEntity(sugaredEntityList, environment)\n\n\t\t} else {\n\t\t\tentity = QueryLanguage.desugarQualifiedSingleEntity(sugaredEntityList, environment)\n\t\t\trootWhere = whereToFilter(entity.where)\n\t\t\texpectedCardinality = entity.setOnCreate ? 'zero-or-one' : 'one'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entity.entityName, 'entity')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality: expectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntityList(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeEntityList: SugaredRelativeEntityList,\n\t): Environment {\n\t\tconst relativeEntityList = QueryLanguage.desugarRelativeEntityList(sugaredRelativeEntityList, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeEntityList.hasOneRelationPath)\n\t\tconst hasManyField = relativeEntityList.hasManyRelation.field\n\n\t\tconst field = TreeNodeUtils.resolveHasManyRelation(hasOneEnvironment, hasManyField)\n\n\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'entity-list',\n\t\t\tfield,\n\t\t\tentity: targetEntity,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntity(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleEntity: SugaredRelativeSingleEntity,\n\t) {\n\t\tconst relativeSingleEntity = QueryLanguage.desugarRelativeSingleEntity(sugaredRelativeSingleEntity, environment)\n\n\t\treturn this.traverseHasOnePath(environment, relativeSingleEntity.hasOneRelationPath)\n\t}\n\n\tpublic static createEnvironmentForField(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleField: SugaredRelativeSingleField,\n\t) {\n\t\tconst relativeSingleField = QueryLanguage.desugarRelativeSingleField(sugaredRelativeSingleField, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeSingleField.hasOneRelationPath)\n\n\t\tconst field = TreeNodeUtils.resolveColumn(hasOneEnvironment, relativeSingleField.field)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'column',\n\t\t\tentity: environment.getSubTreeNode().entity,\n\t\t\tfield,\n\t\t})\n\t}\n\n\tprivate static traverseHasOnePath(\n\t\tenvironment: Environment,\n\t\thasOneRelationPath: HasOneRelation[],\n\t): Environment {\n\t\tfor (const pathItem of hasOneRelationPath) {\n\t\t\tconst field = TreeNodeUtils.resolveHasOneRelation(environment, pathItem.field, !!pathItem.reducedBy)\n\t\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\t\tenvironment = environment.withSubTreeChild({\n\t\t\t\ttype: 'entity',\n\t\t\t\tfield,\n\t\t\t\tentity: targetEntity,\n\t\t\t})\n\t\t}\n\t\treturn environment\n\t}\n\n}\n"],"names":[],"mappings":";;;AAeO,MAAM,2BAA2B;AAAA,EAEvC,OAAc,sCACb,aACA,mBACc;AACV,QAAA;AACA,QAAA;AACA,QAAA;AAEJ,QAAI,kBAAkB,YAAY;AACpB,mBAAA,cAAc,wCAAwC,mBAAmB,WAAW;AACjG,kBAAY,CAAC;AACS,4BAAA;AAAA,IAAA,OAEhB;AACO,mBAAA,cAAc,2BAA2B,mBAAmB,WAAW;AACxE,kBAAA,WAAW,UAAU,CAAC;AACZ,4BAAA;AAAA,IAAA;AAGjB,UAAA,eAAe,cAAc,cAAc,YAAY,aAAa,WAAW,YAAY,aAAa;AAE9G,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGF,OAAc,kCACb,aACA,mBACc;AACV,QAAA;AACA,QAAA;AACA,QAAA;AAEJ,QAAI,kBAAkB,YAAY;AACjC,kBAAY,CAAE;AACQ,4BAAA;AACb,eAAA,cAAc,0CAA0C,mBAAmB,WAAW;AAAA,IAAA,OAEzF;AACG,eAAA,cAAc,6BAA6B,mBAAmB,WAAW;AACtE,kBAAA,cAAc,OAAO,KAAK;AAChB,4BAAA,OAAO,cAAc,gBAAgB;AAAA,IAAA;AAGtD,UAAA,eAAe,cAAc,cAAc,YAAY,aAAa,OAAO,YAAY,QAAQ;AAErG,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGF,OAAc,+BACb,aACA,2BACc;AACd,UAAM,qBAAqB,cAAc,0BAA0B,2BAA2B,WAAW;AACzG,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,mBAAmB,kBAAkB;AAC9F,UAAA,eAAe,mBAAmB,gBAAgB;AAExD,UAAM,QAAQ,cAAc,uBAAuB,mBAAmB,YAAY;AAElF,UAAM,eAAe,YAAY,UAAY,EAAA,UAAU,MAAM,YAAY;AAEzE,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EAAA;AAAA,EAGF,OAAc,2BACb,aACA,6BACC;AACD,UAAM,uBAAuB,cAAc,4BAA4B,6BAA6B,WAAW;AAE/G,WAAO,KAAK,mBAAmB,aAAa,qBAAqB,kBAAkB;AAAA,EAAA;AAAA,EAGpF,OAAc,0BACb,aACA,4BACC;AACD,UAAM,sBAAsB,cAAc,2BAA2B,4BAA4B,WAAW;AAC5G,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,oBAAoB,kBAAkB;AAErG,UAAM,QAAQ,cAAc,cAAc,mBAAmB,oBAAoB,KAAK;AAEtF,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ,YAAY,eAAA,EAAiB;AAAA,MACrC;AAAA,IAAA,CACA;AAAA,EAAA;AAAA,EAGF,OAAe,mBACd,aACA,oBACc;AACd,eAAW,YAAY,oBAAoB;AACpC,YAAA,QAAQ,cAAc,sBAAsB,aAAa,SAAS,OAAO,CAAC,CAAC,SAAS,SAAS;AACnG,YAAM,eAAe,YAAY,UAAY,EAAA,UAAU,MAAM,YAAY;AAEzE,oBAAc,YAAY,iBAAiB;AAAA,QAC1C,MAAM;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,MAAA,CACR;AAAA,IAAA;AAEK,WAAA;AAAA,EAAA;AAGT;"}
1
+ {"version":3,"file":"TreeNodeEnvironmentFactory.js","sources":["../../../../../packages/binding-common/src/environment/TreeNodeEnvironmentFactory.ts"],"sourcesContent":["import { Environment } from './Environment'\nimport {\n\tHasOneRelation,\n\tSugaredQualifiedEntityList,\n\tSugaredQualifiedSingleEntity,\n\tSugaredRelativeEntityList,\n\tSugaredRelativeSingleEntity,\n\tSugaredRelativeSingleField,\n\tSugaredUnconstrainedQualifiedEntityList,\n\tSugaredUnconstrainedQualifiedSingleEntity,\n} from '../treeParameters'\nimport { QueryLanguage } from '../queryLanguage'\nimport { TreeNodeUtils } from '../utils/TreeNodeUtils'\nimport { whereToFilter } from '../utils/whereToFilter'\n\nexport class TreeNodeEnvironmentFactory {\n\tpublic static createEnvironmentForEntityListSubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedEntityList | SugaredUnconstrainedQualifiedEntityList,\n\t): Environment {\n\t\tlet entityList\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\tentityList = QueryLanguage.desugarUnconstrainedQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = {} as const\n\t\t\texpectedCardinality = 'zero'\n\t\t} else {\n\t\t\tentityList = QueryLanguage.desugarQualifiedEntityList(sugaredEntityList, environment)\n\t\t\trootWhere = entityList.filter ?? {}\n\t\t\texpectedCardinality = 'zero-to-many'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entityList.entityName, 'entity list')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity-list',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntitySubtree(\n\t\tenvironment: Environment,\n\t\tsugaredEntityList: SugaredQualifiedSingleEntity | SugaredUnconstrainedQualifiedSingleEntity,\n\t): Environment {\n\t\tlet entity\n\t\tlet rootWhere\n\t\tlet expectedCardinality: Environment.SubTreeNode['expectedCardinality']\n\n\t\tif (sugaredEntityList.isCreating) {\n\t\t\trootWhere = {} as const\n\t\t\texpectedCardinality = 'zero'\n\t\t\tentity = QueryLanguage.desugarUnconstrainedQualifiedSingleEntity(sugaredEntityList, environment)\n\t\t} else {\n\t\t\tentity = QueryLanguage.desugarQualifiedSingleEntity(sugaredEntityList, environment)\n\t\t\trootWhere = whereToFilter(entity.where)\n\t\t\texpectedCardinality = entity.setOnCreate ? 'zero-or-one' : 'one'\n\t\t}\n\n\t\tconst entitySchema = TreeNodeUtils.resolveEntity(environment.getSchema(), entity.entityName, 'entity')\n\n\t\treturn environment.withSubTree({\n\t\t\ttype: 'subtree-entity',\n\t\t\tentity: entitySchema,\n\t\t\texpectedCardinality: expectedCardinality,\n\t\t\tfilter: rootWhere,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntityList(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeEntityList: SugaredRelativeEntityList,\n\t): Environment {\n\t\tconst relativeEntityList = QueryLanguage.desugarRelativeEntityList(sugaredRelativeEntityList, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeEntityList.hasOneRelationPath)\n\t\tconst hasManyField = relativeEntityList.hasManyRelation.field\n\n\t\tconst field = TreeNodeUtils.resolveHasManyRelation(hasOneEnvironment, hasManyField)\n\n\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'entity-list',\n\t\t\tfield,\n\t\t\tentity: targetEntity,\n\t\t})\n\t}\n\n\tpublic static createEnvironmentForEntity(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleEntity: SugaredRelativeSingleEntity,\n\t) {\n\t\tconst relativeSingleEntity = QueryLanguage.desugarRelativeSingleEntity(sugaredRelativeSingleEntity, environment)\n\n\t\treturn this.traverseHasOnePath(environment, relativeSingleEntity.hasOneRelationPath)\n\t}\n\n\tpublic static createEnvironmentForField(\n\t\tenvironment: Environment,\n\t\tsugaredRelativeSingleField: SugaredRelativeSingleField,\n\t) {\n\t\tconst relativeSingleField = QueryLanguage.desugarRelativeSingleField(sugaredRelativeSingleField, environment)\n\t\tconst hasOneEnvironment = this.traverseHasOnePath(environment, relativeSingleField.hasOneRelationPath)\n\n\t\tconst field = TreeNodeUtils.resolveColumn(hasOneEnvironment, relativeSingleField.field)\n\n\t\treturn hasOneEnvironment.withSubTreeChild({\n\t\t\ttype: 'column',\n\t\t\tentity: environment.getSubTreeNode().entity,\n\t\t\tfield,\n\t\t})\n\t}\n\n\tprivate static traverseHasOnePath(\n\t\tenvironment: Environment,\n\t\thasOneRelationPath: HasOneRelation[],\n\t): Environment {\n\t\tfor (const pathItem of hasOneRelationPath) {\n\t\t\tconst field = TreeNodeUtils.resolveHasOneRelation(environment, pathItem.field, !!pathItem.reducedBy)\n\t\t\tconst targetEntity = environment.getSchema().getEntity(field.targetEntity)\n\n\t\t\tenvironment = environment.withSubTreeChild({\n\t\t\t\ttype: 'entity',\n\t\t\t\tfield,\n\t\t\t\tentity: targetEntity,\n\t\t\t})\n\t\t}\n\t\treturn environment\n\t}\n}\n"],"names":[],"mappings":";;;AAeO,MAAM,2BAA2B;AAAA,EACvC,OAAc,sCACb,aACA,mBACc;AACd,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,kBAAkB,YAAY;AACjC,mBAAa,cAAc,wCAAwC,mBAAmB,WAAW;AACjG,kBAAY,CAAA;AACZ,4BAAsB;AAAA,IACvB,OAAO;AACN,mBAAa,cAAc,2BAA2B,mBAAmB,WAAW;AACpF,kBAAY,WAAW,UAAU,CAAA;AACjC,4BAAsB;AAAA,IACvB;AAEA,UAAM,eAAe,cAAc,cAAc,YAAY,aAAa,WAAW,YAAY,aAAa;AAE9G,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAAA,EAEA,OAAc,kCACb,aACA,mBACc;AACd,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,kBAAkB,YAAY;AACjC,kBAAY,CAAA;AACZ,4BAAsB;AACtB,eAAS,cAAc,0CAA0C,mBAAmB,WAAW;AAAA,IAChG,OAAO;AACN,eAAS,cAAc,6BAA6B,mBAAmB,WAAW;AAClF,kBAAY,cAAc,OAAO,KAAK;AACtC,4BAAsB,OAAO,cAAc,gBAAgB;AAAA,IAC5D;AAEA,UAAM,eAAe,cAAc,cAAc,YAAY,aAAa,OAAO,YAAY,QAAQ;AAErG,WAAO,YAAY,YAAY;AAAA,MAC9B,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAAA,EAEA,OAAc,+BACb,aACA,2BACc;AACd,UAAM,qBAAqB,cAAc,0BAA0B,2BAA2B,WAAW;AACzG,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,mBAAmB,kBAAkB;AACpG,UAAM,eAAe,mBAAmB,gBAAgB;AAExD,UAAM,QAAQ,cAAc,uBAAuB,mBAAmB,YAAY;AAElF,UAAM,eAAe,YAAY,UAAA,EAAY,UAAU,MAAM,YAAY;AAEzE,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,IAAA,CACR;AAAA,EACF;AAAA,EAEA,OAAc,2BACb,aACA,6BACC;AACD,UAAM,uBAAuB,cAAc,4BAA4B,6BAA6B,WAAW;AAE/G,WAAO,KAAK,mBAAmB,aAAa,qBAAqB,kBAAkB;AAAA,EACpF;AAAA,EAEA,OAAc,0BACb,aACA,4BACC;AACD,UAAM,sBAAsB,cAAc,2BAA2B,4BAA4B,WAAW;AAC5G,UAAM,oBAAoB,KAAK,mBAAmB,aAAa,oBAAoB,kBAAkB;AAErG,UAAM,QAAQ,cAAc,cAAc,mBAAmB,oBAAoB,KAAK;AAEtF,WAAO,kBAAkB,iBAAiB;AAAA,MACzC,MAAM;AAAA,MACN,QAAQ,YAAY,eAAA,EAAiB;AAAA,MACrC;AAAA,IAAA,CACA;AAAA,EACF;AAAA,EAEA,OAAe,mBACd,aACA,oBACc;AACd,eAAW,YAAY,oBAAoB;AAC1C,YAAM,QAAQ,cAAc,sBAAsB,aAAa,SAAS,OAAO,CAAC,CAAC,SAAS,SAAS;AACnG,YAAM,eAAe,YAAY,UAAA,EAAY,UAAU,MAAM,YAAY;AAEzE,oBAAc,YAAY,iBAAiB;AAAA,QAC1C,MAAM;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,MAAA,CACR;AAAA,IACF;AACA,WAAO;AAAA,EACR;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariableFieldValue.cjs","sources":["../../../../../packages/binding-common/src/environment/VariableFieldValue.ts"],"sourcesContent":["export class VariableFieldValue {\n\tpublic constructor(public readonly variableName: string) {}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,mBAAmB;AAAA,EACxB,YAA4B,cAAsB;AAAtB,SAAA,eAAA;AAAA,EAAA;AACpC;;"}
1
+ {"version":3,"file":"VariableFieldValue.cjs","sources":["../../../../../packages/binding-common/src/environment/VariableFieldValue.ts"],"sourcesContent":["export class VariableFieldValue {\n\tpublic constructor(public readonly variableName: string) {}\n}\n"],"names":[],"mappings":";;AAAO,MAAM,mBAAmB;AAAA,EACxB,YAA4B,cAAsB;AAAtB,SAAA,eAAA;AAAA,EAAuB;AAC3D;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariableFieldValue.js","sources":["../../../../../packages/binding-common/src/environment/VariableFieldValue.ts"],"sourcesContent":["export class VariableFieldValue {\n\tpublic constructor(public readonly variableName: string) {}\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB;AAAA,EACxB,YAA4B,cAAsB;AAAtB,SAAA,eAAA;AAAA,EAAA;AACpC;"}
1
+ {"version":3,"file":"VariableFieldValue.js","sources":["../../../../../packages/binding-common/src/environment/VariableFieldValue.ts"],"sourcesContent":["export class VariableFieldValue {\n\tpublic constructor(public readonly variableName: string) {}\n}\n"],"names":[],"mappings":"AAAO,MAAM,mBAAmB;AAAA,EACxB,YAA4B,cAAsB;AAAtB,SAAA,eAAA;AAAA,EAAuB;AAC3D;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariableInputTransformer.cjs","sources":["../../../../../packages/binding-common/src/environment/VariableInputTransformer.ts"],"sourcesContent":["import type { FieldValue, OptionallyVariableFieldValue } from '../treeParameters'\nimport { VariableFieldValue } from './VariableFieldValue'\nimport { Environment } from './Environment'\nimport { BindingError } from '../BindingError'\n\nexport class VariableInputTransformer {\n\tpublic static transformValue(value: OptionallyVariableFieldValue, environment: Environment): FieldValue {\n\t\tif (value instanceof VariableFieldValue) {\n\t\t\treturn VariableInputTransformer.transformVariableFieldValue(value, environment)\n\t\t}\n\t\treturn value\n\t}\n\n\tpublic static transformVariableFieldValue(variableFieldValue: VariableFieldValue, environment: Environment): FieldValue {\n\t\tconst value = environment.getVariableOrElse(variableFieldValue.variableName, undefined)\n\t\t\t?? environment.getParameterOrElse(variableFieldValue.variableName, undefined)\n\n\t\tif (value === undefined) {\n\t\t\tthrow new BindingError(`Variable '${variableFieldValue.variableName}' not found.`)\n\t\t}\n\n\t\tif (typeof value !== 'string' && typeof value !== 'boolean' && typeof value !== 'number' && value !== null) {\n\t\t\tthrow new BindingError(`The value of the '${variableFieldValue.variableName}' must be a scalar or null, not '${typeof value}'.`)\n\t\t}\n\t\treturn value\n\t}\n}\n"],"names":["VariableFieldValue","BindingError"],"mappings":";;;;AAKO,MAAM,yBAAyB;AAAA,EACrC,OAAc,eAAe,OAAqC,aAAsC;AACvG,QAAI,iBAAiBA,mBAAAA,oBAAoB;AACjC,aAAA,yBAAyB,4BAA4B,OAAO,WAAW;AAAA,IAAA;AAExE,WAAA;AAAA,EAAA;AAAA,EAGR,OAAc,4BAA4B,oBAAwC,aAAsC;AACjH,UAAA,QAAQ,YAAY,kBAAkB,mBAAmB,cAAc,MAAS,KAClF,YAAY,mBAAmB,mBAAmB,cAAc,MAAS;AAE7E,QAAI,UAAU,QAAW;AACxB,YAAM,IAAIC,aAAA,aAAa,aAAa,mBAAmB,YAAY,cAAc;AAAA,IAAA;AAG9E,QAAA,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY,UAAU,MAAM;AACrG,YAAA,IAAIA,aAAAA,aAAa,qBAAqB,mBAAmB,YAAY,oCAAoC,OAAO,KAAK,IAAI;AAAA,IAAA;AAEzH,WAAA;AAAA,EAAA;AAET;;"}
1
+ {"version":3,"file":"VariableInputTransformer.cjs","sources":["../../../../../packages/binding-common/src/environment/VariableInputTransformer.ts"],"sourcesContent":["import type { FieldValue, OptionallyVariableFieldValue } from '../treeParameters'\nimport { VariableFieldValue } from './VariableFieldValue'\nimport { Environment } from './Environment'\nimport { BindingError } from '../BindingError'\n\nexport class VariableInputTransformer {\n\tpublic static transformValue(value: OptionallyVariableFieldValue, environment: Environment): FieldValue {\n\t\tif (value instanceof VariableFieldValue) {\n\t\t\treturn VariableInputTransformer.transformVariableFieldValue(value, environment)\n\t\t}\n\t\treturn value\n\t}\n\n\tpublic static transformVariableFieldValue(variableFieldValue: VariableFieldValue, environment: Environment): FieldValue {\n\t\tconst value = environment.getVariableOrElse(variableFieldValue.variableName, undefined)\n\t\t\t?? environment.getParameterOrElse(variableFieldValue.variableName, undefined)\n\n\t\tif (value === undefined) {\n\t\t\tthrow new BindingError(`Variable '${variableFieldValue.variableName}' not found.`)\n\t\t}\n\n\t\tif (typeof value !== 'string' && typeof value !== 'boolean' && typeof value !== 'number' && value !== null) {\n\t\t\tthrow new BindingError(`The value of the '${variableFieldValue.variableName}' must be a scalar or null, not '${typeof value}'.`)\n\t\t}\n\t\treturn value\n\t}\n}\n"],"names":["VariableFieldValue","BindingError"],"mappings":";;;;AAKO,MAAM,yBAAyB;AAAA,EACrC,OAAc,eAAe,OAAqC,aAAsC;AACvG,QAAI,iBAAiBA,mBAAAA,oBAAoB;AACxC,aAAO,yBAAyB,4BAA4B,OAAO,WAAW;AAAA,IAC/E;AACA,WAAO;AAAA,EACR;AAAA,EAEA,OAAc,4BAA4B,oBAAwC,aAAsC;AACvH,UAAM,QAAQ,YAAY,kBAAkB,mBAAmB,cAAc,MAAS,KAClF,YAAY,mBAAmB,mBAAmB,cAAc,MAAS;AAE7E,QAAI,UAAU,QAAW;AACxB,YAAM,IAAIC,aAAAA,aAAa,aAAa,mBAAmB,YAAY,cAAc;AAAA,IAClF;AAEA,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY,UAAU,MAAM;AAC3G,YAAM,IAAIA,aAAAA,aAAa,qBAAqB,mBAAmB,YAAY,oCAAoC,OAAO,KAAK,IAAI;AAAA,IAChI;AACA,WAAO;AAAA,EACR;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"VariableInputTransformer.js","sources":["../../../../../packages/binding-common/src/environment/VariableInputTransformer.ts"],"sourcesContent":["import type { FieldValue, OptionallyVariableFieldValue } from '../treeParameters'\nimport { VariableFieldValue } from './VariableFieldValue'\nimport { Environment } from './Environment'\nimport { BindingError } from '../BindingError'\n\nexport class VariableInputTransformer {\n\tpublic static transformValue(value: OptionallyVariableFieldValue, environment: Environment): FieldValue {\n\t\tif (value instanceof VariableFieldValue) {\n\t\t\treturn VariableInputTransformer.transformVariableFieldValue(value, environment)\n\t\t}\n\t\treturn value\n\t}\n\n\tpublic static transformVariableFieldValue(variableFieldValue: VariableFieldValue, environment: Environment): FieldValue {\n\t\tconst value = environment.getVariableOrElse(variableFieldValue.variableName, undefined)\n\t\t\t?? environment.getParameterOrElse(variableFieldValue.variableName, undefined)\n\n\t\tif (value === undefined) {\n\t\t\tthrow new BindingError(`Variable '${variableFieldValue.variableName}' not found.`)\n\t\t}\n\n\t\tif (typeof value !== 'string' && typeof value !== 'boolean' && typeof value !== 'number' && value !== null) {\n\t\t\tthrow new BindingError(`The value of the '${variableFieldValue.variableName}' must be a scalar or null, not '${typeof value}'.`)\n\t\t}\n\t\treturn value\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,yBAAyB;AAAA,EACrC,OAAc,eAAe,OAAqC,aAAsC;AACvG,QAAI,iBAAiB,oBAAoB;AACjC,aAAA,yBAAyB,4BAA4B,OAAO,WAAW;AAAA,IAAA;AAExE,WAAA;AAAA,EAAA;AAAA,EAGR,OAAc,4BAA4B,oBAAwC,aAAsC;AACjH,UAAA,QAAQ,YAAY,kBAAkB,mBAAmB,cAAc,MAAS,KAClF,YAAY,mBAAmB,mBAAmB,cAAc,MAAS;AAE7E,QAAI,UAAU,QAAW;AACxB,YAAM,IAAI,aAAa,aAAa,mBAAmB,YAAY,cAAc;AAAA,IAAA;AAG9E,QAAA,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY,UAAU,MAAM;AACrG,YAAA,IAAI,aAAa,qBAAqB,mBAAmB,YAAY,oCAAoC,OAAO,KAAK,IAAI;AAAA,IAAA;AAEzH,WAAA;AAAA,EAAA;AAET;"}
1
+ {"version":3,"file":"VariableInputTransformer.js","sources":["../../../../../packages/binding-common/src/environment/VariableInputTransformer.ts"],"sourcesContent":["import type { FieldValue, OptionallyVariableFieldValue } from '../treeParameters'\nimport { VariableFieldValue } from './VariableFieldValue'\nimport { Environment } from './Environment'\nimport { BindingError } from '../BindingError'\n\nexport class VariableInputTransformer {\n\tpublic static transformValue(value: OptionallyVariableFieldValue, environment: Environment): FieldValue {\n\t\tif (value instanceof VariableFieldValue) {\n\t\t\treturn VariableInputTransformer.transformVariableFieldValue(value, environment)\n\t\t}\n\t\treturn value\n\t}\n\n\tpublic static transformVariableFieldValue(variableFieldValue: VariableFieldValue, environment: Environment): FieldValue {\n\t\tconst value = environment.getVariableOrElse(variableFieldValue.variableName, undefined)\n\t\t\t?? environment.getParameterOrElse(variableFieldValue.variableName, undefined)\n\n\t\tif (value === undefined) {\n\t\t\tthrow new BindingError(`Variable '${variableFieldValue.variableName}' not found.`)\n\t\t}\n\n\t\tif (typeof value !== 'string' && typeof value !== 'boolean' && typeof value !== 'number' && value !== null) {\n\t\t\tthrow new BindingError(`The value of the '${variableFieldValue.variableName}' must be a scalar or null, not '${typeof value}'.`)\n\t\t}\n\t\treturn value\n\t}\n}\n"],"names":[],"mappings":";;AAKO,MAAM,yBAAyB;AAAA,EACrC,OAAc,eAAe,OAAqC,aAAsC;AACvG,QAAI,iBAAiB,oBAAoB;AACxC,aAAO,yBAAyB,4BAA4B,OAAO,WAAW;AAAA,IAC/E;AACA,WAAO;AAAA,EACR;AAAA,EAEA,OAAc,4BAA4B,oBAAwC,aAAsC;AACvH,UAAM,QAAQ,YAAY,kBAAkB,mBAAmB,cAAc,MAAS,KAClF,YAAY,mBAAmB,mBAAmB,cAAc,MAAS;AAE7E,QAAI,UAAU,QAAW;AACxB,YAAM,IAAI,aAAa,aAAa,mBAAmB,YAAY,cAAc;AAAA,IAClF;AAEA,QAAI,OAAO,UAAU,YAAY,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY,UAAU,MAAM;AAC3G,YAAM,IAAI,aAAa,qBAAqB,mBAAmB,YAAY,oCAAoC,OAAO,KAAK,IAAI;AAAA,IAChI;AACA,WAAO;AAAA,EACR;AACD;"}