breeze-client 2.1.7-mjs → 2.2.0-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/README.md +8 -4
  2. package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
  3. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
  4. package/adapter-ajax-angularjs/package.json +13 -0
  5. package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
  6. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
  7. package/adapter-ajax-fetch/package.json +13 -0
  8. package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
  9. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
  10. package/adapter-ajax-httpclient/package.json +13 -0
  11. package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
  12. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
  13. package/adapter-ajax-jquery/package.json +13 -0
  14. package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
  15. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
  16. package/adapter-ajax-post/package.json +13 -0
  17. package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
  18. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
  19. package/adapter-data-service-odata/package.json +13 -0
  20. package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
  21. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
  22. package/adapter-data-service-webapi/package.json +13 -0
  23. package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
  24. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
  25. package/adapter-model-library-backing-store/package.json +13 -0
  26. package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
  27. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
  28. package/adapter-model-library-ko/package.json +13 -0
  29. package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
  30. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
  31. package/adapter-uri-builder-json/package.json +13 -0
  32. package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
  33. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
  34. package/adapter-uri-builder-odata/package.json +13 -0
  35. package/breeze-client.d.ts +8 -0
  36. package/breeze-client.metadata.json +1 -0
  37. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
  38. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
  39. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
  40. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
  41. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
  42. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
  43. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
  44. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
  45. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
  46. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
  47. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
  48. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
  49. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
  50. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
  51. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
  52. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
  53. package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
  54. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
  55. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
  56. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
  57. package/bundles/breeze-client-adapter-data-service-odata.umd.js +747 -0
  58. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
  59. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
  60. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
  61. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +333 -0
  62. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
  63. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
  64. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
  65. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
  66. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
  67. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
  68. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
  69. package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
  70. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
  71. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
  72. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
  73. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
  74. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
  75. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
  76. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
  77. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
  78. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
  79. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
  80. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
  81. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
  82. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
  83. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
  84. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
  85. package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
  86. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
  87. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
  88. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
  89. package/bundles/breeze-client.umd.js +14234 -0
  90. package/bundles/breeze-client.umd.js.map +1 -0
  91. package/bundles/breeze-client.umd.min.js +16 -0
  92. package/bundles/breeze-client.umd.min.js.map +1 -0
  93. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +130 -0
  94. package/esm2015/adapter-ajax-angularjs/adapter-core.js +49 -0
  95. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  96. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +130 -0
  97. package/esm2015/adapter-ajax-fetch/adapter-core.js +49 -0
  98. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  99. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +137 -0
  100. package/esm2015/adapter-ajax-httpclient/adapter-core.js +49 -0
  101. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  102. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +103 -0
  103. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  104. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +77 -0
  105. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  106. package/esm2015/adapter-data-service-odata/adapter-core.js +49 -0
  107. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +463 -0
  108. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  109. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +100 -0
  110. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  111. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +268 -0
  112. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  113. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +240 -0
  114. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  115. package/esm2015/adapter-uri-builder-json/adapter-core.js +49 -0
  116. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +36 -0
  117. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  118. package/esm2015/adapter-uri-builder-odata/adapter-core.js +49 -0
  119. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +192 -0
  120. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  121. package/esm2015/breeze-client.js +9 -0
  122. package/esm2015/index.js +2 -0
  123. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  124. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  125. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  126. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +400 -0
  127. package/esm2015/src/abstract-data-service-adapter.js +327 -0
  128. package/esm2015/src/array.js +4 -0
  129. package/esm2015/src/assert-param.js +312 -0
  130. package/esm2015/src/breeze.js +85 -0
  131. package/esm2015/src/complex-array.js +119 -0
  132. package/esm2015/src/config.js +223 -0
  133. package/esm2015/src/core.js +714 -0
  134. package/esm2015/src/csdl-metadata-parser.js +385 -0
  135. package/esm2015/src/data-service.js +203 -0
  136. package/esm2015/src/data-type.js +506 -0
  137. package/esm2015/src/default-property-interceptor.js +460 -0
  138. package/{esm2022/src/entity-action.mjs → esm2015/src/entity-action.js} +25 -25
  139. package/esm2015/src/entity-aspect.js +804 -0
  140. package/esm2015/src/entity-group.js +187 -0
  141. package/esm2015/src/entity-key.js +116 -0
  142. package/esm2015/src/entity-manager.js +2094 -0
  143. package/esm2015/src/entity-metadata.js +2109 -0
  144. package/esm2015/src/entity-query.js +1015 -0
  145. package/esm2015/src/entity-state.js +107 -0
  146. package/esm2015/src/enum.js +141 -0
  147. package/esm2015/src/event.js +256 -0
  148. package/esm2015/src/interface-registry.js +41 -0
  149. package/esm2015/src/key-generator.js +108 -0
  150. package/esm2015/src/local-query-comparison-options.js +65 -0
  151. package/esm2015/src/mapping-context.js +411 -0
  152. package/esm2015/src/naming-convention.js +88 -0
  153. package/esm2015/src/observable-array.js +185 -0
  154. package/esm2015/src/predicate.js +1242 -0
  155. package/esm2015/src/primitive-array.js +87 -0
  156. package/esm2015/src/query-options.js +152 -0
  157. package/esm2015/src/relation-array.js +175 -0
  158. package/esm2015/src/save-options.js +41 -0
  159. package/esm2015/src/unattached-children-map.js +58 -0
  160. package/esm2015/src/validate.js +991 -0
  161. package/esm2015/src/validation-options.js +64 -0
  162. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +132 -0
  163. package/esm5/adapter-ajax-angularjs/adapter-core.js +49 -0
  164. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  165. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +132 -0
  166. package/esm5/adapter-ajax-fetch/adapter-core.js +49 -0
  167. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  168. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +139 -0
  169. package/esm5/adapter-ajax-httpclient/adapter-core.js +49 -0
  170. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  171. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +105 -0
  172. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  173. package/esm5/adapter-ajax-post/adapter-ajax-post.js +81 -0
  174. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  175. package/esm5/adapter-data-service-odata/adapter-core.js +49 -0
  176. package/{esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs → esm5/adapter-data-service-odata/adapter-data-service-odata.js} +147 -138
  177. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  178. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +105 -0
  179. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  180. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +270 -0
  181. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  182. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +242 -0
  183. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  184. package/esm5/adapter-uri-builder-json/adapter-core.js +49 -0
  185. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +38 -0
  186. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  187. package/esm5/adapter-uri-builder-odata/adapter-core.js +49 -0
  188. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +197 -0
  189. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  190. package/esm5/breeze-client.js +9 -0
  191. package/esm5/index.js +2 -0
  192. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  193. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  194. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  195. package/esm5/mixin-save-queuing/mixin-save-queuing.js +412 -0
  196. package/esm5/src/abstract-data-service-adapter.js +333 -0
  197. package/esm5/src/array.js +4 -0
  198. package/esm5/src/assert-param.js +317 -0
  199. package/esm5/src/breeze.js +85 -0
  200. package/esm5/src/complex-array.js +119 -0
  201. package/esm5/src/config.js +228 -0
  202. package/esm5/src/core.js +722 -0
  203. package/esm5/src/csdl-metadata-parser.js +385 -0
  204. package/esm5/src/data-service.js +207 -0
  205. package/esm5/src/data-type.js +513 -0
  206. package/esm5/src/default-property-interceptor.js +460 -0
  207. package/esm5/src/entity-action.js +52 -0
  208. package/esm5/src/entity-aspect.js +810 -0
  209. package/esm5/src/entity-group.js +189 -0
  210. package/esm5/src/entity-key.js +118 -0
  211. package/esm5/src/entity-manager.js +2112 -0
  212. package/esm5/src/entity-metadata.js +2144 -0
  213. package/esm5/src/entity-query.js +1042 -0
  214. package/esm5/src/entity-state.js +114 -0
  215. package/esm5/src/enum.js +144 -0
  216. package/esm5/src/event.js +259 -0
  217. package/esm5/src/interface-registry.js +43 -0
  218. package/esm5/src/key-generator.js +111 -0
  219. package/esm5/src/local-query-comparison-options.js +67 -0
  220. package/esm5/src/mapping-context.js +413 -0
  221. package/{esm2022/src/naming-convention.mjs → esm5/src/naming-convention.js} +29 -35
  222. package/esm5/src/observable-array.js +201 -0
  223. package/esm5/src/predicate.js +1307 -0
  224. package/esm5/src/primitive-array.js +87 -0
  225. package/esm5/src/query-options.js +167 -0
  226. package/esm5/src/relation-array.js +175 -0
  227. package/esm5/src/save-options.js +43 -0
  228. package/esm5/src/unattached-children-map.js +60 -0
  229. package/{esm2022/src/validate.mjs → esm5/src/validate.js} +110 -116
  230. package/esm5/src/validation-options.js +66 -0
  231. package/{fesm2022/breeze-client-adapter-ajax-angularjs.mjs → fesm2015/breeze-client-adapter-ajax-angularjs.js} +1 -6
  232. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  233. package/{fesm2022/breeze-client-adapter-ajax-fetch.mjs → fesm2015/breeze-client-adapter-ajax-fetch.js} +4 -9
  234. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
  235. package/{fesm2022/breeze-client-adapter-ajax-httpclient.mjs → fesm2015/breeze-client-adapter-ajax-httpclient.js} +4 -6
  236. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  237. package/{fesm2022/breeze-client-adapter-ajax-jquery.mjs → fesm2015/breeze-client-adapter-ajax-jquery.js} +2 -6
  238. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
  239. package/{fesm2022/breeze-client-adapter-ajax-post.mjs → fesm2015/breeze-client-adapter-ajax-post.js} +1 -1
  240. package/fesm2015/breeze-client-adapter-ajax-post.js.map +1 -0
  241. package/{fesm2022/breeze-client-adapter-data-service-odata.mjs → fesm2015/breeze-client-adapter-data-service-odata.js} +69 -68
  242. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
  243. package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → fesm2015/breeze-client-adapter-data-service-webapi.js} +30 -30
  244. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
  245. package/{fesm2022/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -14
  246. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  247. package/{fesm2022/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -14
  248. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
  249. package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -9
  250. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
  251. package/{fesm2022/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -86
  252. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  253. package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → fesm2015/breeze-client-mixin-get-entity-graph.js} +1 -1
  254. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
  255. package/{fesm2022/breeze-client-mixin-save-queuing.mjs → fesm2015/breeze-client-mixin-save-queuing.js} +2 -23
  256. package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
  257. package/{fesm2022/breeze-client.mjs → fesm2015/breeze-client.js} +1543 -2039
  258. package/fesm2015/breeze-client.js.map +1 -0
  259. package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
  260. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  261. package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
  262. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
  263. package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
  264. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  265. package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
  266. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
  267. package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
  268. package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
  269. package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
  270. package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
  271. package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
  272. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
  273. package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
  274. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  275. package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
  276. package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
  277. package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
  278. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
  279. package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
  280. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  281. package/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
  282. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
  283. package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
  284. package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
  285. package/fesm5/breeze-client.js +13956 -0
  286. package/fesm5/breeze-client.js.map +1 -0
  287. package/mixin-get-entity-graph/{index.d.ts → breeze-client-mixin-get-entity-graph.d.ts} +0 -1
  288. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +1 -0
  289. package/mixin-get-entity-graph/package.json +13 -0
  290. package/mixin-save-queuing/{index.d.ts → breeze-client-mixin-save-queuing.d.ts} +0 -1
  291. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +1 -0
  292. package/mixin-save-queuing/package.json +13 -0
  293. package/package.json +11 -93
  294. package/src/config.d.ts +1 -1
  295. package/src/core.d.ts +1 -1
  296. package/src/entity-aspect.d.ts +1 -1
  297. package/src/entity-metadata.d.ts +6 -8
  298. package/src/entity-query.d.ts +1 -1
  299. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
  300. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
  301. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
  302. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
  303. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
  304. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
  305. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
  306. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
  307. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
  308. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
  309. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
  310. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
  311. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
  312. package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
  313. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
  314. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
  315. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
  316. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
  317. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
  318. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
  319. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
  320. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
  321. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
  322. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
  323. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
  324. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
  325. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
  326. package/esm2022/breeze-client.mjs +0 -5
  327. package/esm2022/index.mjs +0 -2
  328. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
  329. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
  330. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
  331. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
  332. package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
  333. package/esm2022/src/array.mjs +0 -4
  334. package/esm2022/src/assert-param.mjs +0 -330
  335. package/esm2022/src/breeze.mjs +0 -85
  336. package/esm2022/src/complex-array.mjs +0 -117
  337. package/esm2022/src/config.mjs +0 -232
  338. package/esm2022/src/core.mjs +0 -712
  339. package/esm2022/src/csdl-metadata-parser.mjs +0 -385
  340. package/esm2022/src/data-service.mjs +0 -239
  341. package/esm2022/src/data-type.mjs +0 -507
  342. package/esm2022/src/default-property-interceptor.mjs +0 -460
  343. package/esm2022/src/entity-aspect.mjs +0 -897
  344. package/esm2022/src/entity-group.mjs +0 -192
  345. package/esm2022/src/entity-key.mjs +0 -127
  346. package/esm2022/src/entity-manager.mjs +0 -2183
  347. package/esm2022/src/entity-metadata.mjs +0 -2242
  348. package/esm2022/src/entity-query.mjs +0 -1024
  349. package/esm2022/src/entity-state.mjs +0 -107
  350. package/esm2022/src/enum.mjs +0 -143
  351. package/esm2022/src/event.mjs +0 -264
  352. package/esm2022/src/interface-registry.mjs +0 -39
  353. package/esm2022/src/key-generator.mjs +0 -110
  354. package/esm2022/src/local-query-comparison-options.mjs +0 -75
  355. package/esm2022/src/mapping-context.mjs +0 -422
  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,258 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('breeze-client')) :
3
+ typeof define === 'function' && define.amd ? define('breeze-client/mixin-get-entity-graph', ['exports', 'breeze-client'], factory) :
4
+ (global = global || self, factory((global['breeze-client'] = global['breeze-client'] || {}, global['breeze-client']['mixin-get-entity-graph'] = {}), global['breeze-client']));
5
+ }(this, (function (exports, breezeClient) { 'use strict';
6
+
7
+ //#region Copyright, Version, and Description
8
+ function mixinEntityGraph(emclass) {
9
+ var proto = breezeClient.EntityManager.prototype;
10
+ if (!proto.getEntityGraph) {
11
+ proto.getEntityGraph = getEntityGraph;
12
+ }
13
+ }
14
+ mixinEntityGraph(breezeClient.EntityManager);
15
+ function getEntityGraph(roots, expand) {
16
+ if (roots instanceof breezeClient.EntityQuery) {
17
+ var newRoots = this.executeQueryLocally(roots);
18
+ return getEntityGraphCore(newRoots, expand || roots.expandClause);
19
+ }
20
+ else {
21
+ return getEntityGraphCore(roots, expand);
22
+ }
23
+ }
24
+ function getEntityGraphCore(root, expand) {
25
+ var entityGroupMap;
26
+ var graph = [];
27
+ var rootType;
28
+ var roots = Array.isArray(root) ? root : [root];
29
+ addToGraph(roots); // removes dups & nulls
30
+ roots = graph.slice(); // copy of de-duped roots
31
+ if (roots.length) {
32
+ getRootInfo();
33
+ getExpand();
34
+ buildGraph();
35
+ }
36
+ return graph;
37
+ function addToGraph(entities) {
38
+ entities.forEach(function (entity) {
39
+ if (entity && graph.indexOf(entity) < 0) {
40
+ graph.push(entity);
41
+ }
42
+ });
43
+ }
44
+ function getRootInfo() {
45
+ var compatTypes;
46
+ roots.forEach(function (root, ix) {
47
+ var aspect;
48
+ if (!root || !(aspect = root.entityAspect)) {
49
+ throw getRootErr(ix, 'is not an entity');
50
+ }
51
+ if (aspect.entityState === breezeClient.EntityState.Detached) {
52
+ throw getRootErr(ix, 'is a detached entity');
53
+ }
54
+ var em = aspect.entityManager;
55
+ if (entityGroupMap) {
56
+ if (entityGroupMap !== em._entityGroupMap) {
57
+ throw getRootErr(ix, "has a different 'EntityManager' than other roots");
58
+ }
59
+ }
60
+ else {
61
+ entityGroupMap = em._entityGroupMap;
62
+ }
63
+ getRootType(root, ix);
64
+ });
65
+ function getRootErr(ix, msg) {
66
+ return new Error("'getEntityGraph' root[" + ix + "] " + msg);
67
+ }
68
+ function getRootType(root, ix) {
69
+ var thisType = root.entityType;
70
+ if (!rootType) {
71
+ rootType = thisType;
72
+ return;
73
+ }
74
+ else if (rootType === thisType) {
75
+ return;
76
+ }
77
+ // Types differs. Look for closest common base type
78
+ // does thisType derive from current rootType?
79
+ var baseType = rootType;
80
+ do {
81
+ compatTypes = compatTypes || baseType.getSelfAndSubtypes();
82
+ if (compatTypes.indexOf(thisType) > -1) {
83
+ rootType = baseType;
84
+ return;
85
+ }
86
+ baseType = baseType.baseEntityType;
87
+ compatTypes = null;
88
+ } while (baseType);
89
+ // does current rootType derives from thisType?
90
+ baseType = thisType;
91
+ do {
92
+ compatTypes = baseType.getSelfAndSubtypes();
93
+ if (compatTypes.indexOf(rootType) > -1) {
94
+ rootType = baseType;
95
+ return;
96
+ }
97
+ baseType = baseType.baseEntityType;
98
+ } while (baseType);
99
+ throw getRootErr(ix, "is not EntityType-compatible with other roots");
100
+ }
101
+ }
102
+ function getExpand() {
103
+ try {
104
+ if (!expand) {
105
+ expand = [];
106
+ }
107
+ else if (typeof expand === 'string') {
108
+ // tricky because Breeze expandClause not exposed publically
109
+ expand = new breezeClient.EntityQuery().expand(expand).expandClause;
110
+ }
111
+ if (expand instanceof breezeClient.ExpandClause && expand.propertyPaths) { // expand clause
112
+ expand = expand.propertyPaths;
113
+ }
114
+ else if (Array.isArray(expand)) {
115
+ if (!expand.every(function (elem) { return typeof elem === 'string'; })) {
116
+ throw '';
117
+ }
118
+ }
119
+ else {
120
+ throw '';
121
+ }
122
+ }
123
+ catch (_) {
124
+ throw new Error("expand must be an expand string, array of string paths, or a query expand clause");
125
+ }
126
+ }
127
+ function buildGraph() {
128
+ if (expand && expand instanceof Array && expand.length) {
129
+ var fns = expand.map(makePathFn);
130
+ fns.forEach(function (fn) { fn(roots); });
131
+ }
132
+ }
133
+ // Make function to get entities along a single expand path
134
+ // such as 'Orders.OrderDetails.Product'
135
+ function makePathFn(path) {
136
+ var fns = [], segments = path.split('.'), type = rootType;
137
+ for (var i = 0, slen = segments.length; i < slen; i++) {
138
+ var f = makePathSegmentFn(type, segments[i]);
139
+ type = f.navType;
140
+ fns.push(f);
141
+ }
142
+ return function pathFn(entities) {
143
+ for (var j = 0, flen = fns.length; j < flen; j++) {
144
+ var elen = entities.length;
145
+ if (elen === 0) {
146
+ return;
147
+ } // nothing left to explore
148
+ // fn to get related entities for this path segment
149
+ var fn = fns[j];
150
+ // get entities related by this path segment
151
+ var related = [];
152
+ for (var k = 0; k < elen; k++) {
153
+ related = related.concat(fn(entities[k]));
154
+ }
155
+ addToGraph(related);
156
+ if (j >= flen - 1) {
157
+ return;
158
+ } // no more path segments
159
+ // reset entities to deduped related entities
160
+ entities = [];
161
+ for (var l = 0, rlen = related.length; l < rlen; l++) {
162
+ var r = related[l];
163
+ if (entities.indexOf(r) < 0) {
164
+ entities.push(r);
165
+ }
166
+ }
167
+ }
168
+ };
169
+ }
170
+ // Make function to get entities along a single expand path segment
171
+ // such as the 'OrderDetails' in the 'Orders.OrderDetails.Product' path
172
+ function makePathSegmentFn(baseType, segment) {
173
+ var baseTypeName, fn = undefined, navType;
174
+ try {
175
+ baseTypeName = baseType.name;
176
+ var nav = baseType.getNavigationProperty(segment);
177
+ var fkName_1 = nav.foreignKeyNames[0];
178
+ if (!nav) {
179
+ throw new Error(segment + " is not a navigation property of " + baseTypeName);
180
+ }
181
+ navType = nav.entityType;
182
+ // add derived types
183
+ var navTypes = navType.getSelfAndSubtypes();
184
+ var grps_1 = []; // non-empty groups for these types
185
+ navTypes.forEach(function (t) {
186
+ var grp = entityGroupMap[t.name];
187
+ if (grp && grp._entities.length > 0) {
188
+ grps_1.push(grp);
189
+ }
190
+ });
191
+ var grpCount_1 = grps_1.length;
192
+ if (grpCount_1 === 0) {
193
+ // no related entities in cache
194
+ fn = function () { return []; };
195
+ }
196
+ else if (fkName_1) {
197
+ fn = function (entity) {
198
+ var val = null;
199
+ try {
200
+ var keyValue = entity.getProperty(fkName_1);
201
+ for (var i = 0; i < grpCount_1; i += 1) {
202
+ val = grps_1[i]._entities[grps_1[i]._indexMap[keyValue]];
203
+ if (val) {
204
+ break;
205
+ }
206
+ }
207
+ }
208
+ catch (e) {
209
+ rethrow(e);
210
+ }
211
+ return val;
212
+ };
213
+ }
214
+ else {
215
+ fkName_1 = nav.inverse ?
216
+ nav.inverse.foreignKeyNames[0] :
217
+ nav.invForeignKeyNames[0];
218
+ if (!fkName_1) {
219
+ throw new Error("No inverse keys");
220
+ }
221
+ fn = function (entity) {
222
+ var vals = [];
223
+ try {
224
+ var keyValue_1 = entity.entityAspect.getKey().values[0];
225
+ grps_1.forEach(function (grp) {
226
+ vals = vals.concat(grp._entities.filter(function (en) {
227
+ return en && en.getProperty(fkName_1) === keyValue_1;
228
+ }));
229
+ });
230
+ }
231
+ catch (e) {
232
+ rethrow(e);
233
+ }
234
+ return vals;
235
+ };
236
+ }
237
+ fn.navType = navType;
238
+ fn.path = segment;
239
+ }
240
+ catch (err) {
241
+ rethrow(err);
242
+ }
243
+ return fn;
244
+ function rethrow(e) {
245
+ var typeName = baseTypeName || baseType;
246
+ var error = new Error("'getEntityGraph' can't expand '" + segment + "' for " + typeName);
247
+ error.innerError = e;
248
+ throw error;
249
+ }
250
+ }
251
+ }
252
+
253
+ exports.mixinEntityGraph = mixinEntityGraph;
254
+
255
+ Object.defineProperty(exports, '__esModule', { value: true });
256
+
257
+ })));
258
+ //# sourceMappingURL=breeze-client-mixin-get-entity-graph.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breeze-client-mixin-get-entity-graph.umd.js","sources":["ng://breeze-client/mixin-get-entity-graph/mixin-get-entity-graph.ts"],"sourcesContent":["//#region Copyright, Version, and Description\r\n/*\r\n * Copyright 2015-2021 IdeaBlade, Inc. All Rights Reserved.\r\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\r\n * conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license\r\n *\r\n * Author: Ward Bell\r\n * Version: 0.9.5 - Steve Schmitt - convert to TypeScript, migrate to breeze-client repo, add HasEntityGraph and mixinEntityGraph\r\n * Version: 0.9.4 - Marcel Good - fix UMD module name\r\n * --------------------------------------------------------------------------------\r\n * Adds getEntityGraph method to Breeze EntityManager prototype.\r\n * Call mixinEntityGraph(EntityManager) to apply the mixin in a tree-shaking-resistant way.\r\n * Then (manager as any).getEntityGraph(entity, \"child\");\r\n *\r\n * Depends on Breeze which it patches\r\n *\r\n * For discussion, see:\r\n * http://www.breezejs.com/documentation/getentitygraph\r\n *\r\n * For example usage, see:\r\n * https://github.com/Breeze/breeze.js.samples/tree/master/net/DocCode/DocCode/tests/getEntityGraphTests.js\r\n */\r\n//#endregion\r\nimport { Entity, EntityManager, EntityQuery, EntityState, EntityType, ExpandClause } from 'breeze-client';\r\n\r\ninterface EntityGroup {\r\n _entities: (Entity | null)[];\r\n _indexMap: { [index: string]: number };\r\n}\r\n\r\n// module augmentation failed to build with ng-packagr, so we have a separate interface\r\nexport interface HasEntityGraph extends EntityManager {\r\n /**\r\n Get related entities of root entity (or root entities) as specified by expand.\r\n @example\r\n var graph = breeze.EntityManager.getEntityGraph(customer, 'Orders.OrderDetails');\r\n // graph will be the customer, all of its orders and their details even if deleted.\r\n @method getEntityGraph\r\n @param roots {Entity|Array of Entity} The root entity or root entities.\r\n @param expand {String|Array of String|Object} an expand string, a query expand clause, or array of string paths\r\n @return {Array of Entity} root entities and their related entities, including deleted entities. Duplicates are removed and entity order is indeterminate.\r\n **/\r\n getEntityGraph(roots: Entity | Array<Entity>, expand: string | Array<string> | ExpandClause): Array<Entity>;\r\n\r\n /**\r\n Execute query locally and return both the query results and their related entities as specified by the optional expand parameter or the query's expand clause.\r\n @example\r\n var query = breeze.EntityQuery.from('Customers')\r\n .where('CompanyName', 'startsWith', 'Alfred')\r\n .expand('Orders.OrderDetails');\r\n var graph = manager.getEntityGraph(query);\r\n // graph will be the 'Alfred' customers, their orders and their details even if deleted.\r\n @method getEntityGraph\r\n @param query {EntityQuery} A query to be executed against the manager's local cache.\r\n @param [expand] {String|Array of String|Object} an expand string, a query expand clause, or array of string paths\r\n @return {Array of Entity} local queried root entities and their related entities, including deleted entities. Duplicates are removed and entity order is indeterminate.\r\n **/\r\n getEntityGraph(query: EntityQuery, expand: string | Array<string> | ExpandClause): Array<Entity>;\r\n\r\n}\r\n\r\nexport function mixinEntityGraph(emclass: { new(): EntityManager }) {\r\n const proto = EntityManager.prototype;\r\n\r\n if (!(proto as any).getEntityGraph) {\r\n (proto as any).getEntityGraph = getEntityGraph;\r\n }\r\n}\r\n\r\nmixinEntityGraph(EntityManager);\r\n\r\n\r\nfunction getEntityGraph(roots: Entity | Array<Entity> | EntityQuery, expand: string | Array<string> | ExpandClause) {\r\n if (roots instanceof EntityQuery) {\r\n let newRoots = this.executeQueryLocally(roots);\r\n return getEntityGraphCore(newRoots, expand || roots.expandClause);\r\n } else {\r\n return getEntityGraphCore(roots, expand);\r\n }\r\n}\r\n\r\nfunction getEntityGraphCore(root: Entity | Array<Entity>, expand: string | Array<string> | ExpandClause) {\r\n let entityGroupMap: { [index: string]: EntityGroup };\r\n let graph = [] as Array<Entity>;\r\n let rootType: EntityType;\r\n let roots = Array.isArray(root) ? root : [root];\r\n addToGraph(roots); // removes dups & nulls\r\n roots = graph.slice(); // copy of de-duped roots\r\n if (roots.length) {\r\n getRootInfo();\r\n getExpand();\r\n buildGraph();\r\n }\r\n return graph;\r\n\r\n function addToGraph(entities: Array<Entity>) {\r\n entities.forEach(function (entity) {\r\n if (entity && graph.indexOf(entity) < 0) {\r\n graph.push(entity);\r\n }\r\n });\r\n }\r\n\r\n function getRootInfo() {\r\n let compatTypes: Array<EntityType>;\r\n\r\n roots.forEach(function (root, ix) {\r\n let aspect;\r\n if (!root || !(aspect = root.entityAspect)) {\r\n throw getRootErr(ix, 'is not an entity');\r\n }\r\n if (aspect.entityState === EntityState.Detached) {\r\n throw getRootErr(ix, 'is a detached entity');\r\n }\r\n\r\n let em = aspect.entityManager;\r\n if (entityGroupMap) {\r\n if (entityGroupMap !== em._entityGroupMap) {\r\n throw getRootErr(ix, \"has a different 'EntityManager' than other roots\");\r\n }\r\n } else {\r\n entityGroupMap = em._entityGroupMap;\r\n }\r\n getRootType(root, ix);\r\n\r\n });\r\n\r\n function getRootErr(ix: number, msg: string) {\r\n return new Error(\"'getEntityGraph' root[\" + ix + \"] \" + msg);\r\n }\r\n\r\n function getRootType(root: Entity, ix: number) {\r\n let thisType = root.entityType;\r\n if (!rootType) {\r\n rootType = thisType;\r\n return;\r\n } else if (rootType === thisType) {\r\n return;\r\n }\r\n // Types differs. Look for closest common base type\r\n // does thisType derive from current rootType?\r\n let baseType = rootType;\r\n do {\r\n compatTypes = compatTypes || baseType.getSelfAndSubtypes();\r\n if (compatTypes.indexOf(thisType) > -1) {\r\n rootType = baseType;\r\n return;\r\n }\r\n baseType = baseType.baseEntityType;\r\n compatTypes = null;\r\n } while (baseType);\r\n\r\n // does current rootType derives from thisType?\r\n baseType = thisType;\r\n do {\r\n compatTypes = baseType.getSelfAndSubtypes();\r\n if (compatTypes.indexOf(rootType) > -1) {\r\n rootType = baseType;\r\n return;\r\n }\r\n baseType = baseType.baseEntityType;\r\n } while (baseType);\r\n\r\n throw getRootErr(ix, \"is not EntityType-compatible with other roots\");\r\n }\r\n }\r\n\r\n function getExpand() {\r\n try {\r\n if (!expand) {\r\n expand = [];\r\n } else if (typeof expand === 'string') {\r\n // tricky because Breeze expandClause not exposed publically\r\n expand = new EntityQuery().expand(expand).expandClause;\r\n }\r\n if (expand instanceof ExpandClause && expand.propertyPaths) { // expand clause\r\n expand = expand.propertyPaths;\r\n } else if (Array.isArray(expand)) {\r\n if (!expand.every(function (elem) { return typeof elem === 'string'; })) {\r\n throw '';\r\n }\r\n } else {\r\n throw '';\r\n }\r\n } catch (_) {\r\n throw new Error(\r\n \"expand must be an expand string, array of string paths, or a query expand clause\");\r\n }\r\n }\r\n\r\n function buildGraph() {\r\n if (expand && expand instanceof Array && expand.length) {\r\n let fns = expand.map(makePathFn);\r\n fns.forEach(function (fn) { fn(roots); });\r\n }\r\n }\r\n\r\n // Make function to get entities along a single expand path\r\n // such as 'Orders.OrderDetails.Product'\r\n function makePathFn(path: string) {\r\n let fns = [] as Array<Function>,\r\n segments = path.split('.'),\r\n type = rootType;\r\n\r\n for (let i = 0, slen = segments.length; i < slen; i++) {\r\n let f = makePathSegmentFn(type, segments[i]);\r\n type = (f as any).navType;\r\n fns.push(f);\r\n }\r\n\r\n return function pathFn(entities: Array<Entity>) {\r\n for (let j = 0, flen = fns.length; j < flen; j++) {\r\n let elen = entities.length;\r\n if (elen === 0) { return; } // nothing left to explore\r\n // fn to get related entities for this path segment\r\n let fn = fns[j];\r\n // get entities related by this path segment\r\n let related = [] as Array<Entity>;\r\n for (let k = 0; k < elen; k++) {\r\n related = related.concat(fn(entities[k]));\r\n }\r\n addToGraph(related);\r\n if (j >= flen - 1) { return; } // no more path segments\r\n\r\n // reset entities to deduped related entities\r\n entities = [];\r\n for (let l = 0, rlen = related.length; l < rlen; l++) {\r\n let r = related[l];\r\n if (entities.indexOf(r) < 0) { entities.push(r); }\r\n }\r\n }\r\n };\r\n }\r\n\r\n // Make function to get entities along a single expand path segment\r\n // such as the 'OrderDetails' in the 'Orders.OrderDetails.Product' path\r\n function makePathSegmentFn(baseType: EntityType, segment: string) {\r\n let baseTypeName: string, fn = undefined, navType;\r\n try {\r\n baseTypeName = baseType.name;\r\n let nav = baseType.getNavigationProperty(segment);\r\n let fkName = nav.foreignKeyNames[0];\r\n if (!nav) {\r\n throw new Error(segment + \" is not a navigation property of \" + baseTypeName);\r\n }\r\n navType = nav.entityType;\r\n // add derived types\r\n let navTypes = navType.getSelfAndSubtypes();\r\n let grps = [] as Array<EntityGroup>; // non-empty groups for these types\r\n navTypes.forEach(function (t) {\r\n let grp = entityGroupMap[t.name];\r\n if (grp && grp._entities.length > 0) {\r\n grps.push(grp);\r\n }\r\n });\r\n let grpCount = grps.length;\r\n if (grpCount === 0) {\r\n // no related entities in cache\r\n fn = function () { return [] as Array<Entity>; };\r\n } else if (fkName) {\r\n fn = function (entity: Entity) {\r\n let val = null;\r\n try {\r\n let keyValue = entity.getProperty(fkName);\r\n for (let i = 0; i < grpCount; i += 1) {\r\n val = grps[i]._entities[grps[i]._indexMap[keyValue]];\r\n if (val) { break; }\r\n }\r\n } catch (e) { rethrow(e); }\r\n return val;\r\n };\r\n } else {\r\n fkName = nav.inverse ?\r\n nav.inverse.foreignKeyNames[0] :\r\n nav.invForeignKeyNames[0];\r\n if (!fkName) { throw new Error(\"No inverse keys\"); }\r\n fn = function (entity: Entity) {\r\n let vals = [] as Array<Entity>;\r\n try {\r\n let keyValue = entity.entityAspect.getKey().values[0];\r\n grps.forEach(function (grp) {\r\n vals = vals.concat(grp._entities.filter(function (en) {\r\n return en && en.getProperty(fkName) === keyValue;\r\n }));\r\n });\r\n } catch (e) { rethrow(e); }\r\n return vals;\r\n };\r\n }\r\n (fn as any).navType = navType;\r\n (fn as any).path = segment;\r\n\r\n } catch (err) { rethrow(err); }\r\n return fn;\r\n\r\n function rethrow(e: Error) {\r\n let typeName = baseTypeName || baseType;\r\n let error = new Error(\"'getEntityGraph' can't expand '\" + segment + \"' for \" + typeName);\r\n (error as any).innerError = e;\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\n\r\n"],"names":["EntityManager","EntityQuery","EntityState","ExpandClause"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("breeze-client")):"function"==typeof define&&define.amd?define("breeze-client/mixin-get-entity-graph",["exports","breeze-client"],t):t(((e=e||self)["breeze-client"]=e["breeze-client"]||{},e["breeze-client"]["mixin-get-entity-graph"]={}),e["breeze-client"])}(this,(function(e,t){"use strict";function n(e){var n=t.EntityManager.prototype;n.getEntityGraph||(n.getEntityGraph=r)}function r(e,n){return e instanceof t.EntityQuery?i(this.executeQueryLocally(e),n||e.expandClause):i(e,n)}function i(e,n){var r,i,a=[],o=Array.isArray(e)?e:[e];return f(o),(o=a.slice()).length&&(function(){var e;function n(e,t){return new Error("'getEntityGraph' root["+e+"] "+t)}o.forEach((function(a,o){var f;if(!a||!(f=a.entityAspect))throw n(o,"is not an entity");if(f.entityState===t.EntityState.Detached)throw n(o,"is a detached entity");var y=f.entityManager;if(r){if(r!==y._entityGroupMap)throw n(o,"has a different 'EntityManager' than other roots")}else r=y._entityGroupMap;!function(t,r){var a=t.entityType;if(i){if(i!==a){var o=i;do{if((e=e||o.getSelfAndSubtypes()).indexOf(a)>-1)return void(i=o);o=o.baseEntityType,e=null}while(o);o=a;do{if((e=o.getSelfAndSubtypes()).indexOf(i)>-1)return void(i=o);o=o.baseEntityType}while(o);throw n(r,"is not EntityType-compatible with other roots")}}else i=a}(a,o)}))}(),function(){try{if(n?"string"==typeof n&&(n=(new t.EntityQuery).expand(n).expandClause):n=[],n instanceof t.ExpandClause&&n.propertyPaths)n=n.propertyPaths;else{if(!Array.isArray(n))throw"";if(!n.every((function(e){return"string"==typeof e})))throw""}}catch(e){throw new Error("expand must be an expand string, array of string paths, or a query expand clause")}}(),function(){if(n&&n instanceof Array&&n.length){n.map(y).forEach((function(e){e(o)}))}}()),a;function f(e){e.forEach((function(e){e&&a.indexOf(e)<0&&a.push(e)}))}function y(e){for(var t=[],n=e.split("."),r=i,a=0,o=n.length;a<o;a++){var y=u(r,n[a]);r=y.navType,t.push(y)}return function(e){for(var n=0,r=t.length;n<r;n++){var i=e.length;if(0===i)return;for(var a=t[n],o=[],y=0;y<i;y++)o=o.concat(a(e[y]));if(f(o),n>=r-1)return;e=[];for(var u=0,c=o.length;u<c;u++){var s=o[u];e.indexOf(s)<0&&e.push(s)}}}}function u(e,t){var n,i,a=void 0;try{n=e.name;var o=e.getNavigationProperty(t),f=o.foreignKeyNames[0];if(!o)throw new Error(t+" is not a navigation property of "+n);var y=(i=o.entityType).getSelfAndSubtypes(),u=[];y.forEach((function(e){var t=r[e.name];t&&t._entities.length>0&&u.push(t)}));var c=u.length;if(0===c)a=function(){return[]};else if(f)a=function(e){var t=null;try{for(var n=e.getProperty(f),r=0;r<c&&!(t=u[r]._entities[u[r]._indexMap[n]]);r+=1);}catch(e){s(e)}return t};else{if(!(f=o.inverse?o.inverse.foreignKeyNames[0]:o.invForeignKeyNames[0]))throw new Error("No inverse keys");a=function(e){var t=[];try{var n=e.entityAspect.getKey().values[0];u.forEach((function(e){t=t.concat(e._entities.filter((function(e){return e&&e.getProperty(f)===n})))}))}catch(e){s(e)}return t}}a.navType=i,a.path=t}catch(e){s(e)}return a;function s(r){var i=new Error("'getEntityGraph' can't expand '"+t+"' for "+(n||e));throw i.innerError=r,i}}}n(t.EntityManager),e.mixinEntityGraph=n,Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=breeze-client-mixin-get-entity-graph.umd.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ng://breeze-client/mixin-get-entity-graph/mixin-get-entity-graph.ts"],"names":["mixinEntityGraph","emclass","proto","EntityManager","prototype","getEntityGraph","roots","expand","EntityQuery","getEntityGraphCore","this","executeQueryLocally","expandClause","root","entityGroupMap","rootType","graph","Array","isArray","addToGraph","slice","length","compatTypes","getRootErr","ix","msg","Error","forEach","aspect","entityAspect","entityState","EntityState","Detached","em","entityManager","_entityGroupMap","thisType","entityType","baseType","getSelfAndSubtypes","indexOf","baseEntityType","getRootType","getRootInfo","ExpandClause","propertyPaths","every","elem","_","getExpand","map","makePathFn","fn","buildGraph","entities","entity","push","path","fns","segments","split","type","i","slen","f","makePathSegmentFn","navType","j","flen","elen","related","k","concat","l","rlen","r","segment","baseTypeName","undefined","name","nav","getNavigationProperty","fkName_1","foreignKeyNames","navTypes","grps_1","t","grp","_entities","grpCount_1","val","keyValue","getProperty","_indexMap","e","rethrow","inverse","invForeignKeyNames","vals","keyValue_1","getKey","values","filter","en","err","error","innerError"],"mappings":"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","sourcesContent":["//#region Copyright, Version, and Description\r\n/*\r\n * Copyright 2015-2021 IdeaBlade, Inc. All Rights Reserved.\r\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\r\n * conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license\r\n *\r\n * Author: Ward Bell\r\n * Version: 0.9.5 - Steve Schmitt - convert to TypeScript, migrate to breeze-client repo, add HasEntityGraph and mixinEntityGraph\r\n * Version: 0.9.4 - Marcel Good - fix UMD module name\r\n * --------------------------------------------------------------------------------\r\n * Adds getEntityGraph method to Breeze EntityManager prototype.\r\n * Call mixinEntityGraph(EntityManager) to apply the mixin in a tree-shaking-resistant way.\r\n * Then (manager as any).getEntityGraph(entity, \"child\");\r\n *\r\n * Depends on Breeze which it patches\r\n *\r\n * For discussion, see:\r\n * http://www.breezejs.com/documentation/getentitygraph\r\n *\r\n * For example usage, see:\r\n * https://github.com/Breeze/breeze.js.samples/tree/master/net/DocCode/DocCode/tests/getEntityGraphTests.js\r\n */\r\n//#endregion\r\nimport { Entity, EntityManager, EntityQuery, EntityState, EntityType, ExpandClause } from 'breeze-client';\r\n\r\ninterface EntityGroup {\r\n _entities: (Entity | null)[];\r\n _indexMap: { [index: string]: number };\r\n}\r\n\r\n// module augmentation failed to build with ng-packagr, so we have a separate interface\r\nexport interface HasEntityGraph extends EntityManager {\r\n /**\r\n Get related entities of root entity (or root entities) as specified by expand.\r\n @example\r\n var graph = breeze.EntityManager.getEntityGraph(customer, 'Orders.OrderDetails');\r\n // graph will be the customer, all of its orders and their details even if deleted.\r\n @method getEntityGraph\r\n @param roots {Entity|Array of Entity} The root entity or root entities.\r\n @param expand {String|Array of String|Object} an expand string, a query expand clause, or array of string paths\r\n @return {Array of Entity} root entities and their related entities, including deleted entities. Duplicates are removed and entity order is indeterminate.\r\n **/\r\n getEntityGraph(roots: Entity | Array<Entity>, expand: string | Array<string> | ExpandClause): Array<Entity>;\r\n\r\n /**\r\n Execute query locally and return both the query results and their related entities as specified by the optional expand parameter or the query's expand clause.\r\n @example\r\n var query = breeze.EntityQuery.from('Customers')\r\n .where('CompanyName', 'startsWith', 'Alfred')\r\n .expand('Orders.OrderDetails');\r\n var graph = manager.getEntityGraph(query);\r\n // graph will be the 'Alfred' customers, their orders and their details even if deleted.\r\n @method getEntityGraph\r\n @param query {EntityQuery} A query to be executed against the manager's local cache.\r\n @param [expand] {String|Array of String|Object} an expand string, a query expand clause, or array of string paths\r\n @return {Array of Entity} local queried root entities and their related entities, including deleted entities. Duplicates are removed and entity order is indeterminate.\r\n **/\r\n getEntityGraph(query: EntityQuery, expand: string | Array<string> | ExpandClause): Array<Entity>;\r\n\r\n}\r\n\r\nexport function mixinEntityGraph(emclass: { new(): EntityManager }) {\r\n const proto = EntityManager.prototype;\r\n\r\n if (!(proto as any).getEntityGraph) {\r\n (proto as any).getEntityGraph = getEntityGraph;\r\n }\r\n}\r\n\r\nmixinEntityGraph(EntityManager);\r\n\r\n\r\nfunction getEntityGraph(roots: Entity | Array<Entity> | EntityQuery, expand: string | Array<string> | ExpandClause) {\r\n if (roots instanceof EntityQuery) {\r\n let newRoots = this.executeQueryLocally(roots);\r\n return getEntityGraphCore(newRoots, expand || roots.expandClause);\r\n } else {\r\n return getEntityGraphCore(roots, expand);\r\n }\r\n}\r\n\r\nfunction getEntityGraphCore(root: Entity | Array<Entity>, expand: string | Array<string> | ExpandClause) {\r\n let entityGroupMap: { [index: string]: EntityGroup };\r\n let graph = [] as Array<Entity>;\r\n let rootType: EntityType;\r\n let roots = Array.isArray(root) ? root : [root];\r\n addToGraph(roots); // removes dups & nulls\r\n roots = graph.slice(); // copy of de-duped roots\r\n if (roots.length) {\r\n getRootInfo();\r\n getExpand();\r\n buildGraph();\r\n }\r\n return graph;\r\n\r\n function addToGraph(entities: Array<Entity>) {\r\n entities.forEach(function (entity) {\r\n if (entity && graph.indexOf(entity) < 0) {\r\n graph.push(entity);\r\n }\r\n });\r\n }\r\n\r\n function getRootInfo() {\r\n let compatTypes: Array<EntityType>;\r\n\r\n roots.forEach(function (root, ix) {\r\n let aspect;\r\n if (!root || !(aspect = root.entityAspect)) {\r\n throw getRootErr(ix, 'is not an entity');\r\n }\r\n if (aspect.entityState === EntityState.Detached) {\r\n throw getRootErr(ix, 'is a detached entity');\r\n }\r\n\r\n let em = aspect.entityManager;\r\n if (entityGroupMap) {\r\n if (entityGroupMap !== em._entityGroupMap) {\r\n throw getRootErr(ix, \"has a different 'EntityManager' than other roots\");\r\n }\r\n } else {\r\n entityGroupMap = em._entityGroupMap;\r\n }\r\n getRootType(root, ix);\r\n\r\n });\r\n\r\n function getRootErr(ix: number, msg: string) {\r\n return new Error(\"'getEntityGraph' root[\" + ix + \"] \" + msg);\r\n }\r\n\r\n function getRootType(root: Entity, ix: number) {\r\n let thisType = root.entityType;\r\n if (!rootType) {\r\n rootType = thisType;\r\n return;\r\n } else if (rootType === thisType) {\r\n return;\r\n }\r\n // Types differs. Look for closest common base type\r\n // does thisType derive from current rootType?\r\n let baseType = rootType;\r\n do {\r\n compatTypes = compatTypes || baseType.getSelfAndSubtypes();\r\n if (compatTypes.indexOf(thisType) > -1) {\r\n rootType = baseType;\r\n return;\r\n }\r\n baseType = baseType.baseEntityType;\r\n compatTypes = null;\r\n } while (baseType);\r\n\r\n // does current rootType derives from thisType?\r\n baseType = thisType;\r\n do {\r\n compatTypes = baseType.getSelfAndSubtypes();\r\n if (compatTypes.indexOf(rootType) > -1) {\r\n rootType = baseType;\r\n return;\r\n }\r\n baseType = baseType.baseEntityType;\r\n } while (baseType);\r\n\r\n throw getRootErr(ix, \"is not EntityType-compatible with other roots\");\r\n }\r\n }\r\n\r\n function getExpand() {\r\n try {\r\n if (!expand) {\r\n expand = [];\r\n } else if (typeof expand === 'string') {\r\n // tricky because Breeze expandClause not exposed publically\r\n expand = new EntityQuery().expand(expand).expandClause;\r\n }\r\n if (expand instanceof ExpandClause && expand.propertyPaths) { // expand clause\r\n expand = expand.propertyPaths;\r\n } else if (Array.isArray(expand)) {\r\n if (!expand.every(function (elem) { return typeof elem === 'string'; })) {\r\n throw '';\r\n }\r\n } else {\r\n throw '';\r\n }\r\n } catch (_) {\r\n throw new Error(\r\n \"expand must be an expand string, array of string paths, or a query expand clause\");\r\n }\r\n }\r\n\r\n function buildGraph() {\r\n if (expand && expand instanceof Array && expand.length) {\r\n let fns = expand.map(makePathFn);\r\n fns.forEach(function (fn) { fn(roots); });\r\n }\r\n }\r\n\r\n // Make function to get entities along a single expand path\r\n // such as 'Orders.OrderDetails.Product'\r\n function makePathFn(path: string) {\r\n let fns = [] as Array<Function>,\r\n segments = path.split('.'),\r\n type = rootType;\r\n\r\n for (let i = 0, slen = segments.length; i < slen; i++) {\r\n let f = makePathSegmentFn(type, segments[i]);\r\n type = (f as any).navType;\r\n fns.push(f);\r\n }\r\n\r\n return function pathFn(entities: Array<Entity>) {\r\n for (let j = 0, flen = fns.length; j < flen; j++) {\r\n let elen = entities.length;\r\n if (elen === 0) { return; } // nothing left to explore\r\n // fn to get related entities for this path segment\r\n let fn = fns[j];\r\n // get entities related by this path segment\r\n let related = [] as Array<Entity>;\r\n for (let k = 0; k < elen; k++) {\r\n related = related.concat(fn(entities[k]));\r\n }\r\n addToGraph(related);\r\n if (j >= flen - 1) { return; } // no more path segments\r\n\r\n // reset entities to deduped related entities\r\n entities = [];\r\n for (let l = 0, rlen = related.length; l < rlen; l++) {\r\n let r = related[l];\r\n if (entities.indexOf(r) < 0) { entities.push(r); }\r\n }\r\n }\r\n };\r\n }\r\n\r\n // Make function to get entities along a single expand path segment\r\n // such as the 'OrderDetails' in the 'Orders.OrderDetails.Product' path\r\n function makePathSegmentFn(baseType: EntityType, segment: string) {\r\n let baseTypeName: string, fn = undefined, navType;\r\n try {\r\n baseTypeName = baseType.name;\r\n let nav = baseType.getNavigationProperty(segment);\r\n let fkName = nav.foreignKeyNames[0];\r\n if (!nav) {\r\n throw new Error(segment + \" is not a navigation property of \" + baseTypeName);\r\n }\r\n navType = nav.entityType;\r\n // add derived types\r\n let navTypes = navType.getSelfAndSubtypes();\r\n let grps = [] as Array<EntityGroup>; // non-empty groups for these types\r\n navTypes.forEach(function (t) {\r\n let grp = entityGroupMap[t.name];\r\n if (grp && grp._entities.length > 0) {\r\n grps.push(grp);\r\n }\r\n });\r\n let grpCount = grps.length;\r\n if (grpCount === 0) {\r\n // no related entities in cache\r\n fn = function () { return [] as Array<Entity>; };\r\n } else if (fkName) {\r\n fn = function (entity: Entity) {\r\n let val = null;\r\n try {\r\n let keyValue = entity.getProperty(fkName);\r\n for (let i = 0; i < grpCount; i += 1) {\r\n val = grps[i]._entities[grps[i]._indexMap[keyValue]];\r\n if (val) { break; }\r\n }\r\n } catch (e) { rethrow(e); }\r\n return val;\r\n };\r\n } else {\r\n fkName = nav.inverse ?\r\n nav.inverse.foreignKeyNames[0] :\r\n nav.invForeignKeyNames[0];\r\n if (!fkName) { throw new Error(\"No inverse keys\"); }\r\n fn = function (entity: Entity) {\r\n let vals = [] as Array<Entity>;\r\n try {\r\n let keyValue = entity.entityAspect.getKey().values[0];\r\n grps.forEach(function (grp) {\r\n vals = vals.concat(grp._entities.filter(function (en) {\r\n return en && en.getProperty(fkName) === keyValue;\r\n }));\r\n });\r\n } catch (e) { rethrow(e); }\r\n return vals;\r\n };\r\n }\r\n (fn as any).navType = navType;\r\n (fn as any).path = segment;\r\n\r\n } catch (err) { rethrow(err); }\r\n return fn;\r\n\r\n function rethrow(e: Error) {\r\n let typeName = baseTypeName || baseType;\r\n let error = new Error(\"'getEntityGraph' can't expand '\" + segment + \"' for \" + typeName);\r\n (error as any).innerError = e;\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\n\r\n"]}