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,107 +0,0 @@
1
- import { BreezeEnum } from './enum';
2
- /**
3
- EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
4
- **/
5
- export class EntityState extends BreezeEnum {
6
- /** The 'Unchanged' state. **/
7
- static Unchanged = new EntityState();
8
- /** The 'Added' state. **/
9
- static Added = new EntityState();
10
- /** The 'Modified' state. **/
11
- static Modified = new EntityState();
12
- /** The 'Deleted' state. **/
13
- static Deleted = new EntityState();
14
- /** The 'Detached' state. **/
15
- static Detached = new EntityState();
16
- /**
17
- Returns whether an entityState instance is EntityState.Unchanged.
18
- > var es = anEntity.entityAspect.entityState;
19
- > return es.isUnchanged();
20
-
21
- is the same as
22
- > return es === EntityState.Unchanged;
23
- **/
24
- isUnchanged() {
25
- return this === EntityState.Unchanged;
26
- }
27
- /**
28
- Return whether an entityState instance is EntityState.Added.
29
-
30
- > var es = anEntity.entityAspect.entityState;
31
- > return es.isAdded();
32
-
33
- is the same as
34
- > return es === EntityState.Added;
35
- **/
36
- isAdded() {
37
- return this === EntityState.Added;
38
- }
39
- /**
40
- Returns whether an entityState instance is EntityState.Modified.
41
- > var es = anEntity.entityAspect.entityState;
42
- > return es.isModified();
43
-
44
- is the same as
45
- > return es === EntityState.Modified;
46
- **/
47
- isModified() {
48
- return this === EntityState.Modified;
49
- }
50
- /**
51
- Returns whether an entityState instance is EntityState.Deleted.
52
- > var es = anEntity.entityAspect.entityState;
53
- > return es.isDeleted();
54
-
55
- is the same as
56
-
57
- > return es === EntityState.Deleted;
58
- **/
59
- isDeleted() {
60
- return this === EntityState.Deleted;
61
- }
62
- /**
63
- Returns whether an entityState instance is EntityState.Detached.
64
- > var es = anEntity.entityAspect.entityState;
65
- > return es.isDetached();
66
-
67
- is the same as
68
- > return es === EntityState.Detached;
69
- **/
70
- isDetached() {
71
- return this === EntityState.Detached;
72
- }
73
- /** Return true if EntityState is Deleted or Detached */
74
- isDeletedOrDetached() {
75
- return this === EntityState.Detached || this === EntityState.Detached;
76
- }
77
- /**
78
- Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
79
- > var es = anEntity.entityAspect.entityState;
80
- > return es.isUnchangedOrModified();
81
-
82
- is the same as
83
- > return es === EntityState.Unchanged || es === EntityState.Modified
84
- **/
85
- isUnchangedOrModified() {
86
- return this === EntityState.Unchanged || this === EntityState.Modified;
87
- }
88
- /** Return true if EntityStatis is Added or Modified */
89
- isAddedOrModified() {
90
- return this === EntityState.Added || this === EntityState.Modified;
91
- }
92
- /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
93
- > var es = anEntity.entityAspect.entityState;
94
- > return es.isAddedModifiedOrDeleted();
95
-
96
- is the same as
97
- > return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
98
- **/
99
- isAddedModifiedOrDeleted() {
100
- return this === EntityState.Added ||
101
- this === EntityState.Modified ||
102
- this === EntityState.Deleted;
103
- }
104
- }
105
- EntityState.prototype._$typeName = "EntityState";
106
- Error['x'] = EntityState.resolveSymbols();
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VudGl0eS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxVQUFVO0lBRXpDLDhCQUE4QjtJQUM5QixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDckMsNEJBQTRCO0lBQzVCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxnQ0FBZ0M7SUFDaEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLDhCQUE4QjtJQUM5QixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbkMsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUVwQzs7Ozs7OztPQU9HO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN6RSxDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSztZQUMvQixJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVE7WUFDN0IsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQzs7QUFHSCxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7QUFDakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWV6ZUVudW0gfSBmcm9tICcuL2VudW0nO1xyXG5cclxuLyoqXHJcbkVudGl0eVN0YXRlIGlzIGFuICdFbnVtJyBjb250YWluaW5nIGFsbCBvZiB0aGUgdmFsaWQgc3RhdGVzIGZvciBhbiAnRW50aXR5Jy5cclxuKiovXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlTdGF0ZSBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG5cclxuICAvKiogVGhlICdVbmNoYW5nZWQnIHN0YXRlLiAqKi9cclxuICBzdGF0aWMgVW5jaGFuZ2VkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0FkZGVkJyBzdGF0ZS4gICoqL1xyXG4gIHN0YXRpYyBBZGRlZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG4gIC8qKiAgVGhlICdNb2RpZmllZCcgc3RhdGUuICAgKiovXHJcbiAgc3RhdGljIE1vZGlmaWVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0RlbGV0ZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIERlbGV0ZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuICAvKiogIFRoZSAnRGV0YWNoZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIERldGFjaGVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc1VuY2hhbmdlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkO1xyXG4gICoqL1xyXG4gIGlzVW5jaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybiB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLkFkZGVkLlxyXG4gIFxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNBZGRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQ7XHJcbiAgKiovXHJcbiAgaXNBZGRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5BZGRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5Nb2RpZmllZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzTW9kaWZpZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkO1xyXG4gICoqL1xyXG4gIGlzTW9kaWZpZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuRGVsZXRlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzRGVsZXRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gIFxyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICAqKi9cclxuICBpc0RlbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5EZXRhY2hlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzRGV0YWNoZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLkRldGFjaGVkO1xyXG4gICoqL1xyXG4gIGlzRGV0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJuIHRydWUgaWYgRW50aXR5U3RhdGUgaXMgRGVsZXRlZCBvciBEZXRhY2hlZCAqL1xyXG4gIGlzRGVsZXRlZE9yRGV0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQgfHwgdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuVW5jaGFuZ2VkIG9yIEVudGl0eVN0YXRlLk1vZGlmaWVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNVbmNoYW5nZWRPck1vZGlmaWVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkXHJcbiAgKiovXHJcbiAgaXNVbmNoYW5nZWRPck1vZGlmaWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZCB8fCB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiBFbnRpdHlTdGF0aXMgaXMgQWRkZWQgb3IgTW9kaWZpZWQgKi9cclxuICBpc0FkZGVkT3JNb2RpZmllZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5BZGRlZCB8fCB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuQWRkZWQgb3IgRW50aXR5U3RhdGUuTW9kaWZpZWQgb3IgRW50aXR5U3RhdGUuRGVsZXRlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzQWRkZWRNb2RpZmllZE9yRGVsZXRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkIHx8IGVzID09PSBFbnRpdHlTdGF0ZS5EZWxldGVkXHJcbiAgKiovXHJcbiAgaXNBZGRlZE1vZGlmaWVkT3JEZWxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkFkZGVkIHx8XHJcbiAgICAgIHRoaXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkIHx8XHJcbiAgICAgIHRoaXMgPT09IEVudGl0eVN0YXRlLkRlbGV0ZWQ7XHJcbiAgfVxyXG5cclxufVxyXG5FbnRpdHlTdGF0ZS5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiRW50aXR5U3RhdGVcIjtcclxuRXJyb3JbJ3gnXSA9IEVudGl0eVN0YXRlLnJlc29sdmVTeW1ib2xzKCk7XHJcbiJdfQ==
@@ -1,143 +0,0 @@
1
- /*
2
- * Copyright 2012-2023 IdeaBlade, Inc. All Rights Reserved.
3
- * Use, reproduction, distribution, and modification of this code is subject to the terms and
4
- * conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
5
- *
6
- * Author: Jay Traband
7
- */
8
- /**
9
- Base class for all Breeze enumerations, such as EntityState, DataType, FetchStrategy, MergeStrategy etc.
10
- A Breeze Enum is a namespaced set of constant values. Each Enum consists of a group of related constants, called 'symbols'.
11
- Unlike enums in some other environments, each 'symbol' can have both methods and properties.
12
- > class DayOfWeek extends BreezeEnum {
13
- > dayIndex: number;
14
- > isWeekend?: boolean;
15
- > nextDay() {
16
- > let nextIndex = (this.dayIndex + 1) % 7;
17
- > return DayOfWeek.getSymbols()[nextIndex];
18
- > }
19
- >
20
- > static Monday = new DayOfWeek( { dayIndex: 0});
21
- > static Tuesday = new DayOfWeek( { dayIndex: 1 });
22
- > static Wednesday = new DayOfWeek( { dayIndex: 2 });
23
- > static Thursday = new DayOfWeek( { dayIndex: 3 });
24
- > static Friday = new DayOfWeek( { dayIndex: 4 });
25
- > static Saturday = new DayOfWeek( { dayIndex: 5, isWeekend: true });
26
- > static Sunday = new DayOfWeek( { dayIndex: 6, isWeekend: true });
27
- > }
28
- >
29
- > describe("DayOfWeek", () => {
30
- > test("should support full enum capabilities", function() {
31
- > // // custom methods
32
- > let dowSymbols = DayOfWeek.getSymbols();
33
- > expect(dowSymbols.length).toBe(7);
34
- > expect(DayOfWeek.Monday.nextDay()).toBe(DayOfWeek.Tuesday);
35
- > expect(DayOfWeek.Sunday.nextDay()).toBe(DayOfWeek.Monday);
36
- > // // custom properties
37
- > expect(DayOfWeek.Tuesday.isWeekend).toBe(undefined);
38
- > expect(DayOfWeek.Saturday.isWeekend).toBe(true);
39
- > // // Standard enum capabilities
40
- > expect(DayOfWeek.Thursday instanceof DayOfWeek).toBe(true);
41
- > expect(BreezeEnum.isSymbol(DayOfWeek.Wednesday)).toBe(true);
42
- > expect(DayOfWeek.contains(DayOfWeek.Thursday)).toBe(true);
43
- > expect(DayOfWeek.Friday.toString()).toBe("Friday");
44
- > });
45
- > });
46
- Note that we have Error['x'] = ... in some places in the code to prevent Terser from optimizing out some important calls.
47
- @dynamic
48
- */
49
- export class BreezeEnum {
50
- /** @hidden @internal */
51
- static _resolvedNamesAndSymbols;
52
- /** */
53
- constructor(propertiesObj) {
54
- if (propertiesObj) {
55
- Object.keys(propertiesObj).forEach((key) => this[key] = propertiesObj[key]);
56
- }
57
- }
58
- /**
59
- Returns all of the symbols contained within this Enum.
60
- > let symbols = DayOfWeek.getSymbols();
61
- @return All of the symbols contained within this Enum.
62
- **/
63
- static getSymbols() {
64
- return this.resolveSymbols().map(ks => ks.symbol);
65
- }
66
- /**
67
- Returns the names of all of the symbols contained within this Enum.
68
- > let symbols = DayOfWeek.getNames();
69
- @return All of the names of the symbols contained within this Enum.
70
- **/
71
- static getNames() {
72
- return this.resolveSymbols().map(ks => ks.name);
73
- }
74
- /**
75
- Returns an Enum symbol given its name.
76
- > let dayOfWeek = DayOfWeek.from("Thursday");
77
- > // nowdayOfWeek === DayOfWeek.Thursday
78
- @param name - Name for which an enum symbol should be returned.
79
- @return The symbol that matches the name or 'undefined' if not found.
80
- **/
81
- static fromName(name) {
82
- return this[name];
83
- }
84
- /**
85
- Seals this enum so that no more symbols may be added to it. This should only be called after all symbols
86
- have already been added to the Enum. This method also sets the 'name' property on each of the symbols.
87
- > DayOfWeek.resolveSymbols();
88
- **/
89
- static resolveSymbols() {
90
- if (this._resolvedNamesAndSymbols)
91
- return this._resolvedNamesAndSymbols;
92
- let result = [];
93
- for (let key in this) {
94
- if (this.hasOwnProperty(key)) {
95
- let symb = this[key];
96
- if (symb instanceof BreezeEnum) {
97
- result.push({ name: key, symbol: symb });
98
- this[key] = symb;
99
- symb.name = key;
100
- }
101
- }
102
- }
103
- this._resolvedNamesAndSymbols = result;
104
- return result;
105
- }
106
- /**
107
- Returns whether an Enum contains a specified symbol.
108
- > let symbol = DayOfWeek.Friday;
109
- > if (DayOfWeek.contains(symbol)) {
110
- > // do something
111
- > }
112
- @param sym - Object or symbol to test.
113
- @return Whether this Enum contains the specified symbol.
114
- **/
115
- static contains(sym) {
116
- if (!(sym instanceof BreezeEnum)) {
117
- return false;
118
- }
119
- return this[sym.name] != null;
120
- }
121
- // /**
122
- // Checks if an object is an Enum 'symbol'. Use the 'contains' method instead of this one
123
- // if you want to test for a specific Enum.
124
- // > if (Enum.isSymbol(DayOfWeek.Wednesday)) {
125
- // > // do something ...
126
- // > };
127
- // **/
128
- // static isSymbol(obj: any) {
129
- // return obj instanceof BreezeEnum;
130
- // };
131
- /** Returns the string name of this Enum */
132
- toString() {
133
- return this.name;
134
- }
135
- /** Return enum name and symbol name */
136
- toJSON() {
137
- return {
138
- _$typeName: this['_$typeName'] || this.constructor.name,
139
- name: this.name
140
- };
141
- }
142
- }
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0NFO0FBQ0YsTUFBTSxPQUFPLFVBQVU7SUFNckIsd0JBQXdCO0lBQ3hCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBeUM7SUFFeEUsT0FBTztJQUNQLFlBQVksYUFBc0I7UUFDaEMsSUFBSSxhQUFhLEVBQUU7WUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3RTtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsd0JBQXdCO1lBQUUsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDeEUsSUFBSSxNQUFNLEdBQTBDLEVBQUUsQ0FBQztRQUV2RCxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLFlBQVksVUFBVSxFQUFFO29CQUM5QixNQUFNLENBQUMsSUFBSSxDQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7aUJBQ2pCO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUM7UUFDdkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFlO1FBQzdCLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxVQUFVLENBQUMsRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBR0QsTUFBTTtJQUNOLDBGQUEwRjtJQUMxRiw0Q0FBNEM7SUFDNUMsa0RBQWtEO0lBQ2xELDhCQUE4QjtJQUM5QixXQUFXO0lBQ1gsTUFBTTtJQUNOLDhCQUE4QjtJQUM5QixzQ0FBc0M7SUFDdEMsS0FBSztJQUVMLDJDQUEyQztJQUMzQyxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsTUFBTTtRQUNKLE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFLLElBQUksQ0FBQyxXQUFtQixDQUFDLElBQUk7WUFDaEUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDIzIElkZWFCbGFkZSwgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gIFxyXG4gKiBVc2UsIHJlcHJvZHVjdGlvbiwgZGlzdHJpYnV0aW9uLCBhbmQgbW9kaWZpY2F0aW9uIG9mIHRoaXMgY29kZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgXHJcbiAqIGNvbmRpdGlvbnMgb2YgdGhlIElkZWFCbGFkZSBCcmVlemUgbGljZW5zZSwgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYnJlZXplanMuY29tL2xpY2Vuc2VcclxuICpcclxuICogQXV0aG9yOiBKYXkgVHJhYmFuZFxyXG4gKi9cclxuXHJcbi8qKlxyXG5CYXNlIGNsYXNzIGZvciBhbGwgQnJlZXplIGVudW1lcmF0aW9ucywgc3VjaCBhcyBFbnRpdHlTdGF0ZSwgRGF0YVR5cGUsIEZldGNoU3RyYXRlZ3ksIE1lcmdlU3RyYXRlZ3kgZXRjLlxyXG5BIEJyZWV6ZSBFbnVtIGlzIGEgbmFtZXNwYWNlZCBzZXQgb2YgY29uc3RhbnQgdmFsdWVzLiAgRWFjaCBFbnVtIGNvbnNpc3RzIG9mIGEgZ3JvdXAgb2YgcmVsYXRlZCBjb25zdGFudHMsIGNhbGxlZCAnc3ltYm9scycuXHJcblVubGlrZSBlbnVtcyBpbiBzb21lIG90aGVyIGVudmlyb25tZW50cywgZWFjaCAnc3ltYm9sJyBjYW4gaGF2ZSBib3RoIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuXHJcbj4gICAgIGNsYXNzIERheU9mV2VlayBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG4+ICAgICAgIGRheUluZGV4OiBudW1iZXI7XHJcbj4gICAgICAgaXNXZWVrZW5kPzogYm9vbGVhbjtcclxuPiAgICAgICBuZXh0RGF5KCkge1xyXG4+ICAgICAgICAgbGV0IG5leHRJbmRleCA9ICh0aGlzLmRheUluZGV4ICsgMSkgJSA3O1xyXG4+ICAgICAgICAgcmV0dXJuIERheU9mV2Vlay5nZXRTeW1ib2xzKClbbmV4dEluZGV4XTtcclxuPiAgICAgICB9XHJcbj5cclxuPiAgICAgICBzdGF0aWMgTW9uZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMH0pO1xyXG4+ICAgICAgIHN0YXRpYyBUdWVzZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMSB9KTtcclxuPiAgICAgICBzdGF0aWMgV2VkbmVzZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMiB9KTtcclxuPiAgICAgICBzdGF0aWMgVGh1cnNkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiAzIH0pO1xyXG4+ICAgICAgIHN0YXRpYyBGcmlkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiA0IH0pO1xyXG4+ICAgICAgIHN0YXRpYyBTYXR1cmRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDUsIGlzV2Vla2VuZDogdHJ1ZSB9KTtcclxuPiAgICAgICBzdGF0aWMgU3VuZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogNiwgaXNXZWVrZW5kOiB0cnVlIH0pO1xyXG4+ICAgICB9XHJcbj5cclxuPiAgICAgZGVzY3JpYmUoXCJEYXlPZldlZWtcIiwgKCkgPT4ge1xyXG4+ICAgICAgIHRlc3QoXCJzaG91bGQgc3VwcG9ydCBmdWxsIGVudW0gY2FwYWJpbGl0aWVzXCIsIGZ1bmN0aW9uKCkge1xyXG4+ICAgICAgICAgLy8gLy8gY3VzdG9tIG1ldGhvZHNcclxuPiAgICAgICAgIGxldCBkb3dTeW1ib2xzID0gRGF5T2ZXZWVrLmdldFN5bWJvbHMoKTtcclxuPiAgICAgICAgIGV4cGVjdChkb3dTeW1ib2xzLmxlbmd0aCkudG9CZSg3KTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuTW9uZGF5Lm5leHREYXkoKSkudG9CZShEYXlPZldlZWsuVHVlc2RheSk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlN1bmRheS5uZXh0RGF5KCkpLnRvQmUoRGF5T2ZXZWVrLk1vbmRheSk7XHJcbj4gICAgICAgLy8gLy8gY3VzdG9tIHByb3BlcnRpZXNcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuVHVlc2RheS5pc1dlZWtlbmQpLnRvQmUodW5kZWZpbmVkKTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuU2F0dXJkYXkuaXNXZWVrZW5kKS50b0JlKHRydWUpO1xyXG4+ICAgICAgIC8vIC8vIFN0YW5kYXJkIGVudW0gY2FwYWJpbGl0aWVzXHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlRodXJzZGF5IGluc3RhbmNlb2YgRGF5T2ZXZWVrKS50b0JlKHRydWUpO1xyXG4+ICAgICAgICAgZXhwZWN0KEJyZWV6ZUVudW0uaXNTeW1ib2woRGF5T2ZXZWVrLldlZG5lc2RheSkpLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLmNvbnRhaW5zKERheU9mV2Vlay5UaHVyc2RheSkpLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLkZyaWRheS50b1N0cmluZygpKS50b0JlKFwiRnJpZGF5XCIpO1xyXG4+ICAgICAgIH0pO1xyXG4+ICAgfSk7XHJcbk5vdGUgdGhhdCB3ZSBoYXZlIEVycm9yWyd4J10gPSAuLi4gaW4gc29tZSBwbGFjZXMgaW4gdGhlIGNvZGUgdG8gcHJldmVudCBUZXJzZXIgZnJvbSBvcHRpbWl6aW5nIG91dCBzb21lIGltcG9ydGFudCBjYWxscy5cclxuQGR5bmFtaWNcclxuKi9cclxuZXhwb3J0IGNsYXNzIEJyZWV6ZUVudW0ge1xyXG4gIC8vIC8vIFRPRE86IHRoaW5rIGFib3V0IENvbXBvc2l0ZUVudW0gKGZsYWdzIGltcGwpLlxyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIHN5bWJvbCAqL1xyXG4gIGRlY2xhcmUgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBlbnVtOyBzZXQgaW4gcHJvdG90eXBlIG9mIGVhY2ggZW51bSAqL1xyXG4gIGRlY2xhcmUgXyR0eXBlTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHM6IHsgbmFtZTogc3RyaW5nLCBzeW1ib2w6IEJyZWV6ZUVudW0gfVtdO1xyXG5cclxuICAvKiogICovXHJcbiAgY29uc3RydWN0b3IocHJvcGVydGllc09iaj86IE9iamVjdCkge1xyXG4gICAgaWYgKHByb3BlcnRpZXNPYmopIHtcclxuICAgICAgT2JqZWN0LmtleXMocHJvcGVydGllc09iaikuZm9yRWFjaCgoa2V5KSA9PiB0aGlzW2tleV0gPSBwcm9wZXJ0aWVzT2JqW2tleV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyBhbGwgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgPiAgICAgbGV0IHN5bWJvbHMgPSBEYXlPZldlZWsuZ2V0U3ltYm9scygpO1xyXG4gIEByZXR1cm4gQWxsIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBnZXRTeW1ib2xzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3Muc3ltYm9sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICA+ICAgICBsZXQgc3ltYm9scyA9IERheU9mV2Vlay5nZXROYW1lcygpO1xyXG4gIEByZXR1cm4gIEFsbCBvZiB0aGUgbmFtZXMgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgKiovXHJcbiAgc3RhdGljIGdldE5hbWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3MubmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGFuIEVudW0gc3ltYm9sIGdpdmVuIGl0cyBuYW1lLlxyXG4gID4gICAgIGxldCBkYXlPZldlZWsgPSBEYXlPZldlZWsuZnJvbShcIlRodXJzZGF5XCIpO1xyXG4gID4gICAgIC8vIG5vd2RheU9mV2VlayA9PT0gRGF5T2ZXZWVrLlRodXJzZGF5XHJcbiAgQHBhcmFtIG5hbWUgLSBOYW1lIGZvciB3aGljaCBhbiBlbnVtIHN5bWJvbCBzaG91bGQgYmUgcmV0dXJuZWQuXHJcbiAgQHJldHVybiBUaGUgc3ltYm9sIHRoYXQgbWF0Y2hlcyB0aGUgbmFtZSBvciAndW5kZWZpbmVkJyBpZiBub3QgZm91bmQuXHJcbiAgKiovXHJcbiAgc3RhdGljIGZyb21OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXNbbmFtZV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBTZWFscyB0aGlzIGVudW0gc28gdGhhdCBubyBtb3JlIHN5bWJvbHMgbWF5IGJlIGFkZGVkIHRvIGl0LiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhbGwgc3ltYm9sc1xyXG4gIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBFbnVtLiBUaGlzIG1ldGhvZCBhbHNvIHNldHMgdGhlICduYW1lJyBwcm9wZXJ0eSBvbiBlYWNoIG9mIHRoZSBzeW1ib2xzLlxyXG4gID4gICAgIERheU9mV2Vlay5yZXNvbHZlU3ltYm9scygpO1xyXG4gICoqL1xyXG4gIHN0YXRpYyByZXNvbHZlU3ltYm9scygpIHtcclxuICAgIGlmICh0aGlzLl9yZXNvbHZlZE5hbWVzQW5kU3ltYm9scykgcmV0dXJuIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzO1xyXG4gICAgbGV0IHJlc3VsdDoge25hbWU6IHN0cmluZywgc3ltYm9sOiBCcmVlemVFbnVtIH1bXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBsZXQgc3ltYiA9IHRoaXNba2V5XTtcclxuICAgICAgICBpZiAoc3ltYiBpbnN0YW5jZW9mIEJyZWV6ZUVudW0pIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKCB7IG5hbWU6IGtleSwgc3ltYm9sOiBzeW1iIH0pO1xyXG4gICAgICAgICAgdGhpc1trZXldID0gc3ltYjtcclxuICAgICAgICAgIHN5bWIubmFtZSA9IGtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzID0gcmVzdWx0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBFbnVtIGNvbnRhaW5zIGEgc3BlY2lmaWVkIHN5bWJvbC5cclxuICA+ICAgICBsZXQgc3ltYm9sID0gRGF5T2ZXZWVrLkZyaWRheTtcclxuICA+ICAgICBpZiAoRGF5T2ZXZWVrLmNvbnRhaW5zKHN5bWJvbCkpIHtcclxuICA+ICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgfVxyXG4gIEBwYXJhbSBzeW0gLSBPYmplY3Qgb3Igc3ltYm9sIHRvIHRlc3QuXHJcbiAgQHJldHVybiBXaGV0aGVyIHRoaXMgRW51bSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN5bWJvbC5cclxuICAqKi9cclxuICBzdGF0aWMgY29udGFpbnMoc3ltOiBCcmVlemVFbnVtKSB7XHJcbiAgICBpZiAoIShzeW0gaW5zdGFuY2VvZiBCcmVlemVFbnVtKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXNbc3ltLm5hbWVdICE9IG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBFbnVtICdzeW1ib2wnLiBVc2UgdGhlICdjb250YWlucycgbWV0aG9kIGluc3RlYWQgb2YgdGhpcyBvbmUgXHJcbiAgLy8gaWYgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBFbnVtLiBcclxuICAvLyA+ICAgICBpZiAoRW51bS5pc1N5bWJvbChEYXlPZldlZWsuV2VkbmVzZGF5KSkge1xyXG4gIC8vID4gICAgICAgLy8gZG8gc29tZXRoaW5nIC4uLlxyXG4gIC8vID4gICAgIH07XHJcbiAgLy8gKiovXHJcbiAgLy8gc3RhdGljIGlzU3ltYm9sKG9iajogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQnJlZXplRW51bTtcclxuICAvLyB9O1xyXG5cclxuICAvKiogUmV0dXJucyB0aGUgc3RyaW5nIG5hbWUgb2YgdGhpcyBFbnVtICovXHJcbiAgdG9TdHJpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybiBlbnVtIG5hbWUgYW5kIHN5bWJvbCBuYW1lICovXHJcbiAgdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXyR0eXBlTmFtZTogdGhpc1snXyR0eXBlTmFtZSddIHx8ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkubmFtZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -1,264 +0,0 @@
1
- import { core } from './core';
2
- import { assertParam } from './assert-param';
3
- function publishCore(that, data, errorCallback) {
4
- let subscribers = that._subscribers;
5
- if (!subscribers)
6
- return true;
7
- // subscribers from outer scope.
8
- subscribers.forEach(function (s) {
9
- try {
10
- s.callback(data);
11
- }
12
- catch (e) {
13
- e.context = "unable to publish on topic: " + that.name;
14
- if (errorCallback) {
15
- errorCallback(e);
16
- }
17
- else if (that._defaultErrorCallback) {
18
- that._defaultErrorCallback(e);
19
- }
20
- else {
21
- fallbackErrorHandler(e);
22
- }
23
- }
24
- });
25
- }
26
- function fallbackErrorHandler(e) {
27
- // TODO: maybe log this
28
- // for now do nothing;
29
- }
30
- /**
31
- Class to support basic event publication and subscription semantics.
32
- @dynamic
33
- **/
34
- export class BreezeEvent {
35
- /** @hidden @internal */
36
- static __eventNameMap = {};
37
- /** @hidden @internal */
38
- static __nextUnsubKey = 1;
39
- /** The name of this Event */
40
- name;
41
- /** The object doing the publication. i.e. the object to which this event is attached. */
42
- publisher;
43
- /** @hidden @internal */
44
- _subscribers;
45
- /** @hidden @internal */
46
- _defaultErrorCallback;
47
- /**
48
- Constructor for an Event
49
- > salaryEvent = new BreezeEvent("salaryEvent", person);
50
- @param name - The name of the event.
51
- @param publisher - The object that will be doing the publication. i.e. the object to which this event is attached.
52
- @param defaultErrorCallback - Function to call when an error occurs during subscription execution.
53
- If omitted then subscriber notification failures will be ignored.
54
- **/
55
- constructor(name, publisher, defaultErrorCallback) {
56
- assertParam(name, "eventName").isNonEmptyString().check();
57
- assertParam(publisher, "publisher").isObject().check();
58
- this.name = name;
59
- // register the name
60
- BreezeEvent.__eventNameMap[name] = true;
61
- this.publisher = publisher;
62
- if (defaultErrorCallback) {
63
- this._defaultErrorCallback = defaultErrorCallback;
64
- }
65
- }
66
- /**
67
- Publish data for this event.
68
- > // Assume 'salaryEvent' is previously constructed Event
69
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 });
70
-
71
- This event can also be published asychronously
72
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true);
73
-
74
- And we can add a handler in case the subscriber 'mishandles' the event.
75
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true, function(error) {
76
- > // do something with the 'error' object
77
- > });
78
- @param data - Data to publish
79
- @param publishAsync - (default=false) Whether to publish asynchonously or not.
80
- @param errorCallback - Function to be called for any errors that occur during publication. If omitted,
81
- errors will be eaten.
82
- @return false if event is disabled; true otherwise.
83
- **/
84
- publish(data, publishAsync = false, errorCallback) {
85
- if (!BreezeEvent._isEnabled(this.name, this.publisher))
86
- return false;
87
- if (publishAsync === true) {
88
- setTimeout(publishCore, 0, this, data, errorCallback);
89
- }
90
- else {
91
- publishCore(this, data, errorCallback);
92
- }
93
- return true;
94
- }
95
- /**
96
- Publish data for this event asynchronously.
97
- > // Assume 'salaryEvent' is previously constructed Event
98
- > salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 });
99
-
100
- And we can add a handler in case the subscriber 'mishandles' the event.
101
- > salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 }, function(error) {
102
- > // do something with the 'error' object
103
- > });
104
- @param data - Data to publish
105
- @param errorCallback - Function to be called for any errors that occur during publication. If omitted,
106
- errors will be eaten.
107
- **/
108
- publishAsync(data, errorCallback) {
109
- this.publish(data, true, errorCallback);
110
- }
111
- /**
112
- Subscribe to this event.
113
- > // Assume 'salaryEvent' is previously constructed Event
114
- > salaryEvent.subscribe(function (eventArgs) {
115
- > if (eventArgs.eventType === "payRaise") {
116
- > // do something
117
- > }
118
- > });
119
-
120
- There are several built in Breeze events, such as [[EntityAspect.propertyChanged]], [[EntityAspect.validationErrorsChanged]] as well.
121
- > // Assume order is a preexisting 'order' entity
122
- > order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
123
- > if ( pcEvent.propertyName === "OrderDate") {
124
- > // do something
125
- > }
126
- > });
127
- @param callback- Function to be called whenever 'data' is published for this event.
128
- @param callback.data - {Object} Whatever 'data' was published. This should be documented on the specific event.
129
- @return This is a key for 'unsubscription'. It can be passed to the 'unsubscribe' method.
130
- **/
131
- subscribe(callback) {
132
- if (!this._subscribers) {
133
- this._subscribers = [];
134
- }
135
- let unsubKey = BreezeEvent.__nextUnsubKey;
136
- this._subscribers.push({ unsubKey: unsubKey, callback: callback });
137
- ++BreezeEvent.__nextUnsubKey;
138
- return unsubKey;
139
- }
140
- /**
141
- Unsubscribe from this event.
142
- > // Assume order is a preexisting 'order' entity
143
- > let token = order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
144
- > // do something
145
- > });
146
- > // sometime later
147
- > order.entityAspect.propertyChanged.unsubscribe(token);
148
- @param unsubKey - The value returned from the 'subscribe' method may be used to unsubscribe here.
149
- @return Whether unsubscription occured. This will return false if already unsubscribed or if the key simply
150
- cannot be found.
151
- **/
152
- unsubscribe = function (unsubKey) {
153
- if (!this._subscribers)
154
- return false;
155
- let subs = this._subscribers;
156
- let ix = core.arrayIndexOf(subs, function (s) {
157
- return s.unsubKey === unsubKey;
158
- });
159
- if (ix !== -1) {
160
- subs.splice(ix, 1);
161
- if (subs.length === 0) {
162
- this._subscribers = null;
163
- }
164
- return true;
165
- }
166
- else {
167
- return false;
168
- }
169
- };
170
- /** remove all subscribers */
171
- clear() {
172
- this._subscribers = null;
173
- }
174
- /** event bubbling - document later. */
175
- // null or undefined 'getParentFn' means Event does not need to bubble i.e. that it is always enabled - .
176
- static bubbleEvent(target, getParentFn) {
177
- target._getEventParent = getParentFn || null;
178
- }
179
- /**
180
- Enables or disables the named event for an object and all of its children.
181
- > BreezeEvent.enable(“propertyChanged”, myEntityManager, false)
182
-
183
- will disable all EntityAspect.propertyChanged events within a EntityManager.
184
- > BreezeEvent.enable(“propertyChanged”, myEntityManager, true)
185
-
186
- will enable all EntityAspect.propertyChanged events within a EntityManager.
187
- > BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, false)
188
-
189
- will disable EntityAspect.propertyChanged events for a specific entity.
190
- > BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, null)
191
-
192
- will removes any enabling / disabling at the entity aspect level so now any 'Event.enable' calls at the EntityManager level,
193
- made either previously or in the future, will control notification.
194
- > BreezeEvent.enable(“validationErrorsChanged”, myEntityManager, function(em) {
195
- > return em.customTag === “blue”;
196
- > })
197
-
198
-
199
- will either enable or disable myEntityManager based on the current value of a ‘customTag’ property on myEntityManager.
200
- Note that this is dynamic, changing the customTag value will cause events to be enabled or disabled immediately.
201
- @param eventName - The name of the event.
202
- @param target - The object at which enabling or disabling will occur. All event notifications that occur to this object or
203
- children of this object will be enabled or disabled.
204
- @param isEnabled - A boolean, a null or a function that returns either a boolean or a null.
205
- **/
206
- static enable(eventName, obj, isEnabled) {
207
- assertParam(eventName, "eventName").isNonEmptyString().check();
208
- assertParam(obj, "obj").isObject().check();
209
- assertParam(isEnabled, "isEnabled").isBoolean().isOptional().or().isFunction().check();
210
- let ob = obj;
211
- if (!ob._$eventMap) {
212
- ob._$eventMap = {};
213
- }
214
- ob._$eventMap[eventName] = isEnabled;
215
- }
216
- /**
217
- Returns whether for a specific event and a specific object and its children, notification is enabled or disabled or not set.
218
- > BreezeEvent.isEnabled(“propertyChanged”, myEntityManager)
219
- >
220
- @param eventName - The name of the event.
221
- @param target - The object for which we want to know if notifications are enabled.
222
- @return A null is returned if this value has not been set.
223
- **/
224
- static isEnabled(eventName, obj) {
225
- assertParam(eventName, "eventName").isNonEmptyString().check();
226
- assertParam(obj, "obj").isObject().check();
227
- // null is ok - it just means that the object is at the top level.
228
- if (obj._getEventParent === undefined) {
229
- throw new Error("This object does not support event enabling/disabling");
230
- }
231
- // return ctor._isEnabled(getFullEventName(eventName), obj);
232
- return BreezeEvent._isEnabled(eventName, 3);
233
- }
234
- /** @hidden @internal */
235
- static _isEnabled = function (eventName, obj) {
236
- let isEnabled = null;
237
- let ob = obj;
238
- let eventMap = ob._$eventMap;
239
- if (eventMap) {
240
- isEnabled = eventMap[eventName];
241
- }
242
- if (isEnabled != null) {
243
- if (typeof isEnabled === 'function') {
244
- return !!isEnabled(obj);
245
- }
246
- else {
247
- return !!isEnabled;
248
- }
249
- }
250
- else {
251
- let parent = ob._getEventParent && ob._getEventParent();
252
- if (parent) {
253
- return !!this._isEnabled(eventName, parent);
254
- }
255
- else {
256
- // default if not explicitly disabled.
257
- return true;
258
- }
259
- }
260
- };
261
- }
262
- // legacy support - deliberately not typed
263
- core.Event = BreezeEvent;
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUyxXQUFXLENBQUksSUFBb0IsRUFBRSxJQUFPLEVBQUUsYUFBaUM7SUFDdEYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNwQyxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLGdDQUFnQztJQUNoQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUM3QixJQUFJO1lBQ0YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsQ0FBQyxDQUFDLE9BQU8sR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3ZELElBQUksYUFBYSxFQUFFO2dCQUNqQixhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7aUJBQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQjtpQkFBTTtnQkFDTCxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QjtTQUNGO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxDQUFRO0lBQ3BDLHVCQUF1QjtJQUN2QixzQkFBc0I7QUFDeEIsQ0FBQztBQVNEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLHdCQUF3QjtJQUN4QixNQUFNLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQix3QkFBd0I7SUFDeEIsTUFBTSxDQUFDLGNB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Q3pDLElBQVksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydFBhcmFtIH0gZnJvbSAnLi9hc3NlcnQtcGFyYW0nO1xyXG5cclxuZnVuY3Rpb24gcHVibGlzaENvcmU8VD4odGhhdDogQnJlZXplRXZlbnQ8VD4sIGRhdGE6IFQsIGVycm9yQ2FsbGJhY2s/OiAoZTogRXJyb3IpID0+IGFueSkge1xyXG4gIGxldCBzdWJzY3JpYmVycyA9IHRoYXQuX3N1YnNjcmliZXJzO1xyXG4gIGlmICghc3Vic2NyaWJlcnMpIHJldHVybiB0cnVlO1xyXG4gIC8vIHN1YnNjcmliZXJzIGZyb20gb3V0ZXIgc2NvcGUuXHJcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcy5jYWxsYmFjayhkYXRhKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgZS5jb250ZXh0ID0gXCJ1bmFibGUgdG8gcHVibGlzaCBvbiB0b3BpYzogXCIgKyB0aGF0Lm5hbWU7XHJcbiAgICAgIGlmIChlcnJvckNhbGxiYWNrKSB7XHJcbiAgICAgICAgZXJyb3JDYWxsYmFjayhlKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGF0Ll9kZWZhdWx0RXJyb3JDYWxsYmFjaykge1xyXG4gICAgICAgIHRoYXQuX2RlZmF1bHRFcnJvckNhbGxiYWNrKGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZhbGxiYWNrRXJyb3JIYW5kbGVyKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZhbGxiYWNrRXJyb3JIYW5kbGVyKGU6IEVycm9yKSB7XHJcbiAgLy8gVE9ETzogbWF5YmUgbG9nIHRoaXNcclxuICAvLyBmb3Igbm93IGRvIG5vdGhpbmc7XHJcbn1cclxuXHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpcHRpb24ge1xyXG4gIHVuc3ViS2V5OiBudW1iZXI7XHJcbiAgY2FsbGJhY2s6IChkYXRhOiBhbnkpID0+IGFueTtcclxufVxyXG5cclxuLyoqXHJcbkNsYXNzIHRvIHN1cHBvcnQgYmFzaWMgZXZlbnQgcHVibGljYXRpb24gYW5kIHN1YnNjcmlwdGlvbiBzZW1hbnRpY3MuXHJcbkBkeW5hbWljXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgQnJlZXplRXZlbnQ8VD4ge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfX2V2ZW50TmFtZU1hcCA9IHt9O1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfX25leHRVbnN1YktleSA9IDE7XHJcbiAgLyoqIFRoZSBuYW1lIG9mIHRoaXMgRXZlbnQgKi9cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBvYmplY3QgZG9pbmcgdGhlIHB1YmxpY2F0aW9uLiBpLmUuIHRoZSBvYmplY3QgdG8gd2hpY2ggdGhpcyBldmVudCBpcyBhdHRhY2hlZC4gKi9cclxuICBwdWJsaXNoZXI6IE9iamVjdDtcclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgX3N1YnNjcmliZXJzOiBTdWJzY3JpcHRpb25bXTtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfZGVmYXVsdEVycm9yQ2FsbGJhY2s6IChlOiBFcnJvcikgPT4gYW55O1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgQ29uc3RydWN0b3IgZm9yIGFuIEV2ZW50XHJcbiAgPiAgICAgc2FsYXJ5RXZlbnQgPSBuZXcgQnJlZXplRXZlbnQoXCJzYWxhcnlFdmVudFwiLCBwZXJzb24pO1xyXG4gIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxyXG4gIEBwYXJhbSBwdWJsaXNoZXIgLSBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBkb2luZyB0aGUgcHVibGljYXRpb24uIGkuZS4gdGhlIG9iamVjdCB0byB3aGljaCB0aGlzIGV2ZW50IGlzIGF0dGFjaGVkLlxyXG4gIEBwYXJhbSBkZWZhdWx0RXJyb3JDYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHN1YnNjcmlwdGlvbiBleGVjdXRpb24uIFxyXG4gIElmIG9taXR0ZWQgdGhlbiBzdWJzY3JpYmVyIG5vdGlmaWNhdGlvbiBmYWlsdXJlcyB3aWxsIGJlIGlnbm9yZWQuXHJcbiAgKiovXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwdWJsaXNoZXI6IE9iamVjdCwgZGVmYXVsdEVycm9yQ2FsbGJhY2s/OiAoZTogRXJyb3IpID0+IGFueSkge1xyXG4gICAgYXNzZXJ0UGFyYW0obmFtZSwgXCJldmVudE5hbWVcIikuaXNOb25FbXB0eVN0cmluZygpLmNoZWNrKCk7XHJcbiAgICBhc3NlcnRQYXJhbShwdWJsaXNoZXIsIFwicHVibGlzaGVyXCIpLmlzT2JqZWN0KCkuY2hlY2soKTtcclxuXHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgLy8gcmVnaXN0ZXIgdGhlIG5hbWVcclxuICAgIEJyZWV6ZUV2ZW50Ll9fZXZlbnROYW1lTWFwW25hbWVdID0gdHJ1ZTtcclxuICAgIHRoaXMucHVibGlzaGVyID0gcHVibGlzaGVyO1xyXG4gICAgaWYgKGRlZmF1bHRFcnJvckNhbGxiYWNrKSB7XHJcbiAgICAgIHRoaXMuX2RlZmF1bHRFcnJvckNhbGxiYWNrID0gZGVmYXVsdEVycm9yQ2FsbGJhY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBQdWJsaXNoIGRhdGEgZm9yIHRoaXMgZXZlbnQuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSAnc2FsYXJ5RXZlbnQnIGlzIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgRXZlbnRcclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaCggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSk7XHJcblxyXG4gIFRoaXMgZXZlbnQgY2FuIGFsc28gYmUgcHVibGlzaGVkIGFzeWNocm9ub3VzbHlcclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaCggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSwgdHJ1ZSk7XHJcblxyXG4gIEFuZCB3ZSBjYW4gYWRkIGEgaGFuZGxlciBpbiBjYXNlIHRoZSBzdWJzY3JpYmVyICdtaXNoYW5kbGVzJyB0aGUgZXZlbnQuXHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnB1Ymxpc2goIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0sIHRydWUsIGZ1bmN0aW9uKGVycm9yKSB7XHJcbiAgPiAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgJ2Vycm9yJyBvYmplY3RcclxuICA+ICAgICAgfSk7XHJcbiAgQHBhcmFtIGRhdGEgLSBEYXRhIHRvIHB1Ymxpc2hcclxuICBAcGFyYW0gcHVibGlzaEFzeW5jIC0gKGRlZmF1bHQ9ZmFsc2UpIFdoZXRoZXIgdG8gcHVibGlzaCBhc3luY2hvbm91c2x5IG9yIG5vdC5cclxuICBAcGFyYW0gZXJyb3JDYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3IgYW55IGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBwdWJsaWNhdGlvbi4gSWYgb21pdHRlZCxcclxuICBlcnJvcnMgd2lsbCBiZSBlYXRlbi5cclxuICBAcmV0dXJuIGZhbHNlIGlmIGV2ZW50IGlzIGRpc2FibGVkOyB0cnVlIG90aGVyd2lzZS5cclxuICAqKi9cclxuICBwdWJsaXNoKGRhdGE6IFQsIHB1Ymxpc2hBc3luYzogYm9vbGVhbiA9IGZhbHNlLCBlcnJvckNhbGxiYWNrPzogKGU6IEVycm9yKSA9PiBhbnkpIHtcclxuXHJcbiAgICBpZiAoIUJyZWV6ZUV2ZW50Ll9pc0VuYWJsZWQodGhpcy5uYW1lLCB0aGlzLnB1Ymxpc2hlcikpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAocHVibGlzaEFzeW5jID09PSB0cnVlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQocHVibGlzaENvcmUsIDAsIHRoaXMsIGRhdGEsIGVycm9yQ2FsbGJhY2spO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHVibGlzaENvcmUodGhpcywgZGF0YSwgZXJyb3JDYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFB1Ymxpc2ggZGF0YSBmb3IgdGhpcyBldmVudCBhc3luY2hyb25vdXNseS5cclxuICA+ICAgICAgLy8gQXNzdW1lICdzYWxhcnlFdmVudCcgaXMgcHJldmlvdXNseSBjb25zdHJ1Y3RlZCBFdmVudFxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoQXN5bmMoIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0pO1xyXG5cclxuICBBbmQgd2UgY2FuIGFkZCBhIGhhbmRsZXIgaW4gY2FzZSB0aGUgc3Vic2NyaWJlciAnbWlzaGFuZGxlcycgdGhlIGV2ZW50LlxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoQXN5bmMoIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0sIGZ1bmN0aW9uKGVycm9yKSB7XHJcbiAgPiAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgJ2Vycm9yJyBvYmplY3RcclxuICA+ICAgICAgfSk7XHJcbiAgQHBhcmFtIGRhdGEgLSBEYXRhIHRvIHB1Ymxpc2hcclxuICBAcGFyYW0gZXJyb3JDYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3IgYW55IGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBwdWJsaWNhdGlvbi4gSWYgb21pdHRlZCxcclxuICBlcnJvcnMgd2lsbCBiZSBlYXRlbi5cclxuICAqKi9cclxuICBwdWJsaXNoQXN5bmMoZGF0YTogVCwgZXJyb3JDYWxsYmFjazogKGU6IEVycm9yKSA9PiBhbnkpIHtcclxuICAgIHRoaXMucHVibGlzaChkYXRhLCB0cnVlLCBlcnJvckNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFN1YnNjcmliZSB0byB0aGlzIGV2ZW50LlxyXG4gID4gICAgICAvLyBBc3N1bWUgJ3NhbGFyeUV2ZW50JyBpcyBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIEV2ZW50XHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnN1YnNjcmliZShmdW5jdGlvbiAoZXZlbnRBcmdzKSB7XHJcbiAgPiAgICAgICAgICBpZiAoZXZlbnRBcmdzLmV2ZW50VHlwZSA9PT0gXCJwYXlSYWlzZVwiKSB7XHJcbiAgPiAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgICAgICB9XHJcbiAgPiAgICAgIH0pO1xyXG5cclxuICBUaGVyZSBhcmUgc2V2ZXJhbCBidWlsdCBpbiBCcmVlemUgZXZlbnRzLCBzdWNoIGFzIFtbRW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZF1dLCBbW0VudGl0eUFzcGVjdC52YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZF1dIGFzIHdlbGwuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSBvcmRlciBpcyBhIHByZWV4aXN0aW5nICdvcmRlcicgZW50aXR5XHJcbiAgPiAgICAgIG9yZGVyLmVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQuc3Vic2NyaWJlKGZ1bmN0aW9uIChwY0V2ZW50KSB7XHJcbiAgPiAgICAgICAgICBpZiAoIHBjRXZlbnQucHJvcGVydHlOYW1lID09PSBcIk9yZGVyRGF0ZVwiKSB7XHJcbiAgPiAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgICAgICB9XHJcbiAgPiAgICAgIH0pO1xyXG4gIEBwYXJhbSBjYWxsYmFjay0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyICdkYXRhJyBpcyBwdWJsaXNoZWQgZm9yIHRoaXMgZXZlbnQuXHJcbiAgQHBhcmFtIGNhbGxiYWNrLmRhdGEgLSB7T2JqZWN0fSBXaGF0ZXZlciAnZGF0YScgd2FzIHB1Ymxpc2hlZC4gIFRoaXMgc2hvdWxkIGJlIGRvY3VtZW50ZWQgb24gdGhlIHNwZWNpZmljIGV2ZW50LlxyXG4gIEByZXR1cm4gVGhpcyBpcyBhIGtleSBmb3IgJ3Vuc3Vic2NyaXB0aW9uJy4gIEl0IGNhbiBiZSBwYXNzZWQgdG8gdGhlICd1bnN1YnNjcmliZScgbWV0aG9kLlxyXG4gICoqL1xyXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGRhdGE6IFQpID0+IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpYmVycykge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpYmVycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB1bnN1YktleSA9IEJyZWV6ZUV2ZW50Ll9fbmV4dFVuc3ViS2V5O1xyXG4gICAgdGhpcy5fc3Vic2NyaWJlcnMucHVzaCh7IHVuc3ViS2V5OiB1bnN1YktleSwgY2FsbGJhY2s6IGNhbGxiYWNrIH0pO1xyXG4gICAgKytCcmVlemVFdmVudC5fX25leHRVbnN1YktleTtcclxuICAgIHJldHVybiB1bnN1YktleTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFVuc3Vic2NyaWJlIGZyb20gdGhpcyBldmVudC5cclxuICA+ICAgICAgLy8gQXNzdW1lIG9yZGVyIGlzIGEgcHJlZXhpc3RpbmcgJ29yZGVyJyBlbnRpdHlcclxuICA+ICAgICAgbGV0IHRva2VuID0gb3JkZXIuZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5zdWJzY3JpYmUoZnVuY3Rpb24gKHBjRXZlbnQpIHtcclxuICA+ICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICA+ICAgICAgfSk7XHJcbiAgPiAgICAgIC8vIHNvbWV0aW1lIGxhdGVyXHJcbiAgPiAgICAgIG9yZGVyLmVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQudW5zdWJzY3JpYmUodG9rZW4pO1xyXG4gIEBwYXJhbSB1bnN1YktleSAtIFRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIHRoZSAnc3Vic2NyaWJlJyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gdW5zdWJzY3JpYmUgaGVyZS5cclxuICBAcmV0dXJuIFdoZXRoZXIgdW5zdWJzY3JpcHRpb24gb2NjdXJlZC4gVGhpcyB3aWxsIHJldHVybiBmYWxzZSBpZiBhbHJlYWR5IHVuc3Vic2NyaWJlZCBvciBpZiB0aGUga2V5IHNpbXBseVxyXG4gIGNhbm5vdCBiZSBmb3VuZC5cclxuICAqKi9cclxuICB1bnN1YnNjcmliZSA9IGZ1bmN0aW9uICh1bnN1YktleTogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuX3N1YnNjcmliZXJzKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgc3VicyA9IHRoaXMuX3N1YnNjcmliZXJzO1xyXG4gICAgbGV0IGl4ID0gY29yZS5hcnJheUluZGV4T2Yoc3VicywgZnVuY3Rpb24gKHMpIHtcclxuICAgICAgcmV0dXJuIHMudW5zdWJLZXkgPT09IHVuc3ViS2V5O1xyXG4gICAgfSk7XHJcbiAgICBpZiAoaXggIT09IC0xKSB7XHJcbiAgICAgIHN1YnMuc3BsaWNlKGl4LCAxKTtcclxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlcnMgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8qKiByZW1vdmUgYWxsIHN1YnNjcmliZXJzICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVycyA9IDxhbnk+bnVsbDtcclxuICB9XHJcblxyXG4gIC8qKiBldmVudCBidWJibGluZyAtIGRvY3VtZW50IGxhdGVyLiAqL1xyXG5cclxuICAvLyBudWxsIG9yIHVuZGVmaW5lZCAnZ2V0UGFyZW50Rm4nIG1lYW5zIEV2ZW50IGRvZXMgbm90IG5lZWQgdG8gYnViYmxlIGkuZS4gdGhhdCBpdCBpcyBhbHdheXMgZW5hYmxlZCAtIC5cclxuICBzdGF0aWMgYnViYmxlRXZlbnQodGFyZ2V0OiBhbnksIGdldFBhcmVudEZuPzogKCgpID0+IGFueSkpIHtcclxuICAgIHRhcmdldC5fZ2V0RXZlbnRQYXJlbnQgPSBnZXRQYXJlbnRGbiB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgbmFtZWQgZXZlbnQgZm9yIGFuIG9iamVjdCBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbi5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuZW5hYmxlKOKAnHByb3BlcnR5Q2hhbmdlZOKAnSwgbXlFbnRpdHlNYW5hZ2VyLCBmYWxzZSlcclxuXHJcbiAgd2lsbCBkaXNhYmxlIGFsbCBFbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkIGV2ZW50cyB3aXRoaW4gYSBFbnRpdHlNYW5hZ2VyLlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eU1hbmFnZXIsIHRydWUpXHJcblxyXG4gIHdpbGwgZW5hYmxlIGFsbCBFbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkIGV2ZW50cyB3aXRoaW4gYSBFbnRpdHlNYW5hZ2VyLlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eS5lbnRpdHlBc3BlY3QsIGZhbHNlKVxyXG5cclxuICB3aWxsIGRpc2FibGUgRW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZCBldmVudHMgZm9yIGEgc3BlY2lmaWMgZW50aXR5LlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eS5lbnRpdHlBc3BlY3QsIG51bGwpXHJcblxyXG4gIHdpbGwgcmVtb3ZlcyBhbnkgZW5hYmxpbmcgLyBkaXNhYmxpbmcgYXQgdGhlIGVudGl0eSBhc3BlY3QgbGV2ZWwgc28gbm93IGFueSAnRXZlbnQuZW5hYmxlJyBjYWxscyBhdCB0aGUgRW50aXR5TWFuYWdlciBsZXZlbCxcclxuICBtYWRlIGVpdGhlciBwcmV2aW91c2x5IG9yIGluIHRoZSBmdXR1cmUsIHdpbGwgY29udHJvbCBub3RpZmljYXRpb24uXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmVuYWJsZSjigJx2YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZOKAnSwgbXlFbnRpdHlNYW5hZ2VyLCBmdW5jdGlvbihlbSkge1xyXG4gID4gICAgICAgICAgcmV0dXJuIGVtLmN1c3RvbVRhZyA9PT0g4oCcYmx1ZeKAnTtcclxuICA+ICAgICAgfSlcclxuXHJcblxyXG4gIHdpbGwgZWl0aGVyIGVuYWJsZSBvciBkaXNhYmxlIG15RW50aXR5TWFuYWdlciBiYXNlZCBvbiB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIOKAmGN1c3RvbVRhZ+KAmSBwcm9wZXJ0eSBvbiBteUVudGl0eU1hbmFnZXIuXHJcbiAgTm90ZSB0aGF0IHRoaXMgaXMgZHluYW1pYywgY2hhbmdpbmcgdGhlIGN1c3RvbVRhZyB2YWx1ZSB3aWxsIGNhdXNlIGV2ZW50cyB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGltbWVkaWF0ZWx5LlxyXG4gIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXHJcbiAgQHBhcmFtIHRhcmdldCAtIFRoZSBvYmplY3QgYXQgd2hpY2ggZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHdpbGwgb2NjdXIuICBBbGwgZXZlbnQgbm90aWZpY2F0aW9ucyB0aGF0IG9jY3VyIHRvIHRoaXMgb2JqZWN0IG9yXHJcbiAgY2hpbGRyZW4gb2YgdGhpcyBvYmplY3Qgd2lsbCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxyXG4gIEBwYXJhbSBpc0VuYWJsZWQgLSBBIGJvb2xlYW4sIGEgbnVsbCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBlaXRoZXIgYSBib29sZWFuIG9yIGEgbnVsbC5cclxuICAqKi9cclxuIHN0YXRpYyBlbmFibGUoZXZlbnROYW1lOiBzdHJpbmcsIG9iajogT2JqZWN0LCBpc0VuYWJsZWQ6IGJvb2xlYW4gfCAoKHg6IGFueSkgPT4gYm9vbGVhbikpIHtcclxuICAgIGFzc2VydFBhcmFtKGV2ZW50TmFtZSwgXCJldmVudE5hbWVcIikuaXNOb25FbXB0eVN0cmluZygpLmNoZWNrKCk7XHJcbiAgICBhc3NlcnRQYXJhbShvYmosIFwib2JqXCIpLmlzT2JqZWN0KCkuY2hlY2soKTtcclxuICAgIGFzc2VydFBhcmFtKGlzRW5hYmxlZCwgXCJpc0VuYWJsZWRcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpLm9yKCkuaXNGdW5jdGlvbigpLmNoZWNrKCk7XHJcbiAgICBsZXQgb2IgPSA8YW55Pm9iajtcclxuICAgIGlmICghb2IuXyRldmVudE1hcCkge1xyXG4gICAgICBvYi5fJGV2ZW50TWFwID0ge307XHJcbiAgICB9XHJcbiAgICBvYi5fJGV2ZW50TWFwW2V2ZW50TmFtZV0gPSBpc0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgZm9yIGEgc3BlY2lmaWMgZXZlbnQgYW5kIGEgc3BlY2lmaWMgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW4sIG5vdGlmaWNhdGlvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkIG9yIG5vdCBzZXQuXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmlzRW5hYmxlZCjigJxwcm9wZXJ0eUNoYW5nZWTigJ0sIG15RW50aXR5TWFuYWdlcilcclxuICA+IFxyXG4gIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXHJcbiAgQHBhcmFtIHRhcmdldCAtIFRoZSBvYmplY3QgZm9yIHdoaWNoIHdlIHdhbnQgdG8ga25vdyBpZiBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkLlxyXG4gIEByZXR1cm4gQSBudWxsIGlzIHJldHVybmVkIGlmIHRoaXMgdmFsdWUgaGFzIG5vdCBiZWVuIHNldC5cclxuICAqKi9cclxuICBzdGF0aWMgaXNFbmFibGVkKGV2ZW50TmFtZTogc3RyaW5nLCBvYmo6IE9iamVjdCkge1xyXG4gICAgYXNzZXJ0UGFyYW0oZXZlbnROYW1lLCBcImV2ZW50TmFtZVwiKS5pc05vbkVtcHR5U3RyaW5nKCkuY2hlY2soKTtcclxuICAgIGFzc2VydFBhcmFtKG9iaiwgXCJvYmpcIikuaXNPYmplY3QoKS5jaGVjaygpO1xyXG4gICAgLy8gbnVsbCBpcyBvayAtIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IGlzIGF0IHRoZSB0b3AgbGV2ZWwuXHJcbiAgICBpZiAoKDxhbnk+b2JqKS5fZ2V0RXZlbnRQYXJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IGV2ZW50IGVuYWJsaW5nL2Rpc2FibGluZ1wiKTtcclxuICAgIH1cclxuICAgIC8vIHJldHVybiBjdG9yLl9pc0VuYWJsZWQoZ2V0RnVsbEV2ZW50TmFtZShldmVudE5hbWUpLCBvYmopO1xyXG4gICAgcmV0dXJuIEJyZWV6ZUV2ZW50Ll9pc0VuYWJsZWQoZXZlbnROYW1lLCAzKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfaXNFbmFibGVkID0gZnVuY3Rpb24gKGV2ZW50TmFtZTogc3RyaW5nLCBvYmo6IE9iamVjdCkge1xyXG4gICAgbGV0IGlzRW5hYmxlZDogYW55ID0gbnVsbDtcclxuICAgIGxldCBvYiA9IDxhbnk+b2JqO1xyXG4gICAgbGV0IGV2ZW50TWFwID0gb2IuXyRldmVudE1hcDtcclxuICAgIGlmIChldmVudE1hcCkge1xyXG4gICAgICBpc0VuYWJsZWQgPSBldmVudE1hcFtldmVudE5hbWVdO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzRW5hYmxlZCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXNFbmFibGVkID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgcmV0dXJuICEhaXNFbmFibGVkKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICEhaXNFbmFibGVkO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcGFyZW50ID0gb2IuX2dldEV2ZW50UGFyZW50ICYmIG9iLl9nZXRFdmVudFBhcmVudCgpO1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5faXNFbmFibGVkKGV2ZW50TmFtZSwgcGFyZW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBkZWZhdWx0IGlmIG5vdCBleHBsaWNpdGx5IGRpc2FibGVkLlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcblxyXG59XHJcblxyXG4vLyBsZWdhY3kgc3VwcG9ydCAtIGRlbGliZXJhdGVseSBub3QgdHlwZWRcclxuKGNvcmUgYXMgYW55KS5FdmVudCA9IEJyZWV6ZUV2ZW50OyJdfQ==
@@ -1,39 +0,0 @@
1
- import { core } from './core';
2
- import { assertConfig } from './assert-param';
3
- import { config, InterfaceDef } from './config';
4
- /** Registers adapters used by Breeze */
5
- export class InterfaceRegistry {
6
- ajax = new InterfaceDef("ajax");
7
- modelLibrary = new InterfaceDef("modelLibrary");
8
- dataService = new InterfaceDef("dataService");
9
- uriBuilder = new InterfaceDef("uriBuilder");
10
- }
11
- config.interfaceRegistry = new InterfaceRegistry();
12
- config._interfaceRegistry = config.interfaceRegistry;
13
- config.interfaceRegistry.modelLibrary.getDefaultInstance = function () {
14
- if (!this.defaultInstance) {
15
- throw new Error("Unable to locate the default implementation of the '" + this.name +
16
- "' interface. Possible options are 'ko', 'backingStore' or 'backbone'. See the breeze.config.initializeAdapterInstances method.");
17
- }
18
- return this.defaultInstance;
19
- };
20
- /**
21
- Initializes a collection of adapter implementations and makes each one the default for its corresponding interface.
22
- @method initializeAdapterInstances
23
- @param config {Object}
24
- @param [config.ajax] {String} - the name of a previously registered "ajax" adapter
25
- @param [config.dataService] {String} - the name of a previously registered "dataService" adapter
26
- @param [config.modelLibrary] {String} - the name of a previously registered "modelLibrary" adapter
27
- @param [config.uriBuilder] {String} - the name of a previously registered "uriBuilder" adapter
28
- @return [array of instances]
29
- **/
30
- config.initializeAdapterInstances = function (irConfig) {
31
- assertConfig(irConfig)
32
- .whereParam("dataService").isOptional()
33
- .whereParam("modelLibrary").isOptional()
34
- .whereParam("ajax").isOptional()
35
- .whereParam("uriBuilder").isOptional()
36
- .applyAll(this, false);
37
- return core.objectMap(config, this.initializeAdapterInstance);
38
- };
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZS1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBZSxNQUFNLFVBQVUsQ0FBQztBQWU3RCx3Q0FBd0M7QUFDeEMsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixJQUFJLEdBQUcsSUFBSSxZQUFZLENBQWMsTUFBTSxDQUFDLENBQUM7SUFDN0MsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFzQixjQUFjLENBQUMsQ0FBQztJQUNyRSxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQXFCLGFBQWEsQ0FBQyxDQUFDO0lBQ2xFLFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FBb0IsWUFBWSxDQUFDLENBQUM7Q0FDbEU7QUF1QkQsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUc7SUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUM5RSxpSUFBaUksQ0FBQyxDQUFDO0tBQzFJO0lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQywwQkFBMEIsR0FBRyxVQUFVLFFBQWlDO0lBQzNFLFlBQVksQ0FBQyxRQUFRLENBQUM7U0FDakIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUN0QyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFO1NBQ3ZDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUU7U0FDL0IsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUNyQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydENvbmZpZyB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgY29uZmlnLCBJbnRlcmZhY2VEZWYsIEJhc2VBZGFwdGVyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBNYXBwaW5nQ29udGV4dCB9IGZyb20gJy4vbWFwcGluZy1jb250ZXh0JztcclxuaW1wb3J0IHsgRW50aXR5UXVlcnkgfSBmcm9tICcuL2VudGl0eS1xdWVyeSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcbmltcG9ydCB7IEpzb25SZXN1bHRzQWRhcHRlciwgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBRdWVyeVJlc3VsdCwgU2F2ZVJlc3VsdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnIHtcclxuICAgIGFqYXg/OiBJbnRlcmZhY2VEZWY8QWpheEFkYXB0ZXI+O1xyXG4gICAgbW9kZWxMaWJyYXJ5PzogSW50ZXJmYWNlRGVmPE1vZGVsTGlicmFyeUFkYXB0ZXI+O1xyXG4gICAgZGF0YVNlcnZpY2U/OiBJbnRlcmZhY2VEZWY8RGF0YVNlcnZpY2VBZGFwdGVyPjtcclxuICAgIHVyaUJ1aWxkZXI/OiBJbnRlcmZhY2VEZWY8VXJpQnVpbGRlckFkYXB0ZXI+O1xyXG59XHJcblxyXG4vKiogUmVnaXN0ZXJzIGFkYXB0ZXJzIHVzZWQgYnkgQnJlZXplICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlcmZhY2VSZWdpc3RyeSB7XHJcbiAgICBhamF4ID0gbmV3IEludGVyZmFjZURlZjxBamF4QWRhcHRlcj4oXCJhamF4XCIpO1xyXG4gICAgbW9kZWxMaWJyYXJ5ID0gbmV3IEludGVyZmFjZURlZjxNb2RlbExpYnJhcnlBZGFwdGVyPihcIm1vZGVsTGlicmFyeVwiKTtcclxuICAgIGRhdGFTZXJ2aWNlID0gbmV3IEludGVyZmFjZURlZjxEYXRhU2VydmljZUFkYXB0ZXI+KFwiZGF0YVNlcnZpY2VcIik7XHJcbiAgICB1cmlCdWlsZGVyID0gbmV3IEludGVyZmFjZURlZjxVcmlCdWlsZGVyQWRhcHRlcj4oXCJ1cmlCdWlsZGVyXCIpO1xyXG59XHJcblxyXG4vLyBUaGlzIG1vZHVsZSBkZXNjcmliZXMgdGhlIGludGVyZmFjZVJlZ2lzdHJ5IGJ5IGV4dGVuZGluZyBjb25maWdcclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmRlY2xhcmUgbW9kdWxlIFwiLi9jb25maWdcIiB7XHJcbiAgICBpbnRlcmZhY2UgQnJlZXplQ29uZmlnIHtcclxuICAgICAgICAvKipcclxuICAgICAgICBJbml0aWFsaXplcyBhIGNvbGxlY3Rpb24gb2YgYWRhcHRlciBpbXBsZW1lbnRhdGlvbnMgYW5kIG1ha2VzIGVhY2ggb25lIHRoZSBkZWZhdWx0IGZvciBpdHMgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UuXHJcbiAgICAgICAgQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG4gICAgICAgIEBwYXJhbSBjb25maWcge09iamVjdH1cclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5hamF4XSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwiYWpheFwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG4gICAgICAgIEBwYXJhbSBbY29uZmlnLm1vZGVsTGlicmFyeV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcIm1vZGVsTGlicmFyeVwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy51cmlCdWlsZGVyXSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwidXJpQnVpbGRlclwiIGFkYXB0ZXJcclxuICAgICAgICBAcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbiAgICAgICAgKiovXHJcbiAgICAgICAgaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKTogdm9pZDtcclxuXHJcbiAgICAgICAgLy8gc3Ryb25nbHkgdHlwZWQgdmVyc2lvblxyXG4gICAgICAgIGludGVyZmFjZVJlZ2lzdHJ5OiBJbnRlcmZhY2VSZWdpc3RyeTtcclxuICAgIH1cclxufVxyXG5cclxuY29uZmlnLmludGVyZmFjZVJlZ2lzdHJ5ID0gbmV3IEludGVyZmFjZVJlZ2lzdHJ5KCk7XHJcbmNvbmZpZy5faW50ZXJmYWNlUmVnaXN0cnkgPSBjb25maWcuaW50ZXJmYWNlUmVnaXN0cnk7XHJcbmNvbmZpZy5pbnRlcmZhY2VSZWdpc3RyeS5tb2RlbExpYnJhcnkuZ2V0RGVmYXVsdEluc3RhbmNlID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEluc3RhbmNlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvY2F0ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ1wiICsgdGhpcy5uYW1lICtcclxuICAgICAgICAgICAgXCInIGludGVyZmFjZS4gIFBvc3NpYmxlIG9wdGlvbnMgYXJlICdrbycsICdiYWNraW5nU3RvcmUnIG9yICdiYWNrYm9uZScuIFNlZSB0aGUgYnJlZXplLmNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlcyBtZXRob2QuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdEluc3RhbmNlO1xyXG59O1xyXG5cclxuLyoqXHJcbkluaXRpYWxpemVzIGEgY29sbGVjdGlvbiBvZiBhZGFwdGVyIGltcGxlbWVudGF0aW9ucyBhbmQgbWFrZXMgZWFjaCBvbmUgdGhlIGRlZmF1bHQgZm9yIGl0cyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS5cclxuQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG5AcGFyYW0gY29uZmlnIHtPYmplY3R9XHJcbkBwYXJhbSBbY29uZmlnLmFqYXhdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJhamF4XCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5tb2RlbExpYnJhcnldIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJtb2RlbExpYnJhcnlcIiBhZGFwdGVyXHJcbkBwYXJhbSBbY29uZmlnLnVyaUJ1aWxkZXJdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJ1cmlCdWlsZGVyXCIgYWRhcHRlclxyXG5AcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbioqL1xyXG5jb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMgPSBmdW5jdGlvbiAoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKSB7XHJcbiAgICBhc3NlcnRDb25maWcoaXJDb25maWcpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJkYXRhU2VydmljZVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcIm1vZGVsTGlicmFyeVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcImFqYXhcIikuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ1cmlCdWlsZGVyXCIpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC5hcHBseUFsbCh0aGlzLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gY29yZS5vYmplY3RNYXAoY29uZmlnLCB0aGlzLmluaXRpYWxpemVBZGFwdGVySW5zdGFuY2UpO1xyXG59O1xyXG5cclxuLyoqIERhdGFTZXJ2aWNlQWRhcHRlciBBamF4IHJlcXVlc3QgY29uZmlndXJhdGlvbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhDb25maWcge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICAvKiogR0VULCBQT1NULCBldGMuICovXHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgLyoqIGpzb24sIGV0Yy4gKi9cclxuICAgIGRhdGFUeXBlPzogc3RyaW5nO1xyXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XHJcbiAgICBjcm9zc0RvbWFpbj86IHN0cmluZyB8IGJvb2xlYW47XHJcbiAgICBoZWFkZXJzPzoge307XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcGFyYW1zPzoge307XHJcbiAgICBzdWNjZXNzOiAocmVzOiBIdHRwUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBlcnJvcjogKHJlczogKEh0dHBSZXNwb25zZSB8IEVycm9yKSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIFJlcXVlc3Qgc2VudCBieSBBamF4QWRhcHRlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0IHtcclxuICAgIC8qKiBBamF4QWRhcHRlciB0aGF0IGluaXRpYXRlZCB0aGUgcmVxdWVzdCAqL1xyXG4gICAgYWRhcHRlcjogQWpheEFkYXB0ZXI7XHJcbiAgICAvKiogUmVxdWVzdCBjb25maWd1cmF0aW9uICovXHJcbiAgICBjb25maWc6IFJlcXVlc3RJbml0O1xyXG4gICAgLyoqIGNvbmZpZyBmcm9tIHRoZSBEYXRhU2VydmljZUFkYXB0ZXIgdGhhdCBjYWxsZWQgdGhlIEFqYXhBZGFwdGVyICovXHJcbiAgICBkc2FDb25maWc6IEFqYXhDb25maWc7XHJcbiAgICAvKiogRnVuY3Rpb24gY2FsbGVkIG9uIHJlc3BvbnNlIGVycm9yICovXHJcbiAgICBlcnJvcjogKHN0YXR1czogbnVtYmVyLCBzdGF0dXNUZXh0OiBzdHJpbmcsIGJvZHk6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlLCBlcnJvclRocm93bjogYW55KSA9PiB2b2lkO1xyXG4gICAgLyoqIEZ1bmN0aW9uIGNhbGxlZCBvbiByZXNwb25zZSBzdWNjZXNzICovXHJcbiAgICBzdWNjZXNzOiAoZGF0YTogYW55LCBzdGF0dXNUZXh0OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIEhhbmRsZXMgQUpBWCByZXF1ZXN0cyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBBamF4QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBhamF4IHJlcXVlc3QgYW5kIGNhbGxzIHRoZSBzdWNjZXNzIG9yIGVycm9yIGZ1bmN0aW9uICovXHJcbiAgICBhamF4KGNvbmZpZzogQWpheENvbmZpZyk6IHZvaWQ7XHJcbiAgICAvKiogQ29udGFpbmVyIGZvciBoZWFkZXJzIHRvIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAqL1xyXG4gICAgZGVmYXVsdFNldHRpbmdzOiB7IGhlYWRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xyXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGFsbG93IG1hbmlwdWxhdGluZyB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZyAqL1xyXG4gICAgcmVxdWVzdEludGVyY2VwdG9yPzogKHJlcTogQWpheFJlcXVlc3QpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKiBBZGFwdHMgYnJlZXplIGNoYW5nZS10cmFja2luZyB0byB0aGUgVUkgZnJhbWV3b3JrICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaWJyYXJ5QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGdldFRyYWNrYWJsZVByb3BlcnR5TmFtZXM6IChlbnRpdHk6IGFueSkgPT4gc3RyaW5nW107XHJcbiAgICBpbml0aWFsaXplRW50aXR5UHJvdG90eXBlKHByb3RvOiBPYmplY3QpOiB2b2lkO1xyXG4gICAgc3RhcnRUcmFja2luZyhlbnRpdHk6IGFueSwgZW50aXR5Q3RvcjogRnVuY3Rpb24pOiB2b2lkO1xyXG4gICAgY3JlYXRlQ3Rvcj86IEZ1bmN0aW9uO1xyXG59XHJcblxyXG4vKiogUmVzaGFwZXMgZGF0YSBtb3ZpbmcgYmV0d2VlbiBicmVlemUgYW5kIHNlcnZlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlQWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGZldGNoTWV0YWRhdGEobWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSwgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKTogUHJvbWlzZTxhbnk+OyAgLy8gcmVzdWx0IG9mIFByb21pc2UgaXMgZWl0aGVyIHJhd01ldGFkYXRhIG9yIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2h5IG5vdC5cclxuICAgIGV4ZWN1dGVRdWVyeShtYXBwaW5nQ29udGV4dDogTWFwcGluZ0NvbnRleHQpOiBQcm9taXNlPFF1ZXJ5UmVzdWx0PjsgICAvLyByZXN1bHQgb2YgZXhlY3V0ZVF1ZXJ5IHdpbGwgZ2V0IHBhc3NlZCB0byBKc29uUmVzdWx0c0FkYXB0ZXIgZXh0cmFjdFJlc3VsdHMgbWV0aG9kXHJcbiAgICBzYXZlQ2hhbmdlcyhzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpOiBQcm9taXNlPFNhdmVSZXN1bHQ+O1xyXG4gICAgY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yOiBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yO1xyXG4gICAganNvblJlc3VsdHNBZGFwdGVyOiBKc29uUmVzdWx0c0FkYXB0ZXI7XHJcbn1cclxuXHJcbi8qKiBGdW5jdGlvbiBjYWxsZWQgYnkgQWpheEFkYXB0ZXIgYmVmb3JlIHNlbmRpbmcgcmVxdWVzdCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgKHJlcTogQWpheFJlcXVlc3QpIDogdm9pZDtcclxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbW92ZSB0aGUgaW50ZXJjZXB0b3IgYWZ0ZXIgaXQgaXMgY2FsbGVkICovXHJcbiAgICBvbmVUaW1lOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQnVpbGRzIFVSSSBmb3IgcGVyZm9ybWluZyBxdWVyaWVzLiAgU2VyaWFsaXplcyB0aGUgRW50aXR5UXVlcnkgYWNjb3JkaW5nIHRvIHRoZSBVUkkgc3ludGF4LiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVyaUJ1aWxkZXJBZGFwdGVyIGV4dGVuZHMgQmFzZUFkYXB0ZXIge1xyXG4gICAgYnVpbGRVcmkocXVlcnk6IEVudGl0eVF1ZXJ5LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKTogc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yIHtcclxuICAgIG5ldyAoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKTogQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG59XHJcblxyXG4vKiogQWxsb3dzIG1hbmlwdWxhdGluZyBkYXRhIGluIERhdGFTZXJ2aWNlQWRhcHRlciBiZWZvcmUgc2VuZGluZyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgb25lVGltZT86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICBQcmVwYXJlIGFuZCByZXR1cm4gdGhlIHNhdmUgZGF0YSBmb3IgYW4gZW50aXR5IGNoYW5nZS1zZXQuXHJcbiAgXHJcbiAgICAgVGhlIGFkYXB0ZXIgY2FsbHMgdGhpcyBtZXRob2QgZm9yIGVhY2ggZW50aXR5IGluIHRoZSBjaGFuZ2Utc2V0LFxyXG4gICAgIGFmdGVyIGl0IGhhcyBwcmVwYXJlZCBhIFwiY2hhbmdlIHJlcXVlc3RcIiBmb3IgdGhhdCBvYmplY3QuXHJcbiAgXHJcbiAgICAgVGhlIG1ldGhvZCBjYW4gZG8gYW55dGhpbmcgdG8gdGhlIHJlcXVlc3QgYnV0IGl0IG11c3QgcmV0dXJuIGEgdmFsaWQsIG5vbi1udWxsIHJlcXVlc3QuXHJcbiAgICAgQGV4YW1wbGVcclxuICAgICB0aGlzLmdldFJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdCwgZW50aXR5LCBpbmRleCkge1xyXG4gICAgICAgICAgICAvLyBhbHRlciB0aGUgcmVxdWVzdCB0aGF0IHRoZSBhZGFwdGVyIHByZXBhcmVkIGZvciB0aGlzIGVudGl0eVxyXG4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgZW50aXR5LCBzYXZlQ29udGV4dCwgYW5kIHNhdmVCdW5kbGVcclxuICAgICAgICAgICAgLy8gZS5nLiwgYWRkIGEgY3VzdG9tIGhlYWRlciBvciBwcnVuZSB0aGUgb3JpZ2luYWxWYWx1ZXNNYXBcclxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICAgICAgfTtcclxuICAgICBAbWV0aG9kIGdldFJlcXVlc3RcclxuICAgICBAcGFyYW0gcmVxdWVzdCB7T2JqZWN0fSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYWRhcHRlcidzIHJlcXVlc3QgdG8gc2F2ZSB0aGlzIGVudGl0eS5cclxuICAgICBAcGFyYW0gZW50aXR5IHtFbnRpdHl9IFRoZSBlbnRpdHktdG8tYmUtc2F2ZSBhcyBpdCBpcyBpbiBjYWNoZVxyXG4gICAgIEBwYXJhbSBpbmRleCB7SW50ZWdlcn0gVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhpcyBlbnRpdHkgaW4gdGhlIGNoYW5nZS1zZXQgYXJyYXlcclxuICAgICBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIHBvdGVudGlhbGx5IHJldmlzZWQgcmVxdWVzdC5cclxuICAgICAqKi9cclxuICAgIGdldFJlcXVlc3QocmVxdWVzdDogYW55LCBlbnRpdHk6IEVudGl0eSwgaW5kZXg6IG51bWJlcik6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICBMYXN0IGNoYW5jZSB0byBjaGFuZ2UgYW55dGhpbmcgYWJvdXQgdGhlICdyZXF1ZXN0cycgYXJyYXlcclxuICAgICBhZnRlciBpdCBoYXMgYmVlbiBidWlsdCB3aXRoIHJlcXVlc3RzIGZvciBhbGwgb2YgdGhlIGVudGl0aWVzLXRvLWJlLXNhdmVkLlxyXG4gIFxyXG4gICAgIFRoZSAncmVxdWVzdHMnIGFycmF5IGlzIHRoZSBzYW1lIGFzICdzYXZlQnVuZGxlLmVudGl0aWVzJyBpbiBtYW55IGltcGxlbWVudGF0aW9uc1xyXG4gIFxyXG4gICAgIFRoaXMgbWV0aG9kIGNhbiBkbyBhbnl0aGluZyB0byB0aGUgYXJyYXkgaW5jbHVkaW5nIGFkZCBhbmQgcmVtb3ZlIHJlcXVlc3RzLlxyXG4gICAgIEl0J3MgdXAgdG8geW91IHRvIGVuc3VyZSB0aGF0IHNlcnZlciB3aWxsIGFjY2VwdCB0aGUgcmVxdWVzdHMgYXJyYXkgZGF0YSBhcyB2YWxpZC5cclxuICBcclxuICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBpZ25vcmVkLlxyXG4gICAgIEBleGFtcGxlXHJcbiAgICAgdGhpcy5kb25lID0gZnVuY3Rpb24gKHJlcXVlc3RzKSB7XHJcbiAgICAgICAgICAgIC8vIGFsdGVyIHRoZSBhcnJheSBvZiByZXF1ZXN0cyByZXByZXNlbnRpbmcgdGhlIGVudGlyZSBjaGFuZ2Utc2V0XHJcbiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBzYXZlQ29udGV4dCBhbmQgc2F2ZUJ1bmRsZVxyXG4gICAgICAgIH07XHJcbiAgICAgQG1ldGhvZCBkb25lXHJcbiAgICAgQHBhcmFtIHJlcXVlc3RzIHtBcnJheSBvZiBPYmplY3R9IFRoZSBhZGFwdGVyJ3MgYXJyYXkgb2YgcmVxdWVzdCBmb3IgdGhpcyBjaGFuZ2VzZXQuXHJcbiAgICAgKiovXHJcbiAgICBkb25lKHJlcXVlc3RzOiBPYmplY3RbXSk6IHZvaWQ7XHJcbn0iXX0=