breeze-client 2.1.5 → 2.1.6-mjs

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  2. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  6. package/adapter-data-service-odata/adapter-data-service-odata.d.ts +0 -1
  7. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  8. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  10. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  12. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  13. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
  14. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
  17. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
  20. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
  23. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs +461 -0
  28. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
  30. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
  32. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
  34. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
  37. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
  40. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2022/breeze-client.mjs +5 -0
  42. package/esm2022/index.mjs +2 -0
  43. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
  47. package/esm2022/src/abstract-data-service-adapter.mjs +294 -0
  48. package/esm2022/src/array.mjs +4 -0
  49. package/esm2022/src/assert-param.mjs +330 -0
  50. package/esm2022/src/breeze.mjs +85 -0
  51. package/esm2022/src/complex-array.mjs +117 -0
  52. package/esm2022/src/config.mjs +232 -0
  53. package/esm2022/src/core.mjs +712 -0
  54. package/esm2022/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2022/src/data-service.mjs +239 -0
  56. package/esm2022/src/data-type.mjs +507 -0
  57. package/esm2022/src/default-property-interceptor.mjs +460 -0
  58. package/esm2022/src/entity-action.mjs +45 -0
  59. package/esm2022/src/entity-aspect.mjs +897 -0
  60. package/esm2022/src/entity-group.mjs +192 -0
  61. package/esm2022/src/entity-key.mjs +127 -0
  62. package/esm2022/src/entity-manager.mjs +2183 -0
  63. package/esm2022/src/entity-metadata.mjs +2242 -0
  64. package/esm2022/src/entity-query.mjs +1005 -0
  65. package/esm2022/src/entity-state.mjs +107 -0
  66. package/{esm2015/src/enum.js → esm2022/src/enum.mjs} +3 -1
  67. package/esm2022/src/event.mjs +264 -0
  68. package/esm2022/src/interface-registry.mjs +39 -0
  69. package/esm2022/src/key-generator.mjs +110 -0
  70. package/esm2022/src/local-query-comparison-options.mjs +75 -0
  71. package/esm2022/src/mapping-context.mjs +422 -0
  72. package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
  73. package/esm2022/src/observable-array.mjs +183 -0
  74. package/esm2022/src/predicate.mjs +1259 -0
  75. package/esm2022/src/primitive-array.mjs +85 -0
  76. package/esm2022/src/query-options.mjs +160 -0
  77. package/esm2022/src/relation-array.mjs +173 -0
  78. package/esm2022/src/save-options.mjs +51 -0
  79. package/esm2022/src/unattached-children-map.mjs +56 -0
  80. package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
  81. package/esm2022/src/validation-options.mjs +78 -0
  82. package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
  83. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
  85. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
  87. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
  89. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +70 -67
  93. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +36 -29
  95. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
  97. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
  99. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
  101. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
  103. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
  107. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2122 -1540
  109. package/fesm2022/breeze-client.mjs.map +1 -0
  110. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  111. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  112. package/package.json +93 -11
  113. package/src/abstract-data-service-adapter.d.ts +0 -1
  114. package/src/config.d.ts +1 -1
  115. package/src/core.d.ts +1 -1
  116. package/src/data-type.d.ts +5 -0
  117. package/src/entity-aspect.d.ts +6 -6
  118. package/src/entity-manager.d.ts +4 -4
  119. package/src/entity-metadata.d.ts +45 -33
  120. package/src/entity-query.d.ts +1 -1
  121. package/src/entity-state.d.ts +4 -0
  122. package/src/mapping-context.d.ts +1 -1
  123. package/src/predicate.d.ts +4 -7
  124. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  125. package/adapter-ajax-angularjs/package.json +0 -13
  126. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  127. package/adapter-ajax-fetch/package.json +0 -13
  128. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  129. package/adapter-ajax-httpclient/package.json +0 -13
  130. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  131. package/adapter-ajax-jquery/package.json +0 -13
  132. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  133. package/adapter-ajax-post/package.json +0 -13
  134. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  135. package/adapter-data-service-odata/package.json +0 -13
  136. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  137. package/adapter-data-service-webapi/package.json +0 -13
  138. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  139. package/adapter-model-library-backing-store/package.json +0 -13
  140. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  141. package/adapter-model-library-ko/package.json +0 -13
  142. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  143. package/adapter-uri-builder-json/package.json +0 -13
  144. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  145. package/adapter-uri-builder-odata/package.json +0 -13
  146. package/breeze-client.d.ts +0 -8
  147. package/breeze-client.metadata.json +0 -1
  148. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  149. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  150. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  151. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  152. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  153. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  154. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  155. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  156. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  157. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  158. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  159. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  160. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  161. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  162. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  163. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  164. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  165. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  166. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  167. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  168. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
  169. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  170. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  171. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  172. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
  173. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  174. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  175. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  176. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  177. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  178. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  179. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  180. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  181. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  182. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  183. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  184. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  185. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  186. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  187. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  188. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  189. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  190. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  191. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  192. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  193. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  194. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  195. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  196. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  197. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  198. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  199. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  200. package/bundles/breeze-client.umd.js +0 -14098
  201. package/bundles/breeze-client.umd.js.map +0 -1
  202. package/bundles/breeze-client.umd.min.js +0 -16
  203. package/bundles/breeze-client.umd.min.js.map +0 -1
  204. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  205. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  206. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  207. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  208. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  209. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  210. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  211. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  212. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  213. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  214. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  215. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  216. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  217. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  218. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
  219. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  220. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
  221. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  222. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  223. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  224. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  225. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  226. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  227. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  228. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  229. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  230. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  231. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  232. package/esm2015/breeze-client.js +0 -9
  233. package/esm2015/index.js +0 -2
  234. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  235. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  236. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  237. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  238. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  239. package/esm2015/src/array.js +0 -4
  240. package/esm2015/src/assert-param.js +0 -312
  241. package/esm2015/src/breeze.js +0 -85
  242. package/esm2015/src/complex-array.js +0 -119
  243. package/esm2015/src/config.js +0 -223
  244. package/esm2015/src/core.js +0 -709
  245. package/esm2015/src/csdl-metadata-parser.js +0 -385
  246. package/esm2015/src/data-service.js +0 -203
  247. package/esm2015/src/data-type.js +0 -444
  248. package/esm2015/src/default-property-interceptor.js +0 -460
  249. package/esm2015/src/entity-action.js +0 -45
  250. package/esm2015/src/entity-aspect.js +0 -806
  251. package/esm2015/src/entity-group.js +0 -187
  252. package/esm2015/src/entity-key.js +0 -116
  253. package/esm2015/src/entity-manager.js +0 -2094
  254. package/esm2015/src/entity-metadata.js +0 -2109
  255. package/esm2015/src/entity-query.js +0 -996
  256. package/esm2015/src/entity-state.js +0 -99
  257. package/esm2015/src/event.js +0 -256
  258. package/esm2015/src/interface-registry.js +0 -41
  259. package/esm2015/src/key-generator.js +0 -108
  260. package/esm2015/src/local-query-comparison-options.js +0 -65
  261. package/esm2015/src/mapping-context.js +0 -405
  262. package/esm2015/src/naming-convention.js +0 -88
  263. package/esm2015/src/observable-array.js +0 -185
  264. package/esm2015/src/predicate.js +0 -1235
  265. package/esm2015/src/primitive-array.js +0 -87
  266. package/esm2015/src/query-options.js +0 -152
  267. package/esm2015/src/relation-array.js +0 -175
  268. package/esm2015/src/save-options.js +0 -41
  269. package/esm2015/src/unattached-children-map.js +0 -58
  270. package/esm2015/src/validate.js +0 -991
  271. package/esm2015/src/validation-options.js +0 -64
  272. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  273. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  274. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  275. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  276. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  277. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  278. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  279. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  280. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  281. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  282. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  283. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  284. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  285. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  286. package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
  287. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  288. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
  289. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  290. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  291. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  292. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  293. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  294. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  295. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  296. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  297. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  298. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  299. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  300. package/esm5/breeze-client.js +0 -9
  301. package/esm5/index.js +0 -2
  302. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  303. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  304. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  305. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  306. package/esm5/src/abstract-data-service-adapter.js +0 -302
  307. package/esm5/src/array.js +0 -4
  308. package/esm5/src/assert-param.js +0 -317
  309. package/esm5/src/breeze.js +0 -85
  310. package/esm5/src/complex-array.js +0 -119
  311. package/esm5/src/config.js +0 -228
  312. package/esm5/src/core.js +0 -717
  313. package/esm5/src/csdl-metadata-parser.js +0 -385
  314. package/esm5/src/data-service.js +0 -207
  315. package/esm5/src/data-type.js +0 -451
  316. package/esm5/src/default-property-interceptor.js +0 -460
  317. package/esm5/src/entity-action.js +0 -52
  318. package/esm5/src/entity-aspect.js +0 -812
  319. package/esm5/src/entity-group.js +0 -189
  320. package/esm5/src/entity-key.js +0 -118
  321. package/esm5/src/entity-manager.js +0 -2112
  322. package/esm5/src/entity-metadata.js +0 -2144
  323. package/esm5/src/entity-query.js +0 -1023
  324. package/esm5/src/entity-state.js +0 -106
  325. package/esm5/src/enum.js +0 -144
  326. package/esm5/src/event.js +0 -259
  327. package/esm5/src/interface-registry.js +0 -43
  328. package/esm5/src/key-generator.js +0 -111
  329. package/esm5/src/local-query-comparison-options.js +0 -67
  330. package/esm5/src/mapping-context.js +0 -407
  331. package/esm5/src/observable-array.js +0 -201
  332. package/esm5/src/predicate.js +0 -1300
  333. package/esm5/src/primitive-array.js +0 -87
  334. package/esm5/src/query-options.js +0 -167
  335. package/esm5/src/relation-array.js +0 -175
  336. package/esm5/src/save-options.js +0 -43
  337. package/esm5/src/unattached-children-map.js +0 -60
  338. package/esm5/src/validation-options.js +0 -66
  339. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  340. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  341. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  342. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  343. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  344. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  345. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  346. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  347. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  348. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  349. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  350. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  351. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  352. package/fesm2015/breeze-client.js.map +0 -1
  353. package/fesm5/breeze-client-adapter-ajax-angularjs.js +0 -186
  354. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  355. package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
  356. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  357. package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
  358. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  359. package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
  360. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  361. package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
  362. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  363. package/fesm5/breeze-client-adapter-data-service-odata.js +0 -519
  364. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  365. package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -104
  366. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  367. package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
  368. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  369. package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
  370. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  371. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  372. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  373. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  374. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  375. package/fesm5/breeze-client-mixin-get-entity-graph.js +0 -254
  376. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  377. package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
  378. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  379. package/fesm5/breeze-client.js +0 -13820
  380. package/fesm5/breeze-client.js.map +0 -1
  381. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  382. package/mixin-get-entity-graph/package.json +0 -13
  383. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  384. package/mixin-save-queuing/package.json +0 -13
