breeze-client 2.1.6 → 2.1.7-mjs

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/LICENSE +1 -1
  2. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  6. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  8. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  10. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  12. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  13. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
  14. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
  17. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
  20. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
  23. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/{esm5/adapter-data-service-odata/adapter-data-service-odata.js → esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs} +138 -147
  28. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
  30. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
  32. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
  34. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
  37. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
  40. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2022/breeze-client.mjs +5 -0
  42. package/esm2022/index.mjs +2 -0
  43. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
  47. package/esm2022/src/abstract-data-service-adapter.mjs +325 -0
  48. package/esm2022/src/array.mjs +4 -0
  49. package/esm2022/src/assert-param.mjs +330 -0
  50. package/esm2022/src/breeze.mjs +85 -0
  51. package/esm2022/src/complex-array.mjs +117 -0
  52. package/esm2022/src/config.mjs +232 -0
  53. package/esm2022/src/core.mjs +712 -0
  54. package/esm2022/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2022/src/data-service.mjs +239 -0
  56. package/esm2022/src/data-type.mjs +507 -0
  57. package/esm2022/src/default-property-interceptor.mjs +460 -0
  58. package/{esm2015/src/entity-action.js → esm2022/src/entity-action.mjs} +25 -25
  59. package/esm2022/src/entity-aspect.mjs +897 -0
  60. package/esm2022/src/entity-group.mjs +192 -0
  61. package/esm2022/src/entity-key.mjs +127 -0
  62. package/esm2022/src/entity-manager.mjs +2183 -0
  63. package/esm2022/src/entity-metadata.mjs +2242 -0
  64. package/esm2022/src/entity-query.mjs +1024 -0
  65. package/esm2022/src/entity-state.mjs +107 -0
  66. package/esm2022/src/enum.mjs +143 -0
  67. package/esm2022/src/event.mjs +264 -0
  68. package/esm2022/src/interface-registry.mjs +39 -0
  69. package/esm2022/src/key-generator.mjs +110 -0
  70. package/esm2022/src/local-query-comparison-options.mjs +75 -0
  71. package/esm2022/src/mapping-context.mjs +422 -0
  72. package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
  73. package/esm2022/src/observable-array.mjs +183 -0
  74. package/esm2022/src/predicate.mjs +1259 -0
  75. package/esm2022/src/primitive-array.mjs +85 -0
  76. package/esm2022/src/query-options.mjs +160 -0
  77. package/esm2022/src/relation-array.mjs +173 -0
  78. package/esm2022/src/save-options.mjs +51 -0
  79. package/esm2022/src/unattached-children-map.mjs +56 -0
  80. package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
  81. package/esm2022/src/validation-options.mjs +78 -0
  82. package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
  83. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
  85. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
  87. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
  89. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +68 -69
  93. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +30 -30
  95. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
  97. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
  99. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
  101. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
  103. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
  107. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2126 -1577
  109. package/fesm2022/breeze-client.mjs.map +1 -0
  110. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  111. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  112. package/package.json +93 -11
  113. package/src/abstract-data-service-adapter.d.ts +20 -0
  114. package/src/config.d.ts +1 -1
  115. package/src/core.d.ts +1 -1
  116. package/src/entity-aspect.d.ts +1 -1
  117. package/src/entity-metadata.d.ts +8 -6
  118. package/src/entity-query.d.ts +18 -4
  119. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  120. package/adapter-ajax-angularjs/package.json +0 -13
  121. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  122. package/adapter-ajax-fetch/package.json +0 -13
  123. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  124. package/adapter-ajax-httpclient/package.json +0 -13
  125. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  126. package/adapter-ajax-jquery/package.json +0 -13
  127. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  128. package/adapter-ajax-post/package.json +0 -13
  129. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  130. package/adapter-data-service-odata/package.json +0 -13
  131. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  132. package/adapter-data-service-webapi/package.json +0 -13
  133. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  134. package/adapter-model-library-backing-store/package.json +0 -13
  135. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  136. package/adapter-model-library-ko/package.json +0 -13
  137. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  138. package/adapter-uri-builder-json/package.json +0 -13
  139. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  140. package/adapter-uri-builder-odata/package.json +0 -13
  141. package/breeze-client.d.ts +0 -8
  142. package/breeze-client.metadata.json +0 -1
  143. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  144. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  145. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  146. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  147. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  148. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  149. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  150. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  151. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  152. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  153. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  154. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  155. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  156. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  157. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  158. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  159. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  160. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  161. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  162. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  163. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -747
  164. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  165. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  166. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  167. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -333
  168. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  169. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  170. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  171. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  172. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  173. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  174. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  175. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  176. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  177. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  178. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  179. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  180. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  181. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  182. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  183. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  184. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  185. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  186. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  187. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  188. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  189. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  190. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  191. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  192. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  193. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  194. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  195. package/bundles/breeze-client.umd.js +0 -14181
  196. package/bundles/breeze-client.umd.js.map +0 -1
  197. package/bundles/breeze-client.umd.min.js +0 -16
  198. package/bundles/breeze-client.umd.min.js.map +0 -1
  199. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  200. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  201. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  202. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  203. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  204. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  205. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  206. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  207. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  208. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  209. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  210. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  211. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  212. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  213. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -463
  214. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  215. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -100
  216. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  217. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  218. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  219. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  220. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  221. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  222. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  223. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  224. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  225. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  226. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  227. package/esm2015/breeze-client.js +0 -9
  228. package/esm2015/index.js +0 -2
  229. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  230. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  231. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  232. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  233. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  234. package/esm2015/src/array.js +0 -4
  235. package/esm2015/src/assert-param.js +0 -312
  236. package/esm2015/src/breeze.js +0 -85
  237. package/esm2015/src/complex-array.js +0 -119
  238. package/esm2015/src/config.js +0 -223
  239. package/esm2015/src/core.js +0 -714
  240. package/esm2015/src/csdl-metadata-parser.js +0 -385
  241. package/esm2015/src/data-service.js +0 -203
  242. package/esm2015/src/data-type.js +0 -503
  243. package/esm2015/src/default-property-interceptor.js +0 -460
  244. package/esm2015/src/entity-aspect.js +0 -804
  245. package/esm2015/src/entity-group.js +0 -187
  246. package/esm2015/src/entity-key.js +0 -116
  247. package/esm2015/src/entity-manager.js +0 -2094
  248. package/esm2015/src/entity-metadata.js +0 -2109
  249. package/esm2015/src/entity-query.js +0 -996
  250. package/esm2015/src/entity-state.js +0 -107
  251. package/esm2015/src/enum.js +0 -141
  252. package/esm2015/src/event.js +0 -256
  253. package/esm2015/src/interface-registry.js +0 -41
  254. package/esm2015/src/key-generator.js +0 -108
  255. package/esm2015/src/local-query-comparison-options.js +0 -65
  256. package/esm2015/src/mapping-context.js +0 -411
  257. package/esm2015/src/naming-convention.js +0 -88
  258. package/esm2015/src/observable-array.js +0 -185
  259. package/esm2015/src/predicate.js +0 -1242
  260. package/esm2015/src/primitive-array.js +0 -87
  261. package/esm2015/src/query-options.js +0 -152
  262. package/esm2015/src/relation-array.js +0 -175
  263. package/esm2015/src/save-options.js +0 -41
  264. package/esm2015/src/unattached-children-map.js +0 -58
  265. package/esm2015/src/validate.js +0 -991
  266. package/esm2015/src/validation-options.js +0 -64
  267. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  268. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  269. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  270. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  271. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  272. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  273. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  274. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  275. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  276. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  277. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  278. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  279. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  280. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  281. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  282. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -105
  283. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  284. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  285. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  286. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  287. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  288. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  289. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  290. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  291. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  292. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  293. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  294. package/esm5/breeze-client.js +0 -9
  295. package/esm5/index.js +0 -2
  296. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  297. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  298. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  299. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  300. package/esm5/src/abstract-data-service-adapter.js +0 -302
  301. package/esm5/src/array.js +0 -4
  302. package/esm5/src/assert-param.js +0 -317
  303. package/esm5/src/breeze.js +0 -85
  304. package/esm5/src/complex-array.js +0 -119
  305. package/esm5/src/config.js +0 -228
  306. package/esm5/src/core.js +0 -722
  307. package/esm5/src/csdl-metadata-parser.js +0 -385
  308. package/esm5/src/data-service.js +0 -207
  309. package/esm5/src/data-type.js +0 -510
  310. package/esm5/src/default-property-interceptor.js +0 -460
  311. package/esm5/src/entity-action.js +0 -52
  312. package/esm5/src/entity-aspect.js +0 -810
  313. package/esm5/src/entity-group.js +0 -189
  314. package/esm5/src/entity-key.js +0 -118
  315. package/esm5/src/entity-manager.js +0 -2112
  316. package/esm5/src/entity-metadata.js +0 -2144
  317. package/esm5/src/entity-query.js +0 -1023
  318. package/esm5/src/entity-state.js +0 -114
  319. package/esm5/src/enum.js +0 -144
  320. package/esm5/src/event.js +0 -259
  321. package/esm5/src/interface-registry.js +0 -43
  322. package/esm5/src/key-generator.js +0 -111
  323. package/esm5/src/local-query-comparison-options.js +0 -67
  324. package/esm5/src/mapping-context.js +0 -413
  325. package/esm5/src/observable-array.js +0 -201
  326. package/esm5/src/predicate.js +0 -1307
  327. package/esm5/src/primitive-array.js +0 -87
  328. package/esm5/src/query-options.js +0 -167
  329. package/esm5/src/relation-array.js +0 -175
  330. package/esm5/src/save-options.js +0 -43
  331. package/esm5/src/unattached-children-map.js +0 -60
  332. package/esm5/src/validation-options.js +0 -66
  333. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  334. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  335. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  336. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  337. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  338. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  339. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  340. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  341. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  342. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  343. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  344. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  345. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  346. package/fesm2015/breeze-client.js.map +0 -1
  347. package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
  348. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  349. package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
  350. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  351. package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
  352. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  353. package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
  354. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  355. package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
  356. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  357. package/fesm5/breeze-client-adapter-data-service-odata.js +0 -523
  358. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  359. package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -111
  360. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  361. package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
  362. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  363. package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
  364. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  365. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  366. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  367. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  368. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  369. package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
  370. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  371. package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
  372. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  373. package/fesm5/breeze-client.js +0 -13903
  374. package/fesm5/breeze-client.js.map +0 -1
  375. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  376. package/mixin-get-entity-graph/package.json +0 -13
  377. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  378. package/mixin-save-queuing/package.json +0 -13
