breeze-client 2.1.5 → 2.1.6-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 (384) hide show
  1. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  2. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  6. package/adapter-data-service-odata/adapter-data-service-odata.d.ts +0 -1
  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/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
  14. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
  17. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
  20. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
  23. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs +461 -0
  28. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
  30. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
  32. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
  34. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
  37. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
  40. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2022/breeze-client.mjs +5 -0
  42. package/esm2022/index.mjs +2 -0
  43. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
  47. package/esm2022/src/abstract-data-service-adapter.mjs +294 -0
  48. package/esm2022/src/array.mjs +4 -0
  49. package/esm2022/src/assert-param.mjs +330 -0
  50. package/esm2022/src/breeze.mjs +85 -0
  51. package/esm2022/src/complex-array.mjs +117 -0
  52. package/esm2022/src/config.mjs +232 -0
  53. package/esm2022/src/core.mjs +712 -0
  54. package/esm2022/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2022/src/data-service.mjs +239 -0
  56. package/esm2022/src/data-type.mjs +507 -0
  57. package/esm2022/src/default-property-interceptor.mjs +460 -0
  58. package/esm2022/src/entity-action.mjs +45 -0
  59. package/esm2022/src/entity-aspect.mjs +897 -0
  60. package/esm2022/src/entity-group.mjs +192 -0
  61. package/esm2022/src/entity-key.mjs +127 -0
  62. package/esm2022/src/entity-manager.mjs +2183 -0
  63. package/esm2022/src/entity-metadata.mjs +2242 -0
  64. package/esm2022/src/entity-query.mjs +1005 -0
  65. package/esm2022/src/entity-state.mjs +107 -0
  66. package/{esm2015/src/enum.js → esm2022/src/enum.mjs} +3 -1
  67. package/esm2022/src/event.mjs +264 -0
  68. package/esm2022/src/interface-registry.mjs +39 -0
  69. package/esm2022/src/key-generator.mjs +110 -0
  70. package/esm2022/src/local-query-comparison-options.mjs +75 -0
  71. package/esm2022/src/mapping-context.mjs +422 -0
  72. package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
  73. package/esm2022/src/observable-array.mjs +183 -0
  74. package/esm2022/src/predicate.mjs +1259 -0
  75. package/esm2022/src/primitive-array.mjs +85 -0
  76. package/esm2022/src/query-options.mjs +160 -0
  77. package/esm2022/src/relation-array.mjs +173 -0
  78. package/esm2022/src/save-options.mjs +51 -0
  79. package/esm2022/src/unattached-children-map.mjs +56 -0
  80. package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
  81. package/esm2022/src/validation-options.mjs +78 -0
  82. package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
  83. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
  85. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
  87. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
  89. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +70 -67
  93. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +36 -29
  95. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
  97. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
  99. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
  101. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
  103. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
  107. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2122 -1540
  109. package/fesm2022/breeze-client.mjs.map +1 -0
  110. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  111. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  112. package/package.json +93 -11
  113. package/src/abstract-data-service-adapter.d.ts +0 -1
  114. package/src/config.d.ts +1 -1
  115. package/src/core.d.ts +1 -1
  116. package/src/data-type.d.ts +5 -0
  117. package/src/entity-aspect.d.ts +6 -6
  118. package/src/entity-manager.d.ts +4 -4
  119. package/src/entity-metadata.d.ts +45 -33
  120. package/src/entity-query.d.ts +1 -1
  121. package/src/entity-state.d.ts +4 -0
  122. package/src/mapping-context.d.ts +1 -1
  123. package/src/predicate.d.ts +4 -7
  124. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  125. package/adapter-ajax-angularjs/package.json +0 -13
  126. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  127. package/adapter-ajax-fetch/package.json +0 -13
  128. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  129. package/adapter-ajax-httpclient/package.json +0 -13
  130. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  131. package/adapter-ajax-jquery/package.json +0 -13
  132. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  133. package/adapter-ajax-post/package.json +0 -13
  134. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  135. package/adapter-data-service-odata/package.json +0 -13
  136. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  137. package/adapter-data-service-webapi/package.json +0 -13
  138. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  139. package/adapter-model-library-backing-store/package.json +0 -13
  140. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  141. package/adapter-model-library-ko/package.json +0 -13
  142. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  143. package/adapter-uri-builder-json/package.json +0 -13
  144. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  145. package/adapter-uri-builder-odata/package.json +0 -13
  146. package/breeze-client.d.ts +0 -8
  147. package/breeze-client.metadata.json +0 -1
  148. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  149. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  150. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  151. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  152. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  153. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  154. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  155. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  156. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  157. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  158. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  159. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  160. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  161. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  162. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  163. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  164. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  165. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  166. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  167. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  168. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
  169. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  170. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  171. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  172. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
  173. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  174. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  175. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  176. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  177. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  178. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  179. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  180. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  181. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  182. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  183. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  184. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  185. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  186. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  187. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  188. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  189. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  190. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  191. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  192. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  193. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  194. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  195. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  196. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  197. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  198. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  199. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  200. package/bundles/breeze-client.umd.js +0 -14098
  201. package/bundles/breeze-client.umd.js.map +0 -1
  202. package/bundles/breeze-client.umd.min.js +0 -16
  203. package/bundles/breeze-client.umd.min.js.map +0 -1
  204. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  205. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  206. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  207. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  208. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  209. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  210. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  211. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  212. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  213. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  214. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  215. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  216. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  217. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  218. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
  219. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  220. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
  221. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  222. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  223. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  224. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  225. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  226. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  227. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  228. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  229. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  230. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  231. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  232. package/esm2015/breeze-client.js +0 -9
  233. package/esm2015/index.js +0 -2
  234. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  235. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  236. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  237. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  238. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  239. package/esm2015/src/array.js +0 -4
  240. package/esm2015/src/assert-param.js +0 -312
  241. package/esm2015/src/breeze.js +0 -85
  242. package/esm2015/src/complex-array.js +0 -119
  243. package/esm2015/src/config.js +0 -223
  244. package/esm2015/src/core.js +0 -709
  245. package/esm2015/src/csdl-metadata-parser.js +0 -385
  246. package/esm2015/src/data-service.js +0 -203
  247. package/esm2015/src/data-type.js +0 -444
  248. package/esm2015/src/default-property-interceptor.js +0 -460
  249. package/esm2015/src/entity-action.js +0 -45
  250. package/esm2015/src/entity-aspect.js +0 -806
  251. package/esm2015/src/entity-group.js +0 -187
  252. package/esm2015/src/entity-key.js +0 -116
  253. package/esm2015/src/entity-manager.js +0 -2094
  254. package/esm2015/src/entity-metadata.js +0 -2109
  255. package/esm2015/src/entity-query.js +0 -996
  256. package/esm2015/src/entity-state.js +0 -99
  257. package/esm2015/src/event.js +0 -256
  258. package/esm2015/src/interface-registry.js +0 -41
  259. package/esm2015/src/key-generator.js +0 -108
  260. package/esm2015/src/local-query-comparison-options.js +0 -65
  261. package/esm2015/src/mapping-context.js +0 -405
  262. package/esm2015/src/naming-convention.js +0 -88
  263. package/esm2015/src/observable-array.js +0 -185
  264. package/esm2015/src/predicate.js +0 -1235
  265. package/esm2015/src/primitive-array.js +0 -87
  266. package/esm2015/src/query-options.js +0 -152
  267. package/esm2015/src/relation-array.js +0 -175
  268. package/esm2015/src/save-options.js +0 -41
  269. package/esm2015/src/unattached-children-map.js +0 -58
  270. package/esm2015/src/validate.js +0 -991
  271. package/esm2015/src/validation-options.js +0 -64
  272. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  273. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  274. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  275. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  276. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  277. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  278. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  279. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  280. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  281. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  282. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  283. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  284. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  285. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  286. package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
  287. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  288. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
  289. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  290. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  291. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  292. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  293. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  294. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  295. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  296. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  297. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  298. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  299. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  300. package/esm5/breeze-client.js +0 -9
  301. package/esm5/index.js +0 -2
  302. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  303. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  304. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  305. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  306. package/esm5/src/abstract-data-service-adapter.js +0 -302
  307. package/esm5/src/array.js +0 -4
  308. package/esm5/src/assert-param.js +0 -317
  309. package/esm5/src/breeze.js +0 -85
  310. package/esm5/src/complex-array.js +0 -119
  311. package/esm5/src/config.js +0 -228
  312. package/esm5/src/core.js +0 -717
  313. package/esm5/src/csdl-metadata-parser.js +0 -385
  314. package/esm5/src/data-service.js +0 -207
  315. package/esm5/src/data-type.js +0 -451
  316. package/esm5/src/default-property-interceptor.js +0 -460
  317. package/esm5/src/entity-action.js +0 -52
  318. package/esm5/src/entity-aspect.js +0 -812
  319. package/esm5/src/entity-group.js +0 -189
  320. package/esm5/src/entity-key.js +0 -118
  321. package/esm5/src/entity-manager.js +0 -2112
  322. package/esm5/src/entity-metadata.js +0 -2144
  323. package/esm5/src/entity-query.js +0 -1023
  324. package/esm5/src/entity-state.js +0 -106
  325. package/esm5/src/enum.js +0 -144
  326. package/esm5/src/event.js +0 -259
  327. package/esm5/src/interface-registry.js +0 -43
  328. package/esm5/src/key-generator.js +0 -111
  329. package/esm5/src/local-query-comparison-options.js +0 -67
  330. package/esm5/src/mapping-context.js +0 -407
  331. package/esm5/src/observable-array.js +0 -201
  332. package/esm5/src/predicate.js +0 -1300
  333. package/esm5/src/primitive-array.js +0 -87
  334. package/esm5/src/query-options.js +0 -167
  335. package/esm5/src/relation-array.js +0 -175
  336. package/esm5/src/save-options.js +0 -43
  337. package/esm5/src/unattached-children-map.js +0 -60
  338. package/esm5/src/validation-options.js +0 -66
  339. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  340. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  341. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  342. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  343. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  344. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  345. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  346. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  347. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  348. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  349. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  350. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  351. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  352. package/fesm2015/breeze-client.js.map +0 -1
  353. package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
  354. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  355. package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
  356. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  357. package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
  358. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  359. package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
  360. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  361. package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
  362. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  363. package/fesm5/breeze-client-adapter-data-service-odata.js +0 -519
  364. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  365. package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -104
  366. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  367. package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
  368. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  369. package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
  370. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  371. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  372. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  373. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  374. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  375. package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
  376. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  377. package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
  378. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  379. package/fesm5/breeze-client.js +0 -13820
  380. package/fesm5/breeze-client.js.map +0 -1
  381. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  382. package/mixin-get-entity-graph/package.json +0 -13
  383. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  384. package/mixin-save-queuing/package.json +0 -13
