breeze-client 2.2.2 → 3.0.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 (299) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +83 -63
  3. package/adapters/abstract-data-service-adapter.d.ts +120 -0
  4. package/adapters/abstract-data-service-adapter.js +395 -0
  5. package/adapters/abstract-data-service-adapter.js.map +1 -0
  6. package/adapters/adapter-ajax-fetch.d.ts +12 -0
  7. package/adapters/adapter-ajax-fetch.js +13 -0
  8. package/adapters/adapter-ajax-fetch.js.map +1 -0
  9. package/{adapter-ajax-post → adapters}/adapter-ajax-post.d.ts +40 -36
  10. package/{fesm2022/breeze-client-adapter-ajax-post.mjs → adapters/adapter-ajax-post.js} +80 -82
  11. package/adapters/adapter-ajax-post.js.map +1 -0
  12. package/{adapter-ajax-fetch → adapters}/adapter-core.d.ts +4 -4
  13. package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → adapters/adapter-core.js} +48 -91
  14. package/adapters/adapter-core.js.map +1 -0
  15. package/adapters/adapter-data-service-webapi.d.ts +9 -0
  16. package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → adapters/adapter-data-service-webapi.js} +105 -107
  17. package/adapters/adapter-data-service-webapi.js.map +1 -0
  18. package/adapters/adapter-model-library-backing-store.d.ts +32 -0
  19. package/adapters/adapter-model-library-backing-store.js +321 -0
  20. package/adapters/adapter-model-library-backing-store.js.map +1 -0
  21. package/adapters/adapter-uri-builder-json.d.ts +11 -0
  22. package/adapters/adapter-uri-builder-json.js +40 -0
  23. package/adapters/adapter-uri-builder-json.js.map +1 -0
  24. package/adapters/http.d.ts +52 -0
  25. package/adapters/http.js +202 -0
  26. package/adapters/http.js.map +1 -0
  27. package/angular/adapter-angular-httpclient.d.ts +21 -0
  28. package/angular/adapter-angular-httpclient.js +70 -0
  29. package/angular/adapter-angular-httpclient.js.map +1 -0
  30. package/breeze.d.ts +215 -0
  31. package/breeze.js +141 -0
  32. package/breeze.js.map +1 -0
  33. package/config/config.d.ts +212 -0
  34. package/config/config.js +392 -0
  35. package/config/config.js.map +1 -0
  36. package/config/configure.d.ts +66 -0
  37. package/config/configure.js +46 -0
  38. package/config/configure.js.map +1 -0
  39. package/config/default-adapters.d.ts +1 -0
  40. package/config/default-adapters.js +40 -0
  41. package/config/default-adapters.js.map +1 -0
  42. package/config/interface-registry.d.ts +191 -0
  43. package/config/interface-registry.js +5 -0
  44. package/config/interface-registry.js.map +1 -0
  45. package/{src → core}/assert-param.d.ts +52 -60
  46. package/core/assert-param.js +390 -0
  47. package/core/assert-param.js.map +1 -0
  48. package/core/core.d.ts +285 -0
  49. package/core/core.js +772 -0
  50. package/core/core.js.map +1 -0
  51. package/core/enum.d.ts +116 -0
  52. package/core/enum.js +167 -0
  53. package/core/enum.js.map +1 -0
  54. package/core/event.d.ts +169 -0
  55. package/core/event.js +338 -0
  56. package/core/event.js.map +1 -0
  57. package/entity/array.d.ts +3 -0
  58. package/entity/array.js +4 -0
  59. package/entity/array.js.map +1 -0
  60. package/entity/complex-array.d.ts +17 -0
  61. package/entity/complex-array.js +104 -0
  62. package/entity/complex-array.js.map +1 -0
  63. package/entity/default-property-interceptor.d.ts +1 -0
  64. package/entity/default-property-interceptor.js +496 -0
  65. package/entity/default-property-interceptor.js.map +1 -0
  66. package/{src → entity}/entity-action.d.ts +36 -42
  67. package/entity/entity-action.js +45 -0
  68. package/entity/entity-action.js.map +1 -0
  69. package/entity/entity-aspect.d.ts +457 -0
  70. package/entity/entity-aspect.js +1262 -0
  71. package/entity/entity-aspect.js.map +1 -0
  72. package/entity/entity-base.d.ts +55 -0
  73. package/entity/entity-base.js +41 -0
  74. package/entity/entity-base.js.map +1 -0
  75. package/entity/entity-group.d.ts +1 -0
  76. package/entity/entity-group.js +224 -0
  77. package/entity/entity-group.js.map +1 -0
  78. package/entity/entity-key.d.ts +95 -0
  79. package/entity/entity-key.js +189 -0
  80. package/entity/entity-key.js.map +1 -0
  81. package/{src → entity}/entity-state.d.ts +112 -84
  82. package/entity/entity-state.js +135 -0
  83. package/entity/entity-state.js.map +1 -0
  84. package/entity/key-generator.d.ts +57 -0
  85. package/entity/key-generator.js +155 -0
  86. package/entity/key-generator.js.map +1 -0
  87. package/entity/observable-array.d.ts +25 -0
  88. package/entity/observable-array.js +230 -0
  89. package/entity/observable-array.js.map +1 -0
  90. package/entity/primitive-array.d.ts +12 -0
  91. package/entity/primitive-array.js +71 -0
  92. package/entity/primitive-array.js.map +1 -0
  93. package/entity/relation-array.d.ts +24 -0
  94. package/entity/relation-array.js +176 -0
  95. package/entity/relation-array.js.map +1 -0
  96. package/entity/unattached-children-map.d.ts +1 -0
  97. package/entity/unattached-children-map.js +105 -0
  98. package/entity/unattached-children-map.js.map +1 -0
  99. package/generate-entity-classes.js +1176 -0
  100. package/manager/entity-manager.d.ts +801 -0
  101. package/manager/entity-manager.js +2395 -0
  102. package/manager/entity-manager.js.map +1 -0
  103. package/{src → manager}/save-options.d.ts +48 -42
  104. package/manager/save-options.js +51 -0
  105. package/manager/save-options.js.map +1 -0
  106. package/{src → metadata}/data-service.d.ts +229 -184
  107. package/metadata/data-service.js +246 -0
  108. package/metadata/data-service.js.map +1 -0
  109. package/metadata/data-type.d.ts +122 -0
  110. package/metadata/data-type.js +465 -0
  111. package/metadata/data-type.js.map +1 -0
  112. package/metadata/entity-metadata.d.ts +1193 -0
  113. package/metadata/entity-metadata.js +2502 -0
  114. package/metadata/entity-metadata.js.map +1 -0
  115. package/{src → metadata}/local-query-comparison-options.d.ts +65 -59
  116. package/metadata/local-query-comparison-options.js +69 -0
  117. package/metadata/local-query-comparison-options.js.map +1 -0
  118. package/{src → metadata}/naming-convention.d.ts +75 -72
  119. package/metadata/naming-convention.js +97 -0
  120. package/metadata/naming-convention.js.map +1 -0
  121. package/mixins/mixin-get-entity-graph.d.ts +63 -0
  122. package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → mixins/mixin-get-entity-graph.js} +331 -253
  123. package/mixins/mixin-get-entity-graph.js.map +1 -0
  124. package/mixins/mixin-save-queuing.d.ts +98 -0
  125. package/{fesm2022/breeze-client-mixin-save-queuing.mjs → mixins/mixin-save-queuing.js} +493 -365
  126. package/mixins/mixin-save-queuing.js.map +1 -0
  127. package/package.json +63 -94
  128. package/query/entity-query.d.ts +521 -0
  129. package/query/entity-query.js +1149 -0
  130. package/query/entity-query.js.map +1 -0
  131. package/{src → query}/mapping-context.d.ts +44 -46
  132. package/query/mapping-context.js +412 -0
  133. package/query/mapping-context.js.map +1 -0
  134. package/query/predicate.d.ts +394 -0
  135. package/query/predicate.js +1294 -0
  136. package/query/predicate.js.map +1 -0
  137. package/query/property-path.d.ts +252 -0
  138. package/query/property-path.js +2 -0
  139. package/query/property-path.js.map +1 -0
  140. package/{src → query}/query-options.d.ts +143 -119
  141. package/query/query-options.js +180 -0
  142. package/query/query-options.js.map +1 -0
  143. package/rxjs/breeze-rxjs.d.ts +72 -0
  144. package/rxjs/breeze-rxjs.js +117 -0
  145. package/rxjs/breeze-rxjs.js.map +1 -0
  146. package/validation/validate.d.ts +583 -0
  147. package/validation/validate.js +961 -0
  148. package/validation/validate.js.map +1 -0
  149. package/{src → validation}/validation-options.d.ts +67 -63
  150. package/validation/validation-options.js +70 -0
  151. package/validation/validation-options.js.map +1 -0
  152. package/adapter-ajax-angularjs/adapter-ajax-angularjs.d.ts +0 -17
  153. package/adapter-ajax-angularjs/adapter-core.d.ts +0 -4
  154. package/adapter-ajax-angularjs/index.d.ts +0 -5
  155. package/adapter-ajax-fetch/adapter-ajax-fetch.d.ts +0 -18
  156. package/adapter-ajax-fetch/index.d.ts +0 -5
  157. package/adapter-ajax-httpclient/adapter-ajax-httpclient.d.ts +0 -13
  158. package/adapter-ajax-httpclient/adapter-core.d.ts +0 -4
  159. package/adapter-ajax-httpclient/index.d.ts +0 -5
  160. package/adapter-ajax-jquery/adapter-ajax-jquery.d.ts +0 -15
  161. package/adapter-ajax-jquery/index.d.ts +0 -5
  162. package/adapter-ajax-post/index.d.ts +0 -5
  163. package/adapter-data-service-odata/adapter-core.d.ts +0 -4
  164. package/adapter-data-service-odata/adapter-data-service-odata.d.ts +0 -17
  165. package/adapter-data-service-odata/index.d.ts +0 -5
  166. package/adapter-data-service-webapi/adapter-data-service-webapi.d.ts +0 -15
  167. package/adapter-data-service-webapi/index.d.ts +0 -5
  168. package/adapter-model-library-backing-store/adapter-model-library-backing-store.d.ts +0 -10
  169. package/adapter-model-library-backing-store/index.d.ts +0 -5
  170. package/adapter-model-library-ko/adapter-model-library-ko.d.ts +0 -10
  171. package/adapter-model-library-ko/index.d.ts +0 -5
  172. package/adapter-uri-builder-json/adapter-core.d.ts +0 -4
  173. package/adapter-uri-builder-json/adapter-uri-builder-json.d.ts +0 -8
  174. package/adapter-uri-builder-json/index.d.ts +0 -5
  175. package/adapter-uri-builder-odata/adapter-core.d.ts +0 -4
  176. package/adapter-uri-builder-odata/adapter-uri-builder-odata.d.ts +0 -8
  177. package/adapter-uri-builder-odata/index.d.ts +0 -5
  178. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
  179. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
  180. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
  181. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
  182. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
  183. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
  184. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
  185. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
  186. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
  187. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
  188. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
  189. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
  190. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
  191. package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
  192. package/esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs +0 -461
  193. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
  194. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
  195. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
  196. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
  197. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
  198. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
  199. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
  200. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
  201. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
  202. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
  203. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
  204. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
  205. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
  206. package/esm2022/breeze-client.mjs +0 -5
  207. package/esm2022/index.mjs +0 -2
  208. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
  209. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
  210. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
  211. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
  212. package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
  213. package/esm2022/src/array.mjs +0 -4
  214. package/esm2022/src/assert-param.mjs +0 -330
  215. package/esm2022/src/breeze.mjs +0 -85
  216. package/esm2022/src/complex-array.mjs +0 -117
  217. package/esm2022/src/config.mjs +0 -232
  218. package/esm2022/src/core.mjs +0 -712
  219. package/esm2022/src/csdl-metadata-parser.mjs +0 -385
  220. package/esm2022/src/data-service.mjs +0 -221
  221. package/esm2022/src/data-type.mjs +0 -510
  222. package/esm2022/src/default-property-interceptor.mjs +0 -460
  223. package/esm2022/src/entity-action.mjs +0 -45
  224. package/esm2022/src/entity-aspect.mjs +0 -897
  225. package/esm2022/src/entity-group.mjs +0 -192
  226. package/esm2022/src/entity-key.mjs +0 -125
  227. package/esm2022/src/entity-manager.mjs +0 -2163
  228. package/esm2022/src/entity-metadata.mjs +0 -2242
  229. package/esm2022/src/entity-query.mjs +0 -1024
  230. package/esm2022/src/entity-state.mjs +0 -107
  231. package/esm2022/src/enum.mjs +0 -143
  232. package/esm2022/src/event.mjs +0 -264
  233. package/esm2022/src/interface-registry.mjs +0 -39
  234. package/esm2022/src/key-generator.mjs +0 -110
  235. package/esm2022/src/local-query-comparison-options.mjs +0 -65
  236. package/esm2022/src/mapping-context.mjs +0 -411
  237. package/esm2022/src/naming-convention.mjs +0 -92
  238. package/esm2022/src/observable-array.mjs +0 -183
  239. package/esm2022/src/predicate.mjs +0 -1259
  240. package/esm2022/src/primitive-array.mjs +0 -85
  241. package/esm2022/src/query-options.mjs +0 -152
  242. package/esm2022/src/relation-array.mjs +0 -173
  243. package/esm2022/src/save-options.mjs +0 -41
  244. package/esm2022/src/unattached-children-map.mjs +0 -56
  245. package/esm2022/src/validate.mjs +0 -995
  246. package/esm2022/src/validation-options.mjs +0 -64
  247. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs +0 -190
  248. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
  249. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs +0 -190
  250. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
  251. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs +0 -194
  252. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
  253. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs +0 -114
  254. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
  255. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
  256. package/fesm2022/breeze-client-adapter-data-service-odata.mjs +0 -516
  257. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
  258. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
  259. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs +0 -276
  260. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
  261. package/fesm2022/breeze-client-adapter-model-library-ko.mjs +0 -248
  262. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
  263. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
  264. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs +0 -246
  265. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
  266. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
  267. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
  268. package/fesm2022/breeze-client.mjs +0 -14144
  269. package/fesm2022/breeze-client.mjs.map +0 -1
  270. package/index.d.ts +0 -1
  271. package/mixin-get-entity-graph/index.d.ts +0 -5
  272. package/mixin-get-entity-graph/mixin-get-entity-graph.d.ts +0 -31
  273. package/mixin-save-queuing/index.d.ts +0 -5
  274. package/mixin-save-queuing/mixin-save-queuing.d.ts +0 -32
  275. package/src/abstract-data-service-adapter.d.ts +0 -84
  276. package/src/array.d.ts +0 -3
  277. package/src/breeze.d.ts +0 -139
  278. package/src/complex-array.d.ts +0 -13
  279. package/src/config.d.ts +0 -104
  280. package/src/core.d.ts +0 -164
  281. package/src/csdl-metadata-parser.d.ts +0 -7
  282. package/src/data-type.d.ts +0 -89
  283. package/src/default-property-interceptor.d.ts +0 -4
  284. package/src/entity-aspect.d.ts +0 -332
  285. package/src/entity-group.d.ts +0 -28
  286. package/src/entity-key.d.ts +0 -77
  287. package/src/entity-manager.d.ts +0 -680
  288. package/src/entity-metadata.d.ts +0 -988
  289. package/src/entity-query.d.ts +0 -444
  290. package/src/enum.d.ts +0 -100
  291. package/src/event.d.ts +0 -142
  292. package/src/interface-registry.d.ts +0 -150
  293. package/src/key-generator.d.ts +0 -12
  294. package/src/observable-array.d.ts +0 -52
  295. package/src/predicate.d.ts +0 -376
  296. package/src/primitive-array.d.ts +0 -7
  297. package/src/relation-array.d.ts +0 -18
  298. package/src/unattached-children-map.d.ts +0 -19
  299. package/src/validate.d.ts +0 -650