@@ -1,114 +0,0 @@
1
- import { __extends } from "tslib";
2
- import { BreezeEnum } from './enum';
3
- /**
4
- EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
5
- **/
6
- var EntityState = /** @class */ (function (_super) {
7
- __extends(EntityState, _super);
8
- function EntityState() {
9
- return _super !== null && _super.apply(this, arguments) || this;
10
- }
11
- /**
12
- Returns whether an entityState instance is EntityState.Unchanged.
13
- > var es = anEntity.entityAspect.entityState;
14
- > return es.isUnchanged();
15
-
16
- is the same as
17
- > return es === EntityState.Unchanged;
18
- **/
19
- EntityState.prototype.isUnchanged = function () {
20
- return this === EntityState.Unchanged;
21
- };
22
- /**
23
- Return whether an entityState instance is EntityState.Added.
24
-
25
- > var es = anEntity.entityAspect.entityState;
26
- > return es.isAdded();
27
-
28
- is the same as
29
- > return es === EntityState.Added;
30
- **/
31
- EntityState.prototype.isAdded = function () {
32
- return this === EntityState.Added;
33
- };
34
- /**
35
- Returns whether an entityState instance is EntityState.Modified.
36
- > var es = anEntity.entityAspect.entityState;
37
- > return es.isModified();
38
-
39
- is the same as
40
- > return es === EntityState.Modified;
41
- **/
42
- EntityState.prototype.isModified = function () {
43
- return this === EntityState.Modified;
44
- };
45
- /**
46
- Returns whether an entityState instance is EntityState.Deleted.
47
- > var es = anEntity.entityAspect.entityState;
48
- > return es.isDeleted();
49
-
50
- is the same as
51
-
52
- > return es === EntityState.Deleted;
53
- **/
54
- EntityState.prototype.isDeleted = function () {
55
- return this === EntityState.Deleted;
56
- };
57
- /**
58
- Returns whether an entityState instance is EntityState.Detached.
59
- > var es = anEntity.entityAspect.entityState;
60
- > return es.isDetached();
61
-
62
- is the same as
63
- > return es === EntityState.Detached;
64
- **/
65
- EntityState.prototype.isDetached = function () {
66
- return this === EntityState.Detached;
67
- };
68
- /** Return true if EntityState is Deleted or Detached */
69
- EntityState.prototype.isDeletedOrDetached = function () {
70
- return this === EntityState.Detached || this === EntityState.Detached;
71
- };
72
- /**
73
- Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
74
- > var es = anEntity.entityAspect.entityState;
75
- > return es.isUnchangedOrModified();
76
-
77
- is the same as
78
- > return es === EntityState.Unchanged || es === EntityState.Modified
79
- **/
80
- EntityState.prototype.isUnchangedOrModified = function () {
81
- return this === EntityState.Unchanged || this === EntityState.Modified;
82
- };
83
- /** Return true if EntityStatis is Added or Modified */
84
- EntityState.prototype.isAddedOrModified = function () {
85
- return this === EntityState.Added || this === EntityState.Modified;
86
- };
87
- /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
88
- > var es = anEntity.entityAspect.entityState;
89
- > return es.isAddedModifiedOrDeleted();
90
-
91
- is the same as
92
- > return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
93
- **/
94
- EntityState.prototype.isAddedModifiedOrDeleted = function () {
95
- return this === EntityState.Added ||
96
- this === EntityState.Modified ||
97
- this === EntityState.Deleted;
98
- };
99
- /** The 'Unchanged' state. **/
100
- EntityState.Unchanged = new EntityState();
101
- /** The 'Added' state. **/
102
- EntityState.Added = new EntityState();
103
- /** The 'Modified' state. **/
104
- EntityState.Modified = new EntityState();
105
- /** The 'Deleted' state. **/
106
- EntityState.Deleted = new EntityState();
107
- /** The 'Detached' state. **/
108
- EntityState.Detached = new EntityState();
109
- return EntityState;
110
- }(BreezeEnum));
111
- export { EntityState };
112
- EntityState.prototype._$typeName = "EntityState";
113
- Error['x'] = EntityState.resolveSymbols();
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9lbnRpdHktc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEM7O0dBRUc7QUFDSDtJQUFpQywrQkFBVTtJQUEzQzs7SUE4R0EsQ0FBQztJQWpHQzs7Ozs7OztPQU9HO0lBQ0gsaUNBQVcsR0FBWDtRQUNFLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsNkJBQU8sR0FBUDtRQUNFLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQ0FBVSxHQUFWO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCwrQkFBUyxHQUFUO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGdDQUFVLEdBQVY7UUFDRSxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQseUNBQW1CLEdBQW5CO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILDJDQUFxQixHQUFyQjtRQUNFLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDekUsQ0FBQztJQUVELHVEQUF1RDtJQUN2RCx1Q0FBaUIsR0FBakI7UUFDRSxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCw4Q0FBd0IsR0FBeEI7UUFDRSxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSztZQUMvQixJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVE7WUFDN0IsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQztJQTFHRCw4QkFBOEI7SUFDdkIscUJBQVMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLDRCQUE0QjtJQUNyQixpQkFBSyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDakMsZ0NBQWdDO0lBQ3pCLG9CQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNwQyw4QkFBOEI7SUFDdkIsbUJBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ25DLCtCQUErQjtJQUN4QixvQkFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFtR3RDLGtCQUFDO0NBQUEsQUE5R0QsQ0FBaUMsVUFBVSxHQThHMUM7U0E5R1ksV0FBVztBQStHeEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQ2pELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVlemVFbnVtIH0gZnJvbSAnLi9lbnVtJztcclxuXHJcbi8qKlxyXG5FbnRpdHlTdGF0ZSBpcyBhbiAnRW51bScgY29udGFpbmluZyBhbGwgb2YgdGhlIHZhbGlkIHN0YXRlcyBmb3IgYW4gJ0VudGl0eScuXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgRW50aXR5U3RhdGUgZXh0ZW5kcyBCcmVlemVFbnVtIHtcclxuXHJcbiAgLyoqIFRoZSAnVW5jaGFuZ2VkJyBzdGF0ZS4gKiovXHJcbiAgc3RhdGljIFVuY2hhbmdlZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG4gIC8qKiAgVGhlICdBZGRlZCcgc3RhdGUuICAqKi9cclxuICBzdGF0aWMgQWRkZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuICAvKiogIFRoZSAnTW9kaWZpZWQnIHN0YXRlLiAgICoqL1xyXG4gIHN0YXRpYyBNb2RpZmllZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG4gIC8qKiAgVGhlICdEZWxldGVkJyBzdGF0ZS4gICoqL1xyXG4gIHN0YXRpYyBEZWxldGVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0RldGFjaGVkJyBzdGF0ZS4gICoqL1xyXG4gIHN0YXRpYyBEZXRhY2hlZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuVW5jaGFuZ2VkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNVbmNoYW5nZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZDtcclxuICAqKi9cclxuICBpc1VuY2hhbmdlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm4gd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5BZGRlZC5cclxuICBcclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzQWRkZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLkFkZGVkO1xyXG4gICoqL1xyXG4gIGlzQWRkZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuTW9kaWZpZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc01vZGlmaWVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICAqKi9cclxuICBpc01vZGlmaWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLkRlbGV0ZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc0RlbGV0ZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICBcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLkRlbGV0ZWQ7XHJcbiAgKiovXHJcbiAgaXNEZWxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkRlbGV0ZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuRGV0YWNoZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc0RldGFjaGVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5EZXRhY2hlZDtcclxuICAqKi9cclxuICBpc0RldGFjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkRldGFjaGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybiB0cnVlIGlmIEVudGl0eVN0YXRlIGlzIERlbGV0ZWQgb3IgRGV0YWNoZWQgKi9cclxuICBpc0RlbGV0ZWRPckRldGFjaGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkRldGFjaGVkIHx8IHRoaXMgPT09IEVudGl0eVN0YXRlLkRldGFjaGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLlVuY2hhbmdlZCBvciBFbnRpdHlTdGF0ZS5Nb2RpZmllZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzVW5jaGFuZ2VkT3JNb2RpZmllZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkIHx8IGVzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZFxyXG4gICoqL1xyXG4gIGlzVW5jaGFuZ2VkT3JNb2RpZmllZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQgfHwgdGhpcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJuIHRydWUgaWYgRW50aXR5U3RhdGlzIGlzIEFkZGVkIG9yIE1vZGlmaWVkICovXHJcbiAgaXNBZGRlZE9yTW9kaWZpZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQgfHwgdGhpcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJucyB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLkFkZGVkIG9yIEVudGl0eVN0YXRlLk1vZGlmaWVkIG9yIEVudGl0eVN0YXRlLkRlbGV0ZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc0FkZGVkTW9kaWZpZWRPckRlbGV0ZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLkFkZGVkIHx8IGVzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZCB8fCBlcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZFxyXG4gICoqL1xyXG4gIGlzQWRkZWRNb2RpZmllZE9yRGVsZXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5BZGRlZCB8fFxyXG4gICAgICB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZCB8fFxyXG4gICAgICB0aGlzID09PSBFbnRpdHlTdGF0ZS5EZWxldGVkO1xyXG4gIH1cclxuXHJcbn1cclxuRW50aXR5U3RhdGUucHJvdG90eXBlLl8kdHlwZU5hbWUgPSBcIkVudGl0eVN0YXRlXCI7XHJcbkVycm9yWyd4J10gPSBFbnRpdHlTdGF0ZS5yZXNvbHZlU3ltYm9scygpO1xyXG4iXX0=
package/esm5/src/enum.js DELETED
@@ -1,144 +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
- var BreezeEnum = /** @class */ (function () {
50
- /** */
51
- function BreezeEnum(propertiesObj) {
52
- var _this = this;
53
- if (propertiesObj) {
54
- Object.keys(propertiesObj).forEach(function (key) { return _this[key] = propertiesObj[key]; });
55
- }
56
- }
57
- /**
58
- Returns all of the symbols contained within this Enum.
59
- > let symbols = DayOfWeek.getSymbols();
60
- @return All of the symbols contained within this Enum.
61
- **/
62
- BreezeEnum.getSymbols = function () {
63
- return this.resolveSymbols().map(function (ks) { return ks.symbol; });
64
- };
65
- /**
66
- Returns the names of all of the symbols contained within this Enum.
67
- > let symbols = DayOfWeek.getNames();
68
- @return All of the names of the symbols contained within this Enum.
69
- **/
70
- BreezeEnum.getNames = function () {
71
- return this.resolveSymbols().map(function (ks) { return ks.name; });
72
- };
73
- /**
74
- Returns an Enum symbol given its name.
75
- > let dayOfWeek = DayOfWeek.from("Thursday");
76
- > // nowdayOfWeek === DayOfWeek.Thursday
77
- @param name - Name for which an enum symbol should be returned.
78
- @return The symbol that matches the name or 'undefined' if not found.
79
- **/
80
- BreezeEnum.fromName = function (name) {
81
- return this[name];
82
- };
83
- /**
84
- Seals this enum so that no more symbols may be added to it. This should only be called after all symbols
85
- have already been added to the Enum. This method also sets the 'name' property on each of the symbols.
86
- > DayOfWeek.resolveSymbols();
87
- **/
88
- BreezeEnum.resolveSymbols = function () {
89
- if (this._resolvedNamesAndSymbols)
90
- return this._resolvedNamesAndSymbols;
91
- var result = [];
92
- for (var key in this) {
93
- if (this.hasOwnProperty(key)) {
94
- var symb = this[key];
95
- if (symb instanceof BreezeEnum) {
96
- result.push({ name: key, symbol: symb });
97
- this[key] = symb;
98
- symb.name = key;
99
- }
100
- }
101
- }
102
- this._resolvedNamesAndSymbols = result;
103
- return result;
104
- };
105
- /**
106
- Returns whether an Enum contains a specified symbol.
107
- > let symbol = DayOfWeek.Friday;
108
- > if (DayOfWeek.contains(symbol)) {
109
- > // do something
110
- > }
111
- @param sym - Object or symbol to test.
112
- @return Whether this Enum contains the specified symbol.
113
- **/
114
- BreezeEnum.contains = function (sym) {
115
- if (!(sym instanceof BreezeEnum)) {
116
- return false;
117
- }
118
- return this[sym.name] != null;
119
- };
120
- // /**
121
- // Checks if an object is an Enum 'symbol'. Use the 'contains' method instead of this one
122
- // if you want to test for a specific Enum.
123
- // > if (Enum.isSymbol(DayOfWeek.Wednesday)) {
124
- // > // do something ...
125
- // > };
126
- // **/
127
- // static isSymbol(obj: any) {
128
- // return obj instanceof BreezeEnum;
129
- // };
130
- /** Returns the string name of this Enum */
131
- BreezeEnum.prototype.toString = function () {
132
- return this.name;
133
- };
134
- /** Return enum name and symbol name */
135
- BreezeEnum.prototype.toJSON = function () {
136
- return {
137
- _$typeName: this['_$typeName'] || this.constructor.name,
138
- name: this.name
139
- };
140
- };
141
- return BreezeEnum;
142
- }());
143
- export { BreezeEnum };
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXdDRTtBQUNGO0lBU0UsT0FBTztJQUNQLG9CQUFZLGFBQXNCO1FBQWxDLGlCQUlDO1FBSEMsSUFBSSxhQUFhLEVBQUU7WUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxLQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUE5QixDQUE4QixDQUFDLENBQUM7U0FDN0U7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLHFCQUFVLEdBQWpCO1FBQ0UsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsRUFBRSxDQUFDLE1BQU0sRUFBVCxDQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLG1CQUFRLEdBQWY7UUFDRSxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsSUFBSSxFQUFQLENBQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBUSxHQUFmLFVBQWdCLElBQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSx5QkFBYyxHQUFyQjtRQUNFLElBQUksSUFBSSxDQUFDLHdCQUF3QjtZQUFFLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3hFLElBQUksTUFBTSxHQUEwQyxFQUFFLENBQUM7UUFFdkQsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxZQUFZLFVBQVUsRUFBRTtvQkFDOUIsTUFBTSxDQUFDLElBQUksQ0FBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO2lCQUNqQjthQUNGO1NBQ0Y7UUFDRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLG1CQUFRLEdBQWYsVUFBZ0IsR0FBZTtRQUM3QixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksVUFBVSxDQUFDLEVBQUU7WUFDaEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUdELE1BQU07SUFDTiwwRkFBMEY7SUFDMUYsNENBQTRDO0lBQzVDLGtEQUFrRDtJQUNsRCw4QkFBOEI7SUFDOUIsV0FBVztJQUNYLE1BQU07SUFDTiw4QkFBOEI7SUFDOUIsc0NBQXNDO0lBQ3RDLEtBQUs7SUFFTCwyQ0FBMkM7SUFDM0MsNkJBQVEsR0FBUjtRQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLDJCQUFNLEdBQU47UUFDRSxPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSyxJQUFJLENBQUMsV0FBbUIsQ0FBQyxJQUFJO1lBQ2hFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVILGlCQUFDO0FBQUQsQ0FBQyxBQTlHRCxJQThHQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAyMDEyLTIwMjMgSWRlYUJsYWRlLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgXHJcbiAqIFVzZSwgcmVwcm9kdWN0aW9uLCBkaXN0cmlidXRpb24sIGFuZCBtb2RpZmljYXRpb24gb2YgdGhpcyBjb2RlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBcclxuICogY29uZGl0aW9ucyBvZiB0aGUgSWRlYUJsYWRlIEJyZWV6ZSBsaWNlbnNlLCBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5icmVlemVqcy5jb20vbGljZW5zZVxyXG4gKlxyXG4gKiBBdXRob3I6IEpheSBUcmFiYW5kXHJcbiAqL1xyXG5cclxuLyoqXHJcbkJhc2UgY2xhc3MgZm9yIGFsbCBCcmVlemUgZW51bWVyYXRpb25zLCBzdWNoIGFzIEVudGl0eVN0YXRlLCBEYXRhVHlwZSwgRmV0Y2hTdHJhdGVneSwgTWVyZ2VTdHJhdGVneSBldGMuXHJcbkEgQnJlZXplIEVudW0gaXMgYSBuYW1lc3BhY2VkIHNldCBvZiBjb25zdGFudCB2YWx1ZXMuICBFYWNoIEVudW0gY29uc2lzdHMgb2YgYSBncm91cCBvZiByZWxhdGVkIGNvbnN0YW50cywgY2FsbGVkICdzeW1ib2xzJy5cclxuVW5saWtlIGVudW1zIGluIHNvbWUgb3RoZXIgZW52aXJvbm1lbnRzLCBlYWNoICdzeW1ib2wnIGNhbiBoYXZlIGJvdGggbWV0aG9kcyBhbmQgcHJvcGVydGllcy5cclxuPiAgICAgY2xhc3MgRGF5T2ZXZWVrIGV4dGVuZHMgQnJlZXplRW51bSB7XHJcbj4gICAgICAgZGF5SW5kZXg6IG51bWJlcjtcclxuPiAgICAgICBpc1dlZWtlbmQ/OiBib29sZWFuO1xyXG4+ICAgICAgIG5leHREYXkoKSB7XHJcbj4gICAgICAgICBsZXQgbmV4dEluZGV4ID0gKHRoaXMuZGF5SW5kZXggKyAxKSAlIDc7XHJcbj4gICAgICAgICByZXR1cm4gRGF5T2ZXZWVrLmdldFN5bWJvbHMoKVtuZXh0SW5kZXhdO1xyXG4+ICAgICAgIH1cclxuPlxyXG4+ICAgICAgIHN0YXRpYyBNb25kYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiAwfSk7XHJcbj4gICAgICAgc3RhdGljIFR1ZXNkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiAxIH0pO1xyXG4+ICAgICAgIHN0YXRpYyBXZWRuZXNkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiAyIH0pO1xyXG4+ICAgICAgIHN0YXRpYyBUaHVyc2RheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDMgfSk7XHJcbj4gICAgICAgc3RhdGljIEZyaWRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDQgfSk7XHJcbj4gICAgICAgc3RhdGljIFNhdHVyZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogNSwgaXNXZWVrZW5kOiB0cnVlIH0pO1xyXG4+ICAgICAgIHN0YXRpYyBTdW5kYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiA2LCBpc1dlZWtlbmQ6IHRydWUgfSk7XHJcbj4gICAgIH1cclxuPlxyXG4+ICAgICBkZXNjcmliZShcIkRheU9mV2Vla1wiLCAoKSA9PiB7XHJcbj4gICAgICAgdGVzdChcInNob3VsZCBzdXBwb3J0IGZ1bGwgZW51bSBjYXBhYmlsaXRpZXNcIiwgZnVuY3Rpb24oKSB7XHJcbj4gICAgICAgICAvLyAvLyBjdXN0b20gbWV0aG9kc1xyXG4+ICAgICAgICAgbGV0IGRvd1N5bWJvbHMgPSBEYXlPZldlZWsuZ2V0U3ltYm9scygpO1xyXG4+ICAgICAgICAgZXhwZWN0KGRvd1N5bWJvbHMubGVuZ3RoKS50b0JlKDcpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5Nb25kYXkubmV4dERheSgpKS50b0JlKERheU9mV2Vlay5UdWVzZGF5KTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuU3VuZGF5Lm5leHREYXkoKSkudG9CZShEYXlPZldlZWsuTW9uZGF5KTtcclxuPiAgICAgICAvLyAvLyBjdXN0b20gcHJvcGVydGllc1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5UdWVzZGF5LmlzV2Vla2VuZCkudG9CZSh1bmRlZmluZWQpO1xyXG4+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5TYXR1cmRheS5pc1dlZWtlbmQpLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgLy8gLy8gU3RhbmRhcmQgZW51bSBjYXBhYmlsaXRpZXNcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuVGh1cnNkYXkgaW5zdGFuY2VvZiBEYXlPZldlZWspLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgICBleHBlY3QoQnJlZXplRW51bS5pc1N5bWJvbChEYXlPZldlZWsuV2VkbmVzZGF5KSkudG9CZSh0cnVlKTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuY29udGFpbnMoRGF5T2ZXZWVrLlRodXJzZGF5KSkudG9CZSh0cnVlKTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuRnJpZGF5LnRvU3RyaW5nKCkpLnRvQmUoXCJGcmlkYXlcIik7XHJcbj4gICAgICAgfSk7XHJcbj4gICB9KTtcclxuTm90ZSB0aGF0IHdlIGhhdmUgRXJyb3JbJ3gnXSA9IC4uLiBpbiBzb21lIHBsYWNlcyBpbiB0aGUgY29kZSB0byBwcmV2ZW50IFRlcnNlciBmcm9tIG9wdGltaXppbmcgb3V0IHNvbWUgaW1wb3J0YW50IGNhbGxzLlxyXG5AZHluYW1pY1xyXG4qL1xyXG5leHBvcnQgY2xhc3MgQnJlZXplRW51bSB7XHJcbiAgLy8gLy8gVE9ETzogdGhpbmsgYWJvdXQgQ29tcG9zaXRlRW51bSAoZmxhZ3MgaW1wbCkuXHJcbiAgLyoqIFRoZSBuYW1lIG9mIHRoaXMgc3ltYm9sICovXHJcbiAgZGVjbGFyZSBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFR5cGUgb2YgdGhlIGVudW07IHNldCBpbiBwcm90b3R5cGUgb2YgZWFjaCBlbnVtICovXHJcbiAgZGVjbGFyZSBfJHR5cGVOYW1lOiBzdHJpbmc7XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgc3RhdGljIF9yZXNvbHZlZE5hbWVzQW5kU3ltYm9sczogeyBuYW1lOiBzdHJpbmcsIHN5bWJvbDogQnJlZXplRW51bSB9W107XHJcblxyXG4gIC8qKiAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzT2JqPzogT2JqZWN0KSB7XHJcbiAgICBpZiAocHJvcGVydGllc09iaikge1xyXG4gICAgICBPYmplY3Qua2V5cyhwcm9wZXJ0aWVzT2JqKS5mb3JFYWNoKChrZXkpID0+IHRoaXNba2V5XSA9IHByb3BlcnRpZXNPYmpba2V5XSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGFsbCBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICA+ICAgICBsZXQgc3ltYm9scyA9IERheU9mV2Vlay5nZXRTeW1ib2xzKCk7XHJcbiAgQHJldHVybiBBbGwgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgKiovXHJcbiAgc3RhdGljIGdldFN5bWJvbHMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU3ltYm9scygpLm1hcChrcyA9PiBrcy5zeW1ib2wpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB0aGUgbmFtZXMgb2YgYWxsIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gID4gICAgIGxldCBzeW1ib2xzID0gRGF5T2ZXZWVrLmdldE5hbWVzKCk7XHJcbiAgQHJldHVybiAgQWxsIG9mIHRoZSBuYW1lcyBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICAqKi9cclxuICBzdGF0aWMgZ2V0TmFtZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU3ltYm9scygpLm1hcChrcyA9PiBrcy5uYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgYW4gRW51bSBzeW1ib2wgZ2l2ZW4gaXRzIG5hbWUuXHJcbiAgPiAgICAgbGV0IGRheU9mV2VlayA9IERheU9mV2Vlay5mcm9tKFwiVGh1cnNkYXlcIik7XHJcbiAgPiAgICAgLy8gbm93ZGF5T2ZXZWVrID09PSBEYXlPZldlZWsuVGh1cnNkYXlcclxuICBAcGFyYW0gbmFtZSAtIE5hbWUgZm9yIHdoaWNoIGFuIGVudW0gc3ltYm9sIHNob3VsZCBiZSByZXR1cm5lZC5cclxuICBAcmV0dXJuIFRoZSBzeW1ib2wgdGhhdCBtYXRjaGVzIHRoZSBuYW1lIG9yICd1bmRlZmluZWQnIGlmIG5vdCBmb3VuZC5cclxuICAqKi9cclxuICBzdGF0aWMgZnJvbU5hbWUobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpc1tuYW1lXTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFNlYWxzIHRoaXMgZW51bSBzbyB0aGF0IG5vIG1vcmUgc3ltYm9scyBtYXkgYmUgYWRkZWQgdG8gaXQuIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGFsbCBzeW1ib2xzXHJcbiAgaGF2ZSBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gdGhlIEVudW0uIFRoaXMgbWV0aG9kIGFsc28gc2V0cyB0aGUgJ25hbWUnIHByb3BlcnR5IG9uIGVhY2ggb2YgdGhlIHN5bWJvbHMuXHJcbiAgPiAgICAgRGF5T2ZXZWVrLnJlc29sdmVTeW1ib2xzKCk7XHJcbiAgKiovXHJcbiAgc3RhdGljIHJlc29sdmVTeW1ib2xzKCkge1xyXG4gICAgaWYgKHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzKSByZXR1cm4gdGhpcy5fcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHM7XHJcbiAgICBsZXQgcmVzdWx0OiB7bmFtZTogc3RyaW5nLCBzeW1ib2w6IEJyZWV6ZUVudW0gfVtdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMpIHtcclxuICAgICAgaWYgKHRoaXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGxldCBzeW1iID0gdGhpc1trZXldO1xyXG4gICAgICAgIGlmIChzeW1iIGluc3RhbmNlb2YgQnJlZXplRW51bSkge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goIHsgbmFtZToga2V5LCBzeW1ib2w6IHN5bWIgfSk7XHJcbiAgICAgICAgICB0aGlzW2tleV0gPSBzeW1iO1xyXG4gICAgICAgICAgc3ltYi5uYW1lID0ga2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5fcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHMgPSByZXN1bHQ7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGFuIEVudW0gY29udGFpbnMgYSBzcGVjaWZpZWQgc3ltYm9sLlxyXG4gID4gICAgIGxldCBzeW1ib2wgPSBEYXlPZldlZWsuRnJpZGF5O1xyXG4gID4gICAgIGlmIChEYXlPZldlZWsuY29udGFpbnMoc3ltYm9sKSkge1xyXG4gID4gICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICA+ICAgICB9XHJcbiAgQHBhcmFtIHN5bSAtIE9iamVjdCBvciBzeW1ib2wgdG8gdGVzdC5cclxuICBAcmV0dXJuIFdoZXRoZXIgdGhpcyBFbnVtIGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgc3ltYm9sLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBjb250YWlucyhzeW06IEJyZWV6ZUVudW0pIHtcclxuICAgIGlmICghKHN5bSBpbnN0YW5jZW9mIEJyZWV6ZUVudW0pKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpc1tzeW0ubmFtZV0gIT0gbnVsbDtcclxuICB9XHJcblxyXG5cclxuICAvLyAvKipcclxuICAvLyBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIEVudW0gJ3N5bWJvbCcuIFVzZSB0aGUgJ2NvbnRhaW5zJyBtZXRob2QgaW5zdGVhZCBvZiB0aGlzIG9uZSBcclxuICAvLyBpZiB5b3Ugd2FudCB0byB0ZXN0IGZvciBhIHNwZWNpZmljIEVudW0uIFxyXG4gIC8vID4gICAgIGlmIChFbnVtLmlzU3ltYm9sKERheU9mV2Vlay5XZWRuZXNkYXkpKSB7XHJcbiAgLy8gPiAgICAgICAvLyBkbyBzb21ldGhpbmcgLi4uXHJcbiAgLy8gPiAgICAgfTtcclxuICAvLyAqKi9cclxuICAvLyBzdGF0aWMgaXNTeW1ib2wob2JqOiBhbnkpIHtcclxuICAvLyAgIHJldHVybiBvYmogaW5zdGFuY2VvZiBCcmVlemVFbnVtO1xyXG4gIC8vIH07XHJcblxyXG4gIC8qKiBSZXR1cm5zIHRoZSBzdHJpbmcgbmFtZSBvZiB0aGlzIEVudW0gKi9cclxuICB0b1N0cmluZygpIHtcclxuICAgIHJldHVybiB0aGlzLm5hbWU7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJuIGVudW0gbmFtZSBhbmQgc3ltYm9sIG5hbWUgKi9cclxuICB0b0pTT04oKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBfJHR5cGVOYW1lOiB0aGlzWydfJHR5cGVOYW1lJ10gfHwgKHRoaXMuY29uc3RydWN0b3IgYXMgYW55KS5uYW1lLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWVcclxuICAgIH07XHJcbiAgfVxyXG5cclxufVxyXG5cclxuXHJcbiJdfQ==
package/esm5/src/event.js DELETED
@@ -1,259 +0,0 @@
1
- import { core } from './core';
2
- import { assertParam } from './assert-param';
3
- function publishCore(that, data, errorCallback) {
4
- var 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
- var BreezeEvent = /** @class */ (function () {
35
- /**
36
- Constructor for an Event
37
- > salaryEvent = new BreezeEvent("salaryEvent", person);
38
- @param name - The name of the event.
39
- @param publisher - The object that will be doing the publication. i.e. the object to which this event is attached.
40
- @param defaultErrorCallback - Function to call when an error occurs during subscription execution.
41
- If omitted then subscriber notification failures will be ignored.
42
- **/
43
- function BreezeEvent(name, publisher, defaultErrorCallback) {
44
- /**
45
- Unsubscribe from this event.
46
- > // Assume order is a preexisting 'order' entity
47
- > let token = order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
48
- > // do something
49
- > });
50
- > // sometime later
51
- > order.entityAspect.propertyChanged.unsubscribe(token);
52
- @param unsubKey - The value returned from the 'subscribe' method may be used to unsubscribe here.
53
- @return Whether unsubscription occured. This will return false if already unsubscribed or if the key simply
54
- cannot be found.
55
- **/
56
- this.unsubscribe = function (unsubKey) {
57
- if (!this._subscribers)
58
- return false;
59
- var subs = this._subscribers;
60
- var ix = core.arrayIndexOf(subs, function (s) {
61
- return s.unsubKey === unsubKey;
62
- });
63
- if (ix !== -1) {
64
- subs.splice(ix, 1);
65
- if (subs.length === 0) {
66
- this._subscribers = null;
67
- }
68
- return true;
69
- }
70
- else {
71
- return false;
72
- }
73
- };
74
- assertParam(name, "eventName").isNonEmptyString().check();
75
- assertParam(publisher, "publisher").isObject().check();
76
- this.name = name;
77
- // register the name
78
- BreezeEvent.__eventNameMap[name] = true;
79
- this.publisher = publisher;
80
- if (defaultErrorCallback) {
81
- this._defaultErrorCallback = defaultErrorCallback;
82
- }
83
- }
84
- /**
85
- Publish data for this event.
86
- > // Assume 'salaryEvent' is previously constructed Event
87
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 });
88
-
89
- This event can also be published asychronously
90
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true);
91
-
92
- And we can add a handler in case the subscriber 'mishandles' the event.
93
- > salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true, function(error) {
94
- > // do something with the 'error' object
95
- > });
96
- @param data - Data to publish
97
- @param publishAsync - (default=false) Whether to publish asynchonously or not.
98
- @param errorCallback - Function to be called for any errors that occur during publication. If omitted,
99
- errors will be eaten.
100
- @return false if event is disabled; true otherwise.
101
- **/
102
- BreezeEvent.prototype.publish = function (data, publishAsync, errorCallback) {
103
- if (publishAsync === void 0) { publishAsync = false; }
104
- if (!BreezeEvent._isEnabled(this.name, this.publisher))
105
- return false;
106
- if (publishAsync === true) {
107
- setTimeout(publishCore, 0, this, data, errorCallback);
108
- }
109
- else {
110
- publishCore(this, data, errorCallback);
111
- }
112
- return true;
113
- };
114
- /**
115
- Publish data for this event asynchronously.
116
- > // Assume 'salaryEvent' is previously constructed Event
117
- > salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 });
118
-
119
- And we can add a handler in case the subscriber 'mishandles' the event.
120
- > salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 }, function(error) {
121
- > // do something with the 'error' object
122
- > });
123
- @param data - Data to publish
124
- @param errorCallback - Function to be called for any errors that occur during publication. If omitted,
125
- errors will be eaten.
126
- **/
127
- BreezeEvent.prototype.publishAsync = function (data, errorCallback) {
128
- this.publish(data, true, errorCallback);
129
- };
130
- /**
131
- Subscribe to this event.
132
- > // Assume 'salaryEvent' is previously constructed Event
133
- > salaryEvent.subscribe(function (eventArgs) {
134
- > if (eventArgs.eventType === "payRaise") {
135
- > // do something
136
- > }
137
- > });
138
-
139
- There are several built in Breeze events, such as [[EntityAspect.propertyChanged]], [[EntityAspect.validationErrorsChanged]] as well.
140
- > // Assume order is a preexisting 'order' entity
141
- > order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
142
- > if ( pcEvent.propertyName === "OrderDate") {
143
- > // do something
144
- > }
145
- > });
146
- @param callback- Function to be called whenever 'data' is published for this event.
147
- @param callback.data - {Object} Whatever 'data' was published. This should be documented on the specific event.
148
- @return This is a key for 'unsubscription'. It can be passed to the 'unsubscribe' method.
149
- **/
150
- BreezeEvent.prototype.subscribe = function (callback) {
151
- if (!this._subscribers) {
152
- this._subscribers = [];
153
- }
154
- var unsubKey = BreezeEvent.__nextUnsubKey;
155
- this._subscribers.push({ unsubKey: unsubKey, callback: callback });
156
- ++BreezeEvent.__nextUnsubKey;
157
- return unsubKey;
158
- };
159
- /** remove all subscribers */
160
- BreezeEvent.prototype.clear = function () {
161
- this._subscribers = null;
162
- };
163
- /** event bubbling - document later. */
164
- // null or undefined 'getParentFn' means Event does not need to bubble i.e. that it is always enabled - .
165
- BreezeEvent.bubbleEvent = function (target, getParentFn) {
166
- target._getEventParent = getParentFn || null;
167
- };
168
- /**
169
- Enables or disables the named event for an object and all of its children.
170
- > BreezeEvent.enable(“propertyChanged”, myEntityManager, false)
171
-
172
- will disable all EntityAspect.propertyChanged events within a EntityManager.
173
- > BreezeEvent.enable(“propertyChanged”, myEntityManager, true)
174
-
175
- will enable all EntityAspect.propertyChanged events within a EntityManager.
176
- > BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, false)
177
-
178
- will disable EntityAspect.propertyChanged events for a specific entity.
179
- > BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, null)
180
-
181
- will removes any enabling / disabling at the entity aspect level so now any 'Event.enable' calls at the EntityManager level,
182
- made either previously or in the future, will control notification.
183
- > BreezeEvent.enable(“validationErrorsChanged”, myEntityManager, function(em) {
184
- > return em.customTag === “blue”;
185
- > })
186
-
187
-
188
- will either enable or disable myEntityManager based on the current value of a ‘customTag’ property on myEntityManager.
189
- Note that this is dynamic, changing the customTag value will cause events to be enabled or disabled immediately.
190
- @param eventName - The name of the event.
191
- @param target - The object at which enabling or disabling will occur. All event notifications that occur to this object or
192
- children of this object will be enabled or disabled.
193
- @param isEnabled - A boolean, a null or a function that returns either a boolean or a null.
194
- **/
195
- BreezeEvent.enable = function (eventName, obj, isEnabled) {
196
- assertParam(eventName, "eventName").isNonEmptyString().check();
197
- assertParam(obj, "obj").isObject().check();
198
- assertParam(isEnabled, "isEnabled").isBoolean().isOptional().or().isFunction().check();
199
- var ob = obj;
200
- if (!ob._$eventMap) {
201
- ob._$eventMap = {};
202
- }
203
- ob._$eventMap[eventName] = isEnabled;
204
- };
205
- /**
206
- Returns whether for a specific event and a specific object and its children, notification is enabled or disabled or not set.
207
- > BreezeEvent.isEnabled(“propertyChanged”, myEntityManager)
208
- >
209
- @param eventName - The name of the event.
210
- @param target - The object for which we want to know if notifications are enabled.
211
- @return A null is returned if this value has not been set.
212
- **/
213
- BreezeEvent.isEnabled = function (eventName, obj) {
214
- assertParam(eventName, "eventName").isNonEmptyString().check();
215
- assertParam(obj, "obj").isObject().check();
216
- // null is ok - it just means that the object is at the top level.
217
- if (obj._getEventParent === undefined) {
218
- throw new Error("This object does not support event enabling/disabling");
219
- }
220
- // return ctor._isEnabled(getFullEventName(eventName), obj);
221
- return BreezeEvent._isEnabled(eventName, 3);
222
- };
223
- /** @hidden @internal */
224
- BreezeEvent.__eventNameMap = {};
225
- /** @hidden @internal */
226
- BreezeEvent.__nextUnsubKey = 1;
227
- /** @hidden @internal */
228
- BreezeEvent._isEnabled = function (eventName, obj) {
229
- var isEnabled = null;
230
- var ob = obj;
231
- var eventMap = ob._$eventMap;
232
- if (eventMap) {
233
- isEnabled = eventMap[eventName];
234
- }
235
- if (isEnabled != null) {
236
- if (typeof isEnabled === 'function') {
237
- return !!isEnabled(obj);
238
- }
239
- else {
240
- return !!isEnabled;
241
- }
242
- }
243
- else {
244
- var parent_1 = ob._getEventParent && ob._getEventParent();
245
- if (parent_1) {
246
- return !!this._isEnabled(eventName, parent_1);
247
- }
248
- else {
249
- // default if not explicitly disabled.
250
- return true;
251
- }
252
- }
253
- };
254
- return BreezeEvent;
255
- }());
256
- export { BreezeEvent };
257
- // legacy support - deliberately not typed
258
- core.Event = BreezeEvent;
259
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFNBQVMsV0FBVyxDQUFJLElBQW9CLEVBQUUsSUFBTyxFQUFFLGFBQWlDO0lBQ3RGLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDcEMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM5QixnQ0FBZ0M7SUFDaEMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDN0IsSUFBSTtZQUNGLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLENBQUMsQ0FBQyxPQUFPLEdBQUcsOEJBQThCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2RCxJQUFJLGFBQWEsRUFBRTtnQkFDakIsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2xCO2lCQUFNLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFO2dCQUNyQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0wsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekI7U0FDRjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQUMsQ0FBUTtJQUNwQyx1QkFBdUI7SUFDdkIsc0JBQXNCO0FBQ3hCLENBQUM7QUFTRDs7O0dBR0c7QUFDSDtJQWdCRTs7Ozs7OztPQU9HO0lBQ0gscUJBQVksSUFBWSxFQUFFLFNBQWlCLEVBQUUsb0JBQXdDO1FBMkZyRjs7Ozs7Ozs7Ozs7V0FXRztRQUNILGdC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eyBjb3JlIH0gZnJvbSAnLi9jb3JlJztcclxuaW1wb3J0IHsgYXNzZXJ0UGFyYW0gfSBmcm9tICcuL2Fzc2VydC1wYXJhbSc7XHJcblxyXG5mdW5jdGlvbiBwdWJsaXNoQ29yZTxUPih0aGF0OiBCcmVlemVFdmVudDxUPiwgZGF0YTogVCwgZXJyb3JDYWxsYmFjaz86IChlOiBFcnJvcikgPT4gYW55KSB7XHJcbiAgbGV0IHN1YnNjcmliZXJzID0gdGhhdC5fc3Vic2NyaWJlcnM7XHJcbiAgaWYgKCFzdWJzY3JpYmVycykgcmV0dXJuIHRydWU7XHJcbiAgLy8gc3Vic2NyaWJlcnMgZnJvbSBvdXRlciBzY29wZS5cclxuICBzdWJzY3JpYmVycy5mb3JFYWNoKGZ1bmN0aW9uIChzKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBzLmNhbGxiYWNrKGRhdGEpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBlLmNvbnRleHQgPSBcInVuYWJsZSB0byBwdWJsaXNoIG9uIHRvcGljOiBcIiArIHRoYXQubmFtZTtcclxuICAgICAgaWYgKGVycm9yQ2FsbGJhY2spIHtcclxuICAgICAgICBlcnJvckNhbGxiYWNrKGUpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoYXQuX2RlZmF1bHRFcnJvckNhbGxiYWNrKSB7XHJcbiAgICAgICAgdGhhdC5fZGVmYXVsdEVycm9yQ2FsbGJhY2soZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZmFsbGJhY2tFcnJvckhhbmRsZXIoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZmFsbGJhY2tFcnJvckhhbmRsZXIoZTogRXJyb3IpIHtcclxuICAvLyBUT0RPOiBtYXliZSBsb2cgdGhpc1xyXG4gIC8vIGZvciBub3cgZG8gbm90aGluZztcclxufVxyXG5cclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmlwdGlvbiB7XHJcbiAgdW5zdWJLZXk6IG51bWJlcjtcclxuICBjYWxsYmFjazogKGRhdGE6IGFueSkgPT4gYW55O1xyXG59XHJcblxyXG4vKipcclxuQ2xhc3MgdG8gc3VwcG9ydCBiYXNpYyBldmVudCBwdWJsaWNhdGlvbiBhbmQgc3Vic2NyaXB0aW9uIHNlbWFudGljcy5cclxuQGR5bmFtaWNcclxuKiovXHJcbmV4cG9ydCBjbGFzcyBCcmVlemVFdmVudDxUPiB7XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgc3RhdGljIF9fZXZlbnROYW1lTWFwID0ge307XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgc3RhdGljIF9fbmV4dFVuc3ViS2V5ID0gMTtcclxuICAvKiogVGhlIG5hbWUgb2YgdGhpcyBFdmVudCAqL1xyXG4gIG5hbWU6IHN0cmluZztcclxuICAvKiogVGhlIG9iamVjdCBkb2luZyB0aGUgcHVibGljYXRpb24uIGkuZS4gdGhlIG9iamVjdCB0byB3aGljaCB0aGlzIGV2ZW50IGlzIGF0dGFjaGVkLiAqL1xyXG4gIHB1Ymxpc2hlcjogT2JqZWN0O1xyXG5cclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfc3Vic2NyaWJlcnM6IFN1YnNjcmlwdGlvbltdO1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIF9kZWZhdWx0RXJyb3JDYWxsYmFjazogKGU6IEVycm9yKSA9PiBhbnk7XHJcblxyXG5cclxuICAvKipcclxuICBDb25zdHJ1Y3RvciBmb3IgYW4gRXZlbnRcclxuICA+ICAgICBzYWxhcnlFdmVudCA9IG5ldyBCcmVlemVFdmVudChcInNhbGFyeUV2ZW50XCIsIHBlcnNvbik7XHJcbiAgQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXHJcbiAgQHBhcmFtIHB1Ymxpc2hlciAtIFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlIGRvaW5nIHRoZSBwdWJsaWNhdGlvbi4gaS5lLiB0aGUgb2JqZWN0IHRvIHdoaWNoIHRoaXMgZXZlbnQgaXMgYXR0YWNoZWQuXHJcbiAgQHBhcmFtIGRlZmF1bHRFcnJvckNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gY2FsbCB3aGVuIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgc3Vic2NyaXB0aW9uIGV4ZWN1dGlvbi4gXHJcbiAgSWYgb21pdHRlZCB0aGVuIHN1YnNjcmliZXIgbm90aWZpY2F0aW9uIGZhaWx1cmVzIHdpbGwgYmUgaWdub3JlZC5cclxuICAqKi9cclxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHB1Ymxpc2hlcjogT2JqZWN0LCBkZWZhdWx0RXJyb3JDYWxsYmFjaz86IChlOiBFcnJvcikgPT4gYW55KSB7XHJcbiAgICBhc3NlcnRQYXJhbShuYW1lLCBcImV2ZW50TmFtZVwiKS5pc05vbkVtcHR5U3RyaW5nKCkuY2hlY2soKTtcclxuICAgIGFzc2VydFBhcmFtKHB1Ymxpc2hlciwgXCJwdWJsaXNoZXJcIikuaXNPYmplY3QoKS5jaGVjaygpO1xyXG5cclxuICAgIHRoaXMubmFtZSA9IG5hbWU7XHJcbiAgICAvLyByZWdpc3RlciB0aGUgbmFtZVxyXG4gICAgQnJlZXplRXZlbnQuX19ldmVudE5hbWVNYXBbbmFtZV0gPSB0cnVlO1xyXG4gICAgdGhpcy5wdWJsaXNoZXIgPSBwdWJsaXNoZXI7XHJcbiAgICBpZiAoZGVmYXVsdEVycm9yQ2FsbGJhY2spIHtcclxuICAgICAgdGhpcy5fZGVmYXVsdEVycm9yQ2FsbGJhY2sgPSBkZWZhdWx0RXJyb3JDYWxsYmFjaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFB1Ymxpc2ggZGF0YSBmb3IgdGhpcyBldmVudC5cclxuICA+ICAgICAgLy8gQXNzdW1lICdzYWxhcnlFdmVudCcgaXMgcHJldmlvdXNseSBjb25zdHJ1Y3RlZCBFdmVudFxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoKCB7IGV2ZW50VHlwZTogXCJwYXlSYWlzZVwiLCBhbW91bnQ6IDEwMCB9KTtcclxuXHJcbiAgVGhpcyBldmVudCBjYW4gYWxzbyBiZSBwdWJsaXNoZWQgYXN5Y2hyb25vdXNseVxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoKCB7IGV2ZW50VHlwZTogXCJwYXlSYWlzZVwiLCBhbW91bnQ6IDEwMCB9LCB0cnVlKTtcclxuXHJcbiAgQW5kIHdlIGNhbiBhZGQgYSBoYW5kbGVyIGluIGNhc2UgdGhlIHN1YnNjcmliZXIgJ21pc2hhbmRsZXMnIHRoZSBldmVudC5cclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaCggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSwgdHJ1ZSwgZnVuY3Rpb24oZXJyb3IpIHtcclxuICA+ICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSAnZXJyb3InIG9iamVjdFxyXG4gID4gICAgICB9KTtcclxuICBAcGFyYW0gZGF0YSAtIERhdGEgdG8gcHVibGlzaFxyXG4gIEBwYXJhbSBwdWJsaXNoQXN5bmMgLSAoZGVmYXVsdD1mYWxzZSkgV2hldGhlciB0byBwdWJsaXNoIGFzeW5jaG9ub3VzbHkgb3Igbm90LlxyXG4gIEBwYXJhbSBlcnJvckNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZvciBhbnkgZXJyb3JzIHRoYXQgb2NjdXIgZHVyaW5nIHB1YmxpY2F0aW9uLiBJZiBvbWl0dGVkLFxyXG4gIGVycm9ycyB3aWxsIGJlIGVhdGVuLlxyXG4gIEByZXR1cm4gZmFsc2UgaWYgZXZlbnQgaXMgZGlzYWJsZWQ7IHRydWUgb3RoZXJ3aXNlLlxyXG4gICoqL1xyXG4gIHB1Ymxpc2goZGF0YTogVCwgcHVibGlzaEFzeW5jOiBib29sZWFuID0gZmFsc2UsIGVycm9yQ2FsbGJhY2s/OiAoZTogRXJyb3IpID0+IGFueSkge1xyXG5cclxuICAgIGlmICghQnJlZXplRXZlbnQuX2lzRW5hYmxlZCh0aGlzLm5hbWUsIHRoaXMucHVibGlzaGVyKSkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGlmIChwdWJsaXNoQXN5bmMgPT09IHRydWUpIHtcclxuICAgICAgc2V0VGltZW91dChwdWJsaXNoQ29yZSwgMCwgdGhpcywgZGF0YSwgZXJyb3JDYWxsYmFjayk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBwdWJsaXNoQ29yZSh0aGlzLCBkYXRhLCBlcnJvckNhbGxiYWNrKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUHVibGlzaCBkYXRhIGZvciB0aGlzIGV2ZW50IGFzeW5jaHJvbm91c2x5LlxyXG4gID4gICAgICAvLyBBc3N1bWUgJ3NhbGFyeUV2ZW50JyBpcyBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIEV2ZW50XHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnB1Ymxpc2hBc3luYyggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSk7XHJcblxyXG4gIEFuZCB3ZSBjYW4gYWRkIGEgaGFuZGxlciBpbiBjYXNlIHRoZSBzdWJzY3JpYmVyICdtaXNoYW5kbGVzJyB0aGUgZXZlbnQuXHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnB1Ymxpc2hBc3luYyggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcclxuICA+ICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyB3aXRoIHRoZSAnZXJyb3InIG9iamVjdFxyXG4gID4gICAgICB9KTtcclxuICBAcGFyYW0gZGF0YSAtIERhdGEgdG8gcHVibGlzaFxyXG4gIEBwYXJhbSBlcnJvckNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIGZvciBhbnkgZXJyb3JzIHRoYXQgb2NjdXIgZHVyaW5nIHB1YmxpY2F0aW9uLiBJZiBvbWl0dGVkLFxyXG4gIGVycm9ycyB3aWxsIGJlIGVhdGVuLlxyXG4gICoqL1xyXG4gIHB1Ymxpc2hBc3luYyhkYXRhOiBULCBlcnJvckNhbGxiYWNrOiAoZTogRXJyb3IpID0+IGFueSkge1xyXG4gICAgdGhpcy5wdWJsaXNoKGRhdGEsIHRydWUsIGVycm9yQ2FsbGJhY2spO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgU3Vic2NyaWJlIHRvIHRoaXMgZXZlbnQuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSAnc2FsYXJ5RXZlbnQnIGlzIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgRXZlbnRcclxuICA+ICAgICAgc2FsYXJ5RXZlbnQuc3Vic2NyaWJlKGZ1bmN0aW9uIChldmVudEFyZ3MpIHtcclxuICA+ICAgICAgICAgIGlmIChldmVudEFyZ3MuZXZlbnRUeXBlID09PSBcInBheVJhaXNlXCIpIHtcclxuICA+ICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICA+ICAgICAgICAgIH1cclxuICA+ICAgICAgfSk7XHJcblxyXG4gIFRoZXJlIGFyZSBzZXZlcmFsIGJ1aWx0IGluIEJyZWV6ZSBldmVudHMsIHN1Y2ggYXMgW1tFbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkXV0sIFtbRW50aXR5QXNwZWN0LnZhbGlkYXRpb25FcnJvcnNDaGFuZ2VkXV0gYXMgd2VsbC5cclxuICA+ICAgICAgLy8gQXNzdW1lIG9yZGVyIGlzIGEgcHJlZXhpc3RpbmcgJ29yZGVyJyBlbnRpdHlcclxuICA+ICAgICAgb3JkZXIuZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5zdWJzY3JpYmUoZnVuY3Rpb24gKHBjRXZlbnQpIHtcclxuICA+ICAgICAgICAgIGlmICggcGNFdmVudC5wcm9wZXJ0eU5hbWUgPT09IFwiT3JkZXJEYXRlXCIpIHtcclxuICA+ICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICA+ICAgICAgICAgIH1cclxuICA+ICAgICAgfSk7XHJcbiAgQHBhcmFtIGNhbGxiYWNrLSBGdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgJ2RhdGEnIGlzIHB1Ymxpc2hlZCBmb3IgdGhpcyBldmVudC5cclxuICBAcGFyYW0gY2FsbGJhY2suZGF0YSAtIHtPYmplY3R9IFdoYXRldmVyICdkYXRhJyB3YXMgcHVibGlzaGVkLiAgVGhpcyBzaG91bGQgYmUgZG9jdW1lbnRlZCBvbiB0aGUgc3BlY2lmaWMgZXZlbnQuXHJcbiAgQHJldHVybiBUaGlzIGlzIGEga2V5IGZvciAndW5zdWJzY3JpcHRpb24nLiAgSXQgY2FuIGJlIHBhc3NlZCB0byB0aGUgJ3Vuc3Vic2NyaWJlJyBtZXRob2QuXHJcbiAgKiovXHJcbiAgc3Vic2NyaWJlKGNhbGxiYWNrOiAoZGF0YTogVCkgPT4gYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuX3N1YnNjcmliZXJzKSB7XHJcbiAgICAgIHRoaXMuX3N1YnNjcmliZXJzID0gW107XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHVuc3ViS2V5ID0gQnJlZXplRXZlbnQuX19uZXh0VW5zdWJLZXk7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVycy5wdXNoKHsgdW5zdWJLZXk6IHVuc3ViS2V5LCBjYWxsYmFjazogY2FsbGJhY2sgfSk7XHJcbiAgICArK0JyZWV6ZUV2ZW50Ll9fbmV4dFVuc3ViS2V5O1xyXG4gICAgcmV0dXJuIHVuc3ViS2V5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgVW5zdWJzY3JpYmUgZnJvbSB0aGlzIGV2ZW50LlxyXG4gID4gICAgICAvLyBBc3N1bWUgb3JkZXIgaXMgYSBwcmVleGlzdGluZyAnb3JkZXInIGVudGl0eVxyXG4gID4gICAgICBsZXQgdG9rZW4gPSBvcmRlci5lbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkLnN1YnNjcmliZShmdW5jdGlvbiAocGNFdmVudCkge1xyXG4gID4gICAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xyXG4gID4gICAgICB9KTtcclxuICA+ICAgICAgLy8gc29tZXRpbWUgbGF0ZXJcclxuICA+ICAgICAgb3JkZXIuZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC51bnN1YnNjcmliZSh0b2tlbik7XHJcbiAgQHBhcmFtIHVuc3ViS2V5IC0gVGhlIHZhbHVlIHJldHVybmVkIGZyb20gdGhlICdzdWJzY3JpYmUnIG1ldGhvZCBtYXkgYmUgdXNlZCB0byB1bnN1YnNjcmliZSBoZXJlLlxyXG4gIEByZXR1cm4gV2hldGhlciB1bnN1YnNjcmlwdGlvbiBvY2N1cmVkLiBUaGlzIHdpbGwgcmV0dXJuIGZhbHNlIGlmIGFscmVhZHkgdW5zdWJzY3JpYmVkIG9yIGlmIHRoZSBrZXkgc2ltcGx5XHJcbiAgY2Fubm90IGJlIGZvdW5kLlxyXG4gICoqL1xyXG4gIHVuc3Vic2NyaWJlID0gZnVuY3Rpb24gKHVuc3ViS2V5OiBudW1iZXIpIHtcclxuICAgIGlmICghdGhpcy5fc3Vic2NyaWJlcnMpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBzdWJzID0gdGhpcy5fc3Vic2NyaWJlcnM7XHJcbiAgICBsZXQgaXggPSBjb3JlLmFycmF5SW5kZXhPZihzdWJzLCBmdW5jdGlvbiAocykge1xyXG4gICAgICByZXR1cm4gcy51bnN1YktleSA9PT0gdW5zdWJLZXk7XHJcbiAgICB9KTtcclxuICAgIGlmIChpeCAhPT0gLTEpIHtcclxuICAgICAgc3Vicy5zcGxpY2UoaXgsIDEpO1xyXG4gICAgICBpZiAoc3Vicy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLl9zdWJzY3JpYmVycyA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgLyoqIHJlbW92ZSBhbGwgc3Vic2NyaWJlcnMgKi9cclxuICBjbGVhcigpIHtcclxuICAgIHRoaXMuX3N1YnNjcmliZXJzID0gPGFueT5udWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqIGV2ZW50IGJ1YmJsaW5nIC0gZG9jdW1lbnQgbGF0ZXIuICovXHJcblxyXG4gIC8vIG51bGwgb3IgdW5kZWZpbmVkICdnZXRQYXJlbnRGbicgbWVhbnMgRXZlbnQgZG9lcyBub3QgbmVlZCB0byBidWJibGUgaS5lLiB0aGF0IGl0IGlzIGFsd2F5cyBlbmFibGVkIC0gLlxyXG4gIHN0YXRpYyBidWJibGVFdmVudCh0YXJnZXQ6IGFueSwgZ2V0UGFyZW50Rm4/OiAoKCkgPT4gYW55KSkge1xyXG4gICAgdGFyZ2V0Ll9nZXRFdmVudFBhcmVudCA9IGdldFBhcmVudEZuIHx8IG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBuYW1lZCBldmVudCBmb3IgYW4gb2JqZWN0IGFuZCBhbGwgb2YgaXRzIGNoaWxkcmVuLlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eU1hbmFnZXIsIGZhbHNlKVxyXG5cclxuICB3aWxsIGRpc2FibGUgYWxsIEVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQgZXZlbnRzIHdpdGhpbiBhIEVudGl0eU1hbmFnZXIuXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmVuYWJsZSjigJxwcm9wZXJ0eUNoYW5nZWTigJ0sIG15RW50aXR5TWFuYWdlciwgdHJ1ZSlcclxuXHJcbiAgd2lsbCBlbmFibGUgYWxsIEVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQgZXZlbnRzIHdpdGhpbiBhIEVudGl0eU1hbmFnZXIuXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmVuYWJsZSjigJxwcm9wZXJ0eUNoYW5nZWTigJ0sIG15RW50aXR5LmVudGl0eUFzcGVjdCwgZmFsc2UpXHJcblxyXG4gIHdpbGwgZGlzYWJsZSBFbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkIGV2ZW50cyBmb3IgYSBzcGVjaWZpYyBlbnRpdHkuXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmVuYWJsZSjigJxwcm9wZXJ0eUNoYW5nZWTigJ0sIG15RW50aXR5LmVudGl0eUFzcGVjdCwgbnVsbClcclxuXHJcbiAgd2lsbCByZW1vdmVzIGFueSBlbmFibGluZyAvIGRpc2FibGluZyBhdCB0aGUgZW50aXR5IGFzcGVjdCBsZXZlbCBzbyBub3cgYW55ICdFdmVudC5lbmFibGUnIGNhbGxzIGF0IHRoZSBFbnRpdHlNYW5hZ2VyIGxldmVsLFxyXG4gIG1hZGUgZWl0aGVyIHByZXZpb3VzbHkgb3IgaW4gdGhlIGZ1dHVyZSwgd2lsbCBjb250cm9sIG5vdGlmaWNhdGlvbi5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuZW5hYmxlKOKAnHZhbGlkYXRpb25FcnJvcnNDaGFuZ2Vk4oCdLCBteUVudGl0eU1hbmFnZXIsIGZ1bmN0aW9uKGVtKSB7XHJcbiAgPiAgICAgICAgICByZXR1cm4gZW0uY3VzdG9tVGFnID09PSDigJxibHVl4oCdO1xyXG4gID4gICAgICB9KVxyXG5cclxuXHJcbiAgd2lsbCBlaXRoZXIgZW5hYmxlIG9yIGRpc2FibGUgbXlFbnRpdHlNYW5hZ2VyIGJhc2VkIG9uIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEg4oCYY3VzdG9tVGFn4oCZIHByb3BlcnR5IG9uIG15RW50aXR5TWFuYWdlci5cclxuICBOb3RlIHRoYXQgdGhpcyBpcyBkeW5hbWljLCBjaGFuZ2luZyB0aGUgY3VzdG9tVGFnIHZhbHVlIHdpbGwgY2F1c2UgZXZlbnRzIHRvIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQgaW1tZWRpYXRlbHkuXHJcbiAgQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cclxuICBAcGFyYW0gdGFyZ2V0IC0gVGhlIG9iamVjdCBhdCB3aGljaCBlbmFibGluZyBvciBkaXNhYmxpbmcgd2lsbCBvY2N1ci4gIEFsbCBldmVudCBub3RpZmljYXRpb25zIHRoYXQgb2NjdXIgdG8gdGhpcyBvYmplY3Qgb3JcclxuICBjaGlsZHJlbiBvZiB0aGlzIG9iamVjdCB3aWxsIGJlIGVuYWJsZWQgb3IgZGlzYWJsZWQuXHJcbiAgQHBhcmFtIGlzRW5hYmxlZCAtIEEgYm9vbGVhbiwgYSBudWxsIG9yIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGVpdGhlciBhIGJvb2xlYW4gb3IgYSBudWxsLlxyXG4gICoqL1xyXG4gc3RhdGljIGVuYWJsZShldmVudE5hbWU6IHN0cmluZywgb2JqOiBPYmplY3QsIGlzRW5hYmxlZDogYm9vbGVhbiB8ICgoeDogYW55KSA9PiBib29sZWFuKSkge1xyXG4gICAgYXNzZXJ0UGFyYW0oZXZlbnROYW1lLCBcImV2ZW50TmFtZVwiKS5pc05vbkVtcHR5U3RyaW5nKCkuY2hlY2soKTtcclxuICAgIGFzc2VydFBhcmFtKG9iaiwgXCJvYmpcIikuaXNPYmplY3QoKS5jaGVjaygpO1xyXG4gICAgYXNzZXJ0UGFyYW0oaXNFbmFibGVkLCBcImlzRW5hYmxlZFwiKS5pc0Jvb2xlYW4oKS5pc09wdGlvbmFsKCkub3IoKS5pc0Z1bmN0aW9uKCkuY2hlY2soKTtcclxuICAgIGxldCBvYiA9IDxhbnk+b2JqO1xyXG4gICAgaWYgKCFvYi5fJGV2ZW50TWFwKSB7XHJcbiAgICAgIG9iLl8kZXZlbnRNYXAgPSB7fTtcclxuICAgIH1cclxuICAgIG9iLl8kZXZlbnRNYXBbZXZlbnROYW1lXSA9IGlzRW5hYmxlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBmb3IgYSBzcGVjaWZpYyBldmVudCBhbmQgYSBzcGVjaWZpYyBvYmplY3QgYW5kIGl0cyBjaGlsZHJlbiwgbm90aWZpY2F0aW9uIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgb3Igbm90IHNldC5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuaXNFbmFibGVkKOKAnHByb3BlcnR5Q2hhbmdlZOKAnSwgbXlFbnRpdHlNYW5hZ2VyKVxyXG4gID4gXHJcbiAgQHBhcmFtIGV2ZW50TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudC5cclxuICBAcGFyYW0gdGFyZ2V0IC0gVGhlIG9iamVjdCBmb3Igd2hpY2ggd2Ugd2FudCB0byBrbm93IGlmIG5vdGlmaWNhdGlvbnMgYXJlIGVuYWJsZWQuXHJcbiAgQHJldHVybiBBIG51bGwgaXMgcmV0dXJuZWQgaWYgdGhpcyB2YWx1ZSBoYXMgbm90IGJlZW4gc2V0LlxyXG4gICoqL1xyXG4gIHN0YXRpYyBpc0VuYWJsZWQoZXZlbnROYW1lOiBzdHJpbmcsIG9iajogT2JqZWN0KSB7XHJcbiAgICBhc3NlcnRQYXJhbShldmVudE5hbWUsIFwiZXZlbnROYW1lXCIpLmlzTm9uRW1wdHlTdHJpbmcoKS5jaGVjaygpO1xyXG4gICAgYXNzZXJ0UGFyYW0ob2JqLCBcIm9ialwiKS5pc09iamVjdCgpLmNoZWNrKCk7XHJcbiAgICAvLyBudWxsIGlzIG9rIC0gaXQganVzdCBtZWFucyB0aGF0IHRoZSBvYmplY3QgaXMgYXQgdGhlIHRvcCBsZXZlbC5cclxuICAgIGlmICgoPGFueT5vYmopLl9nZXRFdmVudFBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgZXZlbnQgZW5hYmxpbmcvZGlzYWJsaW5nXCIpO1xyXG4gICAgfVxyXG4gICAgLy8gcmV0dXJuIGN0b3IuX2lzRW5hYmxlZChnZXRGdWxsRXZlbnROYW1lKGV2ZW50TmFtZSksIG9iaik7XHJcbiAgICByZXR1cm4gQnJlZXplRXZlbnQuX2lzRW5hYmxlZChldmVudE5hbWUsIDMpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgc3RhdGljIF9pc0VuYWJsZWQgPSBmdW5jdGlvbiAoZXZlbnROYW1lOiBzdHJpbmcsIG9iajogT2JqZWN0KSB7XHJcbiAgICBsZXQgaXNFbmFibGVkOiBhbnkgPSBudWxsO1xyXG4gICAgbGV0IG9iID0gPGFueT5vYmo7XHJcbiAgICBsZXQgZXZlbnRNYXAgPSBvYi5fJGV2ZW50TWFwO1xyXG4gICAgaWYgKGV2ZW50TWFwKSB7XHJcbiAgICAgIGlzRW5hYmxlZCA9IGV2ZW50TWFwW2V2ZW50TmFtZV07XHJcbiAgICB9XHJcbiAgICBpZiAoaXNFbmFibGVkICE9IG51bGwpIHtcclxuICAgICAgaWYgKHR5cGVvZiBpc0VuYWJsZWQgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICByZXR1cm4gISFpc0VuYWJsZWQob2JqKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gISFpc0VuYWJsZWQ7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBwYXJlbnQgPSBvYi5fZ2V0RXZlbnRQYXJlbnQgJiYgb2IuX2dldEV2ZW50UGFyZW50KCk7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICByZXR1cm4gISF0aGlzLl9pc0VuYWJsZWQoZXZlbnROYW1lLCBwYXJlbnQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGRlZmF1bHQgaWYgbm90IGV4cGxpY2l0bHkgZGlzYWJsZWQuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuXHJcbn1cclxuXHJcbi8vIGxlZ2FjeSBzdXBwb3J0IC0gZGVsaWJlcmF0ZWx5IG5vdCB0eXBlZFxyXG4oY29yZSBhcyBhbnkpLkV2ZW50ID0gQnJlZXplRXZlbnQ7Il19