@@ -1,106 +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
- /**
69
- Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
70
- > var es = anEntity.entityAspect.entityState;
71
- > return es.isUnchangedOrModified();
72
-
73
- is the same as
74
- > return es === EntityState.Unchanged || es === EntityState.Modified
75
- **/
76
- EntityState.prototype.isUnchangedOrModified = function () {
77
- return this === EntityState.Unchanged || this === EntityState.Modified;
78
- };
79
- /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
80
- > var es = anEntity.entityAspect.entityState;
81
- > return es.isAddedModifiedOrDeleted();
82
-
83
- is the same as
84
- > return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
85
- **/
86
- EntityState.prototype.isAddedModifiedOrDeleted = function () {
87
- return this === EntityState.Added ||
88
- this === EntityState.Modified ||
89
- this === EntityState.Deleted;
90
- };
91
- /** The 'Unchanged' state. **/
92
- EntityState.Unchanged = new EntityState();
93
- /** The 'Added' state. **/
94
- EntityState.Added = new EntityState();
95
- /** The 'Modified' state. **/
96
- EntityState.Modified = new EntityState();
97
- /** The 'Deleted' state. **/
98
- EntityState.Deleted = new EntityState();
99
- /** The 'Detached' state. **/
100
- EntityState.Detached = new EntityState();
101
- return EntityState;
102
- }(BreezeEnum));
103
- export { EntityState };
104
- EntityState.prototype._$typeName = "EntityState";
105
- Error['x'] = EntityState.resolveSymbols();
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9lbnRpdHktc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEM7O0dBRUc7QUFDSDtJQUFpQywrQkFBVTtJQUEzQzs7SUFvR0EsQ0FBQztJQXZGQzs7Ozs7OztPQU9HO0lBQ0gsaUNBQVcsR0FBWDtRQUNFLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsNkJBQU8sR0FBUDtRQUNFLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxnQ0FBVSxHQUFWO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCwrQkFBUyxHQUFUO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGdDQUFVLEdBQVY7UUFDRSxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsMkNBQXFCLEdBQXJCO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsOENBQXdCLEdBQXhCO1FBQ0UsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLEtBQUs7WUFDL0IsSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRO1lBQzdCLElBQUksS0FBSyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQ2pDLENBQUM7SUFoR0QsOEJBQThCO0lBQ3ZCLHFCQUFTLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNyQyw0QkFBNEI7SUFDckIsaUJBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLGdDQUFnQztJQUN6QixvQkFBUSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDcEMsOEJBQThCO0lBQ3ZCLG1CQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNuQywrQkFBK0I7SUFDeEIsb0JBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBeUZ0QyxrQkFBQztDQUFBLEFBcEdELENBQWlDLFVBQVUsR0FvRzFDO1NBcEdZLFdBQVc7QUFxR3hCLFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQztBQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlZXplRW51bSB9IGZyb20gJy4vZW51bSc7XHJcblxyXG4vKipcclxuRW50aXR5U3RhdGUgaXMgYW4gJ0VudW0nIGNvbnRhaW5pbmcgYWxsIG9mIHRoZSB2YWxpZCBzdGF0ZXMgZm9yIGFuICdFbnRpdHknLlxyXG4qKi9cclxuZXhwb3J0IGNsYXNzIEVudGl0eVN0YXRlIGV4dGVuZHMgQnJlZXplRW51bSB7XHJcblxyXG4gIC8qKiBUaGUgJ1VuY2hhbmdlZCcgc3RhdGUuICoqL1xyXG4gIHN0YXRpYyBVbmNoYW5nZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuICAvKiogIFRoZSAnQWRkZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIEFkZGVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ01vZGlmaWVkJyBzdGF0ZS4gICAqKi9cclxuICBzdGF0aWMgTW9kaWZpZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuICAvKiogIFRoZSAnRGVsZXRlZCcgc3RhdGUuICAqKi9cclxuICBzdGF0aWMgRGVsZXRlZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG4gIC8qKiAgVGhlICdEZXRhY2hlZCcgc3RhdGUuICAqKi9cclxuICBzdGF0aWMgRGV0YWNoZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLlVuY2hhbmdlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzVW5jaGFuZ2VkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQ7XHJcbiAgKiovXHJcbiAgaXNVbmNoYW5nZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJuIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuQWRkZWQuXHJcbiAgXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc0FkZGVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5BZGRlZDtcclxuICAqKi9cclxuICBpc0FkZGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkFkZGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLk1vZGlmaWVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNNb2RpZmllZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQ7XHJcbiAgKiovXHJcbiAgaXNNb2RpZmllZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5EZWxldGVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNEZWxldGVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5EZWxldGVkO1xyXG4gICoqL1xyXG4gIGlzRGVsZXRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5EZWxldGVkO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLkRldGFjaGVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNEZXRhY2hlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQ7XHJcbiAgKiovXHJcbiAgaXNEZXRhY2hlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5EZXRhY2hlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQgb3IgRW50aXR5U3RhdGUuTW9kaWZpZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc1VuY2hhbmdlZE9yTW9kaWZpZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZCB8fCBlcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWRcclxuICAqKi9cclxuICBpc1VuY2hhbmdlZE9yTW9kaWZpZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkIHx8IHRoaXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5BZGRlZCBvciBFbnRpdHlTdGF0ZS5Nb2RpZmllZCBvciBFbnRpdHlTdGF0ZS5EZWxldGVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNBZGRlZE1vZGlmaWVkT3JEZWxldGVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5BZGRlZCB8fCBlcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLkRlbGV0ZWRcclxuICAqKi9cclxuICBpc0FkZGVkTW9kaWZpZWRPckRlbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQgfHxcclxuICAgICAgdGhpcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQgfHxcclxuICAgICAgdGhpcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICB9XHJcblxyXG59XHJcbkVudGl0eVN0YXRlLnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJFbnRpdHlTdGF0ZVwiO1xyXG5FcnJvclsneCddID0gRW50aXR5U3RhdGUucmVzb2x2ZVN5bWJvbHMoKTtcclxuIl19
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+ICAgICAgICAgZXhwZWN0KERheU9mV2Vlay5TYXR1cmRheS5pc1dlZWtlbmQpLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgLy8gLy8gU3RhbmRhcmQgZW51bSBjYXBhYmlsaXRpZXNcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuVGh1cnNkYXkgaW5zdGFuY2VvZiBEYXlPZldlZWspLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgICBleHBlY3QoQnJlZXplRW51bS5pc1N5bWJvbChEYXlPZldlZWsuV2VkbmVzZGF5KSkudG9CZSh0cnVlKTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuY29udGFpbnMoRGF5T2ZXZWVrLlRodXJzZGF5KSkudG9CZSh0cnVlKTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuRnJpZGF5LnRvU3RyaW5nKCkpLnRvQmUoXCJGcmlkYXlcIik7XHJcbj4gICAgICAgfSk7XHJcbj4gICB9KTtcclxuTm90ZSB0aGF0IHdlIGhhdmUgRXJyb3JbJ3gnXSA9IC4uLiBpbiBzb21lIHBsYWNlcyBpbiB0aGUgY29kZSB0byBwcmV2ZW50IFRlcnNlciBmcm9tIG9wdGltaXppbmcgb3V0IHNvbWUgaW1wb3J0YW50IGNhbGxzLlxyXG5AZHluYW1pY1xyXG4qL1xyXG5leHBvcnQgY2xhc3MgQnJlZXplRW51bSB7XHJcbiAgLy8gLy8gVE9ETzogdGhpbmsgYWJvdXQgQ29tcG9zaXRlRW51bSAoZmxhZ3MgaW1wbCkuXHJcbiAgLyoqIFRoZSBuYW1lIG9mIHRoaXMgc3ltYm9sICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBlbnVtOyBzZXQgaW4gcHJvdG90eXBlIG9mIGVhY2ggZW51bSAqL1xyXG4gIF8kdHlwZU5hbWU6IHN0cmluZztcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBzdGF0aWMgX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzOiB7IG5hbWU6IHN0cmluZywgc3ltYm9sOiBCcmVlemVFbnVtIH1bXTtcclxuXHJcbiAgLyoqICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByb3BlcnRpZXNPYmo/OiBPYmplY3QpIHtcclxuICAgIGlmIChwcm9wZXJ0aWVzT2JqKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKHByb3BlcnRpZXNPYmopLmZvckVhY2goKGtleSkgPT4gdGhpc1trZXldID0gcHJvcGVydGllc09ialtrZXldKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgYWxsIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gID4gICAgIGxldCBzeW1ib2xzID0gRGF5T2ZXZWVrLmdldFN5bWJvbHMoKTtcclxuICBAcmV0dXJuIEFsbCBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICAqKi9cclxuICBzdGF0aWMgZ2V0U3ltYm9scygpIHtcclxuICAgIHJldHVybiB0aGlzLnJlc29sdmVTeW1ib2xzKCkubWFwKGtzID0+IGtzLnN5bWJvbCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHRoZSBuYW1lcyBvZiBhbGwgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgPiAgICAgbGV0IHN5bWJvbHMgPSBEYXlPZldlZWsuZ2V0TmFtZXMoKTtcclxuICBAcmV0dXJuICBBbGwgb2YgdGhlIG5hbWVzIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBnZXROYW1lcygpIHtcclxuICAgIHJldHVybiB0aGlzLnJlc29sdmVTeW1ib2xzKCkubWFwKGtzID0+IGtzLm5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyBhbiBFbnVtIHN5bWJvbCBnaXZlbiBpdHMgbmFtZS5cclxuICA+ICAgICBsZXQgZGF5T2ZXZWVrID0gRGF5T2ZXZWVrLmZyb20oXCJUaHVyc2RheVwiKTtcclxuICA+ICAgICAvLyBub3dkYXlPZldlZWsgPT09IERheU9mV2Vlay5UaHVyc2RheVxyXG4gIEBwYXJhbSBuYW1lIC0gTmFtZSBmb3Igd2hpY2ggYW4gZW51bSBzeW1ib2wgc2hvdWxkIGJlIHJldHVybmVkLlxyXG4gIEByZXR1cm4gVGhlIHN5bWJvbCB0aGF0IG1hdGNoZXMgdGhlIG5hbWUgb3IgJ3VuZGVmaW5lZCcgaWYgbm90IGZvdW5kLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBmcm9tTmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzW25hbWVdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgU2VhbHMgdGhpcyBlbnVtIHNvIHRoYXQgbm8gbW9yZSBzeW1ib2xzIG1heSBiZSBhZGRlZCB0byBpdC4gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYWxsIHN5bWJvbHNcclxuICBoYXZlIGFscmVhZHkgYmVlbiBhZGRlZCB0byB0aGUgRW51bS4gVGhpcyBtZXRob2QgYWxzbyBzZXRzIHRoZSAnbmFtZScgcHJvcGVydHkgb24gZWFjaCBvZiB0aGUgc3ltYm9scy5cclxuICA+ICAgICBEYXlPZldlZWsucmVzb2x2ZVN5bWJvbHMoKTtcclxuICAqKi9cclxuICBzdGF0aWMgcmVzb2x2ZVN5bWJvbHMoKSB7XHJcbiAgICBpZiAodGhpcy5fcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHMpIHJldHVybiB0aGlzLl9yZXNvbHZlZE5hbWVzQW5kU3ltYm9scztcclxuICAgIGxldCByZXN1bHQ6IHtuYW1lOiBzdHJpbmcsIHN5bWJvbDogQnJlZXplRW51bSB9W10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdGhpcykge1xyXG4gICAgICBpZiAodGhpcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgbGV0IHN5bWIgPSB0aGlzW2tleV07XHJcbiAgICAgICAgaWYgKHN5bWIgaW5zdGFuY2VvZiBCcmVlemVFbnVtKSB7XHJcbiAgICAgICAgICByZXN1bHQucHVzaCggeyBuYW1lOiBrZXksIHN5bWJvbDogc3ltYiB9KTtcclxuICAgICAgICAgIHRoaXNba2V5XSA9IHN5bWI7XHJcbiAgICAgICAgICBzeW1iLm5hbWUgPSBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLl9yZXNvbHZlZE5hbWVzQW5kU3ltYm9scyA9IHJlc3VsdDtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gRW51bSBjb250YWlucyBhIHNwZWNpZmllZCBzeW1ib2wuXHJcbiAgPiAgICAgbGV0IHN5bWJvbCA9IERheU9mV2Vlay5GcmlkYXk7XHJcbiAgPiAgICAgaWYgKERheU9mV2Vlay5jb250YWlucyhzeW1ib2wpKSB7XHJcbiAgPiAgICAgICAgIC8vIGRvIHNvbWV0aGluZ1xyXG4gID4gICAgIH1cclxuICBAcGFyYW0gc3ltIC0gT2JqZWN0IG9yIHN5bWJvbCB0byB0ZXN0LlxyXG4gIEByZXR1cm4gV2hldGhlciB0aGlzIEVudW0gY29udGFpbnMgdGhlIHNwZWNpZmllZCBzeW1ib2wuXHJcbiAgKiovXHJcbiAgc3RhdGljIGNvbnRhaW5zKHN5bTogQnJlZXplRW51bSkge1xyXG4gICAgaWYgKCEoc3ltIGluc3RhbmNlb2YgQnJlZXplRW51bSkpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzW3N5bS5uYW1lXSAhPSBudWxsO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIC8qKlxyXG4gIC8vIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gRW51bSAnc3ltYm9sJy4gVXNlIHRoZSAnY29udGFpbnMnIG1ldGhvZCBpbnN0ZWFkIG9mIHRoaXMgb25lIFxyXG4gIC8vIGlmIHlvdSB3YW50IHRvIHRlc3QgZm9yIGEgc3BlY2lmaWMgRW51bS4gXHJcbiAgLy8gPiAgICAgaWYgKEVudW0uaXNTeW1ib2woRGF5T2ZXZWVrLldlZG5lc2RheSkpIHtcclxuICAvLyA+ICAgICAgIC8vIGRvIHNvbWV0aGluZyAuLi5cclxuICAvLyA+ICAgICB9O1xyXG4gIC8vICoqL1xyXG4gIC8vIHN0YXRpYyBpc1N5bWJvbChvYmo6IGFueSkge1xyXG4gIC8vICAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIEJyZWV6ZUVudW07XHJcbiAgLy8gfTtcclxuXHJcbiAgLyoqIFJldHVybnMgdGhlIHN0cmluZyBuYW1lIG9mIHRoaXMgRW51bSAqL1xyXG4gIHRvU3RyaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMubmFtZTtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm4gZW51bSBuYW1lIGFuZCBzeW1ib2wgbmFtZSAqL1xyXG4gIHRvSlNPTigpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIF8kdHlwZU5hbWU6IHRoaXNbJ18kdHlwZU5hbWUnXSB8fCAodGhpcy5jb25zdHJ1Y3RvciBhcyBhbnkpLm5hbWUsXHJcbiAgICAgIG5hbWU6IHRoaXMubmFtZVxyXG4gICAgfTtcclxuICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19
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
@@ -1,43 +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
- var InterfaceRegistry = /** @class */ (function () {
6
- function InterfaceRegistry() {
7
- this.ajax = new InterfaceDef("ajax");
8
- this.modelLibrary = new InterfaceDef("modelLibrary");
9
- this.dataService = new InterfaceDef("dataService");
10
- this.uriBuilder = new InterfaceDef("uriBuilder");
11
- }
12
- return InterfaceRegistry;
13
- }());
14
- export { InterfaceRegistry };
15
- config.interfaceRegistry = new InterfaceRegistry();
16
- config._interfaceRegistry = config.interfaceRegistry;
17
- config.interfaceRegistry.modelLibrary.getDefaultInstance = function () {
18
- if (!this.defaultInstance) {
19
- throw new Error("Unable to locate the default implementation of the '" + this.name +
20
- "' interface. Possible options are 'ko', 'backingStore' or 'backbone'. See the breeze.config.initializeAdapterInstances method.");
21
- }
22
- return this.defaultInstance;
23
- };
24
- /**
25
- Initializes a collection of adapter implementations and makes each one the default for its corresponding interface.
26
- @method initializeAdapterInstances
27
- @param config {Object}
28
- @param [config.ajax] {String} - the name of a previously registered "ajax" adapter
29
- @param [config.dataService] {String} - the name of a previously registered "dataService" adapter
30
- @param [config.modelLibrary] {String} - the name of a previously registered "modelLibrary" adapter
31
- @param [config.uriBuilder] {String} - the name of a previously registered "uriBuilder" adapter
32
- @return [array of instances]
33
- **/
34
- config.initializeAdapterInstances = function (irConfig) {
35
- assertConfig(irConfig)
36
- .whereParam("dataService").isOptional()
37
- .whereParam("modelLibrary").isOptional()
38
- .whereParam("ajax").isOptional()
39
- .whereParam("uriBuilder").isOptional()
40
- .applyAll(this, false);
41
- return core.objectMap(config, this.initializeAdapterInstance);
42
- };
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9pbnRlcmZhY2UtcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWUsTUFBTSxVQUFVLENBQUM7QUFlN0Qsd0NBQXdDO0FBQ3hDO0lBQUE7UUFDSSxTQUFJLEdBQUcsSUFBSSxZQUFZLENBQWMsTUFBTSxDQUFDLENBQUM7UUFDN0MsaUJBQVksR0FBRyxJQUFJLFlBQVksQ0FBc0IsY0FBYyxDQUFDLENBQUM7UUFDckUsZ0JBQVcsR0FBRyxJQUFJLFlBQVksQ0FBcUIsYUFBYSxDQUFDLENBQUM7UUFDbEUsZUFBVSxHQUFHLElBQUksWUFBWSxDQUFvQixZQUFZLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQUQsd0JBQUM7QUFBRCxDQUFDLEFBTEQsSUFLQzs7QUF1QkQsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUc7SUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUM5RSxpSUFBaUksQ0FBQyxDQUFDO0tBQzFJO0lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQywwQkFBMEIsR0FBRyxVQUFVLFFBQWlDO0lBQzNFLFlBQVksQ0FBQyxRQUFRLENBQUM7U0FDakIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUN0QyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFO1NBQ3ZDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUU7U0FDL0IsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUNyQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydENvbmZpZyB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgY29uZmlnLCBJbnRlcmZhY2VEZWYsIEJhc2VBZGFwdGVyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBNYXBwaW5nQ29udGV4dCB9IGZyb20gJy4vbWFwcGluZy1jb250ZXh0JztcclxuaW1wb3J0IHsgRW50aXR5UXVlcnkgfSBmcm9tICcuL2VudGl0eS1xdWVyeSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcbmltcG9ydCB7IEpzb25SZXN1bHRzQWRhcHRlciwgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBRdWVyeVJlc3VsdCwgU2F2ZVJlc3VsdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnIHtcclxuICAgIGFqYXg/OiBJbnRlcmZhY2VEZWY8QWpheEFkYXB0ZXI+O1xyXG4gICAgbW9kZWxMaWJyYXJ5PzogSW50ZXJmYWNlRGVmPE1vZGVsTGlicmFyeUFkYXB0ZXI+O1xyXG4gICAgZGF0YVNlcnZpY2U/OiBJbnRlcmZhY2VEZWY8RGF0YVNlcnZpY2VBZGFwdGVyPjtcclxuICAgIHVyaUJ1aWxkZXI/OiBJbnRlcmZhY2VEZWY8VXJpQnVpbGRlckFkYXB0ZXI+O1xyXG59XHJcblxyXG4vKiogUmVnaXN0ZXJzIGFkYXB0ZXJzIHVzZWQgYnkgQnJlZXplICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlcmZhY2VSZWdpc3RyeSB7XHJcbiAgICBhamF4ID0gbmV3IEludGVyZmFjZURlZjxBamF4QWRhcHRlcj4oXCJhamF4XCIpO1xyXG4gICAgbW9kZWxMaWJyYXJ5ID0gbmV3IEludGVyZmFjZURlZjxNb2RlbExpYnJhcnlBZGFwdGVyPihcIm1vZGVsTGlicmFyeVwiKTtcclxuICAgIGRhdGFTZXJ2aWNlID0gbmV3IEludGVyZmFjZURlZjxEYXRhU2VydmljZUFkYXB0ZXI+KFwiZGF0YVNlcnZpY2VcIik7XHJcbiAgICB1cmlCdWlsZGVyID0gbmV3IEludGVyZmFjZURlZjxVcmlCdWlsZGVyQWRhcHRlcj4oXCJ1cmlCdWlsZGVyXCIpO1xyXG59XHJcblxyXG4vLyBUaGlzIG1vZHVsZSBkZXNjcmliZXMgdGhlIGludGVyZmFjZVJlZ2lzdHJ5IGJ5IGV4dGVuZGluZyBjb25maWdcclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmRlY2xhcmUgbW9kdWxlIFwiLi9jb25maWdcIiB7XHJcbiAgICBpbnRlcmZhY2UgQnJlZXplQ29uZmlnIHtcclxuICAgICAgICAvKipcclxuICAgICAgICBJbml0aWFsaXplcyBhIGNvbGxlY3Rpb24gb2YgYWRhcHRlciBpbXBsZW1lbnRhdGlvbnMgYW5kIG1ha2VzIGVhY2ggb25lIHRoZSBkZWZhdWx0IGZvciBpdHMgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UuXHJcbiAgICAgICAgQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG4gICAgICAgIEBwYXJhbSBjb25maWcge09iamVjdH1cclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5hamF4XSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwiYWpheFwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG4gICAgICAgIEBwYXJhbSBbY29uZmlnLm1vZGVsTGlicmFyeV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcIm1vZGVsTGlicmFyeVwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy51cmlCdWlsZGVyXSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwidXJpQnVpbGRlclwiIGFkYXB0ZXJcclxuICAgICAgICBAcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbiAgICAgICAgKiovXHJcbiAgICAgICAgaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKTogdm9pZDtcclxuXHJcbiAgICAgICAgLy8gc3Ryb25nbHkgdHlwZWQgdmVyc2lvblxyXG4gICAgICAgIGludGVyZmFjZVJlZ2lzdHJ5OiBJbnRlcmZhY2VSZWdpc3RyeTtcclxuICAgIH1cclxufVxyXG5cclxuY29uZmlnLmludGVyZmFjZVJlZ2lzdHJ5ID0gbmV3IEludGVyZmFjZVJlZ2lzdHJ5KCk7XHJcbmNvbmZpZy5faW50ZXJmYWNlUmVnaXN0cnkgPSBjb25maWcuaW50ZXJmYWNlUmVnaXN0cnk7XHJcbmNvbmZpZy5pbnRlcmZhY2VSZWdpc3RyeS5tb2RlbExpYnJhcnkuZ2V0RGVmYXVsdEluc3RhbmNlID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEluc3RhbmNlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvY2F0ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ1wiICsgdGhpcy5uYW1lICtcclxuICAgICAgICAgICAgXCInIGludGVyZmFjZS4gIFBvc3NpYmxlIG9wdGlvbnMgYXJlICdrbycsICdiYWNraW5nU3RvcmUnIG9yICdiYWNrYm9uZScuIFNlZSB0aGUgYnJlZXplLmNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlcyBtZXRob2QuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdEluc3RhbmNlO1xyXG59O1xyXG5cclxuLyoqXHJcbkluaXRpYWxpemVzIGEgY29sbGVjdGlvbiBvZiBhZGFwdGVyIGltcGxlbWVudGF0aW9ucyBhbmQgbWFrZXMgZWFjaCBvbmUgdGhlIGRlZmF1bHQgZm9yIGl0cyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS5cclxuQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG5AcGFyYW0gY29uZmlnIHtPYmplY3R9XHJcbkBwYXJhbSBbY29uZmlnLmFqYXhdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJhamF4XCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5tb2RlbExpYnJhcnldIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJtb2RlbExpYnJhcnlcIiBhZGFwdGVyXHJcbkBwYXJhbSBbY29uZmlnLnVyaUJ1aWxkZXJdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJ1cmlCdWlsZGVyXCIgYWRhcHRlclxyXG5AcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbioqL1xyXG5jb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMgPSBmdW5jdGlvbiAoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKSB7XHJcbiAgICBhc3NlcnRDb25maWcoaXJDb25maWcpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJkYXRhU2VydmljZVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcIm1vZGVsTGlicmFyeVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcImFqYXhcIikuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ1cmlCdWlsZGVyXCIpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC5hcHBseUFsbCh0aGlzLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gY29yZS5vYmplY3RNYXAoY29uZmlnLCB0aGlzLmluaXRpYWxpemVBZGFwdGVySW5zdGFuY2UpO1xyXG59O1xyXG5cclxuLyoqIERhdGFTZXJ2aWNlQWRhcHRlciBBamF4IHJlcXVlc3QgY29uZmlndXJhdGlvbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhDb25maWcge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICAvKiogR0VULCBQT1NULCBldGMuICovXHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgLyoqIGpzb24sIGV0Yy4gKi9cclxuICAgIGRhdGFUeXBlPzogc3RyaW5nO1xyXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XHJcbiAgICBjcm9zc0RvbWFpbj86IHN0cmluZyB8IGJvb2xlYW47XHJcbiAgICBoZWFkZXJzPzoge307XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcGFyYW1zPzoge307XHJcbiAgICBzdWNjZXNzOiAocmVzOiBIdHRwUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBlcnJvcjogKHJlczogKEh0dHBSZXNwb25zZSB8IEVycm9yKSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIFJlcXVlc3Qgc2VudCBieSBBamF4QWRhcHRlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0IHtcclxuICAgIC8qKiBBamF4QWRhcHRlciB0aGF0IGluaXRpYXRlZCB0aGUgcmVxdWVzdCAqL1xyXG4gICAgYWRhcHRlcjogQWpheEFkYXB0ZXI7XHJcbiAgICAvKiogUmVxdWVzdCBjb25maWd1cmF0aW9uICovXHJcbiAgICBjb25maWc6IFJlcXVlc3RJbml0O1xyXG4gICAgLyoqIGNvbmZpZyBmcm9tIHRoZSBEYXRhU2VydmljZUFkYXB0ZXIgdGhhdCBjYWxsZWQgdGhlIEFqYXhBZGFwdGVyICovXHJcbiAgICBkc2FDb25maWc6IEFqYXhDb25maWc7XHJcbiAgICAvKiogRnVuY3Rpb24gY2FsbGVkIG9uIHJlc3BvbnNlIGVycm9yICovXHJcbiAgICBlcnJvcjogKHN0YXR1czogbnVtYmVyLCBzdGF0dXNUZXh0OiBzdHJpbmcsIGJvZHk6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlLCBlcnJvclRocm93bjogYW55KSA9PiB2b2lkO1xyXG4gICAgLyoqIEZ1bmN0aW9uIGNhbGxlZCBvbiByZXNwb25zZSBzdWNjZXNzICovXHJcbiAgICBzdWNjZXNzOiAoZGF0YTogYW55LCBzdGF0dXNUZXh0OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIEhhbmRsZXMgQUpBWCByZXF1ZXN0cyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBBamF4QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBhamF4IHJlcXVlc3QgYW5kIGNhbGxzIHRoZSBzdWNjZXNzIG9yIGVycm9yIGZ1bmN0aW9uICovXHJcbiAgICBhamF4KGNvbmZpZzogQWpheENvbmZpZyk6IHZvaWQ7XHJcbiAgICAvKiogQ29udGFpbmVyIGZvciBoZWFkZXJzIHRvIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAqL1xyXG4gICAgZGVmYXVsdFNldHRpbmdzOiB7IGhlYWRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xyXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGFsbG93IG1hbmlwdWxhdGluZyB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZyAqL1xyXG4gICAgcmVxdWVzdEludGVyY2VwdG9yPzogKHJlcTogQWpheFJlcXVlc3QpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKiBBZGFwdHMgYnJlZXplIGNoYW5nZS10cmFja2luZyB0byB0aGUgVUkgZnJhbWV3b3JrICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaWJyYXJ5QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGdldFRyYWNrYWJsZVByb3BlcnR5TmFtZXM6IChlbnRpdHk6IGFueSkgPT4gc3RyaW5nW107XHJcbiAgICBpbml0aWFsaXplRW50aXR5UHJvdG90eXBlKHByb3RvOiBPYmplY3QpOiB2b2lkO1xyXG4gICAgc3RhcnRUcmFja2luZyhlbnRpdHk6IGFueSwgZW50aXR5Q3RvcjogRnVuY3Rpb24pOiB2b2lkO1xyXG4gICAgY3JlYXRlQ3Rvcj86IEZ1bmN0aW9uO1xyXG59XHJcblxyXG4vKiogUmVzaGFwZXMgZGF0YSBtb3ZpbmcgYmV0d2VlbiBicmVlemUgYW5kIHNlcnZlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlQWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGZldGNoTWV0YWRhdGEobWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSwgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKTogUHJvbWlzZTxhbnk+OyAgLy8gcmVzdWx0IG9mIFByb21pc2UgaXMgZWl0aGVyIHJhd01ldGFkYXRhIG9yIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2h5IG5vdC5cclxuICAgIGV4ZWN1dGVRdWVyeShtYXBwaW5nQ29udGV4dDogTWFwcGluZ0NvbnRleHQpOiBQcm9taXNlPFF1ZXJ5UmVzdWx0PjsgICAvLyByZXN1bHQgb2YgZXhlY3V0ZVF1ZXJ5IHdpbGwgZ2V0IHBhc3NlZCB0byBKc29uUmVzdWx0c0FkYXB0ZXIgZXh0cmFjdFJlc3VsdHMgbWV0aG9kXHJcbiAgICBzYXZlQ2hhbmdlcyhzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpOiBQcm9taXNlPFNhdmVSZXN1bHQ+O1xyXG4gICAgY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yOiBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yO1xyXG4gICAganNvblJlc3VsdHNBZGFwdGVyOiBKc29uUmVzdWx0c0FkYXB0ZXI7XHJcbn1cclxuXHJcbi8qKiBGdW5jdGlvbiBjYWxsZWQgYnkgQWpheEFkYXB0ZXIgYmVmb3JlIHNlbmRpbmcgcmVxdWVzdCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgKHJlcTogQWpheFJlcXVlc3QpIDogdm9pZDtcclxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbW92ZSB0aGUgaW50ZXJjZXB0b3IgYWZ0ZXIgaXQgaXMgY2FsbGVkICovXHJcbiAgICBvbmVUaW1lOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQnVpbGRzIFVSSSBmb3IgcGVyZm9ybWluZyBxdWVyaWVzLiAgU2VyaWFsaXplcyB0aGUgRW50aXR5UXVlcnkgYWNjb3JkaW5nIHRvIHRoZSBVUkkgc3ludGF4LiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVyaUJ1aWxkZXJBZGFwdGVyIGV4dGVuZHMgQmFzZUFkYXB0ZXIge1xyXG4gICAgYnVpbGRVcmkocXVlcnk6IEVudGl0eVF1ZXJ5LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKTogc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yIHtcclxuICAgIG5ldyAoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKTogQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG59XHJcblxyXG4vKiogQWxsb3dzIG1hbmlwdWxhdGluZyBkYXRhIGluIERhdGFTZXJ2aWNlQWRhcHRlciBiZWZvcmUgc2VuZGluZyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgb25lVGltZT86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICBQcmVwYXJlIGFuZCByZXR1cm4gdGhlIHNhdmUgZGF0YSBmb3IgYW4gZW50aXR5IGNoYW5nZS1zZXQuXHJcbiAgXHJcbiAgICAgVGhlIGFkYXB0ZXIgY2FsbHMgdGhpcyBtZXRob2QgZm9yIGVhY2ggZW50aXR5IGluIHRoZSBjaGFuZ2Utc2V0LFxyXG4gICAgIGFmdGVyIGl0IGhhcyBwcmVwYXJlZCBhIFwiY2hhbmdlIHJlcXVlc3RcIiBmb3IgdGhhdCBvYmplY3QuXHJcbiAgXHJcbiAgICAgVGhlIG1ldGhvZCBjYW4gZG8gYW55dGhpbmcgdG8gdGhlIHJlcXVlc3QgYnV0IGl0IG11c3QgcmV0dXJuIGEgdmFsaWQsIG5vbi1udWxsIHJlcXVlc3QuXHJcbiAgICAgQGV4YW1wbGVcclxuICAgICB0aGlzLmdldFJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdCwgZW50aXR5LCBpbmRleCkge1xyXG4gICAgICAgICAgICAvLyBhbHRlciB0aGUgcmVxdWVzdCB0aGF0IHRoZSBhZGFwdGVyIHByZXBhcmVkIGZvciB0aGlzIGVudGl0eVxyXG4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgZW50aXR5LCBzYXZlQ29udGV4dCwgYW5kIHNhdmVCdW5kbGVcclxuICAgICAgICAgICAgLy8gZS5nLiwgYWRkIGEgY3VzdG9tIGhlYWRlciBvciBwcnVuZSB0aGUgb3JpZ2luYWxWYWx1ZXNNYXBcclxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICAgICAgfTtcclxuICAgICBAbWV0aG9kIGdldFJlcXVlc3RcclxuICAgICBAcGFyYW0gcmVxdWVzdCB7T2JqZWN0fSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYWRhcHRlcidzIHJlcXVlc3QgdG8gc2F2ZSB0aGlzIGVudGl0eS5cclxuICAgICBAcGFyYW0gZW50aXR5IHtFbnRpdHl9IFRoZSBlbnRpdHktdG8tYmUtc2F2ZSBhcyBpdCBpcyBpbiBjYWNoZVxyXG4gICAgIEBwYXJhbSBpbmRleCB7SW50ZWdlcn0gVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhpcyBlbnRpdHkgaW4gdGhlIGNoYW5nZS1zZXQgYXJyYXlcclxuICAgICBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIHBvdGVudGlhbGx5IHJldmlzZWQgcmVxdWVzdC5cclxuICAgICAqKi9cclxuICAgIGdldFJlcXVlc3QocmVxdWVzdDogYW55LCBlbnRpdHk6IEVudGl0eSwgaW5kZXg6IG51bWJlcik6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICBMYXN0IGNoYW5jZSB0byBjaGFuZ2UgYW55dGhpbmcgYWJvdXQgdGhlICdyZXF1ZXN0cycgYXJyYXlcclxuICAgICBhZnRlciBpdCBoYXMgYmVlbiBidWlsdCB3aXRoIHJlcXVlc3RzIGZvciBhbGwgb2YgdGhlIGVudGl0aWVzLXRvLWJlLXNhdmVkLlxyXG4gIFxyXG4gICAgIFRoZSAncmVxdWVzdHMnIGFycmF5IGlzIHRoZSBzYW1lIGFzICdzYXZlQnVuZGxlLmVudGl0aWVzJyBpbiBtYW55IGltcGxlbWVudGF0aW9uc1xyXG4gIFxyXG4gICAgIFRoaXMgbWV0aG9kIGNhbiBkbyBhbnl0aGluZyB0byB0aGUgYXJyYXkgaW5jbHVkaW5nIGFkZCBhbmQgcmVtb3ZlIHJlcXVlc3RzLlxyXG4gICAgIEl0J3MgdXAgdG8geW91IHRvIGVuc3VyZSB0aGF0IHNlcnZlciB3aWxsIGFjY2VwdCB0aGUgcmVxdWVzdHMgYXJyYXkgZGF0YSBhcyB2YWxpZC5cclxuICBcclxuICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBpZ25vcmVkLlxyXG4gICAgIEBleGFtcGxlXHJcbiAgICAgdGhpcy5kb25lID0gZnVuY3Rpb24gKHJlcXVlc3RzKSB7XHJcbiAgICAgICAgICAgIC8vIGFsdGVyIHRoZSBhcnJheSBvZiByZXF1ZXN0cyByZXByZXNlbnRpbmcgdGhlIGVudGlyZSBjaGFuZ2Utc2V0XHJcbiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBzYXZlQ29udGV4dCBhbmQgc2F2ZUJ1bmRsZVxyXG4gICAgICAgIH07XHJcbiAgICAgQG1ldGhvZCBkb25lXHJcbiAgICAgQHBhcmFtIHJlcXVlc3RzIHtBcnJheSBvZiBPYmplY3R9IFRoZSBhZGFwdGVyJ3MgYXJyYXkgb2YgcmVxdWVzdCBmb3IgdGhpcyBjaGFuZ2VzZXQuXHJcbiAgICAgKiovXHJcbiAgICBkb25lKHJlcXVlc3RzOiBPYmplY3RbXSk6IHZvaWQ7XHJcbn0iXX0=