breeze-client 2.2.0-cjs → 2.2.0

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 (376) hide show
  1. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  2. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  6. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  8. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  10. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  12. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
  13. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  14. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  15. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
  16. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
  17. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  18. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
  19. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  20. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  21. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
  22. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  23. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  24. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  25. package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
  26. package/{esm5/adapter-data-service-odata/adapter-data-service-odata.js → esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs} +138 -147
  27. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  28. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
  29. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  30. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
  31. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  32. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
  33. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  34. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
  35. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
  36. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  37. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  38. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
  39. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  40. package/esm2022/breeze-client.mjs +5 -0
  41. package/esm2022/index.mjs +2 -0
  42. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  43. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  44. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  45. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
  46. package/esm2022/src/abstract-data-service-adapter.mjs +325 -0
  47. package/esm2022/src/array.mjs +4 -0
  48. package/esm2022/src/assert-param.mjs +330 -0
  49. package/esm2022/src/breeze.mjs +85 -0
  50. package/esm2022/src/complex-array.mjs +117 -0
  51. package/esm2022/src/config.mjs +232 -0
  52. package/esm2022/src/core.mjs +712 -0
  53. package/esm2022/src/csdl-metadata-parser.mjs +385 -0
  54. package/esm2022/src/data-service.mjs +239 -0
  55. package/esm2022/src/data-type.mjs +510 -0
  56. package/esm2022/src/default-property-interceptor.mjs +460 -0
  57. package/{esm2015/src/entity-action.js → esm2022/src/entity-action.mjs} +25 -25
  58. package/esm2022/src/entity-aspect.mjs +897 -0
  59. package/esm2022/src/entity-group.mjs +192 -0
  60. package/esm2022/src/entity-key.mjs +127 -0
  61. package/esm2022/src/entity-manager.mjs +2183 -0
  62. package/esm2022/src/entity-metadata.mjs +2242 -0
  63. package/esm2022/src/entity-query.mjs +1024 -0
  64. package/esm2022/src/entity-state.mjs +107 -0
  65. package/esm2022/src/enum.mjs +143 -0
  66. package/esm2022/src/event.mjs +264 -0
  67. package/esm2022/src/interface-registry.mjs +39 -0
  68. package/esm2022/src/key-generator.mjs +110 -0
  69. package/esm2022/src/local-query-comparison-options.mjs +75 -0
  70. package/esm2022/src/mapping-context.mjs +422 -0
  71. package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
  72. package/esm2022/src/observable-array.mjs +183 -0
  73. package/esm2022/src/predicate.mjs +1259 -0
  74. package/esm2022/src/primitive-array.mjs +85 -0
  75. package/esm2022/src/query-options.mjs +160 -0
  76. package/esm2022/src/relation-array.mjs +173 -0
  77. package/esm2022/src/save-options.mjs +51 -0
  78. package/esm2022/src/unattached-children-map.mjs +56 -0
  79. package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
  80. package/esm2022/src/validation-options.mjs +78 -0
  81. package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
  82. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  83. package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
  84. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  85. package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
  86. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  87. package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
  88. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  89. package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
  90. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
  91. package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +68 -69
  92. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  93. package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +30 -30
  94. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  95. package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
  96. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  97. package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
  98. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  99. package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
  100. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  101. package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
  102. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  103. package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
  104. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  105. package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
  106. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
  107. package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2034 -1535
  108. package/fesm2022/breeze-client.mjs.map +1 -0
  109. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  110. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  111. package/package.json +94 -12
  112. package/src/config.d.ts +1 -1
  113. package/src/core.d.ts +1 -1
  114. package/src/entity-aspect.d.ts +1 -1
  115. package/src/entity-metadata.d.ts +8 -6
  116. package/src/entity-query.d.ts +1 -1
  117. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  118. package/adapter-ajax-angularjs/package.json +0 -13
  119. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  120. package/adapter-ajax-fetch/package.json +0 -13
  121. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  122. package/adapter-ajax-httpclient/package.json +0 -13
  123. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  124. package/adapter-ajax-jquery/package.json +0 -13
  125. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  126. package/adapter-ajax-post/package.json +0 -13
  127. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  128. package/adapter-data-service-odata/package.json +0 -13
  129. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  130. package/adapter-data-service-webapi/package.json +0 -13
  131. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  132. package/adapter-model-library-backing-store/package.json +0 -13
  133. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  134. package/adapter-model-library-ko/package.json +0 -13
  135. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  136. package/adapter-uri-builder-json/package.json +0 -13
  137. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  138. package/adapter-uri-builder-odata/package.json +0 -13
  139. package/breeze-client.d.ts +0 -8
  140. package/breeze-client.metadata.json +0 -1
  141. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  142. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  143. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  144. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  145. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  146. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  147. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  148. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  149. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  150. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  151. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  152. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  153. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  154. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  155. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  156. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  157. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  158. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  159. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  160. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  161. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -747
  162. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  163. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  164. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  165. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -333
  166. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  167. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  168. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  169. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  170. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  171. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  172. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  173. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  174. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  175. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  176. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  177. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  178. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  179. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  180. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  181. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  182. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  183. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  184. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  185. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  186. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  187. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  188. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  189. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  190. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  191. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  192. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  193. package/bundles/breeze-client.umd.js +0 -14234
  194. package/bundles/breeze-client.umd.js.map +0 -1
  195. package/bundles/breeze-client.umd.min.js +0 -16
  196. package/bundles/breeze-client.umd.min.js.map +0 -1
  197. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  198. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  199. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  200. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  201. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  202. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  203. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  204. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  205. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  206. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  207. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  208. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  209. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  210. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  211. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -463
  212. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  213. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -100
  214. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  215. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  216. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  217. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  218. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  219. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  220. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  221. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  222. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  223. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  224. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  225. package/esm2015/breeze-client.js +0 -9
  226. package/esm2015/index.js +0 -2
  227. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  228. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  229. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  230. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  231. package/esm2015/src/abstract-data-service-adapter.js +0 -327
  232. package/esm2015/src/array.js +0 -4
  233. package/esm2015/src/assert-param.js +0 -312
  234. package/esm2015/src/breeze.js +0 -85
  235. package/esm2015/src/complex-array.js +0 -119
  236. package/esm2015/src/config.js +0 -223
  237. package/esm2015/src/core.js +0 -714
  238. package/esm2015/src/csdl-metadata-parser.js +0 -385
  239. package/esm2015/src/data-service.js +0 -203
  240. package/esm2015/src/data-type.js +0 -506
  241. package/esm2015/src/default-property-interceptor.js +0 -460
  242. package/esm2015/src/entity-aspect.js +0 -804
  243. package/esm2015/src/entity-group.js +0 -187
  244. package/esm2015/src/entity-key.js +0 -116
  245. package/esm2015/src/entity-manager.js +0 -2094
  246. package/esm2015/src/entity-metadata.js +0 -2109
  247. package/esm2015/src/entity-query.js +0 -1015
  248. package/esm2015/src/entity-state.js +0 -107
  249. package/esm2015/src/enum.js +0 -141
  250. package/esm2015/src/event.js +0 -256
  251. package/esm2015/src/interface-registry.js +0 -41
  252. package/esm2015/src/key-generator.js +0 -108
  253. package/esm2015/src/local-query-comparison-options.js +0 -65
  254. package/esm2015/src/mapping-context.js +0 -411
  255. package/esm2015/src/naming-convention.js +0 -88
  256. package/esm2015/src/observable-array.js +0 -185
  257. package/esm2015/src/predicate.js +0 -1242
  258. package/esm2015/src/primitive-array.js +0 -87
  259. package/esm2015/src/query-options.js +0 -152
  260. package/esm2015/src/relation-array.js +0 -175
  261. package/esm2015/src/save-options.js +0 -41
  262. package/esm2015/src/unattached-children-map.js +0 -58
  263. package/esm2015/src/validate.js +0 -991
  264. package/esm2015/src/validation-options.js +0 -64
  265. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  266. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  267. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  268. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  269. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  270. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  271. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  272. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  273. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  274. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  275. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  276. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  277. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  278. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  279. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  280. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -105
  281. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  282. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  283. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  284. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  285. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  286. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  287. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  288. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  289. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  290. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  291. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  292. package/esm5/breeze-client.js +0 -9
  293. package/esm5/index.js +0 -2
  294. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  295. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  296. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  297. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  298. package/esm5/src/abstract-data-service-adapter.js +0 -333
  299. package/esm5/src/array.js +0 -4
  300. package/esm5/src/assert-param.js +0 -317
  301. package/esm5/src/breeze.js +0 -85
  302. package/esm5/src/complex-array.js +0 -119
  303. package/esm5/src/config.js +0 -228
  304. package/esm5/src/core.js +0 -722
  305. package/esm5/src/csdl-metadata-parser.js +0 -385
  306. package/esm5/src/data-service.js +0 -207
  307. package/esm5/src/data-type.js +0 -513
  308. package/esm5/src/default-property-interceptor.js +0 -460
  309. package/esm5/src/entity-action.js +0 -52
  310. package/esm5/src/entity-aspect.js +0 -810
  311. package/esm5/src/entity-group.js +0 -189
  312. package/esm5/src/entity-key.js +0 -118
  313. package/esm5/src/entity-manager.js +0 -2112
  314. package/esm5/src/entity-metadata.js +0 -2144
  315. package/esm5/src/entity-query.js +0 -1042
  316. package/esm5/src/entity-state.js +0 -114
  317. package/esm5/src/enum.js +0 -144
  318. package/esm5/src/event.js +0 -259
  319. package/esm5/src/interface-registry.js +0 -43
  320. package/esm5/src/key-generator.js +0 -111
  321. package/esm5/src/local-query-comparison-options.js +0 -67
  322. package/esm5/src/mapping-context.js +0 -413
  323. package/esm5/src/observable-array.js +0 -201
  324. package/esm5/src/predicate.js +0 -1307
  325. package/esm5/src/primitive-array.js +0 -87
  326. package/esm5/src/query-options.js +0 -167
  327. package/esm5/src/relation-array.js +0 -175
  328. package/esm5/src/save-options.js +0 -43
  329. package/esm5/src/unattached-children-map.js +0 -60
  330. package/esm5/src/validation-options.js +0 -66
  331. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  332. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  333. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  334. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  335. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  336. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  337. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  338. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  339. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  340. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  341. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  342. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  343. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  344. package/fesm2015/breeze-client.js.map +0 -1
  345. package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
  346. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  347. package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
  348. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  349. package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
  350. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  351. package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
  352. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  353. package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
  354. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  355. package/fesm5/breeze-client-adapter-data-service-odata.js +0 -523
  356. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  357. package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -111
  358. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  359. package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
  360. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  361. package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
  362. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  363. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  364. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  365. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  366. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  367. package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
  368. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  369. package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
  370. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  371. package/fesm5/breeze-client.js +0 -13956
  372. package/fesm5/breeze-client.js.map +0 -1
  373. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  374. package/mixin-get-entity-graph/package.json +0 -13
  375. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  376. package/mixin-save-queuing/package.json +0 -13