@@ -1,99 +0,0 @@
1
- import { BreezeEnum } from './enum';
2
- /**
3
- EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
4
- **/
5
- export class EntityState extends BreezeEnum {
6
- /**
7
- Returns whether an entityState instance is EntityState.Unchanged.
8
- > var es = anEntity.entityAspect.entityState;
9
- > return es.isUnchanged();
10
-
11
- is the same as
12
- > return es === EntityState.Unchanged;
13
- **/
14
- isUnchanged() {
15
- return this === EntityState.Unchanged;
16
- }
17
- /**
18
- Return whether an entityState instance is EntityState.Added.
19
-
20
- > var es = anEntity.entityAspect.entityState;
21
- > return es.isAdded();
22
-
23
- is the same as
24
- > return es === EntityState.Added;
25
- **/
26
- isAdded() {
27
- return this === EntityState.Added;
28
- }
29
- /**
30
- Returns whether an entityState instance is EntityState.Modified.
31
- > var es = anEntity.entityAspect.entityState;
32
- > return es.isModified();
33
-
34
- is the same as
35
- > return es === EntityState.Modified;
36
- **/
37
- isModified() {
38
- return this === EntityState.Modified;
39
- }
40
- /**
41
- Returns whether an entityState instance is EntityState.Deleted.
42
- > var es = anEntity.entityAspect.entityState;
43
- > return es.isDeleted();
44
-
45
- is the same as
46
-
47
- > return es === EntityState.Deleted;
48
- **/
49
- isDeleted() {
50
- return this === EntityState.Deleted;
51
- }
52
- /**
53
- Returns whether an entityState instance is EntityState.Detached.
54
- > var es = anEntity.entityAspect.entityState;
55
- > return es.isDetached();
56
-
57
- is the same as
58
- > return es === EntityState.Detached;
59
- **/
60
- isDetached() {
61
- return this === EntityState.Detached;
62
- }
63
- /**
64
- Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
65
- > var es = anEntity.entityAspect.entityState;
66
- > return es.isUnchangedOrModified();
67
-
68
- is the same as
69
- > return es === EntityState.Unchanged || es === EntityState.Modified
70
- **/
71
- isUnchangedOrModified() {
72
- return this === EntityState.Unchanged || this === EntityState.Modified;
73
- }
74
- /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
75
- > var es = anEntity.entityAspect.entityState;
76
- > return es.isAddedModifiedOrDeleted();
77
-
78
- is the same as
79
- > return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
80
- **/
81
- isAddedModifiedOrDeleted() {
82
- return this === EntityState.Added ||
83
- this === EntityState.Modified ||
84
- this === EntityState.Deleted;
85
- }
86
- }
87
- /** The 'Unchanged' state. **/
88
- EntityState.Unchanged = new EntityState();
89
- /** The 'Added' state. **/
90
- EntityState.Added = new EntityState();
91
- /** The 'Modified' state. **/
92
- EntityState.Modified = new EntityState();
93
- /** The 'Deleted' state. **/
94
- EntityState.Deleted = new EntityState();
95
- /** The 'Detached' state. **/
96
- EntityState.Detached = new EntityState();
97
- EntityState.prototype._$typeName = "EntityState";
98
- Error['x'] = EntityState.resolveSymbols();
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9lbnRpdHktc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQzs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsVUFBVTtJQWF6Qzs7Ozs7OztPQU9HO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSztZQUMvQixJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVE7WUFDN0IsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQzs7QUFoR0QsOEJBQThCO0FBQ3ZCLHFCQUFTLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUNyQyw0QkFBNEI7QUFDckIsaUJBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2pDLGdDQUFnQztBQUN6QixvQkFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDcEMsOEJBQThCO0FBQ3ZCLG1CQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztBQUNuQywrQkFBK0I7QUFDeEIsb0JBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBMEZ0QyxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7QUFDakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWV6ZUVudW0gfSBmcm9tICcuL2VudW0nO1xyXG5cclxuLyoqXHJcbkVudGl0eVN0YXRlIGlzIGFuICdFbnVtJyBjb250YWluaW5nIGFsbCBvZiB0aGUgdmFsaWQgc3RhdGVzIGZvciBhbiAnRW50aXR5Jy5cclxuKiovXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlTdGF0ZSBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG5cclxuICAvKiogVGhlICdVbmNoYW5nZWQnIHN0YXRlLiAqKi9cclxuICBzdGF0aWMgVW5jaGFuZ2VkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0FkZGVkJyBzdGF0ZS4gICoqL1xyXG4gIHN0YXRpYyBBZGRlZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG4gIC8qKiAgVGhlICdNb2RpZmllZCcgc3RhdGUuICAgKiovXHJcbiAgc3RhdGljIE1vZGlmaWVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0RlbGV0ZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIERlbGV0ZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuICAvKiogIFRoZSAnRGV0YWNoZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIERldGFjaGVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc1VuY2hhbmdlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkO1xyXG4gICoqL1xyXG4gIGlzVW5jaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybiB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLkFkZGVkLlxyXG4gIFxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNBZGRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQ7XHJcbiAgKiovXHJcbiAgaXNBZGRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5BZGRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5Nb2RpZmllZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzTW9kaWZpZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkO1xyXG4gICoqL1xyXG4gIGlzTW9kaWZpZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuRGVsZXRlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzRGVsZXRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gIFxyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICAqKi9cclxuICBpc0RlbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5EZXRhY2hlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzRGV0YWNoZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLkRldGFjaGVkO1xyXG4gICoqL1xyXG4gIGlzRGV0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuVW5jaGFuZ2VkIG9yIEVudGl0eVN0YXRlLk1vZGlmaWVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNVbmNoYW5nZWRPck1vZGlmaWVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkXHJcbiAgKiovXHJcbiAgaXNVbmNoYW5nZWRPck1vZGlmaWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZCB8fCB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuQWRkZWQgb3IgRW50aXR5U3RhdGUuTW9kaWZpZWQgb3IgRW50aXR5U3RhdGUuRGVsZXRlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzQWRkZWRNb2RpZmllZE9yRGVsZXRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkIHx8IGVzID09PSBFbnRpdHlTdGF0ZS5EZWxldGVkXHJcbiAgKiovXHJcbiAgaXNBZGRlZE1vZGlmaWVkT3JEZWxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkFkZGVkIHx8XHJcbiAgICAgIHRoaXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkIHx8XHJcbiAgICAgIHRoaXMgPT09IEVudGl0eVN0YXRlLkRlbGV0ZWQ7XHJcbiAgfVxyXG5cclxufVxyXG5FbnRpdHlTdGF0ZS5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiRW50aXR5U3RhdGVcIjtcclxuRXJyb3JbJ3gnXSA9IEVudGl0eVN0YXRlLnJlc29sdmVTeW1ib2xzKCk7XHJcbiJdfQ==
@@ -1,256 +0,0 @@
1
- import { core } from './core';
2
- import { assertParam } from './assert-param';
3
- function publishCore(that, data, errorCallback) {
4
- let subscribers = that._subscribers;
5
- if (!subscribers)
6
- return true;
7
- // subscribers from outer scope.
8
- subscribers.forEach(function (s) {
9
- try {
10
- s.callback(data);
11
- }
12
- catch (e) {
13
- e.context = "unable to publish on topic: " + that.name;
14
- if (errorCallback) {
15
- errorCallback(e);
16
- }
17
- else if (that._defaultErrorCallback) {
18
- that._defaultErrorCallback(e);
19
- }
20
- else {
21
- fallbackErrorHandler(e);
22
- }
23
- }
24
- });
25
- }
26
- function fallbackErrorHandler(e) {
27
- // TODO: maybe log this
28
- // for now do nothing;
29
- }
30
- /**
31
- Class to support basic event publication and subscription semantics.
32
- @dynamic
33
- **/
34
- export class BreezeEvent {
35
- /**
36
- Constructor for an Event
37
- > salaryEvent = new BreezeEvent("salaryEvent", person);
38
- @param name - The name of the event.
39
- @param publisher - The object that will be doing the publication. i.e. the object to which this event is attached.
40
- @param defaultErrorCallback - Function to call when an error occurs during subscription execution.
41
- If omitted then subscriber notification failures will be ignored.
42
- **/
43
- constructor(name, publisher, defaultErrorCallback) {
44
- /**
45
- Unsubscribe from this event.
46
- > // Assume order is a preexisting 'order' entity
47
- > let token = order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
48
- > // do something
49
- > });
50
- > // sometime later
51
- > order.entityAspect.propertyChanged.unsubscribe(token);
52
- @param unsubKey - The value returned from the 'subscribe' method may be used to unsubscribe here.
53
- @return Whether unsubscription occured. This will return false if already unsubscribed or if the key simply
54
- cannot be found.
55
- **/
56
- this.unsubscribe = function (unsubKey) {
57
- if (!this._subscribers)
58
- return false;
59
- let subs = this._subscribers;
60
- let ix = core.arrayIndexOf(subs, function (s) {
61
- return s.unsubKey === unsubKey;
62
- });
63
- if (ix !== -1) {
64
- subs.splice(ix, 1);
65
- if (subs.length === 0) {
66
- this._subscribers = null;
67
- }
68
- return true;
69
- }
70
- else {
71
- return false;
72
- }
73
- };
74
- assertParam(name, "eventName").isNonEmptyString().check();
75
- assertParam(publisher, "publisher").isObject().check();
76
- this.name = name;
77
- // register the name
78
- BreezeEvent.__eventNameMap[name] = true;
79
- this.publisher = publisher;
80
- if (defaultErrorCallback) {
81
- this._defaultErrorCallback = defaultErrorCallback;
82
- }
83
- }
84
- /**
85
- Publish data for this event.
86
- > // Assume 'salaryEvent' is previously constructed Event
87
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 });
88
-
89
- This event can also be published asychronously
90
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true);
91
-
92
- And we can add a handler in case the subscriber 'mishandles' the event.
93
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true, function(error) {
94
- > // do something with the 'error' object
95
- > });
96
- @param data - Data to publish
97
- @param publishAsync - (default=false) Whether to publish asynchonously or not.
98
- @param errorCallback - Function to be called for any errors that occur during publication. If omitted,
99
- errors will be eaten.
100
- @return false if event is disabled; true otherwise.
101
- **/
102
- publish(data, publishAsync = false, errorCallback) {
103
- if (!BreezeEvent._isEnabled(this.name, this.publisher))
104
- return false;
105
- if (publishAsync === true) {
106
- setTimeout(publishCore, 0, this, data, errorCallback);
107
- }
108
- else {
109
- publishCore(this, data, errorCallback);
110
- }
111
- return true;
112
- }
113
- /**
114
- Publish data for this event asynchronously.
115
- > // Assume 'salaryEvent' is previously constructed Event
116
- > salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 });
117
-
118
- And we can add a handler in case the subscriber 'mishandles' the event.
119
- > salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 }, function(error) {
120
- > // do something with the 'error' object
121
- > });
122
- @param data - Data to publish
123
- @param errorCallback - Function to be called for any errors that occur during publication. If omitted,
124
- errors will be eaten.
125
- **/
126
- publishAsync(data, errorCallback) {
127
- this.publish(data, true, errorCallback);
128
- }
129
- /**
130
- Subscribe to this event.
131
- > // Assume 'salaryEvent' is previously constructed Event
132
- > salaryEvent.subscribe(function (eventArgs) {
133
- > if (eventArgs.eventType === "payRaise") {
134
- > // do something
135
- > }
136
- > });
137
-
138
- There are several built in Breeze events, such as [[EntityAspect.propertyChanged]], [[EntityAspect.validationErrorsChanged]] as well.
139
- > // Assume order is a preexisting 'order' entity
140
- > order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
141
- > if ( pcEvent.propertyName === "OrderDate") {
142
- > // do something
143
- > }
144
- > });
145
- @param callback- Function to be called whenever 'data' is published for this event.
146
- @param callback.data - {Object} Whatever 'data' was published. This should be documented on the specific event.
147
- @return This is a key for 'unsubscription'. It can be passed to the 'unsubscribe' method.
148
- **/
149
- subscribe(callback) {
150
- if (!this._subscribers) {
151
- this._subscribers = [];
152
- }
153
- let unsubKey = BreezeEvent.__nextUnsubKey;
154
- this._subscribers.push({ unsubKey: unsubKey, callback: callback });
155
- ++BreezeEvent.__nextUnsubKey;
156
- return unsubKey;
157
- }
158
- /** remove all subscribers */
159
- clear() {
160
- this._subscribers = null;
161
- }
162
- /** event bubbling - document later. */
163
- // null or undefined 'getParentFn' means Event does not need to bubble i.e. that it is always enabled - .
164
- static bubbleEvent(target, getParentFn) {
165
- target._getEventParent = getParentFn || null;
166
- }
167
- /**
168
- Enables or disables the named event for an object and all of its children.
169
- > BreezeEvent.enable(“propertyChanged”, myEntityManager, false)
170
-
171
- will disable all EntityAspect.propertyChanged events within a EntityManager.
172
- > BreezeEvent.enable(“propertyChanged”, myEntityManager, true)
173
-
174
- will enable all EntityAspect.propertyChanged events within a EntityManager.
175
- > BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, false)
176
-
177
- will disable EntityAspect.propertyChanged events for a specific entity.
178
- > BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, null)
179
-
180
- will removes any enabling / disabling at the entity aspect level so now any 'Event.enable' calls at the EntityManager level,
181
- made either previously or in the future, will control notification.
182
- > BreezeEvent.enable(“validationErrorsChanged”, myEntityManager, function(em) {
183
- > return em.customTag === “blue”;
184
- > })
185
-
186
-
187
- will either enable or disable myEntityManager based on the current value of a ‘customTag’ property on myEntityManager.
188
- Note that this is dynamic, changing the customTag value will cause events to be enabled or disabled immediately.
189
- @param eventName - The name of the event.
190
- @param target - The object at which enabling or disabling will occur. All event notifications that occur to this object or
191
- children of this object will be enabled or disabled.
192
- @param isEnabled - A boolean, a null or a function that returns either a boolean or a null.
193
- **/
194
- static enable(eventName, obj, isEnabled) {
195
- assertParam(eventName, "eventName").isNonEmptyString().check();
196
- assertParam(obj, "obj").isObject().check();
197
- assertParam(isEnabled, "isEnabled").isBoolean().isOptional().or().isFunction().check();
198
- let ob = obj;
199
- if (!ob._$eventMap) {
200
- ob._$eventMap = {};
201
- }
202
- ob._$eventMap[eventName] = isEnabled;
203
- }
204
- /**
205
- Returns whether for a specific event and a specific object and its children, notification is enabled or disabled or not set.
206
- > BreezeEvent.isEnabled(“propertyChanged”, myEntityManager)
207
- >
208
- @param eventName - The name of the event.
209
- @param target - The object for which we want to know if notifications are enabled.
210
- @return A null is returned if this value has not been set.
211
- **/
212
- static isEnabled(eventName, obj) {
213
- assertParam(eventName, "eventName").isNonEmptyString().check();
214
- assertParam(obj, "obj").isObject().check();
215
- // null is ok - it just means that the object is at the top level.
216
- if (obj._getEventParent === undefined) {
217
- throw new Error("This object does not support event enabling/disabling");
218
- }
219
- // return ctor._isEnabled(getFullEventName(eventName), obj);
220
- return BreezeEvent._isEnabled(eventName, 3);
221
- }
222
- }
223
- /** @hidden @internal */
224
- BreezeEvent.__eventNameMap = {};
225
- /** @hidden @internal */
226
- BreezeEvent.__nextUnsubKey = 1;
227
- /** @hidden @internal */
228
- BreezeEvent._isEnabled = function (eventName, obj) {
229
- let isEnabled = null;
230
- let ob = obj;
231
- let eventMap = ob._$eventMap;
232
- if (eventMap) {
233
- isEnabled = eventMap[eventName];
234
- }
235
- if (isEnabled != null) {
236
- if (typeof isEnabled === 'function') {
237
- return !!isEnabled(obj);
238
- }
239
- else {
240
- return !!isEnabled;
241
- }
242
- }
243
- else {
244
- let parent = ob._getEventParent && ob._getEventParent();
245
- if (parent) {
246
- return !!this._isEnabled(eventName, parent);
247
- }
248
- else {
249
- // default if not explicitly disabled.
250
- return true;
251
- }
252
- }
253
- };
254
- // legacy support - deliberately not typed
255
- core.Event = BreezeEvent;
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFNBQVMsV0FBVyxDQUFJLElBQW9CLEVBQUUsSUFBTyxFQUFFLGFBQWlDO0lBQ3RGLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDcEMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5QixnQ0FBZ0M7SUFDaEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDN0IsSUFBSTtZQUNGLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLENBQUMsQ0FBQyxPQUFPLEdBQUcsOEJBQThCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RCxJQUFJLGFBQWEsRUFBRTtnQkFDakIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xCO2lCQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUNyQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0wsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsQ0FBUTtJQUNwQyx1QkFBdUI7SUFDdkIsc0JBQXNCO0FBQ3hCLENBQUM7QUFTRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sV0FBVztJQWdCdEI7Ozs7Ozs7T0FPRztJQUNILFlBQVksSUFBWSxFQUFFLFNBQWlCLEVBQUUsb0JBQXdDO1FBMkZyRjs7Ozs7Ozs7Ozs7V0FXRztRQUNILGdCQUFXLEdBQUcsVUFBVSxRQUFnQjtZQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7Z0JBQUUsT0FBTyxLQUFLLENBQUM7WUFDckMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM3QixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7aUJBQzFCO2dCQUNELE9BQU8sSUFBSSxDQUFDO2FBQ2I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQztRQXJIQSxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUQsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixvQkFBb0I7UUFDcEIsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxvQkFBb0IsRUFBRTtZQUN4QixJQUFJLENBQUMscUJBQXFCLEdBQUcsb0JBQW9CLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsT0FBTyxDQUFDLElBQU8sRUFBRSxlQUF3QixLQUFLLEVBQUUsYUFBaUM7UUFFL0UsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFckUsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFO1lBQ3pCLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDdkQ7YUFBTTtZQUNMLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsWUFBWSxDQUFDLElBQU8sRUFBRSxhQUFnQztRQUNwRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUJHO0lBQ0gsU0FBUyxDQUFDLFFBQTBCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1NBQ3hCO1FBRUQsSUFBSSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbkUsRUFBRSxXQUFXLENBQUMsY0FBYyxDQUFDO1FBQzdCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUErQkQsNkJBQTZCO0lBQzdCLEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxHQUFRLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsdUNBQXVDO0lBRXZDLHlHQUF5RztJQUN6RyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQVcsRUFBRSxXQUF5QjtRQUN2RCxNQUFNLENBQUMsZUFBZSxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBCRztJQUNKLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBaUIsRUFBRSxHQUFXLEVBQUUsU0FBMEM7UUFDckYsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQy9ELFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsV0FBVyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN2RixJQUFJLEVBQUUsR0FBUSxHQUFHLENBQUM7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUU7WUFDbEIsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7U0FDcEI7UUFDRCxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBaUIsRUFBRSxHQUFXO1FBQzdDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvRCxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNDLGtFQUFrRTtRQUNsRSxJQUFVLEdBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFO1lBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztTQUMxRTtRQUNELDREQUE0RDtRQUM1RCxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7O0FBbE5ELHdCQUF3QjtBQUNqQiwwQkFBYyxHQUFHLEVBQUUsQ0FBQztBQUMzQix3QkFBd0I7QUFDakIsMEJBQWMsR0FBRyxDQUFDLENBQUM7QUFpTjFCLHdCQUF3QjtBQUNqQixzQkFBVSxHQUFHLFVBQVUsU0FBaUIsRUFBRSxHQUFXO0lBQzFELElBQUksU0FBUyxHQUFRLElBQUksQ0FBQztJQUMxQixJQUFJLEVBQUUsR0FBUSxHQUFHLENBQUM7SUFDbEIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUM3QixJQUFJLFFBQVEsRUFBRTtRQUNaLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDakM7SUFDRCxJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUU7UUFDckIsSUFBSSxPQUFPLFNBQVMsS0FBSyxVQUFVLEVBQUU7WUFDbkMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDcEI7S0FDRjtTQUFNO1FBQ0wsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEQsSUFBSSxNQUFNLEVBQUU7WUFDVixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM3QzthQUFNO1lBQ0wsc0NBQXNDO1lBQ3RDLE9BQU8sSUFBSSxDQUFDO1NBQ2I7S0FDRjtBQUNILENBQUMsQ0FBQztBQUtKLDBDQUEwQztBQUN6QyxJQUFZLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBhc3NlcnRQYXJhbSB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuXHJcbmZ1bmN0aW9uIHB1Ymxpc2hDb3JlPFQ+KHRoYXQ6IEJyZWV6ZUV2ZW50PFQ+LCBkYXRhOiBULCBlcnJvckNhbGxiYWNrPzogKGU6IEVycm9yKSA9PiBhbnkpIHtcclxuICBsZXQgc3Vic2NyaWJlcnMgPSB0aGF0Ll9zdWJzY3JpYmVycztcclxuICBpZiAoIXN1YnNjcmliZXJzKSByZXR1cm4gdHJ1ZTtcclxuICAvLyBzdWJzY3JpYmVycyBmcm9tIG91dGVyIHNjb3BlLlxyXG4gIHN1YnNjcmliZXJzLmZvckVhY2goZnVuY3Rpb24gKHMpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHMuY2FsbGJhY2soZGF0YSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGUuY29udGV4dCA9IFwidW5hYmxlIHRvIHB1Ymxpc2ggb24gdG9waWM6IFwiICsgdGhhdC5uYW1lO1xyXG4gICAgICBpZiAoZXJyb3JDYWxsYmFjaykge1xyXG4gICAgICAgIGVycm9yQ2FsbGJhY2soZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhhdC5fZGVmYXVsdEVycm9yQ2FsbGJhY2spIHtcclxuICAgICAgICB0aGF0Ll9kZWZhdWx0RXJyb3JDYWxsYmFjayhlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmYWxsYmFja0Vycm9ySGFuZGxlcihlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmYWxsYmFja0Vycm9ySGFuZGxlcihlOiBFcnJvcikge1xyXG4gIC8vIFRPRE86IG1heWJlIGxvZyB0aGlzXHJcbiAgLy8gZm9yIG5vdyBkbyBub3RoaW5nO1xyXG59XHJcblxyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uIHtcclxuICB1bnN1YktleTogbnVtYmVyO1xyXG4gIGNhbGxiYWNrOiAoZGF0YTogYW55KSA9PiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG5DbGFzcyB0byBzdXBwb3J0IGJhc2ljIGV2ZW50IHB1YmxpY2F0aW9uIGFuZCBzdWJzY3JpcHRpb24gc2VtYW50aWNzLlxyXG5AZHluYW1pY1xyXG4qKi9cclxuZXhwb3J0IGNsYXNzIEJyZWV6ZUV2ZW50PFQ+IHtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBzdGF0aWMgX19ldmVudE5hbWVNYXAgPSB7fTtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBzdGF0aWMgX19uZXh0VW5zdWJLZXkgPSAxO1xyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIEV2ZW50ICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUaGUgb2JqZWN0IGRvaW5nIHRoZSBwdWJsaWNhdGlvbi4gaS5lLiB0aGUgb2JqZWN0IHRvIHdoaWNoIHRoaXMgZXZlbnQgaXMgYXR0YWNoZWQuICovXHJcbiAgcHVibGlzaGVyOiBPYmplY3Q7XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIF9zdWJzY3JpYmVyczogU3Vic2NyaXB0aW9uW107XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgX2RlZmF1bHRFcnJvckNhbGxiYWNrOiAoZTogRXJyb3IpID0+IGFueTtcclxuXHJcblxyXG4gIC8qKlxyXG4gIENvbnN0cnVjdG9yIGZvciBhbiBFdmVudFxyXG4gID4gICAgIHNhbGFyeUV2ZW50ID0gbmV3IEJyZWV6ZUV2ZW50KFwic2FsYXJ5RXZlbnRcIiwgcGVyc29uKTtcclxuICBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cclxuICBAcGFyYW0gcHVibGlzaGVyIC0gVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgZG9pbmcgdGhlIHB1YmxpY2F0aW9uLiBpLmUuIHRoZSBvYmplY3QgdG8gd2hpY2ggdGhpcyBldmVudCBpcyBhdHRhY2hlZC5cclxuICBAcGFyYW0gZGVmYXVsdEVycm9yQ2FsbGJhY2sgLSBGdW5jdGlvbiB0byBjYWxsIHdoZW4gYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBzdWJzY3JpcHRpb24gZXhlY3V0aW9uLiBcclxuICBJZiBvbWl0dGVkIHRoZW4gc3Vic2NyaWJlciBub3RpZmljYXRpb24gZmFpbHVyZXMgd2lsbCBiZSBpZ25vcmVkLlxyXG4gICoqL1xyXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcHVibGlzaGVyOiBPYmplY3QsIGRlZmF1bHRFcnJvckNhbGxiYWNrPzogKGU6IEVycm9yKSA9PiBhbnkpIHtcclxuICAgIGFzc2VydFBhcmFtKG5hbWUsIFwiZXZlbnROYW1lXCIpLmlzTm9uRW1wdHlTdHJpbmcoKS5jaGVjaygpO1xyXG4gICAgYXNzZXJ0UGFyYW0ocHVibGlzaGVyLCBcInB1Ymxpc2hlclwiKS5pc09iamVjdCgpLmNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgIC8vIHJlZ2lzdGVyIHRoZSBuYW1lXHJcbiAgICBCcmVlemVFdmVudC5fX2V2ZW50TmFtZU1hcFtuYW1lXSA9IHRydWU7XHJcbiAgICB0aGlzLnB1Ymxpc2hlciA9IHB1Ymxpc2hlcjtcclxuICAgIGlmIChkZWZhdWx0RXJyb3JDYWxsYmFjaykge1xyXG4gICAgICB0aGlzLl9kZWZhdWx0RXJyb3JDYWxsYmFjayA9IGRlZmF1bHRFcnJvckNhbGxiYWNrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUHVibGlzaCBkYXRhIGZvciB0aGlzIGV2ZW50LlxyXG4gID4gICAgICAvLyBBc3N1bWUgJ3NhbGFyeUV2ZW50JyBpcyBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIEV2ZW50XHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnB1Ymxpc2goIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0pO1xyXG5cclxuICBUaGlzIGV2ZW50IGNhbiBhbHNvIGJlIHB1Ymxpc2hlZCBhc3ljaHJvbm91c2x5XHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnB1Ymxpc2goIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0sIHRydWUpO1xyXG5cclxuICBBbmQgd2UgY2FuIGFkZCBhIGhhbmRsZXIgaW4gY2FzZSB0aGUgc3Vic2NyaWJlciAnbWlzaGFuZGxlcycgdGhlIGV2ZW50LlxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoKCB7IGV2ZW50VHlwZTogXCJwYXlSYWlzZVwiLCBhbW91bnQ6IDEwMCB9LCB0cnVlLCBmdW5jdGlvbihlcnJvcikge1xyXG4gID4gICAgICAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlICdlcnJvcicgb2JqZWN0XHJcbiAgPiAgICAgIH0pO1xyXG4gIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBwdWJsaXNoXHJcbiAgQHBhcmFtIHB1Ymxpc2hBc3luYyAtIChkZWZhdWx0PWZhbHNlKSBXaGV0aGVyIHRvIHB1Ymxpc2ggYXN5bmNob25vdXNseSBvciBub3QuXHJcbiAgQHBhcmFtIGVycm9yQ2FsbGJhY2sgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgZm9yIGFueSBlcnJvcnMgdGhhdCBvY2N1ciBkdXJpbmcgcHVibGljYXRpb24uIElmIG9taXR0ZWQsXHJcbiAgZXJyb3JzIHdpbGwgYmUgZWF0ZW4uXHJcbiAgQHJldHVybiBmYWxzZSBpZiBldmVudCBpcyBkaXNhYmxlZDsgdHJ1ZSBvdGhlcndpc2UuXHJcbiAgKiovXHJcbiAgcHVibGlzaChkYXRhOiBULCBwdWJsaXNoQXN5bmM6IGJvb2xlYW4gPSBmYWxzZSwgZXJyb3JDYWxsYmFjaz86IChlOiBFcnJvcikgPT4gYW55KSB7XHJcblxyXG4gICAgaWYgKCFCcmVlemVFdmVudC5faXNFbmFibGVkKHRoaXMubmFtZSwgdGhpcy5wdWJsaXNoZXIpKSByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKHB1Ymxpc2hBc3luYyA9PT0gdHJ1ZSkge1xyXG4gICAgICBzZXRUaW1lb3V0KHB1Ymxpc2hDb3JlLCAwLCB0aGlzLCBkYXRhLCBlcnJvckNhbGxiYWNrKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHB1Ymxpc2hDb3JlKHRoaXMsIGRhdGEsIGVycm9yQ2FsbGJhY2spO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBQdWJsaXNoIGRhdGEgZm9yIHRoaXMgZXZlbnQgYXN5bmNocm9ub3VzbHkuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSAnc2FsYXJ5RXZlbnQnIGlzIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgRXZlbnRcclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaEFzeW5jKCB7IGV2ZW50VHlwZTogXCJwYXlSYWlzZVwiLCBhbW91bnQ6IDEwMCB9KTtcclxuXHJcbiAgQW5kIHdlIGNhbiBhZGQgYSBoYW5kbGVyIGluIGNhc2UgdGhlIHN1YnNjcmliZXIgJ21pc2hhbmRsZXMnIHRoZSBldmVudC5cclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaEFzeW5jKCB7IGV2ZW50VHlwZTogXCJwYXlSYWlzZVwiLCBhbW91bnQ6IDEwMCB9LCBmdW5jdGlvbihlcnJvcikge1xyXG4gID4gICAgICAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlICdlcnJvcicgb2JqZWN0XHJcbiAgPiAgICAgIH0pO1xyXG4gIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBwdWJsaXNoXHJcbiAgQHBhcmFtIGVycm9yQ2FsbGJhY2sgLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgZm9yIGFueSBlcnJvcnMgdGhhdCBvY2N1ciBkdXJpbmcgcHVibGljYXRpb24uIElmIG9taXR0ZWQsXHJcbiAgZXJyb3JzIHdpbGwgYmUgZWF0ZW4uXHJcbiAgKiovXHJcbiAgcHVibGlzaEFzeW5jKGRhdGE6IFQsIGVycm9yQ2FsbGJhY2s6IChlOiBFcnJvcikgPT4gYW55KSB7XHJcbiAgICB0aGlzLnB1Ymxpc2goZGF0YSwgdHJ1ZSwgZXJyb3JDYWxsYmFjayk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBTdWJzY3JpYmUgdG8gdGhpcyBldmVudC5cclxuICA+ICAgICAgLy8gQXNzdW1lICdzYWxhcnlFdmVudCcgaXMgcHJldmlvdXNseSBjb25zdHJ1Y3RlZCBFdmVudFxyXG4gID4gICAgICBzYWxhcnlFdmVudC5zdWJzY3JpYmUoZnVuY3Rpb24gKGV2ZW50QXJncykge1xyXG4gID4gICAgICAgICAgaWYgKGV2ZW50QXJncy5ldmVudFR5cGUgPT09IFwicGF5UmFpc2VcIikge1xyXG4gID4gICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xyXG4gID4gICAgICAgICAgfVxyXG4gID4gICAgICB9KTtcclxuXHJcbiAgVGhlcmUgYXJlIHNldmVyYWwgYnVpbHQgaW4gQnJlZXplIGV2ZW50cywgc3VjaCBhcyBbW0VudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWRdXSwgW1tFbnRpdHlBc3BlY3QudmFsaWRhdGlvbkVycm9yc0NoYW5nZWRdXSBhcyB3ZWxsLlxyXG4gID4gICAgICAvLyBBc3N1bWUgb3JkZXIgaXMgYSBwcmVleGlzdGluZyAnb3JkZXInIGVudGl0eVxyXG4gID4gICAgICBvcmRlci5lbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkLnN1YnNjcmliZShmdW5jdGlvbiAocGNFdmVudCkge1xyXG4gID4gICAgICAgICAgaWYgKCBwY0V2ZW50LnByb3BlcnR5TmFtZSA9PT0gXCJPcmRlckRhdGVcIikge1xyXG4gID4gICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xyXG4gID4gICAgICAgICAgfVxyXG4gID4gICAgICB9KTtcclxuICBAcGFyYW0gY2FsbGJhY2stIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuZXZlciAnZGF0YScgaXMgcHVibGlzaGVkIGZvciB0aGlzIGV2ZW50LlxyXG4gIEBwYXJhbSBjYWxsYmFjay5kYXRhIC0ge09iamVjdH0gV2hhdGV2ZXIgJ2RhdGEnIHdhcyBwdWJsaXNoZWQuICBUaGlzIHNob3VsZCBiZSBkb2N1bWVudGVkIG9uIHRoZSBzcGVjaWZpYyBldmVudC5cclxuICBAcmV0dXJuIFRoaXMgaXMgYSBrZXkgZm9yICd1bnN1YnNjcmlwdGlvbicuICBJdCBjYW4gYmUgcGFzc2VkIHRvIHRoZSAndW5zdWJzY3JpYmUnIG1ldGhvZC5cclxuICAqKi9cclxuICBzdWJzY3JpYmUoY2FsbGJhY2s6IChkYXRhOiBUKSA9PiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5fc3Vic2NyaWJlcnMpIHtcclxuICAgICAgdGhpcy5fc3Vic2NyaWJlcnMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdW5zdWJLZXkgPSBCcmVlemVFdmVudC5fX25leHRVbnN1YktleTtcclxuICAgIHRoaXMuX3N1YnNjcmliZXJzLnB1c2goeyB1bnN1YktleTogdW5zdWJLZXksIGNhbGxiYWNrOiBjYWxsYmFjayB9KTtcclxuICAgICsrQnJlZXplRXZlbnQuX19uZXh0VW5zdWJLZXk7XHJcbiAgICByZXR1cm4gdW5zdWJLZXk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBVbnN1YnNjcmliZSBmcm9tIHRoaXMgZXZlbnQuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSBvcmRlciBpcyBhIHByZWV4aXN0aW5nICdvcmRlcicgZW50aXR5XHJcbiAgPiAgICAgIGxldCB0b2tlbiA9IG9yZGVyLmVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQuc3Vic2NyaWJlKGZ1bmN0aW9uIChwY0V2ZW50KSB7XHJcbiAgPiAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgIH0pO1xyXG4gID4gICAgICAvLyBzb21ldGltZSBsYXRlclxyXG4gID4gICAgICBvcmRlci5lbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkLnVuc3Vic2NyaWJlKHRva2VuKTtcclxuICBAcGFyYW0gdW5zdWJLZXkgLSBUaGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgJ3N1YnNjcmliZScgbWV0aG9kIG1heSBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIGhlcmUuXHJcbiAgQHJldHVybiBXaGV0aGVyIHVuc3Vic2NyaXB0aW9uIG9jY3VyZWQuIFRoaXMgd2lsbCByZXR1cm4gZmFsc2UgaWYgYWxyZWFkeSB1bnN1YnNjcmliZWQgb3IgaWYgdGhlIGtleSBzaW1wbHlcclxuICBjYW5ub3QgYmUgZm91bmQuXHJcbiAgKiovXHJcbiAgdW5zdWJzY3JpYmUgPSBmdW5jdGlvbiAodW5zdWJLZXk6IG51bWJlcikge1xyXG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpYmVycykgcmV0dXJuIGZhbHNlO1xyXG4gICAgbGV0IHN1YnMgPSB0aGlzLl9zdWJzY3JpYmVycztcclxuICAgIGxldCBpeCA9IGNvcmUuYXJyYXlJbmRleE9mKHN1YnMsIGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgIHJldHVybiBzLnVuc3ViS2V5ID09PSB1bnN1YktleTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGl4ICE9PSAtMSkge1xyXG4gICAgICBzdWJzLnNwbGljZShpeCwgMSk7XHJcbiAgICAgIGlmIChzdWJzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHRoaXMuX3N1YnNjcmliZXJzID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvKiogcmVtb3ZlIGFsbCBzdWJzY3JpYmVycyAqL1xyXG4gIGNsZWFyKCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaWJlcnMgPSA8YW55Pm51bGw7XHJcbiAgfVxyXG5cclxuICAvKiogZXZlbnQgYnViYmxpbmcgLSBkb2N1bWVudCBsYXRlci4gKi9cclxuXHJcbiAgLy8gbnVsbCBvciB1bmRlZmluZWQgJ2dldFBhcmVudEZuJyBtZWFucyBFdmVudCBkb2VzIG5vdCBuZWVkIHRvIGJ1YmJsZSBpLmUuIHRoYXQgaXQgaXMgYWx3YXlzIGVuYWJsZWQgLSAuXHJcbiAgc3RhdGljIGJ1YmJsZUV2ZW50KHRhcmdldDogYW55LCBnZXRQYXJlbnRGbj86ICgoKSA9PiBhbnkpKSB7XHJcbiAgICB0YXJnZXQuX2dldEV2ZW50UGFyZW50ID0gZ2V0UGFyZW50Rm4gfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIEVuYWJsZXMgb3IgZGlzYWJsZXMgdGhlIG5hbWVkIGV2ZW50IGZvciBhbiBvYmplY3QgYW5kIGFsbCBvZiBpdHMgY2hpbGRyZW4uXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmVuYWJsZSjigJxwcm9wZXJ0eUNoYW5nZWTigJ0sIG15RW50aXR5TWFuYWdlciwgZmFsc2UpXHJcblxyXG4gIHdpbGwgZGlzYWJsZSBhbGwgRW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZCBldmVudHMgd2l0aGluIGEgRW50aXR5TWFuYWdlci5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuZW5hYmxlKOKAnHByb3BlcnR5Q2hhbmdlZOKAnSwgbXlFbnRpdHlNYW5hZ2VyLCB0cnVlKVxyXG5cclxuICB3aWxsIGVuYWJsZSBhbGwgRW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZCBldmVudHMgd2l0aGluIGEgRW50aXR5TWFuYWdlci5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuZW5hYmxlKOKAnHByb3BlcnR5Q2hhbmdlZOKAnSwgbXlFbnRpdHkuZW50aXR5QXNwZWN0LCBmYWxzZSlcclxuXHJcbiAgd2lsbCBkaXNhYmxlIEVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQgZXZlbnRzIGZvciBhIHNwZWNpZmljIGVudGl0eS5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuZW5hYmxlKOKAnHByb3BlcnR5Q2hhbmdlZOKAnSwgbXlFbnRpdHkuZW50aXR5QXNwZWN0LCBudWxsKVxyXG5cclxuICB3aWxsIHJlbW92ZXMgYW55IGVuYWJsaW5nIC8gZGlzYWJsaW5nIGF0IHRoZSBlbnRpdHkgYXNwZWN0IGxldmVsIHNvIG5vdyBhbnkgJ0V2ZW50LmVuYWJsZScgY2FsbHMgYXQgdGhlIEVudGl0eU1hbmFnZXIgbGV2ZWwsXHJcbiAgbWFkZSBlaXRoZXIgcHJldmlvdXNseSBvciBpbiB0aGUgZnV0dXJlLCB3aWxsIGNvbnRyb2wgbm90aWZpY2F0aW9uLlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCcdmFsaWRhdGlvbkVycm9yc0NoYW5nZWTigJ0sIG15RW50aXR5TWFuYWdlciwgZnVuY3Rpb24oZW0pIHtcclxuICA+ICAgICAgICAgIHJldHVybiBlbS5jdXN0b21UYWcgPT09IOKAnGJsdWXigJ07XHJcbiAgPiAgICAgIH0pXHJcblxyXG5cclxuICB3aWxsIGVpdGhlciBlbmFibGUgb3IgZGlzYWJsZSBteUVudGl0eU1hbmFnZXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSDigJhjdXN0b21UYWfigJkgcHJvcGVydHkgb24gbXlFbnRpdHlNYW5hZ2VyLlxyXG4gIE5vdGUgdGhhdCB0aGlzIGlzIGR5bmFtaWMsIGNoYW5naW5nIHRoZSBjdXN0b21UYWcgdmFsdWUgd2lsbCBjYXVzZSBldmVudHMgdG8gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBpbW1lZGlhdGVseS5cclxuICBAcGFyYW0gZXZlbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxyXG4gIEBwYXJhbSB0YXJnZXQgLSBUaGUgb2JqZWN0IGF0IHdoaWNoIGVuYWJsaW5nIG9yIGRpc2FibGluZyB3aWxsIG9jY3VyLiAgQWxsIGV2ZW50IG5vdGlmaWNhdGlvbnMgdGhhdCBvY2N1ciB0byB0aGlzIG9iamVjdCBvclxyXG4gIGNoaWxkcmVuIG9mIHRoaXMgb2JqZWN0IHdpbGwgYmUgZW5hYmxlZCBvciBkaXNhYmxlZC5cclxuICBAcGFyYW0gaXNFbmFibGVkIC0gQSBib29sZWFuLCBhIG51bGwgb3IgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgZWl0aGVyIGEgYm9vbGVhbiBvciBhIG51bGwuXHJcbiAgKiovXHJcbiBzdGF0aWMgZW5hYmxlKGV2ZW50TmFtZTogc3RyaW5nLCBvYmo6IE9iamVjdCwgaXNFbmFibGVkOiBib29sZWFuIHwgKCh4OiBhbnkpID0+IGJvb2xlYW4pKSB7XHJcbiAgICBhc3NlcnRQYXJhbShldmVudE5hbWUsIFwiZXZlbnROYW1lXCIpLmlzTm9uRW1wdHlTdHJpbmcoKS5jaGVjaygpO1xyXG4gICAgYXNzZXJ0UGFyYW0ob2JqLCBcIm9ialwiKS5pc09iamVjdCgpLmNoZWNrKCk7XHJcbiAgICBhc3NlcnRQYXJhbShpc0VuYWJsZWQsIFwiaXNFbmFibGVkXCIpLmlzQm9vbGVhbigpLmlzT3B0aW9uYWwoKS5vcigpLmlzRnVuY3Rpb24oKS5jaGVjaygpO1xyXG4gICAgbGV0IG9iID0gPGFueT5vYmo7XHJcbiAgICBpZiAoIW9iLl8kZXZlbnRNYXApIHtcclxuICAgICAgb2IuXyRldmVudE1hcCA9IHt9O1xyXG4gICAgfVxyXG4gICAgb2IuXyRldmVudE1hcFtldmVudE5hbWVdID0gaXNFbmFibGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGZvciBhIHNwZWNpZmljIGV2ZW50IGFuZCBhIHNwZWNpZmljIG9iamVjdCBhbmQgaXRzIGNoaWxkcmVuLCBub3RpZmljYXRpb24gaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBvciBub3Qgc2V0LlxyXG4gID4gICAgICBCcmVlemVFdmVudC5pc0VuYWJsZWQo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eU1hbmFnZXIpXHJcbiAgPiBcclxuICBAcGFyYW0gZXZlbnROYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxyXG4gIEBwYXJhbSB0YXJnZXQgLSBUaGUgb2JqZWN0IGZvciB3aGljaCB3ZSB3YW50IHRvIGtub3cgaWYgbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZC5cclxuICBAcmV0dXJuIEEgbnVsbCBpcyByZXR1cm5lZCBpZiB0aGlzIHZhbHVlIGhhcyBub3QgYmVlbiBzZXQuXHJcbiAgKiovXHJcbiAgc3RhdGljIGlzRW5hYmxlZChldmVudE5hbWU6IHN0cmluZywgb2JqOiBPYmplY3QpIHtcclxuICAgIGFzc2VydFBhcmFtKGV2ZW50TmFtZSwgXCJldmVudE5hbWVcIikuaXNOb25FbXB0eVN0cmluZygpLmNoZWNrKCk7XHJcbiAgICBhc3NlcnRQYXJhbShvYmosIFwib2JqXCIpLmlzT2JqZWN0KCkuY2hlY2soKTtcclxuICAgIC8vIG51bGwgaXMgb2sgLSBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIG9iamVjdCBpcyBhdCB0aGUgdG9wIGxldmVsLlxyXG4gICAgaWYgKCg8YW55Pm9iaikuX2dldEV2ZW50UGFyZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCBldmVudCBlbmFibGluZy9kaXNhYmxpbmdcIik7XHJcbiAgICB9XHJcbiAgICAvLyByZXR1cm4gY3Rvci5faXNFbmFibGVkKGdldEZ1bGxFdmVudE5hbWUoZXZlbnROYW1lKSwgb2JqKTtcclxuICAgIHJldHVybiBCcmVlemVFdmVudC5faXNFbmFibGVkKGV2ZW50TmFtZSwgMyk7XHJcbiAgfVxyXG5cclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBzdGF0aWMgX2lzRW5hYmxlZCA9IGZ1bmN0aW9uIChldmVudE5hbWU6IHN0cmluZywgb2JqOiBPYmplY3QpIHtcclxuICAgIGxldCBpc0VuYWJsZWQ6IGFueSA9IG51bGw7XHJcbiAgICBsZXQgb2IgPSA8YW55Pm9iajtcclxuICAgIGxldCBldmVudE1hcCA9IG9iLl8kZXZlbnRNYXA7XHJcbiAgICBpZiAoZXZlbnRNYXApIHtcclxuICAgICAgaXNFbmFibGVkID0gZXZlbnRNYXBbZXZlbnROYW1lXTtcclxuICAgIH1cclxuICAgIGlmIChpc0VuYWJsZWQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodHlwZW9mIGlzRW5hYmxlZCA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiAhIWlzRW5hYmxlZChvYmopO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAhIWlzRW5hYmxlZDtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHBhcmVudCA9IG9iLl9nZXRFdmVudFBhcmVudCAmJiBvYi5fZ2V0RXZlbnRQYXJlbnQoKTtcclxuICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgIHJldHVybiAhIXRoaXMuX2lzRW5hYmxlZChldmVudE5hbWUsIHBhcmVudCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gZGVmYXVsdCBpZiBub3QgZXhwbGljaXRseSBkaXNhYmxlZC5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG5cclxufVxyXG5cclxuLy8gbGVnYWN5IHN1cHBvcnQgLSBkZWxpYmVyYXRlbHkgbm90IHR5cGVkXHJcbihjb3JlIGFzIGFueSkuRXZlbnQgPSBCcmVlemVFdmVudDsiXX0=
@@ -1,41 +0,0 @@
1
- import { core } from './core';
2
- import { assertConfig } from './assert-param';
3
- import { config, InterfaceDef } from './config';
4
- /** Registers adapters used by Breeze */
5
- export class InterfaceRegistry {
6
- constructor() {
7
- this.ajax = new InterfaceDef("ajax");
8
- this.modelLibrary = new InterfaceDef("modelLibrary");
9
- this.dataService = new InterfaceDef("dataService");
10
- this.uriBuilder = new InterfaceDef("uriBuilder");
11
- }
12
- }
13
- config.interfaceRegistry = new InterfaceRegistry();
14
- config._interfaceRegistry = config.interfaceRegistry;
15
- config.interfaceRegistry.modelLibrary.getDefaultInstance = function () {
16
- if (!this.defaultInstance) {
17
- throw new Error("Unable to locate the default implementation of the '" + this.name +
18
- "' interface. Possible options are 'ko', 'backingStore' or 'backbone'. See the breeze.config.initializeAdapterInstances method.");
19
- }
20
- return this.defaultInstance;
21
- };
22
- /**
23
- Initializes a collection of adapter implementations and makes each one the default for its corresponding interface.
24
- @method initializeAdapterInstances
25
- @param config {Object}
26
- @param [config.ajax] {String} - the name of a previously registered "ajax" adapter
27
- @param [config.dataService] {String} - the name of a previously registered "dataService" adapter
28
- @param [config.modelLibrary] {String} - the name of a previously registered "modelLibrary" adapter
29
- @param [config.uriBuilder] {String} - the name of a previously registered "uriBuilder" adapter
30
- @return [array of instances]
31
- **/
32
- config.initializeAdapterInstances = function (irConfig) {
33
- assertConfig(irConfig)
34
- .whereParam("dataService").isOptional()
35
- .whereParam("modelLibrary").isOptional()
36
- .whereParam("ajax").isOptional()
37
- .whereParam("uriBuilder").isOptional()
38
- .applyAll(this, false);
39
- return core.objectMap(config, this.initializeAdapterInstance);
40
- };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2UtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWUsTUFBTSxVQUFVLENBQUM7QUFlN0Qsd0NBQXdDO0FBQ3hDLE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFDSSxTQUFJLEdBQUcsSUFBSSxZQUFZLENBQWMsTUFBTSxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxJQUFJLFlBQVksQ0FBc0IsY0FBYyxDQUFDLENBQUM7UUFDckUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksQ0FBcUIsYUFBYSxDQUFDLENBQUM7UUFDbEUsZUFBVSxHQUFHLElBQUksWUFBWSxDQUFvQixZQUFZLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQUE7QUF1QkQsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUc7SUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUM5RSxpSUFBaUksQ0FBQyxDQUFDO0tBQzFJO0lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQywwQkFBMEIsR0FBRyxVQUFVLFFBQWlDO0lBQzNFLFlBQVksQ0FBQyxRQUFRLENBQUM7U0FDakIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUN0QyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFO1NBQ3ZDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUU7U0FDL0IsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUNyQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydENvbmZpZyB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgY29uZmlnLCBJbnRlcmZhY2VEZWYsIEJhc2VBZGFwdGVyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBNYXBwaW5nQ29udGV4dCB9IGZyb20gJy4vbWFwcGluZy1jb250ZXh0JztcclxuaW1wb3J0IHsgRW50aXR5UXVlcnkgfSBmcm9tICcuL2VudGl0eS1xdWVyeSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcbmltcG9ydCB7IEpzb25SZXN1bHRzQWRhcHRlciwgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBRdWVyeVJlc3VsdCwgU2F2ZVJlc3VsdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnIHtcclxuICAgIGFqYXg/OiBJbnRlcmZhY2VEZWY8QWpheEFkYXB0ZXI+O1xyXG4gICAgbW9kZWxMaWJyYXJ5PzogSW50ZXJmYWNlRGVmPE1vZGVsTGlicmFyeUFkYXB0ZXI+O1xyXG4gICAgZGF0YVNlcnZpY2U/OiBJbnRlcmZhY2VEZWY8RGF0YVNlcnZpY2VBZGFwdGVyPjtcclxuICAgIHVyaUJ1aWxkZXI/OiBJbnRlcmZhY2VEZWY8VXJpQnVpbGRlckFkYXB0ZXI+O1xyXG59XHJcblxyXG4vKiogUmVnaXN0ZXJzIGFkYXB0ZXJzIHVzZWQgYnkgQnJlZXplICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlcmZhY2VSZWdpc3RyeSB7XHJcbiAgICBhamF4ID0gbmV3IEludGVyZmFjZURlZjxBamF4QWRhcHRlcj4oXCJhamF4XCIpO1xyXG4gICAgbW9kZWxMaWJyYXJ5ID0gbmV3IEludGVyZmFjZURlZjxNb2RlbExpYnJhcnlBZGFwdGVyPihcIm1vZGVsTGlicmFyeVwiKTtcclxuICAgIGRhdGFTZXJ2aWNlID0gbmV3IEludGVyZmFjZURlZjxEYXRhU2VydmljZUFkYXB0ZXI+KFwiZGF0YVNlcnZpY2VcIik7XHJcbiAgICB1cmlCdWlsZGVyID0gbmV3IEludGVyZmFjZURlZjxVcmlCdWlsZGVyQWRhcHRlcj4oXCJ1cmlCdWlsZGVyXCIpO1xyXG59XHJcblxyXG4vLyBUaGlzIG1vZHVsZSBkZXNjcmliZXMgdGhlIGludGVyZmFjZVJlZ2lzdHJ5IGJ5IGV4dGVuZGluZyBjb25maWdcclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmRlY2xhcmUgbW9kdWxlIFwiLi9jb25maWdcIiB7XHJcbiAgICBpbnRlcmZhY2UgQnJlZXplQ29uZmlnIHtcclxuICAgICAgICAvKipcclxuICAgICAgICBJbml0aWFsaXplcyBhIGNvbGxlY3Rpb24gb2YgYWRhcHRlciBpbXBsZW1lbnRhdGlvbnMgYW5kIG1ha2VzIGVhY2ggb25lIHRoZSBkZWZhdWx0IGZvciBpdHMgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UuXHJcbiAgICAgICAgQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG4gICAgICAgIEBwYXJhbSBjb25maWcge09iamVjdH1cclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5hamF4XSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwiYWpheFwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG4gICAgICAgIEBwYXJhbSBbY29uZmlnLm1vZGVsTGlicmFyeV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcIm1vZGVsTGlicmFyeVwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy51cmlCdWlsZGVyXSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwidXJpQnVpbGRlclwiIGFkYXB0ZXJcclxuICAgICAgICBAcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbiAgICAgICAgKiovXHJcbiAgICAgICAgaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKTogdm9pZDtcclxuXHJcbiAgICAgICAgLy8gc3Ryb25nbHkgdHlwZWQgdmVyc2lvblxyXG4gICAgICAgIGludGVyZmFjZVJlZ2lzdHJ5OiBJbnRlcmZhY2VSZWdpc3RyeTtcclxuICAgIH1cclxufVxyXG5cclxuY29uZmlnLmludGVyZmFjZVJlZ2lzdHJ5ID0gbmV3IEludGVyZmFjZVJlZ2lzdHJ5KCk7XHJcbmNvbmZpZy5faW50ZXJmYWNlUmVnaXN0cnkgPSBjb25maWcuaW50ZXJmYWNlUmVnaXN0cnk7XHJcbmNvbmZpZy5pbnRlcmZhY2VSZWdpc3RyeS5tb2RlbExpYnJhcnkuZ2V0RGVmYXVsdEluc3RhbmNlID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEluc3RhbmNlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvY2F0ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ1wiICsgdGhpcy5uYW1lICtcclxuICAgICAgICAgICAgXCInIGludGVyZmFjZS4gIFBvc3NpYmxlIG9wdGlvbnMgYXJlICdrbycsICdiYWNraW5nU3RvcmUnIG9yICdiYWNrYm9uZScuIFNlZSB0aGUgYnJlZXplLmNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlcyBtZXRob2QuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdEluc3RhbmNlO1xyXG59O1xyXG5cclxuLyoqXHJcbkluaXRpYWxpemVzIGEgY29sbGVjdGlvbiBvZiBhZGFwdGVyIGltcGxlbWVudGF0aW9ucyBhbmQgbWFrZXMgZWFjaCBvbmUgdGhlIGRlZmF1bHQgZm9yIGl0cyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS5cclxuQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG5AcGFyYW0gY29uZmlnIHtPYmplY3R9XHJcbkBwYXJhbSBbY29uZmlnLmFqYXhdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJhamF4XCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5tb2RlbExpYnJhcnldIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJtb2RlbExpYnJhcnlcIiBhZGFwdGVyXHJcbkBwYXJhbSBbY29uZmlnLnVyaUJ1aWxkZXJdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJ1cmlCdWlsZGVyXCIgYWRhcHRlclxyXG5AcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbioqL1xyXG5jb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMgPSBmdW5jdGlvbiAoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKSB7XHJcbiAgICBhc3NlcnRDb25maWcoaXJDb25maWcpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJkYXRhU2VydmljZVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcIm1vZGVsTGlicmFyeVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcImFqYXhcIikuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ1cmlCdWlsZGVyXCIpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC5hcHBseUFsbCh0aGlzLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gY29yZS5vYmplY3RNYXAoY29uZmlnLCB0aGlzLmluaXRpYWxpemVBZGFwdGVySW5zdGFuY2UpO1xyXG59O1xyXG5cclxuLyoqIERhdGFTZXJ2aWNlQWRhcHRlciBBamF4IHJlcXVlc3QgY29uZmlndXJhdGlvbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhDb25maWcge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICAvKiogR0VULCBQT1NULCBldGMuICovXHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgLyoqIGpzb24sIGV0Yy4gKi9cclxuICAgIGRhdGFUeXBlPzogc3RyaW5nO1xyXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XHJcbiAgICBjcm9zc0RvbWFpbj86IHN0cmluZyB8IGJvb2xlYW47XHJcbiAgICBoZWFkZXJzPzoge307XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcGFyYW1zPzoge307XHJcbiAgICBzdWNjZXNzOiAocmVzOiBIdHRwUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBlcnJvcjogKHJlczogKEh0dHBSZXNwb25zZSB8IEVycm9yKSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIFJlcXVlc3Qgc2VudCBieSBBamF4QWRhcHRlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0IHtcclxuICAgIC8qKiBBamF4QWRhcHRlciB0aGF0IGluaXRpYXRlZCB0aGUgcmVxdWVzdCAqL1xyXG4gICAgYWRhcHRlcjogQWpheEFkYXB0ZXI7XHJcbiAgICAvKiogUmVxdWVzdCBjb25maWd1cmF0aW9uICovXHJcbiAgICBjb25maWc6IFJlcXVlc3RJbml0O1xyXG4gICAgLyoqIGNvbmZpZyBmcm9tIHRoZSBEYXRhU2VydmljZUFkYXB0ZXIgdGhhdCBjYWxsZWQgdGhlIEFqYXhBZGFwdGVyICovXHJcbiAgICBkc2FDb25maWc6IEFqYXhDb25maWc7XHJcbiAgICAvKiogRnVuY3Rpb24gY2FsbGVkIG9uIHJlc3BvbnNlIGVycm9yICovXHJcbiAgICBlcnJvcjogKHN0YXR1czogbnVtYmVyLCBzdGF0dXNUZXh0OiBzdHJpbmcsIGJvZHk6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlLCBlcnJvclRocm93bjogYW55KSA9PiB2b2lkO1xyXG4gICAgLyoqIEZ1bmN0aW9uIGNhbGxlZCBvbiByZXNwb25zZSBzdWNjZXNzICovXHJcbiAgICBzdWNjZXNzOiAoZGF0YTogYW55LCBzdGF0dXNUZXh0OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIEhhbmRsZXMgQUpBWCByZXF1ZXN0cyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBBamF4QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBhamF4IHJlcXVlc3QgYW5kIGNhbGxzIHRoZSBzdWNjZXNzIG9yIGVycm9yIGZ1bmN0aW9uICovXHJcbiAgICBhamF4KGNvbmZpZzogQWpheENvbmZpZyk6IHZvaWQ7XHJcbiAgICAvKiogQ29udGFpbmVyIGZvciBoZWFkZXJzIHRvIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAqL1xyXG4gICAgZGVmYXVsdFNldHRpbmdzOiB7IGhlYWRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xyXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGFsbG93IG1hbmlwdWxhdGluZyB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZyAqL1xyXG4gICAgcmVxdWVzdEludGVyY2VwdG9yPzogKHJlcTogQWpheFJlcXVlc3QpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKiBBZGFwdHMgYnJlZXplIGNoYW5nZS10cmFja2luZyB0byB0aGUgVUkgZnJhbWV3b3JrICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaWJyYXJ5QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGdldFRyYWNrYWJsZVByb3BlcnR5TmFtZXM6IChlbnRpdHk6IGFueSkgPT4gc3RyaW5nW107XHJcbiAgICBpbml0aWFsaXplRW50aXR5UHJvdG90eXBlKHByb3RvOiBPYmplY3QpOiB2b2lkO1xyXG4gICAgc3RhcnRUcmFja2luZyhlbnRpdHk6IGFueSwgZW50aXR5Q3RvcjogRnVuY3Rpb24pOiB2b2lkO1xyXG4gICAgY3JlYXRlQ3Rvcj86IEZ1bmN0aW9uO1xyXG59XHJcblxyXG4vKiogUmVzaGFwZXMgZGF0YSBtb3ZpbmcgYmV0d2VlbiBicmVlemUgYW5kIHNlcnZlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlQWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGZldGNoTWV0YWRhdGEobWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSwgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKTogUHJvbWlzZTxhbnk+OyAgLy8gcmVzdWx0IG9mIFByb21pc2UgaXMgZWl0aGVyIHJhd01ldGFkYXRhIG9yIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2h5IG5vdC5cclxuICAgIGV4ZWN1dGVRdWVyeShtYXBwaW5nQ29udGV4dDogTWFwcGluZ0NvbnRleHQpOiBQcm9taXNlPFF1ZXJ5UmVzdWx0PjsgICAvLyByZXN1bHQgb2YgZXhlY3V0ZVF1ZXJ5IHdpbGwgZ2V0IHBhc3NlZCB0byBKc29uUmVzdWx0c0FkYXB0ZXIgZXh0cmFjdFJlc3VsdHMgbWV0aG9kXHJcbiAgICBzYXZlQ2hhbmdlcyhzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpOiBQcm9taXNlPFNhdmVSZXN1bHQ+O1xyXG4gICAgY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yOiBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yO1xyXG4gICAganNvblJlc3VsdHNBZGFwdGVyOiBKc29uUmVzdWx0c0FkYXB0ZXI7XHJcbn1cclxuXHJcbi8qKiBGdW5jdGlvbiBjYWxsZWQgYnkgQWpheEFkYXB0ZXIgYmVmb3JlIHNlbmRpbmcgcmVxdWVzdCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgKHJlcTogQWpheFJlcXVlc3QpIDogdm9pZDtcclxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbW92ZSB0aGUgaW50ZXJjZXB0b3IgYWZ0ZXIgaXQgaXMgY2FsbGVkICovXHJcbiAgICBvbmVUaW1lOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQnVpbGRzIFVSSSBmb3IgcGVyZm9ybWluZyBxdWVyaWVzLiAgU2VyaWFsaXplcyB0aGUgRW50aXR5UXVlcnkgYWNjb3JkaW5nIHRvIHRoZSBVUkkgc3ludGF4LiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVyaUJ1aWxkZXJBZGFwdGVyIGV4dGVuZHMgQmFzZUFkYXB0ZXIge1xyXG4gICAgYnVpbGRVcmkocXVlcnk6IEVudGl0eVF1ZXJ5LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKTogc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yIHtcclxuICAgIG5ldyAoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKTogQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG59XHJcblxyXG4vKiogQWxsb3dzIG1hbmlwdWxhdGluZyBkYXRhIGluIERhdGFTZXJ2aWNlQWRhcHRlciBiZWZvcmUgc2VuZGluZyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgb25lVGltZT86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICBQcmVwYXJlIGFuZCByZXR1cm4gdGhlIHNhdmUgZGF0YSBmb3IgYW4gZW50aXR5IGNoYW5nZS1zZXQuXHJcbiAgXHJcbiAgICAgVGhlIGFkYXB0ZXIgY2FsbHMgdGhpcyBtZXRob2QgZm9yIGVhY2ggZW50aXR5IGluIHRoZSBjaGFuZ2Utc2V0LFxyXG4gICAgIGFmdGVyIGl0IGhhcyBwcmVwYXJlZCBhIFwiY2hhbmdlIHJlcXVlc3RcIiBmb3IgdGhhdCBvYmplY3QuXHJcbiAgXHJcbiAgICAgVGhlIG1ldGhvZCBjYW4gZG8gYW55dGhpbmcgdG8gdGhlIHJlcXVlc3QgYnV0IGl0IG11c3QgcmV0dXJuIGEgdmFsaWQsIG5vbi1udWxsIHJlcXVlc3QuXHJcbiAgICAgQGV4YW1wbGVcclxuICAgICB0aGlzLmdldFJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdCwgZW50aXR5LCBpbmRleCkge1xyXG4gICAgICAgICAgICAvLyBhbHRlciB0aGUgcmVxdWVzdCB0aGF0IHRoZSBhZGFwdGVyIHByZXBhcmVkIGZvciB0aGlzIGVudGl0eVxyXG4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgZW50aXR5LCBzYXZlQ29udGV4dCwgYW5kIHNhdmVCdW5kbGVcclxuICAgICAgICAgICAgLy8gZS5nLiwgYWRkIGEgY3VzdG9tIGhlYWRlciBvciBwcnVuZSB0aGUgb3JpZ2luYWxWYWx1ZXNNYXBcclxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICAgICAgfTtcclxuICAgICBAbWV0aG9kIGdldFJlcXVlc3RcclxuICAgICBAcGFyYW0gcmVxdWVzdCB7T2JqZWN0fSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYWRhcHRlcidzIHJlcXVlc3QgdG8gc2F2ZSB0aGlzIGVudGl0eS5cclxuICAgICBAcGFyYW0gZW50aXR5IHtFbnRpdHl9IFRoZSBlbnRpdHktdG8tYmUtc2F2ZSBhcyBpdCBpcyBpbiBjYWNoZVxyXG4gICAgIEBwYXJhbSBpbmRleCB7SW50ZWdlcn0gVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhpcyBlbnRpdHkgaW4gdGhlIGNoYW5nZS1zZXQgYXJyYXlcclxuICAgICBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIHBvdGVudGlhbGx5IHJldmlzZWQgcmVxdWVzdC5cclxuICAgICAqKi9cclxuICAgIGdldFJlcXVlc3QocmVxdWVzdDogYW55LCBlbnRpdHk6IEVudGl0eSwgaW5kZXg6IG51bWJlcik6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICBMYXN0IGNoYW5jZSB0byBjaGFuZ2UgYW55dGhpbmcgYWJvdXQgdGhlICdyZXF1ZXN0cycgYXJyYXlcclxuICAgICBhZnRlciBpdCBoYXMgYmVlbiBidWlsdCB3aXRoIHJlcXVlc3RzIGZvciBhbGwgb2YgdGhlIGVudGl0aWVzLXRvLWJlLXNhdmVkLlxyXG4gIFxyXG4gICAgIFRoZSAncmVxdWVzdHMnIGFycmF5IGlzIHRoZSBzYW1lIGFzICdzYXZlQnVuZGxlLmVudGl0aWVzJyBpbiBtYW55IGltcGxlbWVudGF0aW9uc1xyXG4gIFxyXG4gICAgIFRoaXMgbWV0aG9kIGNhbiBkbyBhbnl0aGluZyB0byB0aGUgYXJyYXkgaW5jbHVkaW5nIGFkZCBhbmQgcmVtb3ZlIHJlcXVlc3RzLlxyXG4gICAgIEl0J3MgdXAgdG8geW91IHRvIGVuc3VyZSB0aGF0IHNlcnZlciB3aWxsIGFjY2VwdCB0aGUgcmVxdWVzdHMgYXJyYXkgZGF0YSBhcyB2YWxpZC5cclxuICBcclxuICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBpZ25vcmVkLlxyXG4gICAgIEBleGFtcGxlXHJcbiAgICAgdGhpcy5kb25lID0gZnVuY3Rpb24gKHJlcXVlc3RzKSB7XHJcbiAgICAgICAgICAgIC8vIGFsdGVyIHRoZSBhcnJheSBvZiByZXF1ZXN0cyByZXByZXNlbnRpbmcgdGhlIGVudGlyZSBjaGFuZ2Utc2V0XHJcbiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBzYXZlQ29udGV4dCBhbmQgc2F2ZUJ1bmRsZVxyXG4gICAgICAgIH07XHJcbiAgICAgQG1ldGhvZCBkb25lXHJcbiAgICAgQHBhcmFtIHJlcXVlc3RzIHtBcnJheSBvZiBPYmplY3R9IFRoZSBhZGFwdGVyJ3MgYXJyYXkgb2YgcmVxdWVzdCBmb3IgdGhpcyBjaGFuZ2VzZXQuXHJcbiAgICAgKiovXHJcbiAgICBkb25lKHJlcXVlc3RzOiBPYmplY3RbXSk6IHZvaWQ7XHJcbn0iXX0=
@@ -1,108 +0,0 @@
1
- import { EntityKey } from './entity-key';
2
- import { config } from './config';
3
- /*
4
- @class KeyGenerator
5
- */
6
- export class KeyGenerator {
7
- constructor() {
8
- // key is dataProperty.name + || + entityType.name, value is propEntry
9
- // propEntry = { entityType, propertyName, keyMap }
10
- // keyMap has key of the actual value ( as a string) and a value of null or the real id.
11
- this._tempIdMap = {};
12
- }
13
- /*
14
- Returns a unique 'temporary' id for the specified [[EntityType]].
15
- Uniqueness is defined for this purpose as being unique within each instance of a KeyGenerator. This is sufficient
16
- because each EntityManager will have its own instance of a KeyGenerator and any entities imported into
17
- the EntityManager with temporary keys will have them regenerated and remapped on import.
18
-
19
- The return value of this method must be of the correct type as determined by the keyProperties of the
20
- specified EntityType
21
- @example
22
- // Assume em1 is a preexisting EntityManager
23
- let custType = em1.metadataStore.getEntityType("Customer");
24
- let cust1 = custType.createEntity();
25
- // next line both sets cust1's 'CustomerId' property but also returns the value
26
- let cid1 = em1.generateTempKeyValue(cust1);
27
- em1.saveChanges().then( function( data) {
28
- let sameCust1 = data.results[0];
29
- // cust1 === sameCust1;
30
- // but cust1.getProperty("CustomerId") != cid1
31
- // because the server will have generated a new id
32
- // and the client will have been updated with this
33
- // new id.
34
- });
35
- @method generateTempKeyValue
36
- @param entityType {EntityType}
37
- */
38
- generateTempKeyValue(entityType, valueIfAvail) {
39
- let keyProps = entityType.keyProperties;
40
- if (keyProps.length > 1) {
41
- throw new Error("Ids can not be autogenerated for entities with multipart keys");
42
- }
43
- let keyProp = keyProps[0];
44
- let propEntry = this._getPropEntry(keyProp, true);
45
- let nextId;
46
- if (valueIfAvail != null) {
47
- if (!propEntry.keyMap[valueIfAvail.toString()]) {
48
- nextId = valueIfAvail;
49
- }
50
- }
51
- if (nextId === undefined) {
52
- let dataType = keyProp.dataType;
53
- let getNextFn = dataType.getNext;
54
- if (getNextFn) {
55
- nextId = getNextFn(this);
56
- // need to watch out for collision with previously imported ids that might also get generated.
57
- while (propEntry.keyMap[nextId.toString()] != null) {
58
- nextId = getNextFn(this);
59
- }
60
- }
61
- else {
62
- throw new Error("Cannot use a property with a dataType of: " + dataType.toString() + " for id generation");
63
- }
64
- }
65
- propEntry.keyMap[nextId.toString()] = true;
66
- return nextId;
67
- }
68
- getTempKeys() {
69
- let results = [];
70
- //noinspection JSHint
71
- for (let key in this._tempIdMap) {
72
- let propEntry = this._tempIdMap[key];
73
- let entityType = propEntry.entityType;
74
- // let propName = propEntry.propertyName;
75
- //noinspection JSHint
76
- for (let keyValue in propEntry.keyMap) {
77
- results.push(new EntityKey(entityType, [keyValue]));
78
- }
79
- }
80
- return results;
81
- }
82
- // proto methods below are not part of the KeyGenerator interface.
83
- isTempKey(entityKey) {
84
- let keyProps = entityKey.entityType.keyProperties;
85
- if (keyProps.length > 1)
86
- return false;
87
- let keyProp = keyProps[0];
88
- let propEntry = this._getPropEntry(keyProp);
89
- if (!propEntry) {
90
- return false;
91
- }
92
- return (propEntry.keyMap[entityKey.values[0].toString()] !== undefined);
93
- }
94
- /** @hidden @internal */
95
- _getPropEntry(keyProp, createIfMissing = false) {
96
- let key = keyProp.name + ".." + keyProp.parentType.name;
97
- let propEntry = this._tempIdMap[key];
98
- if (!propEntry) {
99
- if (createIfMissing) {
100
- propEntry = { entityType: keyProp.parentType, propertyName: keyProp.name, keyMap: {} };
101
- this._tempIdMap[key] = propEntry;
102
- }
103
- }
104
- return propEntry;
105
- }
106
- }
107
- config.registerType(KeyGenerator, "KeyGenerator");
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMva2V5LWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFZbEM7O0lBRUk7QUFDSixNQUFNLE9BQU8sWUFBWTtJQUt2QjtRQUNFLHNFQUFzRTtRQUN0RSxtREFBbUQ7UUFDbkQsd0ZBQXdGO1FBQ3hGLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFHRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01Bd0JFO0lBQ0Ysb0JBQW9CLENBQUMsVUFBc0IsRUFBRSxZQUFzQjtRQUNqRSxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3hDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO1NBQ2xGO1FBQ0QsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksTUFBVyxDQUFDO1FBQ2hCLElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtZQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxHQUFHLFlBQVksQ0FBQzthQUN2QjtTQUNGO1FBRUQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQ3hCLElBQUksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7WUFDaEMsSUFBSSxTQUFTLEdBQUksUUFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFDMUMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsTUFBTSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekIsOEZBQThGO2dCQUM5RixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO29CQUNsRCxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMxQjthQUNGO2lCQUFNO2dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLG9CQUFvQixDQUFDLENBQUM7YUFDNUc7U0FDRjtRQUVELFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQzNDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxPQUFPLEdBQWdCLEVBQUUsQ0FBQztRQUM5QixxQkFBcUI7UUFDckIsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQy9CLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUN0Qyx5Q0FBeUM7WUFDekMscUJBQXFCO1lBQ3JCLEtBQUssSUFBSSxRQUFRLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckQ7U0FDRjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFHRCxrRUFBa0U7SUFFbEUsU0FBUyxDQUFDLFNBQW9CO1FBQzVCLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ2xELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdEMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELHdCQUF3QjtJQUNoQixhQUFhLENBQUMsT0FBcUIsRUFBRSxlQUFlLEdBQUcsS0FBSztRQUNsRSxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztRQUN4RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxJQUFJLGVBQWUsRUFBRTtnQkFDbkIsU0FBUyxHQUFHLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUF3QixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDckcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7YUFDbEM7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FFRjtBQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5VHlwZSwgRGF0YVByb3BlcnR5IH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlLZXkgfSBmcm9tICcuL2VudGl0eS1rZXknO1xyXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XHJcblxyXG5pbnRlcmZhY2UgSVByb3BFbnRyeSB7XHJcbiAgZW50aXR5VHlwZTogRW50aXR5VHlwZTtcclxuICBwcm9wZXJ0eU5hbWU6IHN0cmluZztcclxuICBrZXlNYXA6IE9iamVjdDtcclxufVxyXG5cclxuaW50ZXJmYWNlIElUZW1wSWRNYXAge1xyXG4gIFtpbmRleDogc3RyaW5nXTogSVByb3BFbnRyeTtcclxufVxyXG5cclxuLypcclxuICBAY2xhc3MgS2V5R2VuZXJhdG9yXHJcbiAgKi9cclxuZXhwb3J0IGNsYXNzIEtleUdlbmVyYXRvciB7XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgcHJpdmF0ZSBfdGVtcElkTWFwOiBJVGVtcElkTWFwO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBrZXkgaXMgZGF0YVByb3BlcnR5Lm5hbWUgKyB8fCArIGVudGl0eVR5cGUubmFtZSwgdmFsdWUgaXMgcHJvcEVudHJ5XHJcbiAgICAvLyBwcm9wRW50cnkgPSB7IGVudGl0eVR5cGUsIHByb3BlcnR5TmFtZSwga2V5TWFwIH1cclxuICAgIC8vIGtleU1hcCBoYXMga2V5IG9mIHRoZSBhY3R1YWwgdmFsdWUgKCBhcyBhIHN0cmluZykgYW5kIGEgdmFsdWUgb2YgbnVsbCBvciB0aGUgcmVhbCBpZC5cclxuICAgIHRoaXMuX3RlbXBJZE1hcCA9IHt9O1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgUmV0dXJucyBhIHVuaXF1ZSAndGVtcG9yYXJ5JyBpZCBmb3IgdGhlIHNwZWNpZmllZCBbW0VudGl0eVR5cGVdXS5cclxuICBVbmlxdWVuZXNzIGlzIGRlZmluZWQgZm9yIHRoaXMgcHVycG9zZSBhcyBiZWluZyB1bmlxdWUgd2l0aGluIGVhY2ggaW5zdGFuY2Ugb2YgYSBLZXlHZW5lcmF0b3IuIFRoaXMgaXMgc3VmZmljaWVudFxyXG4gIGJlY2F1c2UgZWFjaCBFbnRpdHlNYW5hZ2VyIHdpbGwgaGF2ZSBpdHMgb3duIGluc3RhbmNlIG9mIGEgS2V5R2VuZXJhdG9yIGFuZCBhbnkgZW50aXRpZXMgaW1wb3J0ZWQgaW50b1xyXG4gIHRoZSBFbnRpdHlNYW5hZ2VyIHdpdGggdGVtcG9yYXJ5IGtleXMgd2lsbCBoYXZlIHRoZW0gcmVnZW5lcmF0ZWQgYW5kIHJlbWFwcGVkIG9uIGltcG9ydC5cclxuXHJcbiAgVGhlIHJldHVybiB2YWx1ZSBvZiB0aGlzIG1ldGhvZCBtdXN0IGJlIG9mIHRoZSBjb3JyZWN0IHR5cGUgYXMgZGV0ZXJtaW5lZCBieSB0aGUga2V5UHJvcGVydGllcyBvZiB0aGVcclxuICBzcGVjaWZpZWQgRW50aXR5VHlwZVxyXG4gIEBleGFtcGxlXHJcbiAgICAgIC8vIEFzc3VtZSBlbTEgaXMgYSBwcmVleGlzdGluZyBFbnRpdHlNYW5hZ2VyXHJcbiAgICAgIGxldCBjdXN0VHlwZSA9IGVtMS5tZXRhZGF0YVN0b3JlLmdldEVudGl0eVR5cGUoXCJDdXN0b21lclwiKTtcclxuICAgICAgbGV0IGN1c3QxID0gY3VzdFR5cGUuY3JlYXRlRW50aXR5KCk7XHJcbiAgICAgIC8vIG5leHQgbGluZSBib3RoIHNldHMgY3VzdDEncyAnQ3VzdG9tZXJJZCcgcHJvcGVydHkgYnV0IGFsc28gcmV0dXJucyB0aGUgdmFsdWVcclxuICAgICAgbGV0IGNpZDEgPSBlbTEuZ2VuZXJhdGVUZW1wS2V5VmFsdWUoY3VzdDEpO1xyXG4gICAgICBlbTEuc2F2ZUNoYW5nZXMoKS50aGVuKCBmdW5jdGlvbiggZGF0YSkge1xyXG4gICAgICAgIGxldCBzYW1lQ3VzdDEgPSBkYXRhLnJlc3VsdHNbMF07XHJcbiAgICAgICAgLy8gY3VzdDEgPT09IHNhbWVDdXN0MTtcclxuICAgICAgICAvLyBidXQgY3VzdDEuZ2V0UHJvcGVydHkoXCJDdXN0b21lcklkXCIpICE9IGNpZDFcclxuICAgICAgICAvLyBiZWNhdXNlIHRoZSBzZXJ2ZXIgd2lsbCBoYXZlIGdlbmVyYXRlZCBhIG5ldyBpZFxyXG4gICAgICAgIC8vIGFuZCB0aGUgY2xpZW50IHdpbGwgaGF2ZSBiZWVuIHVwZGF0ZWQgd2l0aCB0aGlzXHJcbiAgICAgICAgLy8gbmV3IGlkLlxyXG4gICAgICB9KTtcclxuICBAbWV0aG9kIGdlbmVyYXRlVGVtcEtleVZhbHVlXHJcbiAgQHBhcmFtIGVudGl0eVR5cGUge0VudGl0eVR5cGV9XHJcbiAgKi9cclxuICBnZW5lcmF0ZVRlbXBLZXlWYWx1ZShlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCB2YWx1ZUlmQXZhaWw/OiBib29sZWFuKSB7XHJcbiAgICBsZXQga2V5UHJvcHMgPSBlbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICBpZiAoa2V5UHJvcHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJZHMgY2FuIG5vdCBiZSBhdXRvZ2VuZXJhdGVkIGZvciBlbnRpdGllcyB3aXRoIG11bHRpcGFydCBrZXlzXCIpO1xyXG4gICAgfVxyXG4gICAgbGV0IGtleVByb3AgPSBrZXlQcm9wc1swXTtcclxuICAgIGxldCBwcm9wRW50cnkgPSB0aGlzLl9nZXRQcm9wRW50cnkoa2V5UHJvcCwgdHJ1ZSk7XHJcbiAgICBsZXQgbmV4dElkOiBhbnk7XHJcbiAgICBpZiAodmFsdWVJZkF2YWlsICE9IG51bGwpIHtcclxuICAgICAgaWYgKCFwcm9wRW50cnkua2V5TWFwW3ZhbHVlSWZBdmFpbC50b1N0cmluZygpXSkge1xyXG4gICAgICAgIG5leHRJZCA9IHZhbHVlSWZBdmFpbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChuZXh0SWQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBsZXQgZGF0YVR5cGUgPSBrZXlQcm9wLmRhdGFUeXBlO1xyXG4gICAgICBsZXQgZ2V0TmV4dEZuID0gKGRhdGFUeXBlIGFzIGFueSkuZ2V0TmV4dDtcclxuICAgICAgaWYgKGdldE5leHRGbikge1xyXG4gICAgICAgIG5leHRJZCA9IGdldE5leHRGbih0aGlzKTtcclxuICAgICAgICAvLyBuZWVkIHRvIHdhdGNoIG91dCBmb3IgY29sbGlzaW9uIHdpdGggcHJldmlvdXNseSBpbXBvcnRlZCBpZHMgdGhhdCBtaWdodCBhbHNvIGdldCBnZW5lcmF0ZWQuXHJcbiAgICAgICAgd2hpbGUgKHByb3BFbnRyeS5rZXlNYXBbbmV4dElkLnRvU3RyaW5nKCldICE9IG51bGwpIHtcclxuICAgICAgICAgIG5leHRJZCA9IGdldE5leHRGbih0aGlzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBhIHByb3BlcnR5IHdpdGggYSBkYXRhVHlwZSBvZjogXCIgKyBkYXRhVHlwZS50b1N0cmluZygpICsgXCIgZm9yIGlkIGdlbmVyYXRpb25cIik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm9wRW50cnkua2V5TWFwW25leHRJZC50b1N0cmluZygpXSA9IHRydWU7XHJcbiAgICByZXR1cm4gbmV4dElkO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcEtleXMoKSB7XHJcbiAgICBsZXQgcmVzdWx0czogRW50aXR5S2V5W10gPSBbXTtcclxuICAgIC8vbm9pbnNwZWN0aW9uIEpTSGludFxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3RlbXBJZE1hcCkge1xyXG4gICAgICBsZXQgcHJvcEVudHJ5ID0gdGhpcy5fdGVtcElkTWFwW2tleV07XHJcbiAgICAgIGxldCBlbnRpdHlUeXBlID0gcHJvcEVudHJ5LmVudGl0eVR5cGU7XHJcbiAgICAgIC8vIGxldCBwcm9wTmFtZSA9IHByb3BFbnRyeS5wcm9wZXJ0eU5hbWU7XHJcbiAgICAgIC8vbm9pbnNwZWN0aW9uIEpTSGludFxyXG4gICAgICBmb3IgKGxldCBrZXlWYWx1ZSBpbiBwcm9wRW50cnkua2V5TWFwKSB7XHJcbiAgICAgICAgcmVzdWx0cy5wdXNoKG5ldyBFbnRpdHlLZXkoZW50aXR5VHlwZSwgW2tleVZhbHVlXSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0cztcclxuICB9XHJcblxyXG5cclxuICAvLyBwcm90byBtZXRob2RzIGJlbG93IGFyZSBub3QgcGFydCBvZiB0aGUgS2V5R2VuZXJhdG9yIGludGVyZmFjZS5cclxuXHJcbiAgaXNUZW1wS2V5KGVudGl0eUtleTogRW50aXR5S2V5KSB7XHJcbiAgICBsZXQga2V5UHJvcHMgPSBlbnRpdHlLZXkuZW50aXR5VHlwZS5rZXlQcm9wZXJ0aWVzO1xyXG4gICAgaWYgKGtleVByb3BzLmxlbmd0aCA+IDEpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBrZXlQcm9wID0ga2V5UHJvcHNbMF07XHJcbiAgICBsZXQgcHJvcEVudHJ5ID0gdGhpcy5fZ2V0UHJvcEVudHJ5KGtleVByb3ApO1xyXG4gICAgaWYgKCFwcm9wRW50cnkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChwcm9wRW50cnkua2V5TWFwW2VudGl0eUtleS52YWx1ZXNbMF0udG9TdHJpbmcoKV0gIT09IHVuZGVmaW5lZCk7XHJcbiAgfVxyXG5cclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBwcml2YXRlIF9nZXRQcm9wRW50cnkoa2V5UHJvcDogRGF0YVByb3BlcnR5LCBjcmVhdGVJZk1pc3NpbmcgPSBmYWxzZSkge1xyXG4gICAgbGV0IGtleSA9IGtleVByb3AubmFtZSArIFwiLi5cIiArIGtleVByb3AucGFyZW50VHlwZS5uYW1lO1xyXG4gICAgbGV0IHByb3BFbnRyeSA9IHRoaXMuX3RlbXBJZE1hcFtrZXldO1xyXG4gICAgaWYgKCFwcm9wRW50cnkpIHtcclxuICAgICAgaWYgKGNyZWF0ZUlmTWlzc2luZykge1xyXG4gICAgICAgIHByb3BFbnRyeSA9IHsgZW50aXR5VHlwZToga2V5UHJvcC5wYXJlbnRUeXBlIGFzIEVudGl0eVR5cGUsIHByb3BlcnR5TmFtZToga2V5UHJvcC5uYW1lLCBrZXlNYXA6IHt9IH07XHJcbiAgICAgICAgdGhpcy5fdGVtcElkTWFwW2tleV0gPSBwcm9wRW50cnk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBwcm9wRW50cnk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuY29uZmlnLnJlZ2lzdGVyVHlwZShLZXlHZW5lcmF0b3IsIFwiS2V5R2VuZXJhdG9yXCIpO1xyXG5cclxuIl19