breeze-client 2.2.0-cjs → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  2. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  6. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  8. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  10. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  12. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
  13. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  14. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  15. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
  16. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
  17. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  18. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
  19. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  20. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  21. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
  22. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  23. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  24. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  25. package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
  26. package/{esm5/adapter-data-service-odata/adapter-data-service-odata.js → esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs} +138 -147
  27. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  28. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
  29. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  30. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
  31. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  32. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
  33. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  34. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
  35. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
  36. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  37. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  38. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
  39. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  40. package/esm2022/breeze-client.mjs +5 -0
  41. package/esm2022/index.mjs +2 -0
  42. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  43. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  44. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  45. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
  46. package/esm2022/src/abstract-data-service-adapter.mjs +325 -0
  47. package/esm2022/src/array.mjs +4 -0
  48. package/esm2022/src/assert-param.mjs +330 -0
  49. package/esm2022/src/breeze.mjs +85 -0
  50. package/esm2022/src/complex-array.mjs +117 -0
  51. package/esm2022/src/config.mjs +232 -0
  52. package/esm2022/src/core.mjs +712 -0
  53. package/esm2022/src/csdl-metadata-parser.mjs +385 -0
  54. package/esm2022/src/data-service.mjs +239 -0
  55. package/esm2022/src/data-type.mjs +510 -0
  56. package/esm2022/src/default-property-interceptor.mjs +460 -0
  57. package/{esm2015/src/entity-action.js → esm2022/src/entity-action.mjs} +25 -25
  58. package/esm2022/src/entity-aspect.mjs +897 -0
  59. package/esm2022/src/entity-group.mjs +192 -0
  60. package/esm2022/src/entity-key.mjs +127 -0
  61. package/esm2022/src/entity-manager.mjs +2183 -0
  62. package/esm2022/src/entity-metadata.mjs +2242 -0
  63. package/esm2022/src/entity-query.mjs +1024 -0
  64. package/esm2022/src/entity-state.mjs +107 -0
  65. package/esm2022/src/enum.mjs +143 -0
  66. package/esm2022/src/event.mjs +264 -0
  67. package/esm2022/src/interface-registry.mjs +39 -0
  68. package/esm2022/src/key-generator.mjs +110 -0
  69. package/esm2022/src/local-query-comparison-options.mjs +75 -0
  70. package/esm2022/src/mapping-context.mjs +422 -0
  71. package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
  72. package/esm2022/src/observable-array.mjs +183 -0
  73. package/esm2022/src/predicate.mjs +1259 -0
  74. package/esm2022/src/primitive-array.mjs +85 -0
  75. package/esm2022/src/query-options.mjs +160 -0
  76. package/esm2022/src/relation-array.mjs +173 -0
  77. package/esm2022/src/save-options.mjs +51 -0
  78. package/esm2022/src/unattached-children-map.mjs +56 -0
  79. package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
  80. package/esm2022/src/validation-options.mjs +78 -0
  81. package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
  82. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  83. package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
  84. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  85. package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
  86. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  87. package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
  88. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  89. package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
  90. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
  91. package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +68 -69
  92. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  93. package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +30 -30
  94. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  95. package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
  96. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  97. package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
  98. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  99. package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
  100. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  101. package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
  102. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  103. package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
  104. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  105. package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
  106. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
  107. package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2034 -1535
  108. package/fesm2022/breeze-client.mjs.map +1 -0
  109. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  110. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  111. package/package.json +94 -12
  112. package/src/config.d.ts +1 -1
  113. package/src/core.d.ts +1 -1
  114. package/src/entity-aspect.d.ts +1 -1
  115. package/src/entity-metadata.d.ts +8 -6
  116. package/src/entity-query.d.ts +1 -1
  117. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  118. package/adapter-ajax-angularjs/package.json +0 -13
  119. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  120. package/adapter-ajax-fetch/package.json +0 -13
  121. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  122. package/adapter-ajax-httpclient/package.json +0 -13
  123. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  124. package/adapter-ajax-jquery/package.json +0 -13
  125. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  126. package/adapter-ajax-post/package.json +0 -13
  127. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  128. package/adapter-data-service-odata/package.json +0 -13
  129. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  130. package/adapter-data-service-webapi/package.json +0 -13
  131. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  132. package/adapter-model-library-backing-store/package.json +0 -13
  133. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  134. package/adapter-model-library-ko/package.json +0 -13
  135. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  136. package/adapter-uri-builder-json/package.json +0 -13
  137. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  138. package/adapter-uri-builder-odata/package.json +0 -13
  139. package/breeze-client.d.ts +0 -8
  140. package/breeze-client.metadata.json +0 -1
  141. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  142. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  143. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  144. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  145. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  146. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  147. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  148. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  149. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  150. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  151. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  152. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  153. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  154. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  155. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  156. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  157. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  158. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  159. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  160. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  161. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -747
  162. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  163. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  164. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  165. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -333
  166. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  167. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  168. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  169. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  170. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  171. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  172. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  173. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  174. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  175. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  176. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  177. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  178. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  179. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  180. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  181. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  182. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  183. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  184. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  185. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  186. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  187. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  188. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  189. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  190. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  191. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  192. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  193. package/bundles/breeze-client.umd.js +0 -14234
  194. package/bundles/breeze-client.umd.js.map +0 -1
  195. package/bundles/breeze-client.umd.min.js +0 -16
  196. package/bundles/breeze-client.umd.min.js.map +0 -1
  197. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  198. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  199. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  200. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  201. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  202. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  203. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  204. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  205. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  206. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  207. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  208. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  209. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  210. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  211. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -463
  212. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  213. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -100
  214. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  215. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  216. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  217. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  218. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  219. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  220. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  221. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  222. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  223. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  224. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  225. package/esm2015/breeze-client.js +0 -9
  226. package/esm2015/index.js +0 -2
  227. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  228. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  229. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  230. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  231. package/esm2015/src/abstract-data-service-adapter.js +0 -327
  232. package/esm2015/src/array.js +0 -4
  233. package/esm2015/src/assert-param.js +0 -312
  234. package/esm2015/src/breeze.js +0 -85
  235. package/esm2015/src/complex-array.js +0 -119
  236. package/esm2015/src/config.js +0 -223
  237. package/esm2015/src/core.js +0 -714
  238. package/esm2015/src/csdl-metadata-parser.js +0 -385
  239. package/esm2015/src/data-service.js +0 -203
  240. package/esm2015/src/data-type.js +0 -506
  241. package/esm2015/src/default-property-interceptor.js +0 -460
  242. package/esm2015/src/entity-aspect.js +0 -804
  243. package/esm2015/src/entity-group.js +0 -187
  244. package/esm2015/src/entity-key.js +0 -116
  245. package/esm2015/src/entity-manager.js +0 -2094
  246. package/esm2015/src/entity-metadata.js +0 -2109
  247. package/esm2015/src/entity-query.js +0 -1015
  248. package/esm2015/src/entity-state.js +0 -107
  249. package/esm2015/src/enum.js +0 -141
  250. package/esm2015/src/event.js +0 -256
  251. package/esm2015/src/interface-registry.js +0 -41
  252. package/esm2015/src/key-generator.js +0 -108
  253. package/esm2015/src/local-query-comparison-options.js +0 -65
  254. package/esm2015/src/mapping-context.js +0 -411
  255. package/esm2015/src/naming-convention.js +0 -88
  256. package/esm2015/src/observable-array.js +0 -185
  257. package/esm2015/src/predicate.js +0 -1242
  258. package/esm2015/src/primitive-array.js +0 -87
  259. package/esm2015/src/query-options.js +0 -152
  260. package/esm2015/src/relation-array.js +0 -175
  261. package/esm2015/src/save-options.js +0 -41
  262. package/esm2015/src/unattached-children-map.js +0 -58
  263. package/esm2015/src/validate.js +0 -991
  264. package/esm2015/src/validation-options.js +0 -64
  265. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  266. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  267. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  268. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  269. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  270. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  271. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  272. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  273. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  274. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  275. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  276. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  277. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  278. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  279. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  280. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -105
  281. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  282. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  283. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  284. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  285. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  286. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  287. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  288. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  289. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  290. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  291. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  292. package/esm5/breeze-client.js +0 -9
  293. package/esm5/index.js +0 -2
  294. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  295. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  296. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  297. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  298. package/esm5/src/abstract-data-service-adapter.js +0 -333
  299. package/esm5/src/array.js +0 -4
  300. package/esm5/src/assert-param.js +0 -317
  301. package/esm5/src/breeze.js +0 -85
  302. package/esm5/src/complex-array.js +0 -119
  303. package/esm5/src/config.js +0 -228
  304. package/esm5/src/core.js +0 -722
  305. package/esm5/src/csdl-metadata-parser.js +0 -385
  306. package/esm5/src/data-service.js +0 -207
  307. package/esm5/src/data-type.js +0 -513
  308. package/esm5/src/default-property-interceptor.js +0 -460
  309. package/esm5/src/entity-action.js +0 -52
  310. package/esm5/src/entity-aspect.js +0 -810
  311. package/esm5/src/entity-group.js +0 -189
  312. package/esm5/src/entity-key.js +0 -118
  313. package/esm5/src/entity-manager.js +0 -2112
  314. package/esm5/src/entity-metadata.js +0 -2144
  315. package/esm5/src/entity-query.js +0 -1042
  316. package/esm5/src/entity-state.js +0 -114
  317. package/esm5/src/enum.js +0 -144
  318. package/esm5/src/event.js +0 -259
  319. package/esm5/src/interface-registry.js +0 -43
  320. package/esm5/src/key-generator.js +0 -111
  321. package/esm5/src/local-query-comparison-options.js +0 -67
  322. package/esm5/src/mapping-context.js +0 -413
  323. package/esm5/src/observable-array.js +0 -201
  324. package/esm5/src/predicate.js +0 -1307
  325. package/esm5/src/primitive-array.js +0 -87
  326. package/esm5/src/query-options.js +0 -167
  327. package/esm5/src/relation-array.js +0 -175
  328. package/esm5/src/save-options.js +0 -43
  329. package/esm5/src/unattached-children-map.js +0 -60
  330. package/esm5/src/validation-options.js +0 -66
  331. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  332. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  333. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  334. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  335. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  336. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  337. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  338. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  339. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  340. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  341. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  342. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  343. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  344. package/fesm2015/breeze-client.js.map +0 -1
  345. package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
  346. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  347. package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
  348. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  349. package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
  350. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  351. package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
  352. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  353. package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
  354. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  355. package/fesm5/breeze-client-adapter-data-service-odata.js +0 -523
  356. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  357. package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -111
  358. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  359. package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
  360. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  361. package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
  362. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  363. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  364. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  365. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  366. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  367. package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
  368. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  369. package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
  370. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  371. package/fesm5/breeze-client.js +0 -13956
  372. package/fesm5/breeze-client.js.map +0 -1
  373. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  374. package/mixin-get-entity-graph/package.json +0 -13
  375. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  376. package/mixin-save-queuing/package.json +0 -13