@@ -1,4 +1,4 @@
1
- import { config, EntityType, Predicate, core } from 'breeze-client';
1
+ import * as breeze from 'breeze-client';
2
2
 
3
3
  /** Appends parameter to url, with appropriate delimiter */
4
4
  function appendQueryStringParameter(url, parameter) {
@@ -50,13 +50,14 @@ function encodeParams(obj) {
50
50
  }
51
51
 
52
52
  class UriBuilderODataAdapter {
53
+ name;
53
54
  constructor() {
54
55
  this.name = "odata";
55
56
  }
56
- static register(config$1) {
57
- config$1 = config$1 || config;
58
- config$1.registerAdapter("uriBuilder", UriBuilderODataAdapter);
59
- return config$1.initializeAdapterInstance("uriBuilder", "odata", true);
57
+ static register(config) {
58
+ config = config || breeze.config;
59
+ config.registerAdapter("uriBuilder", UriBuilderODataAdapter);
60
+ return config.initializeAdapterInstance("uriBuilder", "odata", true);
60
61
  }
61
62
  initialize() { }
62
63
  buildUri(entityQuery, metadataStore) {
@@ -64,7 +65,7 @@ class UriBuilderODataAdapter {
64
65
  let entityType = entityQuery._getFromEntityType(metadataStore, false);
65
66
  if (!entityType) {
66
67
  // anonymous type but still has naming convention info avail
67
- entityType = new EntityType(metadataStore);
68
+ entityType = new breeze.EntityType(metadataStore);
68
69
  }
69
70
  let queryOptions = {};
70
71
  queryOptions["$filter"] = toWhereODataFragment(entityQuery.wherePredicate);
@@ -143,90 +144,89 @@ class UriBuilderODataAdapter {
143
144
  }
144
145
  }
145
146
  }
146
- Predicate.prototype.toODataFragment = function (context) {
147
+ breeze.Predicate.prototype.toODataFragment = function (context) {
147
148
  return this.visit(context, toODataFragmentVisitor);
148
149
  };
149
- const ɵ0 = function () {
150
- return this.value;
151
- }, ɵ1 = function (context) {
152
- let predVal = this.pred.visit(context);
153
- return odataOpFrom(this) + " " + "(" + predVal + ")";
154
- }, ɵ2 = function (context) {
155
- let expr1Val = this.expr1.visit(context);
156
- let expr2Val = this.expr2.visit(context);
157
- let prefix = context.prefix;
158
- if (prefix) {
159
- expr1Val = prefix + "/" + expr1Val;
160
- }
161
- let odataOp = odataOpFrom(this);
162
- if (this.op.key === 'in') {
163
- let result = expr2Val.map(function (v) {
164
- return "(" + expr1Val + " eq " + v + ")";
165
- }).join(" or ");
150
+ let toODataFragmentVisitor = {
151
+ passthruPredicate: function () {
152
+ return this.value;
153
+ },
154
+ unaryPredicate: function (context) {
155
+ let predVal = this.pred.visit(context);
156
+ return odataOpFrom(this) + " " + "(" + predVal + ")";
157
+ },
158
+ binaryPredicate: function (context) {
159
+ let expr1Val = this.expr1.visit(context);
160
+ let expr2Val = this.expr2.visit(context);
161
+ let prefix = context.prefix;
162
+ if (prefix) {
163
+ expr1Val = prefix + "/" + expr1Val;
164
+ }
165
+ let odataOp = odataOpFrom(this);
166
+ if (this.op.key === 'in') {
167
+ let result = expr2Val.map(function (v) {
168
+ return "(" + expr1Val + " eq " + v + ")";
169
+ }).join(" or ");
170
+ return result;
171
+ }
172
+ else if (this.op.isFunction) {
173
+ if (odataOp === "substringof") {
174
+ return odataOp + "(" + expr2Val + "," + expr1Val + ") eq true";
175
+ }
176
+ else {
177
+ return odataOp + "(" + expr1Val + "," + expr2Val + ") eq true";
178
+ }
179
+ }
180
+ else {
181
+ return expr1Val + " " + odataOp + " " + expr2Val;
182
+ }
183
+ },
184
+ andOrPredicate: function (context) {
185
+ let result = this.preds.map(function (pred) {
186
+ let predVal = pred.visit(context);
187
+ return "(" + predVal + ")";
188
+ }).join(" " + odataOpFrom(this) + " ");
166
189
  return result;
167
- }
168
- else if (this.op.isFunction) {
169
- if (odataOp === "substringof") {
170
- return odataOp + "(" + expr2Val + "," + expr1Val + ") eq true";
190
+ },
191
+ anyAllPredicate: function (context) {
192
+ let exprVal = this.expr.visit(context);
193
+ if (!this.pred.op) { // added 21-Oct-2016 to fix breeze.js issue #172
194
+ return exprVal + "/" + odataOpFrom(this) + "()";
195
+ }
196
+ let prefix = context.prefix;
197
+ if (prefix) {
198
+ exprVal = prefix + "/" + exprVal;
199
+ prefix = "x" + (parseInt(prefix.substring(1)) + 1);
171
200
  }
172
201
  else {
173
- return odataOp + "(" + expr1Val + "," + expr2Val + ") eq true";
202
+ prefix = "x1";
203
+ }
204
+ // need to create a new context because of 'prefix'
205
+ let newContext = breeze.core.extend({}, context);
206
+ newContext.entityType = this.expr.dataType;
207
+ newContext.prefix = prefix;
208
+ let newPredVal = this.pred.visit(newContext);
209
+ return exprVal + "/" + odataOpFrom(this) + "(" + prefix + ": " + newPredVal + ")";
210
+ },
211
+ litExpr: function () {
212
+ if (Array.isArray(this.value)) {
213
+ return this.value.map(function (v) { return this.dataType.fmtOData(v); }, this);
174
214
  }
215
+ else {
216
+ return this.dataType.fmtOData(this.value);
217
+ }
218
+ },
219
+ propExpr: function (context) {
220
+ let entityType = context.entityType;
221
+ // '/' is the OData path delimiter
222
+ return entityType ? entityType.clientPropertyPathToServer(this.propertyPath, "/") : this.propertyPath;
223
+ },
224
+ fnExpr: function (context) {
225
+ let exprVals = this.exprs.map(function (expr) {
226
+ return expr.visit(context);
227
+ });
228
+ return this.fnName + "(" + exprVals.join(",") + ")";
175
229
  }
176
- else {
177
- return expr1Val + " " + odataOp + " " + expr2Val;
178
- }
179
- }, ɵ3 = function (context) {
180
- let result = this.preds.map(function (pred) {
181
- let predVal = pred.visit(context);
182
- return "(" + predVal + ")";
183
- }).join(" " + odataOpFrom(this) + " ");
184
- return result;
185
- }, ɵ4 = function (context) {
186
- let exprVal = this.expr.visit(context);
187
- if (!this.pred.op) { // added 21-Oct-2016 to fix breeze.js issue #172
188
- return exprVal + "/" + odataOpFrom(this) + "()";
189
- }
190
- let prefix = context.prefix;
191
- if (prefix) {
192
- exprVal = prefix + "/" + exprVal;
193
- prefix = "x" + (parseInt(prefix.substring(1)) + 1);
194
- }
195
- else {
196
- prefix = "x1";
197
- }
198
- // need to create a new context because of 'prefix'
199
- let newContext = core.extend({}, context);
200
- newContext.entityType = this.expr.dataType;
201
- newContext.prefix = prefix;
202
- let newPredVal = this.pred.visit(newContext);
203
- return exprVal + "/" + odataOpFrom(this) + "(" + prefix + ": " + newPredVal + ")";
204
- }, ɵ5 = function () {
205
- if (Array.isArray(this.value)) {
206
- return this.value.map(function (v) { return this.dataType.fmtOData(v); }, this);
207
- }
208
- else {
209
- return this.dataType.fmtOData(this.value);
210
- }
211
- }, ɵ6 = function (context) {
212
- let entityType = context.entityType;
213
- // '/' is the OData path delimiter
214
- return entityType ? entityType.clientPropertyPathToServer(this.propertyPath, "/") : this.propertyPath;
215
- }, ɵ7 = function (context) {
216
- let exprVals = this.exprs.map(function (expr) {
217
- return expr.visit(context);
218
- });
219
- return this.fnName + "(" + exprVals.join(",") + ")";
220
- };
221
- let toODataFragmentVisitor = {
222
- passthruPredicate: ɵ0,
223
- unaryPredicate: ɵ1,
224
- binaryPredicate: ɵ2,
225
- andOrPredicate: ɵ3,
226
- anyAllPredicate: ɵ4,
227
- litExpr: ɵ5,
228
- propExpr: ɵ6,
229
- fnExpr: ɵ7
230
230
  };
231
231
  let _operatorMap = {
232
232
  'contains': 'substringof'
@@ -236,11 +236,11 @@ function odataOpFrom(node) {
236
236
  let odataOp = _operatorMap[op];
237
237
  return odataOp || op;
238
238
  }
239
- config.registerAdapter("uriBuilder", UriBuilderODataAdapter);
239
+ breeze.config.registerAdapter("uriBuilder", UriBuilderODataAdapter);
240
240
 
241
241
  /**
242
242
  * Generated bundle index. Do not edit.
243
243
  */
244
244
 
245
- export { UriBuilderODataAdapter, ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7 };
246
- //# sourceMappingURL=breeze-client-adapter-uri-builder-odata.js.map
245
+ export { UriBuilderODataAdapter };
246
+ //# sourceMappingURL=breeze-client-adapter-uri-builder-odata.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breeze-client-adapter-uri-builder-odata.mjs","sources":["../../src/adapter-core.ts","../../src/adapter-uri-builder-odata.ts","../../src/breeze-client-adapter-uri-builder-odata.ts"],"sourcesContent":["/** Appends parameter to url, with appropriate delimiter */\r\nexport function appendQueryStringParameter(url: string, parameter: string) {\r\n if (!parameter) return url;\r\n\r\n let separator = url.endsWith(\"?\") ? \"\" : url.includes(\"?\") ? \"&\" : \"?\";\r\n\r\n return url + separator + parameter;\r\n}\r\n\r\n/** Encodes the object into query string parameters */\r\nexport function encodeParams(obj: {}) {\r\n let query = '';\r\n let subValue: any, innerObj: any, fullSubName: any;\r\n\r\n for (let name in obj) {\r\n if (!obj.hasOwnProperty(name)) { continue; }\r\n\r\n let value = obj[name];\r\n\r\n if (value instanceof Array) {\r\n for (let i = 0; i < value.length; ++i) {\r\n subValue = value[i];\r\n fullSubName = name + '[' + i + ']';\r\n innerObj = {};\r\n innerObj[fullSubName] = subValue;\r\n query += encodeParams(innerObj) + '&';\r\n }\r\n } else if (value && value.toISOString) { // a feature of Date-like things\r\n query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';\r\n } else if (value instanceof Object) {\r\n for (let subName in value) {\r\n if (obj.hasOwnProperty(name)) {\r\n subValue = value[subName];\r\n fullSubName = name + '[' + subName + ']';\r\n innerObj = {};\r\n innerObj[fullSubName] = subValue;\r\n query += encodeParams(innerObj) + '&';\r\n }\r\n }\r\n } else if (value === null) {\r\n query += encodeURIComponent(name) + '=&';\r\n } else if (value !== undefined) {\r\n query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';\r\n }\r\n }\r\n\r\n return query.length ? query.substr(0, query.length - 1) : query;\r\n}\r\n","import * as breeze from 'breeze-client';\r\nimport { appendQueryStringParameter } from './adapter-core';\r\n\r\nexport class UriBuilderODataAdapter implements breeze.UriBuilderAdapter {\r\n\r\n name: string;\r\n\r\n constructor() {\r\n this.name = \"odata\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"uriBuilder\", UriBuilderODataAdapter);\r\n return config.initializeAdapterInstance(\"uriBuilder\", \"odata\", true) as UriBuilderODataAdapter;\r\n }\r\n\r\n initialize() { }\r\n\r\n buildUri(entityQuery: breeze.EntityQuery, metadataStore: breeze.MetadataStore) {\r\n // force entityType validation;\r\n let entityType = entityQuery._getFromEntityType(metadataStore, false);\r\n if (!entityType) {\r\n // anonymous type but still has naming convention info avail\r\n entityType = new breeze.EntityType(metadataStore);\r\n }\r\n\r\n let queryOptions = {};\r\n queryOptions[\"$filter\"] = toWhereODataFragment(entityQuery.wherePredicate);\r\n queryOptions[\"$orderby\"] = toOrderByODataFragment(entityQuery.orderByClause!);\r\n\r\n if (entityQuery.skipCount) {\r\n queryOptions[\"$skip\"] = entityQuery.skipCount;\r\n }\r\n\r\n if (entityQuery.takeCount != null) {\r\n queryOptions[\"$top\"] = entityQuery.takeCount;\r\n }\r\n\r\n queryOptions[\"$expand\"] = toExpandODataFragment(entityQuery.expandClause);\r\n queryOptions[\"$select\"] = toSelectODataFragment(entityQuery.selectClause!);\r\n\r\n if (entityQuery.inlineCountEnabled) {\r\n queryOptions[\"$inlinecount\"] = \"allpages\";\r\n }\r\n\r\n const qoText = toQueryOptionsString(queryOptions as breeze.QueryOptions);\r\n\r\n return appendQueryStringParameter(entityQuery.resourceName, qoText);\r\n\r\n // private methods to this func.\r\n\r\n function toWhereODataFragment(wherePredicate: breeze.Predicate) {\r\n if (!wherePredicate) return undefined;\r\n // validation occurs inside of the toODataFragment call here.\r\n let frag = wherePredicate.visit({ entityType: entityType }, toODataFragmentVisitor);\r\n return (frag && frag.length > 0) ? frag : undefined;\r\n }\r\n\r\n function toOrderByODataFragment(orderByClause: breeze.OrderByClause) {\r\n if (!orderByClause) return undefined;\r\n orderByClause.validate(entityType!);\r\n let strings = orderByClause.items.map(function (item) {\r\n return entityType!.clientPropertyPathToServer(item.propertyPath, \"/\") + (item.isDesc ? \" desc\" : \"\");\r\n });\r\n // should return something like CompanyName,Address/City desc\r\n return strings.join(',');\r\n }\r\n\r\n function toSelectODataFragment(selectClause?: breeze.SelectClause) {\r\n if (!selectClause) return undefined;\r\n selectClause.validate(entityType!);\r\n let frag = selectClause.propertyPaths.map(function (pp) {\r\n return entityType!.clientPropertyPathToServer(pp, \"/\");\r\n }).join(\",\");\r\n return frag;\r\n }\r\n\r\n function toExpandODataFragment(expandClause?: breeze.ExpandClause) {\r\n if (!expandClause) return undefined;\r\n // no validate on expand clauses currently.\r\n // expandClause.validate(entityType);\r\n let frag = expandClause.propertyPaths.map(function (pp) {\r\n return entityType!.clientPropertyPathToServer(pp, \"/\");\r\n }).join(\",\");\r\n return frag;\r\n }\r\n\r\n function toQueryOptionsString(queryOptions: breeze.QueryOptions) {\r\n let qoStrings: string[] = [];\r\n for (let qoName in queryOptions) {\r\n let qoValue = queryOptions[qoName];\r\n if (qoValue !== undefined) {\r\n if (qoValue instanceof Array) {\r\n qoValue.forEach(function (qov) {\r\n qoStrings.push(qoName + \"=\" + encodeURIComponent(qov));\r\n });\r\n } else {\r\n qoStrings.push(qoName + \"=\" + encodeURIComponent(qoValue));\r\n }\r\n }\r\n }\r\n\r\n if (qoStrings.length > 0) {\r\n return qoStrings.join(\"&\");\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n(breeze.Predicate.prototype as any).toODataFragment = function (context: breeze.VisitContext) {\r\n return this.visit(context, toODataFragmentVisitor);\r\n};\r\n\r\nlet toODataFragmentVisitor = {\r\n\r\n passthruPredicate: function () {\r\n return this.value;\r\n },\r\n\r\n unaryPredicate: function (this: breeze.UnaryPredicate, context: breeze.VisitContext) {\r\n let predVal = this.pred.visit(context);\r\n return odataOpFrom(this) + \" \" + \"(\" + predVal + \")\";\r\n },\r\n\r\n binaryPredicate: function (this: breeze.BinaryPredicate, context: breeze.VisitContext) {\r\n let expr1Val = this.expr1!.visit(context);\r\n let expr2Val = this.expr2!.visit(context);\r\n let prefix = (context as any).prefix;\r\n if (prefix) {\r\n expr1Val = prefix + \"/\" + expr1Val;\r\n }\r\n\r\n let odataOp = odataOpFrom(this);\r\n\r\n if (this.op.key === 'in') {\r\n let result = expr2Val.map(function (v: any) {\r\n return \"(\" + expr1Val + \" eq \" + v + \")\";\r\n }).join(\" or \");\r\n return result;\r\n } else if (this.op.isFunction) {\r\n if (odataOp === \"substringof\") {\r\n return odataOp + \"(\" + expr2Val + \",\" + expr1Val + \") eq true\";\r\n } else {\r\n return odataOp + \"(\" + expr1Val + \",\" + expr2Val + \") eq true\";\r\n }\r\n } else {\r\n return expr1Val + \" \" + odataOp + \" \" + expr2Val;\r\n }\r\n },\r\n\r\n andOrPredicate: function (this: breeze.AndOrPredicate, context: breeze.VisitContext) {\r\n let result = this.preds.map(function (pred) {\r\n let predVal = pred.visit(context);\r\n return \"(\" + predVal + \")\";\r\n }).join(\" \" + odataOpFrom(this) + \" \");\r\n return result;\r\n },\r\n\r\n anyAllPredicate: function (this: breeze.AnyAllPredicate, context: breeze.VisitContext) {\r\n let exprVal = this.expr.visit(context);\r\n if (!this.pred.op) { // added 21-Oct-2016 to fix breeze.js issue #172\r\n return exprVal + \"/\" + odataOpFrom(this) + \"()\";\r\n }\r\n let prefix = (context as any).prefix;\r\n if (prefix) {\r\n exprVal = prefix + \"/\" + exprVal;\r\n prefix = \"x\" + (parseInt(prefix.substring(1)) + 1);\r\n } else {\r\n prefix = \"x1\";\r\n }\r\n // need to create a new context because of 'prefix'\r\n let newContext = breeze.core.extend({}, context) as any;\r\n newContext.entityType = this.expr.dataType;\r\n newContext.prefix = prefix;\r\n let newPredVal = this.pred.visit(newContext);\r\n return exprVal + \"/\" + odataOpFrom(this) + \"(\" + prefix + \": \" + newPredVal + \")\";\r\n },\r\n\r\n litExpr: function () {\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(function (v: any) { return this.dataType.fmtOData(v); }, this);\r\n } else {\r\n return this.dataType.fmtOData(this.value);\r\n }\r\n },\r\n\r\n propExpr: function (this: breeze.PropExpr, context: breeze.ExpressionContext) {\r\n let entityType = context.entityType;\r\n // '/' is the OData path delimiter\r\n return entityType ? entityType.clientPropertyPathToServer(this.propertyPath, \"/\") : this.propertyPath;\r\n },\r\n\r\n fnExpr: function (this: breeze.FnExpr, context: breeze.ExpressionContext) {\r\n let exprVals = this.exprs.map(function (expr) {\r\n return expr.visit(context);\r\n });\r\n return this.fnName + \"(\" + exprVals.join(\",\") + \")\";\r\n }\r\n};\r\n\r\nlet _operatorMap = {\r\n 'contains': 'substringof'\r\n};\r\n\r\nfunction odataOpFrom(node: any) {\r\n let op = node.op.key;\r\n let odataOp = _operatorMap[op];\r\n return odataOp || op;\r\n}\r\n\r\nbreeze.config.registerAdapter(\"uriBuilder\", UriBuilderODataAdapter);\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-uri-builder-odata';\n"],"names":[],"mappings":"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"}
@@ -251,4 +251,4 @@ function getEntityGraphCore(root, expand) {
251
251
  */
252
252
 
253
253
  export { mixinEntityGraph };
254
- //# sourceMappingURL=breeze-client-mixin-get-entity-graph.js.map
254
+ //# sourceMappingURL=breeze-client-mixin-get-entity-graph.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breeze-client-mixin-get-entity-graph.mjs","sources":["../../src/mixin-get-entity-graph.ts","../../src/breeze-client-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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './mixin-get-entity-graph';\n"],"names":[],"mappings":"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"}
@@ -40,6 +40,15 @@ function saveChangesWithQueuing(entities, saveOptions) {
40
40
  }
41
41
  ///////// SaveQueuing /////////
42
42
  class SaveQueuing {
43
+ entityManager;
44
+ baseSaveChanges;
45
+ isSaving;
46
+ _isEnabled;
47
+ activeSaveDeferred;
48
+ nextSaveDeferred;
49
+ activeSaveMemo;
50
+ nextSaveMemo;
51
+ saveOptions;
43
52
  constructor(entityManager) {
44
53
  this.entityManager = entityManager;
45
54
  this.baseSaveChanges = entityManager.saveChanges;
@@ -160,6 +169,9 @@ class SaveQueuing {
160
169
  }
161
170
  /// for backward compat with older Promise implementation
162
171
  class Deferred {
172
+ resolve;
173
+ reject;
174
+ promise;
163
175
  constructor() {
164
176
  this.promise = new Promise(function (resolve, reject) {
165
177
  this.resolve = resolve;
@@ -170,6 +182,11 @@ class Deferred {
170
182
  ////////// QueuedSaveFailedError /////////
171
183
  // Error sub-class thrown when rejecting queued saves.
172
184
  class QueuedSaveFailedError extends Error {
185
+ name = "QueuedSaveFailedError";
186
+ innerError;
187
+ message;
188
+ failedSaveMemo;
189
+ nextSaveMemo;
173
190
  // Error sub-class thrown when rejecting queued saves.
174
191
  // `innerError` is the actual save error
175
192
  // `failedSaveMemo` is the saveMemo that prompted this save
@@ -177,7 +194,6 @@ class QueuedSaveFailedError extends Error {
177
194
  // You may try to recover using this info. Good luck with that.
178
195
  constructor(errObject, saveQueuing) {
179
196
  super();
180
- this.name = "QueuedSaveFailedError";
181
197
  this.innerError = errObject;
182
198
  this.message = "Queued save failed: " + errObject.message;
183
199
  this.failedSaveMemo = saveQueuing.activeSaveMemo;
@@ -191,6 +207,8 @@ class QueuedSaveFailedError extends Error {
191
207
  // queuedChanges: entities that are queued for save but
192
208
  // are not currently being saved
193
209
  class SaveMemo {
210
+ entityMemos;
211
+ queuedChanges;
194
212
  constructor() {
195
213
  this.entityMemos = {};
196
214
  this.queuedChanges = [];
@@ -263,6 +281,9 @@ class SaveMemo {
263
281
  // Information about an entity that is being saved
264
282
  // and which has been changed since that save started
265
283
  class EntityMemo {
284
+ entity;
285
+ pendingChanges;
286
+ isDeleted;
266
287
  constructor(entity) {
267
288
  this.entity = entity;
268
289
  this.pendingChanges = {};
@@ -343,4 +364,4 @@ class EntityMemo {
343
364
  */
344
365
 
345
366
  export { QueuedSaveFailedError, enableSaveQueuing };
346
- //# sourceMappingURL=breeze-client-mixin-save-queuing.js.map
367
+ //# sourceMappingURL=breeze-client-mixin-save-queuing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breeze-client-mixin-save-queuing.mjs","sources":["../../src/mixin-save-queuing.ts","../../src/breeze-client-mixin-save-queuing.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: 2.0.6 Steve Schmitt - convert to TypeScript, move to breeze-client repo, change enableSaveQueuing function\r\n * Version: 2.0.5 Ward Bell\r\n * --------------------------------------------------------------------------------\r\n * Adds \"Save Queuing\" capability to new EntityManagers\r\n *\r\n * Save Queuing automatically queues and defers an EntityManager.saveChanges call\r\n * when another save is in progress for that manager and the server has not yet responded.\r\n * This feature is helpful when your app needs to allow rapid, continuous changes\r\n * to entities that may be in the process of being saved.\r\n *\r\n * Without \"Save Queuing\", an EntityManager will throw an exception\r\n * when you call saveChanges for an entity which is currently being saved.\r\n *\r\n * !!! Use with caution !!!\r\n * It is usually better to disable user input while a save is in progress.\r\n * Save Queuing may be appropriate for simple \"auto-save\" scenarios\r\n * when the save latency is \"short\" (under a few seconds).\r\n *\r\n * Save Queuing is NOT intended for occassionally disconnected or offline scenarios.\r\n *\r\n * Save Queuing is experimental. It will not become a part of BreezeJS core\r\n * but might become an official Breeze plugin in future\r\n * although not necessarily in this form or with this API\r\n *\r\n * Must call EntityManager.enableSaveQueuing(true) to turn it on;\r\n * EntityManager.enableSaveQueuing(false) restores the manager's original\r\n * saveChanges method as it was at the time saveQueuing was first enabled.\r\n *\r\n * This module adds \"enableSaveQueuing\" to the EntityManager prototype.\r\n * Calling \"enableSaveQueuing(true)\" adds a new _saveQueuing object\r\n * to the manager instance.\r\n *\r\n * See DocCode:saveQueuingTests.js\r\n * https://github.com/Breeze/breeze.js.samples/blob/master/net/DocCode/DocCode/tests/saveQueuingTests.js\r\n *\r\n * LIMITATIONS\r\n * - Can't handle changes to the primary key (dangerous in any case)\r\n * - Assumes promises. Does not support the (deprecated) success and fail callbacks\r\n * - Does not queue saveOptions. The first one is re-used for all queued saves.\r\n * - Does not deal with export/import of entities while save is inflight\r\n * - Does not deal with rejectChanges while save is in flight\r\n * - Does not support parallel saves even when the change-sets are independent.\r\n * The native saveChanges allows such saves.\r\n * SaveQueuing does not; too complex and doesn't fit the primary scenario anyway.\r\n * - The resolved saveResult is the saveResult of the last completed save\r\n * - A queued save that might have succeeded if saved immediately\r\n * may fail because the server no longer accepts it later\r\n * - Prior to Breeze v.1.5.3, a queued save that might have succeeded\r\n * if saved immediately will fail if subsequently attempt to save\r\n * an invalid entity. Can detect and circumvent after v.1.5.3.\r\n *\r\n * All members of EntityManager._saveQueuing are internal;\r\n * touch them at your own risk.\r\n */\r\n//#endregion\r\nimport { Entity, EntityManager, KeyMapping, EntityState, SaveResult, breeze } from 'breeze-client';\r\n\r\n\r\nexport function enableSaveQueuing(em: EntityManager, enable: boolean = true) {\r\n let saveQueuing = em['_saveQueueing'] ||\r\n (em['_saveQueuing'] = new SaveQueuing(em));\r\n\r\n enable = (enable === undefined) ? true : enable;\r\n saveQueuing._isEnabled = enable;\r\n if (enable) {\r\n // delegate to save changes queuing\r\n em.saveChanges = saveChangesWithQueuing;\r\n } else {\r\n // revert to the native EntityManager.saveChanges\r\n em.saveChanges = em['_saveQueuing'].baseSaveChanges;\r\n }\r\n}\r\n\r\n/**\r\n * Replacement for EntityManager.saveChanges\r\n * This version queues saveChanges calls while a real save is in progress\r\n **/\r\nfunction saveChangesWithQueuing(entities: Entity[] | null, saveOptions: any) {\r\n try {\r\n // `this` is an EntityManager\r\n let saveQueuing = this._saveQueuing;\r\n if (saveQueuing.isSaving) {\r\n // save in progress; queue the save for later\r\n return saveQueuing.queueSaveChanges(entities);\r\n } else {\r\n // note that save is in progress; then save\r\n saveQueuing.isSaving = true;\r\n saveQueuing.saveOptions = saveOptions;\r\n return saveQueuing.saveChanges(entities, saveOptions);\r\n }\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n}\r\n\r\n///////// SaveQueuing /////////\r\nclass SaveQueuing {\r\n entityManager: EntityManager;\r\n baseSaveChanges: () => Promise<any>;\r\n isSaving: boolean;\r\n _isEnabled: boolean;\r\n activeSaveDeferred: Deferred<SaveResult>;\r\n nextSaveDeferred: Deferred<SaveResult>;\r\n activeSaveMemo: SaveMemo;\r\n nextSaveMemo: SaveMemo;\r\n saveOptions: any;\r\n\r\n constructor(entityManager: EntityManager) {\r\n this.entityManager = entityManager;\r\n this.baseSaveChanges = entityManager.saveChanges;\r\n this.isSaving = false;\r\n }\r\n\r\n isEnabled() {\r\n return this._isEnabled;\r\n }\r\n\r\n getSavedNothingResult(): SaveResult {\r\n return { entities: [] as Entity[], keyMappings: [] as KeyMapping[] };\r\n }\r\n\r\n queueSaveChanges(entities: Entity[]) {\r\n let self = this; // `this` is a SaveQueuing\r\n let em = self.entityManager;\r\n\r\n let changes = entities || em.getChanges();\r\n if (changes.length === 0) {\r\n return Promise.resolve(this.getSavedNothingResult());\r\n }\r\n\r\n let valError = em.saveChangesValidateOnClient(changes);\r\n if (valError) {\r\n return Promise.reject(valError);\r\n }\r\n\r\n let saveMemo = self.nextSaveMemo || (self.nextSaveMemo = new SaveMemo());\r\n memoizeChanges();\r\n let deferred = self.nextSaveDeferred || (self.nextSaveDeferred = new Deferred<SaveResult>());\r\n return deferred.promise;\r\n\r\n function memoizeChanges() {\r\n if (changes.length === 0) { return; }\r\n let queuedChanges = saveMemo.queuedChanges;\r\n changes.forEach(e => {\r\n if (!e.entityAspect.isBeingSaved && queuedChanges.indexOf(e) === -1) {\r\n queuedChanges.push(e);\r\n }\r\n });\r\n\r\n saveMemo.updateEntityMemos(changes);\r\n }\r\n }\r\n\r\n saveChanges(entities: Entity[], saveOptions: any) {\r\n let self = this; // `this` is a SaveQueuing\r\n let promise = self.baseSaveChanges.call(self.entityManager, entities, saveOptions || self.saveOptions)\r\n .then(function (saveResult: SaveResult) { return self.saveSucceeded(saveResult); })\r\n .then(null, function (error: Error) { console.log(error); return self.saveFailed(error); });\r\n rememberAddedOriginalValues(entities); // do it after ... so don't send OrigValues to the server\r\n return promise;\r\n\r\n function rememberAddedOriginalValues(entities: Entity[]) {\r\n // added entities normally don't have original values but these will now\r\n let added = entities ?\r\n entities.filter(function (e) { return e.entityAspect.entityState.isAdded(); }) :\r\n self.entityManager.getEntities(null, EntityState.Added);\r\n added.forEach(entity => {\r\n let props = entity.entityType.dataProperties;\r\n let originalValues = entity.entityAspect.originalValues;\r\n props.forEach(dp => {\r\n if (dp.isPartOfKey) { return; }\r\n originalValues[dp.name] = entity.getProperty(dp.name);\r\n });\r\n });\r\n }\r\n }\r\n\r\n\r\n saveSucceeded(saveResult: SaveResult) {\r\n let self = this; // `this` is a SaveQueueing\r\n let activeSaveDeferred = self.activeSaveDeferred;\r\n let nextSaveDeferred = self.nextSaveDeferred;\r\n let nextSaveMemo = self.nextSaveMemo;\r\n\r\n\r\n // prepare as if nothing queued or left to save\r\n self.isSaving = false;\r\n self.activeSaveDeferred = null;\r\n self.activeSaveMemo = null;\r\n self.nextSaveDeferred = null;\r\n self.nextSaveMemo = null;\r\n\r\n if (nextSaveMemo) {\r\n // a save was queued since last save returned\r\n nextSaveMemo.pkFixup(saveResult.keyMappings);\r\n nextSaveMemo.applyToSavedEntities(self.entityManager, saveResult.entities);\r\n // remove detached entities from queuedChanges\r\n let queuedChanges = nextSaveMemo.queuedChanges.filter(e => {\r\n return !e.entityAspect.entityState.isDetached();\r\n });\r\n\r\n if (queuedChanges.length > 0) {\r\n // save again\r\n self.isSaving = true;\r\n // remember the queued changes that triggered this save\r\n self.activeSaveDeferred = nextSaveDeferred;\r\n self.activeSaveMemo = nextSaveMemo;\r\n self.saveChanges(queuedChanges, this.saveOptions);\r\n } else if (nextSaveDeferred) {\r\n nextSaveDeferred.resolve(this.getSavedNothingResult());\r\n }\r\n }\r\n\r\n if (activeSaveDeferred) { activeSaveDeferred.resolve(saveResult); }\r\n return saveResult; // for the current promise chain\r\n }\r\n\r\n saveFailed(error: Error) {\r\n let self = this; // `this` is a SaveQueueing\r\n error = new QueuedSaveFailedError(error, self);\r\n\r\n let activeSaveDeferred = self.activeSaveDeferred;\r\n let nextSaveDeferred = self.nextSaveDeferred;\r\n\r\n self.isSaving = false;\r\n self.activeSaveDeferred = null;\r\n self.activeSaveMemo = null;\r\n self.nextSaveDeferred = null;\r\n self.nextSaveMemo = null;\r\n\r\n if (activeSaveDeferred) { activeSaveDeferred.reject(error); }\r\n if (nextSaveDeferred) { nextSaveDeferred.reject(error); }\r\n\r\n return Promise.reject(error); // let promise chain hear error\r\n }\r\n}\r\n\r\n/// for backward compat with older Promise implementation\r\nclass Deferred<T> {\r\n resolve: (val: any) => void;\r\n reject: (err: any) => void;\r\n promise: Promise<T>;\r\n constructor() {\r\n this.promise = new Promise<T>(function (resolve: (val: any) => void, reject: (err: any) => void) {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n }.bind(this));\r\n }\r\n}\r\n\r\n\r\n////////// QueuedSaveFailedError /////////\r\n// Error sub-class thrown when rejecting queued saves.\r\nexport class QueuedSaveFailedError extends Error {\r\n name = \"QueuedSaveFailedError\";\r\n innerError: Error;\r\n message: string;\r\n failedSaveMemo: SaveMemo;\r\n nextSaveMemo: SaveMemo;\r\n\r\n // Error sub-class thrown when rejecting queued saves.\r\n // `innerError` is the actual save error\r\n // `failedSaveMemo` is the saveMemo that prompted this save\r\n // `nextSaveMemo` holds queued changes accumulated since that save.\r\n // You may try to recover using this info. Good luck with that.\r\n constructor(errObject: Error, saveQueuing: any) {\r\n super();\r\n this.innerError = errObject;\r\n this.message = \"Queued save failed: \" + errObject.message;\r\n this.failedSaveMemo = saveQueuing.activeSaveMemo;\r\n this.nextSaveMemo = saveQueuing.nextSaveMemo;\r\n }\r\n}\r\n\r\n////////// SaveMemo ////////////////\r\n// SaveMemo is a record of changes for a queued save, consisting of:\r\n// entityMemos: info about entities that are being saved and\r\n// have been changed since the save started\r\n// queuedChanges: entities that are queued for save but\r\n// are not currently being saved\r\nclass SaveMemo {\r\n entityMemos: { [key: string]: EntityMemo };\r\n queuedChanges: Entity[];\r\n constructor() {\r\n this.entityMemos = {};\r\n this.queuedChanges = [];\r\n }\r\n\r\n applyToSavedEntities(entityManager: EntityManager, savedEntities: Entity[]) {\r\n let entityMemos = this.entityMemos; // `this` is a SaveMemo\r\n let queuedChanges = this.queuedChanges;\r\n let restorePublishing = this.disableManagerPublishing(entityManager);\r\n try {\r\n savedEntities.forEach(saved => {\r\n let key = this.makeEntityMemoKey(saved);\r\n let entityMemo = entityMemos[key];\r\n let resave = entityMemo && entityMemo.applyToSavedEntity(saved);\r\n if (resave) {\r\n queuedChanges.push(saved);\r\n }\r\n });\r\n } finally {\r\n restorePublishing();\r\n // D#2651 hasChanges will be wrong if changes made while save in progress\r\n let hasChanges = queuedChanges.length > 0;\r\n // Must use breeze internal method to properly set this flag true\r\n if (hasChanges) { entityManager._setHasChanges(true); }\r\n }\r\n }\r\n\r\n private disableManagerPublishing(manager: EntityManager) {\r\n let Event = breeze.Event;\r\n Event.enable('entityChanged', manager, false);\r\n Event.enable('hasChangesChanged', manager, false);\r\n\r\n return function restorePublishing() {\r\n Event.enable('entityChanged', manager, true);\r\n Event.enable('hasChangesChanged', manager, true);\r\n };\r\n }\r\n\r\n pkFixup(keyMappings: KeyMapping[]) {\r\n let entityMemos = this.entityMemos; // `this` is a SaveMemo\r\n keyMappings.forEach(km => {\r\n let type = km.entityTypeName;\r\n let tempKey = type + '|' + km.tempValue;\r\n if (entityMemos[tempKey]) {\r\n entityMemos[type + '|' + km.realValue] = entityMemos[tempKey];\r\n delete entityMemos[tempKey];\r\n }\r\n for (let memoKey in entityMemos) {\r\n entityMemos[memoKey].fkFixup(km);\r\n }\r\n });\r\n }\r\n\r\n makeEntityMemoKey(entity: Entity) {\r\n let entityKey = entity.entityAspect.getKey();\r\n return entityKey.entityType.name + '|' + entityKey.values;\r\n }\r\n\r\n updateEntityMemos(changes: Entity[]) {\r\n let entityMemos = this.entityMemos; // `this` is a SaveMemo\r\n changes.forEach(change => {\r\n // only update entityMemo for entity being save\r\n if (!change.entityAspect.isBeingSaved) { return; }\r\n\r\n let key = this.makeEntityMemoKey(change);\r\n let entityMemo = entityMemos[key] || (entityMemos[key] = new EntityMemo(change));\r\n entityMemo.update();\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n///////// EntityMemo Type ///////////////\r\n// Information about an entity that is being saved\r\n// and which has been changed since that save started\r\nclass EntityMemo {\r\n entity: Entity;\r\n pendingChanges: any;\r\n isDeleted: boolean;\r\n constructor(entity: Entity) {\r\n this.entity = entity;\r\n this.pendingChanges = {};\r\n }\r\n\r\n\r\n applyToSavedEntity(saved: Entity) {\r\n let entityMemo = this;\r\n let aspect = saved.entityAspect;\r\n if (aspect.entityState.isDetached()) {\r\n return false;\r\n } else if (entityMemo.isDeleted) {\r\n aspect.setDeleted();\r\n return true;\r\n }\r\n // treat entity with pending changes as modified\r\n let props = Object.keys(entityMemo.pendingChanges);\r\n if (props.length === 0) {\r\n return false;\r\n }\r\n let originalValues = aspect.originalValues;\r\n props.forEach(name => {\r\n originalValues[name] = saved.getProperty(name);\r\n saved.setProperty(name, entityMemo.pendingChanges[name]);\r\n });\r\n aspect.setModified();\r\n return true;\r\n }\r\n\r\n fkFixup(keyMapping: KeyMapping) {\r\n let entityMemo = this;\r\n let type = entityMemo.entity.entityType;\r\n let fkProps = type.foreignKeyProperties;\r\n fkProps.forEach(fkProp => {\r\n if (fkProp.parentType.name === keyMapping.entityTypeName &&\r\n entityMemo.pendingChanges[fkProp.name] === keyMapping.tempValue) {\r\n entityMemo.pendingChanges[fkProp.name] = keyMapping.realValue;\r\n }\r\n });\r\n }\r\n\r\n // update the entityMemo of changes to an entity being saved\r\n // so that we know how to save it again later\r\n update() {\r\n let entityMemo = this;\r\n let props;\r\n let entity = entityMemo.entity;\r\n let aspect = entity.entityAspect;\r\n let stateName = aspect.entityState.name;\r\n switch (stateName) {\r\n case 'Added':\r\n let originalValues = aspect.originalValues;\r\n props = entity.entityType.dataProperties;\r\n props.forEach(dp => {\r\n if (dp.isPartOfKey) { return; }\r\n let name = dp.name;\r\n let value = entity.getProperty(name);\r\n if (originalValues[name] !== value) {\r\n entityMemo.pendingChanges[name] = value;\r\n }\r\n });\r\n break;\r\n\r\n case 'Deleted':\r\n entityMemo.isDeleted = true;\r\n entityMemo.pendingChanges = {};\r\n break;\r\n\r\n case 'Modified':\r\n props = Object.keys(aspect.originalValues);\r\n props.forEach(name => {\r\n entityMemo.pendingChanges[name] = entity.getProperty(name);\r\n });\r\n break;\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './mixin-save-queuing';\n"],"names":[],"mappings":"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"}