breeze-client 2.2.0 → 2.2.1-cjs

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 (377) hide show
  1. package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
  2. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
  3. package/adapter-ajax-angularjs/package.json +13 -0
  4. package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
  5. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
  6. package/adapter-ajax-fetch/package.json +13 -0
  7. package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
  8. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
  9. package/adapter-ajax-httpclient/package.json +13 -0
  10. package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
  11. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
  12. package/adapter-ajax-jquery/package.json +13 -0
  13. package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
  14. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
  15. package/adapter-ajax-post/package.json +13 -0
  16. package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
  17. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
  18. package/adapter-data-service-odata/package.json +13 -0
  19. package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
  20. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
  21. package/adapter-data-service-webapi/package.json +13 -0
  22. package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
  23. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
  24. package/adapter-model-library-backing-store/package.json +13 -0
  25. package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
  26. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
  27. package/adapter-model-library-ko/package.json +13 -0
  28. package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
  29. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
  30. package/adapter-uri-builder-json/package.json +13 -0
  31. package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
  32. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
  33. package/adapter-uri-builder-odata/package.json +13 -0
  34. package/breeze-client.d.ts +8 -0
  35. package/breeze-client.metadata.json +1 -0
  36. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
  37. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
  38. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
  39. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
  40. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
  41. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
  42. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
  43. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
  44. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
  45. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
  46. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
  47. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
  48. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
  49. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
  50. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
  51. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
  52. package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
  53. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
  54. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
  55. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
  56. package/bundles/breeze-client-adapter-data-service-odata.umd.js +747 -0
  57. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
  58. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
  59. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
  60. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +333 -0
  61. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
  62. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
  63. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
  64. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
  65. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
  66. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
  67. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
  68. package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
  69. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
  70. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
  71. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
  72. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
  73. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
  74. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
  75. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
  76. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
  77. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
  78. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
  79. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
  80. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
  81. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
  82. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
  83. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
  84. package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
  85. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
  86. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
  87. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
  88. package/bundles/breeze-client.umd.js +14234 -0
  89. package/bundles/breeze-client.umd.js.map +1 -0
  90. package/bundles/breeze-client.umd.min.js +16 -0
  91. package/bundles/breeze-client.umd.min.js.map +1 -0
  92. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +130 -0
  93. package/esm2015/adapter-ajax-angularjs/adapter-core.js +49 -0
  94. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  95. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +130 -0
  96. package/esm2015/adapter-ajax-fetch/adapter-core.js +49 -0
  97. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  98. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +137 -0
  99. package/esm2015/adapter-ajax-httpclient/adapter-core.js +49 -0
  100. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  101. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +103 -0
  102. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  103. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +77 -0
  104. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  105. package/esm2015/adapter-data-service-odata/adapter-core.js +49 -0
  106. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +463 -0
  107. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  108. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +100 -0
  109. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  110. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +268 -0
  111. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  112. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +240 -0
  113. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  114. package/esm2015/adapter-uri-builder-json/adapter-core.js +49 -0
  115. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +36 -0
  116. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  117. package/esm2015/adapter-uri-builder-odata/adapter-core.js +49 -0
  118. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +192 -0
  119. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  120. package/esm2015/breeze-client.js +9 -0
  121. package/esm2015/index.js +2 -0
  122. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  123. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  124. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  125. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +400 -0
  126. package/esm2015/src/abstract-data-service-adapter.js +327 -0
  127. package/esm2015/src/array.js +4 -0
  128. package/esm2015/src/assert-param.js +312 -0
  129. package/esm2015/src/breeze.js +85 -0
  130. package/esm2015/src/complex-array.js +119 -0
  131. package/esm2015/src/config.js +223 -0
  132. package/esm2015/src/core.js +714 -0
  133. package/esm2015/src/csdl-metadata-parser.js +385 -0
  134. package/esm2015/src/data-service.js +203 -0
  135. package/esm2015/src/data-type.js +506 -0
  136. package/esm2015/src/default-property-interceptor.js +460 -0
  137. package/{esm2022/src/entity-action.mjs → esm2015/src/entity-action.js} +25 -25
  138. package/esm2015/src/entity-aspect.js +804 -0
  139. package/esm2015/src/entity-group.js +187 -0
  140. package/esm2015/src/entity-key.js +116 -0
  141. package/esm2015/src/entity-manager.js +2094 -0
  142. package/esm2015/src/entity-metadata.js +2109 -0
  143. package/esm2015/src/entity-query.js +1015 -0
  144. package/esm2015/src/entity-state.js +107 -0
  145. package/esm2015/src/enum.js +141 -0
  146. package/esm2015/src/event.js +256 -0
  147. package/esm2015/src/interface-registry.js +41 -0
  148. package/esm2015/src/key-generator.js +108 -0
  149. package/esm2015/src/local-query-comparison-options.js +65 -0
  150. package/esm2015/src/mapping-context.js +411 -0
  151. package/esm2015/src/naming-convention.js +88 -0
  152. package/esm2015/src/observable-array.js +185 -0
  153. package/esm2015/src/predicate.js +1242 -0
  154. package/esm2015/src/primitive-array.js +87 -0
  155. package/esm2015/src/query-options.js +152 -0
  156. package/esm2015/src/relation-array.js +175 -0
  157. package/esm2015/src/save-options.js +41 -0
  158. package/esm2015/src/unattached-children-map.js +58 -0
  159. package/esm2015/src/validate.js +991 -0
  160. package/esm2015/src/validation-options.js +64 -0
  161. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +132 -0
  162. package/esm5/adapter-ajax-angularjs/adapter-core.js +49 -0
  163. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  164. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +132 -0
  165. package/esm5/adapter-ajax-fetch/adapter-core.js +49 -0
  166. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  167. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +139 -0
  168. package/esm5/adapter-ajax-httpclient/adapter-core.js +49 -0
  169. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  170. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +105 -0
  171. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  172. package/esm5/adapter-ajax-post/adapter-ajax-post.js +81 -0
  173. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  174. package/esm5/adapter-data-service-odata/adapter-core.js +49 -0
  175. package/{esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs → esm5/adapter-data-service-odata/adapter-data-service-odata.js} +147 -138
  176. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  177. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +105 -0
  178. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  179. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +270 -0
  180. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  181. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +242 -0
  182. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  183. package/esm5/adapter-uri-builder-json/adapter-core.js +49 -0
  184. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +38 -0
  185. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  186. package/esm5/adapter-uri-builder-odata/adapter-core.js +49 -0
  187. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +197 -0
  188. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  189. package/esm5/breeze-client.js +9 -0
  190. package/esm5/index.js +2 -0
  191. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  192. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  193. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  194. package/esm5/mixin-save-queuing/mixin-save-queuing.js +412 -0
  195. package/esm5/src/abstract-data-service-adapter.js +333 -0
  196. package/esm5/src/array.js +4 -0
  197. package/esm5/src/assert-param.js +317 -0
  198. package/esm5/src/breeze.js +85 -0
  199. package/esm5/src/complex-array.js +119 -0
  200. package/esm5/src/config.js +228 -0
  201. package/esm5/src/core.js +722 -0
  202. package/esm5/src/csdl-metadata-parser.js +385 -0
  203. package/esm5/src/data-service.js +207 -0
  204. package/esm5/src/data-type.js +513 -0
  205. package/esm5/src/default-property-interceptor.js +460 -0
  206. package/esm5/src/entity-action.js +52 -0
  207. package/esm5/src/entity-aspect.js +810 -0
  208. package/esm5/src/entity-group.js +189 -0
  209. package/esm5/src/entity-key.js +118 -0
  210. package/esm5/src/entity-manager.js +2112 -0
  211. package/esm5/src/entity-metadata.js +2144 -0
  212. package/esm5/src/entity-query.js +1042 -0
  213. package/esm5/src/entity-state.js +114 -0
  214. package/esm5/src/enum.js +144 -0
  215. package/esm5/src/event.js +259 -0
  216. package/esm5/src/interface-registry.js +43 -0
  217. package/esm5/src/key-generator.js +111 -0
  218. package/esm5/src/local-query-comparison-options.js +67 -0
  219. package/esm5/src/mapping-context.js +413 -0
  220. package/esm5/src/naming-convention.js +90 -0
  221. package/esm5/src/observable-array.js +201 -0
  222. package/esm5/src/predicate.js +1307 -0
  223. package/esm5/src/primitive-array.js +87 -0
  224. package/esm5/src/query-options.js +167 -0
  225. package/esm5/src/relation-array.js +175 -0
  226. package/esm5/src/save-options.js +43 -0
  227. package/esm5/src/unattached-children-map.js +60 -0
  228. package/{esm2022/src/validate.mjs → esm5/src/validate.js} +110 -116
  229. package/esm5/src/validation-options.js +66 -0
  230. package/{fesm2022/breeze-client-adapter-ajax-angularjs.mjs → fesm2015/breeze-client-adapter-ajax-angularjs.js} +1 -6
  231. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  232. package/{fesm2022/breeze-client-adapter-ajax-fetch.mjs → fesm2015/breeze-client-adapter-ajax-fetch.js} +4 -9
  233. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
  234. package/{fesm2022/breeze-client-adapter-ajax-httpclient.mjs → fesm2015/breeze-client-adapter-ajax-httpclient.js} +4 -6
  235. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  236. package/{fesm2022/breeze-client-adapter-ajax-jquery.mjs → fesm2015/breeze-client-adapter-ajax-jquery.js} +2 -6
  237. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
  238. package/{fesm2022/breeze-client-adapter-ajax-post.mjs → fesm2015/breeze-client-adapter-ajax-post.js} +1 -1
  239. package/fesm2015/breeze-client-adapter-ajax-post.js.map +1 -0
  240. package/{fesm2022/breeze-client-adapter-data-service-odata.mjs → fesm2015/breeze-client-adapter-data-service-odata.js} +69 -68
  241. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
  242. package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → fesm2015/breeze-client-adapter-data-service-webapi.js} +30 -30
  243. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
  244. package/{fesm2022/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -14
  245. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  246. package/{fesm2022/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -14
  247. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
  248. package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -9
  249. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
  250. package/{fesm2022/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -86
  251. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  252. package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → fesm2015/breeze-client-mixin-get-entity-graph.js} +1 -1
  253. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
  254. package/{fesm2022/breeze-client-mixin-save-queuing.mjs → fesm2015/breeze-client-mixin-save-queuing.js} +2 -23
  255. package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
  256. package/{fesm2022/breeze-client.mjs → fesm2015/breeze-client.js} +1543 -2042
  257. package/fesm2015/breeze-client.js.map +1 -0
  258. package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
  259. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  260. package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
  261. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
  262. package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
  263. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  264. package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
  265. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
  266. package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
  267. package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
  268. package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
  269. package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
  270. package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
  271. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
  272. package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
  273. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  274. package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
  275. package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
  276. package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
  277. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
  278. package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
  279. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  280. package/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
  281. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
  282. package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
  283. package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
  284. package/fesm5/breeze-client.js +13956 -0
  285. package/fesm5/breeze-client.js.map +1 -0
  286. package/mixin-get-entity-graph/{index.d.ts → breeze-client-mixin-get-entity-graph.d.ts} +0 -1
  287. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +1 -0
  288. package/mixin-get-entity-graph/package.json +13 -0
  289. package/mixin-save-queuing/{index.d.ts → breeze-client-mixin-save-queuing.d.ts} +0 -1
  290. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +1 -0
  291. package/mixin-save-queuing/package.json +13 -0
  292. package/package.json +12 -94
  293. package/src/config.d.ts +1 -1
  294. package/src/core.d.ts +1 -1
  295. package/src/entity-aspect.d.ts +1 -1
  296. package/src/entity-metadata.d.ts +6 -8
  297. package/src/entity-query.d.ts +1 -1
  298. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
  299. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
  300. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
  301. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
  302. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
  303. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
  304. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
  305. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
  306. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
  307. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
  308. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
  309. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
  310. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
  311. package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
  312. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
  313. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
  314. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
  315. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
  316. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
  317. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
  318. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
  319. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
  320. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
  321. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
  322. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
  323. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
  324. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
  325. package/esm2022/breeze-client.mjs +0 -5
  326. package/esm2022/index.mjs +0 -2
  327. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
  328. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
  329. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
  330. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
  331. package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
  332. package/esm2022/src/array.mjs +0 -4
  333. package/esm2022/src/assert-param.mjs +0 -330
  334. package/esm2022/src/breeze.mjs +0 -85
  335. package/esm2022/src/complex-array.mjs +0 -117
  336. package/esm2022/src/config.mjs +0 -232
  337. package/esm2022/src/core.mjs +0 -712
  338. package/esm2022/src/csdl-metadata-parser.mjs +0 -385
  339. package/esm2022/src/data-service.mjs +0 -239
  340. package/esm2022/src/data-type.mjs +0 -510
  341. package/esm2022/src/default-property-interceptor.mjs +0 -460
  342. package/esm2022/src/entity-aspect.mjs +0 -897
  343. package/esm2022/src/entity-group.mjs +0 -192
  344. package/esm2022/src/entity-key.mjs +0 -127
  345. package/esm2022/src/entity-manager.mjs +0 -2183
  346. package/esm2022/src/entity-metadata.mjs +0 -2242
  347. package/esm2022/src/entity-query.mjs +0 -1024
  348. package/esm2022/src/entity-state.mjs +0 -107
  349. package/esm2022/src/enum.mjs +0 -143
  350. package/esm2022/src/event.mjs +0 -264
  351. package/esm2022/src/interface-registry.mjs +0 -39
  352. package/esm2022/src/key-generator.mjs +0 -110
  353. package/esm2022/src/local-query-comparison-options.mjs +0 -75
  354. package/esm2022/src/mapping-context.mjs +0 -422
  355. package/esm2022/src/naming-convention.mjs +0 -96
  356. package/esm2022/src/observable-array.mjs +0 -183
  357. package/esm2022/src/predicate.mjs +0 -1259
  358. package/esm2022/src/primitive-array.mjs +0 -85
  359. package/esm2022/src/query-options.mjs +0 -160
  360. package/esm2022/src/relation-array.mjs +0 -173
  361. package/esm2022/src/save-options.mjs +0 -51
  362. package/esm2022/src/unattached-children-map.mjs +0 -56
  363. package/esm2022/src/validation-options.mjs +0 -78
  364. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
  365. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
  366. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
  367. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
  368. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
  369. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
  370. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
  371. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
  372. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
  373. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
  374. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
  375. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
  376. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
  377. package/fesm2022/breeze-client.mjs.map +0 -1
@@ -0,0 +1,87 @@
1
+ import { core } from './core';
2
+ import { observableArray } from './observable-array';
3
+ import { BreezeEvent } from './event';
4
+ const ɵ0 = function (adds) {
5
+ return adds;
6
+ }, ɵ1 = function () {
7
+ let entityAspect = this.getEntityAspect();
8
+ if (entityAspect.entityState.isUnchanged()) {
9
+ entityAspect.setModified();
10
+ }
11
+ if (entityAspect.entityState.isModified() && !this._origValues) {
12
+ this._origValues = this.slice(0);
13
+ }
14
+ }, ɵ2 = function (adds) {
15
+ // nothing needed
16
+ }, ɵ3 = function (removes) {
17
+ // nothing needed;
18
+ }, ɵ4 = function () {
19
+ if (!this._origValues)
20
+ return;
21
+ this.length = 0;
22
+ Array.prototype.push.apply(this, this._origValues);
23
+ }, ɵ5 = function () {
24
+ this._origValues = null;
25
+ };
26
+ // TODO: mixin impl is not very typesafe
27
+ // Not needed
28
+ // interface IPrimitiveArray extends IObservableArray {
29
+ // [index: number]: any;
30
+ // parent?: IStructuralObject;
31
+ // parentProperty?: DataProperty;
32
+ // }
33
+ let primitiveArrayMixin = {
34
+ // complexArray will have the following props
35
+ // parent
36
+ // propertyPath
37
+ // parentProperty
38
+ // addedItems - only if modified
39
+ // removedItems - only if modified
40
+ // each complexAspect of any entity within a complexArray
41
+ // will have its own _complexState = "A/M";
42
+ /**
43
+ Primitive arrays are not actually classes, they are objects that mimic arrays. A primitive array is collection of
44
+ primitive types associated with a data property on a single entity or complex object. i.e. customer.invoiceNumbers.
45
+ This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
46
+ are all provided as well as several special purpose methods.
47
+ @class {primitiveArray}
48
+ **/
49
+ /**
50
+ An [[Event]] that fires whenever the contents of this array changed. This event
51
+ is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
52
+ Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
53
+ collections are collected into a single notification event for each relation array.
54
+ @example
55
+ // assume order is an order entity attached to an EntityManager.
56
+ orders.arrayChanged.subscribe(
57
+ function (arrayChangedArgs) {
58
+ let addedEntities = arrayChangedArgs.added;
59
+ let removedEntities = arrayChanged.removed;
60
+ });
61
+ @event arrayChanged
62
+ @param added {Array of Primitives} An array of all of the items added to this collection.
63
+ @param removed {Array of Primitives} An array of all of the items removed from this collection.
64
+ @readOnly
65
+ **/
66
+ // virtual impls
67
+ _getGoodAdds: ɵ0,
68
+ _beforeChange: ɵ1,
69
+ _processAdds: ɵ2,
70
+ _processRemoves: ɵ3,
71
+ _rejectChanges: ɵ4,
72
+ _acceptChanges: ɵ5
73
+ };
74
+ // local functions
75
+ /** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
76
+ @adapter (see [[IModelLibraryAdapter]])
77
+ @hidden
78
+ */
79
+ export function makePrimitiveArray(arr, parent, parentProperty) {
80
+ let arrX = arr;
81
+ observableArray.initializeParent(arrX, parent, parentProperty);
82
+ arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
83
+ core.extend(arrX, observableArray.mixin);
84
+ return core.extend(arrX, primitiveArrayMixin);
85
+ }
86
+ export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5 };
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlLWFycmF5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9wcmltaXRpdmUtYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRyxNQUFNLFFBQVEsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztXQW1EckIsVUFBUyxJQUFXO0lBQ2pDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxPQUVjO0lBQ2IsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzFDLElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRTtRQUMxQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7S0FDNUI7SUFDRCxJQUFJLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQzlELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNsQztBQUNILENBQUMsT0FFYSxVQUFTLElBQVc7SUFDaEMsaUJBQWlCO0FBQ25CLENBQUMsT0FFZ0IsVUFBUyxPQUFjO0lBQ3RDLGtCQUFrQjtBQUNwQixDQUFDLE9BR2U7SUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPO0lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JELENBQUMsT0FFZTtJQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQzFCLENBQUM7QUE5RUgsd0NBQXdDO0FBRXhDLGFBQWE7QUFDYix1REFBdUQ7QUFDdkQsMEJBQTBCO0FBQzFCLGdDQUFnQztBQUNoQyxtQ0FBbUM7QUFDbkMsSUFBSTtBQUVKLElBQUksbUJBQW1CLEdBQUc7SUFFeEIsNkNBQTZDO0lBQzdDLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsb0JBQW9CO0lBQ3BCLG9DQUFvQztJQUNwQyxzQ0FBc0M7SUFDdEMsMERBQTBEO0lBQzFELDRDQUE0QztJQUU1Qzs7Ozs7O09BTUc7SUFFSDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUVELGdCQUFnQjtJQUNsQixZQUFZLElBRVg7SUFFRCxhQUFhLElBUVo7SUFFRCxZQUFZLElBRVg7SUFFRCxlQUFlLElBRWQ7SUFHRCxjQUFjLElBSWI7SUFFRCxjQUFjLElBRWI7Q0FDRixDQUFDO0FBQ0Esa0JBQWtCO0FBRXBCOzs7RUFHRTtBQUNGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxHQUFVLEVBQUUsTUFBd0IsRUFBRSxjQUE0QjtJQUNuRyxJQUFJLElBQUksR0FBRyxHQUFVLENBQUM7SUFDdEIsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSAgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBvYnNlcnZhYmxlQXJyYXkgfSBmcm9tICcuL29ic2VydmFibGUtYXJyYXknO1xyXG5pbXBvcnQgeyBCcmVlemVFdmVudCB9IGZyb20gJy4vZXZlbnQnO1xyXG5pbXBvcnQgeyBTdHJ1Y3R1cmFsT2JqZWN0IH0gZnJvbSAnLi9lbnRpdHktYXNwZWN0JztcclxuaW1wb3J0IHsgRGF0YVByb3BlcnR5IH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5cclxuLy8gVE9ETzogbWl4aW4gaW1wbCBpcyBub3QgdmVyeSB0eXBlc2FmZVxyXG5cclxuLy8gTm90IG5lZWRlZFxyXG4vLyBpbnRlcmZhY2UgSVByaW1pdGl2ZUFycmF5IGV4dGVuZHMgSU9ic2VydmFibGVBcnJheSB7XHJcbi8vICAgW2luZGV4OiBudW1iZXJdOiBhbnk7XHJcbi8vICAgcGFyZW50PzogSVN0cnVjdHVyYWxPYmplY3Q7XHJcbi8vICAgcGFyZW50UHJvcGVydHk/OiBEYXRhUHJvcGVydHk7XHJcbi8vIH1cclxuXHJcbmxldCBwcmltaXRpdmVBcnJheU1peGluID0ge1xyXG5cclxuICAvLyBjb21wbGV4QXJyYXkgd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcHNcclxuICAvLyAgICBwYXJlbnRcclxuICAvLyAgICBwcm9wZXJ0eVBhdGhcclxuICAvLyAgICBwYXJlbnRQcm9wZXJ0eVxyXG4gIC8vICAgIGFkZGVkSXRlbXMgIC0gb25seSBpZiBtb2RpZmllZFxyXG4gIC8vICAgIHJlbW92ZWRJdGVtcyAgLSBvbmx5IGlmIG1vZGlmaWVkXHJcbiAgLy8gIGVhY2ggY29tcGxleEFzcGVjdCBvZiBhbnkgZW50aXR5IHdpdGhpbiBhIGNvbXBsZXhBcnJheVxyXG4gIC8vICB3aWxsIGhhdmUgaXRzIG93biBfY29tcGxleFN0YXRlID0gXCJBL01cIjtcclxuXHJcbiAgLyoqXHJcbiAgUHJpbWl0aXZlIGFycmF5cyBhcmUgbm90IGFjdHVhbGx5IGNsYXNzZXMsIHRoZXkgYXJlIG9iamVjdHMgdGhhdCBtaW1pYyBhcnJheXMuIEEgcHJpbWl0aXZlIGFycmF5IGlzIGNvbGxlY3Rpb24gb2ZcclxuICBwcmltaXRpdmUgdHlwZXMgYXNzb2NpYXRlZCB3aXRoIGEgZGF0YSBwcm9wZXJ0eSBvbiBhIHNpbmdsZSBlbnRpdHkgb3IgY29tcGxleCBvYmplY3QuIGkuZS4gY3VzdG9tZXIuaW52b2ljZU51bWJlcnMuXHJcbiAgVGhpcyBjb2xsZWN0aW9uIGxvb2tzIGxpa2UgYW4gYXJyYXkgaW4gdGhhdCB0aGUgYmFzaWMgbWV0aG9kcyBvbiBhcnJheXMgc3VjaCBhcyAncHVzaCcsICdwb3AnLCAnc2hpZnQnLCAndW5zaGlmdCcsICdzcGxpY2UnXHJcbiAgYXJlIGFsbCBwcm92aWRlZCBhcyB3ZWxsIGFzIHNldmVyYWwgc3BlY2lhbCBwdXJwb3NlIG1ldGhvZHMuXHJcbiAgQGNsYXNzIHtwcmltaXRpdmVBcnJheX1cclxuICAqKi9cclxuXHJcbiAgLyoqXHJcbiAgQW4gW1tFdmVudF1dIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYXJyYXkgY2hhbmdlZC4gIFRoaXMgZXZlbnRcclxuICBpcyBmaXJlZCBhbnkgdGltZSBhIG5ldyBlbnRpdHkgaXMgYXR0YWNoZWQgb3IgYWRkZWQgdG8gdGhlIEVudGl0eU1hbmFnZXIgYW5kIGhhcHBlbnMgdG8gYmVsb25nIHRvIHRoaXMgY29sbGVjdGlvbi5cclxuICBBZGRzIHRoYXQgb2NjdXIgYXMgYSByZXN1bHQgb2YgcXVlcnkgb3IgaW1wb3J0IG9wZXJhdGlvbnMgYXJlIGJhdGNoZWQgc28gdGhhdCBhbGwgb2YgdGhlIGFkZHMgb3IgcmVtb3ZlcyB0byBhbnkgaW5kaXZpZHVhbFxyXG4gIGNvbGxlY3Rpb25zIGFyZSBjb2xsZWN0ZWQgaW50byBhIHNpbmdsZSBub3RpZmljYXRpb24gZXZlbnQgZm9yIGVhY2ggcmVsYXRpb24gYXJyYXkuXHJcbiAgQGV4YW1wbGVcclxuICAgICAgLy8gYXNzdW1lIG9yZGVyIGlzIGFuIG9yZGVyIGVudGl0eSBhdHRhY2hlZCB0byBhbiBFbnRpdHlNYW5hZ2VyLlxyXG4gICAgICBvcmRlcnMuYXJyYXlDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgZnVuY3Rpb24gKGFycmF5Q2hhbmdlZEFyZ3MpIHtcclxuICAgICAgICAgIGxldCBhZGRlZEVudGl0aWVzID0gYXJyYXlDaGFuZ2VkQXJncy5hZGRlZDtcclxuICAgICAgICAgIGxldCByZW1vdmVkRW50aXRpZXMgPSBhcnJheUNoYW5nZWQucmVtb3ZlZDtcclxuICAgICAgfSk7XHJcbiAgQGV2ZW50IGFycmF5Q2hhbmdlZFxyXG4gIEBwYXJhbSBhZGRlZCB7QXJyYXkgb2YgUHJpbWl0aXZlc30gQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBpdGVtcyBhZGRlZCB0byB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQHBhcmFtIHJlbW92ZWQge0FycmF5IG9mIFByaW1pdGl2ZXN9IEFuIGFycmF5IG9mIGFsbCBvZiB0aGUgaXRlbXMgcmVtb3ZlZCBmcm9tIHRoaXMgY29sbGVjdGlvbi5cclxuICBAcmVhZE9ubHlcclxuICAqKi9cclxuXHJcbiAgICAvLyB2aXJ0dWFsIGltcGxzXHJcbiAgX2dldEdvb2RBZGRzOiAgZnVuY3Rpb24oYWRkczogYW55W10pIHtcclxuICAgIHJldHVybiBhZGRzO1xyXG4gIH0sXHJcblxyXG4gIF9iZWZvcmVDaGFuZ2U6IGZ1bmN0aW9uKCkge1xyXG4gICAgbGV0IGVudGl0eUFzcGVjdCA9IHRoaXMuZ2V0RW50aXR5QXNwZWN0KCk7XHJcbiAgICBpZiAoZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzVW5jaGFuZ2VkKCkpIHtcclxuICAgICAgZW50aXR5QXNwZWN0LnNldE1vZGlmaWVkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzTW9kaWZpZWQoKSAmJiAhdGhpcy5fb3JpZ1ZhbHVlcykge1xyXG4gICAgICB0aGlzLl9vcmlnVmFsdWVzID0gdGhpcy5zbGljZSgwKTtcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc0FkZHM6IGZ1bmN0aW9uKGFkZHM6IGFueVtdKSB7XHJcbiAgICAvLyBub3RoaW5nIG5lZWRlZFxyXG4gIH0sXHJcblxyXG4gIF9wcm9jZXNzUmVtb3ZlczogZnVuY3Rpb24ocmVtb3ZlczogYW55W10pIHtcclxuICAgIC8vIG5vdGhpbmcgbmVlZGVkO1xyXG4gIH0sXHJcblxyXG5cclxuICBfcmVqZWN0Q2hhbmdlczogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuX29yaWdWYWx1ZXMpIHJldHVybjtcclxuICAgIHRoaXMubGVuZ3RoID0gMDtcclxuICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMsIHRoaXMuX29yaWdWYWx1ZXMpO1xyXG4gIH0sXHJcblxyXG4gIF9hY2NlcHRDaGFuZ2VzOiBmdW5jdGlvbigpIHtcclxuICAgIHRoaXMuX29yaWdWYWx1ZXMgPSBudWxsO1xyXG4gIH1cclxufTtcclxuICAvLyBsb2NhbCBmdW5jdGlvbnNcclxuXHJcbi8qKiBGb3IgdXNlIGJ5IGJyZWV6ZSBwbHVnaW4gYXV0aG9ycyBvbmx5LiBUaGUgY2xhc3MgaXMgZm9yIHVzZSBpbiBidWlsZGluZyBhIFtbSU1vZGVsTGlicmFyeUFkYXB0ZXJdXSBpbXBsZW1lbnRhdGlvbi4gXHJcbkBhZGFwdGVyIChzZWUgW1tJTW9kZWxMaWJyYXJ5QWRhcHRlcl1dKSAgICBcclxuQGhpZGRlbiBcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VQcmltaXRpdmVBcnJheShhcnI6IGFueVtdLCBwYXJlbnQ6IFN0cnVjdHVyYWxPYmplY3QsIHBhcmVudFByb3BlcnR5OiBEYXRhUHJvcGVydHkpIHtcclxuICBsZXQgYXJyWCA9IGFyciBhcyBhbnk7XHJcbiAgb2JzZXJ2YWJsZUFycmF5LmluaXRpYWxpemVQYXJlbnQoYXJyWCwgcGFyZW50LCBwYXJlbnRQcm9wZXJ0eSk7XHJcbiAgYXJyWC5hcnJheUNoYW5nZWQgPSBuZXcgQnJlZXplRXZlbnQoXCJhcnJheUNoYW5nZWRcIiwgYXJyWCk7XHJcbiAgY29yZS5leHRlbmQoYXJyWCwgb2JzZXJ2YWJsZUFycmF5Lm1peGluKTtcclxuICByZXR1cm4gY29yZS5leHRlbmQoYXJyWCwgcHJpbWl0aXZlQXJyYXlNaXhpbik7XHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -0,0 +1,152 @@
1
+ import { core } from './core';
2
+ import { BreezeEnum } from './enum';
3
+ import { assertConfig } from './assert-param';
4
+ /**
5
+ MergeStrategy is an 'Enum' that determines how entities are merged into an EntityManager.
6
+
7
+ @class MergeStrategy
8
+ @static
9
+ **/
10
+ export class MergeStrategy extends BreezeEnum {
11
+ }
12
+ /**
13
+ MergeStrategy.PreserveChanges updates the cached entity with the incoming values unless the cached entity is in a changed
14
+ state (added, modified, deleted) in which case the incoming values are ignored. The updated cached entity’s EntityState will
15
+ remain [[EntityState.Unchanged]] unless you’re importing entities in which case the new EntityState will
16
+ be that of the imported entities.
17
+ **/
18
+ MergeStrategy.PreserveChanges = new MergeStrategy();
19
+ /**
20
+ MergeStrategy.OverwriteChanges always updates the cached entity with incoming values even if the entity is in
21
+ a changed state (added, modified, deleted). After the merge, the pending changes are lost.
22
+ The new EntityState will be [[EntityState/Unchanged]] unless you’re importing entities
23
+ in which case the new EntityState will be that of the imported entities.
24
+ **/
25
+ MergeStrategy.OverwriteChanges = new MergeStrategy();
26
+ /**
27
+ SkipMerge is used to ignore incoming values. Adds the incoming entity to the cache only if there is no cached entity with the same key.
28
+ This is the fastest merge strategy but your existing cached data will remain “stale”.
29
+ **/
30
+ MergeStrategy.SkipMerge = new MergeStrategy();
31
+ /**
32
+ Disallowed is used to throw an exception if there is an incoming entity with the same key as an entity already in the cache.
33
+ Use this strategy when you want to be sure that the incoming entity is not already in cache.
34
+ This is the default strategy for EntityManager.attachEntity.
35
+ **/
36
+ MergeStrategy.Disallowed = new MergeStrategy();
37
+ MergeStrategy.prototype._$typeName = "MergeStrategy";
38
+ Error['x'] = MergeStrategy.resolveSymbols();
39
+ /**
40
+ FetchStrategy is an 'Enum' that determines how and where entities are retrieved from as a result of a query.
41
+ **/
42
+ export class FetchStrategy extends BreezeEnum {
43
+ }
44
+ /**
45
+ FromServer is used to tell the query to execute the query against a remote data source on the server.
46
+ **/
47
+ FetchStrategy.FromServer = new FetchStrategy();
48
+ /**
49
+ FromLocalCache is used to tell the query to execute the query against a local EntityManager instead of going to a remote server.
50
+ **/
51
+ FetchStrategy.FromLocalCache = new FetchStrategy();
52
+ FetchStrategy.prototype._$typeName = "FetchStrategy";
53
+ Error['x'] = FetchStrategy.resolveSymbols();
54
+ /**
55
+ A QueryOptions instance is used to specify the 'options' under which a query will occur.
56
+ **/
57
+ export class QueryOptions {
58
+ /**
59
+ QueryOptions constructor
60
+ > var newQo = new QueryOptions( { mergeStrategy: MergeStrategy.OverwriteChanges });
61
+ > // assume em1 is a preexisting EntityManager
62
+ > em1.setProperties( { queryOptions: newQo });
63
+ Any QueryOptions property that is not defined will be defaulted from any QueryOptions defined at a higher level in the breeze hierarchy, i.e.
64
+ - from query.queryOptions
65
+ - to entityManager.queryOptions
66
+ - to QueryOptions.defaultInstance;
67
+
68
+ @param config - A configuration object.
69
+ **/
70
+ constructor(config) {
71
+ QueryOptions._updateWithConfig(this, config);
72
+ }
73
+ static resolve(queryOptionsArray) {
74
+ return new QueryOptions(core.resolveProperties(queryOptionsArray, ["fetchStrategy", "mergeStrategy", "includeDeleted"]));
75
+ }
76
+ /**
77
+ Returns a copy of this QueryOptions with the specified [[MergeStrategy]],
78
+ [[FetchStrategy]], or 'includeDeleted' option applied.
79
+ > // Given an EntityManager instance, em
80
+ > var queryOptions = em.queryOptions.using(MergeStrategy.PreserveChanges);
81
+
82
+ or
83
+ > var queryOptions = em.queryOptions.using(FetchStrategy.FromLocalCache);
84
+
85
+ or
86
+ > var queryOptions = em.queryOptions.using({ mergeStrategy: MergeStrategy.OverwriteChanges });
87
+
88
+ or
89
+ > var queryOptions = em.queryOptions.using({
90
+ > includeDeleted: true,
91
+ > fetchStrategy: FetchStrategy.FromLocalCache
92
+ > });
93
+ @param config - A configuration object or a standalone [[MergeStrategy]] or [[FetchStrategy]]
94
+ @return A new QueryOptions instance.
95
+ **/
96
+ using(qoConfig) {
97
+ if (!qoConfig)
98
+ return this;
99
+ let result = new QueryOptions(this);
100
+ if (qoConfig instanceof MergeStrategy) {
101
+ qoConfig = { mergeStrategy: qoConfig };
102
+ }
103
+ else if (qoConfig instanceof FetchStrategy) {
104
+ qoConfig = { fetchStrategy: qoConfig };
105
+ }
106
+ return QueryOptions._updateWithConfig(result, qoConfig);
107
+ }
108
+ /**
109
+ Sets the 'defaultInstance' by creating a copy of the current 'defaultInstance' and then applying all of the properties of the current instance.
110
+ The current instance is returned unchanged.
111
+ > var newQo = new QueryOptions( { mergeStrategy: MergeStrategy.OverwriteChanges });
112
+ > newQo.setAsDefault();
113
+ **/
114
+ setAsDefault() {
115
+ return core.setAsDefault(this, QueryOptions);
116
+ }
117
+ toJSON() {
118
+ return core.toJson(this, {
119
+ fetchStrategy: null,
120
+ mergeStrategy: null,
121
+ includeDeleted: false
122
+ });
123
+ }
124
+ static fromJSON(json) {
125
+ return new QueryOptions({
126
+ fetchStrategy: FetchStrategy.fromName(json.fetchStrategy),
127
+ mergeStrategy: MergeStrategy.fromName(json.mergeStrategy),
128
+ includeDeleted: json.includeDeleted === true
129
+ });
130
+ }
131
+ /** @hidden @internal */
132
+ static _updateWithConfig(obj, config) {
133
+ if (config) {
134
+ assertConfig(config)
135
+ .whereParam("fetchStrategy").isEnumOf(FetchStrategy).isOptional()
136
+ .whereParam("mergeStrategy").isEnumOf(MergeStrategy).isOptional()
137
+ .whereParam("includeDeleted").isBoolean().isOptional()
138
+ .applyAll(obj);
139
+ }
140
+ return obj;
141
+ }
142
+ }
143
+ /**
144
+ The default instance for use whenever QueryOptions are not specified.
145
+ **/
146
+ QueryOptions.defaultInstance = new QueryOptions({
147
+ fetchStrategy: FetchStrategy.FromServer,
148
+ mergeStrategy: MergeStrategy.PreserveChanges,
149
+ includeDeleted: false
150
+ });
151
+ QueryOptions.prototype._$typeName = "QueryOptions";
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvcXVlcnktb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxVQUFVOztBQUUzQzs7Ozs7R0FLRztBQUNJLDZCQUFlLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztBQUM3Qzs7Ozs7R0FLRztBQUNJLDhCQUFnQixHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7QUFFOUM7OztHQUdHO0FBQ0ksdUJBQVMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBRXZDOzs7O0dBSUc7QUFDSSx3QkFBVSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7QUFJMUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBQ3JELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFNUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7O0FBRTNDOztHQUVHO0FBQ0ksd0JBQVUsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBQ3hDOztHQUVHO0FBQ0ksNEJBQWMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO0FBRzlDLGFBQWEsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztBQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBWTVDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFtQnZCOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsWUFBWSxNQUEyQjtRQUNyQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUF3QjtRQUNyQyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUJHO0lBQ0gsS0FBSyxDQUFDLFFBQTREO1FBQ2hFLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDM0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSyxRQUFRLFlBQVksYUFBYSxFQUFFO1lBQ3RDLFFBQVEsR0FBRyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUN4QzthQUFNLElBQUssUUFBUSxZQUFZLGFBQWEsRUFBRTtZQUM3QyxRQUFRLEdBQUcsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLENBQUM7U0FDeEM7UUFDRCxPQUFPLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGNBQWMsRUFBRSxLQUFLO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLElBQVM7UUFDdkIsT0FBTyxJQUFJLFlBQVksQ0FBQztZQUN0QixhQUFhLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3pELGFBQWEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDekQsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSTtTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCO0lBQ2hCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFpQixFQUFFLE1BQTJCO1FBQzdFLElBQUksTUFBTSxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQztpQkFDakIsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLEVBQUU7aUJBQ2hFLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFO2lCQUNoRSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUU7aUJBQ3JELFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNsQjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7QUFoR0Q7O0dBRUc7QUFDSSw0QkFBZSxHQUFHLElBQUksWUFBWSxDQUFDO0lBQ3hDLGFBQWEsRUFBRSxhQUFhLENBQUMsVUFBVTtJQUN2QyxhQUFhLEVBQUUsYUFBYSxDQUFDLGVBQWU7SUFDNUMsY0FBYyxFQUFFLEtBQUs7Q0FDdEIsQ0FBQyxDQUFDO0FBNEZMLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBCcmVlemVFbnVtIH0gZnJvbSAnLi9lbnVtJztcclxuaW1wb3J0IHsgYXNzZXJ0Q29uZmlnIH0gZnJvbSAnLi9hc3NlcnQtcGFyYW0nO1xyXG5cclxuLyoqXHJcbk1lcmdlU3RyYXRlZ3kgaXMgYW4gJ0VudW0nIHRoYXQgZGV0ZXJtaW5lcyBob3cgZW50aXRpZXMgYXJlIG1lcmdlZCBpbnRvIGFuIEVudGl0eU1hbmFnZXIuXHJcblxyXG5AY2xhc3MgTWVyZ2VTdHJhdGVneVxyXG5Ac3RhdGljXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgTWVyZ2VTdHJhdGVneSBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG5cclxuICAvKipcclxuICBNZXJnZVN0cmF0ZWd5LlByZXNlcnZlQ2hhbmdlcyB1cGRhdGVzIHRoZSBjYWNoZWQgZW50aXR5IHdpdGggdGhlIGluY29taW5nIHZhbHVlcyB1bmxlc3MgdGhlIGNhY2hlZCBlbnRpdHkgaXMgaW4gYSBjaGFuZ2VkXHJcbiAgc3RhdGUgKGFkZGVkLCBtb2RpZmllZCwgZGVsZXRlZCkgaW4gd2hpY2ggY2FzZSB0aGUgaW5jb21pbmcgdmFsdWVzIGFyZSBpZ25vcmVkLiBUaGUgdXBkYXRlZCBjYWNoZWQgZW50aXR54oCZcyBFbnRpdHlTdGF0ZSB3aWxsXHJcbiAgcmVtYWluIFtbRW50aXR5U3RhdGUuVW5jaGFuZ2VkXV0gdW5sZXNzIHlvdeKAmXJlIGltcG9ydGluZyBlbnRpdGllcyBpbiB3aGljaCBjYXNlIHRoZSBuZXcgRW50aXR5U3RhdGUgd2lsbFxyXG4gIGJlIHRoYXQgb2YgdGhlIGltcG9ydGVkIGVudGl0aWVzLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBQcmVzZXJ2ZUNoYW5nZXMgPSBuZXcgTWVyZ2VTdHJhdGVneSgpO1xyXG4gIC8qKlxyXG4gIE1lcmdlU3RyYXRlZ3kuT3ZlcndyaXRlQ2hhbmdlcyBhbHdheXMgdXBkYXRlcyB0aGUgY2FjaGVkIGVudGl0eSB3aXRoIGluY29taW5nIHZhbHVlcyBldmVuIGlmIHRoZSBlbnRpdHkgaXMgaW5cclxuICBhIGNoYW5nZWQgc3RhdGUgKGFkZGVkLCBtb2RpZmllZCwgZGVsZXRlZCkuIEFmdGVyIHRoZSBtZXJnZSwgdGhlIHBlbmRpbmcgY2hhbmdlcyBhcmUgbG9zdC5cclxuICBUaGUgbmV3IEVudGl0eVN0YXRlIHdpbGwgYmUgIFtbRW50aXR5U3RhdGUvVW5jaGFuZ2VkXV0gdW5sZXNzIHlvdeKAmXJlIGltcG9ydGluZyBlbnRpdGllc1xyXG4gIGluIHdoaWNoIGNhc2UgdGhlIG5ldyBFbnRpdHlTdGF0ZSB3aWxsIGJlIHRoYXQgb2YgdGhlIGltcG9ydGVkIGVudGl0aWVzLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBPdmVyd3JpdGVDaGFuZ2VzID0gbmV3IE1lcmdlU3RyYXRlZ3koKTtcclxuXHJcbiAgLyoqXHJcbiAgU2tpcE1lcmdlIGlzIHVzZWQgdG8gaWdub3JlIGluY29taW5nIHZhbHVlcy4gQWRkcyB0aGUgaW5jb21pbmcgZW50aXR5IHRvIHRoZSBjYWNoZSBvbmx5IGlmIHRoZXJlIGlzIG5vIGNhY2hlZCBlbnRpdHkgd2l0aCB0aGUgc2FtZSBrZXkuXHJcbiAgVGhpcyBpcyB0aGUgZmFzdGVzdCBtZXJnZSBzdHJhdGVneSBidXQgeW91ciBleGlzdGluZyBjYWNoZWQgZGF0YSB3aWxsIHJlbWFpbiDigJxzdGFsZeKAnS5cclxuICAqKi9cclxuICBzdGF0aWMgU2tpcE1lcmdlID0gbmV3IE1lcmdlU3RyYXRlZ3koKTtcclxuXHJcbiAgLyoqXHJcbiAgRGlzYWxsb3dlZCBpcyB1c2VkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBpbmNvbWluZyBlbnRpdHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgYW4gZW50aXR5IGFscmVhZHkgaW4gdGhlIGNhY2hlLlxyXG4gIFVzZSB0aGlzIHN0cmF0ZWd5IHdoZW4geW91IHdhbnQgdG8gYmUgc3VyZSB0aGF0IHRoZSBpbmNvbWluZyBlbnRpdHkgaXMgbm90IGFscmVhZHkgaW4gY2FjaGUuXHJcbiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBzdHJhdGVneSBmb3IgRW50aXR5TWFuYWdlci5hdHRhY2hFbnRpdHkuXHJcbiAgKiovXHJcbiAgc3RhdGljIERpc2FsbG93ZWQgPSBuZXcgTWVyZ2VTdHJhdGVneSgpO1xyXG5cclxuXHJcbn1cclxuTWVyZ2VTdHJhdGVneS5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiTWVyZ2VTdHJhdGVneVwiO1xyXG5FcnJvclsneCddID0gTWVyZ2VTdHJhdGVneS5yZXNvbHZlU3ltYm9scygpO1xyXG5cclxuLyoqXHJcbkZldGNoU3RyYXRlZ3kgaXMgYW4gJ0VudW0nIHRoYXQgZGV0ZXJtaW5lcyBob3cgYW5kIHdoZXJlIGVudGl0aWVzIGFyZSByZXRyaWV2ZWQgZnJvbSBhcyBhIHJlc3VsdCBvZiBhIHF1ZXJ5LlxyXG4qKi9cclxuZXhwb3J0IGNsYXNzIEZldGNoU3RyYXRlZ3kgZXh0ZW5kcyBCcmVlemVFbnVtIHtcclxuXHJcbiAgLyoqXHJcbiAgRnJvbVNlcnZlciBpcyB1c2VkIHRvIHRlbGwgdGhlIHF1ZXJ5IHRvIGV4ZWN1dGUgdGhlIHF1ZXJ5IGFnYWluc3QgYSByZW1vdGUgZGF0YSBzb3VyY2Ugb24gdGhlIHNlcnZlci5cclxuICAqKi9cclxuICBzdGF0aWMgRnJvbVNlcnZlciA9IG5ldyBGZXRjaFN0cmF0ZWd5KCk7XHJcbiAgLyoqXHJcbiAgRnJvbUxvY2FsQ2FjaGUgaXMgdXNlZCB0byB0ZWxsIHRoZSBxdWVyeSB0byBleGVjdXRlIHRoZSBxdWVyeSBhZ2FpbnN0IGEgbG9jYWwgRW50aXR5TWFuYWdlciBpbnN0ZWFkIG9mIGdvaW5nIHRvIGEgcmVtb3RlIHNlcnZlci5cclxuICAqKi9cclxuICBzdGF0aWMgRnJvbUxvY2FsQ2FjaGUgPSBuZXcgRmV0Y2hTdHJhdGVneSgpO1xyXG5cclxufVxyXG5GZXRjaFN0cmF0ZWd5LnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJGZXRjaFN0cmF0ZWd5XCI7XHJcbkVycm9yWyd4J10gPSBGZXRjaFN0cmF0ZWd5LnJlc29sdmVTeW1ib2xzKCk7XHJcblxyXG4vKiogQ29uZmlndXJhdGlvbiBpbmZvIHRvIGJlIHBhc3NlZCB0byB0aGUgW1tRdWVyeU9wdGlvbnNdXSBjb25zdHJ1Y3Rvci4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBUaGUgW1tGZXRjaFN0cmF0ZWd5XV0gdG8gdXNlIHdpdGggYW55IHF1ZXJpZXMuKi9cclxuICBmZXRjaFN0cmF0ZWd5PzogRmV0Y2hTdHJhdGVneTtcclxuICAvKiogVGhlIFtbTWVyZ2VTdHJhdGVneV1dIHRvIHVzZSB3aXRoIGFueSBxdWVyaWVzLiovXHJcbiAgbWVyZ2VTdHJhdGVneT86IE1lcmdlU3RyYXRlZ3k7XHJcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBjYWNoZWQgZGVsZXRlZCBlbnRpdGllcyBpbiBhIHF1ZXJ5IHJlc3VsdCAoZmFsc2UgYnkgZGVmYXVsdCkuIF9fUmVhZCBPbmx5X18gKi9cclxuICBpbmNsdWRlRGVsZXRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG5BIFF1ZXJ5T3B0aW9ucyBpbnN0YW5jZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlICdvcHRpb25zJyB1bmRlciB3aGljaCBhIHF1ZXJ5IHdpbGwgb2NjdXIuXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgUXVlcnlPcHRpb25zIHtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBkZWNsYXJlIF8kdHlwZU5hbWU6IHN0cmluZztcclxuICAvKiogVGhlIFtbRmV0Y2hTdHJhdGVneV1dIHRvIHVzZSB3aXRoIGFueSBxdWVyaWVzLiBfX1JlYWQgT25seV9fICovXHJcbiAgZGVjbGFyZSBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5O1xyXG4gIC8qKiBUaGUgW1tNZXJnZVN0cmF0ZWd5XV0gdG8gdXNlIHdpdGggYW55IHF1ZXJpZXMuIF9fUmVhZCBPbmx5X18gKi9cclxuICBkZWNsYXJlIG1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3k7XHJcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBjYWNoZWQgZGVsZXRlZCBlbnRpdGllcyBpbiBhIHF1ZXJ5IHJlc3VsdCAoZmFsc2UgYnkgZGVmYXVsdCkuIF9fUmVhZCBPbmx5X18gKi9cclxuICBkZWNsYXJlIGluY2x1ZGVEZWxldGVkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICBUaGUgZGVmYXVsdCBpbnN0YW5jZSBmb3IgdXNlIHdoZW5ldmVyIFF1ZXJ5T3B0aW9ucyBhcmUgbm90IHNwZWNpZmllZC5cclxuICAqKi9cclxuICBzdGF0aWMgZGVmYXVsdEluc3RhbmNlID0gbmV3IFF1ZXJ5T3B0aW9ucyh7XHJcbiAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21TZXJ2ZXIsXHJcbiAgICBtZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5LlByZXNlcnZlQ2hhbmdlcyxcclxuICAgIGluY2x1ZGVEZWxldGVkOiBmYWxzZVxyXG4gIH0pO1xyXG5cclxuICAvKipcclxuICBRdWVyeU9wdGlvbnMgY29uc3RydWN0b3JcclxuICA+ICAgICB2YXIgbmV3UW8gPSBuZXcgUXVlcnlPcHRpb25zKCB7IG1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3kuT3ZlcndyaXRlQ2hhbmdlcyB9KTtcclxuICA+ICAgICAvLyBhc3N1bWUgZW0xIGlzIGEgcHJlZXhpc3RpbmcgRW50aXR5TWFuYWdlclxyXG4gID4gICAgIGVtMS5zZXRQcm9wZXJ0aWVzKCB7IHF1ZXJ5T3B0aW9uczogbmV3UW8gfSk7XHJcbiAgQW55IFF1ZXJ5T3B0aW9ucyBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBkZWZpbmVkIHdpbGwgYmUgZGVmYXVsdGVkIGZyb20gYW55IFF1ZXJ5T3B0aW9ucyBkZWZpbmVkIGF0IGEgaGlnaGVyIGxldmVsIGluIHRoZSBicmVlemUgaGllcmFyY2h5LCBpLmUuXHJcbiAgLSAgZnJvbSBxdWVyeS5xdWVyeU9wdGlvbnNcclxuICAtICB0byAgIGVudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zXHJcbiAgLSAgdG8gICBRdWVyeU9wdGlvbnMuZGVmYXVsdEluc3RhbmNlO1xyXG5cclxuICBAcGFyYW0gY29uZmlnIC0gQSBjb25maWd1cmF0aW9uIG9iamVjdC5cclxuICAqKi9cclxuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBRdWVyeU9wdGlvbnNDb25maWcpIHtcclxuICAgIFF1ZXJ5T3B0aW9ucy5fdXBkYXRlV2l0aENvbmZpZyh0aGlzLCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlc29sdmUocXVlcnlPcHRpb25zQXJyYXk6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gbmV3IFF1ZXJ5T3B0aW9ucyhjb3JlLnJlc29sdmVQcm9wZXJ0aWVzKHF1ZXJ5T3B0aW9uc0FycmF5LCBbXCJmZXRjaFN0cmF0ZWd5XCIsIFwibWVyZ2VTdHJhdGVneVwiLCBcImluY2x1ZGVEZWxldGVkXCJdKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGEgY29weSBvZiB0aGlzIFF1ZXJ5T3B0aW9ucyB3aXRoIHRoZSBzcGVjaWZpZWQgW1tNZXJnZVN0cmF0ZWd5XV0sXHJcbiAgW1tGZXRjaFN0cmF0ZWd5XV0sIG9yICdpbmNsdWRlRGVsZXRlZCcgb3B0aW9uIGFwcGxpZWQuXHJcbiAgPiAgICAgLy8gR2l2ZW4gYW4gRW50aXR5TWFuYWdlciBpbnN0YW5jZSwgZW1cclxuICA+ICAgICB2YXIgcXVlcnlPcHRpb25zID0gZW0ucXVlcnlPcHRpb25zLnVzaW5nKE1lcmdlU3RyYXRlZ3kuUHJlc2VydmVDaGFuZ2VzKTtcclxuXHJcbiAgb3JcclxuICA+ICAgICB2YXIgcXVlcnlPcHRpb25zID0gZW0ucXVlcnlPcHRpb25zLnVzaW5nKEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGUpO1xyXG5cclxuICBvclxyXG4gID4gICAgIHZhciBxdWVyeU9wdGlvbnMgPSBlbS5xdWVyeU9wdGlvbnMudXNpbmcoeyBtZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5Lk92ZXJ3cml0ZUNoYW5nZXMgfSk7XHJcblxyXG4gIG9yXHJcbiAgPiAgICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IGVtLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgPiAgICAgICAgaW5jbHVkZURlbGV0ZWQ6IHRydWUsXHJcbiAgPiAgICAgICAgZmV0Y2hTdHJhdGVneTogIEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGUgXHJcbiAgPiAgICAgfSk7XHJcbiAgQHBhcmFtIGNvbmZpZyAtIEEgY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSBzdGFuZGFsb25lIFtbTWVyZ2VTdHJhdGVneV1dIG9yIFtbRmV0Y2hTdHJhdGVneV1dIFxyXG4gIEByZXR1cm4gQSBuZXcgUXVlcnlPcHRpb25zIGluc3RhbmNlLlxyXG4gICoqL1xyXG4gIHVzaW5nKHFvQ29uZmlnOiBRdWVyeU9wdGlvbnNDb25maWcgfCBNZXJnZVN0cmF0ZWd5IHwgRmV0Y2hTdHJhdGVneSkge1xyXG4gICAgaWYgKCFxb0NvbmZpZykgcmV0dXJuIHRoaXM7XHJcbiAgICBsZXQgcmVzdWx0ID0gbmV3IFF1ZXJ5T3B0aW9ucyh0aGlzKTtcclxuICAgIGlmICggcW9Db25maWcgaW5zdGFuY2VvZiBNZXJnZVN0cmF0ZWd5KSB7XHJcbiAgICAgIHFvQ29uZmlnID0geyBtZXJnZVN0cmF0ZWd5OiBxb0NvbmZpZyB9O1xyXG4gICAgfSBlbHNlIGlmICggcW9Db25maWcgaW5zdGFuY2VvZiBGZXRjaFN0cmF0ZWd5KSB7XHJcbiAgICAgIHFvQ29uZmlnID0geyBmZXRjaFN0cmF0ZWd5OiBxb0NvbmZpZyB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFF1ZXJ5T3B0aW9ucy5fdXBkYXRlV2l0aENvbmZpZyhyZXN1bHQsIHFvQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFNldHMgdGhlICdkZWZhdWx0SW5zdGFuY2UnIGJ5IGNyZWF0aW5nIGEgY29weSBvZiB0aGUgY3VycmVudCAnZGVmYXVsdEluc3RhbmNlJyBhbmQgdGhlbiBhcHBseWluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UuXHJcbiAgVGhlIGN1cnJlbnQgaW5zdGFuY2UgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxyXG4gID4gICAgIHZhciBuZXdRbyA9IG5ldyBRdWVyeU9wdGlvbnMoIHsgbWVyZ2VTdHJhdGVneTogTWVyZ2VTdHJhdGVneS5PdmVyd3JpdGVDaGFuZ2VzIH0pO1xyXG4gID4gICAgIG5ld1FvLnNldEFzRGVmYXVsdCgpO1xyXG4gICoqL1xyXG4gIHNldEFzRGVmYXVsdCgpIHtcclxuICAgIHJldHVybiBjb3JlLnNldEFzRGVmYXVsdCh0aGlzLCBRdWVyeU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIGNvcmUudG9Kc29uKHRoaXMsIHtcclxuICAgICAgZmV0Y2hTdHJhdGVneTogbnVsbCxcclxuICAgICAgbWVyZ2VTdHJhdGVneTogbnVsbCxcclxuICAgICAgaW5jbHVkZURlbGV0ZWQ6IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uOiBhbnkpIHtcclxuICAgIHJldHVybiBuZXcgUXVlcnlPcHRpb25zKHtcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5mcm9tTmFtZShqc29uLmZldGNoU3RyYXRlZ3kpLFxyXG4gICAgICBtZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5LmZyb21OYW1lKGpzb24ubWVyZ2VTdHJhdGVneSksXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkOiBqc29uLmluY2x1ZGVEZWxldGVkID09PSB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF91cGRhdGVXaXRoQ29uZmlnKG9iajogUXVlcnlPcHRpb25zLCBjb25maWc/OiBRdWVyeU9wdGlvbnNDb25maWcpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgYXNzZXJ0Q29uZmlnKGNvbmZpZylcclxuICAgICAgICAud2hlcmVQYXJhbShcImZldGNoU3RyYXRlZ3lcIikuaXNFbnVtT2YoRmV0Y2hTdHJhdGVneSkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJtZXJnZVN0cmF0ZWd5XCIpLmlzRW51bU9mKE1lcmdlU3RyYXRlZ3kpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC53aGVyZVBhcmFtKFwiaW5jbHVkZURlbGV0ZWRcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLmFwcGx5QWxsKG9iaik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbn1cclxuUXVlcnlPcHRpb25zLnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJRdWVyeU9wdGlvbnNcIjtcclxuIl19
@@ -0,0 +1,175 @@
1
+ import { core } from './core';
2
+ import { EntityQuery } from './entity-query';
3
+ import { EntityState } from './entity-state';
4
+ import { BreezeEvent } from './event';
5
+ import { observableArray } from './observable-array';
6
+ const ɵ0 = function (callback, errorCallback) {
7
+ let parent = this.parentEntity;
8
+ let query = EntityQuery.fromEntityNavigation(this.parentEntity, this.navigationProperty);
9
+ let em = parent.entityAspect.entityManager;
10
+ return em.executeQuery(query, callback, errorCallback);
11
+ }, ɵ1 = function () {
12
+ return this.parentEntity.entityAspect;
13
+ }, ɵ2 = function () {
14
+ let em = this.parentEntity.entityAspect.entityManager;
15
+ return em && em._pendingPubs;
16
+ }, ɵ3 = function (adds) {
17
+ return getGoodAdds(this, adds);
18
+ }, ɵ4 = function (adds) {
19
+ processAdds(this, adds);
20
+ }, ɵ5 = function (removes) {
21
+ processRemoves(this, removes);
22
+ };
23
+ let relationArrayMixin = {
24
+ /**
25
+ Relation arrays are not actually classes, they are objects that mimic arrays. A relation array is collection of
26
+ entities associated with a navigation property on a single entity. i.e. customer.orders or order.orderDetails.
27
+ This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
28
+ are all provided as well as several special purpose methods.
29
+ @class {relationArray}
30
+ **/
31
+ /**
32
+ An [[Event]] that fires whenever the contents of this array changed. This event
33
+ is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
34
+ Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
35
+ collections are collected into a single notification event for each relation array.
36
+ @example
37
+ // assume order is an order entity attached to an EntityManager.
38
+ orders.arrayChanged.subscribe(
39
+ function (arrayChangedArgs) {
40
+ let addedEntities = arrayChangedArgs.added;
41
+ let removedEntities = arrayChanged.removed;
42
+ });
43
+ @event arrayChanged
44
+ @param added {Array of Entity} An array of all of the entities added to this collection.
45
+ @param removed {Array of Entity} An array of all of the removed from this collection.
46
+ @readOnly
47
+ **/
48
+ /**
49
+ Performs an asynchronous load of all other the entities associated with this relationArray.
50
+ @example
51
+ // assume orders is an empty, as yet unpopulated, relation array of orders
52
+ // associated with a specific customer.
53
+ orders.load().then(...)
54
+ @method load
55
+ @param [callback] {Function}
56
+ @param [errorCallback] {Function}
57
+ @return {Promise}
58
+ **/
59
+ load: ɵ0,
60
+ _getEventParent: ɵ1,
61
+ _getPendingPubs: ɵ2,
62
+ // virtual impls
63
+ _getGoodAdds: ɵ3,
64
+ _processAdds: ɵ4,
65
+ _processRemoves: ɵ5
66
+ };
67
+ function getGoodAdds(relationArray, adds) {
68
+ let goodAdds = checkForDups(relationArray, adds);
69
+ if (!goodAdds.length) {
70
+ return goodAdds;
71
+ }
72
+ let parentEntity = relationArray.parentEntity;
73
+ let entityManager = parentEntity.entityAspect.entityManager;
74
+ // we do not want to attach an entity during loading
75
+ // because these will all be 'attached' at a later step.
76
+ if (entityManager && !entityManager.isLoading) {
77
+ goodAdds.forEach(function (add) {
78
+ if (add.entityAspect.entityState.isDetached()) {
79
+ relationArray._inProgress = true;
80
+ try {
81
+ entityManager.attachEntity(add, EntityState.Added);
82
+ }
83
+ finally {
84
+ relationArray._inProgress = false;
85
+ }
86
+ }
87
+ });
88
+ }
89
+ return goodAdds;
90
+ }
91
+ function processAdds(relationArray, adds) {
92
+ let parentEntity = relationArray.parentEntity;
93
+ let np = relationArray.navigationProperty;
94
+ let addsInProcess = relationArray._addsInProcess;
95
+ let invNp = np.inverse;
96
+ let startIx = addsInProcess.length;
97
+ try {
98
+ adds.forEach(function (childEntity) {
99
+ addsInProcess.push(childEntity);
100
+ if (invNp) {
101
+ childEntity.setProperty(invNp.name, parentEntity);
102
+ }
103
+ else {
104
+ // This occurs with a unidirectional 1-n navigation - in this case
105
+ // we need to update the fks instead of the navProp
106
+ let pks = parentEntity.entityType.keyProperties;
107
+ np.invForeignKeyNames.forEach(function (fk, i) {
108
+ childEntity.setProperty(fk, parentEntity.getProperty(pks[i].name));
109
+ });
110
+ }
111
+ });
112
+ }
113
+ finally {
114
+ addsInProcess.splice(startIx, adds.length);
115
+ }
116
+ }
117
+ function processRemoves(relationArray, removes) {
118
+ let inp = relationArray.navigationProperty.inverse;
119
+ if (inp) {
120
+ removes.forEach(function (childEntity) {
121
+ childEntity.setProperty(inp.name, null);
122
+ });
123
+ }
124
+ }
125
+ function checkForDups(relationArray, adds) {
126
+ // don't allow dups in this array. - also prevents recursion
127
+ let parentEntity = relationArray.parentEntity;
128
+ let navProp = relationArray.navigationProperty;
129
+ let inverseProp = navProp.inverse;
130
+ let goodAdds;
131
+ if (inverseProp) {
132
+ goodAdds = adds.filter(function (a) {
133
+ if (relationArray._addsInProcess.indexOf(a) >= 0) {
134
+ return false;
135
+ }
136
+ let inverseValue = a.getProperty(inverseProp.name);
137
+ return inverseValue !== parentEntity;
138
+ });
139
+ }
140
+ else {
141
+ // This occurs with a unidirectional 1->N relation ( where there is no n -> 1)
142
+ // in this case we compare fks.
143
+ let fkPropNames = navProp.invForeignKeyNames;
144
+ let keyProps = parentEntity.entityType.keyProperties;
145
+ goodAdds = adds.filter(function (a) {
146
+ if (relationArray._addsInProcess.indexOf(a) >= 0) {
147
+ return false;
148
+ }
149
+ return fkPropNames.some(function (fk, i) {
150
+ let keyProp = keyProps[i].name;
151
+ let keyVal = parentEntity.getProperty(keyProp);
152
+ let fkVal = a.getProperty(fk);
153
+ return keyVal !== fkVal;
154
+ });
155
+ });
156
+ }
157
+ return goodAdds;
158
+ }
159
+ /** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
160
+ @adapter (see [[IModelLibraryAdapter]])
161
+ @hidden
162
+ */
163
+ export function makeRelationArray(arr, parentEntity, navigationProperty) {
164
+ let arrX = arr;
165
+ arrX.parentEntity = parentEntity;
166
+ arrX.navigationProperty = navigationProperty;
167
+ arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
168
+ // array of pushes currently in process on this relation array - used to prevent recursion.
169
+ arrX._addsInProcess = [];
170
+ // need to use mixins here instead of inheritance because we are starting from an existing array object.
171
+ core.extend(arrX, observableArray.mixin);
172
+ return core.extend(arrX, relationArrayMixin);
173
+ }
174
+ export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5 };
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYXJyYXkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL3JlbGF0aW9uLWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFJOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3RDLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7V0FzRDlELFVBQVMsUUFBK0IsRUFBRSxhQUFrQztJQUNoRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQy9CLElBQUksS0FBSyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3pGLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQzNDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3pELENBQUMsT0FFZ0I7SUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDO0FBQ3hDLENBQUMsT0FFZ0I7SUFDZixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUM7SUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQztBQUMvQixDQUFDLE9BR2EsVUFBUyxJQUFjO0lBQ25DLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDLE9BRWEsVUFBUyxJQUFjO0lBQ25DLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyxPQUVnQixVQUFTLE9BQWlCO0lBQ3pDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEMsQ0FBQztBQW5FSCxJQUFJLGtCQUFrQixHQUFHO0lBRXZCOzs7Ozs7T0FNRztJQUVIOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBR0g7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksSUFLSDtJQUVELGVBQWUsSUFFZDtJQUVELGVBQWUsSUFHZDtJQUVELGdCQUFnQjtJQUNoQixZQUFZLElBRVg7SUFFRCxZQUFZLElBRVg7SUFFRCxlQUFlLElBRWQ7Q0FFRixDQUFDO0FBRUYsU0FBUyxXQUFXLENBQUMsYUFBNEIsRUFBRSxJQUFjO0lBQy9ELElBQUksUUFBUSxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7UUFDcEIsT0FBTyxRQUFRLENBQUM7S0FDakI7SUFDRCxJQUFJLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQzlDLElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO0lBQzVELG9EQUFvRDtJQUNwRCx3REFBd0Q7SUFDeEQsSUFBSSxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFO1FBQzdDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxHQUFHO1lBQzVCLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQzdDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNqQyxJQUFJO29CQUNGLGFBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDckQ7d0JBQVM7b0JBQ1IsYUFBYSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7aUJBQ25DO2FBQ0Y7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUNKO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLGFBQTRCLEVBQUUsSUFBYztJQUMvRCxJQUFJLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQzlDLElBQUksRUFBRSxHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztJQUMxQyxJQUFJLGFBQWEsR0FBRyxhQUFhLENBQUMsY0FBYyxDQUFDO0lBRWpELElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDdkIsSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUNuQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLFdBQVc7WUFDaEMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNoQyxJQUFJLEtBQUssRUFBRTtnQkFDVCxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7YUFDbkQ7aUJBQU07Z0JBQ0wsa0VBQWtFO2dCQUNsRSxtREFBbUQ7Z0JBQ25ELElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO2dCQUNoRCxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7b0JBQzNDLFdBQVcsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ3JFLENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUNKO1lBQVM7UUFDUixhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDNUM7QUFFSCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsYUFBNEIsRUFBRSxPQUFpQjtJQUNyRSxJQUFJLEdBQUcsR0FBRyxhQUFhLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDO0lBQ25ELElBQUksR0FBRyxFQUFFO1FBQ1AsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLFdBQVc7WUFDbkMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxHQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0tBQ0o7QUFDSCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsYUFBNEIsRUFBRSxJQUFjO0lBQ2hFLDREQUE0RDtJQUM1RCxJQUFJLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDO0lBQzlDLElBQUksT0FBTyxHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQztJQUMvQyxJQUFJLFdBQVcsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ2xDLElBQUksUUFBa0IsQ0FBQztJQUN2QixJQUFJLFdBQVcsRUFBRTtRQUNmLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNoQyxJQUFJLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDaEQsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUNELElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELE9BQU8sWUFBWSxLQUFLLFlBQVksQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztLQUNKO1NBQU07UUFDTCw4RUFBOEU7UUFDOUUsK0JBQStCO1FBQy9CLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLFFBQVEsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDaEMsSUFBSSxhQUFhLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2hELE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFDRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDL0IsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsT0FBTyxNQUFNLEtBQUssS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7O0VBR0U7QUFDRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVSxFQUFFLFlBQW9CLEVBQUUsa0JBQXNDO0lBQ3hHLElBQUksSUFBSSxHQUFHLEdBQVUsQ0FBQztJQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsMkZBQTJGO0lBQzNGLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLHdHQUF3RztJQUN4RyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBa0IsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IFF1ZXJ5RXJyb3JDYWxsYmFjaywgUXVlcnlSZXN1bHQsIFF1ZXJ5U3VjY2Vzc0NhbGxiYWNrIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IERhdGFQcm9wZXJ0eSwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gJy4vZW50aXR5LXF1ZXJ5JztcclxuaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICcuL2VudGl0eS1zdGF0ZSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGVBcnJheSwgb2JzZXJ2YWJsZUFycmF5IH0gZnJvbSAnLi9vYnNlcnZhYmxlLWFycmF5JztcclxuXHJcbi8vIFRPRE86IG1peGluIGltcGwgaXMgbm90IHZlcnkgdHlwZXNhZmVcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVsYXRpb25BcnJheSBleHRlbmRzIE9ic2VydmFibGVBcnJheSB7XHJcbiAgW2luZGV4OiBudW1iZXJdOiBFbnRpdHk7XHJcbiAgcGFyZW50RW50aXR5OiBFbnRpdHk7XHJcbiAgcGFyZW50UHJvcGVydHk/OiBEYXRhUHJvcGVydHk7XHJcbiAgbmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgX2luUHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIF9hZGRzSW5Qcm9jZXNzOiBFbnRpdHlbXTtcclxuICBsb2FkKHF1ZXJ5U3VjY2Vzc0NhbGxiYWNrPzogUXVlcnlTdWNjZXNzQ2FsbGJhY2ssIHF1ZXJ5RXJyb3JDYWxsYmFjaz86IFF1ZXJ5RXJyb3JDYWxsYmFjayk6IFByb21pc2U8UXVlcnlSZXN1bHQ+OyBcclxufVxyXG5cclxubGV0IHJlbGF0aW9uQXJyYXlNaXhpbiA9IHtcclxuXHJcbiAgLyoqXHJcbiAgUmVsYXRpb24gYXJyYXlzIGFyZSBub3QgYWN0dWFsbHkgY2xhc3NlcywgdGhleSBhcmUgb2JqZWN0cyB0aGF0IG1pbWljIGFycmF5cy4gQSByZWxhdGlvbiBhcnJheSBpcyBjb2xsZWN0aW9uIG9mXHJcbiAgZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSBvbiBhIHNpbmdsZSBlbnRpdHkuIGkuZS4gY3VzdG9tZXIub3JkZXJzIG9yIG9yZGVyLm9yZGVyRGV0YWlscy5cclxuICBUaGlzIGNvbGxlY3Rpb24gbG9va3MgbGlrZSBhbiBhcnJheSBpbiB0aGF0IHRoZSBiYXNpYyBtZXRob2RzIG9uIGFycmF5cyBzdWNoIGFzICdwdXNoJywgJ3BvcCcsICdzaGlmdCcsICd1bnNoaWZ0JywgJ3NwbGljZSdcclxuICBhcmUgYWxsIHByb3ZpZGVkIGFzIHdlbGwgYXMgc2V2ZXJhbCBzcGVjaWFsIHB1cnBvc2UgbWV0aG9kcy5cclxuICBAY2xhc3Mge3JlbGF0aW9uQXJyYXl9XHJcbiAgKiovXHJcblxyXG4gIC8qKlxyXG4gIEFuIFtbRXZlbnRdXSB0aGF0IGZpcmVzIHdoZW5ldmVyIHRoZSBjb250ZW50cyBvZiB0aGlzIGFycmF5IGNoYW5nZWQuICBUaGlzIGV2ZW50XHJcbiAgaXMgZmlyZWQgYW55IHRpbWUgYSBuZXcgZW50aXR5IGlzIGF0dGFjaGVkIG9yIGFkZGVkIHRvIHRoZSBFbnRpdHlNYW5hZ2VyIGFuZCBoYXBwZW5zIHRvIGJlbG9uZyB0byB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQWRkcyB0aGF0IG9jY3VyIGFzIGEgcmVzdWx0IG9mIHF1ZXJ5IG9yIGltcG9ydCBvcGVyYXRpb25zIGFyZSBiYXRjaGVkIHNvIHRoYXQgYWxsIG9mIHRoZSBhZGRzIG9yIHJlbW92ZXMgdG8gYW55IGluZGl2aWR1YWxcclxuICBjb2xsZWN0aW9ucyBhcmUgY29sbGVjdGVkIGludG8gYSBzaW5nbGUgbm90aWZpY2F0aW9uIGV2ZW50IGZvciBlYWNoIHJlbGF0aW9uIGFycmF5LlxyXG4gIEBleGFtcGxlXHJcbiAgICAgIC8vIGFzc3VtZSBvcmRlciBpcyBhbiBvcmRlciBlbnRpdHkgYXR0YWNoZWQgdG8gYW4gRW50aXR5TWFuYWdlci5cclxuICAgICAgb3JkZXJzLmFycmF5Q2hhbmdlZC5zdWJzY3JpYmUoXHJcbiAgICAgIGZ1bmN0aW9uIChhcnJheUNoYW5nZWRBcmdzKSB7XHJcbiAgICAgICAgICBsZXQgYWRkZWRFbnRpdGllcyA9IGFycmF5Q2hhbmdlZEFyZ3MuYWRkZWQ7XHJcbiAgICAgICAgICBsZXQgcmVtb3ZlZEVudGl0aWVzID0gYXJyYXlDaGFuZ2VkLnJlbW92ZWQ7XHJcbiAgICAgIH0pO1xyXG4gIEBldmVudCBhcnJheUNoYW5nZWRcclxuICBAcGFyYW0gYWRkZWQge0FycmF5IG9mIEVudGl0eX0gQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBlbnRpdGllcyBhZGRlZCB0byB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQHBhcmFtIHJlbW92ZWQge0FycmF5IG9mIEVudGl0eX0gQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSByZW1vdmVkIGZyb20gdGhpcyBjb2xsZWN0aW9uLlxyXG4gIEByZWFkT25seVxyXG4gICoqL1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgUGVyZm9ybXMgYW4gYXN5bmNocm9ub3VzIGxvYWQgb2YgYWxsIG90aGVyIHRoZSBlbnRpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyByZWxhdGlvbkFycmF5LlxyXG4gIEBleGFtcGxlXHJcbiAgICAgIC8vIGFzc3VtZSBvcmRlcnMgaXMgYW4gZW1wdHksIGFzIHlldCB1bnBvcHVsYXRlZCwgcmVsYXRpb24gYXJyYXkgb2Ygb3JkZXJzXHJcbiAgICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGN1c3RvbWVyLlxyXG4gICAgICBvcmRlcnMubG9hZCgpLnRoZW4oLi4uKVxyXG4gIEBtZXRob2QgbG9hZFxyXG4gIEBwYXJhbSBbY2FsbGJhY2tdIHtGdW5jdGlvbn1cclxuICBAcGFyYW0gW2Vycm9yQ2FsbGJhY2tdIHtGdW5jdGlvbn1cclxuICBAcmV0dXJuIHtQcm9taXNlfVxyXG4gICoqL1xyXG4gIGxvYWQ6IGZ1bmN0aW9uKGNhbGxiYWNrPzogUXVlcnlTdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2s/OiBRdWVyeUVycm9yQ2FsbGJhY2spOiBQcm9taXNlPFF1ZXJ5UmVzdWx0PiB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5wYXJlbnRFbnRpdHk7XHJcbiAgICBsZXQgcXVlcnkgPSBFbnRpdHlRdWVyeS5mcm9tRW50aXR5TmF2aWdhdGlvbih0aGlzLnBhcmVudEVudGl0eSwgdGhpcy5uYXZpZ2F0aW9uUHJvcGVydHkpO1xyXG4gICAgbGV0IGVtID0gcGFyZW50LmVudGl0eUFzcGVjdC5lbnRpdHlNYW5hZ2VyO1xyXG4gICAgcmV0dXJuIGVtLmV4ZWN1dGVRdWVyeShxdWVyeSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xyXG4gIH0sXHJcblxyXG4gIF9nZXRFdmVudFBhcmVudDogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRFbnRpdHkuZW50aXR5QXNwZWN0O1xyXG4gIH0sXHJcblxyXG4gIF9nZXRQZW5kaW5nUHViczogZnVuY3Rpb24oKSB7XHJcbiAgICBsZXQgZW0gPSB0aGlzLnBhcmVudEVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICAgIHJldHVybiBlbSAmJiBlbS5fcGVuZGluZ1B1YnM7XHJcbiAgfSxcclxuXHJcbiAgLy8gdmlydHVhbCBpbXBsc1xyXG4gIF9nZXRHb29kQWRkczogZnVuY3Rpb24oYWRkczogRW50aXR5W10pIHtcclxuICAgIHJldHVybiBnZXRHb29kQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc0FkZHM6IGZ1bmN0aW9uKGFkZHM6IEVudGl0eVtdKSB7XHJcbiAgICBwcm9jZXNzQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc1JlbW92ZXM6IGZ1bmN0aW9uKHJlbW92ZXM6IEVudGl0eVtdKSB7XHJcbiAgICBwcm9jZXNzUmVtb3Zlcyh0aGlzLCByZW1vdmVzKTtcclxuICB9XHJcblxyXG59O1xyXG5cclxuZnVuY3Rpb24gZ2V0R29vZEFkZHMocmVsYXRpb25BcnJheTogUmVsYXRpb25BcnJheSwgYWRkczogRW50aXR5W10pIHtcclxuICBsZXQgZ29vZEFkZHMgPSBjaGVja0ZvckR1cHMocmVsYXRpb25BcnJheSwgYWRkcyk7XHJcbiAgaWYgKCFnb29kQWRkcy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBnb29kQWRkcztcclxuICB9XHJcbiAgbGV0IHBhcmVudEVudGl0eSA9IHJlbGF0aW9uQXJyYXkucGFyZW50RW50aXR5O1xyXG4gIGxldCBlbnRpdHlNYW5hZ2VyID0gcGFyZW50RW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlNYW5hZ2VyO1xyXG4gIC8vIHdlIGRvIG5vdCB3YW50IHRvIGF0dGFjaCBhbiBlbnRpdHkgZHVyaW5nIGxvYWRpbmdcclxuICAvLyBiZWNhdXNlIHRoZXNlIHdpbGwgYWxsIGJlICdhdHRhY2hlZCcgYXQgYSBsYXRlciBzdGVwLlxyXG4gIGlmIChlbnRpdHlNYW5hZ2VyICYmICFlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykge1xyXG4gICAgZ29vZEFkZHMuZm9yRWFjaChmdW5jdGlvbiAoYWRkKSB7XHJcbiAgICAgIGlmIChhZGQuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzRGV0YWNoZWQoKSkge1xyXG4gICAgICAgIHJlbGF0aW9uQXJyYXkuX2luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBlbnRpdHlNYW5hZ2VyIS5hdHRhY2hFbnRpdHkoYWRkLCBFbnRpdHlTdGF0ZS5BZGRlZCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgIHJlbGF0aW9uQXJyYXkuX2luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gZ29vZEFkZHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NBZGRzKHJlbGF0aW9uQXJyYXk6IFJlbGF0aW9uQXJyYXksIGFkZHM6IEVudGl0eVtdKSB7XHJcbiAgbGV0IHBhcmVudEVudGl0eSA9IHJlbGF0aW9uQXJyYXkucGFyZW50RW50aXR5O1xyXG4gIGxldCBucCA9IHJlbGF0aW9uQXJyYXkubmF2aWdhdGlvblByb3BlcnR5O1xyXG4gIGxldCBhZGRzSW5Qcm9jZXNzID0gcmVsYXRpb25BcnJheS5fYWRkc0luUHJvY2VzcztcclxuXHJcbiAgbGV0IGludk5wID0gbnAuaW52ZXJzZTtcclxuICBsZXQgc3RhcnRJeCA9IGFkZHNJblByb2Nlc3MubGVuZ3RoO1xyXG4gIHRyeSB7XHJcbiAgICBhZGRzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkRW50aXR5KSB7XHJcbiAgICAgIGFkZHNJblByb2Nlc3MucHVzaChjaGlsZEVudGl0eSk7XHJcbiAgICAgIGlmIChpbnZOcCkge1xyXG4gICAgICAgIGNoaWxkRW50aXR5LnNldFByb3BlcnR5KGludk5wLm5hbWUsIHBhcmVudEVudGl0eSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVGhpcyBvY2N1cnMgd2l0aCBhIHVuaWRpcmVjdGlvbmFsIDEtbiBuYXZpZ2F0aW9uIC0gaW4gdGhpcyBjYXNlXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGZrcyBpbnN0ZWFkIG9mIHRoZSBuYXZQcm9wXHJcbiAgICAgICAgbGV0IHBrcyA9IHBhcmVudEVudGl0eS5lbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICAgICAgbnAuaW52Rm9yZWlnbktleU5hbWVzLmZvckVhY2goZnVuY3Rpb24gKGZrLCBpKSB7XHJcbiAgICAgICAgICBjaGlsZEVudGl0eS5zZXRQcm9wZXJ0eShmaywgcGFyZW50RW50aXR5LmdldFByb3BlcnR5KHBrc1tpXS5uYW1lKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZmluYWxseSB7XHJcbiAgICBhZGRzSW5Qcm9jZXNzLnNwbGljZShzdGFydEl4LCBhZGRzLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc1JlbW92ZXMocmVsYXRpb25BcnJheTogUmVsYXRpb25BcnJheSwgcmVtb3ZlczogRW50aXR5W10pIHtcclxuICBsZXQgaW5wID0gcmVsYXRpb25BcnJheS5uYXZpZ2F0aW9uUHJvcGVydHkuaW52ZXJzZTtcclxuICBpZiAoaW5wKSB7XHJcbiAgICByZW1vdmVzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkRW50aXR5KSB7XHJcbiAgICAgIGNoaWxkRW50aXR5LnNldFByb3BlcnR5KGlucCEubmFtZSwgbnVsbCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrRm9yRHVwcyhyZWxhdGlvbkFycmF5OiBSZWxhdGlvbkFycmF5LCBhZGRzOiBFbnRpdHlbXSkge1xyXG4gIC8vIGRvbid0IGFsbG93IGR1cHMgaW4gdGhpcyBhcnJheS4gLSBhbHNvIHByZXZlbnRzIHJlY3Vyc2lvblxyXG4gIGxldCBwYXJlbnRFbnRpdHkgPSByZWxhdGlvbkFycmF5LnBhcmVudEVudGl0eTtcclxuICBsZXQgbmF2UHJvcCA9IHJlbGF0aW9uQXJyYXkubmF2aWdhdGlvblByb3BlcnR5O1xyXG4gIGxldCBpbnZlcnNlUHJvcCA9IG5hdlByb3AuaW52ZXJzZTtcclxuICBsZXQgZ29vZEFkZHM6IEVudGl0eVtdO1xyXG4gIGlmIChpbnZlcnNlUHJvcCkge1xyXG4gICAgZ29vZEFkZHMgPSBhZGRzLmZpbHRlcihmdW5jdGlvbiAoYSkge1xyXG4gICAgICBpZiAocmVsYXRpb25BcnJheS5fYWRkc0luUHJvY2Vzcy5pbmRleE9mKGEpID49IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGludmVyc2VWYWx1ZSA9IGEuZ2V0UHJvcGVydHkoaW52ZXJzZVByb3AhLm5hbWUpO1xyXG4gICAgICByZXR1cm4gaW52ZXJzZVZhbHVlICE9PSBwYXJlbnRFbnRpdHk7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gVGhpcyBvY2N1cnMgd2l0aCBhIHVuaWRpcmVjdGlvbmFsIDEtPk4gcmVsYXRpb24gKCB3aGVyZSB0aGVyZSBpcyBubyBuIC0+IDEpXHJcbiAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgY29tcGFyZSBma3MuXHJcbiAgICBsZXQgZmtQcm9wTmFtZXMgPSBuYXZQcm9wLmludkZvcmVpZ25LZXlOYW1lcztcclxuICAgIGxldCBrZXlQcm9wcyA9IHBhcmVudEVudGl0eS5lbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICBnb29kQWRkcyA9IGFkZHMuZmlsdGVyKGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgIGlmIChyZWxhdGlvbkFycmF5Ll9hZGRzSW5Qcm9jZXNzLmluZGV4T2YoYSkgPj0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmtQcm9wTmFtZXMuc29tZShmdW5jdGlvbiAoZmssIGkpIHtcclxuICAgICAgICBsZXQga2V5UHJvcCA9IGtleVByb3BzW2ldLm5hbWU7XHJcbiAgICAgICAgbGV0IGtleVZhbCA9IHBhcmVudEVudGl0eS5nZXRQcm9wZXJ0eShrZXlQcm9wKTtcclxuICAgICAgICBsZXQgZmtWYWwgPSBhLmdldFByb3BlcnR5KGZrKTtcclxuICAgICAgICByZXR1cm4ga2V5VmFsICE9PSBma1ZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGdvb2RBZGRzO1xyXG59XHJcblxyXG4vKiogRm9yIHVzZSBieSBicmVlemUgcGx1Z2luIGF1dGhvcnMgb25seS4gVGhlIGNsYXNzIGlzIGZvciB1c2UgaW4gYnVpbGRpbmcgYSBbW0lNb2RlbExpYnJhcnlBZGFwdGVyXV0gaW1wbGVtZW50YXRpb24uIFxyXG5AYWRhcHRlciAoc2VlIFtbSU1vZGVsTGlicmFyeUFkYXB0ZXJdXSkgICAgXHJcbkBoaWRkZW4gXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlUmVsYXRpb25BcnJheShhcnI6IGFueVtdLCBwYXJlbnRFbnRpdHk6IEVudGl0eSwgbmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpOiBSZWxhdGlvbkFycmF5IHtcclxuICBsZXQgYXJyWCA9IGFyciBhcyBhbnk7XHJcbiAgYXJyWC5wYXJlbnRFbnRpdHkgPSBwYXJlbnRFbnRpdHk7XHJcbiAgYXJyWC5uYXZpZ2F0aW9uUHJvcGVydHkgPSBuYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgYXJyWC5hcnJheUNoYW5nZWQgPSBuZXcgQnJlZXplRXZlbnQoXCJhcnJheUNoYW5nZWRcIiwgYXJyWCk7XHJcbiAgLy8gYXJyYXkgb2YgcHVzaGVzIGN1cnJlbnRseSBpbiBwcm9jZXNzIG9uIHRoaXMgcmVsYXRpb24gYXJyYXkgLSB1c2VkIHRvIHByZXZlbnQgcmVjdXJzaW9uLlxyXG4gIGFyclguX2FkZHNJblByb2Nlc3MgPSBbXTtcclxuICAvLyBuZWVkIHRvIHVzZSBtaXhpbnMgaGVyZSBpbnN0ZWFkIG9mIGluaGVyaXRhbmNlIGJlY2F1c2Ugd2UgYXJlIHN0YXJ0aW5nIGZyb20gYW4gZXhpc3RpbmcgYXJyYXkgb2JqZWN0LlxyXG4gIGNvcmUuZXh0ZW5kKGFyclgsIG9ic2VydmFibGVBcnJheS5taXhpbik7XHJcbiAgcmV0dXJuIGNvcmUuZXh0ZW5kKGFyclgsIHJlbGF0aW9uQXJyYXlNaXhpbikgYXMgUmVsYXRpb25BcnJheTtcclxufVxyXG4iXX0=
@@ -0,0 +1,41 @@
1
+ import { core } from './core';
2
+ import { assertConfig } from './assert-param';
3
+ import { DataService } from './data-service';
4
+ /**
5
+ A SaveOptions instance is used to specify the 'options' under which a save will occur.
6
+ **/
7
+ export class SaveOptions {
8
+ constructor(config) {
9
+ SaveOptions._updateWithConfig(this, config);
10
+ }
11
+ /**
12
+ Sets the 'defaultInstance' by creating a copy of the current 'defaultInstance' and then applying all of the properties of the current instance.
13
+ The current instance is returned unchanged.
14
+ **/
15
+ setAsDefault() {
16
+ return core.setAsDefault(this, SaveOptions);
17
+ }
18
+ /**
19
+ Returns a copy of this SaveOptions with the specified config options applied.
20
+ > var saveOptions = em1.saveOptions.using( {resourceName: "anotherResource" });
21
+ **/
22
+ using(config) {
23
+ return SaveOptions._updateWithConfig(this, config);
24
+ }
25
+ /** @hidden @internal */
26
+ static _updateWithConfig(obj, config) {
27
+ if (config) {
28
+ assertConfig(config)
29
+ .whereParam("resourceName").isOptional().isString()
30
+ .whereParam("dataService").isOptional().isInstanceOf(DataService)
31
+ .whereParam("allowConcurrentSaves").isBoolean().isOptional()
32
+ .whereParam("tag").isOptional()
33
+ .applyAll(obj);
34
+ }
35
+ return obj;
36
+ }
37
+ }
38
+ /** The default value whenever SaveOptions are not specified. */
39
+ SaveOptions.defaultInstance = new SaveOptions({ allowConcurrentSaves: false });
40
+ SaveOptions.prototype._$typeName = "SaveOptions";
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9zYXZlLW9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBYzdDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFldEIsWUFBWSxNQUEwQjtRQUNwQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFHRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQXlCO1FBQzdCLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsd0JBQXdCO0lBQ2hCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFnQixFQUFFLE1BQXlCO1FBQzFFLElBQUksTUFBTSxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQztpQkFDZixVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO2lCQUNsRCxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztpQkFDaEUsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFO2lCQUMzRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFO2lCQUM5QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBbkNELGdFQUFnRTtBQUN6RCwyQkFBZSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztBQXFDM0UsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydENvbmZpZyB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcblxyXG4vKiogQ29uZmlndXJhdGlvbiBpbmZvIHRvIGJlIHBhc3NlZCB0byB0aGUgW1tTYXZlT3B0aW9uc11dIGNvbnN0cnVjdG9yICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZU9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBSZXNvdXJjZSBuYW1lIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBzYXZlIC0gdGhpcyBkZWZhdWx0cyB0byBcIlNhdmVDaGFuZ2VzXCIgKi9cclxuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBEYXRhU2VydmljZSB0byBiZSB1c2VkIGZvciB0aGlzIHNhdmUuICovXHJcbiAgZGF0YVNlcnZpY2U/OiBEYXRhU2VydmljZTtcclxuICAvKiogV2hldGhlciBtdWx0aXBsZSBzYXZlcyBjYW4gYmUgaW4tZmxpZ2h0IGF0IHRoZSBzYW1lIHRpbWUuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLiAqL1xyXG4gIGFsbG93Q29uY3VycmVudFNhdmVzPzogYm9vbGVhbjtcclxuICAvKiogRnJlZSBmb3JtIHZhbHVlIHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgZHVyaW5nIHRoZSBzYXZlLiAqL1xyXG4gIHRhZz86IGFueTtcclxufVxyXG5cclxuLyoqXHJcbkEgU2F2ZU9wdGlvbnMgaW5zdGFuY2UgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAnb3B0aW9ucycgdW5kZXIgd2hpY2ggYSBzYXZlIHdpbGwgb2NjdXIuXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgU2F2ZU9wdGlvbnMge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIGRlY2xhcmUgXyR0eXBlTmFtZTogc3RyaW5nOyAvLyBvbiBwcm90b1xyXG4gIC8qKiBSZXNvdXJjZSBuYW1lIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBzYXZlIC0gdGhpcyBkZWZhdWx0cyB0byBcIlNhdmVDaGFuZ2VzXCIuIF9fUmVhZCBPbmx5X18gKi9cclxuICBkZWNsYXJlIHJlc291cmNlTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUaGUgRGF0YVNlcnZpY2UgdG8gYmUgdXNlZCBmb3IgdGhpcyBzYXZlLiBfX1JlYWQgT25seV9fICovXHJcbiAgZGVjbGFyZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2U7XHJcbiAgLyoqIFdoZXRoZXIgbXVsdGlwbGUgc2F2ZXMgY2FuIGJlIGluLWZsaWdodCBhdCB0aGUgc2FtZSB0aW1lLiBUaGUgZGVmYXVsdCBpcyBmYWxzZS4gX19SZWFkIE9ubHlfXyAqL1xyXG4gIGRlY2xhcmUgYWxsb3dDb25jdXJyZW50U2F2ZXM6IGJvb2xlYW47XHJcbiAgLyoqIEZyZWUgZm9ybSB2YWx1ZSB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyIGR1cmluZyB0aGUgc2F2ZS4gX19SZWFkIE9ubHlfXyAqL1xyXG4gIGRlY2xhcmUgdGFnOiBhbnk7XHJcblxyXG4gIC8qKiBUaGUgZGVmYXVsdCB2YWx1ZSB3aGVuZXZlciBTYXZlT3B0aW9ucyBhcmUgbm90IHNwZWNpZmllZC4gKi9cclxuICBzdGF0aWMgZGVmYXVsdEluc3RhbmNlID0gbmV3IFNhdmVPcHRpb25zKHsgYWxsb3dDb25jdXJyZW50U2F2ZXM6IGZhbHNlfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFNhdmVPcHRpb25zQ29uZmlnKSB7XHJcbiAgICBTYXZlT3B0aW9ucy5fdXBkYXRlV2l0aENvbmZpZyh0aGlzLCBjb25maWcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gIFNldHMgdGhlICdkZWZhdWx0SW5zdGFuY2UnIGJ5IGNyZWF0aW5nIGEgY29weSBvZiB0aGUgY3VycmVudCAnZGVmYXVsdEluc3RhbmNlJyBhbmQgdGhlbiBhcHBseWluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UuXHJcbiAgVGhlIGN1cnJlbnQgaW5zdGFuY2UgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxyXG4gICoqL1xyXG4gIHNldEFzRGVmYXVsdCgpIHtcclxuICAgIHJldHVybiBjb3JlLnNldEFzRGVmYXVsdCh0aGlzLCBTYXZlT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGEgY29weSBvZiB0aGlzIFNhdmVPcHRpb25zIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcgb3B0aW9ucyBhcHBsaWVkLlxyXG4gID4gICAgIHZhciBzYXZlT3B0aW9ucyA9IGVtMS5zYXZlT3B0aW9ucy51c2luZygge3Jlc291cmNlTmFtZTogXCJhbm90aGVyUmVzb3VyY2VcIiB9KTtcclxuICAqKi9cclxuICB1c2luZyhjb25maWc6IFNhdmVPcHRpb25zQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gU2F2ZU9wdGlvbnMuX3VwZGF0ZVdpdGhDb25maWcodGhpcywgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF91cGRhdGVXaXRoQ29uZmlnKG9iajogU2F2ZU9wdGlvbnMsIGNvbmZpZzogU2F2ZU9wdGlvbnNDb25maWcpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgYXNzZXJ0Q29uZmlnKGNvbmZpZylcclxuICAgICAgICAgIC53aGVyZVBhcmFtKFwicmVzb3VyY2VOYW1lXCIpLmlzT3B0aW9uYWwoKS5pc1N0cmluZygpXHJcbiAgICAgICAgICAud2hlcmVQYXJhbShcImRhdGFTZXJ2aWNlXCIpLmlzT3B0aW9uYWwoKS5pc0luc3RhbmNlT2YoRGF0YVNlcnZpY2UpXHJcbiAgICAgICAgICAud2hlcmVQYXJhbShcImFsbG93Q29uY3VycmVudFNhdmVzXCIpLmlzQm9vbGVhbigpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgICAgLndoZXJlUGFyYW0oXCJ0YWdcIikuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgICAuYXBwbHlBbGwob2JqKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG5cclxufVxyXG5TYXZlT3B0aW9ucy5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiU2F2ZU9wdGlvbnNcIjtcclxuXHJcblxyXG5cclxuIl19
@@ -0,0 +1,58 @@
1
+ import { core } from './core';
2
+ /** @hidden @internal */
3
+ // Represents entities not yet attached to navigationProperties.
4
+ export class UnattachedChildrenMap {
5
+ constructor() {
6
+ // key is EntityKey.toString(), value is array of { navigationProperty, children }
7
+ this.map = {};
8
+ }
9
+ addChild(parentEntityKey, navigationProperty, child) {
10
+ let tuple = this.getTuple(parentEntityKey, navigationProperty);
11
+ if (!tuple) {
12
+ tuple = { navigationProperty: navigationProperty, children: [] };
13
+ core.getArray(this.map, parentEntityKey.toString()).push(tuple);
14
+ }
15
+ tuple.children.push(child);
16
+ }
17
+ removeChildren(parentEntityKeyString, navigationProperty) {
18
+ let tuples = this.map[parentEntityKeyString];
19
+ if (!tuples)
20
+ return;
21
+ core.arrayRemoveItem(tuples, (t) => {
22
+ return t.navigationProperty === navigationProperty;
23
+ });
24
+ if (!tuples.length) {
25
+ delete this.map[parentEntityKeyString];
26
+ }
27
+ }
28
+ getTuple(parentEntityKey, navigationProperty) {
29
+ let tuples = this.getTuples(parentEntityKey);
30
+ if (!tuples)
31
+ return null;
32
+ let tuple = core.arrayFirst(tuples, function (t) {
33
+ return t.navigationProperty === navigationProperty;
34
+ });
35
+ return tuple;
36
+ }
37
+ getTuples(parentEntityKey) {
38
+ let allTuples = [];
39
+ let tuples = this.map[parentEntityKey.toString()];
40
+ if (tuples) {
41
+ allTuples = allTuples.concat(tuples);
42
+ }
43
+ let entityType = parentEntityKey.entityType;
44
+ while (entityType.baseEntityType) {
45
+ entityType = entityType.baseEntityType;
46
+ let baseKey = parentEntityKey.toString(entityType);
47
+ tuples = this.map[baseKey];
48
+ if (tuples) {
49
+ allTuples = allTuples.concat(tuples);
50
+ }
51
+ }
52
+ return (allTuples.length) ? allTuples : undefined;
53
+ }
54
+ getTuplesByString(parentEntityKeyString) {
55
+ return this.map[parentEntityKeyString];
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdHRhY2hlZC1jaGlsZHJlbi1tYXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL3VuYXR0YWNoZWQtY2hpbGRyZW4tbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFXOUIsd0JBQXdCO0FBQ3hCLGlFQUFpRTtBQUNqRSxNQUFNLE9BQU8scUJBQXFCO0lBQWxDO1FBQ0Usa0ZBQWtGO1FBQ2xGLFFBQUcsR0FBcUMsRUFBRSxDQUFDO0lBc0Q3QyxDQUFDO0lBbkRDLFFBQVEsQ0FBQyxlQUEwQixFQUFFLGtCQUFzQyxFQUFFLEtBQWE7UUFDeEYsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsS0FBSyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakU7UUFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLHFCQUE2QixFQUFFLGtCQUFzQztRQUNsRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDdEMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsZUFBMEIsRUFBRSxrQkFBc0M7UUFDekUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztZQUM3QyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxlQUEwQjtRQUNsQyxJQUFJLFNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxNQUFNLEVBQUU7WUFDVixTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsY0FBYyxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEM7U0FDRjtRQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxxQkFBNkI7UUFDN0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgRW50aXR5S2V5IH0gZnJvbSAnLi9lbnRpdHkta2V5JztcclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElOYXZUdXBsZSB7XHJcbiAgbmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgY2hpbGRyZW46IEVudGl0eVtdO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuLy8gUmVwcmVzZW50cyBlbnRpdGllcyBub3QgeWV0IGF0dGFjaGVkIHRvIG5hdmlnYXRpb25Qcm9wZXJ0aWVzLiBcclxuZXhwb3J0IGNsYXNzIFVuYXR0YWNoZWRDaGlsZHJlbk1hcCB7XHJcbiAgLy8ga2V5IGlzIEVudGl0eUtleS50b1N0cmluZygpLCB2YWx1ZSBpcyBhcnJheSBvZiB7IG5hdmlnYXRpb25Qcm9wZXJ0eSwgY2hpbGRyZW4gfVxyXG4gIG1hcDogeyBbaW5kZXg6IHN0cmluZ106IElOYXZUdXBsZVtdIH0gPSB7fTtcclxuXHJcblxyXG4gIGFkZENoaWxkKHBhcmVudEVudGl0eUtleTogRW50aXR5S2V5LCBuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSwgY2hpbGQ6IEVudGl0eSkge1xyXG4gICAgbGV0IHR1cGxlID0gdGhpcy5nZXRUdXBsZShwYXJlbnRFbnRpdHlLZXksIG5hdmlnYXRpb25Qcm9wZXJ0eSk7XHJcbiAgICBpZiAoIXR1cGxlKSB7XHJcbiAgICAgIHR1cGxlID0geyBuYXZpZ2F0aW9uUHJvcGVydHk6IG5hdmlnYXRpb25Qcm9wZXJ0eSwgY2hpbGRyZW46IFtdIH07XHJcbiAgICAgIGNvcmUuZ2V0QXJyYXkodGhpcy5tYXAsIHBhcmVudEVudGl0eUtleS50b1N0cmluZygpKS5wdXNoKHR1cGxlKTtcclxuICAgIH1cclxuICAgIHR1cGxlLmNoaWxkcmVuLnB1c2goY2hpbGQpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpbGRyZW4ocGFyZW50RW50aXR5S2V5U3RyaW5nOiBzdHJpbmcsIG5hdmlnYXRpb25Qcm9wZXJ0eTogTmF2aWdhdGlvblByb3BlcnR5KSB7XHJcbiAgICBsZXQgdHVwbGVzID0gdGhpcy5tYXBbcGFyZW50RW50aXR5S2V5U3RyaW5nXTtcclxuICAgIGlmICghdHVwbGVzKSByZXR1cm47XHJcbiAgICBjb3JlLmFycmF5UmVtb3ZlSXRlbSh0dXBsZXMsICh0OiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHQubmF2aWdhdGlvblByb3BlcnR5ID09PSBuYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdHVwbGVzLmxlbmd0aCkge1xyXG4gICAgICBkZWxldGUgdGhpcy5tYXBbcGFyZW50RW50aXR5S2V5U3RyaW5nXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFR1cGxlKHBhcmVudEVudGl0eUtleTogRW50aXR5S2V5LCBuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSkge1xyXG4gICAgbGV0IHR1cGxlcyA9IHRoaXMuZ2V0VHVwbGVzKHBhcmVudEVudGl0eUtleSk7XHJcbiAgICBpZiAoIXR1cGxlcykgcmV0dXJuIG51bGw7XHJcbiAgICBsZXQgdHVwbGUgPSBjb3JlLmFycmF5Rmlyc3QodHVwbGVzLCBmdW5jdGlvbiAodCkge1xyXG4gICAgICByZXR1cm4gdC5uYXZpZ2F0aW9uUHJvcGVydHkgPT09IG5hdmlnYXRpb25Qcm9wZXJ0eTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHR1cGxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHVwbGVzKHBhcmVudEVudGl0eUtleTogRW50aXR5S2V5KSB7XHJcbiAgICBsZXQgYWxsVHVwbGVzOiBJTmF2VHVwbGVbXSA9IFtdO1xyXG4gICAgbGV0IHR1cGxlcyA9IHRoaXMubWFwW3BhcmVudEVudGl0eUtleS50b1N0cmluZygpXTtcclxuICAgIGlmICh0dXBsZXMpIHtcclxuICAgICAgYWxsVHVwbGVzID0gYWxsVHVwbGVzLmNvbmNhdCh0dXBsZXMpO1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0eVR5cGUgPSBwYXJlbnRFbnRpdHlLZXkuZW50aXR5VHlwZTtcclxuICAgIHdoaWxlIChlbnRpdHlUeXBlLmJhc2VFbnRpdHlUeXBlKSB7XHJcbiAgICAgIGVudGl0eVR5cGUgPSBlbnRpdHlUeXBlLmJhc2VFbnRpdHlUeXBlO1xyXG4gICAgICBsZXQgYmFzZUtleSA9IHBhcmVudEVudGl0eUtleS50b1N0cmluZyhlbnRpdHlUeXBlKTtcclxuICAgICAgdHVwbGVzID0gdGhpcy5tYXBbYmFzZUtleV07XHJcbiAgICAgIGlmICh0dXBsZXMpIHtcclxuICAgICAgICBhbGxUdXBsZXMgPSBhbGxUdXBsZXMuY29uY2F0KHR1cGxlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoYWxsVHVwbGVzLmxlbmd0aCkgPyBhbGxUdXBsZXMgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRUdXBsZXNCeVN0cmluZyhwYXJlbnRFbnRpdHlLZXlTdHJpbmc6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwW3BhcmVudEVudGl0eUtleVN0cmluZ107XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=