@@ -1,312 +0,0 @@
1
- import { core } from './core';
2
- /** @hidden @internal */
3
- export class Param {
4
- constructor(v, name) {
5
- /** @hidden @internal */
6
- this._applyOne = function (instance) {
7
- if (this.v !== undefined) {
8
- instance[this.name] = this.v;
9
- }
10
- else {
11
- if (this.defaultValue !== undefined) {
12
- instance[this.name] = this.defaultValue;
13
- }
14
- }
15
- };
16
- this.MESSAGE_PREFIX = "The '%1' parameter ";
17
- this.v = v;
18
- this.name = name;
19
- this._contexts = [null];
20
- }
21
- isObject() {
22
- return this.isTypeOf('object');
23
- }
24
- isBoolean() {
25
- return this.isTypeOf('boolean');
26
- }
27
- isString() {
28
- return this.isTypeOf('string');
29
- }
30
- isNumber() {
31
- return this.isTypeOf('number');
32
- }
33
- isFunction() {
34
- return this.isTypeOf('function');
35
- }
36
- isNonEmptyString() {
37
- return addContext(this, {
38
- fn: isNonEmptyString,
39
- msg: "must be a nonEmpty string"
40
- });
41
- }
42
- isTypeOf(typeName) {
43
- return addContext(this, {
44
- fn: isTypeOf,
45
- typeName: typeName,
46
- msg: "must be a '" + typeName + "'"
47
- });
48
- }
49
- isInstanceOf(type, typeName) {
50
- typeName = typeName || type.prototype._$typeName;
51
- return addContext(this, {
52
- fn: isInstanceOf,
53
- type: type,
54
- typeName: typeName,
55
- msg: "must be an instance of '" + typeName + "'"
56
- });
57
- }
58
- hasProperty(propertyName) {
59
- return addContext(this, {
60
- fn: hasProperty,
61
- propertyName: propertyName,
62
- msg: "must have a '" + propertyName + "' property"
63
- });
64
- }
65
- isEnumOf(enumType) {
66
- return addContext(this, {
67
- fn: isEnumOf,
68
- enumType: enumType,
69
- msg: "must be an instance of the '" + (enumType.name || 'unknown') + "' enumeration"
70
- });
71
- }
72
- isRequired(allowNull = false) {
73
- return addContext(this, {
74
- fn: isRequired,
75
- allowNull: allowNull,
76
- msg: "is required"
77
- });
78
- }
79
- isOptional() {
80
- let context = {
81
- fn: isOptional,
82
- prevContext: null,
83
- msg: isOptionalMessage
84
- };
85
- return addContext(this, context);
86
- }
87
- isNonEmptyArray() {
88
- return this.isArray(true);
89
- }
90
- isArray(mustNotBeEmpty) {
91
- let context = {
92
- fn: isArray,
93
- mustNotBeEmpty: mustNotBeEmpty,
94
- prevContext: null,
95
- msg: isArrayMessage
96
- };
97
- return addContext(this, context);
98
- }
99
- or() {
100
- this._contexts.push(null);
101
- this._context = null;
102
- return this;
103
- }
104
- check(defaultValue) {
105
- let ok = exec(this);
106
- if (ok === undefined)
107
- return;
108
- if (!ok) {
109
- throw new Error(this.getMessage());
110
- }
111
- if (this.v !== undefined) {
112
- return this.v;
113
- }
114
- else {
115
- return defaultValue;
116
- }
117
- }
118
- /** @hidden @internal */
119
- // called from outside this file.
120
- _addContext(context) {
121
- return addContext(this, context);
122
- }
123
- getMessage() {
124
- let that = this;
125
- let message = this._contexts.map(function (context) {
126
- return getMessage(context, that.v);
127
- }).join(", or it ");
128
- return core.formatString(this.MESSAGE_PREFIX, this.name) + " " + message;
129
- }
130
- withDefault(defaultValue) {
131
- this.defaultValue = defaultValue;
132
- return this;
133
- }
134
- whereParam(propName) {
135
- return this.parent.whereParam(propName);
136
- }
137
- applyAll(instance, checkOnly = false) {
138
- let parentTypeName = instance._$typeName;
139
- let allowUnknownProperty = (parentTypeName && this.parent.config._$typeName === parentTypeName);
140
- let clone = core.extend({}, this.parent.config);
141
- this.parent.params.forEach(function (p) {
142
- if (!allowUnknownProperty)
143
- delete clone[p.name];
144
- try {
145
- p.check();
146
- }
147
- catch (e) {
148
- throwConfigError(instance, e.message);
149
- }
150
- (!checkOnly) && p._applyOne(instance);
151
- });
152
- // should be no properties left in the clone
153
- if (!allowUnknownProperty) {
154
- for (let key in clone) {
155
- // allow props with an undefined value
156
- if (clone[key] !== undefined) {
157
- throwConfigError(instance, core.formatString("Unknown property: '%1'.", key));
158
- }
159
- }
160
- }
161
- }
162
- }
163
- /** @hidden @internal */
164
- export let assertParam = function (v, name) {
165
- return new Param(v, name);
166
- };
167
- function isTypeOf(context, v) {
168
- if (v == null)
169
- return false;
170
- if (typeof (v) === context.typeName)
171
- return true;
172
- return false;
173
- }
174
- function isNonEmptyString(context, v) {
175
- if (v == null)
176
- return false;
177
- return (typeof (v) === 'string') && v.length > 0;
178
- }
179
- function isInstanceOf(context, v) {
180
- if (v == null || context.type == null)
181
- return false;
182
- return (v instanceof context.type);
183
- }
184
- function isEnumOf(context, v) {
185
- if (v == null || context.enumType == null)
186
- return false;
187
- return context.enumType.contains(v);
188
- }
189
- function hasProperty(context, v) {
190
- if (v == null || context.propertyName == null)
191
- return false;
192
- return (v[context.propertyName] !== undefined);
193
- }
194
- function isRequired(context, v) {
195
- if (context.allowNull) {
196
- return v !== undefined;
197
- }
198
- else {
199
- return v != null;
200
- }
201
- }
202
- function isOptional(context, v) {
203
- if (v == null)
204
- return true;
205
- let prevContext = context.prevContext;
206
- if (prevContext && prevContext.fn) {
207
- return prevContext.fn(prevContext, v);
208
- }
209
- else {
210
- return true;
211
- }
212
- }
213
- function isOptionalMessage(context, v) {
214
- let prevContext = context.prevContext;
215
- let element = prevContext ? " or it " + getMessage(prevContext, v) : "";
216
- return "is optional" + element;
217
- }
218
- function isArray(context, v) {
219
- if (!Array.isArray(v)) {
220
- return false;
221
- }
222
- if (context.mustNotBeEmpty) {
223
- if (v.length === 0)
224
- return false;
225
- }
226
- // allow standalone is array call.
227
- let prevContext = context.prevContext;
228
- if (!prevContext)
229
- return true;
230
- let pc = prevContext;
231
- return v.every(function (v1) {
232
- return pc.fn && pc.fn(pc, v1);
233
- });
234
- }
235
- function isArrayMessage(context, v) {
236
- let arrayDescr = context.mustNotBeEmpty ? "a nonEmpty array" : "an array";
237
- let prevContext = context.prevContext;
238
- let element = prevContext ? " where each element " + getMessage(prevContext, v) : "";
239
- return " must be " + arrayDescr + element;
240
- }
241
- function getMessage(context, v) {
242
- let msg = context.msg;
243
- if (typeof (msg) === "function") {
244
- msg = msg(context, v);
245
- }
246
- return msg;
247
- }
248
- function addContext(that, context) {
249
- if (that._context) {
250
- let curContext = that._context;
251
- while (curContext.prevContext != null) {
252
- curContext = curContext.prevContext;
253
- }
254
- if (curContext.prevContext === null) {
255
- curContext.prevContext = context;
256
- // just update the prevContext but don't change the curContext.
257
- return that;
258
- }
259
- else if (context.prevContext == null) {
260
- context.prevContext = that._context;
261
- }
262
- else {
263
- throw new Error("Illegal construction - use 'or' to combine checks");
264
- }
265
- }
266
- return setContext(that, context);
267
- }
268
- function setContext(that, context) {
269
- that._contexts[that._contexts.length - 1] = context;
270
- that._context = context;
271
- return that;
272
- }
273
- function exec(self) {
274
- // clear off last one if null
275
- let contexts = self._contexts;
276
- if (contexts[contexts.length - 1] == null) {
277
- contexts.pop();
278
- }
279
- if (contexts.length === 0) {
280
- return undefined;
281
- }
282
- return contexts.some(function (context) {
283
- return context.fn ? context.fn(context, self.v) : false;
284
- });
285
- }
286
- function throwConfigError(instance, message) {
287
- throw new Error(core.formatString("Error configuring an instance of '%1'. %2", (instance && instance._$typeName) || "object", message));
288
- }
289
- class ConfigParam {
290
- constructor(config) {
291
- if (typeof (config) !== "object") {
292
- throw new Error("Configuration parameter should be an object, instead it is a: " + typeof (config));
293
- }
294
- this.config = config;
295
- this.params = [];
296
- }
297
- whereParam(propName) {
298
- let param = new Param(this.config[propName], propName);
299
- param.parent = this;
300
- this.params.push(param);
301
- return param;
302
- }
303
- }
304
- /** @hidden @internal */
305
- export let assertConfig = function (config) {
306
- return new ConfigParam(config);
307
- };
308
- // Param is exposed so that additional 'is' methods can be added to the prototype.
309
- core.Param = Param;
310
- core.assertParam = assertParam;
311
- core.assertConfig = assertConfig;
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LXBhcmFtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9hc3NlcnQtcGFyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLElBQUksRUFBRyxNQUFNLFFBQVEsQ0FBQztBQXNCL0Isd0JBQXdCO0FBQ3hCLE1BQU0sT0FBTyxLQUFLO0lBbUJkLFlBQVksQ0FBTSxFQUFFLElBQVk7UUEwS2hDLHdCQUF3QjtRQUN4QixjQUFTLEdBQUcsVUFBdUIsUUFBYTtZQUM1QyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUN0QixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDaEM7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtvQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2lCQUMzQzthQUNKO1FBQ0wsQ0FBQyxDQUFDO1FBRUYsbUJBQWMsR0FBRyxxQkFBcUIsQ0FBQztRQXBMbkMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQU0sSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFNBQVM7UUFDTCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDSixPQUFPLElBQUksQ0FB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QUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVlemVFbnVtIH0gZnJvbSAnLi9lbnVtJztcclxuaW1wb3J0IHsgY29yZSAgfSBmcm9tICcuL2NvcmUnO1xyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhcmFtQ29udGV4dCB7XHJcbiAgICB0eXBlTmFtZT86IHN0cmluZztcclxuICAgIHR5cGU/OiBGdW5jdGlvbjtcclxuICAgIHByZXZDb250ZXh0PzogSVBhcmFtQ29udGV4dDtcclxuICAgIG1zZz86IHN0cmluZyB8ICgoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSA9PiBzdHJpbmcpO1xyXG4gICAgbXVzdE5vdEJlRW1wdHk/OiBib29sZWFuO1xyXG4gICAgZW51bVR5cGU/OiBCcmVlemVFbnVtO1xyXG4gICAgcHJvcGVydHlOYW1lPzogc3RyaW5nO1xyXG4gICAgYWxsb3dOdWxsPzogYm9vbGVhbjtcclxuICAgIGZuPyhjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnUGFyYW0ge1xyXG4gICAgY29uZmlnOiBhbnk7XHJcbiAgICBwYXJhbXM6IFBhcmFtW107XHJcbiAgICB3aGVyZVBhcmFtOiAocHJvcE5hbWU6IHN0cmluZykgPT4gUGFyYW07XHJcbn1cclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgY2xhc3MgUGFyYW0ge1xyXG4gICAgLy8gVGhlICUxIHBhcmFtZXRlclxyXG4gICAgLy8gaXMgcmVxdWlyZWRcclxuICAgIC8vIG11c3QgYmUgYSAlMlxyXG4gICAgLy8gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAlMlxyXG4gICAgLy8gbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB0aGUgJTIgZW51bWVyYXRpb25cclxuICAgIC8vIG11c3QgaGF2ZSBhICUyIHByb3BlcnR5XHJcbiAgICAvLyBtdXN0IGJlIGFuIGFycmF5IHdoZXJlIGVhY2ggZWxlbWVudFxyXG4gICAgLy8gaXMgb3B0aW9uYWwgb3JcclxuXHJcbiAgICB2OiBhbnk7XHJcbiAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICBkZWZhdWx0VmFsdWU6IGFueTtcclxuICAgIHBhcmVudDogSUNvbmZpZ1BhcmFtO1xyXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgICBfY29udGV4dDogSVBhcmFtQ29udGV4dDtcclxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gICAgX2NvbnRleHRzOiBJUGFyYW1Db250ZXh0W107XHJcblxyXG4gICAgY29uc3RydWN0b3IodjogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnYgPSB2O1xyXG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dHMgPSBbPGFueT5udWxsXTtcclxuICAgIH1cclxuXHJcbiAgICBpc09iamVjdCgpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUeXBlT2YoJ29iamVjdCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQm9vbGVhbigpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUeXBlT2YoJ2Jvb2xlYW4nKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1N0cmluZygpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUeXBlT2YoJ3N0cmluZycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTnVtYmVyKCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1R5cGVPZignbnVtYmVyJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGdW5jdGlvbigpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNUeXBlT2YoJ2Z1bmN0aW9uJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNOb25FbXB0eVN0cmluZygpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywge1xyXG4gICAgICAgICAgICBmbjogaXNOb25FbXB0eVN0cmluZyxcclxuICAgICAgICAgICAgbXNnOiBcIm11c3QgYmUgYSBub25FbXB0eSBzdHJpbmdcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpc1R5cGVPZih0eXBlTmFtZTogc3RyaW5nKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIHtcclxuICAgICAgICAgICAgZm46IGlzVHlwZU9mLFxyXG4gICAgICAgICAgICB0eXBlTmFtZTogdHlwZU5hbWUsXHJcbiAgICAgICAgICAgIG1zZzogXCJtdXN0IGJlIGEgJ1wiICsgdHlwZU5hbWUgKyBcIidcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpc0luc3RhbmNlT2YodHlwZTogRnVuY3Rpb24sIHR5cGVOYW1lPzogc3RyaW5nKTogUGFyYW0ge1xyXG4gICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWUgfHwgdHlwZS5wcm90b3R5cGUuXyR0eXBlTmFtZTtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCB7XHJcbiAgICAgICAgICAgIGZuOiBpc0luc3RhbmNlT2YsXHJcbiAgICAgICAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgICAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcclxuICAgICAgICAgICAgbXNnOiBcIm11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgJ1wiICsgdHlwZU5hbWUgKyBcIidcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBoYXNQcm9wZXJ0eShwcm9wZXJ0eU5hbWU6IHN0cmluZyk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCB7XHJcbiAgICAgICAgICAgIGZuOiBoYXNQcm9wZXJ0eSxcclxuICAgICAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgICAgIG1zZzogXCJtdXN0IGhhdmUgYSAnXCIgKyBwcm9wZXJ0eU5hbWUgKyBcIicgcHJvcGVydHlcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBpc0VudW1PZihlbnVtVHlwZTogYW55KTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIHtcclxuICAgICAgICAgICAgZm46IGlzRW51bU9mLFxyXG4gICAgICAgICAgICBlbnVtVHlwZTogZW51bVR5cGUsXHJcbiAgICAgICAgICAgIG1zZzogXCJtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoZSAnXCIgKyAoZW51bVR5cGUubmFtZSB8fCAndW5rbm93bicpICsgXCInIGVudW1lcmF0aW9uXCJcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpc1JlcXVpcmVkKGFsbG93TnVsbDogYm9vbGVhbiA9IGZhbHNlKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIHtcclxuICAgICAgICAgICAgZm46IGlzUmVxdWlyZWQsXHJcbiAgICAgICAgICAgIGFsbG93TnVsbDogYWxsb3dOdWxsLFxyXG4gICAgICAgICAgICBtc2c6IFwiaXMgcmVxdWlyZWRcIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzT3B0aW9uYWwoKTogUGFyYW0ge1xyXG4gICAgICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICAgICAgICBmbjogaXNPcHRpb25hbCxcclxuICAgICAgICAgICAgcHJldkNvbnRleHQ6IDxhbnk+bnVsbCxcclxuICAgICAgICAgICAgbXNnOiBpc09wdGlvbmFsTWVzc2FnZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywgY29udGV4dCk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNOb25FbXB0eUFycmF5KCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0FycmF5KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzQXJyYXkobXVzdE5vdEJlRW1wdHk/OiBib29sZWFuKTogUGFyYW0ge1xyXG4gICAgICAgIGxldCBjb250ZXh0ID0ge1xyXG4gICAgICAgICAgICBmbjogaXNBcnJheSxcclxuICAgICAgICAgICAgbXVzdE5vdEJlRW1wdHk6IG11c3ROb3RCZUVtcHR5LFxyXG4gICAgICAgICAgICBwcmV2Q29udGV4dDogPGFueT5udWxsLFxyXG4gICAgICAgICAgICBtc2c6IGlzQXJyYXlNZXNzYWdlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCBjb250ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBvcigpIHtcclxuICAgICAgICB0aGlzLl9jb250ZXh0cy5wdXNoKDxhbnk+bnVsbCk7XHJcbiAgICAgICAgdGhpcy5fY29udGV4dCA9IDxhbnk+bnVsbDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICBjaGVjayhkZWZhdWx0VmFsdWU/OiBhbnkpIHtcclxuICAgICAgICBsZXQgb2sgPSBleGVjKHRoaXMpO1xyXG4gICAgICAgIGlmIChvayA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgICAgaWYgKCFvaykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRNZXNzYWdlKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMudiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnY7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgICAvLyBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoaXMgZmlsZS5cclxuICAgIF9hZGRDb250ZXh0KGNvbnRleHQ6IElQYXJhbUNvbnRleHQpIHtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCBjb250ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNZXNzYWdlKCkge1xyXG4gICAgICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgICAgICBsZXQgbWVzc2FnZSA9IHRoaXMuX2NvbnRleHRzLm1hcChmdW5jdGlvbiAoY29udGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0TWVzc2FnZShjb250ZXh0LCB0aGF0LnYpO1xyXG4gICAgICAgIH0pLmpvaW4oXCIsIG9yIGl0IFwiKTtcclxuICAgICAgICByZXR1cm4gY29yZS5mb3JtYXRTdHJpbmcodGhpcy5NRVNTQUdFX1BSRUZJWCwgdGhpcy5uYW1lKSArIFwiIFwiICsgbWVzc2FnZTtcclxuICAgIH1cclxuXHJcbiAgICB3aXRoRGVmYXVsdChkZWZhdWx0VmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlUGFyYW0ocHJvcE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC53aGVyZVBhcmFtKHByb3BOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBhcHBseUFsbChpbnN0YW5jZTogYW55LCBjaGVja09ubHk6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGxldCBwYXJlbnRUeXBlTmFtZSA9IGluc3RhbmNlLl8kdHlwZU5hbWU7XHJcbiAgICAgICAgbGV0IGFsbG93VW5rbm93blByb3BlcnR5ID0gKHBhcmVudFR5cGVOYW1lICYmIHRoaXMucGFyZW50LmNvbmZpZy5fJHR5cGVOYW1lID09PSBwYXJlbnRUeXBlTmFtZSk7XHJcblxyXG4gICAgICAgIGxldCBjbG9uZSA9IGNvcmUuZXh0ZW5kKHt9LCB0aGlzLnBhcmVudC5jb25maWcpO1xyXG4gICAgICAgIHRoaXMucGFyZW50LnBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XHJcbiAgICAgICAgICAgIGlmICghYWxsb3dVbmtub3duUHJvcGVydHkpIGRlbGV0ZSBjbG9uZVtwLm5hbWVdO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcC5jaGVjaygpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvd0NvbmZpZ0Vycm9yKGluc3RhbmNlLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICghY2hlY2tPbmx5KSAmJiBwLl9hcHBseU9uZShpbnN0YW5jZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gc2hvdWxkIGJlIG5vIHByb3BlcnRpZXMgbGVmdCBpbiB0aGUgY2xvbmVcclxuICAgICAgICBpZiAoIWFsbG93VW5rbm93blByb3BlcnR5KSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBjbG9uZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gYWxsb3cgcHJvcHMgd2l0aCBhbiB1bmRlZmluZWQgdmFsdWVcclxuICAgICAgICAgICAgICAgIGlmIChjbG9uZVtrZXldICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvd0NvbmZpZ0Vycm9yKGluc3RhbmNlLCBjb3JlLmZvcm1hdFN0cmluZyhcIlVua25vd24gcHJvcGVydHk6ICclMScuXCIsIGtleSkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gICAgX2FwcGx5T25lID0gZnVuY3Rpb24gKHRoaXM6IFBhcmFtLCBpbnN0YW5jZTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMudiAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGluc3RhbmNlW3RoaXMubmFtZV0gPSB0aGlzLnY7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGluc3RhbmNlW3RoaXMubmFtZV0gPSB0aGlzLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgTUVTU0FHRV9QUkVGSVggPSBcIlRoZSAnJTEnIHBhcmFtZXRlciBcIjtcclxuXHJcbn1cclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgbGV0IGFzc2VydFBhcmFtID0gZnVuY3Rpb24gKHY6IGFueSwgbmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gbmV3IFBhcmFtKHYsIG5hbWUpO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gaXNUeXBlT2YoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAodiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodHlwZW9mICh2KSA9PT0gY29udGV4dC50eXBlTmFtZSkgcmV0dXJuIHRydWU7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzTm9uRW1wdHlTdHJpbmcoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAodiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gKHR5cGVvZiAodikgPT09ICdzdHJpbmcnKSAmJiB2Lmxlbmd0aCA+IDA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzSW5zdGFuY2VPZihjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICh2ID09IG51bGwgfHwgY29udGV4dC50eXBlID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAodiBpbnN0YW5jZW9mIGNvbnRleHQudHlwZSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRW51bU9mKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCB8fCBjb250ZXh0LmVudW1UeXBlID09IG51bGwgKSByZXR1cm4gZmFsc2U7XHJcbiAgICByZXR1cm4gKGNvbnRleHQuZW51bVR5cGUgYXMgYW55KS5jb250YWlucyh2KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGFzUHJvcGVydHkoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAodiA9PSBudWxsIHx8IGNvbnRleHQucHJvcGVydHlOYW1lID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAodltjb250ZXh0LnByb3BlcnR5TmFtZV0gIT09IHVuZGVmaW5lZCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUmVxdWlyZWQoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAoY29udGV4dC5hbGxvd051bGwpIHtcclxuICAgICAgICByZXR1cm4gdiAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdiAhPSBudWxsO1xyXG4gICAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpc09wdGlvbmFsKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIHRydWU7XHJcbiAgICBsZXQgcHJldkNvbnRleHQgPSBjb250ZXh0LnByZXZDb250ZXh0O1xyXG4gICAgaWYgKHByZXZDb250ZXh0ICYmIHByZXZDb250ZXh0LmZuKSB7XHJcbiAgICAgICAgcmV0dXJuIHByZXZDb250ZXh0LmZuKHByZXZDb250ZXh0LCB2KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzT3B0aW9uYWxNZXNzYWdlKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgbGV0IHByZXZDb250ZXh0ID0gY29udGV4dC5wcmV2Q29udGV4dDtcclxuICAgIGxldCBlbGVtZW50ID0gcHJldkNvbnRleHQgPyBcIiBvciBpdCBcIiArIGdldE1lc3NhZ2UocHJldkNvbnRleHQsIHYpIDogXCJcIjtcclxuICAgIHJldHVybiBcImlzIG9wdGlvbmFsXCIgKyBlbGVtZW50O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0FycmF5KGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRleHQubXVzdE5vdEJlRW1wdHkpIHtcclxuICAgICAgICBpZiAodi5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIC8vIGFsbG93IHN0YW5kYWxvbmUgaXMgYXJyYXkgY2FsbC5cclxuICAgIGxldCBwcmV2Q29udGV4dCA9IGNvbnRleHQucHJldkNvbnRleHQ7XHJcbiAgICBpZiAoIXByZXZDb250ZXh0KSByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICBsZXQgcGMgPSA8YW55PnByZXZDb250ZXh0O1xyXG4gICAgcmV0dXJuIHYuZXZlcnkoZnVuY3Rpb24gKHYxOiBhbnkpIHtcclxuICAgICAgICByZXR1cm4gcGMuZm4gJiYgcGMuZm4ocGMsIHYxKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0FycmF5TWVzc2FnZShjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGxldCBhcnJheURlc2NyID0gY29udGV4dC5tdXN0Tm90QmVFbXB0eSA/IFwiYSBub25FbXB0eSBhcnJheVwiIDogXCJhbiBhcnJheVwiO1xyXG4gICAgbGV0IHByZXZDb250ZXh0ID0gY29udGV4dC5wcmV2Q29udGV4dDtcclxuICAgIGxldCBlbGVtZW50ID0gcHJldkNvbnRleHQgPyBcIiB3aGVyZSBlYWNoIGVsZW1lbnQgXCIgKyBnZXRNZXNzYWdlKHByZXZDb250ZXh0LCB2KSA6IFwiXCI7XHJcbiAgICByZXR1cm4gXCIgbXVzdCBiZSBcIiArIGFycmF5RGVzY3IgKyBlbGVtZW50O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNZXNzYWdlKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgbGV0IG1zZyA9IGNvbnRleHQubXNnO1xyXG4gICAgaWYgKHR5cGVvZiAobXNnKSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgbXNnID0gKDxhbnk+bXNnKShjb250ZXh0LCB2KTtcclxuICAgIH1cclxuICAgIHJldHVybiBtc2c7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFkZENvbnRleHQodGhhdDogUGFyYW0sIGNvbnRleHQ6IElQYXJhbUNvbnRleHQpIHtcclxuICAgIGlmICh0aGF0Ll9jb250ZXh0KSB7XHJcbiAgICAgICAgbGV0IGN1ckNvbnRleHQgPSB0aGF0Ll9jb250ZXh0O1xyXG5cclxuICAgICAgICB3aGlsZSAoY3VyQ29udGV4dC5wcmV2Q29udGV4dCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGN1ckNvbnRleHQgPSBjdXJDb250ZXh0LnByZXZDb250ZXh0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGN1ckNvbnRleHQucHJldkNvbnRleHQgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgY3VyQ29udGV4dC5wcmV2Q29udGV4dCA9IGNvbnRleHQ7XHJcbiAgICAgICAgICAgIC8vIGp1c3QgdXBkYXRlIHRoZSBwcmV2Q29udGV4dCBidXQgZG9uJ3QgY2hhbmdlIHRoZSBjdXJDb250ZXh0LlxyXG4gICAgICAgICAgICByZXR1cm4gdGhhdDtcclxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQucHJldkNvbnRleHQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnByZXZDb250ZXh0ID0gdGhhdC5fY29udGV4dDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbGxlZ2FsIGNvbnN0cnVjdGlvbiAtIHVzZSAnb3InIHRvIGNvbWJpbmUgY2hlY2tzXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzZXRDb250ZXh0KHRoYXQsIGNvbnRleHQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRDb250ZXh0KHRoYXQ6IFBhcmFtLCBjb250ZXh0OiBJUGFyYW1Db250ZXh0KSB7XHJcbiAgICB0aGF0Ll9jb250ZXh0c1t0aGF0Ll9jb250ZXh0cy5sZW5ndGggLSAxXSA9IGNvbnRleHQ7XHJcbiAgICB0aGF0Ll9jb250ZXh0ID0gY29udGV4dDtcclxuICAgIHJldHVybiB0aGF0O1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gZXhlYyhzZWxmOiBQYXJhbSkge1xyXG4gICAgLy8gY2xlYXIgb2ZmIGxhc3Qgb25lIGlmIG51bGxcclxuICAgIGxldCBjb250ZXh0cyA9IHNlbGYuX2NvbnRleHRzO1xyXG4gICAgaWYgKGNvbnRleHRzW2NvbnRleHRzLmxlbmd0aCAtIDFdID09IG51bGwpIHtcclxuICAgICAgICBjb250ZXh0cy5wb3AoKTtcclxuICAgIH1cclxuICAgIGlmIChjb250ZXh0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHRzLnNvbWUoZnVuY3Rpb24gKGNvbnRleHQ6IElQYXJhbUNvbnRleHQpIHtcclxuICAgICAgICByZXR1cm4gY29udGV4dC5mbiA/IGNvbnRleHQuZm4oY29udGV4dCwgc2VsZi52KSA6IGZhbHNlO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRocm93Q29uZmlnRXJyb3IoaW5zdGFuY2U6IGFueSwgbWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoY29yZS5mb3JtYXRTdHJpbmcoXCJFcnJvciBjb25maWd1cmluZyBhbiBpbnN0YW5jZSBvZiAnJTEnLiAlMlwiLCAoaW5zdGFuY2UgJiYgaW5zdGFuY2UuXyR0eXBlTmFtZSkgfHwgXCJvYmplY3RcIiwgbWVzc2FnZSkpO1xyXG59XHJcblxyXG5jbGFzcyBDb25maWdQYXJhbSB7XHJcbiAgICBjb25maWc6IGFueTtcclxuICAgIHBhcmFtczogUGFyYW1bXTtcclxuICAgIGNvbnN0cnVjdG9yKGNvbmZpZzogT2JqZWN0KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiAoY29uZmlnKSAhPT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb25maWd1cmF0aW9uIHBhcmFtZXRlciBzaG91bGQgYmUgYW4gb2JqZWN0LCBpbnN0ZWFkIGl0IGlzIGE6IFwiICsgdHlwZW9mIChjb25maWcpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWc7XHJcbiAgICAgICAgdGhpcy5wYXJhbXMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICB3aGVyZVBhcmFtKHByb3BOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICBsZXQgcGFyYW0gPSBuZXcgUGFyYW0odGhpcy5jb25maWdbcHJvcE5hbWVdLCBwcm9wTmFtZSk7XHJcbiAgICAgICAgcGFyYW0ucGFyZW50ID0gdGhpcztcclxuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHBhcmFtKTtcclxuICAgICAgICByZXR1cm4gcGFyYW07XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgbGV0IGFzc2VydENvbmZpZyA9IGZ1bmN0aW9uIChjb25maWc6IE9iamVjdCkge1xyXG4gICAgcmV0dXJuIG5ldyBDb25maWdQYXJhbShjb25maWcpIGFzIElDb25maWdQYXJhbTtcclxufTtcclxuXHJcblxyXG4vLyBQYXJhbSBpcyBleHBvc2VkIHNvIHRoYXQgYWRkaXRpb25hbCAnaXMnIG1ldGhvZHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBwcm90b3R5cGUuXHJcbihjb3JlIGFzIGFueSkuUGFyYW0gPSBQYXJhbTtcclxuKGNvcmUgYXMgYW55KS5hc3NlcnRQYXJhbSA9IGFzc2VydFBhcmFtO1xyXG4oY29yZSBhcyBhbnkpLmFzc2VydENvbmZpZyA9IGFzc2VydENvbmZpZztcclxuIl19
@@ -1,85 +0,0 @@
1
- import { AbstractDataServiceAdapter } from './abstract-data-service-adapter';
2
- import { assertParam, assertConfig, Param } from './assert-param';
3
- import { BreezeConfig } from './config';
4
- import { BreezeEnum } from './enum';
5
- import { BreezeEvent } from './event';
6
- import { DataService, JsonResultsAdapter } from './data-service';
7
- import { DataType } from './data-type';
8
- import { EntityAction } from './entity-action';
9
- import { EntityAspect, ComplexAspect } from './entity-aspect';
10
- import { EntityKey } from './entity-key';
11
- import { EntityManager } from './entity-manager';
12
- import { EntityQuery, FilterQueryOp, BooleanQueryOp, OrderByClause, ExpandClause, SelectClause } from './entity-query';
13
- import { EntityState } from './entity-state';
14
- import { InterfaceRegistry } from './interface-registry';
15
- import { KeyGenerator } from './key-generator';
16
- import { LocalQueryComparisonOptions } from './local-query-comparison-options';
17
- import { MappingContext } from './mapping-context';
18
- import { MetadataStore, EntityType, ComplexType, DataProperty, NavigationProperty, AutoGeneratedKeyType } from './entity-metadata';
19
- import { NamingConvention } from './naming-convention';
20
- import { Predicate, UnaryPredicate, BinaryPredicate, AnyAllPredicate, AndOrPredicate, LitExpr, FnExpr, PropExpr } from './predicate';
21
- import { QueryOptions, FetchStrategy, MergeStrategy } from './query-options';
22
- import { SaveOptions } from './save-options';
23
- import { ValidationError, Validator } from './validate';
24
- import { ValidationOptions } from './validation-options';
25
- import { config } from './config';
26
- import { core } from './core';
27
- import { makeRelationArray, makePrimitiveArray, makeComplexArray } from './array';
28
- export { BreezeConfig };
29
- export { AbstractDataServiceAdapter, AndOrPredicate, AnyAllPredicate, assertConfig, assertParam, AutoGeneratedKeyType, BinaryPredicate, BreezeEnum, BreezeEvent, ComplexAspect, ComplexType, config, core, DataProperty, DataService, DataType, EntityAction, EntityAspect, EntityKey, EntityManager, EntityQuery, EntityState, EntityType, ExpandClause, FetchStrategy, FilterQueryOp, FnExpr, InterfaceRegistry, JsonResultsAdapter, KeyGenerator, LitExpr, LocalQueryComparisonOptions, makeComplexArray, makePrimitiveArray, makeRelationArray, MappingContext, MergeStrategy, MetadataStore, NamingConvention, NavigationProperty, OrderByClause, Predicate, PropExpr, QueryOptions, SaveOptions, SelectClause, UnaryPredicate, ValidationError, ValidationOptions, Validator, };
30
- // create a breeze variable here
31
- export const breeze = {
32
- AbstractDataServiceAdapter: AbstractDataServiceAdapter,
33
- assertConfig: null,
34
- assertParam: null,
35
- AutoGeneratedKeyType: AutoGeneratedKeyType,
36
- BooleanQueryOp: BooleanQueryOp,
37
- ComplexAspect: ComplexAspect,
38
- ComplexType: ComplexType,
39
- config: config,
40
- core: core,
41
- DataProperty: DataProperty,
42
- DataService: DataService,
43
- DataType: DataType,
44
- EntityAction: EntityAction,
45
- EntityAspect: EntityAspect,
46
- EntityKey: EntityKey,
47
- EntityManager: EntityManager,
48
- EntityQuery: EntityQuery,
49
- EntityState: EntityState,
50
- EntityType: EntityType,
51
- Event: BreezeEvent,
52
- FetchStrategy: FetchStrategy,
53
- FilterQueryOp: FilterQueryOp,
54
- InterfaceRegistry: InterfaceRegistry,
55
- JsonResultsAdapter: JsonResultsAdapter,
56
- KeyGenerator: KeyGenerator,
57
- LocalQueryComparisonOptions: LocalQueryComparisonOptions,
58
- makeComplexArray: makeComplexArray,
59
- makePrimitiveArray: makePrimitiveArray,
60
- makeRelationArray: makeRelationArray,
61
- MergeStrategy: MergeStrategy,
62
- MetadataStore: MetadataStore,
63
- NamingConvention: NamingConvention,
64
- NavigationProperty: NavigationProperty,
65
- OrderByClause: OrderByClause,
66
- Param,
67
- Predicate: Predicate,
68
- QueryOptions: QueryOptions,
69
- SaveOptions: SaveOptions,
70
- ValidationError: ValidationError,
71
- ValidationOptions: ValidationOptions,
72
- Validator: Validator,
73
- version: "2.1.5"
74
- };
75
- /** @hidden @internal */
76
- let win;
77
- try {
78
- win = window ? window : (global ? global.window : undefined);
79
- }
80
- catch (e) {
81
- }
82
- if (win) {
83
- win.breeze = breeze;
84
- }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9icmVlemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLDBCQUEwQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsVUFBVSxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEMsT0FBTyxFQUFFLFdBQVcsRUFBcUIsa0JBQWtCLEVBQW1ELE1BQU0sZ0JBQWdCLENBQUM7QUFDckksT0FBTyxFQUFFLFFBQVEsRUFBRyxNQUFNLGFBQWEsQ0FBQztBQUN4QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQXFFLE1BQU0saUJBQWlCLENBQUM7QUFDakksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFtTixNQUFNLGtCQUFrQixDQUFDO0FBQ2xRLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQWtLLE1BQU0sc0JBQXNCLENBQUM7QUFDek4sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FB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QyxZQUFZLEVBQUUsWUFBWTtJQUMxQiwyQkFBMkIsRUFBRSwyQkFBMkI7SUFDeEQsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLGtCQUFrQixFQUFFLGtCQUFrQjtJQUN0QyxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDcEMsYUFBYSxFQUFFLGFBQWE7SUFDNUIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsZ0JBQWdCLEVBQUUsZ0JBQWdCO0lBQ2xDLGtCQUFrQixFQUFFLGtCQUFrQjtJQUN0QyxhQUFhLEVBQUUsYUFBYTtJQUM1QixLQUFLO0lBQ0wsU0FBUyxFQUFFLFNBQVM7SUFDcEIsWUFBWSxFQUFFLFlBQVk7SUFDMUIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsZUFBZSxFQUFFLGVBQWU7SUFDaEMsaUJBQWlCLEVBQUUsaUJBQWlCO0lBQ3BDLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUM7QUFnQkYsd0JBQXdCO0FBQ3hCLElBQUksR0FBUSxDQUFDO0FBQ2IsSUFBSTtJQUNGLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0NBQzlEO0FBQUMsT0FBTyxDQUFDLEVBQUU7Q0FFWDtBQUNELElBQUksR0FBRyxFQUFFO0lBQ1AsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDckIiLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXJ9IGZyb20gJy4vYWJzdHJhY3QtZGF0YS1zZXJ2aWNlLWFkYXB0ZXInO1xyXG5pbXBvcnQgeyBhc3NlcnRQYXJhbSwgYXNzZXJ0Q29uZmlnLCBQYXJhbSB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgQnJlZXplQ29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBCcmVlemVFbnVtfSBmcm9tICcuL2VudW0nO1xyXG5pbXBvcnQgeyBCcmVlemVFdmVudCB9IGZyb20gJy4vZXZlbnQnO1xyXG5pbXBvcnQgeyBDb21wbGV4QXJyYXkgfSBmcm9tICcuL2NvbXBsZXgtYXJyYXknO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSwgRGF0YVNlcnZpY2VDb25maWcsIEpzb25SZXN1bHRzQWRhcHRlciwgSnNvblJlc3VsdHNBZGFwdGVyQ29uZmlnLCBOb2RlQ29udGV4dCwgTm9kZU1ldGEgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcbmltcG9ydCB7IERhdGFUeXBlICB9IGZyb20gJy4vZGF0YS10eXBlJztcclxuaW1wb3J0IHsgRW50aXR5QWN0aW9uIH0gZnJvbSAnLi9lbnRpdHktYWN0aW9uJztcclxuaW1wb3J0IHsgRW50aXR5QXNwZWN0LCBDb21wbGV4QXNwZWN0LCBFbnRpdHksIENvbXBsZXhPYmplY3QsIFN0cnVjdHVyYWxPYmplY3QsIFByb3BlcnR5Q2hhbmdlZEV2ZW50QXJncyB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IEVudGl0eUtleSB9IGZyb20gJy4vZW50aXR5LWtleSc7XHJcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIsIEVudGl0eU1hbmFnZXJDb25maWcsIEVudGl0eUVycm9yLCBFbnRpdHlDaGFuZ2VkRXZlbnRBcmdzLCBTYXZlQ29udGV4dCwgU2F2ZUJ1bmRsZSwgSHR0cFJlc3BvbnNlLCBLZXlNYXBwaW5nLCBTZXJ2ZXJFcnJvciwgU2F2ZVJlc3VsdCwgUXVlcnlSZXN1bHQsIFZhbGlkYXRpb25FcnJvcnNDaGFuZ2VkRXZlbnRBcmdzLCBIYXNDaGFuZ2VzQ2hhbmdlZEV2ZW50QXJncyB9IGZyb20gJy4vZW50aXR5LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSwgRmlsdGVyUXVlcnlPcCwgQm9vbGVhblF1ZXJ5T3AsIE9yZGVyQnlDbGF1c2UsIEV4cGFuZENsYXVzZSwgU2VsZWN0Q2xhdXNlIH0gZnJvbSAnLi9lbnRpdHktcXVlcnknO1xyXG5pbXBvcnQgeyBFbnRpdHlTdGF0ZSB9IGZyb20gJy4vZW50aXR5LXN0YXRlJztcclxuaW1wb3J0IHsgSW50ZXJmYWNlUmVnaXN0cnksIEFqYXhBZGFwdGVyLCBBamF4Q29uZmlnLCBEYXRhU2VydmljZUFkYXB0ZXIsIE1vZGVsTGlicmFyeUFkYXB0ZXIsIENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvciwgVXJpQnVpbGRlckFkYXB0ZXIsIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnLCBBamF4UmVxdWVzdEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmZhY2UtcmVnaXN0cnknO1xyXG5pbXBvcnQgeyBLZXlHZW5lcmF0b3IgfSBmcm9tICcuL2tleS1nZW5lcmF0b3InO1xyXG5pbXBvcnQgeyBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMgfSBmcm9tICcuL2xvY2FsLXF1ZXJ5LWNvbXBhcmlzb24tb3B0aW9ucyc7XHJcbmltcG9ydCB7IE1hcHBpbmdDb250ZXh0IH0gZnJvbSAnLi9tYXBwaW5nLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YVN0b3JlLCBFbnRpdHlUeXBlLCBDb21wbGV4VHlwZSwgU3RydWN0dXJhbFR5cGUsIERhdGFQcm9wZXJ0eSwgRW50aXR5UHJvcGVydHksIE5hdmlnYXRpb25Qcm9wZXJ0eSwgQXV0b0dlbmVyYXRlZEtleVR5cGUgICB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgTmFtaW5nQ29udmVudGlvbiB9IGZyb20gJy4vbmFtaW5nLWNvbnZlbnRpb24nO1xyXG5pbXBvcnQgeyBQcmVkaWNhdGUsIFZpc2l0Q29udGV4dCwgVmlzaXRvciwgRXhwcmVzc2lvbkNvbnRleHQsIFVuYXJ5UHJlZGljYXRlLCBCaW5hcnlQcmVkaWNhdGUsIEFueUFsbFByZWRpY2F0ZSwgQW5kT3JQcmVkaWNhdGUsIExpdEV4cHIsIEZuRXhwciwgUHJvcEV4cHIgfSBmcm9tICcuL3ByZWRpY2F0ZSc7XHJcbmltcG9ydCB7IFF1ZXJ5T3B0aW9ucywgIEZldGNoU3RyYXRlZ3ksIE1lcmdlU3RyYXRlZ3kgfSBmcm9tICcuL3F1ZXJ5LW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBTYXZlT3B0aW9ucyB9IGZyb20gJy4vc2F2ZS1vcHRpb25zJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk9wdGlvbnMgfSBmcm9tICcuL3ZhbGlkYXRpb24tb3B0aW9ucyc7XHJcblxyXG5pbXBvcnQgeyBjb25maWcsIEJhc2VBZGFwdGVyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBjb3JlLCBDYWxsYmFjaywgRXJyb3JDYWxsYmFjayB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IG1ha2VSZWxhdGlvbkFycmF5LCBtYWtlUHJpbWl0aXZlQXJyYXksIG1ha2VDb21wbGV4QXJyYXkgfSBmcm9tICcuL2FycmF5JztcclxuXHJcbmltcG9ydCB7IFJlbGF0aW9uQXJyYXkgfSBmcm9tICcuL3JlbGF0aW9uLWFycmF5JztcclxuaW1wb3J0IHsgQXJyYXlDaGFuZ2VkQXJncyB9IGZyb20gJy4vb2JzZXJ2YWJsZS1hcnJheSc7XHJcbmV4cG9ydCB7IEJyZWV6ZUNvbmZpZywgQ29tcGxleEFycmF5LCBSZWxhdGlvbkFycmF5IH07XHJcblxyXG5leHBvcnQge1xyXG4gIEFic3RyYWN0RGF0YVNlcnZpY2VBZGFwdGVyLFxyXG4gIEFqYXhBZGFwdGVyLFxyXG4gIEFqYXhDb25maWcsXHJcbiAgQWpheFJlcXVlc3RJbnRlcmNlcHRvcixcclxuICBBbmRPclByZWRpY2F0ZSxcclxuICBBbnlBbGxQcmVkaWNhdGUsXHJcbiAgQXJyYXlDaGFuZ2VkQXJncyxcclxuICBhc3NlcnRDb25maWcsXHJcbiAgYXNzZXJ0UGFyYW0sXHJcbiAgQXV0b0dlbmVyYXRlZEtleVR5cGUsXHJcbiAgQmFzZUFkYXB0ZXIsXHJcbiAgQmluYXJ5UHJlZGljYXRlLFxyXG4gIEJyZWV6ZUVudW0sXHJcbiAgQnJlZXplRXZlbnQsIFxyXG4gIENhbGxiYWNrLFxyXG4gIENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcixcclxuICBDb21wbGV4QXNwZWN0LFxyXG4gIENvbXBsZXhPYmplY3QsXHJcbiAgQ29tcGxleFR5cGUsXHJcbiAgY29uZmlnLFxyXG4gIGNvcmUsXHJcbiAgRGF0YVByb3BlcnR5LFxyXG4gIERhdGFTZXJ2aWNlLFxyXG4gIERhdGFTZXJ2aWNlQWRhcHRlcixcclxuICBEYXRhU2VydmljZUNvbmZpZyxcclxuICBEYXRhVHlwZSxcclxuICBFbnRpdHksXHJcbiAgRW50aXR5QWN0aW9uLFxyXG4gIEVudGl0eUFzcGVjdCxcclxuICBFbnRpdHlDaGFuZ2VkRXZlbnRBcmdzLFxyXG4gIEVudGl0eUVycm9yLFxyXG4gIEVudGl0eUtleSxcclxuICBFbnRpdHlNYW5hZ2VyLFxyXG4gIEVudGl0eU1hbmFnZXJDb25maWcsXHJcbiAgRW50aXR5UHJvcGVydHksXHJcbiAgRW50aXR5UXVlcnksXHJcbiAgRW50aXR5U3RhdGUsXHJcbiAgRW50aXR5VHlwZSxcclxuICBFcnJvckNhbGxiYWNrLFxyXG4gIEV4cGFuZENsYXVzZSxcclxuICBFeHByZXNzaW9uQ29udGV4dCxcclxuICBGZXRjaFN0cmF0ZWd5LFxyXG4gIEZpbHRlclF1ZXJ5T3AsXHJcbiAgRm5FeHByLFxyXG4gIEhhc0NoYW5nZXNDaGFuZ2VkRXZlbnRBcmdzLFxyXG4gIEh0dHBSZXNwb25zZSxcclxuICBJbnRlcmZhY2VSZWdpc3RyeSxcclxuICBJbnRlcmZhY2VSZWdpc3RyeUNvbmZpZyxcclxuICBKc29uUmVzdWx0c0FkYXB0ZXIsXHJcbiAgSnNvblJlc3VsdHNBZGFwdGVyQ29uZmlnLFxyXG4gIEtleUdlbmVyYXRvcixcclxuICBLZXlNYXBwaW5nLFxyXG4gIExpdEV4cHIsXHJcbiAgTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zLFxyXG4gIG1ha2VDb21wbGV4QXJyYXksXHJcbiAgbWFrZVByaW1pdGl2ZUFycmF5LFxyXG4gIG1ha2VSZWxhdGlvbkFycmF5LFxyXG4gIE1hcHBpbmdDb250ZXh0LFxyXG4gIE1lcmdlU3RyYXRlZ3ksXHJcbiAgTWV0YWRhdGFTdG9yZSxcclxuICBNb2RlbExpYnJhcnlBZGFwdGVyLFxyXG4gIE5hbWluZ0NvbnZlbnRpb24sXHJcbiAgTmF2aWdhdGlvblByb3BlcnR5LFxyXG4gIE5vZGVDb250ZXh0LFxyXG4gIE5vZGVNZXRhLFxyXG4gIE9yZGVyQnlDbGF1c2UsXHJcbiAgUHJlZGljYXRlLFxyXG4gIFByb3BlcnR5Q2hhbmdlZEV2ZW50QXJncyxcclxuICBQcm9wRXhwcixcclxuICBRdWVyeU9wdGlvbnMsXHJcbiAgUXVlcnlSZXN1bHQsXHJcbiAgU2F2ZUJ1bmRsZSxcclxuICBTYXZlQ29udGV4dCxcclxuICBTYXZlT3B0aW9ucyxcclxuICBTYXZlUmVzdWx0LFxyXG4gIFNlbGVjdENsYXVzZSxcclxuICBTZXJ2ZXJFcnJvcixcclxuICBTdHJ1Y3R1cmFsT2JqZWN0LFxyXG4gIFN0cnVjdHVyYWxUeXBlLFxyXG4gIFVuYXJ5UHJlZGljYXRlLFxyXG4gIFVyaUJ1aWxkZXJBZGFwdGVyLFxyXG4gIFZhbGlkYXRpb25FcnJvcnNDaGFuZ2VkRXZlbnRBcmdzLFxyXG4gIFZhbGlkYXRpb25FcnJvcixcclxuICBWYWxpZGF0aW9uT3B0aW9ucyxcclxuICBWYWxpZGF0b3IsXHJcbiAgVmlzaXRDb250ZXh0LFxyXG4gIFZpc2l0b3IsXHJcbn07XHJcblxyXG4vLyBjcmVhdGUgYSBicmVlemUgdmFyaWFibGUgaGVyZVxyXG5leHBvcnQgY29uc3QgYnJlZXplID0ge1xyXG4gIEFic3RyYWN0RGF0YVNlcnZpY2VBZGFwdGVyOiBBYnN0cmFjdERhdGFTZXJ2aWNlQWRhcHRlcixcclxuICBhc3NlcnRDb25maWc6IG51bGwgYXMgYW55LFxyXG4gIGFzc2VydFBhcmFtOiBudWxsIGFzIGFueSxcclxuICBBdXRvR2VuZXJhdGVkS2V5VHlwZTogQXV0b0dlbmVyYXRlZEtleVR5cGUsXHJcbiAgQm9vbGVhblF1ZXJ5T3A6IEJvb2xlYW5RdWVyeU9wLFxyXG4gIENvbXBsZXhBc3BlY3Q6IENvbXBsZXhBc3BlY3QsXHJcbiAgQ29tcGxleFR5cGU6IENvbXBsZXhUeXBlLFxyXG4gIGNvbmZpZzogY29uZmlnLFxyXG4gIGNvcmU6IGNvcmUsXHJcbiAgRGF0YVByb3BlcnR5OiBEYXRhUHJvcGVydHksXHJcbiAgRGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gIERhdGFUeXBlOiBEYXRhVHlwZSxcclxuICBFbnRpdHlBY3Rpb246IEVudGl0eUFjdGlvbixcclxuICBFbnRpdHlBc3BlY3Q6IEVudGl0eUFzcGVjdCxcclxuICBFbnRpdHlLZXk6IEVudGl0eUtleSxcclxuICBFbnRpdHlNYW5hZ2VyOiBFbnRpdHlNYW5hZ2VyLFxyXG4gIEVudGl0eVF1ZXJ5OiBFbnRpdHlRdWVyeSxcclxuICBFbnRpdHlTdGF0ZTogRW50aXR5U3RhdGUsXHJcbiAgRW50aXR5VHlwZTogRW50aXR5VHlwZSxcclxuICBFdmVudDogQnJlZXplRXZlbnQsXHJcbiAgRmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneSxcclxuICBGaWx0ZXJRdWVyeU9wOiBGaWx0ZXJRdWVyeU9wLFxyXG4gIEludGVyZmFjZVJlZ2lzdHJ5OiBJbnRlcmZhY2VSZWdpc3RyeSxcclxuICBKc29uUmVzdWx0c0FkYXB0ZXI6IEpzb25SZXN1bHRzQWRhcHRlcixcclxuICBLZXlHZW5lcmF0b3I6IEtleUdlbmVyYXRvcixcclxuICBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnM6IExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucyxcclxuICBtYWtlQ29tcGxleEFycmF5OiBtYWtlQ29tcGxleEFycmF5LFxyXG4gIG1ha2VQcmltaXRpdmVBcnJheTogbWFrZVByaW1pdGl2ZUFycmF5LFxyXG4gIG1ha2VSZWxhdGlvbkFycmF5OiBtYWtlUmVsYXRpb25BcnJheSxcclxuICBNZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5LFxyXG4gIE1ldGFkYXRhU3RvcmU6IE1ldGFkYXRhU3RvcmUsXHJcbiAgTmFtaW5nQ29udmVudGlvbjogTmFtaW5nQ29udmVudGlvbixcclxuICBOYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSxcclxuICBPcmRlckJ5Q2xhdXNlOiBPcmRlckJ5Q2xhdXNlLCAvLyBmb3IgdGVzdGluZyBvbmx5XHJcbiAgUGFyYW0sXHJcbiAgUHJlZGljYXRlOiBQcmVkaWNhdGUsXHJcbiAgUXVlcnlPcHRpb25zOiBRdWVyeU9wdGlvbnMsXHJcbiAgU2F2ZU9wdGlvbnM6IFNhdmVPcHRpb25zLFxyXG4gIFZhbGlkYXRpb25FcnJvcjogVmFsaWRhdGlvbkVycm9yLFxyXG4gIFZhbGlkYXRpb25PcHRpb25zOiBWYWxpZGF0aW9uT3B0aW9ucyxcclxuICBWYWxpZGF0b3I6IFZhbGlkYXRvcixcclxuICB2ZXJzaW9uOiBcIjIuMS41XCJcclxufTtcclxuXHJcbi8vIGJyZWV6ZS5hc3NlcnRDb25maWcgPSBhc3NlcnRDb25maWcgYXMgYW55O1xyXG4vLyBicmVlemUuYXNzZXJ0UGFyYW0gPSBhc3NlcnRQYXJhbSBhcyBhbnk7XHJcblxyXG5leHBvcnQgbmFtZXNwYWNlIHByb21pc2VzIHtcclxuICAvKiogbm8tb3AgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBicmVlemUtYnJpZGdlMi1hbmd1bGFyICovXHJcbiAgZXhwb3J0IGludGVyZmFjZSBJUHJvbWlzZVNlcnZpY2Uge31cclxufVxyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmRlY2xhcmUgdmFyIHdpbmRvdzogYW55O1xyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmRlY2xhcmUgdmFyIGdsb2JhbDogYW55O1xyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmxldCB3aW46IGFueTtcclxudHJ5IHtcclxuICB3aW4gPSB3aW5kb3cgPyB3aW5kb3cgOiAoZ2xvYmFsID8gZ2xvYmFsLndpbmRvdyA6IHVuZGVmaW5lZCk7XHJcbn0gY2F0Y2ggKGUpIHtcclxuXHJcbn1cclxuaWYgKHdpbikge1xyXG4gIHdpbi5icmVlemUgPSBicmVlemU7XHJcbn1cclxuIl19
@@ -1,119 +0,0 @@
1
- import { core } from './core';
2
- import { observableArray } from './observable-array';
3
- import { BreezeEvent } from './event';
4
- const ɵ0 = function (adds) {
5
- return getGoodAdds(this, adds);
6
- }, ɵ1 = function () {
7
- observableArray.updateEntityState(this);
8
- }, ɵ2 = function (adds) {
9
- processAdds(this, adds);
10
- }, ɵ3 = function (removes) {
11
- processRemoves(this, removes);
12
- }, ɵ4 = function () {
13
- if (!this._origValues)
14
- return;
15
- let that = this;
16
- this.forEach(function (co) {
17
- clearAspect(co, that);
18
- });
19
- this.length = 0;
20
- this._origValues.forEach(function (co) {
21
- that.push(co);
22
- });
23
- }, ɵ5 = function () {
24
- this._origValues = null;
25
- };
26
- let complexArrayMixin = {
27
- // complexArray will have the following props
28
- // parent
29
- // propertyPath
30
- // parentProperty
31
- // addedItems - only if modified
32
- // removedItems - only if modified
33
- // each complexAspect of any entity within a complexArray
34
- // will have its own _complexState = "A/M";
35
- /**
36
- Complex arrays are not actually classes, they are objects that mimic arrays. A complex array is collection of
37
- complexTypes associated with a data property on a single entity or other complex object. i.e. customer.orders or order.orderDetails.
38
- This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
39
- are all provided as well as several special purpose methods.
40
- @class {complexArray}
41
- **/
42
- /**
43
- An [[Event]] that fires whenever the contents of this array changed. This event
44
- is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
45
- Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
46
- collections are collected into a single notification event for each relation array.
47
- @example
48
- // assume order is an order entity attached to an EntityManager.
49
- orders.arrayChanged.subscribe(
50
- function (arrayChangedArgs) {
51
- var addedEntities = arrayChangedArgs.added;
52
- var removedEntities = arrayChanged.removed;
53
- });
54
- @event arrayChanged
55
- @param added {Array of Entity} An array of all of the entities added to this collection.
56
- @param removed {Array of Entity} An array of all of the removed from this collection.
57
- @readOnly
58
- **/
59
- // virtual impls
60
- _getGoodAdds: ɵ0,
61
- _beforeChange: ɵ1,
62
- _processAdds: ɵ2,
63
- _processRemoves: ɵ3,
64
- _rejectChanges: ɵ4,
65
- _acceptChanges: ɵ5
66
- };
67
- // local functions
68
- function getGoodAdds(complexArray, adds) {
69
- // remove any that are already added here
70
- return adds.filter(function (a) {
71
- // return a.parent !== complexArray.parent; // TODO: check if this is actually a bug in original breezejs ???
72
- return a.complexAspect == null || a.complexAspect.parent !== complexArray.parent;
73
- });
74
- }
75
- function processAdds(complexArray, adds) {
76
- adds.forEach(function (a) {
77
- // if (a.parent != null) { // TODO: check if this is actually a bug in original breezejs ???
78
- if (a.complexAspect && a.complexAspect.parent != null) {
79
- throw new Error("The complexObject is already attached. Either clone it or remove it from its current owner");
80
- }
81
- setAspect(a, complexArray);
82
- });
83
- }
84
- function processRemoves(complexArray, removes) {
85
- removes.forEach(function (a) {
86
- clearAspect(a, complexArray);
87
- });
88
- }
89
- function clearAspect(co, arr) {
90
- let coAspect = co.complexAspect;
91
- // if not already attached - exit
92
- if (coAspect.parent !== arr.parent)
93
- return null;
94
- coAspect.parent = undefined;
95
- coAspect.parentProperty = undefined;
96
- return coAspect;
97
- }
98
- function setAspect(co, arr) {
99
- let coAspect = co.complexAspect;
100
- // if already attached - exit
101
- if (coAspect.parent === arr.parent)
102
- return null;
103
- coAspect.parent = arr.parent;
104
- coAspect.parentProperty = arr.parentProperty;
105
- return coAspect;
106
- }
107
- /** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
108
- @adapter (see [[IModelLibraryAdapter]])
109
- @hidden
110
- */
111
- export function makeComplexArray(arr, parent, parentProperty) {
112
- let arrX = arr;
113
- observableArray.initializeParent(arrX, parent, parentProperty);
114
- arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
115
- core.extend(arrX, observableArray.mixin);
116
- return core.extend(arrX, complexArrayMixin);
117
- }
118
- export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5 };
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleC1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvY29tcGxleC1hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFHLE1BQU0sUUFBUSxDQUFDO0FBQy9CLE9BQU8sRUFBbUIsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztXQWtEdEIsVUFBUyxJQUFXO0lBQ2hDLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqQyxDQUFDLE9BRWM7SUFDYixlQUFlLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUMsQ0FBQyxPQUVhLFVBQVMsSUFBVztJQUNoQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUMsT0FFZ0IsVUFBUyxPQUFjO0lBQ3RDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEMsQ0FBQyxPQUVlO0lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQUUsT0FBTztJQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7SUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQWlCO1FBQ3RDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQWlCO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLE9BRWU7SUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUMxQixD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QUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBaUIsQ0FBQztBQUM5RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSAgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlQXJyYXksIG9ic2VydmFibGVBcnJheSB9IGZyb20gJy4vb2JzZXJ2YWJsZS1hcnJheSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IENvbXBsZXhPYmplY3QsIFN0cnVjdHVyYWxPYmplY3QgfSBmcm9tICcuL2VudGl0eS1hc3BlY3QnO1xyXG5pbXBvcnQgeyBEYXRhUHJvcGVydHkgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcblxyXG4vLyBUT0RPOiBtaXhpbiBpbXBsIGlzIG5vdCB2ZXJ5IHR5cGVzYWZlXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXhBcnJheSBleHRlbmRzIE9ic2VydmFibGVBcnJheSB7XHJcbiAgW2luZGV4OiBudW1iZXJdOiBDb21wbGV4T2JqZWN0O1xyXG4gIHBhcmVudD86IFN0cnVjdHVyYWxPYmplY3Q7XHJcbiAgcGFyZW50UHJvcGVydHk/OiBEYXRhUHJvcGVydHk7XHJcbn1cclxuXHJcbmxldCBjb21wbGV4QXJyYXlNaXhpbiA9IHtcclxuXHJcbiAgLy8gY29tcGxleEFycmF5IHdpbGwgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BzXHJcbiAgLy8gICAgcGFyZW50XHJcbiAgLy8gICAgcHJvcGVydHlQYXRoXHJcbiAgLy8gICAgcGFyZW50UHJvcGVydHlcclxuICAvLyAgICBhZGRlZEl0ZW1zICAtIG9ubHkgaWYgbW9kaWZpZWRcclxuICAvLyAgICByZW1vdmVkSXRlbXMgIC0gb25seSBpZiBtb2RpZmllZFxyXG4gIC8vICBlYWNoIGNvbXBsZXhBc3BlY3Qgb2YgYW55IGVudGl0eSB3aXRoaW4gYSBjb21wbGV4QXJyYXlcclxuICAvLyAgd2lsbCBoYXZlIGl0cyBvd24gX2NvbXBsZXhTdGF0ZSA9IFwiQS9NXCI7XHJcblxyXG4gIC8qKlxyXG4gICBDb21wbGV4IGFycmF5cyBhcmUgbm90IGFjdHVhbGx5IGNsYXNzZXMsIHRoZXkgYXJlIG9iamVjdHMgdGhhdCBtaW1pYyBhcnJheXMuIEEgY29tcGxleCBhcnJheSBpcyBjb2xsZWN0aW9uIG9mXHJcbiAgIGNvbXBsZXhUeXBlcyBhc3NvY2lhdGVkIHdpdGggYSBkYXRhIHByb3BlcnR5IG9uIGEgc2luZ2xlIGVudGl0eSBvciBvdGhlciBjb21wbGV4IG9iamVjdC4gaS5lLiBjdXN0b21lci5vcmRlcnMgb3Igb3JkZXIub3JkZXJEZXRhaWxzLlxyXG4gICBUaGlzIGNvbGxlY3Rpb24gbG9va3MgbGlrZSBhbiBhcnJheSBpbiB0aGF0IHRoZSBiYXNpYyBtZXRob2RzIG9uIGFycmF5cyBzdWNoIGFzICdwdXNoJywgJ3BvcCcsICdzaGlmdCcsICd1bnNoaWZ0JywgJ3NwbGljZSdcclxuICAgYXJlIGFsbCBwcm92aWRlZCBhcyB3ZWxsIGFzIHNldmVyYWwgc3BlY2lhbCBwdXJwb3NlIG1ldGhvZHMuXHJcbiAgIEBjbGFzcyB7Y29tcGxleEFycmF5fVxyXG4gICAqKi9cclxuXHJcbiAgLyoqXHJcbiAgQW4gW1tFdmVudF1dIHRoYXQgZmlyZXMgd2hlbmV2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoaXMgYXJyYXkgY2hhbmdlZC4gIFRoaXMgZXZlbnRcclxuICBpcyBmaXJlZCBhbnkgdGltZSBhIG5ldyBlbnRpdHkgaXMgYXR0YWNoZWQgb3IgYWRkZWQgdG8gdGhlIEVudGl0eU1hbmFnZXIgYW5kIGhhcHBlbnMgdG8gYmVsb25nIHRvIHRoaXMgY29sbGVjdGlvbi5cclxuICBBZGRzIHRoYXQgb2NjdXIgYXMgYSByZXN1bHQgb2YgcXVlcnkgb3IgaW1wb3J0IG9wZXJhdGlvbnMgYXJlIGJhdGNoZWQgc28gdGhhdCBhbGwgb2YgdGhlIGFkZHMgb3IgcmVtb3ZlcyB0byBhbnkgaW5kaXZpZHVhbFxyXG4gIGNvbGxlY3Rpb25zIGFyZSBjb2xsZWN0ZWQgaW50byBhIHNpbmdsZSBub3RpZmljYXRpb24gZXZlbnQgZm9yIGVhY2ggcmVsYXRpb24gYXJyYXkuXHJcbiAgQGV4YW1wbGVcclxuICAgICAgLy8gYXNzdW1lIG9yZGVyIGlzIGFuIG9yZGVyIGVudGl0eSBhdHRhY2hlZCB0byBhbiBFbnRpdHlNYW5hZ2VyLlxyXG4gICAgICBvcmRlcnMuYXJyYXlDaGFuZ2VkLnN1YnNjcmliZShcclxuICAgICAgZnVuY3Rpb24gKGFycmF5Q2hhbmdlZEFyZ3MpIHtcclxuICAgICAgICAgIHZhciBhZGRlZEVudGl0aWVzID0gYXJyYXlDaGFuZ2VkQXJncy5hZGRlZDtcclxuICAgICAgICAgIHZhciByZW1vdmVkRW50aXRpZXMgPSBhcnJheUNoYW5nZWQucmVtb3ZlZDtcclxuICAgICAgfSk7XHJcbiAgQGV2ZW50IGFycmF5Q2hhbmdlZFxyXG4gIEBwYXJhbSBhZGRlZCB7QXJyYXkgb2YgRW50aXR5fSBBbiBhcnJheSBvZiBhbGwgb2YgdGhlIGVudGl0aWVzIGFkZGVkIHRvIHRoaXMgY29sbGVjdGlvbi5cclxuICBAcGFyYW0gcmVtb3ZlZCB7QXJyYXkgb2YgRW50aXR5fSBBbiBhcnJheSBvZiBhbGwgb2YgdGhlIHJlbW92ZWQgZnJvbSB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQHJlYWRPbmx5XHJcbiAgKiovXHJcblxyXG4gICAgLy8gdmlydHVhbCBpbXBsc1xyXG4gIF9nZXRHb29kQWRkczogZnVuY3Rpb24oYWRkczogYW55W10pIHtcclxuICAgIHJldHVybiBnZXRHb29kQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfYmVmb3JlQ2hhbmdlOiBmdW5jdGlvbigpIHtcclxuICAgIG9ic2VydmFibGVBcnJheS51cGRhdGVFbnRpdHlTdGF0ZSh0aGlzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc0FkZHM6IGZ1bmN0aW9uKGFkZHM6IGFueVtdKSB7XHJcbiAgICBwcm9jZXNzQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc1JlbW92ZXM6IGZ1bmN0aW9uKHJlbW92ZXM6IGFueVtdKSB7XHJcbiAgICBwcm9jZXNzUmVtb3Zlcyh0aGlzLCByZW1vdmVzKTtcclxuICB9LFxyXG5cclxuICBfcmVqZWN0Q2hhbmdlczogZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuX29yaWdWYWx1ZXMpIHJldHVybjtcclxuICAgIGxldCB0aGF0ID0gdGhpcztcclxuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbiAoY286IENvbXBsZXhPYmplY3QpIHtcclxuICAgICAgY2xlYXJBc3BlY3QoY28sIHRoYXQpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLl9vcmlnVmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKGNvOiBDb21wbGV4T2JqZWN0KSB7XHJcbiAgICAgIHRoYXQucHVzaChjbyk7XHJcbiAgICB9KTtcclxuICB9LFxyXG5cclxuICBfYWNjZXB0Q2hhbmdlczogZnVuY3Rpb24oKSB7XHJcbiAgICB0aGlzLl9vcmlnVmFsdWVzID0gbnVsbDtcclxuICB9XHJcbn07XHJcblxyXG4vLyBsb2NhbCBmdW5jdGlvbnNcclxuXHJcblxyXG5mdW5jdGlvbiBnZXRHb29kQWRkcyhjb21wbGV4QXJyYXk6IENvbXBsZXhBcnJheSwgYWRkczogQ29tcGxleE9iamVjdFtdKSB7XHJcbiAgLy8gcmVtb3ZlIGFueSB0aGF0IGFyZSBhbHJlYWR5IGFkZGVkIGhlcmVcclxuICByZXR1cm4gYWRkcy5maWx0ZXIoZnVuY3Rpb24gKGEpIHtcclxuICAgIC8vIHJldHVybiBhLnBhcmVudCAhPT0gY29tcGxleEFycmF5LnBhcmVudDsgIC8vIFRPRE86IGNoZWNrIGlmIHRoaXMgaXMgYWN0dWFsbHkgYSBidWcgaW4gb3JpZ2luYWwgYnJlZXplanMgPz8/XHJcbiAgICByZXR1cm4gYS5jb21wbGV4QXNwZWN0ID09IG51bGwgfHwgYS5jb21wbGV4QXNwZWN0LnBhcmVudCAhPT0gY29tcGxleEFycmF5LnBhcmVudDtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc0FkZHMoY29tcGxleEFycmF5OiBDb21wbGV4QXJyYXksIGFkZHM6IENvbXBsZXhPYmplY3RbXSkge1xyXG4gIGFkZHMuZm9yRWFjaChmdW5jdGlvbiAoYSkge1xyXG4gICAgLy8gaWYgKGEucGFyZW50ICE9IG51bGwpIHsgLy8gVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBhY3R1YWxseSBhIGJ1ZyBpbiBvcmlnaW5hbCBicmVlemVqcyA/Pz9cclxuICAgIGlmIChhLmNvbXBsZXhBc3BlY3QgJiYgYS5jb21wbGV4QXNwZWN0LnBhcmVudCAhPSBudWxsKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoZSBjb21wbGV4T2JqZWN0IGlzIGFscmVhZHkgYXR0YWNoZWQuIEVpdGhlciBjbG9uZSBpdCBvciByZW1vdmUgaXQgZnJvbSBpdHMgY3VycmVudCBvd25lclwiKTtcclxuICAgIH1cclxuICAgIHNldEFzcGVjdChhLCBjb21wbGV4QXJyYXkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzUmVtb3Zlcyhjb21wbGV4QXJyYXk6IENvbXBsZXhBcnJheSwgcmVtb3ZlczogQ29tcGxleE9iamVjdFtdKSB7XHJcbiAgcmVtb3Zlcy5mb3JFYWNoKGZ1bmN0aW9uIChhKSB7XHJcbiAgICBjbGVhckFzcGVjdChhLCBjb21wbGV4QXJyYXkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjbGVhckFzcGVjdChjbzogQ29tcGxleE9iamVjdCwgYXJyOiBDb21wbGV4QXJyYXkpIHtcclxuICBsZXQgY29Bc3BlY3QgPSBjby5jb21wbGV4QXNwZWN0O1xyXG4gIC8vIGlmIG5vdCBhbHJlYWR5IGF0dGFjaGVkIC0gZXhpdFxyXG4gIGlmIChjb0FzcGVjdC5wYXJlbnQgIT09IGFyci5wYXJlbnQpIHJldHVybiBudWxsO1xyXG5cclxuICBjb0FzcGVjdC5wYXJlbnQgPSB1bmRlZmluZWQ7XHJcbiAgY29Bc3BlY3QucGFyZW50UHJvcGVydHkgPSB1bmRlZmluZWQ7XHJcbiAgcmV0dXJuIGNvQXNwZWN0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBzZXRBc3BlY3QoY286IENvbXBsZXhPYmplY3QsIGFycjogQ29tcGxleEFycmF5KSB7XHJcbiAgbGV0IGNvQXNwZWN0ID0gY28uY29tcGxleEFzcGVjdDtcclxuICAvLyBpZiBhbHJlYWR5IGF0dGFjaGVkIC0gZXhpdFxyXG4gIGlmIChjb0FzcGVjdC5wYXJlbnQgPT09IGFyci5wYXJlbnQpIHJldHVybiBudWxsO1xyXG4gIGNvQXNwZWN0LnBhcmVudCA9IGFyci5wYXJlbnQ7XHJcbiAgY29Bc3BlY3QucGFyZW50UHJvcGVydHkgPSBhcnIucGFyZW50UHJvcGVydHk7XHJcblxyXG4gIHJldHVybiBjb0FzcGVjdDtcclxufVxyXG5cclxuXHJcbi8qKiBGb3IgdXNlIGJ5IGJyZWV6ZSBwbHVnaW4gYXV0aG9ycyBvbmx5LiBUaGUgY2xhc3MgaXMgZm9yIHVzZSBpbiBidWlsZGluZyBhIFtbSU1vZGVsTGlicmFyeUFkYXB0ZXJdXSBpbXBsZW1lbnRhdGlvbi4gXHJcbkBhZGFwdGVyIChzZWUgW1tJTW9kZWxMaWJyYXJ5QWRhcHRlcl1dKSAgICBcclxuQGhpZGRlbiBcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb21wbGV4QXJyYXkoYXJyOiBhbnlbXSwgcGFyZW50OiBTdHJ1Y3R1cmFsT2JqZWN0LCBwYXJlbnRQcm9wZXJ0eTogRGF0YVByb3BlcnR5KSB7XHJcbiAgbGV0IGFyclggPSBhcnIgYXMgYW55O1xyXG4gIG9ic2VydmFibGVBcnJheS5pbml0aWFsaXplUGFyZW50KGFyclgsIHBhcmVudCwgcGFyZW50UHJvcGVydHkpO1xyXG4gIGFyclguYXJyYXlDaGFuZ2VkID0gbmV3IEJyZWV6ZUV2ZW50KFwiYXJyYXlDaGFuZ2VkXCIsIGFyclgpO1xyXG4gIGNvcmUuZXh0ZW5kKGFyclgsIG9ic2VydmFibGVBcnJheS5taXhpbik7XHJcbiAgcmV0dXJuIGNvcmUuZXh0ZW5kKGFyclgsIGNvbXBsZXhBcnJheU1peGluKSBhcyBDb21wbGV4QXJyYXk7XHJcbn1cclxuXHJcbiJdfQ==