@@ -1,183 +0,0 @@
1
- import { core } from './core';
2
- let mixin = {
3
- push: function (...args) {
4
- if (this._inProgress) {
5
- return -1;
6
- }
7
- let goodAdds = this._getGoodAdds(args);
8
- if (!goodAdds.length) {
9
- return this.length;
10
- }
11
- this._beforeChange();
12
- let result;
13
- let objPrototype = Object.getPrototypeOf(this);
14
- if (objPrototype.push) {
15
- result = objPrototype.push.apply(this, goodAdds);
16
- }
17
- else {
18
- result = Array.prototype.push.apply(this, goodAdds);
19
- }
20
- processAdds(this, goodAdds);
21
- return result;
22
- },
23
- _push: function (...args) {
24
- if (this._inProgress) {
25
- return -1;
26
- }
27
- let goodAdds = args;
28
- this._beforeChange();
29
- let result;
30
- let objPrototype = Object.getPrototypeOf(this);
31
- if (objPrototype.push) {
32
- result = objPrototype.push.apply(this, goodAdds);
33
- }
34
- else {
35
- result = Array.prototype.push.apply(this, goodAdds);
36
- }
37
- processAdds(this, goodAdds);
38
- return result;
39
- },
40
- unshift: function (...args) {
41
- let goodAdds = this._getGoodAdds(args);
42
- if (!goodAdds.length) {
43
- return this.length;
44
- }
45
- this._beforeChange();
46
- let result;
47
- let objPrototype = Object.getPrototypeOf(this);
48
- if (objPrototype.unshift) {
49
- result = objPrototype.unshift.apply(this, goodAdds);
50
- }
51
- else {
52
- result = Array.prototype.unshift.apply(this, goodAdds);
53
- }
54
- processAdds(this, goodAdds);
55
- return result;
56
- },
57
- pop: function () {
58
- this._beforeChange();
59
- let result;
60
- let objPrototype = Object.getPrototypeOf(this);
61
- if (objPrototype.pop) {
62
- result = objPrototype.pop.apply(this);
63
- }
64
- else {
65
- result = Array.prototype.pop.apply(this);
66
- }
67
- processRemoves(this, [result]);
68
- return result;
69
- },
70
- shift: function () {
71
- this._beforeChange();
72
- let result;
73
- let objPrototype = Object.getPrototypeOf(this);
74
- if (objPrototype.shift) {
75
- result = objPrototype.shift.apply(this);
76
- }
77
- else {
78
- result = Array.prototype.shift.apply(this);
79
- }
80
- processRemoves(this, [result]);
81
- return result;
82
- },
83
- splice: function (...args) {
84
- let goodAdds = this._getGoodAdds(core.arraySlice(args, 2));
85
- let newArgs = core.arraySlice(args, 0, 2).concat(goodAdds);
86
- this._beforeChange();
87
- let result;
88
- let objPrototype = Object.getPrototypeOf(this);
89
- if (objPrototype.splice) {
90
- result = objPrototype.splice.apply(this, newArgs);
91
- }
92
- else {
93
- result = Array.prototype.splice.apply(this, newArgs);
94
- }
95
- processRemoves(this, result);
96
- if (goodAdds.length) {
97
- processAdds(this, goodAdds);
98
- }
99
- return result;
100
- },
101
- getEntityAspect: function () {
102
- return this.parent.entityAspect || this.parent.complexAspect.getEntityAspect();
103
- },
104
- _getEventParent: function () {
105
- return this.getEntityAspect();
106
- },
107
- _getPendingPubs: function () {
108
- let em = this.getEntityAspect().entityManager;
109
- return em && em._pendingPubs;
110
- },
111
- _beforeChange: function () {
112
- // default is to do nothing
113
- }
114
- };
115
- function updateEntityState(obsArray) {
116
- let entityAspect = obsArray.getEntityAspect();
117
- if (entityAspect.entityState.isUnchanged()) {
118
- entityAspect.setModified();
119
- }
120
- if (entityAspect.entityState.isModified() && !obsArray._origValues) {
121
- obsArray._origValues = obsArray.slice(0);
122
- }
123
- }
124
- function publish(publisher, eventName, eventArgs) {
125
- let pendingPubs = publisher._getPendingPubs();
126
- if (pendingPubs) {
127
- if (!publisher._pendingArgs) {
128
- publisher._pendingArgs = eventArgs;
129
- pendingPubs.push(function () {
130
- publisher[eventName].publish(publisher._pendingArgs);
131
- publisher._pendingArgs = null;
132
- });
133
- }
134
- else {
135
- combineArgs(publisher._pendingArgs, eventArgs);
136
- }
137
- }
138
- else {
139
- publisher[eventName].publish(eventArgs);
140
- }
141
- }
142
- function initializeParent(obsArray, parent, parentProperty) {
143
- obsArray.parent = parent;
144
- obsArray.parentProperty = parentProperty;
145
- }
146
- function processAdds(obsArray, adds) {
147
- obsArray._processAdds(adds);
148
- // this is referencing the name of the method on the complexArray not the name of the event
149
- //var args = { added: adds };
150
- //args[obsArray._typeName] = obsArray;
151
- publish(obsArray, "arrayChanged", { array: obsArray, added: adds });
152
- }
153
- function processRemoves(obsArray, removes) {
154
- obsArray._processRemoves(removes);
155
- // this is referencing the name of the method on the array not the name of the event
156
- publish(obsArray, "arrayChanged", { array: obsArray, removed: removes });
157
- }
158
- // TODO: see if this function already exists in core and can be imported.
159
- function combineArgs(target, source) {
160
- for (let key in source) {
161
- if (key !== "array" && target.hasOwnProperty(key)) {
162
- let sourceValue = source[key];
163
- let targetValue = target[key];
164
- if (targetValue) {
165
- if (!Array.isArray(targetValue)) {
166
- throw new Error("Cannot combine non array args");
167
- }
168
- Array.prototype.push.apply(targetValue, sourceValue);
169
- }
170
- else {
171
- target[key] = sourceValue;
172
- }
173
- }
174
- }
175
- }
176
- /** @hidden @internal */
177
- export const observableArray = {
178
- mixin: mixin,
179
- updateEntityState: updateEntityState,
180
- publish: publish,
181
- initializeParent: initializeParent
182
- };
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2YWJsZS1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vYnNlcnZhYmxlLWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFtQzlCLElBQUksS0FBSyxHQUFHO0lBQ1YsSUFBSSxFQUFFLFVBQVMsR0FBRyxJQUFXO1FBQzNCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFFRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQjtRQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksWUFBWSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO1lBQ25CLE1BQU0sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDcEQ7YUFBTTtZQUNILE1BQU0sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM1QixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxFQUFFLFVBQVMsR0FBRyxJQUFXO1FBQzVCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNwQixPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLFFBQVEsR0FBRyxJ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RyxDQUFDLEdBQUcsV0FBVyxDQUFDO2FBQzNCO1NBQ0Y7S0FDRjtBQUNILENBQUM7QUFDRCx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzdCLEtBQUssRUFBRSxLQUFLO0lBQ1osaUJBQWlCLEVBQUUsaUJBQWlCO0lBQ3BDLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLGdCQUFnQixFQUFFLGdCQUFnQjtDQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IEVudGl0eUFzcGVjdCB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IERhdGFQcm9wZXJ0eSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuXHJcbi8qKiBAaGlkZGVuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgT2JzZXJ2YWJsZUFycmF5IHtcclxuICBwdXNoOiAoLi4uYXJnczogYW55W10pID0+IG51bWJlcjtcclxuICBfcHVzaDogKC4uLmFyZ3M6IGFueVtdKSA9PiBudW1iZXI7XHJcbiAgdW5zaGlmdDogKC4uLmFyZ3M6IGFueVtdKSA9PiAgbnVtYmVyO1xyXG4gIHBvcDogKCkgPT4gYW55O1xyXG4gIHNoaWZ0OiAoKSA9PiBhbnk7XHJcbiAgc3BsaWNlOiAoLi4uYXJnczogYW55W10pID0+IGFueVtdO1xyXG4gIHNsaWNlOiAoYTogbnVtYmVyLCBiPzogbnVtYmVyKSA9PiBhbnlbXTsgLy8gaW1wbGVtZW50ZWQgb24gdGhlIG5hdGl2ZSBhcnJheVxyXG4gIGxlbmd0aDogbnVtYmVyO1xyXG4gIFxyXG4gIGdldEVudGl0eUFzcGVjdDogKCkgPT4gRW50aXR5QXNwZWN0O1xyXG4gIGFycmF5Q2hhbmdlZDogQnJlZXplRXZlbnQ8QXJyYXlDaGFuZ2VkQXJncz47XHJcbiAgcGFyZW50PzogT2JqZWN0O1xyXG4gIHBhcmVudFByb3BlcnR5PzogRGF0YVByb3BlcnR5O1xyXG4gIF9nZXRFdmVudFBhcmVudDogKCkgPT4gT2JqZWN0O1xyXG4gIF9nZXRQZW5kaW5nUHViczogKCkgPT4gYW55W107IC8vIFRPRE86IFB1YltdXHJcbiAgX2JlZm9yZUNoYW5nZTogKCkgPT4gdm9pZDtcclxuICBfcHJvY2Vzc0FkZHMoaXRlbXM6IGFueVtdKTogdm9pZDtcclxuICBfcHJvY2Vzc1JlbW92ZXMoaXRlbXM6IGFueVtdKTogdm9pZDtcclxuICBfb3JpZ1ZhbHVlczogYW55W107XHJcbiAgX3BlbmRpbmdBcmdzOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXJyYXlDaGFuZ2VkQXJncyB7XHJcbiAgYXJyYXk6IGFueVtdO1xyXG4gIGFkZGVkPzogYW55W107IFxyXG4gIHJlbW92ZWQ/OiBhbnlbXTtcclxufVxyXG5cclxubGV0IG1peGluID0ge1xyXG4gIHB1c2g6IGZ1bmN0aW9uKC4uLmFyZ3M6IGFueVtdKSB7XHJcbiAgICBpZiAodGhpcy5faW5Qcm9ncmVzcykge1xyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGdvb2RBZGRzID0gdGhpcy5fZ2V0R29vZEFkZHMoYXJncyk7XHJcbiAgICBpZiAoIWdvb2RBZGRzLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9iZWZvcmVDaGFuZ2UoKTtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBsZXQgb2JqUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO1xyXG4gICAgaWYgKG9ialByb3RvdHlwZS5wdXNoKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gb2JqUHJvdG90eXBlLnB1c2guYXBwbHkodGhpcywgZ29vZEFkZHMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXN1bHQgPSBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLCBnb29kQWRkcyk7XHJcbiAgICB9XHJcbiAgICBwcm9jZXNzQWRkcyh0aGlzLCBnb29kQWRkcyk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH0sXHJcblxyXG4gIF9wdXNoOiBmdW5jdGlvbiguLi5hcmdzOiBhbnlbXSkge1xyXG4gICAgaWYgKHRoaXMuX2luUHJvZ3Jlc3MpIHtcclxuICAgICAgcmV0dXJuIC0xO1xyXG4gICAgfVxyXG4gICAgbGV0IGdvb2RBZGRzID0gYXJncztcclxuICAgIHRoaXMuX2JlZm9yZUNoYW5nZSgpO1xyXG4gICAgbGV0IHJlc3VsdDtcclxuICAgIGxldCBvYmpQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyk7XHJcbiAgICBpZiAob2JqUHJvdG90eXBlLnB1c2gpIHtcclxuICAgICAgICByZXN1bHQgPSBvYmpQcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLCBnb29kQWRkcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHRoaXMsIGdvb2RBZGRzKTtcclxuICAgIH1cclxuICAgIHByb2Nlc3NBZGRzKHRoaXMsIGdvb2RBZGRzKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfSxcclxuXHJcbiAgdW5zaGlmdDogZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcclxuICAgIGxldCBnb29kQWRkcyA9IHRoaXMuX2dldEdvb2RBZGRzKGFyZ3MpO1xyXG4gICAgaWYgKCFnb29kQWRkcy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYmVmb3JlQ2hhbmdlKCk7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGV0IG9ialByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcclxuICAgIGlmIChvYmpQcm90b3R5cGUudW5zaGlmdCkge1xyXG4gICAgICAgIHJlc3VsdCA9IG9ialByb3RvdHlwZS51bnNoaWZ0LmFwcGx5KHRoaXMsIGdvb2RBZGRzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuYXBwbHkodGhpcywgZ29vZEFkZHMpO1xyXG4gICAgfVxyXG4gICAgcHJvY2Vzc0FkZHModGhpcywgZ29vZEFkZHMpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9LFxyXG5cclxuICBwb3A6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5fYmVmb3JlQ2hhbmdlKCk7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGV0IG9ialByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcclxuICAgIGlmIChvYmpQcm90b3R5cGUucG9wKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gb2JqUHJvdG90eXBlLnBvcC5hcHBseSh0aGlzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLnBvcC5hcHBseSh0aGlzKTtcclxuICAgIH1cclxuICAgIHByb2Nlc3NSZW1vdmVzKHRoaXMsIFtyZXN1bHRdKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfSxcclxuXHJcbiAgc2hpZnQ6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5fYmVmb3JlQ2hhbmdlKCk7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGV0IG9ialByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcclxuICAgIGlmIChvYmpQcm90b3R5cGUuc2hpZnQpIHtcclxuICAgICAgICByZXN1bHQgPSBvYmpQcm90b3R5cGUuc2hpZnQuYXBwbHkodGhpcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCA9IEFycmF5LnByb3RvdHlwZS5zaGlmdC5hcHBseSh0aGlzKTtcclxuICAgIH0gICAgXHJcbiAgICBwcm9jZXNzUmVtb3Zlcyh0aGlzLCBbcmVzdWx0XSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH0sXHJcblxyXG4gIHNwbGljZTogZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcclxuICAgIGxldCBnb29kQWRkcyA9IHRoaXMuX2dldEdvb2RBZGRzKGNvcmUuYXJyYXlTbGljZShhcmdzLCAyKSk7XHJcbiAgICBsZXQgbmV3QXJncyA9IGNvcmUuYXJyYXlTbGljZShhcmdzLCAwLCAyKS5jb25jYXQoZ29vZEFkZHMpO1xyXG4gICAgdGhpcy5fYmVmb3JlQ2hhbmdlKCk7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgbGV0IG9ialByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcclxuICAgIGlmIChvYmpQcm90b3R5cGUuc3BsaWNlKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gb2JqUHJvdG90eXBlLnNwbGljZS5hcHBseSh0aGlzLCBuZXdBcmdzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gQXJyYXkucHJvdG90eXBlLnNwbGljZS5hcHBseSh0aGlzLCBuZXdBcmdzKTtcclxuICAgIH1cclxuICAgIHByb2Nlc3NSZW1vdmVzKHRoaXMsIHJlc3VsdCk7XHJcblxyXG4gICAgaWYgKGdvb2RBZGRzLmxlbmd0aCkge1xyXG4gICAgICBwcm9jZXNzQWRkcyh0aGlzLCBnb29kQWRkcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH0sXHJcblxyXG4gIGdldEVudGl0eUFzcGVjdDogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZW50aXR5QXNwZWN0IHx8IHRoaXMucGFyZW50LmNvbXBsZXhBc3BlY3QuZ2V0RW50aXR5QXNwZWN0KCk7XHJcbiAgfSxcclxuXHJcbiAgX2dldEV2ZW50UGFyZW50OiBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEVudGl0eUFzcGVjdCgpO1xyXG4gIH0sXHJcblxyXG4gIF9nZXRQZW5kaW5nUHViczogZnVuY3Rpb24gKCkge1xyXG4gICAgbGV0IGVtID0gdGhpcy5nZXRFbnRpdHlBc3BlY3QoKS5lbnRpdHlNYW5hZ2VyO1xyXG4gICAgcmV0dXJuIGVtICYmIGVtLl9wZW5kaW5nUHVicztcclxuICB9LFxyXG5cclxuICBfYmVmb3JlQ2hhbmdlOiAgZnVuY3Rpb24gKCkge1xyXG4gICAgLy8gZGVmYXVsdCBpcyB0byBkbyBub3RoaW5nXHJcbiAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gdXBkYXRlRW50aXR5U3RhdGUob2JzQXJyYXk6IE9ic2VydmFibGVBcnJheSkge1xyXG4gIGxldCBlbnRpdHlBc3BlY3QgPSBvYnNBcnJheS5nZXRFbnRpdHlBc3BlY3QoKTtcclxuICBpZiAoZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzVW5jaGFuZ2VkKCkpIHtcclxuICAgIGVudGl0eUFzcGVjdC5zZXRNb2RpZmllZCgpO1xyXG4gIH1cclxuICBpZiAoZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzTW9kaWZpZWQoKSAmJiAhb2JzQXJyYXkuX29yaWdWYWx1ZXMpIHtcclxuICAgIG9ic0FycmF5Ll9vcmlnVmFsdWVzID0gb2JzQXJyYXkuc2xpY2UoMCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBwdWJsaXNoKHB1Ymxpc2hlcjogT2JzZXJ2YWJsZUFycmF5LCBldmVudE5hbWU6IHN0cmluZywgZXZlbnRBcmdzOiBhbnkpIHtcclxuICBsZXQgcGVuZGluZ1B1YnMgPSBwdWJsaXNoZXIuX2dldFBlbmRpbmdQdWJzKCk7XHJcbiAgaWYgKHBlbmRpbmdQdWJzKSB7XHJcbiAgICBpZiAoIXB1Ymxpc2hlci5fcGVuZGluZ0FyZ3MpIHtcclxuICAgICAgcHVibGlzaGVyLl9wZW5kaW5nQXJncyA9IGV2ZW50QXJncztcclxuICAgICAgcGVuZGluZ1B1YnMucHVzaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcHVibGlzaGVyW2V2ZW50TmFtZV0ucHVibGlzaChwdWJsaXNoZXIuX3BlbmRpbmdBcmdzKTtcclxuICAgICAgICBwdWJsaXNoZXIuX3BlbmRpbmdBcmdzID0gbnVsbDtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb21iaW5lQXJncyhwdWJsaXNoZXIuX3BlbmRpbmdBcmdzLCBldmVudEFyZ3MpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBwdWJsaXNoZXJbZXZlbnROYW1lXS5wdWJsaXNoKGV2ZW50QXJncyk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBpbml0aWFsaXplUGFyZW50KG9ic0FycmF5OiBhbnksIHBhcmVudDogT2JqZWN0LCBwYXJlbnRQcm9wZXJ0eTogRGF0YVByb3BlcnR5KSB7XHJcbiAgb2JzQXJyYXkucGFyZW50ID0gcGFyZW50O1xyXG4gIG9ic0FycmF5LnBhcmVudFByb3BlcnR5ID0gcGFyZW50UHJvcGVydHk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NBZGRzKG9ic0FycmF5OiBPYnNlcnZhYmxlQXJyYXksIGFkZHM6IGFueVtdKSB7XHJcbiAgb2JzQXJyYXkuX3Byb2Nlc3NBZGRzKGFkZHMpO1xyXG4gIC8vIHRoaXMgaXMgcmVmZXJlbmNpbmcgdGhlIG5hbWUgb2YgdGhlIG1ldGhvZCBvbiB0aGUgY29tcGxleEFycmF5IG5vdCB0aGUgbmFtZSBvZiB0aGUgZXZlbnRcclxuICAvL3ZhciBhcmdzID0geyBhZGRlZDogYWRkcyB9O1xyXG4gIC8vYXJnc1tvYnNBcnJheS5fdHlwZU5hbWVdID0gb2JzQXJyYXk7XHJcbiAgcHVibGlzaChvYnNBcnJheSwgXCJhcnJheUNoYW5nZWRcIiwgeyBhcnJheTogb2JzQXJyYXksIGFkZGVkOiBhZGRzIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzUmVtb3ZlcyhvYnNBcnJheTogT2JzZXJ2YWJsZUFycmF5LCByZW1vdmVzOiBhbnlbXSkge1xyXG4gIG9ic0FycmF5Ll9wcm9jZXNzUmVtb3ZlcyhyZW1vdmVzKTtcclxuICAvLyB0aGlzIGlzIHJlZmVyZW5jaW5nIHRoZSBuYW1lIG9mIHRoZSBtZXRob2Qgb24gdGhlIGFycmF5IG5vdCB0aGUgbmFtZSBvZiB0aGUgZXZlbnRcclxuICBwdWJsaXNoKG9ic0FycmF5LCBcImFycmF5Q2hhbmdlZFwiLCB7IGFycmF5OiBvYnNBcnJheSwgcmVtb3ZlZDogcmVtb3ZlcyB9KTtcclxufVxyXG5cclxuLy8gVE9ETzogc2VlIGlmIHRoaXMgZnVuY3Rpb24gYWxyZWFkeSBleGlzdHMgaW4gY29yZSBhbmQgY2FuIGJlIGltcG9ydGVkLlxyXG5mdW5jdGlvbiBjb21iaW5lQXJncyh0YXJnZXQ6IE9iamVjdCwgc291cmNlOiBPYmplY3QpIHtcclxuICBmb3IgKGxldCBrZXkgaW4gc291cmNlKSB7XHJcbiAgICBpZiAoa2V5ICE9PSBcImFycmF5XCIgJiYgdGFyZ2V0Lmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgbGV0IHNvdXJjZVZhbHVlID0gc291cmNlW2tleV07XHJcbiAgICAgIGxldCB0YXJnZXRWYWx1ZSA9IHRhcmdldFtrZXldO1xyXG4gICAgICBpZiAodGFyZ2V0VmFsdWUpIHtcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGFyZ2V0VmFsdWUpKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29tYmluZSBub24gYXJyYXkgYXJnc1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGFyZ2V0VmFsdWUsIHNvdXJjZVZhbHVlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVZhbHVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgY29uc3Qgb2JzZXJ2YWJsZUFycmF5ID0ge1xyXG4gIG1peGluOiBtaXhpbixcclxuICB1cGRhdGVFbnRpdHlTdGF0ZTogdXBkYXRlRW50aXR5U3RhdGUsXHJcbiAgcHVibGlzaDogcHVibGlzaCxcclxuICBpbml0aWFsaXplUGFyZW50OiBpbml0aWFsaXplUGFyZW50XHJcbn07XHJcbiJdfQ==