breeze-client 2.1.1 → 2.1.3-mjs

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 (399) hide show
  1. package/LICENSE +1 -1
  2. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  6. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  8. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  10. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  12. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  13. package/esm2020/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +130 -0
  14. package/esm2020/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2020/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2020/adapter-ajax-fetch/adapter-ajax-fetch.mjs +132 -0
  17. package/esm2020/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2020/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2020/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +137 -0
  20. package/esm2020/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2020/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2020/adapter-ajax-jquery/adapter-ajax-jquery.mjs +103 -0
  23. package/esm2020/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2020/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2020/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2020/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/esm2020/adapter-data-service-odata/adapter-data-service-odata.mjs +456 -0
  28. package/esm2020/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2020/adapter-data-service-webapi/adapter-data-service-webapi.mjs +93 -0
  30. package/esm2020/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2020/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +268 -0
  32. package/esm2020/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2020/adapter-model-library-ko/adapter-model-library-ko.mjs +240 -0
  34. package/esm2020/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2020/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2020/adapter-uri-builder-json/adapter-uri-builder-json.mjs +36 -0
  37. package/esm2020/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2020/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2020/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +190 -0
  40. package/esm2020/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2020/breeze-client.mjs +5 -0
  42. package/esm2020/index.mjs +2 -0
  43. package/esm2020/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2020/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2020/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2020/mixin-save-queuing/mixin-save-queuing.mjs +400 -0
  47. package/esm2020/src/abstract-data-service-adapter.mjs +296 -0
  48. package/esm2020/src/array.mjs +4 -0
  49. package/esm2020/src/assert-param.mjs +312 -0
  50. package/esm2020/src/breeze.mjs +85 -0
  51. package/esm2020/src/complex-array.mjs +117 -0
  52. package/esm2020/src/config.mjs +223 -0
  53. package/esm2020/src/core.mjs +707 -0
  54. package/esm2020/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2020/src/data-service.mjs +203 -0
  56. package/esm2020/src/data-type.mjs +444 -0
  57. package/esm2020/src/default-property-interceptor.mjs +460 -0
  58. package/esm2020/src/entity-action.mjs +45 -0
  59. package/esm2020/src/entity-aspect.mjs +806 -0
  60. package/esm2020/src/entity-group.mjs +187 -0
  61. package/esm2020/src/entity-key.mjs +116 -0
  62. package/esm2020/src/entity-manager.mjs +2094 -0
  63. package/esm2020/src/entity-metadata.mjs +2109 -0
  64. package/esm2020/src/entity-query.mjs +996 -0
  65. package/esm2020/src/entity-state.mjs +99 -0
  66. package/esm2020/src/enum.mjs +141 -0
  67. package/esm2020/src/event.mjs +256 -0
  68. package/esm2020/src/interface-registry.mjs +41 -0
  69. package/esm2020/src/key-generator.mjs +108 -0
  70. package/esm2020/src/local-query-comparison-options.mjs +65 -0
  71. package/esm2020/src/mapping-context.mjs +405 -0
  72. package/esm2020/src/naming-convention.mjs +88 -0
  73. package/esm2020/src/observable-array.mjs +183 -0
  74. package/esm2020/src/predicate.mjs +1232 -0
  75. package/esm2020/src/primitive-array.mjs +85 -0
  76. package/esm2020/src/query-options.mjs +152 -0
  77. package/esm2020/src/relation-array.mjs +173 -0
  78. package/esm2020/src/save-options.mjs +41 -0
  79. package/esm2020/src/unattached-children-map.mjs +58 -0
  80. package/esm2020/src/validate.mjs +988 -0
  81. package/esm2020/src/validation-options.mjs +64 -0
  82. package/fesm2015/{breeze-client-adapter-ajax-angularjs.js → breeze-client-adapter-ajax-angularjs.mjs} +1 -1
  83. package/fesm2015/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/fesm2015/{breeze-client-adapter-ajax-fetch.js → breeze-client-adapter-ajax-fetch.mjs} +5 -3
  85. package/fesm2015/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/fesm2015/{breeze-client-adapter-ajax-httpclient.js → breeze-client-adapter-ajax-httpclient.mjs} +1 -1
  87. package/fesm2015/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/fesm2015/{breeze-client-adapter-ajax-jquery.js → breeze-client-adapter-ajax-jquery.mjs} +2 -2
  89. package/fesm2015/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/fesm2015/{breeze-client-adapter-ajax-post.js → breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2015/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/fesm2015/{breeze-client-adapter-data-service-odata.js → breeze-client-adapter-data-service-odata.mjs} +20 -22
  93. package/fesm2015/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/fesm2015/{breeze-client-adapter-data-service-webapi.js → breeze-client-adapter-data-service-webapi.mjs} +13 -13
  95. package/fesm2015/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/fesm2015/{breeze-client-adapter-model-library-backing-store.js → breeze-client-adapter-model-library-backing-store.mjs} +13 -13
  97. package/fesm2015/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/fesm2015/{breeze-client-adapter-model-library-ko.js → breeze-client-adapter-model-library-ko.mjs} +13 -13
  99. package/fesm2015/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/fesm2015/{breeze-client-adapter-uri-builder-json.js → breeze-client-adapter-uri-builder-json.mjs} +8 -8
  101. package/fesm2015/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/fesm2015/{breeze-client-adapter-uri-builder-odata.js → breeze-client-adapter-uri-builder-odata.mjs} +85 -86
  103. package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/fesm2015/{breeze-client-mixin-get-entity-graph.js → breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2015/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/fesm2015/{breeze-client-mixin-save-queuing.js → breeze-client-mixin-save-queuing.mjs} +3 -3
  107. package/fesm2015/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/fesm2015/{breeze-client.js → breeze-client.mjs} +417 -422
  109. package/fesm2015/breeze-client.mjs.map +1 -0
  110. package/{fesm5/breeze-client-adapter-ajax-angularjs.js → fesm2020/breeze-client-adapter-ajax-angularjs.mjs} +41 -42
  111. package/fesm2020/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  112. package/{fesm5/breeze-client-adapter-ajax-fetch.js → fesm2020/breeze-client-adapter-ajax-fetch.mjs} +44 -43
  113. package/fesm2020/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  114. package/{fesm5/breeze-client-adapter-ajax-httpclient.js → fesm2020/breeze-client-adapter-ajax-httpclient.mjs} +43 -44
  115. package/fesm2020/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  116. package/{fesm5/breeze-client-adapter-ajax-jquery.js → fesm2020/breeze-client-adapter-ajax-jquery.mjs} +18 -19
  117. package/fesm2020/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  118. package/{fesm5/breeze-client-adapter-ajax-post.js → fesm2020/breeze-client-adapter-ajax-post.mjs} +8 -11
  119. package/fesm2020/breeze-client-adapter-ajax-post.mjs.map +1 -0
  120. package/{fesm5/breeze-client-adapter-data-service-odata.js → fesm2020/breeze-client-adapter-data-service-odata.mjs} +126 -134
  121. package/fesm2020/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  122. package/{fesm5/breeze-client-adapter-data-service-webapi.js → fesm2020/breeze-client-adapter-data-service-webapi.mjs} +38 -42
  123. package/fesm2020/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  124. package/{fesm5/breeze-client-adapter-model-library-backing-store.js → fesm2020/breeze-client-adapter-model-library-backing-store.mjs} +63 -64
  125. package/fesm2020/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  126. package/{fesm5/breeze-client-adapter-model-library-ko.js → fesm2020/breeze-client-adapter-model-library-ko.mjs} +57 -58
  127. package/fesm2020/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  128. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs +91 -0
  129. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  130. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs +245 -0
  131. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  132. package/{fesm5/breeze-client-mixin-get-entity-graph.js → fesm2020/breeze-client-mixin-get-entity-graph.mjs} +45 -45
  133. package/fesm2020/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  134. package/{fesm5/breeze-client-mixin-save-queuing.js → fesm2020/breeze-client-mixin-save-queuing.mjs} +118 -128
  135. package/fesm2020/breeze-client-mixin-save-queuing.mjs.map +1 -0
  136. package/{fesm5/breeze-client.js → fesm2020/breeze-client.mjs} +3403 -3615
  137. package/fesm2020/breeze-client.mjs.map +1 -0
  138. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  139. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  140. package/mixin-save-queuing/mixin-save-queuing.d.ts +31 -1
  141. package/package.json +126 -12
  142. package/src/entity-metadata.d.ts +6 -4
  143. package/src/entity-query.d.ts +1 -1
  144. package/src/validate.d.ts +4 -3
  145. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  146. package/adapter-ajax-angularjs/package.json +0 -13
  147. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  148. package/adapter-ajax-fetch/package.json +0 -13
  149. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  150. package/adapter-ajax-httpclient/package.json +0 -17
  151. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  152. package/adapter-ajax-jquery/package.json +0 -13
  153. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  154. package/adapter-ajax-post/package.json +0 -13
  155. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  156. package/adapter-data-service-odata/package.json +0 -13
  157. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  158. package/adapter-data-service-webapi/package.json +0 -13
  159. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  160. package/adapter-model-library-backing-store/package.json +0 -13
  161. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  162. package/adapter-model-library-ko/package.json +0 -13
  163. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  164. package/adapter-uri-builder-json/package.json +0 -13
  165. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  166. package/adapter-uri-builder-odata/package.json +0 -13
  167. package/breeze-client.d.ts +0 -8
  168. package/breeze-client.metadata.json +0 -1
  169. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  170. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  171. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  172. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  173. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  174. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  175. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  176. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  177. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  178. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  179. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  180. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  181. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  182. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  183. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  184. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  185. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  186. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  187. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  188. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  189. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
  190. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  191. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  192. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  193. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
  194. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  195. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  196. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  197. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  198. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  199. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  200. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  201. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  202. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  203. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  204. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  205. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  206. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  207. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  208. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  209. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  210. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  211. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  212. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  213. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  214. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  215. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  216. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  217. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -578
  218. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  219. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  220. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  221. package/bundles/breeze-client.umd.js +0 -14094
  222. package/bundles/breeze-client.umd.js.map +0 -1
  223. package/bundles/breeze-client.umd.min.js +0 -16
  224. package/bundles/breeze-client.umd.min.js.map +0 -1
  225. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  226. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  227. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  228. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  229. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  230. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  231. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  232. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  233. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  234. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  235. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  236. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  237. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  238. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  239. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
  240. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  241. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
  242. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  243. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  244. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  245. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  246. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  247. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  248. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  249. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  250. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  251. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  252. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  253. package/esm2015/breeze-client.js +0 -9
  254. package/esm2015/index.js +0 -2
  255. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  256. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  257. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  258. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  259. package/esm2015/public_api.js +0 -2
  260. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  261. package/esm2015/src/array.js +0 -4
  262. package/esm2015/src/assert-param.js +0 -312
  263. package/esm2015/src/breeze.js +0 -85
  264. package/esm2015/src/complex-array.js +0 -119
  265. package/esm2015/src/config.js +0 -223
  266. package/esm2015/src/core.js +0 -706
  267. package/esm2015/src/csdl-metadata-parser.js +0 -385
  268. package/esm2015/src/data-service.js +0 -203
  269. package/esm2015/src/data-type.js +0 -444
  270. package/esm2015/src/default-property-interceptor.js +0 -459
  271. package/esm2015/src/entity-action.js +0 -45
  272. package/esm2015/src/entity-aspect.js +0 -806
  273. package/esm2015/src/entity-group.js +0 -187
  274. package/esm2015/src/entity-key.js +0 -116
  275. package/esm2015/src/entity-manager.js +0 -2094
  276. package/esm2015/src/entity-metadata.js +0 -2109
  277. package/esm2015/src/entity-query.js +0 -996
  278. package/esm2015/src/entity-state.js +0 -99
  279. package/esm2015/src/enum.js +0 -141
  280. package/esm2015/src/event.js +0 -256
  281. package/esm2015/src/interface-registry.js +0 -41
  282. package/esm2015/src/key-generator.js +0 -108
  283. package/esm2015/src/local-query-comparison-options.js +0 -65
  284. package/esm2015/src/mapping-context.js +0 -405
  285. package/esm2015/src/naming-convention.js +0 -88
  286. package/esm2015/src/observable-array.js +0 -185
  287. package/esm2015/src/predicate.js +0 -1235
  288. package/esm2015/src/primitive-array.js +0 -87
  289. package/esm2015/src/query-options.js +0 -152
  290. package/esm2015/src/relation-array.js +0 -175
  291. package/esm2015/src/save-options.js +0 -41
  292. package/esm2015/src/unattached-children-map.js +0 -58
  293. package/esm2015/src/validate.js +0 -991
  294. package/esm2015/src/validation-options.js +0 -64
  295. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  296. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  297. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  298. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  299. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  300. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  301. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  302. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  303. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  304. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  305. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  306. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  307. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  308. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  309. package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
  310. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  311. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
  312. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  313. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  314. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  315. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  316. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  317. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  318. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  319. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  320. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  321. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  322. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  323. package/esm5/breeze-client.js +0 -9
  324. package/esm5/index.js +0 -2
  325. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  326. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  327. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  328. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -411
  329. package/esm5/public_api.js +0 -2
  330. package/esm5/src/abstract-data-service-adapter.js +0 -302
  331. package/esm5/src/array.js +0 -4
  332. package/esm5/src/assert-param.js +0 -317
  333. package/esm5/src/breeze.js +0 -85
  334. package/esm5/src/complex-array.js +0 -119
  335. package/esm5/src/config.js +0 -228
  336. package/esm5/src/core.js +0 -714
  337. package/esm5/src/csdl-metadata-parser.js +0 -385
  338. package/esm5/src/data-service.js +0 -207
  339. package/esm5/src/data-type.js +0 -451
  340. package/esm5/src/default-property-interceptor.js +0 -459
  341. package/esm5/src/entity-action.js +0 -52
  342. package/esm5/src/entity-aspect.js +0 -812
  343. package/esm5/src/entity-group.js +0 -189
  344. package/esm5/src/entity-key.js +0 -118
  345. package/esm5/src/entity-manager.js +0 -2112
  346. package/esm5/src/entity-metadata.js +0 -2144
  347. package/esm5/src/entity-query.js +0 -1023
  348. package/esm5/src/entity-state.js +0 -106
  349. package/esm5/src/enum.js +0 -144
  350. package/esm5/src/event.js +0 -259
  351. package/esm5/src/interface-registry.js +0 -43
  352. package/esm5/src/key-generator.js +0 -111
  353. package/esm5/src/local-query-comparison-options.js +0 -67
  354. package/esm5/src/mapping-context.js +0 -407
  355. package/esm5/src/naming-convention.js +0 -90
  356. package/esm5/src/observable-array.js +0 -201
  357. package/esm5/src/predicate.js +0 -1300
  358. package/esm5/src/primitive-array.js +0 -87
  359. package/esm5/src/query-options.js +0 -167
  360. package/esm5/src/relation-array.js +0 -175
  361. package/esm5/src/save-options.js +0 -43
  362. package/esm5/src/unattached-children-map.js +0 -60
  363. package/esm5/src/validate.js +0 -996
  364. package/esm5/src/validation-options.js +0 -66
  365. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  366. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  367. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  368. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  369. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  370. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  371. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  372. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  373. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  374. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  375. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  376. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  377. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  378. package/fesm2015/breeze-client.js.map +0 -1
  379. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  380. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  381. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  382. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  383. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  384. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  385. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  386. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  387. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  388. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  389. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  390. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  391. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  392. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  393. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  394. package/fesm5/breeze-client.js.map +0 -1
  395. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  396. package/mixin-get-entity-graph/package.json +0 -13
  397. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  398. package/mixin-save-queuing/package.json +0 -13
  399. package/public_api.d.ts +0 -1
@@ -1,9 +1,8 @@
1
- import { __extends } from 'tslib';
2
1
  import { EntityState, breeze } from 'breeze-client';
3
2
 
4
- function enableSaveQueuing(em, enable) {
5
- if (enable === void 0) { enable = true; }
6
- var saveQueuing = em['_saveQueueing'] ||
3
+ //#region Copyright, Version, and Description
4
+ function enableSaveQueuing(em, enable = true) {
5
+ let saveQueuing = em['_saveQueueing'] ||
7
6
  (em['_saveQueuing'] = new SaveQueuing(em));
8
7
  enable = (enable === undefined) ? true : enable;
9
8
  saveQueuing._isEnabled = enable;
@@ -23,7 +22,7 @@ function enableSaveQueuing(em, enable) {
23
22
  function saveChangesWithQueuing(entities, saveOptions) {
24
23
  try {
25
24
  // `this` is an EntityManager
26
- var saveQueuing = this._saveQueuing;
25
+ let saveQueuing = this._saveQueuing;
27
26
  if (saveQueuing.isSaving) {
28
27
  // save in progress; queue the save for later
29
28
  return saveQueuing.queueSaveChanges(entities);
@@ -40,62 +39,62 @@ function saveChangesWithQueuing(entities, saveOptions) {
40
39
  }
41
40
  }
42
41
  ///////// SaveQueuing /////////
43
- var SaveQueuing = /** @class */ (function () {
44
- function SaveQueuing(entityManager) {
42
+ class SaveQueuing {
43
+ constructor(entityManager) {
45
44
  this.entityManager = entityManager;
46
45
  this.baseSaveChanges = entityManager.saveChanges;
47
46
  this.isSaving = false;
48
47
  }
49
- SaveQueuing.prototype.isEnabled = function () {
48
+ isEnabled() {
50
49
  return this._isEnabled;
51
- };
52
- SaveQueuing.prototype.getSavedNothingResult = function () {
50
+ }
51
+ getSavedNothingResult() {
53
52
  return { entities: [], keyMappings: [] };
54
- };
55
- SaveQueuing.prototype.queueSaveChanges = function (entities) {
56
- var self = this; // `this` is a SaveQueuing
57
- var em = self.entityManager;
58
- var changes = entities || em.getChanges();
53
+ }
54
+ queueSaveChanges(entities) {
55
+ let self = this; // `this` is a SaveQueuing
56
+ let em = self.entityManager;
57
+ let changes = entities || em.getChanges();
59
58
  if (changes.length === 0) {
60
59
  return Promise.resolve(this.getSavedNothingResult());
61
60
  }
62
- var valError = em.saveChangesValidateOnClient(changes);
61
+ let valError = em.saveChangesValidateOnClient(changes);
63
62
  if (valError) {
64
63
  return Promise.reject(valError);
65
64
  }
66
- var saveMemo = self.nextSaveMemo || (self.nextSaveMemo = new SaveMemo());
65
+ let saveMemo = self.nextSaveMemo || (self.nextSaveMemo = new SaveMemo());
67
66
  memoizeChanges();
68
- var deferred = self.nextSaveDeferred || (self.nextSaveDeferred = new Deferred());
67
+ let deferred = self.nextSaveDeferred || (self.nextSaveDeferred = new Deferred());
69
68
  return deferred.promise;
70
69
  function memoizeChanges() {
71
70
  if (changes.length === 0) {
72
71
  return;
73
72
  }
74
- var queuedChanges = saveMemo.queuedChanges;
75
- changes.forEach(function (e) {
73
+ let queuedChanges = saveMemo.queuedChanges;
74
+ changes.forEach(e => {
76
75
  if (!e.entityAspect.isBeingSaved && queuedChanges.indexOf(e) === -1) {
77
76
  queuedChanges.push(e);
78
77
  }
79
78
  });
80
79
  saveMemo.updateEntityMemos(changes);
81
80
  }
82
- };
83
- SaveQueuing.prototype.saveChanges = function (entities, saveOptions) {
84
- var self = this; // `this` is a SaveQueuing
85
- var promise = self.baseSaveChanges.call(self.entityManager, entities, saveOptions || self.saveOptions)
81
+ }
82
+ saveChanges(entities, saveOptions) {
83
+ let self = this; // `this` is a SaveQueuing
84
+ let promise = self.baseSaveChanges.call(self.entityManager, entities, saveOptions || self.saveOptions)
86
85
  .then(function (saveResult) { return self.saveSucceeded(saveResult); })
87
86
  .then(null, function (error) { console.log(error); return self.saveFailed(error); });
88
87
  rememberAddedOriginalValues(entities); // do it after ... so don't send OrigValues to the server
89
88
  return promise;
90
89
  function rememberAddedOriginalValues(entities) {
91
90
  // added entities normally don't have original values but these will now
92
- var added = entities ?
91
+ let added = entities ?
93
92
  entities.filter(function (e) { return e.entityAspect.entityState.isAdded(); }) :
94
93
  self.entityManager.getEntities(null, EntityState.Added);
95
- added.forEach(function (entity) {
96
- var props = entity.entityType.dataProperties;
97
- var originalValues = entity.entityAspect.originalValues;
98
- props.forEach(function (dp) {
94
+ added.forEach(entity => {
95
+ let props = entity.entityType.dataProperties;
96
+ let originalValues = entity.entityAspect.originalValues;
97
+ props.forEach(dp => {
99
98
  if (dp.isPartOfKey) {
100
99
  return;
101
100
  }
@@ -103,12 +102,12 @@ var SaveQueuing = /** @class */ (function () {
103
102
  });
104
103
  });
105
104
  }
106
- };
107
- SaveQueuing.prototype.saveSucceeded = function (saveResult) {
108
- var self = this; // `this` is a SaveQueueing
109
- var activeSaveDeferred = self.activeSaveDeferred;
110
- var nextSaveDeferred = self.nextSaveDeferred;
111
- var nextSaveMemo = self.nextSaveMemo;
105
+ }
106
+ saveSucceeded(saveResult) {
107
+ let self = this; // `this` is a SaveQueueing
108
+ let activeSaveDeferred = self.activeSaveDeferred;
109
+ let nextSaveDeferred = self.nextSaveDeferred;
110
+ let nextSaveMemo = self.nextSaveMemo;
112
111
  // prepare as if nothing queued or left to save
113
112
  self.isSaving = false;
114
113
  self.activeSaveDeferred = null;
@@ -120,7 +119,7 @@ var SaveQueuing = /** @class */ (function () {
120
119
  nextSaveMemo.pkFixup(saveResult.keyMappings);
121
120
  nextSaveMemo.applyToSavedEntities(self.entityManager, saveResult.entities);
122
121
  // remove detached entities from queuedChanges
123
- var queuedChanges = nextSaveMemo.queuedChanges.filter(function (e) {
122
+ let queuedChanges = nextSaveMemo.queuedChanges.filter(e => {
124
123
  return !e.entityAspect.entityState.isDetached();
125
124
  });
126
125
  if (queuedChanges.length > 0) {
@@ -139,12 +138,12 @@ var SaveQueuing = /** @class */ (function () {
139
138
  activeSaveDeferred.resolve(saveResult);
140
139
  }
141
140
  return saveResult; // for the current promise chain
142
- };
143
- SaveQueuing.prototype.saveFailed = function (error) {
144
- var self = this; // `this` is a SaveQueueing
141
+ }
142
+ saveFailed(error) {
143
+ let self = this; // `this` is a SaveQueueing
145
144
  error = new QueuedSaveFailedError(error, self);
146
- var activeSaveDeferred = self.activeSaveDeferred;
147
- var nextSaveDeferred = self.nextSaveDeferred;
145
+ let activeSaveDeferred = self.activeSaveDeferred;
146
+ let nextSaveDeferred = self.nextSaveDeferred;
148
147
  self.isSaving = false;
149
148
  self.activeSaveDeferred = null;
150
149
  self.activeSaveMemo = null;
@@ -157,60 +156,54 @@ var SaveQueuing = /** @class */ (function () {
157
156
  nextSaveDeferred.reject(error);
158
157
  }
159
158
  return Promise.reject(error); // let promise chain hear error
160
- };
161
- return SaveQueuing;
162
- }());
159
+ }
160
+ }
163
161
  /// for backward compat with older Promise implementation
164
- var Deferred = /** @class */ (function () {
165
- function Deferred() {
162
+ class Deferred {
163
+ constructor() {
166
164
  this.promise = new Promise(function (resolve, reject) {
167
165
  this.resolve = resolve;
168
166
  this.reject = reject;
169
167
  }.bind(this));
170
168
  }
171
- return Deferred;
172
- }());
169
+ }
173
170
  ////////// QueuedSaveFailedError /////////
174
171
  // Error sub-class thrown when rejecting queued saves.
175
- var QueuedSaveFailedError = /** @class */ (function (_super) {
176
- __extends(QueuedSaveFailedError, _super);
172
+ class QueuedSaveFailedError extends Error {
177
173
  // Error sub-class thrown when rejecting queued saves.
178
174
  // `innerError` is the actual save error
179
175
  // `failedSaveMemo` is the saveMemo that prompted this save
180
176
  // `nextSaveMemo` holds queued changes accumulated since that save.
181
177
  // You may try to recover using this info. Good luck with that.
182
- function QueuedSaveFailedError(errObject, saveQueuing) {
183
- var _this = _super.call(this) || this;
184
- _this.name = "QueuedSaveFailedError";
185
- _this.innerError = errObject;
186
- _this.message = "Queued save failed: " + errObject.message;
187
- _this.failedSaveMemo = saveQueuing.activeSaveMemo;
188
- _this.nextSaveMemo = saveQueuing.nextSaveMemo;
189
- return _this;
178
+ constructor(errObject, saveQueuing) {
179
+ super();
180
+ this.name = "QueuedSaveFailedError";
181
+ this.innerError = errObject;
182
+ this.message = "Queued save failed: " + errObject.message;
183
+ this.failedSaveMemo = saveQueuing.activeSaveMemo;
184
+ this.nextSaveMemo = saveQueuing.nextSaveMemo;
190
185
  }
191
- return QueuedSaveFailedError;
192
- }(Error));
186
+ }
193
187
  ////////// SaveMemo ////////////////
194
188
  // SaveMemo is a record of changes for a queued save, consisting of:
195
189
  // entityMemos: info about entities that are being saved and
196
190
  // have been changed since the save started
197
191
  // queuedChanges: entities that are queued for save but
198
192
  // are not currently being saved
199
- var SaveMemo = /** @class */ (function () {
200
- function SaveMemo() {
193
+ class SaveMemo {
194
+ constructor() {
201
195
  this.entityMemos = {};
202
196
  this.queuedChanges = [];
203
197
  }
204
- SaveMemo.prototype.applyToSavedEntities = function (entityManager, savedEntities) {
205
- var _this = this;
206
- var entityMemos = this.entityMemos; // `this` is a SaveMemo
207
- var queuedChanges = this.queuedChanges;
208
- var restorePublishing = this.disableManagerPublishing(entityManager);
198
+ applyToSavedEntities(entityManager, savedEntities) {
199
+ let entityMemos = this.entityMemos; // `this` is a SaveMemo
200
+ let queuedChanges = this.queuedChanges;
201
+ let restorePublishing = this.disableManagerPublishing(entityManager);
209
202
  try {
210
- savedEntities.forEach(function (saved) {
211
- var key = _this.makeEntityMemoKey(saved);
212
- var entityMemo = entityMemos[key];
213
- var resave = entityMemo && entityMemo.applyToSavedEntity(saved);
203
+ savedEntities.forEach(saved => {
204
+ let key = this.makeEntityMemoKey(saved);
205
+ let entityMemo = entityMemos[key];
206
+ let resave = entityMemo && entityMemo.applyToSavedEntity(saved);
214
207
  if (resave) {
215
208
  queuedChanges.push(saved);
216
209
  }
@@ -219,66 +212,64 @@ var SaveMemo = /** @class */ (function () {
219
212
  finally {
220
213
  restorePublishing();
221
214
  // D#2651 hasChanges will be wrong if changes made while save in progress
222
- var hasChanges = queuedChanges.length > 0;
215
+ let hasChanges = queuedChanges.length > 0;
223
216
  // Must use breeze internal method to properly set this flag true
224
217
  if (hasChanges) {
225
218
  entityManager._setHasChanges(true);
226
219
  }
227
220
  }
228
- };
229
- SaveMemo.prototype.disableManagerPublishing = function (manager) {
230
- var Event = breeze.Event;
221
+ }
222
+ disableManagerPublishing(manager) {
223
+ let Event = breeze.Event;
231
224
  Event.enable('entityChanged', manager, false);
232
225
  Event.enable('hasChangesChanged', manager, false);
233
226
  return function restorePublishing() {
234
227
  Event.enable('entityChanged', manager, true);
235
228
  Event.enable('hasChangesChanged', manager, true);
236
229
  };
237
- };
238
- SaveMemo.prototype.pkFixup = function (keyMappings) {
239
- var entityMemos = this.entityMemos; // `this` is a SaveMemo
240
- keyMappings.forEach(function (km) {
241
- var type = km.entityTypeName;
242
- var tempKey = type + '|' + km.tempValue;
230
+ }
231
+ pkFixup(keyMappings) {
232
+ let entityMemos = this.entityMemos; // `this` is a SaveMemo
233
+ keyMappings.forEach(km => {
234
+ let type = km.entityTypeName;
235
+ let tempKey = type + '|' + km.tempValue;
243
236
  if (entityMemos[tempKey]) {
244
237
  entityMemos[type + '|' + km.realValue] = entityMemos[tempKey];
245
238
  delete entityMemos[tempKey];
246
239
  }
247
- for (var memoKey in entityMemos) {
240
+ for (let memoKey in entityMemos) {
248
241
  entityMemos[memoKey].fkFixup(km);
249
242
  }
250
243
  });
251
- };
252
- SaveMemo.prototype.makeEntityMemoKey = function (entity) {
253
- var entityKey = entity.entityAspect.getKey();
244
+ }
245
+ makeEntityMemoKey(entity) {
246
+ let entityKey = entity.entityAspect.getKey();
254
247
  return entityKey.entityType.name + '|' + entityKey.values;
255
- };
256
- SaveMemo.prototype.updateEntityMemos = function (changes) {
257
- var _this = this;
258
- var entityMemos = this.entityMemos; // `this` is a SaveMemo
259
- changes.forEach(function (change) {
248
+ }
249
+ updateEntityMemos(changes) {
250
+ let entityMemos = this.entityMemos; // `this` is a SaveMemo
251
+ changes.forEach(change => {
260
252
  // only update entityMemo for entity being save
261
253
  if (!change.entityAspect.isBeingSaved) {
262
254
  return;
263
255
  }
264
- var key = _this.makeEntityMemoKey(change);
265
- var entityMemo = entityMemos[key] || (entityMemos[key] = new EntityMemo(change));
266
- entityMemo.update(change);
256
+ let key = this.makeEntityMemoKey(change);
257
+ let entityMemo = entityMemos[key] || (entityMemos[key] = new EntityMemo(change));
258
+ entityMemo.update();
267
259
  });
268
- };
269
- return SaveMemo;
270
- }());
260
+ }
261
+ }
271
262
  ///////// EntityMemo Type ///////////////
272
263
  // Information about an entity that is being saved
273
264
  // and which has been changed since that save started
274
- var EntityMemo = /** @class */ (function () {
275
- function EntityMemo(entity) {
265
+ class EntityMemo {
266
+ constructor(entity) {
276
267
  this.entity = entity;
277
268
  this.pendingChanges = {};
278
269
  }
279
- EntityMemo.prototype.applyToSavedEntity = function (saved) {
280
- var entityMemo = this;
281
- var aspect = saved.entityAspect;
270
+ applyToSavedEntity(saved) {
271
+ let entityMemo = this;
272
+ let aspect = saved.entityAspect;
282
273
  if (aspect.entityState.isDetached()) {
283
274
  return false;
284
275
  }
@@ -287,48 +278,48 @@ var EntityMemo = /** @class */ (function () {
287
278
  return true;
288
279
  }
289
280
  // treat entity with pending changes as modified
290
- var props = Object.keys(entityMemo.pendingChanges);
281
+ let props = Object.keys(entityMemo.pendingChanges);
291
282
  if (props.length === 0) {
292
283
  return false;
293
284
  }
294
- var originalValues = aspect.originalValues;
295
- props.forEach(function (name) {
285
+ let originalValues = aspect.originalValues;
286
+ props.forEach(name => {
296
287
  originalValues[name] = saved.getProperty(name);
297
288
  saved.setProperty(name, entityMemo.pendingChanges[name]);
298
289
  });
299
290
  aspect.setModified();
300
291
  return true;
301
- };
302
- EntityMemo.prototype.fkFixup = function (keyMapping) {
303
- var entityMemo = this;
304
- var type = entityMemo.entity.entityType;
305
- var fkProps = type.foreignKeyProperties;
306
- fkProps.forEach(function (fkProp) {
292
+ }
293
+ fkFixup(keyMapping) {
294
+ let entityMemo = this;
295
+ let type = entityMemo.entity.entityType;
296
+ let fkProps = type.foreignKeyProperties;
297
+ fkProps.forEach(fkProp => {
307
298
  if (fkProp.parentType.name === keyMapping.entityTypeName &&
308
299
  entityMemo.pendingChanges[fkProp.name] === keyMapping.tempValue) {
309
300
  entityMemo.pendingChanges[fkProp.name] = keyMapping.realValue;
310
301
  }
311
302
  });
312
- };
303
+ }
313
304
  // update the entityMemo of changes to an entity being saved
314
305
  // so that we know how to save it again later
315
- EntityMemo.prototype.update = function () {
316
- var entityMemo = this;
317
- var props;
318
- var entity = entityMemo.entity;
319
- var aspect = entity.entityAspect;
320
- var stateName = aspect.entityState.name;
306
+ update() {
307
+ let entityMemo = this;
308
+ let props;
309
+ let entity = entityMemo.entity;
310
+ let aspect = entity.entityAspect;
311
+ let stateName = aspect.entityState.name;
321
312
  switch (stateName) {
322
313
  case 'Added':
323
- var originalValues_1 = aspect.originalValues;
314
+ let originalValues = aspect.originalValues;
324
315
  props = entity.entityType.dataProperties;
325
- props.forEach(function (dp) {
316
+ props.forEach(dp => {
326
317
  if (dp.isPartOfKey) {
327
318
  return;
328
319
  }
329
- var name = dp.name;
330
- var value = entity.getProperty(name);
331
- if (originalValues_1[name] !== value) {
320
+ let name = dp.name;
321
+ let value = entity.getProperty(name);
322
+ if (originalValues[name] !== value) {
332
323
  entityMemo.pendingChanges[name] = value;
333
324
  }
334
325
  });
@@ -339,18 +330,17 @@ var EntityMemo = /** @class */ (function () {
339
330
  break;
340
331
  case 'Modified':
341
332
  props = Object.keys(aspect.originalValues);
342
- props.forEach(function (name) {
333
+ props.forEach(name => {
343
334
  entityMemo.pendingChanges[name] = entity.getProperty(name);
344
335
  });
345
336
  break;
346
337
  }
347
- };
348
- return EntityMemo;
349
- }());
338
+ }
339
+ }
350
340
 
351
341
  /**
352
342
  * Generated bundle index. Do not edit.
353
343
  */
354
344
 
355
- export { enableSaveQueuing };
356
- //# sourceMappingURL=breeze-client-mixin-save-queuing.js.map
345
+ export { QueuedSaveFailedError, enableSaveQueuing };
346
+ //# 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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"}