breeze-client 2.1.6-mjs → 2.1.7

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 (378) hide show
  1. package/LICENSE +1 -1
  2. package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
  3. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
  4. package/adapter-ajax-angularjs/package.json +13 -0
  5. package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
  6. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
  7. package/adapter-ajax-fetch/package.json +13 -0
  8. package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
  9. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
  10. package/adapter-ajax-httpclient/package.json +13 -0
  11. package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
  12. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
  13. package/adapter-ajax-jquery/package.json +13 -0
  14. package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
  15. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
  16. package/adapter-ajax-post/package.json +13 -0
  17. package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
  18. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
  19. package/adapter-data-service-odata/package.json +13 -0
  20. package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
  21. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
  22. package/adapter-data-service-webapi/package.json +13 -0
  23. package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
  24. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
  25. package/adapter-model-library-backing-store/package.json +13 -0
  26. package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
  27. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
  28. package/adapter-model-library-ko/package.json +13 -0
  29. package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
  30. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
  31. package/adapter-uri-builder-json/package.json +13 -0
  32. package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
  33. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
  34. package/adapter-uri-builder-odata/package.json +13 -0
  35. package/breeze-client.d.ts +8 -0
  36. package/breeze-client.metadata.json +1 -0
  37. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
  38. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
  39. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
  40. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
  41. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
  42. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
  43. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
  44. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
  45. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
  46. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
  47. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
  48. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
  49. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
  50. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
  51. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
  52. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
  53. package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
  54. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
  55. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
  56. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
  57. package/bundles/breeze-client-adapter-data-service-odata.umd.js +747 -0
  58. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
  59. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
  60. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
  61. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +333 -0
  62. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
  63. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
  64. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
  65. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
  66. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
  67. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
  68. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
  69. package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
  70. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
  71. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
  72. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
  73. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
  74. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
  75. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
  76. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
  77. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
  78. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
  79. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
  80. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
  81. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
  82. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
  83. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
  84. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
  85. package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
  86. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
  87. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
  88. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
  89. package/bundles/breeze-client.umd.js +14231 -0
  90. package/bundles/breeze-client.umd.js.map +1 -0
  91. package/bundles/breeze-client.umd.min.js +16 -0
  92. package/bundles/breeze-client.umd.min.js.map +1 -0
  93. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +130 -0
  94. package/esm2015/adapter-ajax-angularjs/adapter-core.js +49 -0
  95. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  96. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +130 -0
  97. package/esm2015/adapter-ajax-fetch/adapter-core.js +49 -0
  98. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  99. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +137 -0
  100. package/esm2015/adapter-ajax-httpclient/adapter-core.js +49 -0
  101. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  102. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +103 -0
  103. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  104. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +77 -0
  105. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  106. package/esm2015/adapter-data-service-odata/adapter-core.js +49 -0
  107. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +463 -0
  108. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  109. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +100 -0
  110. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  111. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +268 -0
  112. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  113. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +240 -0
  114. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  115. package/esm2015/adapter-uri-builder-json/adapter-core.js +49 -0
  116. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +36 -0
  117. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  118. package/esm2015/adapter-uri-builder-odata/adapter-core.js +49 -0
  119. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +192 -0
  120. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  121. package/esm2015/breeze-client.js +9 -0
  122. package/esm2015/index.js +2 -0
  123. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  124. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  125. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  126. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +400 -0
  127. package/esm2015/src/abstract-data-service-adapter.js +327 -0
  128. package/esm2015/src/array.js +4 -0
  129. package/esm2015/src/assert-param.js +312 -0
  130. package/esm2015/src/breeze.js +85 -0
  131. package/esm2015/src/complex-array.js +119 -0
  132. package/esm2015/src/config.js +223 -0
  133. package/esm2015/src/core.js +714 -0
  134. package/esm2015/src/csdl-metadata-parser.js +385 -0
  135. package/esm2015/src/data-service.js +203 -0
  136. package/esm2015/src/data-type.js +503 -0
  137. package/esm2015/src/default-property-interceptor.js +460 -0
  138. package/{esm2022/src/entity-action.mjs → esm2015/src/entity-action.js} +25 -25
  139. package/esm2015/src/entity-aspect.js +804 -0
  140. package/esm2015/src/entity-group.js +187 -0
  141. package/esm2015/src/entity-key.js +116 -0
  142. package/esm2015/src/entity-manager.js +2094 -0
  143. package/esm2015/src/entity-metadata.js +2109 -0
  144. package/esm2015/src/entity-query.js +1015 -0
  145. package/esm2015/src/entity-state.js +107 -0
  146. package/esm2015/src/enum.js +141 -0
  147. package/esm2015/src/event.js +256 -0
  148. package/esm2015/src/interface-registry.js +41 -0
  149. package/esm2015/src/key-generator.js +108 -0
  150. package/esm2015/src/local-query-comparison-options.js +65 -0
  151. package/esm2015/src/mapping-context.js +411 -0
  152. package/esm2015/src/naming-convention.js +88 -0
  153. package/esm2015/src/observable-array.js +185 -0
  154. package/esm2015/src/predicate.js +1242 -0
  155. package/esm2015/src/primitive-array.js +87 -0
  156. package/esm2015/src/query-options.js +152 -0
  157. package/esm2015/src/relation-array.js +175 -0
  158. package/esm2015/src/save-options.js +41 -0
  159. package/esm2015/src/unattached-children-map.js +58 -0
  160. package/esm2015/src/validate.js +991 -0
  161. package/esm2015/src/validation-options.js +64 -0
  162. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +132 -0
  163. package/esm5/adapter-ajax-angularjs/adapter-core.js +49 -0
  164. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  165. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +132 -0
  166. package/esm5/adapter-ajax-fetch/adapter-core.js +49 -0
  167. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  168. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +139 -0
  169. package/esm5/adapter-ajax-httpclient/adapter-core.js +49 -0
  170. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  171. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +105 -0
  172. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  173. package/esm5/adapter-ajax-post/adapter-ajax-post.js +81 -0
  174. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  175. package/esm5/adapter-data-service-odata/adapter-core.js +49 -0
  176. package/{esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs → esm5/adapter-data-service-odata/adapter-data-service-odata.js} +147 -138
  177. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  178. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +105 -0
  179. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  180. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +270 -0
  181. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  182. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +242 -0
  183. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  184. package/esm5/adapter-uri-builder-json/adapter-core.js +49 -0
  185. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +38 -0
  186. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  187. package/esm5/adapter-uri-builder-odata/adapter-core.js +49 -0
  188. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +197 -0
  189. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  190. package/esm5/breeze-client.js +9 -0
  191. package/esm5/index.js +2 -0
  192. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  193. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  194. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  195. package/esm5/mixin-save-queuing/mixin-save-queuing.js +412 -0
  196. package/esm5/src/abstract-data-service-adapter.js +333 -0
  197. package/esm5/src/array.js +4 -0
  198. package/esm5/src/assert-param.js +317 -0
  199. package/esm5/src/breeze.js +85 -0
  200. package/esm5/src/complex-array.js +119 -0
  201. package/esm5/src/config.js +228 -0
  202. package/esm5/src/core.js +722 -0
  203. package/esm5/src/csdl-metadata-parser.js +385 -0
  204. package/esm5/src/data-service.js +207 -0
  205. package/esm5/src/data-type.js +510 -0
  206. package/esm5/src/default-property-interceptor.js +460 -0
  207. package/esm5/src/entity-action.js +52 -0
  208. package/esm5/src/entity-aspect.js +810 -0
  209. package/esm5/src/entity-group.js +189 -0
  210. package/esm5/src/entity-key.js +118 -0
  211. package/esm5/src/entity-manager.js +2112 -0
  212. package/esm5/src/entity-metadata.js +2144 -0
  213. package/esm5/src/entity-query.js +1042 -0
  214. package/esm5/src/entity-state.js +114 -0
  215. package/esm5/src/enum.js +144 -0
  216. package/esm5/src/event.js +259 -0
  217. package/esm5/src/interface-registry.js +43 -0
  218. package/esm5/src/key-generator.js +111 -0
  219. package/esm5/src/local-query-comparison-options.js +67 -0
  220. package/esm5/src/mapping-context.js +413 -0
  221. package/{esm2022/src/naming-convention.mjs → esm5/src/naming-convention.js} +29 -35
  222. package/esm5/src/observable-array.js +201 -0
  223. package/esm5/src/predicate.js +1307 -0
  224. package/esm5/src/primitive-array.js +87 -0
  225. package/esm5/src/query-options.js +167 -0
  226. package/esm5/src/relation-array.js +175 -0
  227. package/esm5/src/save-options.js +43 -0
  228. package/esm5/src/unattached-children-map.js +60 -0
  229. package/{esm2022/src/validate.mjs → esm5/src/validate.js} +110 -116
  230. package/esm5/src/validation-options.js +66 -0
  231. package/{fesm2022/breeze-client-adapter-ajax-angularjs.mjs → fesm2015/breeze-client-adapter-ajax-angularjs.js} +1 -6
  232. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  233. package/{fesm2022/breeze-client-adapter-ajax-fetch.mjs → fesm2015/breeze-client-adapter-ajax-fetch.js} +4 -9
  234. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
  235. package/{fesm2022/breeze-client-adapter-ajax-httpclient.mjs → fesm2015/breeze-client-adapter-ajax-httpclient.js} +4 -6
  236. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  237. package/{fesm2022/breeze-client-adapter-ajax-jquery.mjs → fesm2015/breeze-client-adapter-ajax-jquery.js} +2 -6
  238. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
  239. package/{fesm2022/breeze-client-adapter-ajax-post.mjs → fesm2015/breeze-client-adapter-ajax-post.js} +1 -1
  240. package/fesm2015/breeze-client-adapter-ajax-post.js.map +1 -0
  241. package/{fesm2022/breeze-client-adapter-data-service-odata.mjs → fesm2015/breeze-client-adapter-data-service-odata.js} +69 -68
  242. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
  243. package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → fesm2015/breeze-client-adapter-data-service-webapi.js} +30 -30
  244. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
  245. package/{fesm2022/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -14
  246. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  247. package/{fesm2022/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -14
  248. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
  249. package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -9
  250. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
  251. package/{fesm2022/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -86
  252. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  253. package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → fesm2015/breeze-client-mixin-get-entity-graph.js} +1 -1
  254. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
  255. package/{fesm2022/breeze-client-mixin-save-queuing.mjs → fesm2015/breeze-client-mixin-save-queuing.js} +2 -23
  256. package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
  257. package/{fesm2022/breeze-client.mjs → fesm2015/breeze-client.js} +1624 -2073
  258. package/fesm2015/breeze-client.js.map +1 -0
  259. package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
  260. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  261. package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
  262. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
  263. package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
  264. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  265. package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
  266. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
  267. package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
  268. package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
  269. package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
  270. package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
  271. package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
  272. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
  273. package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
  274. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  275. package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
  276. package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
  277. package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
  278. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
  279. package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
  280. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  281. package/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
  282. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
  283. package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
  284. package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
  285. package/fesm5/breeze-client.js +13953 -0
  286. package/fesm5/breeze-client.js.map +1 -0
  287. package/mixin-get-entity-graph/{index.d.ts → breeze-client-mixin-get-entity-graph.d.ts} +0 -1
  288. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +1 -0
  289. package/mixin-get-entity-graph/package.json +13 -0
  290. package/mixin-save-queuing/{index.d.ts → breeze-client-mixin-save-queuing.d.ts} +0 -1
  291. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +1 -0
  292. package/mixin-save-queuing/package.json +13 -0
  293. package/package.json +11 -93
  294. package/src/abstract-data-service-adapter.d.ts +20 -0
  295. package/src/config.d.ts +1 -1
  296. package/src/core.d.ts +1 -1
  297. package/src/entity-aspect.d.ts +1 -1
  298. package/src/entity-metadata.d.ts +6 -8
  299. package/src/entity-query.d.ts +18 -4
  300. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
  301. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
  302. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
  303. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
  304. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
  305. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
  306. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
  307. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
  308. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
  309. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
  310. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
  311. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
  312. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
  313. package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
  314. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
  315. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
  316. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
  317. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
  318. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
  319. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
  320. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
  321. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
  322. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
  323. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
  324. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
  325. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
  326. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
  327. package/esm2022/breeze-client.mjs +0 -5
  328. package/esm2022/index.mjs +0 -2
  329. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
  330. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
  331. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
  332. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
  333. package/esm2022/src/abstract-data-service-adapter.mjs +0 -294
  334. package/esm2022/src/array.mjs +0 -4
  335. package/esm2022/src/assert-param.mjs +0 -330
  336. package/esm2022/src/breeze.mjs +0 -85
  337. package/esm2022/src/complex-array.mjs +0 -117
  338. package/esm2022/src/config.mjs +0 -232
  339. package/esm2022/src/core.mjs +0 -712
  340. package/esm2022/src/csdl-metadata-parser.mjs +0 -385
  341. package/esm2022/src/data-service.mjs +0 -239
  342. package/esm2022/src/data-type.mjs +0 -507
  343. package/esm2022/src/default-property-interceptor.mjs +0 -460
  344. package/esm2022/src/entity-aspect.mjs +0 -897
  345. package/esm2022/src/entity-group.mjs +0 -192
  346. package/esm2022/src/entity-key.mjs +0 -127
  347. package/esm2022/src/entity-manager.mjs +0 -2183
  348. package/esm2022/src/entity-metadata.mjs +0 -2242
  349. package/esm2022/src/entity-query.mjs +0 -1005
  350. package/esm2022/src/entity-state.mjs +0 -107
  351. package/esm2022/src/enum.mjs +0 -143
  352. package/esm2022/src/event.mjs +0 -264
  353. package/esm2022/src/interface-registry.mjs +0 -39
  354. package/esm2022/src/key-generator.mjs +0 -110
  355. package/esm2022/src/local-query-comparison-options.mjs +0 -75
  356. package/esm2022/src/mapping-context.mjs +0 -422
  357. package/esm2022/src/observable-array.mjs +0 -183
  358. package/esm2022/src/predicate.mjs +0 -1259
  359. package/esm2022/src/primitive-array.mjs +0 -85
  360. package/esm2022/src/query-options.mjs +0 -160
  361. package/esm2022/src/relation-array.mjs +0 -173
  362. package/esm2022/src/save-options.mjs +0 -51
  363. package/esm2022/src/unattached-children-map.mjs +0 -56
  364. package/esm2022/src/validation-options.mjs +0 -78
  365. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
  366. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
  367. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
  368. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
  369. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
  370. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
  371. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
  372. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
  373. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
  374. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
  375. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
  376. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
  377. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
  378. package/fesm2022/breeze-client.mjs.map +0 -1
@@ -0,0 +1,280 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('breeze-client')) :
3
+ typeof define === 'function' && define.amd ? define('breeze-client/adapter-model-library-backing-store', ['exports', 'breeze-client'], factory) :
4
+ (global = global || self, factory((global['breeze-client'] = global['breeze-client'] || {}, global['breeze-client']['adapter-model-library-backing-store'] = {}), global['breeze-client']));
5
+ }(this, (function (exports, breezeClient) { 'use strict';
6
+
7
+ var core = breezeClient.core;
8
+ var ModelLibraryBackingStoreAdapter = /** @class */ (function () {
9
+ function ModelLibraryBackingStoreAdapter() {
10
+ this.name = "backingStore";
11
+ }
12
+ ModelLibraryBackingStoreAdapter.register = function (config$1) {
13
+ config$1 = config$1 || breezeClient.config;
14
+ config$1.registerAdapter("modelLibrary", ModelLibraryBackingStoreAdapter);
15
+ return config$1.initializeAdapterInstance("modelLibrary", "backingStore", true);
16
+ };
17
+ ModelLibraryBackingStoreAdapter.prototype.initialize = function () {
18
+ };
19
+ ModelLibraryBackingStoreAdapter.prototype.getTrackablePropertyNames = function (entity) {
20
+ var names = [];
21
+ for (var p in entity) {
22
+ if (p === "entityAspect" || p === "entityType")
23
+ continue;
24
+ if (p === "_$typeName" || p === "_pendingSets" || p === "_backingStore")
25
+ continue;
26
+ var val = entity[p];
27
+ if (!core.isFunction(val)) {
28
+ names.push(p);
29
+ }
30
+ }
31
+ return names;
32
+ };
33
+ // This method is called during Metadata initialization
34
+ ModelLibraryBackingStoreAdapter.prototype.initializeEntityPrototype = function (proto) {
35
+ proto.getProperty = function (propertyName) {
36
+ return this[propertyName];
37
+ };
38
+ proto.setProperty = function (propertyName, value) {
39
+ //if (!this._backingStore.hasOwnProperty(propertyName)) {
40
+ // throw new Error("Unknown property name:" + propertyName);
41
+ //}
42
+ this[propertyName] = value;
43
+ // allow setProperty chaining.
44
+ return this;
45
+ };
46
+ movePropDefsToProto(proto);
47
+ };
48
+ // This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call.
49
+ // which can be called either directly or via standard query materialization
50
+ // entity is either an entity or a complexObject
51
+ ModelLibraryBackingStoreAdapter.prototype.startTracking = function (entity, proto) {
52
+ // can't touch the normal property sets within this method - access the backingStore directly instead.
53
+ var bs = movePropsToBackingStore(entity);
54
+ // assign default values to the entity
55
+ var stype = breezeClient.EntityAspect.isEntity(entity) ? entity.entityType : entity.complexType;
56
+ stype.getProperties().forEach(function (prop) {
57
+ var propName = prop.name;
58
+ var val = entity[propName];
59
+ if (prop instanceof breezeClient.DataProperty) {
60
+ if (prop.isComplexProperty) {
61
+ if (prop.isScalar) {
62
+ val = prop.dataType._createInstanceCore(entity, prop);
63
+ }
64
+ else {
65
+ val = breezeClient.makeComplexArray([], entity, prop);
66
+ }
67
+ }
68
+ else if (!prop.isScalar) {
69
+ val = breezeClient.makePrimitiveArray([], entity, prop);
70
+ }
71
+ else if (val === undefined) {
72
+ val = prop.defaultValue;
73
+ }
74
+ }
75
+ else if (prop.isNavigationProperty) {
76
+ if (val !== undefined && val !== null) {
77
+ throw new Error("Cannot assign a navigation property in an entity ctor.: " + propName);
78
+ }
79
+ if (prop.isScalar) {
80
+ // TODO: change this to nullstob later.
81
+ val = null;
82
+ }
83
+ else {
84
+ val = breezeClient.makeRelationArray([], entity, prop);
85
+ }
86
+ }
87
+ else {
88
+ throw new Error("unknown property: " + propName);
89
+ }
90
+ // can't touch the normal property sets within this method (IE9 Bug) - so we access the backingStore directly instead.
91
+ // otherwise we could just do
92
+ // entity[propName] = val
93
+ // after all of the interception logic had been injected.
94
+ if (prop.isSettable || prop.isNavigationProperty) {
95
+ bs[propName] = val;
96
+ }
97
+ });
98
+ };
99
+ return ModelLibraryBackingStoreAdapter;
100
+ }());
101
+ breezeClient.config.registerAdapter("modelLibrary", ModelLibraryBackingStoreAdapter);
102
+ // private methods
103
+ // This method is called during Metadata initialization to correctly "wrap" properties.
104
+ function movePropDefsToProto(proto) {
105
+ var stype = (proto.entityType || proto.complexType);
106
+ var extra = stype._extra;
107
+ var alreadyWrapped = extra.alreadyWrappedProps || {};
108
+ stype.getProperties().forEach(function (prop) {
109
+ var propName = prop.name;
110
+ // we only want to wrap props that haven't already been wrapped
111
+ if (alreadyWrapped[propName])
112
+ return;
113
+ // If property is already defined on the prototype then wrap it in another propertyDescriptor.
114
+ // otherwise create a propDescriptor for it.
115
+ var descr;
116
+ if (propName in proto) {
117
+ descr = wrapPropDescription(proto, prop);
118
+ }
119
+ else {
120
+ descr = makePropDescription(proto, prop);
121
+ }
122
+ // descr will be null for a wrapped descr that is not configurable
123
+ if (descr != null) {
124
+ Object.defineProperty(proto, propName, descr);
125
+ }
126
+ alreadyWrapped[propName] = true;
127
+ });
128
+ extra.alreadyWrappedProps = alreadyWrapped;
129
+ }
130
+ // This method is called when an instance is first created via materialization or createEntity.
131
+ // this method cannot be called while a 'defineProperty' accessor is executing
132
+ // because of IE bug mentioned above.
133
+ function movePropsToBackingStore(instance) {
134
+ var bs = getBackingStore(instance);
135
+ var proto = Object.getPrototypeOf(instance);
136
+ var stype = (proto.entityType || proto.complexType);
137
+ stype.getProperties().forEach(function (prop) {
138
+ var propName = prop.name;
139
+ if (prop.isUnmapped) {
140
+ // insure that any unmapped properties that were added after entityType
141
+ // was first created are wrapped with a property descriptor.
142
+ if (!core.getPropertyDescriptor(proto, propName)) {
143
+ var descr = makePropDescription(proto, prop);
144
+ Object.defineProperty(proto, propName, descr);
145
+ }
146
+ }
147
+ if (!instance.hasOwnProperty(propName))
148
+ return;
149
+ // pulls off the value, removes the instance property and then rewrites it via ES5 accessor
150
+ var value = instance[propName];
151
+ delete instance[propName];
152
+ instance[propName] = value;
153
+ });
154
+ return bs;
155
+ }
156
+ function makePropDescription(proto, property) {
157
+ var propName = property.name;
158
+ var pendingStores = proto._pendingBackingStores;
159
+ if (!pendingStores) {
160
+ pendingStores = [];
161
+ proto._pendingBackingStores = pendingStores;
162
+ }
163
+ var descr = {
164
+ get: function () {
165
+ var bs = this._backingStore || getBackingStore(this);
166
+ return bs[propName];
167
+ },
168
+ set: function (value) {
169
+ // IE9 cannot touch instance._backingStore here
170
+ var bs = this._backingStore || getPendingBackingStore(this);
171
+ var accessorFn = getAccessorFn(bs, propName);
172
+ this._$interceptor(property, value, accessorFn);
173
+ },
174
+ enumerable: true,
175
+ configurable: true
176
+ };
177
+ descr.set.rawSet = function (value) {
178
+ var bs = this._backingStore || getPendingBackingStore(this);
179
+ var accessorFn = getAccessorFn(bs, propName);
180
+ accessorFn(value);
181
+ };
182
+ return descr;
183
+ }
184
+ function getAccessorFn(bs, propName) {
185
+ return function () {
186
+ if (arguments.length === 0) {
187
+ return bs[propName];
188
+ }
189
+ else {
190
+ bs[propName] = arguments[0];
191
+ return undefined;
192
+ }
193
+ };
194
+ }
195
+ function wrapPropDescription(proto, property) {
196
+ if (!proto.hasOwnProperty(property.name)) {
197
+ var nextProto = Object.getPrototypeOf(proto);
198
+ return wrapPropDescription(nextProto, property);
199
+ }
200
+ var propDescr = Object.getOwnPropertyDescriptor(proto, property.name);
201
+ if (!propDescr)
202
+ return undefined;
203
+ // if not configurable; we can't touch it - so leave.
204
+ if (!propDescr.configurable)
205
+ return undefined;
206
+ // if a data descriptor - don't change it - this is basically a static property - i.e. defined on every instance of the type with the same value.
207
+ if (propDescr.value)
208
+ return undefined;
209
+ // if a read only property descriptor - no need to change it.
210
+ if (!propDescr.set)
211
+ return undefined;
212
+ var localAccessorFn = function (entity) {
213
+ return function () {
214
+ if (!propDescr)
215
+ return undefined;
216
+ if (arguments.length === 0) {
217
+ return propDescr.get.bind(entity)();
218
+ }
219
+ else {
220
+ var set = propDescr.set;
221
+ var rawSet = set.rawSet || set;
222
+ rawSet.bind(entity)(arguments[0]);
223
+ return undefined;
224
+ }
225
+ };
226
+ };
227
+ var newDescr = {
228
+ get: function () {
229
+ if (!propDescr)
230
+ return undefined;
231
+ return propDescr.get.bind(this)();
232
+ },
233
+ set: function (value) {
234
+ this._$interceptor(property, value, localAccessorFn(this));
235
+ },
236
+ enumerable: propDescr.enumerable,
237
+ configurable: true
238
+ };
239
+ newDescr.set.rawSet = propDescr.set;
240
+ return newDescr;
241
+ }
242
+ function getBackingStore(instance) {
243
+ var proto = Object.getPrototypeOf(instance);
244
+ processPendingStores(proto);
245
+ var bs = instance._backingStore;
246
+ if (!bs) {
247
+ bs = {};
248
+ instance._backingStore = bs;
249
+ }
250
+ return bs;
251
+ }
252
+ // workaround for IE9 bug where instance properties cannot be changed when executing a property 'set' method.
253
+ function getPendingBackingStore(instance) {
254
+ var proto = Object.getPrototypeOf(instance);
255
+ var pendingStores = proto._pendingBackingStores;
256
+ var pending = core.arrayFirst(pendingStores, function (pending) {
257
+ return pending.entity === instance;
258
+ });
259
+ if (pending)
260
+ return pending.backingStore;
261
+ var bs = {};
262
+ pendingStores.push({ entity: instance, backingStore: bs });
263
+ return bs;
264
+ }
265
+ function processPendingStores(proto) {
266
+ var pendingStores = proto._pendingBackingStores;
267
+ if (pendingStores) {
268
+ pendingStores.forEach(function (pending) {
269
+ pending.entity._backingStore = pending.backingStore;
270
+ });
271
+ pendingStores.length = 0;
272
+ }
273
+ }
274
+
275
+ exports.ModelLibraryBackingStoreAdapter = ModelLibraryBackingStoreAdapter;
276
+
277
+ Object.defineProperty(exports, '__esModule', { value: true });
278
+
279
+ })));
280
+ //# sourceMappingURL=breeze-client-adapter-model-library-backing-store.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breeze-client-adapter-model-library-backing-store.umd.js","sources":["ng://breeze-client/adapter-model-library-backing-store/adapter-model-library-backing-store.ts"],"sourcesContent":["import * as breeze from 'breeze-client';\r\n\r\nlet core = breeze.core;\r\n\r\nexport class ModelLibraryBackingStoreAdapter implements breeze.ModelLibraryAdapter {\r\n name: string;\r\n\r\n constructor() {\r\n this.name = \"backingStore\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"modelLibrary\", ModelLibraryBackingStoreAdapter);\r\n return config.initializeAdapterInstance(\"modelLibrary\", \"backingStore\", true) as ModelLibraryBackingStoreAdapter;\r\n }\r\n\r\n initialize() {\r\n }\r\n\r\n getTrackablePropertyNames(entity: breeze.Entity) {\r\n let names: string[] = [];\r\n for (let p in entity) {\r\n if (p === \"entityAspect\" || p === \"entityType\") continue;\r\n if (p === \"_$typeName\" || p === \"_pendingSets\" || p === \"_backingStore\") continue;\r\n let val = entity[p];\r\n if (!core.isFunction(val)) {\r\n names.push(p);\r\n }\r\n }\r\n return names;\r\n }\r\n\r\n // This method is called during Metadata initialization\r\n initializeEntityPrototype(proto: any) {\r\n\r\n proto.getProperty = function (propertyName: string) {\r\n return this[propertyName];\r\n };\r\n\r\n proto.setProperty = function (propertyName: string, value: any) {\r\n //if (!this._backingStore.hasOwnProperty(propertyName)) {\r\n // throw new Error(\"Unknown property name:\" + propertyName);\r\n //}\r\n this[propertyName] = value;\r\n // allow setProperty chaining.\r\n return this;\r\n };\r\n\r\n movePropDefsToProto(proto);\r\n }\r\n\r\n // This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call.\r\n // which can be called either directly or via standard query materialization\r\n\r\n // entity is either an entity or a complexObject\r\n startTracking(entity: breeze.StructuralObject, proto: any) {\r\n // can't touch the normal property sets within this method - access the backingStore directly instead.\r\n let bs = movePropsToBackingStore(entity);\r\n\r\n // assign default values to the entity\r\n let stype = breeze.EntityAspect.isEntity(entity) ? entity.entityType : entity.complexType;\r\n stype.getProperties().forEach(function (prop) {\r\n\r\n let propName = prop.name;\r\n let val = entity[propName];\r\n\r\n if (prop instanceof breeze.DataProperty) {\r\n if (prop.isComplexProperty) {\r\n if (prop.isScalar) {\r\n val = (prop.dataType as breeze.ComplexType)._createInstanceCore(entity, prop);\r\n } else {\r\n val = breeze.makeComplexArray([], entity, prop);\r\n }\r\n } else if (!prop.isScalar) {\r\n val = breeze.makePrimitiveArray([], entity, prop);\r\n } else if (val === undefined) {\r\n val = prop.defaultValue;\r\n }\r\n\r\n } else if (prop.isNavigationProperty) {\r\n if (val !== undefined && val !== null) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + propName);\r\n }\r\n if (prop.isScalar) {\r\n // TODO: change this to nullstob later.\r\n val = null;\r\n } else {\r\n val = breeze.makeRelationArray([], entity as breeze.Entity, prop);\r\n }\r\n } else {\r\n throw new Error(\"unknown property: \" + propName);\r\n }\r\n // can't touch the normal property sets within this method (IE9 Bug) - so we access the backingStore directly instead.\r\n // otherwise we could just do\r\n // entity[propName] = val\r\n // after all of the interception logic had been injected.\r\n if ((prop as breeze.DataProperty).isSettable || prop.isNavigationProperty) {\r\n bs[propName] = val;\r\n }\r\n });\r\n }\r\n}\r\n\r\nbreeze.config.registerAdapter(\"modelLibrary\", ModelLibraryBackingStoreAdapter);\r\n\r\n// private methods\r\n\r\n// This method is called during Metadata initialization to correctly \"wrap\" properties.\r\nfunction movePropDefsToProto(proto: any) {\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n let extra = stype._extra;\r\n\r\n let alreadyWrapped = extra.alreadyWrappedProps || {};\r\n\r\n stype.getProperties().forEach(function (prop) {\r\n let propName = prop.name;\r\n // we only want to wrap props that haven't already been wrapped\r\n if (alreadyWrapped[propName]) return;\r\n\r\n // If property is already defined on the prototype then wrap it in another propertyDescriptor.\r\n // otherwise create a propDescriptor for it.\r\n let descr: any;\r\n if (propName in proto) {\r\n descr = wrapPropDescription(proto, prop);\r\n } else {\r\n descr = makePropDescription(proto, prop);\r\n }\r\n // descr will be null for a wrapped descr that is not configurable\r\n if (descr != null) {\r\n Object.defineProperty(proto, propName, descr);\r\n }\r\n alreadyWrapped[propName] = true;\r\n });\r\n extra.alreadyWrappedProps = alreadyWrapped;\r\n}\r\n\r\n// This method is called when an instance is first created via materialization or createEntity.\r\n// this method cannot be called while a 'defineProperty' accessor is executing\r\n// because of IE bug mentioned above.\r\n\r\nfunction movePropsToBackingStore(instance: any) {\r\n\r\n let bs = getBackingStore(instance);\r\n let proto = Object.getPrototypeOf(instance);\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n stype.getProperties().forEach(function (prop) {\r\n let propName = prop.name;\r\n if (prop.isUnmapped) {\r\n // insure that any unmapped properties that were added after entityType\r\n // was first created are wrapped with a property descriptor.\r\n if (!core.getPropertyDescriptor(proto, propName)) {\r\n let descr = makePropDescription(proto, prop);\r\n Object.defineProperty(proto, propName, descr);\r\n }\r\n }\r\n if (!instance.hasOwnProperty(propName)) return;\r\n // pulls off the value, removes the instance property and then rewrites it via ES5 accessor\r\n let value = instance[propName];\r\n delete instance[propName];\r\n instance[propName] = value;\r\n });\r\n return bs;\r\n}\r\n\r\nfunction makePropDescription(proto: any, property: breeze.EntityProperty) {\r\n let propName = property.name;\r\n let pendingStores = proto._pendingBackingStores;\r\n if (!pendingStores) {\r\n pendingStores = [];\r\n proto._pendingBackingStores = pendingStores;\r\n }\r\n let descr = {\r\n get: function () {\r\n let bs = this._backingStore || getBackingStore(this);\r\n return bs[propName];\r\n },\r\n set: function (value: any) {\r\n // IE9 cannot touch instance._backingStore here\r\n let bs = this._backingStore || getPendingBackingStore(this);\r\n let accessorFn = getAccessorFn(bs, propName);\r\n this._$interceptor(property, value, accessorFn);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n };\r\n\r\n (descr.set as any).rawSet = function (value: any) {\r\n let bs = this._backingStore || getPendingBackingStore(this);\r\n let accessorFn = getAccessorFn(bs, propName);\r\n accessorFn(value);\r\n };\r\n return descr;\r\n\r\n}\r\n\r\nfunction getAccessorFn(bs: {}, propName: string): any {\r\n return function () {\r\n if (arguments.length === 0) {\r\n return bs[propName];\r\n } else {\r\n bs[propName] = arguments[0];\r\n return undefined;\r\n }\r\n };\r\n}\r\n\r\nfunction wrapPropDescription(proto: any, property: breeze.EntityProperty): any {\r\n if (!proto.hasOwnProperty(property.name)) {\r\n let nextProto = Object.getPrototypeOf(proto);\r\n return wrapPropDescription(nextProto, property);\r\n }\r\n\r\n let propDescr = Object.getOwnPropertyDescriptor(proto, property.name);\r\n if (!propDescr) return undefined;\r\n // if not configurable; we can't touch it - so leave.\r\n if (!propDescr.configurable) return undefined;\r\n // if a data descriptor - don't change it - this is basically a static property - i.e. defined on every instance of the type with the same value.\r\n if (propDescr.value) return undefined;\r\n // if a read only property descriptor - no need to change it.\r\n if (!propDescr.set) return undefined;\r\n\r\n let localAccessorFn = function (entity: any) {\r\n return function () {\r\n if (!propDescr) return undefined;\r\n if (arguments.length === 0) {\r\n return propDescr.get!.bind(entity)();\r\n } else {\r\n let set = propDescr.set;\r\n let rawSet = (set as any).rawSet || set;\r\n rawSet.bind(entity)(arguments[0]);\r\n return undefined;\r\n }\r\n };\r\n };\r\n\r\n let newDescr = {\r\n get: function () {\r\n if (!propDescr) return undefined;\r\n return propDescr.get!.bind(this)();\r\n },\r\n set: function (value: any) {\r\n this._$interceptor(property, value, localAccessorFn(this));\r\n },\r\n enumerable: propDescr.enumerable,\r\n configurable: true\r\n };\r\n (newDescr.set as any).rawSet = propDescr.set;\r\n return newDescr;\r\n}\r\n\r\n\r\nfunction getBackingStore(instance: any) {\r\n let proto = Object.getPrototypeOf(instance);\r\n processPendingStores(proto);\r\n let bs = instance._backingStore;\r\n if (!bs) {\r\n bs = {};\r\n instance._backingStore = bs;\r\n }\r\n return bs;\r\n}\r\n\r\n// workaround for IE9 bug where instance properties cannot be changed when executing a property 'set' method.\r\nfunction getPendingBackingStore(instance: any) {\r\n let proto = Object.getPrototypeOf(instance);\r\n let pendingStores = proto._pendingBackingStores;\r\n let pending = core.arrayFirst(pendingStores, function (pending) {\r\n return pending.entity === instance;\r\n });\r\n if (pending) return (pending as any).backingStore;\r\n let bs = {};\r\n pendingStores.push({ entity: instance, backingStore: bs });\r\n return bs;\r\n}\r\n\r\nfunction processPendingStores(proto: any) {\r\n let pendingStores = proto._pendingBackingStores;\r\n if (pendingStores) {\r\n pendingStores.forEach(function (pending: any) {\r\n pending.entity._backingStore = pending.backingStore;\r\n });\r\n pendingStores.length = 0;\r\n }\r\n}\r\n\r\n"],"names":["breeze.core","config","breeze.config","breeze.EntityAspect","breeze.DataProperty","breeze.makeComplexArray","breeze.makePrimitiveArray","breeze.makeRelationArray"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("breeze-client")):"function"==typeof define&&define.amd?define("breeze-client/adapter-model-library-backing-store",["exports","breeze-client"],t):t(((e=e||self)["breeze-client"]=e["breeze-client"]||{},e["breeze-client"]["adapter-model-library-backing-store"]={}),e["breeze-client"])}(this,(function(e,t){"use strict";var r=t.core,n=function(){function e(){this.name="backingStore"}return e.register=function(r){return(r=r||t.config).registerAdapter("modelLibrary",e),r.initializeAdapterInstance("modelLibrary","backingStore",!0)},e.prototype.initialize=function(){},e.prototype.getTrackablePropertyNames=function(e){var t=[];for(var n in e)if("entityAspect"!==n&&"entityType"!==n&&"_$typeName"!==n&&"_pendingSets"!==n&&"_backingStore"!==n){var i=e[n];r.isFunction(i)||t.push(n)}return t},e.prototype.initializeEntityPrototype=function(e){e.getProperty=function(e){return this[e]},e.setProperty=function(e,t){return this[e]=t,this},function(e){var t=e.entityType||e.complexType,r=t._extra,n=r.alreadyWrappedProps||{};t.getProperties().forEach((function(t){var r,o=t.name;n[o]||(null!=(r=o in e?function e(t,r){if(!t.hasOwnProperty(r.name)){var n=Object.getPrototypeOf(t);return e(n,r)}var i=Object.getOwnPropertyDescriptor(t,r.name);if(!i)return;if(!i.configurable)return;if(i.value)return;if(!i.set)return;var o={get:function(){if(i)return i.get.bind(this)()},set:function(e){var t;this._$interceptor(r,e,(t=this,function(){if(i){if(0===arguments.length)return i.get.bind(t)();var e=i.set,r=e.rawSet||e;r.bind(t)(arguments[0])}}))},enumerable:i.enumerable,configurable:!0};return o.set.rawSet=i.set,o}(e,t):i(e,t))&&Object.defineProperty(e,o,r),n[o]=!0)})),r.alreadyWrappedProps=n}(e)},e.prototype.startTracking=function(e,n){var o=function(e){var t=a(e),n=Object.getPrototypeOf(e);return(n.entityType||n.complexType).getProperties().forEach((function(t){var o=t.name;if(t.isUnmapped&&!r.getPropertyDescriptor(n,o)){var a=i(n,t);Object.defineProperty(n,o,a)}if(e.hasOwnProperty(o)){var c=e[o];delete e[o],e[o]=c}})),t}(e);(t.EntityAspect.isEntity(e)?e.entityType:e.complexType).getProperties().forEach((function(r){var n=r.name,i=e[n];if(r instanceof t.DataProperty)r.isComplexProperty?i=r.isScalar?r.dataType._createInstanceCore(e,r):t.makeComplexArray([],e,r):r.isScalar?void 0===i&&(i=r.defaultValue):i=t.makePrimitiveArray([],e,r);else{if(!r.isNavigationProperty)throw new Error("unknown property: "+n);if(null!=i)throw new Error("Cannot assign a navigation property in an entity ctor.: "+n);i=r.isScalar?null:t.makeRelationArray([],e,r)}(r.isSettable||r.isNavigationProperty)&&(o[n]=i)}))},e}();function i(e,t){var r=t.name,n=e._pendingBackingStores;n||(n=[],e._pendingBackingStores=n);var i={get:function(){return(this._backingStore||a(this))[r]},set:function(e){var n=o(this._backingStore||c(this),r);this._$interceptor(t,e,n)},enumerable:!0,configurable:!0};return i.set.rawSet=function(e){o(this._backingStore||c(this),r)(e)},i}function o(e,t){return function(){return 0===arguments.length?e[t]:void(e[t]=arguments[0])}}function a(e){!function(e){var t=e._pendingBackingStores;t&&(t.forEach((function(e){e.entity._backingStore=e.backingStore})),t.length=0)}(Object.getPrototypeOf(e));var t=e._backingStore;return t||(t={},e._backingStore=t),t}function c(e){var t=Object.getPrototypeOf(e)._pendingBackingStores,n=r.arrayFirst(t,(function(t){return t.entity===e}));if(n)return n.backingStore;var i={};return t.push({entity:e,backingStore:i}),i}t.config.registerAdapter("modelLibrary",n),e.ModelLibraryBackingStoreAdapter=n,Object.defineProperty(e,"__esModule",{value:!0})}));
2
+ //# sourceMappingURL=breeze-client-adapter-model-library-backing-store.umd.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ng://breeze-client/adapter-model-library-backing-store/adapter-model-library-backing-store.ts"],"names":["core","breeze.core","ModelLibraryBackingStoreAdapter","this","name","register","config","breeze.config","registerAdapter","initializeAdapterInstance","prototype","initialize","getTrackablePropertyNames","entity","names","p","val","isFunction","push","initializeEntityPrototype","proto","getProperty","propertyName","setProperty","value","stype","entityType","complexType","extra","_extra","alreadyWrapped","alreadyWrappedProps","getProperties","forEach","prop","descr","propName","wrapPropDescription","property","hasOwnProperty","nextProto","Object","getPrototypeOf","propDescr","getOwnPropertyDescriptor","configurable","set","newDescr","get","bind","_$interceptor","arguments","length","rawSet","enumerable","makePropDescription","defineProperty","movePropDefsToProto","startTracking","bs","instance","getBackingStore","isUnmapped","getPropertyDescriptor","movePropsToBackingStore","breeze.EntityAspect","isEntity","breeze.DataProperty","isComplexProperty","isScalar","dataType","_createInstanceCore","breeze.makeComplexArray","undefined","defaultValue","breeze.makePrimitiveArray","isNavigationProperty","Error","breeze.makeRelationArray","isSettable","pendingStores","_pendingBackingStores","_backingStore","accessorFn","getAccessorFn","getPendingBackingStore","pending","backingStore","processPendingStores","arrayFirst"],"mappings":"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","sourcesContent":["import * as breeze from 'breeze-client';\r\n\r\nlet core = breeze.core;\r\n\r\nexport class ModelLibraryBackingStoreAdapter implements breeze.ModelLibraryAdapter {\r\n name: string;\r\n\r\n constructor() {\r\n this.name = \"backingStore\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"modelLibrary\", ModelLibraryBackingStoreAdapter);\r\n return config.initializeAdapterInstance(\"modelLibrary\", \"backingStore\", true) as ModelLibraryBackingStoreAdapter;\r\n }\r\n\r\n initialize() {\r\n }\r\n\r\n getTrackablePropertyNames(entity: breeze.Entity) {\r\n let names: string[] = [];\r\n for (let p in entity) {\r\n if (p === \"entityAspect\" || p === \"entityType\") continue;\r\n if (p === \"_$typeName\" || p === \"_pendingSets\" || p === \"_backingStore\") continue;\r\n let val = entity[p];\r\n if (!core.isFunction(val)) {\r\n names.push(p);\r\n }\r\n }\r\n return names;\r\n }\r\n\r\n // This method is called during Metadata initialization\r\n initializeEntityPrototype(proto: any) {\r\n\r\n proto.getProperty = function (propertyName: string) {\r\n return this[propertyName];\r\n };\r\n\r\n proto.setProperty = function (propertyName: string, value: any) {\r\n //if (!this._backingStore.hasOwnProperty(propertyName)) {\r\n // throw new Error(\"Unknown property name:\" + propertyName);\r\n //}\r\n this[propertyName] = value;\r\n // allow setProperty chaining.\r\n return this;\r\n };\r\n\r\n movePropDefsToProto(proto);\r\n }\r\n\r\n // This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call.\r\n // which can be called either directly or via standard query materialization\r\n\r\n // entity is either an entity or a complexObject\r\n startTracking(entity: breeze.StructuralObject, proto: any) {\r\n // can't touch the normal property sets within this method - access the backingStore directly instead.\r\n let bs = movePropsToBackingStore(entity);\r\n\r\n // assign default values to the entity\r\n let stype = breeze.EntityAspect.isEntity(entity) ? entity.entityType : entity.complexType;\r\n stype.getProperties().forEach(function (prop) {\r\n\r\n let propName = prop.name;\r\n let val = entity[propName];\r\n\r\n if (prop instanceof breeze.DataProperty) {\r\n if (prop.isComplexProperty) {\r\n if (prop.isScalar) {\r\n val = (prop.dataType as breeze.ComplexType)._createInstanceCore(entity, prop);\r\n } else {\r\n val = breeze.makeComplexArray([], entity, prop);\r\n }\r\n } else if (!prop.isScalar) {\r\n val = breeze.makePrimitiveArray([], entity, prop);\r\n } else if (val === undefined) {\r\n val = prop.defaultValue;\r\n }\r\n\r\n } else if (prop.isNavigationProperty) {\r\n if (val !== undefined && val !== null) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + propName);\r\n }\r\n if (prop.isScalar) {\r\n // TODO: change this to nullstob later.\r\n val = null;\r\n } else {\r\n val = breeze.makeRelationArray([], entity as breeze.Entity, prop);\r\n }\r\n } else {\r\n throw new Error(\"unknown property: \" + propName);\r\n }\r\n // can't touch the normal property sets within this method (IE9 Bug) - so we access the backingStore directly instead.\r\n // otherwise we could just do\r\n // entity[propName] = val\r\n // after all of the interception logic had been injected.\r\n if ((prop as breeze.DataProperty).isSettable || prop.isNavigationProperty) {\r\n bs[propName] = val;\r\n }\r\n });\r\n }\r\n}\r\n\r\nbreeze.config.registerAdapter(\"modelLibrary\", ModelLibraryBackingStoreAdapter);\r\n\r\n// private methods\r\n\r\n// This method is called during Metadata initialization to correctly \"wrap\" properties.\r\nfunction movePropDefsToProto(proto: any) {\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n let extra = stype._extra;\r\n\r\n let alreadyWrapped = extra.alreadyWrappedProps || {};\r\n\r\n stype.getProperties().forEach(function (prop) {\r\n let propName = prop.name;\r\n // we only want to wrap props that haven't already been wrapped\r\n if (alreadyWrapped[propName]) return;\r\n\r\n // If property is already defined on the prototype then wrap it in another propertyDescriptor.\r\n // otherwise create a propDescriptor for it.\r\n let descr: any;\r\n if (propName in proto) {\r\n descr = wrapPropDescription(proto, prop);\r\n } else {\r\n descr = makePropDescription(proto, prop);\r\n }\r\n // descr will be null for a wrapped descr that is not configurable\r\n if (descr != null) {\r\n Object.defineProperty(proto, propName, descr);\r\n }\r\n alreadyWrapped[propName] = true;\r\n });\r\n extra.alreadyWrappedProps = alreadyWrapped;\r\n}\r\n\r\n// This method is called when an instance is first created via materialization or createEntity.\r\n// this method cannot be called while a 'defineProperty' accessor is executing\r\n// because of IE bug mentioned above.\r\n\r\nfunction movePropsToBackingStore(instance: any) {\r\n\r\n let bs = getBackingStore(instance);\r\n let proto = Object.getPrototypeOf(instance);\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n stype.getProperties().forEach(function (prop) {\r\n let propName = prop.name;\r\n if (prop.isUnmapped) {\r\n // insure that any unmapped properties that were added after entityType\r\n // was first created are wrapped with a property descriptor.\r\n if (!core.getPropertyDescriptor(proto, propName)) {\r\n let descr = makePropDescription(proto, prop);\r\n Object.defineProperty(proto, propName, descr);\r\n }\r\n }\r\n if (!instance.hasOwnProperty(propName)) return;\r\n // pulls off the value, removes the instance property and then rewrites it via ES5 accessor\r\n let value = instance[propName];\r\n delete instance[propName];\r\n instance[propName] = value;\r\n });\r\n return bs;\r\n}\r\n\r\nfunction makePropDescription(proto: any, property: breeze.EntityProperty) {\r\n let propName = property.name;\r\n let pendingStores = proto._pendingBackingStores;\r\n if (!pendingStores) {\r\n pendingStores = [];\r\n proto._pendingBackingStores = pendingStores;\r\n }\r\n let descr = {\r\n get: function () {\r\n let bs = this._backingStore || getBackingStore(this);\r\n return bs[propName];\r\n },\r\n set: function (value: any) {\r\n // IE9 cannot touch instance._backingStore here\r\n let bs = this._backingStore || getPendingBackingStore(this);\r\n let accessorFn = getAccessorFn(bs, propName);\r\n this._$interceptor(property, value, accessorFn);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n };\r\n\r\n (descr.set as any).rawSet = function (value: any) {\r\n let bs = this._backingStore || getPendingBackingStore(this);\r\n let accessorFn = getAccessorFn(bs, propName);\r\n accessorFn(value);\r\n };\r\n return descr;\r\n\r\n}\r\n\r\nfunction getAccessorFn(bs: {}, propName: string): any {\r\n return function () {\r\n if (arguments.length === 0) {\r\n return bs[propName];\r\n } else {\r\n bs[propName] = arguments[0];\r\n return undefined;\r\n }\r\n };\r\n}\r\n\r\nfunction wrapPropDescription(proto: any, property: breeze.EntityProperty): any {\r\n if (!proto.hasOwnProperty(property.name)) {\r\n let nextProto = Object.getPrototypeOf(proto);\r\n return wrapPropDescription(nextProto, property);\r\n }\r\n\r\n let propDescr = Object.getOwnPropertyDescriptor(proto, property.name);\r\n if (!propDescr) return undefined;\r\n // if not configurable; we can't touch it - so leave.\r\n if (!propDescr.configurable) return undefined;\r\n // if a data descriptor - don't change it - this is basically a static property - i.e. defined on every instance of the type with the same value.\r\n if (propDescr.value) return undefined;\r\n // if a read only property descriptor - no need to change it.\r\n if (!propDescr.set) return undefined;\r\n\r\n let localAccessorFn = function (entity: any) {\r\n return function () {\r\n if (!propDescr) return undefined;\r\n if (arguments.length === 0) {\r\n return propDescr.get!.bind(entity)();\r\n } else {\r\n let set = propDescr.set;\r\n let rawSet = (set as any).rawSet || set;\r\n rawSet.bind(entity)(arguments[0]);\r\n return undefined;\r\n }\r\n };\r\n };\r\n\r\n let newDescr = {\r\n get: function () {\r\n if (!propDescr) return undefined;\r\n return propDescr.get!.bind(this)();\r\n },\r\n set: function (value: any) {\r\n this._$interceptor(property, value, localAccessorFn(this));\r\n },\r\n enumerable: propDescr.enumerable,\r\n configurable: true\r\n };\r\n (newDescr.set as any).rawSet = propDescr.set;\r\n return newDescr;\r\n}\r\n\r\n\r\nfunction getBackingStore(instance: any) {\r\n let proto = Object.getPrototypeOf(instance);\r\n processPendingStores(proto);\r\n let bs = instance._backingStore;\r\n if (!bs) {\r\n bs = {};\r\n instance._backingStore = bs;\r\n }\r\n return bs;\r\n}\r\n\r\n// workaround for IE9 bug where instance properties cannot be changed when executing a property 'set' method.\r\nfunction getPendingBackingStore(instance: any) {\r\n let proto = Object.getPrototypeOf(instance);\r\n let pendingStores = proto._pendingBackingStores;\r\n let pending = core.arrayFirst(pendingStores, function (pending) {\r\n return pending.entity === instance;\r\n });\r\n if (pending) return (pending as any).backingStore;\r\n let bs = {};\r\n pendingStores.push({ entity: instance, backingStore: bs });\r\n return bs;\r\n}\r\n\r\nfunction processPendingStores(proto: any) {\r\n let pendingStores = proto._pendingBackingStores;\r\n if (pendingStores) {\r\n pendingStores.forEach(function (pending: any) {\r\n pending.entity._backingStore = pending.backingStore;\r\n });\r\n pendingStores.length = 0;\r\n }\r\n}\r\n\r\n"]}
@@ -0,0 +1,252 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('breeze-client')) :
3
+ typeof define === 'function' && define.amd ? define('breeze-client/adapter-model-library-ko', ['exports', 'breeze-client'], factory) :
4
+ (global = global || self, factory((global['breeze-client'] = global['breeze-client'] || {}, global['breeze-client']['adapter-model-library-ko'] = {}), global['breeze-client']));
5
+ }(this, (function (exports, breezeClient) { 'use strict';
6
+
7
+ var core = breezeClient.core;
8
+ var canIsolateES5Props = core.isES5Supported;
9
+ var ko;
10
+ var ModelLibraryKnockoutAdapter = /** @class */ (function () {
11
+ function ModelLibraryKnockoutAdapter() {
12
+ this.name = "ko";
13
+ }
14
+ ModelLibraryKnockoutAdapter.register = function (config$1) {
15
+ config$1 = config$1 || breezeClient.config;
16
+ config$1.registerAdapter("modelLibrary", ModelLibraryKnockoutAdapter);
17
+ return config$1.initializeAdapterInstance("modelLibrary", "ko", true);
18
+ };
19
+ ModelLibraryKnockoutAdapter.prototype.initialize = function () {
20
+ ko = core.requireLib("ko;knockout", "The Knockout library");
21
+ ko.extenders.intercept = function (target, interceptorOptions) {
22
+ var instance = interceptorOptions.instance;
23
+ var property = interceptorOptions.property;
24
+ // create a computed observable to intercept writes to our observable
25
+ var result;
26
+ if (target.splice) {
27
+ result = ko.computed({
28
+ read: target //always return the original observables value
29
+ });
30
+ }
31
+ else {
32
+ result = ko.computed({
33
+ read: target,
34
+ write: function (newValue) {
35
+ instance._$interceptor(property, newValue, target);
36
+ return instance;
37
+ }
38
+ });
39
+ }
40
+ //return the new computed observable
41
+ return result;
42
+ };
43
+ };
44
+ ModelLibraryKnockoutAdapter.prototype.getTrackablePropertyNames = function (entity) {
45
+ var names = [];
46
+ for (var p in entity) {
47
+ if (p === "entityType")
48
+ continue;
49
+ if (p === "_$typeName")
50
+ continue;
51
+ var propDescr = getES5PropDescriptor(entity, p);
52
+ if (propDescr && propDescr.get) {
53
+ names.push(p);
54
+ }
55
+ else {
56
+ var val = entity[p];
57
+ if (ko.isObservable(val)) {
58
+ names.push(p);
59
+ }
60
+ else if (!core.isFunction(val)) {
61
+ names.push(p);
62
+ }
63
+ }
64
+ }
65
+ return names;
66
+ };
67
+ ModelLibraryKnockoutAdapter.prototype.initializeEntityPrototype = function (proto) {
68
+ proto.getProperty = function (propertyName) {
69
+ return this[propertyName]();
70
+ };
71
+ proto.setProperty = function (propertyName, value) {
72
+ this[propertyName](value);
73
+ // allow set property chaining.
74
+ return this;
75
+ };
76
+ if (canIsolateES5Props) {
77
+ isolateES5Props(proto);
78
+ }
79
+ };
80
+ ModelLibraryKnockoutAdapter.prototype.startTracking = function (entity, proto) {
81
+ // create ko's for each property and assign defaultValues
82
+ var stype = (entity.entityType || entity.complexType);
83
+ var es5Descriptors = stype._extra.es5Descriptors || {};
84
+ // sort unmapped properties to the end
85
+ stype.getProperties().sort(function (p1, p2) {
86
+ var v1 = p1.isUnmapped ? 1 : 0;
87
+ var v2 = p2.isUnmapped ? 1 : 0;
88
+ return v1 - v2;
89
+ }).forEach(function (prop) {
90
+ var propName = prop.name;
91
+ var val = entity[propName];
92
+ var propDescr = es5Descriptors[propName];
93
+ var koObj;
94
+ // check if property is an ES5 property
95
+ if (propDescr) {
96
+ var getFn_1 = propDescr.get.bind(entity);
97
+ if (propDescr.set) {
98
+ var setFn_1 = propDescr.set.bind(entity);
99
+ var rawAccessorFn_1 = function (newValue) {
100
+ if (arguments.length === 0) {
101
+ getFn_1();
102
+ return;
103
+ }
104
+ else {
105
+ setFn_1(newValue);
106
+ }
107
+ };
108
+ koObj = ko.computed({
109
+ read: function () {
110
+ stype._koDummy();
111
+ return getFn_1();
112
+ },
113
+ write: function (newValue) {
114
+ entity._$interceptor(prop, newValue, rawAccessorFn_1);
115
+ stype._koDummy.valueHasMutated();
116
+ return entity;
117
+ }
118
+ });
119
+ }
120
+ else {
121
+ koObj = ko.computed({
122
+ read: getFn_1,
123
+ write: function () {
124
+ }
125
+ });
126
+ }
127
+ // check if property is already exposed as a ko object
128
+ }
129
+ else if (ko.isObservable(val)) {
130
+ if (prop.isNavigationProperty) {
131
+ throw new Error("Cannot assign a navigation property in an entity ctor.: " + propName);
132
+ }
133
+ koObj = val;
134
+ // otherwise
135
+ }
136
+ else {
137
+ val = initializeValueForProp(entity, prop, val);
138
+ koObj = prop.isScalar ? ko.observable(val) : ko.observableArray(val);
139
+ }
140
+ if (prop.isScalar) {
141
+ if (propDescr) {
142
+ Object.defineProperty(entity, propName, {
143
+ enumerable: true,
144
+ configurable: true,
145
+ writable: true,
146
+ value: koObj
147
+ });
148
+ }
149
+ else {
150
+ var koExt = koObj.extend({ intercept: { instance: entity, property: prop } });
151
+ entity[propName] = koExt;
152
+ }
153
+ }
154
+ else {
155
+ val._koObj = koObj;
156
+ // code to suppress extra breeze notification when
157
+ // ko's array methods are called.
158
+ koObj.subscribe(onBeforeChange, null, "beforeChange");
159
+ // code to insure that any direct breeze changes notify ko
160
+ val.arrayChanged.subscribe(onArrayChanged);
161
+ koObj.equalityComparer = function () {
162
+ throw new Error("Collection navigation properties may NOT be set.");
163
+ };
164
+ entity[propName] = koObj;
165
+ }
166
+ });
167
+ };
168
+ return ModelLibraryKnockoutAdapter;
169
+ }());
170
+ breezeClient.config.registerAdapter("modelLibrary", ModelLibraryKnockoutAdapter);
171
+ // private fns
172
+ function getES5PropDescriptor(proto, propName) {
173
+ if (!canIsolateES5Props) {
174
+ return null;
175
+ }
176
+ if (proto.hasOwnProperty(propName)) {
177
+ return Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(proto, propName);
178
+ }
179
+ else {
180
+ var nextProto = Object.getPrototypeOf(proto);
181
+ return nextProto ? getES5PropDescriptor(nextProto, propName) : null;
182
+ }
183
+ }
184
+ function initializeValueForProp(entity, prop, val) {
185
+ if (prop instanceof breezeClient.DataProperty) {
186
+ if (prop.isComplexProperty) {
187
+ // TODO: right now we create Empty complexObjects here - these should actually come from the entity
188
+ if (prop.isScalar) {
189
+ val = prop.dataType._createInstanceCore(entity, prop);
190
+ }
191
+ else {
192
+ val = breezeClient.makeComplexArray([], entity, prop);
193
+ }
194
+ }
195
+ else if (!prop.isScalar) {
196
+ val = breezeClient.makePrimitiveArray([], entity, prop);
197
+ }
198
+ else if (val === undefined) {
199
+ val = prop.defaultValue;
200
+ }
201
+ }
202
+ else if (prop instanceof breezeClient.NavigationProperty) {
203
+ if (val !== undefined) {
204
+ throw new Error("Cannot assign a navigation property in an entity ctor.: " + prop.name);
205
+ }
206
+ if (prop.isScalar) {
207
+ // TODO: change this to nullEntity later.
208
+ val = null;
209
+ }
210
+ else {
211
+ val = breezeClient.makeRelationArray([], entity, prop);
212
+ }
213
+ }
214
+ else {
215
+ throw new Error("unknown property: " + prop.name);
216
+ }
217
+ return val;
218
+ }
219
+ function onBeforeChange(args) {
220
+ args._koObj._suppressBreeze = true;
221
+ }
222
+ function onArrayChanged(args) {
223
+ var koObj = args.array._koObj;
224
+ if (koObj._suppressBreeze) {
225
+ koObj._suppressBreeze = false;
226
+ }
227
+ else {
228
+ koObj.valueHasMutated();
229
+ }
230
+ }
231
+ function isolateES5Props(proto) {
232
+ var stype = (proto.entityType || proto.complexType);
233
+ var es5Descriptors = {};
234
+ stype.getProperties().forEach(function (prop) {
235
+ var propDescr = getES5PropDescriptor(proto, prop.name);
236
+ if (propDescr) {
237
+ es5Descriptors[prop.name] = propDescr;
238
+ }
239
+ });
240
+ if (!core.isEmpty(es5Descriptors)) {
241
+ var extra = stype._extra;
242
+ extra.es5Descriptors = es5Descriptors;
243
+ stype._koDummy = ko.observable(null);
244
+ }
245
+ }
246
+
247
+ exports.ModelLibraryKnockoutAdapter = ModelLibraryKnockoutAdapter;
248
+
249
+ Object.defineProperty(exports, '__esModule', { value: true });
250
+
251
+ })));
252
+ //# sourceMappingURL=breeze-client-adapter-model-library-ko.umd.js.map