breeze-client 2.1.2 → 2.1.3-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 (397) hide show
  1. package/LICENSE +1 -1
  2. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  6. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  8. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  10. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  12. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  13. package/esm2020/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +130 -0
  14. package/esm2020/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2020/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2020/adapter-ajax-fetch/adapter-ajax-fetch.mjs +132 -0
  17. package/esm2020/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2020/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2020/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +137 -0
  20. package/esm2020/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2020/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2020/adapter-ajax-jquery/adapter-ajax-jquery.mjs +103 -0
  23. package/esm2020/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2020/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2020/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2020/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/esm2020/adapter-data-service-odata/adapter-data-service-odata.mjs +456 -0
  28. package/esm2020/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2020/adapter-data-service-webapi/adapter-data-service-webapi.mjs +93 -0
  30. package/esm2020/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2020/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +268 -0
  32. package/esm2020/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2020/adapter-model-library-ko/adapter-model-library-ko.mjs +240 -0
  34. package/esm2020/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2020/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2020/adapter-uri-builder-json/adapter-uri-builder-json.mjs +36 -0
  37. package/esm2020/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2020/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2020/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +190 -0
  40. package/esm2020/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2020/breeze-client.mjs +5 -0
  42. package/esm2020/index.mjs +2 -0
  43. package/esm2020/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2020/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2020/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2020/mixin-save-queuing/mixin-save-queuing.mjs +400 -0
  47. package/esm2020/src/abstract-data-service-adapter.mjs +296 -0
  48. package/esm2020/src/array.mjs +4 -0
  49. package/esm2020/src/assert-param.mjs +312 -0
  50. package/esm2020/src/breeze.mjs +85 -0
  51. package/esm2020/src/complex-array.mjs +117 -0
  52. package/esm2020/src/config.mjs +223 -0
  53. package/esm2020/src/core.mjs +707 -0
  54. package/esm2020/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2020/src/data-service.mjs +203 -0
  56. package/esm2020/src/data-type.mjs +444 -0
  57. package/esm2020/src/default-property-interceptor.mjs +460 -0
  58. package/esm2020/src/entity-action.mjs +45 -0
  59. package/esm2020/src/entity-aspect.mjs +806 -0
  60. package/esm2020/src/entity-group.mjs +187 -0
  61. package/esm2020/src/entity-key.mjs +116 -0
  62. package/esm2020/src/entity-manager.mjs +2094 -0
  63. package/esm2020/src/entity-metadata.mjs +2109 -0
  64. package/esm2020/src/entity-query.mjs +996 -0
  65. package/esm2020/src/entity-state.mjs +99 -0
  66. package/esm2020/src/enum.mjs +141 -0
  67. package/esm2020/src/event.mjs +256 -0
  68. package/esm2020/src/interface-registry.mjs +41 -0
  69. package/esm2020/src/key-generator.mjs +108 -0
  70. package/esm2020/src/local-query-comparison-options.mjs +65 -0
  71. package/esm2020/src/mapping-context.mjs +405 -0
  72. package/esm2020/src/naming-convention.mjs +88 -0
  73. package/esm2020/src/observable-array.mjs +183 -0
  74. package/esm2020/src/predicate.mjs +1232 -0
  75. package/esm2020/src/primitive-array.mjs +85 -0
  76. package/esm2020/src/query-options.mjs +152 -0
  77. package/esm2020/src/relation-array.mjs +173 -0
  78. package/esm2020/src/save-options.mjs +41 -0
  79. package/esm2020/src/unattached-children-map.mjs +58 -0
  80. package/esm2020/src/validate.mjs +988 -0
  81. package/esm2020/src/validation-options.mjs +64 -0
  82. package/fesm2015/{breeze-client-adapter-ajax-angularjs.js → breeze-client-adapter-ajax-angularjs.mjs} +1 -1
  83. package/fesm2015/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/fesm2015/{breeze-client-adapter-ajax-fetch.js → breeze-client-adapter-ajax-fetch.mjs} +5 -3
  85. package/fesm2015/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/fesm2015/{breeze-client-adapter-ajax-httpclient.js → breeze-client-adapter-ajax-httpclient.mjs} +1 -1
  87. package/fesm2015/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/fesm2015/{breeze-client-adapter-ajax-jquery.js → breeze-client-adapter-ajax-jquery.mjs} +2 -2
  89. package/fesm2015/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/fesm2015/{breeze-client-adapter-ajax-post.js → breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2015/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/fesm2015/{breeze-client-adapter-data-service-odata.js → breeze-client-adapter-data-service-odata.mjs} +20 -22
  93. package/fesm2015/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/fesm2015/{breeze-client-adapter-data-service-webapi.js → breeze-client-adapter-data-service-webapi.mjs} +13 -13
  95. package/fesm2015/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/fesm2015/{breeze-client-adapter-model-library-backing-store.js → breeze-client-adapter-model-library-backing-store.mjs} +13 -13
  97. package/fesm2015/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/fesm2015/{breeze-client-adapter-model-library-ko.js → breeze-client-adapter-model-library-ko.mjs} +13 -13
  99. package/fesm2015/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/fesm2015/{breeze-client-adapter-uri-builder-json.js → breeze-client-adapter-uri-builder-json.mjs} +8 -8
  101. package/fesm2015/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/fesm2015/{breeze-client-adapter-uri-builder-odata.js → breeze-client-adapter-uri-builder-odata.mjs} +85 -86
  103. package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/fesm2015/{breeze-client-mixin-get-entity-graph.js → breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2015/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/fesm2015/{breeze-client-mixin-save-queuing.js → breeze-client-mixin-save-queuing.mjs} +1 -1
  107. package/fesm2015/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/fesm2015/{breeze-client.js → breeze-client.mjs} +417 -422
  109. package/fesm2015/breeze-client.mjs.map +1 -0
  110. package/{fesm5/breeze-client-adapter-ajax-angularjs.js → fesm2020/breeze-client-adapter-ajax-angularjs.mjs} +41 -42
  111. package/fesm2020/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  112. package/{fesm5/breeze-client-adapter-ajax-fetch.js → fesm2020/breeze-client-adapter-ajax-fetch.mjs} +44 -43
  113. package/fesm2020/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  114. package/{fesm5/breeze-client-adapter-ajax-httpclient.js → fesm2020/breeze-client-adapter-ajax-httpclient.mjs} +43 -44
  115. package/fesm2020/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  116. package/{fesm5/breeze-client-adapter-ajax-jquery.js → fesm2020/breeze-client-adapter-ajax-jquery.mjs} +18 -19
  117. package/fesm2020/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  118. package/{fesm5/breeze-client-adapter-ajax-post.js → fesm2020/breeze-client-adapter-ajax-post.mjs} +8 -11
  119. package/fesm2020/breeze-client-adapter-ajax-post.mjs.map +1 -0
  120. package/{fesm5/breeze-client-adapter-data-service-odata.js → fesm2020/breeze-client-adapter-data-service-odata.mjs} +126 -134
  121. package/fesm2020/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  122. package/{fesm5/breeze-client-adapter-data-service-webapi.js → fesm2020/breeze-client-adapter-data-service-webapi.mjs} +38 -42
  123. package/fesm2020/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  124. package/{fesm5/breeze-client-adapter-model-library-backing-store.js → fesm2020/breeze-client-adapter-model-library-backing-store.mjs} +63 -64
  125. package/fesm2020/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  126. package/{fesm5/breeze-client-adapter-model-library-ko.js → fesm2020/breeze-client-adapter-model-library-ko.mjs} +57 -58
  127. package/fesm2020/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  128. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs +91 -0
  129. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  130. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs +245 -0
  131. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  132. package/{fesm5/breeze-client-mixin-get-entity-graph.js → fesm2020/breeze-client-mixin-get-entity-graph.mjs} +45 -45
  133. package/fesm2020/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  134. package/{fesm5/breeze-client-mixin-save-queuing.js → fesm2020/breeze-client-mixin-save-queuing.mjs} +116 -126
  135. package/fesm2020/breeze-client-mixin-save-queuing.mjs.map +1 -0
  136. package/{fesm5/breeze-client.js → fesm2020/breeze-client.mjs} +3403 -3615
  137. package/fesm2020/breeze-client.mjs.map +1 -0
  138. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  139. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  140. package/package.json +126 -12
  141. package/src/entity-metadata.d.ts +6 -4
  142. package/src/entity-query.d.ts +1 -1
  143. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  144. package/adapter-ajax-angularjs/package.json +0 -13
  145. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  146. package/adapter-ajax-fetch/package.json +0 -13
  147. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  148. package/adapter-ajax-httpclient/package.json +0 -17
  149. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  150. package/adapter-ajax-jquery/package.json +0 -13
  151. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  152. package/adapter-ajax-post/package.json +0 -13
  153. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  154. package/adapter-data-service-odata/package.json +0 -13
  155. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  156. package/adapter-data-service-webapi/package.json +0 -13
  157. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  158. package/adapter-model-library-backing-store/package.json +0 -13
  159. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  160. package/adapter-model-library-ko/package.json +0 -13
  161. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  162. package/adapter-uri-builder-json/package.json +0 -13
  163. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  164. package/adapter-uri-builder-odata/package.json +0 -13
  165. package/breeze-client.d.ts +0 -8
  166. package/breeze-client.metadata.json +0 -1
  167. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  168. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  169. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  170. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  171. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  172. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  173. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  174. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  175. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  176. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  177. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  178. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  179. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  180. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  181. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  182. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  183. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  184. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  185. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  186. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  187. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
  188. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  189. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  190. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  191. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
  192. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  193. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  194. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  195. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  196. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  197. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  198. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  199. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  200. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  201. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  202. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  203. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  204. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  205. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  206. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  207. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  208. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  209. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  210. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  211. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  212. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  213. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  214. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  215. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  216. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  217. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  218. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  219. package/bundles/breeze-client.umd.js +0 -14094
  220. package/bundles/breeze-client.umd.js.map +0 -1
  221. package/bundles/breeze-client.umd.min.js +0 -16
  222. package/bundles/breeze-client.umd.min.js.map +0 -1
  223. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  224. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  225. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  226. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  227. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  228. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  229. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  230. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  231. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  232. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  233. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  234. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  235. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  236. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  237. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
  238. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  239. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
  240. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  241. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  242. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  243. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  244. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  245. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  246. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  247. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  248. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  249. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  250. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  251. package/esm2015/breeze-client.js +0 -9
  252. package/esm2015/index.js +0 -2
  253. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  254. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  255. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  256. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  257. package/esm2015/public_api.js +0 -2
  258. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  259. package/esm2015/src/array.js +0 -4
  260. package/esm2015/src/assert-param.js +0 -312
  261. package/esm2015/src/breeze.js +0 -85
  262. package/esm2015/src/complex-array.js +0 -119
  263. package/esm2015/src/config.js +0 -223
  264. package/esm2015/src/core.js +0 -706
  265. package/esm2015/src/csdl-metadata-parser.js +0 -385
  266. package/esm2015/src/data-service.js +0 -203
  267. package/esm2015/src/data-type.js +0 -444
  268. package/esm2015/src/default-property-interceptor.js +0 -459
  269. package/esm2015/src/entity-action.js +0 -45
  270. package/esm2015/src/entity-aspect.js +0 -806
  271. package/esm2015/src/entity-group.js +0 -187
  272. package/esm2015/src/entity-key.js +0 -116
  273. package/esm2015/src/entity-manager.js +0 -2094
  274. package/esm2015/src/entity-metadata.js +0 -2109
  275. package/esm2015/src/entity-query.js +0 -996
  276. package/esm2015/src/entity-state.js +0 -99
  277. package/esm2015/src/enum.js +0 -141
  278. package/esm2015/src/event.js +0 -256
  279. package/esm2015/src/interface-registry.js +0 -41
  280. package/esm2015/src/key-generator.js +0 -108
  281. package/esm2015/src/local-query-comparison-options.js +0 -65
  282. package/esm2015/src/mapping-context.js +0 -405
  283. package/esm2015/src/naming-convention.js +0 -88
  284. package/esm2015/src/observable-array.js +0 -185
  285. package/esm2015/src/predicate.js +0 -1235
  286. package/esm2015/src/primitive-array.js +0 -87
  287. package/esm2015/src/query-options.js +0 -152
  288. package/esm2015/src/relation-array.js +0 -175
  289. package/esm2015/src/save-options.js +0 -41
  290. package/esm2015/src/unattached-children-map.js +0 -58
  291. package/esm2015/src/validate.js +0 -991
  292. package/esm2015/src/validation-options.js +0 -64
  293. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  294. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  295. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  296. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  297. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  298. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  299. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  300. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  301. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  302. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  303. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  304. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  305. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  306. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  307. package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
  308. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  309. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
  310. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  311. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  312. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  313. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  314. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  315. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  316. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  317. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  318. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  319. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  320. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  321. package/esm5/breeze-client.js +0 -9
  322. package/esm5/index.js +0 -2
  323. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  324. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  325. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  326. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  327. package/esm5/public_api.js +0 -2
  328. package/esm5/src/abstract-data-service-adapter.js +0 -302
  329. package/esm5/src/array.js +0 -4
  330. package/esm5/src/assert-param.js +0 -317
  331. package/esm5/src/breeze.js +0 -85
  332. package/esm5/src/complex-array.js +0 -119
  333. package/esm5/src/config.js +0 -228
  334. package/esm5/src/core.js +0 -714
  335. package/esm5/src/csdl-metadata-parser.js +0 -385
  336. package/esm5/src/data-service.js +0 -207
  337. package/esm5/src/data-type.js +0 -451
  338. package/esm5/src/default-property-interceptor.js +0 -459
  339. package/esm5/src/entity-action.js +0 -52
  340. package/esm5/src/entity-aspect.js +0 -812
  341. package/esm5/src/entity-group.js +0 -189
  342. package/esm5/src/entity-key.js +0 -118
  343. package/esm5/src/entity-manager.js +0 -2112
  344. package/esm5/src/entity-metadata.js +0 -2144
  345. package/esm5/src/entity-query.js +0 -1023
  346. package/esm5/src/entity-state.js +0 -106
  347. package/esm5/src/enum.js +0 -144
  348. package/esm5/src/event.js +0 -259
  349. package/esm5/src/interface-registry.js +0 -43
  350. package/esm5/src/key-generator.js +0 -111
  351. package/esm5/src/local-query-comparison-options.js +0 -67
  352. package/esm5/src/mapping-context.js +0 -407
  353. package/esm5/src/naming-convention.js +0 -90
  354. package/esm5/src/observable-array.js +0 -201
  355. package/esm5/src/predicate.js +0 -1300
  356. package/esm5/src/primitive-array.js +0 -87
  357. package/esm5/src/query-options.js +0 -167
  358. package/esm5/src/relation-array.js +0 -175
  359. package/esm5/src/save-options.js +0 -43
  360. package/esm5/src/unattached-children-map.js +0 -60
  361. package/esm5/src/validate.js +0 -996
  362. package/esm5/src/validation-options.js +0 -66
  363. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  364. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  365. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  366. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  367. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  368. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  369. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  370. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  371. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  372. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  373. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  374. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  375. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  376. package/fesm2015/breeze-client.js.map +0 -1
  377. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  378. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  379. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  380. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  381. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  382. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  383. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  384. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  385. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  386. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  387. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  388. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  389. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  390. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  391. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  392. package/fesm5/breeze-client.js.map +0 -1
  393. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  394. package/mixin-get-entity-graph/package.json +0 -13
  395. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  396. package/mixin-save-queuing/package.json +0 -13
  397. package/public_api.d.ts +0 -1
@@ -1,192 +0,0 @@
1
- import * as breeze from 'breeze-client';
2
- import { appendQueryStringParameter } from './adapter-core';
3
- export class UriBuilderODataAdapter {
4
- constructor() {
5
- this.name = "odata";
6
- }
7
- static register(config) {
8
- config = config || breeze.config;
9
- config.registerAdapter("uriBuilder", UriBuilderODataAdapter);
10
- return config.initializeAdapterInstance("uriBuilder", "odata", true);
11
- }
12
- initialize() { }
13
- buildUri(entityQuery, metadataStore) {
14
- // force entityType validation;
15
- let entityType = entityQuery._getFromEntityType(metadataStore, false);
16
- if (!entityType) {
17
- // anonymous type but still has naming convention info avail
18
- entityType = new breeze.EntityType(metadataStore);
19
- }
20
- let queryOptions = {};
21
- queryOptions["$filter"] = toWhereODataFragment(entityQuery.wherePredicate);
22
- queryOptions["$orderby"] = toOrderByODataFragment(entityQuery.orderByClause);
23
- if (entityQuery.skipCount) {
24
- queryOptions["$skip"] = entityQuery.skipCount;
25
- }
26
- if (entityQuery.takeCount != null) {
27
- queryOptions["$top"] = entityQuery.takeCount;
28
- }
29
- queryOptions["$expand"] = toExpandODataFragment(entityQuery.expandClause);
30
- queryOptions["$select"] = toSelectODataFragment(entityQuery.selectClause);
31
- if (entityQuery.inlineCountEnabled) {
32
- queryOptions["$inlinecount"] = "allpages";
33
- }
34
- const qoText = toQueryOptionsString(queryOptions);
35
- return appendQueryStringParameter(entityQuery.resourceName, qoText);
36
- // private methods to this func.
37
- function toWhereODataFragment(wherePredicate) {
38
- if (!wherePredicate)
39
- return undefined;
40
- // validation occurs inside of the toODataFragment call here.
41
- let frag = wherePredicate.visit({ entityType: entityType }, toODataFragmentVisitor);
42
- return (frag && frag.length > 0) ? frag : undefined;
43
- }
44
- function toOrderByODataFragment(orderByClause) {
45
- if (!orderByClause)
46
- return undefined;
47
- orderByClause.validate(entityType);
48
- let strings = orderByClause.items.map(function (item) {
49
- return entityType.clientPropertyPathToServer(item.propertyPath, "/") + (item.isDesc ? " desc" : "");
50
- });
51
- // should return something like CompanyName,Address/City desc
52
- return strings.join(',');
53
- }
54
- function toSelectODataFragment(selectClause) {
55
- if (!selectClause)
56
- return undefined;
57
- selectClause.validate(entityType);
58
- let frag = selectClause.propertyPaths.map(function (pp) {
59
- return entityType.clientPropertyPathToServer(pp, "/");
60
- }).join(",");
61
- return frag;
62
- }
63
- function toExpandODataFragment(expandClause) {
64
- if (!expandClause)
65
- return undefined;
66
- // no validate on expand clauses currently.
67
- // expandClause.validate(entityType);
68
- let frag = expandClause.propertyPaths.map(function (pp) {
69
- return entityType.clientPropertyPathToServer(pp, "/");
70
- }).join(",");
71
- return frag;
72
- }
73
- function toQueryOptionsString(queryOptions) {
74
- let qoStrings = [];
75
- for (let qoName in queryOptions) {
76
- let qoValue = queryOptions[qoName];
77
- if (qoValue !== undefined) {
78
- if (qoValue instanceof Array) {
79
- qoValue.forEach(function (qov) {
80
- qoStrings.push(qoName + "=" + encodeURIComponent(qov));
81
- });
82
- }
83
- else {
84
- qoStrings.push(qoName + "=" + encodeURIComponent(qoValue));
85
- }
86
- }
87
- }
88
- if (qoStrings.length > 0) {
89
- return qoStrings.join("&");
90
- }
91
- else {
92
- return "";
93
- }
94
- }
95
- }
96
- }
97
- breeze.Predicate.prototype.toODataFragment = function (context) {
98
- return this.visit(context, toODataFragmentVisitor);
99
- };
100
- const ɵ0 = function () {
101
- return this.value;
102
- }, ɵ1 = function (context) {
103
- let predVal = this.pred.visit(context);
104
- return odataOpFrom(this) + " " + "(" + predVal + ")";
105
- }, ɵ2 = function (context) {
106
- let expr1Val = this.expr1.visit(context);
107
- let expr2Val = this.expr2.visit(context);
108
- let prefix = context.prefix;
109
- if (prefix) {
110
- expr1Val = prefix + "/" + expr1Val;
111
- }
112
- let odataOp = odataOpFrom(this);
113
- if (this.op.key === 'in') {
114
- let result = expr2Val.map(function (v) {
115
- return "(" + expr1Val + " eq " + v + ")";
116
- }).join(" or ");
117
- return result;
118
- }
119
- else if (this.op.isFunction) {
120
- if (odataOp === "substringof") {
121
- return odataOp + "(" + expr2Val + "," + expr1Val + ") eq true";
122
- }
123
- else {
124
- return odataOp + "(" + expr1Val + "," + expr2Val + ") eq true";
125
- }
126
- }
127
- else {
128
- return expr1Val + " " + odataOp + " " + expr2Val;
129
- }
130
- }, ɵ3 = function (context) {
131
- let result = this.preds.map(function (pred) {
132
- let predVal = pred.visit(context);
133
- return "(" + predVal + ")";
134
- }).join(" " + odataOpFrom(this) + " ");
135
- return result;
136
- }, ɵ4 = function (context) {
137
- let exprVal = this.expr.visit(context);
138
- if (!this.pred.op) { // added 21-Oct-2016 to fix breeze.js issue #172
139
- return exprVal + "/" + odataOpFrom(this) + "()";
140
- }
141
- let prefix = context.prefix;
142
- if (prefix) {
143
- exprVal = prefix + "/" + exprVal;
144
- prefix = "x" + (parseInt(prefix.substring(1)) + 1);
145
- }
146
- else {
147
- prefix = "x1";
148
- }
149
- // need to create a new context because of 'prefix'
150
- let newContext = breeze.core.extend({}, context);
151
- newContext.entityType = this.expr.dataType;
152
- newContext.prefix = prefix;
153
- let newPredVal = this.pred.visit(newContext);
154
- return exprVal + "/" + odataOpFrom(this) + "(" + prefix + ": " + newPredVal + ")";
155
- }, ɵ5 = function () {
156
- if (Array.isArray(this.value)) {
157
- return this.value.map(function (v) { return this.dataType.fmtOData(v); }, this);
158
- }
159
- else {
160
- return this.dataType.fmtOData(this.value);
161
- }
162
- }, ɵ6 = function (context) {
163
- let entityType = context.entityType;
164
- // '/' is the OData path delimiter
165
- return entityType ? entityType.clientPropertyPathToServer(this.propertyPath, "/") : this.propertyPath;
166
- }, ɵ7 = function (context) {
167
- let exprVals = this.exprs.map(function (expr) {
168
- return expr.visit(context);
169
- });
170
- return this.fnName + "(" + exprVals.join(",") + ")";
171
- };
172
- let toODataFragmentVisitor = {
173
- passthruPredicate: ɵ0,
174
- unaryPredicate: ɵ1,
175
- binaryPredicate: ɵ2,
176
- andOrPredicate: ɵ3,
177
- anyAllPredicate: ɵ4,
178
- litExpr: ɵ5,
179
- propExpr: ɵ6,
180
- fnExpr: ɵ7
181
- };
182
- let _operatorMap = {
183
- 'contains': 'substringof'
184
- };
185
- function odataOpFrom(node) {
186
- let op = node.op.key;
187
- let odataOp = _operatorMap[op];
188
- return odataOp || op;
189
- }
190
- breeze.config.registerAdapter("uriBuilder", UriBuilderODataAdapter);
191
- export { ɵ0, ɵ1, ɵ2, ɵ3, ɵ4, ɵ5, ɵ6, ɵ7 };
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci11cmktYnVpbGRlci1vZGF0YS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvYWRhcHRlci11cmktYnVpbGRlci1vZGF0YS8iLCJzb3VyY2VzIjpbImFkYXB0ZXItdXJpLWJ1aWxkZXItb2RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUQsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQztRQUNFLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQTRCO1FBQzFDLE1BQU0sR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxNQUFNLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzdELE9BQU8sTUFBTSxDQUFDLHlCQUF5QixDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUEyQixDQUFDO0lBQ2pHLENBQUM7SUFFRCxVQUFVLEtBQUssQ0FBQztJQUVoQixRQUFRLENBQUMsV0FBK0IsRUFBRSxhQUFtQztRQUMzRSwrQkFBK0I7UUFDL0IsSUFBSSxVQUFVLEdBQUcsV0FBVyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsNERBQTREO1lBQzVELFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDbkQ7UUFFRCxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdEIsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMzRSxZQUFZLENBQUMsVUFBVSxDQUFD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LE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDdEQsQ0FBQztBQXBGSCxJQUFJLHNCQUFzQixHQUFHO0lBRTNCLGlCQUFpQixJQUVoQjtJQUVELGNBQWMsSUFHYjtJQUVELGVBQWUsSUF3QmQ7SUFFRCxjQUFjLElBTWI7SUFFRCxlQUFlLElBa0JkO0lBRUQsT0FBTyxJQU1OO0lBRUQsUUFBUSxJQUlQO0lBRUQsTUFBTSxJQUtMO0NBQ0YsQ0FBQztBQUVGLElBQUksWUFBWSxHQUFHO0lBQ2pCLFVBQVUsRUFBRSxhQUFhO0NBQzFCLENBQUM7QUFFRixTQUFTLFdBQVcsQ0FBQyxJQUFTO0lBQzVCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQ3JCLElBQUksT0FBTyxHQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixPQUFPLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYnJlZXplIGZyb20gJ2JyZWV6ZS1jbGllbnQnO1xyXG5pbXBvcnQgeyBhcHBlbmRRdWVyeVN0cmluZ1BhcmFtZXRlciB9IGZyb20gJy4vYWRhcHRlci1jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBVcmlCdWlsZGVyT0RhdGFBZGFwdGVyIGltcGxlbWVudHMgYnJlZXplLlVyaUJ1aWxkZXJBZGFwdGVyIHtcclxuXHJcbiAgbmFtZTogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMubmFtZSA9IFwib2RhdGFcIjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZWdpc3Rlcihjb25maWc/OiBicmVlemUuQnJlZXplQ29uZmlnKSB7XHJcbiAgICBjb25maWcgPSBjb25maWcgfHwgYnJlZXplLmNvbmZpZztcclxuICAgIGNvbmZpZy5yZWdpc3RlckFkYXB0ZXIoXCJ1cmlCdWlsZGVyXCIsIFVyaUJ1aWxkZXJPRGF0YUFkYXB0ZXIpO1xyXG4gICAgcmV0dXJuIGNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlKFwidXJpQnVpbGRlclwiLCBcIm9kYXRhXCIsIHRydWUpIGFzIFVyaUJ1aWxkZXJPRGF0YUFkYXB0ZXI7XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplKCkgeyB9XHJcblxyXG4gIGJ1aWxkVXJpKGVudGl0eVF1ZXJ5OiBicmVlemUuRW50aXR5UXVlcnksIG1ldGFkYXRhU3RvcmU6IGJyZWV6ZS5NZXRhZGF0YVN0b3JlKSB7XHJcbiAgICAvLyBmb3JjZSBlbnRpdHlUeXBlIHZhbGlkYXRpb247XHJcbiAgICBsZXQgZW50aXR5VHlwZSA9IGVudGl0eVF1ZXJ5Ll9nZXRGcm9tRW50aXR5VHlwZShtZXRhZGF0YVN0b3JlLCBmYWxzZSk7XHJcbiAgICBpZiAoIWVudGl0eVR5cGUpIHtcclxuICAgICAgLy8gYW5vbnltb3VzIHR5cGUgYnV0IHN0aWxsIGhhcyBuYW1pbmcgY29udmVudGlvbiBpbmZvIGF2YWlsXHJcbiAgICAgIGVudGl0eVR5cGUgPSBuZXcgYnJlZXplLkVudGl0eVR5cGUobWV0YWRhdGFTdG9yZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHF1ZXJ5T3B0aW9ucyA9IHt9O1xyXG4gICAgcXVlcnlPcHRpb25zW1wiJGZpbHRlclwiXSA9IHRvV2hlcmVPRGF0YUZyYWdtZW50KGVudGl0eVF1ZXJ5LndoZXJlUHJlZGljYXRlKTtcclxuICAgIHF1ZXJ5T3B0aW9uc1tcIiRvcmRlcmJ5XCJdID0gdG9PcmRlckJ5T0RhdGFGcmFnbWVudChlbnRpdHlRdWVyeS5vcmRlckJ5Q2xhdXNlISk7XHJcblxyXG4gICAgaWYgKGVudGl0eVF1ZXJ5LnNraXBDb3VudCkge1xyXG4gICAgICBxdWVyeU9wdGlvbnNbXCIkc2tpcFwiXSA9IGVudGl0eVF1ZXJ5LnNraXBDb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZW50aXR5UXVlcnkudGFrZUNvdW50ICE9IG51bGwpIHtcclxuICAgICAgcXVlcnlPcHRpb25zW1wiJHRvcFwiXSA9IGVudGl0eVF1ZXJ5LnRha2VDb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBxdWVyeU9wdGlvbnNbXCIkZXhwYW5kXCJdID0gdG9FeHBhbmRPRGF0YUZyYWdtZW50KGVudGl0eVF1ZXJ5LmV4cGFuZENsYXVzZSk7XHJcbiAgICBxdWVyeU9wdGlvbnNbXCIkc2VsZWN0XCJdID0gdG9TZWxlY3RPRGF0YUZyYWdtZW50KGVudGl0eVF1ZXJ5LnNlbGVjdENsYXVzZSEpO1xyXG5cclxuICAgIGlmIChlbnRpdHlRdWVyeS5pbmxpbmVDb3VudEVuYWJsZWQpIHtcclxuICAgICAgcXVlcnlPcHRpb25zW1wiJGlubGluZWNvdW50XCJdID0gXCJhbGxwYWdlc1wiO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHFvVGV4dCA9IHRvUXVlcnlPcHRpb25zU3RyaW5nKHF1ZXJ5T3B0aW9ucyBhcyBicmVlemUuUXVlcnlPcHRpb25zKTtcclxuXHJcbiAgICByZXR1cm4gYXBwZW5kUXVlcnlTdHJpbmdQYXJhbWV0ZXIoZW50aXR5UXVlcnkucmVzb3VyY2VOYW1lLCBxb1RleHQpO1xyXG5cclxuICAgIC8vIHByaXZhdGUgbWV0aG9kcyB0byB0aGlzIGZ1bmMuXHJcblxyXG4gICAgZnVuY3Rpb24gdG9XaGVyZU9EYXRhRnJhZ21lbnQod2hlcmVQcmVkaWNhdGU6IGJyZWV6ZS5QcmVkaWNhdGUpIHtcclxuICAgICAgaWYgKCF3aGVyZVByZWRpY2F0ZSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgLy8gdmFsaWRhdGlvbiBvY2N1cnMgaW5zaWRlIG9mIHRoZSB0b09EYXRhRnJhZ21lbnQgY2FsbCBoZXJlLlxyXG4gICAgICBsZXQgZnJhZyA9IHdoZXJlUHJlZGljYXRlLnZpc2l0KHsgZW50aXR5VHlwZTogZW50aXR5VHlwZSB9LCB0b09EYXRhRnJhZ21lbnRWaXNpdG9yKTtcclxuICAgICAgcmV0dXJuIChmcmFnICYmIGZyYWcubGVuZ3RoID4gMCkgPyBmcmFnIDogdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHRvT3JkZXJCeU9EYXRhRnJhZ21lbnQob3JkZXJCeUNsYXVzZTogYnJlZXplLk9yZGVyQnlDbGF1c2UpIHtcclxuICAgICAgaWYgKCFvcmRlckJ5Q2xhdXNlKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICBvcmRlckJ5Q2xhdXNlLnZhbGlkYXRlKGVudGl0eVR5cGUhKTtcclxuICAgICAgbGV0IHN0cmluZ3MgPSBvcmRlckJ5Q2xhdXNlLml0ZW1zLm1hcChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBlbnRpdHlUeXBlIS5jbGllbnRQcm9wZXJ0eVBhdGhUb1NlcnZlcihpdGVtLnByb3BlcnR5UGF0aCwgXCIvXCIpICsgKGl0ZW0uaXNEZXNjID8gXCIgZGVzY1wiIDogXCJcIik7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyBzaG91bGQgcmV0dXJuIHNvbWV0aGluZyBsaWtlIENvbXBhbnlOYW1lLEFkZHJlc3MvQ2l0eSBkZXNjXHJcbiAgICAgIHJldHVybiBzdHJpbmdzLmpvaW4oJywnKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB0b1NlbGVjdE9EYXRhRnJhZ21lbnQoc2VsZWN0Q2xhdXNlPzogYnJlZXplLlNlbGVjdENsYXVzZSkge1xyXG4gICAgICBpZiAoIXNlbGVjdENsYXVzZSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgc2VsZWN0Q2xhdXNlLnZhbGlkYXRlKGVudGl0eVR5cGUhKTtcclxuICAgICAgbGV0IGZyYWcgPSBzZWxlY3RDbGF1c2UucHJvcGVydHlQYXRocy5tYXAoZnVuY3Rpb24gKHBwKSB7XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eVR5cGUhLmNsaWVudFByb3BlcnR5UGF0aFRvU2VydmVyKHBwLCBcIi9cIik7XHJcbiAgICAgIH0pLmpvaW4oXCIsXCIpO1xyXG4gICAgICByZXR1cm4gZnJhZztcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB0b0V4cGFuZE9EYXRhRnJhZ21lbnQoZXhwYW5kQ2xhdXNlPzogYnJlZXplLkV4cGFuZENsYXVzZSkge1xyXG4gICAgICBpZiAoIWV4cGFuZENsYXVzZSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgLy8gbm8gdmFsaWRhdGUgb24gZXhwYW5kIGNsYXVzZXMgY3VycmVudGx5LlxyXG4gICAgICAvLyBleHBhbmRDbGF1c2UudmFsaWRhdGUoZW50aXR5VHlwZSk7XHJcbiAgICAgIGxldCBmcmFnID0gZXhwYW5kQ2xhdXNlLnByb3BlcnR5UGF0aHMubWFwKGZ1bmN0aW9uIChwcCkge1xyXG4gICAgICAgIHJldHVybiBlbnRpdHlUeXBlIS5jbGllbnRQcm9wZXJ0eVBhdGhUb1NlcnZlcihwcCwgXCIvXCIpO1xyXG4gICAgICB9KS5qb2luKFwiLFwiKTtcclxuICAgICAgcmV0dXJuIGZyYWc7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdG9RdWVyeU9wdGlvbnNTdHJpbmcocXVlcnlPcHRpb25zOiBicmVlemUuUXVlcnlPcHRpb25zKSB7XHJcbiAgICAgIGxldCBxb1N0cmluZ3M6IHN0cmluZ1tdID0gW107XHJcbiAgICAgIGZvciAobGV0IHFvTmFtZSBpbiBxdWVyeU9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgcW9WYWx1ZSA9IHF1ZXJ5T3B0aW9uc1txb05hbWVdO1xyXG4gICAgICAgIGlmIChxb1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGlmIChxb1ZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgICAgICAgcW9WYWx1ZS5mb3JFYWNoKGZ1bmN0aW9uIChxb3YpIHtcclxuICAgICAgICAgICAgICBxb1N0cmluZ3MucHVzaChxb05hbWUgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChxb3YpKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBxb1N0cmluZ3MucHVzaChxb05hbWUgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChxb1ZhbHVlKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocW9TdHJpbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXR1cm4gcW9TdHJpbmdzLmpvaW4oXCImXCIpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcbihicmVlemUuUHJlZGljYXRlLnByb3RvdHlwZSBhcyBhbnkpLnRvT0RhdGFGcmFnbWVudCA9IGZ1bmN0aW9uIChjb250ZXh0OiBicmVlemUuVmlzaXRDb250ZXh0KSB7XHJcbiAgcmV0dXJuIHRoaXMudmlzaXQoY29udGV4dCwgdG9PRGF0YUZyYWdtZW50VmlzaXRvcik7XHJcbn07XHJcblxyXG5sZXQgdG9PRGF0YUZyYWdtZW50VmlzaXRvciA9IHtcclxuXHJcbiAgcGFzc3RocnVQcmVkaWNhdGU6IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB0aGlzLnZhbHVlO1xyXG4gIH0sXHJcblxyXG4gIHVuYXJ5UHJlZGljYXRlOiBmdW5jdGlvbiAodGhpczogYnJlZXplLlVuYXJ5UHJlZGljYXRlLCBjb250ZXh0OiBicmVlemUuVmlzaXRDb250ZXh0KSB7XHJcbiAgICBsZXQgcHJlZFZhbCA9IHRoaXMucHJlZC52aXNpdChjb250ZXh0KTtcclxuICAgIHJldHVybiBvZGF0YU9wRnJvbSh0aGlzKSArIFwiIFwiICsgXCIoXCIgKyBwcmVkVmFsICsgXCIpXCI7XHJcbiAgfSxcclxuXHJcbiAgYmluYXJ5UHJlZGljYXRlOiBmdW5jdGlvbiAodGhpczogYnJlZXplLkJpbmFyeVByZWRpY2F0ZSwgY29udGV4dDogYnJlZXplLlZpc2l0Q29udGV4dCkge1xyXG4gICAgbGV0IGV4cHIxVmFsID0gdGhpcy5leHByMSEudmlzaXQoY29udGV4dCk7XHJcbiAgICBsZXQgZXhwcjJWYWwgPSB0aGlzLmV4cHIyIS52aXNpdChjb250ZXh0KTtcclxuICAgIGxldCBwcmVmaXggPSAoY29udGV4dCBhcyBhbnkpLnByZWZpeDtcclxuICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgZXhwcjFWYWwgPSBwcmVmaXggKyBcIi9cIiArIGV4cHIxVmFsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvZGF0YU9wID0gb2RhdGFPcEZyb20odGhpcyk7XHJcblxyXG4gICAgaWYgKHRoaXMub3Aua2V5ID09PSAnaW4nKSB7XHJcbiAgICAgIGxldCByZXN1bHQgPSBleHByMlZhbC5tYXAoZnVuY3Rpb24gKHY6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBcIihcIiArIGV4cHIxVmFsICsgXCIgZXEgXCIgKyB2ICsgXCIpXCI7XHJcbiAgICAgIH0pLmpvaW4oXCIgb3IgXCIpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wLmlzRnVuY3Rpb24pIHtcclxuICAgICAgaWYgKG9kYXRhT3AgPT09IFwic3Vic3RyaW5nb2ZcIikge1xyXG4gICAgICAgIHJldHVybiBvZGF0YU9wICsgXCIoXCIgKyBleHByMlZhbCArIFwiLFwiICsgZXhwcjFWYWwgKyBcIikgZXEgdHJ1ZVwiO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBvZGF0YU9wICsgXCIoXCIgKyBleHByMVZhbCArIFwiLFwiICsgZXhwcjJWYWwgKyBcIikgZXEgdHJ1ZVwiO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXhwcjFWYWwgKyBcIiBcIiArIG9kYXRhT3AgKyBcIiBcIiArIGV4cHIyVmFsO1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGFuZE9yUHJlZGljYXRlOiBmdW5jdGlvbiAodGhpczogYnJlZXplLkFuZE9yUHJlZGljYXRlLCBjb250ZXh0OiBicmVlemUuVmlzaXRDb250ZXh0KSB7XHJcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5wcmVkcy5tYXAoZnVuY3Rpb24gKHByZWQpIHtcclxuICAgICAgbGV0IHByZWRWYWwgPSBwcmVkLnZpc2l0KGNvbnRleHQpO1xyXG4gICAgICByZXR1cm4gXCIoXCIgKyBwcmVkVmFsICsgXCIpXCI7XHJcbiAgICB9KS5qb2luKFwiIFwiICsgb2RhdGFPcEZyb20odGhpcykgKyBcIiBcIik7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH0sXHJcblxyXG4gIGFueUFsbFByZWRpY2F0ZTogZnVuY3Rpb24gKHRoaXM6IGJyZWV6ZS5BbnlBbGxQcmVkaWNhdGUsIGNvbnRleHQ6IGJyZWV6ZS5WaXNpdENvbnRleHQpIHtcclxuICAgIGxldCBleHByVmFsID0gdGhpcy5leHByLnZpc2l0KGNvbnRleHQpO1xyXG4gICAgaWYgKCF0aGlzLnByZWQub3ApIHsgLy8gYWRkZWQgMjEtT2N0LTIwMTYgdG8gZml4IGJyZWV6ZS5qcyBpc3N1ZSAjMTcyXHJcbiAgICAgIHJldHVybiBleHByVmFsICsgXCIvXCIgKyBvZGF0YU9wRnJvbSh0aGlzKSArIFwiKClcIjtcclxuICAgIH1cclxuICAgIGxldCBwcmVmaXggPSAoY29udGV4dCBhcyBhbnkpLnByZWZpeDtcclxuICAgIGlmIChwcmVmaXgpIHtcclxuICAgICAgZXhwclZhbCA9IHByZWZpeCArIFwiL1wiICsgZXhwclZhbDtcclxuICAgICAgcHJlZml4ID0gXCJ4XCIgKyAocGFyc2VJbnQocHJlZml4LnN1YnN0cmluZygxKSkgKyAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHByZWZpeCA9IFwieDFcIjtcclxuICAgIH1cclxuICAgIC8vIG5lZWQgdG8gY3JlYXRlIGEgbmV3IGNvbnRleHQgYmVjYXVzZSBvZiAncHJlZml4J1xyXG4gICAgbGV0IG5ld0NvbnRleHQgPSBicmVlemUuY29yZS5leHRlbmQoe30sIGNvbnRleHQpIGFzIGFueTtcclxuICAgIG5ld0NvbnRleHQuZW50aXR5VHlwZSA9IHRoaXMuZXhwci5kYXRhVHlwZTtcclxuICAgIG5ld0NvbnRleHQucHJlZml4ID0gcHJlZml4O1xyXG4gICAgbGV0IG5ld1ByZWRWYWwgPSB0aGlzLnByZWQudmlzaXQobmV3Q29udGV4dCk7XHJcbiAgICByZXR1cm4gZXhwclZhbCArIFwiL1wiICsgb2RhdGFPcEZyb20odGhpcykgKyBcIihcIiArIHByZWZpeCArIFwiOiBcIiArIG5ld1ByZWRWYWwgKyBcIilcIjtcclxuICB9LFxyXG5cclxuICBsaXRFeHByOiBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy52YWx1ZS5tYXAoZnVuY3Rpb24gKHY6IGFueSkgeyByZXR1cm4gdGhpcy5kYXRhVHlwZS5mbXRPRGF0YSh2KTsgfSwgdGhpcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5kYXRhVHlwZS5mbXRPRGF0YSh0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuICB9LFxyXG5cclxuICBwcm9wRXhwcjogZnVuY3Rpb24gKHRoaXM6IGJyZWV6ZS5Qcm9wRXhwciwgY29udGV4dDogYnJlZXplLkV4cHJlc3Npb25Db250ZXh0KSB7XHJcbiAgICBsZXQgZW50aXR5VHlwZSA9IGNvbnRleHQuZW50aXR5VHlwZTtcclxuICAgIC8vICcvJyBpcyB0aGUgT0RhdGEgcGF0aCBkZWxpbWl0ZXJcclxuICAgIHJldHVybiBlbnRpdHlUeXBlID8gZW50aXR5VHlwZS5jbGllbnRQcm9wZXJ0eVBhdGhUb1NlcnZlcih0aGlzLnByb3BlcnR5UGF0aCwgXCIvXCIpIDogdGhpcy5wcm9wZXJ0eVBhdGg7XHJcbiAgfSxcclxuXHJcbiAgZm5FeHByOiBmdW5jdGlvbiAodGhpczogYnJlZXplLkZuRXhwciwgY29udGV4dDogYnJlZXplLkV4cHJlc3Npb25Db250ZXh0KSB7XHJcbiAgICBsZXQgZXhwclZhbHMgPSB0aGlzLmV4cHJzLm1hcChmdW5jdGlvbiAoZXhwcikge1xyXG4gICAgICByZXR1cm4gZXhwci52aXNpdChjb250ZXh0KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuZm5OYW1lICsgXCIoXCIgKyBleHByVmFscy5qb2luKFwiLFwiKSArIFwiKVwiO1xyXG4gIH1cclxufTtcclxuXHJcbmxldCBfb3BlcmF0b3JNYXAgPSB7XHJcbiAgJ2NvbnRhaW5zJzogJ3N1YnN0cmluZ29mJ1xyXG59O1xyXG5cclxuZnVuY3Rpb24gb2RhdGFPcEZyb20obm9kZTogYW55KSB7XHJcbiAgbGV0IG9wID0gbm9kZS5vcC5rZXk7XHJcbiAgbGV0IG9kYXRhT3AgPSBfb3BlcmF0b3JNYXBbb3BdO1xyXG4gIHJldHVybiBvZGF0YU9wIHx8IG9wO1xyXG59XHJcblxyXG5icmVlemUuY29uZmlnLnJlZ2lzdGVyQWRhcHRlcihcInVyaUJ1aWxkZXJcIiwgVXJpQnVpbGRlck9EYXRhQWRhcHRlcik7XHJcblxyXG5cclxuXHJcbiJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './adapter-uri-builder-odata';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLXVyaS1idWlsZGVyLW9kYXRhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC9hZGFwdGVyLXVyaS1idWlsZGVyLW9kYXRhLyIsInNvdXJjZXMiOlsiYnJlZXplLWNsaWVudC1hZGFwdGVyLXVyaS1idWlsZGVyLW9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVyLXVyaS1idWlsZGVyLW9kYXRhJztcbiJdfQ==
@@ -1,9 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- export { Param as ɵb } from './src/assert-param';
6
- export { qualifyTypeName as ɵc } from './src/entity-metadata';
7
- export { BooleanQueryOp as ɵd } from './src/entity-query';
8
- export { PredicateExpression as ɵa } from './src/predicate';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJicmVlemUtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUM7QUFFN0IsT0FBTyxFQUFDLEtBQUssSUFBSSxFQUFFLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvQyxPQUFPLEVBQUMsZUFBZSxJQUFJLEVBQUUsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBQyxjQUFjLElBQUksRUFBRSxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDeEQsT0FBTyxFQUFDLG1CQUFtQixJQUFJLEVBQUUsRUFBQyxNQUFNLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuXG5leHBvcnQge1BhcmFtIGFzIMm1Yn0gZnJvbSAnLi9zcmMvYXNzZXJ0LXBhcmFtJztcbmV4cG9ydCB7cXVhbGlmeVR5cGVOYW1lIGFzIMm1Y30gZnJvbSAnLi9zcmMvZW50aXR5LW1ldGFkYXRhJztcbmV4cG9ydCB7Qm9vbGVhblF1ZXJ5T3AgYXMgybVkfSBmcm9tICcuL3NyYy9lbnRpdHktcXVlcnknO1xuZXhwb3J0IHtQcmVkaWNhdGVFeHByZXNzaW9uIGFzIMm1YX0gZnJvbSAnLi9zcmMvcHJlZGljYXRlJzsiXX0=
package/esm2015/index.js DELETED
@@ -1,2 +0,0 @@
1
- export * from './src/breeze';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsiaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYy9icmVlemUnOyJdfQ==
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './mixin-get-entity-graph';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1taXhpbi1nZXQtZW50aXR5LWdyYXBoLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC9taXhpbi1nZXQtZW50aXR5LWdyYXBoLyIsInNvdXJjZXMiOlsiYnJlZXplLWNsaWVudC1taXhpbi1nZXQtZW50aXR5LWdyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9taXhpbi1nZXQtZW50aXR5LWdyYXBoJztcbiJdfQ==
@@ -1,269 +0,0 @@
1
- //#region Copyright, Version, and Description
2
- /*
3
- * Copyright 2015-2021 IdeaBlade, Inc. All Rights Reserved.
4
- * Use, reproduction, distribution, and modification of this code is subject to the terms and
5
- * conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
6
- *
7
- * Author: Ward Bell
8
- * Version: 0.9.5 - Steve Schmitt - convert to TypeScript, migrate to breeze-client repo, add HasEntityGraph and mixinEntityGraph
9
- * Version: 0.9.4 - Marcel Good - fix UMD module name
10
- * --------------------------------------------------------------------------------
11
- * Adds getEntityGraph method to Breeze EntityManager prototype.
12
- * Call mixinEntityGraph(EntityManager) to apply the mixin in a tree-shaking-resistant way.
13
- * Then (manager as any).getEntityGraph(entity, "child");
14
- *
15
- * Depends on Breeze which it patches
16
- *
17
- * For discussion, see:
18
- * http://www.breezejs.com/documentation/getentitygraph
19
- *
20
- * For example usage, see:
21
- * https://github.com/Breeze/breeze.js.samples/tree/master/net/DocCode/DocCode/tests/getEntityGraphTests.js
22
- */
23
- //#endregion
24
- import { EntityManager, EntityQuery, EntityState, ExpandClause } from 'breeze-client';
25
- export function mixinEntityGraph(emclass) {
26
- const proto = EntityManager.prototype;
27
- if (!proto.getEntityGraph) {
28
- proto.getEntityGraph = getEntityGraph;
29
- }
30
- }
31
- mixinEntityGraph(EntityManager);
32
- function getEntityGraph(roots, expand) {
33
- if (roots instanceof EntityQuery) {
34
- let newRoots = this.executeQueryLocally(roots);
35
- return getEntityGraphCore(newRoots, expand || roots.expandClause);
36
- }
37
- else {
38
- return getEntityGraphCore(roots, expand);
39
- }
40
- }
41
- function getEntityGraphCore(root, expand) {
42
- let entityGroupMap;
43
- let graph = [];
44
- let rootType;
45
- let roots = Array.isArray(root) ? root : [root];
46
- addToGraph(roots); // removes dups & nulls
47
- roots = graph.slice(); // copy of de-duped roots
48
- if (roots.length) {
49
- getRootInfo();
50
- getExpand();
51
- buildGraph();
52
- }
53
- return graph;
54
- function addToGraph(entities) {
55
- entities.forEach(function (entity) {
56
- if (entity && graph.indexOf(entity) < 0) {
57
- graph.push(entity);
58
- }
59
- });
60
- }
61
- function getRootInfo() {
62
- let compatTypes;
63
- roots.forEach(function (root, ix) {
64
- let aspect;
65
- if (!root || !(aspect = root.entityAspect)) {
66
- throw getRootErr(ix, 'is not an entity');
67
- }
68
- if (aspect.entityState === EntityState.Detached) {
69
- throw getRootErr(ix, 'is a detached entity');
70
- }
71
- let em = aspect.entityManager;
72
- if (entityGroupMap) {
73
- if (entityGroupMap !== em._entityGroupMap) {
74
- throw getRootErr(ix, "has a different 'EntityManager' than other roots");
75
- }
76
- }
77
- else {
78
- entityGroupMap = em._entityGroupMap;
79
- }
80
- getRootType(root, ix);
81
- });
82
- function getRootErr(ix, msg) {
83
- return new Error("'getEntityGraph' root[" + ix + "] " + msg);
84
- }
85
- function getRootType(root, ix) {
86
- let thisType = root.entityType;
87
- if (!rootType) {
88
- rootType = thisType;
89
- return;
90
- }
91
- else if (rootType === thisType) {
92
- return;
93
- }
94
- // Types differs. Look for closest common base type
95
- // does thisType derive from current rootType?
96
- let baseType = rootType;
97
- do {
98
- compatTypes = compatTypes || baseType.getSelfAndSubtypes();
99
- if (compatTypes.indexOf(thisType) > -1) {
100
- rootType = baseType;
101
- return;
102
- }
103
- baseType = baseType.baseEntityType;
104
- compatTypes = null;
105
- } while (baseType);
106
- // does current rootType derives from thisType?
107
- baseType = thisType;
108
- do {
109
- compatTypes = baseType.getSelfAndSubtypes();
110
- if (compatTypes.indexOf(rootType) > -1) {
111
- rootType = baseType;
112
- return;
113
- }
114
- baseType = baseType.baseEntityType;
115
- } while (baseType);
116
- throw getRootErr(ix, "is not EntityType-compatible with other roots");
117
- }
118
- }
119
- function getExpand() {
120
- try {
121
- if (!expand) {
122
- expand = [];
123
- }
124
- else if (typeof expand === 'string') {
125
- // tricky because Breeze expandClause not exposed publically
126
- expand = new EntityQuery().expand(expand).expandClause;
127
- }
128
- if (expand instanceof ExpandClause && expand.propertyPaths) { // expand clause
129
- expand = expand.propertyPaths;
130
- }
131
- else if (Array.isArray(expand)) {
132
- if (!expand.every(function (elem) { return typeof elem === 'string'; })) {
133
- throw '';
134
- }
135
- }
136
- else {
137
- throw '';
138
- }
139
- }
140
- catch (_) {
141
- throw new Error("expand must be an expand string, array of string paths, or a query expand clause");
142
- }
143
- }
144
- function buildGraph() {
145
- if (expand && expand instanceof Array && expand.length) {
146
- let fns = expand.map(makePathFn);
147
- fns.forEach(function (fn) { fn(roots); });
148
- }
149
- }
150
- // Make function to get entities along a single expand path
151
- // such as 'Orders.OrderDetails.Product'
152
- function makePathFn(path) {
153
- let fns = [], segments = path.split('.'), type = rootType;
154
- for (let i = 0, slen = segments.length; i < slen; i++) {
155
- let f = makePathSegmentFn(type, segments[i]);
156
- type = f.navType;
157
- fns.push(f);
158
- }
159
- return function pathFn(entities) {
160
- for (let j = 0, flen = fns.length; j < flen; j++) {
161
- let elen = entities.length;
162
- if (elen === 0) {
163
- return;
164
- } // nothing left to explore
165
- // fn to get related entities for this path segment
166
- let fn = fns[j];
167
- // get entities related by this path segment
168
- let related = [];
169
- for (let k = 0; k < elen; k++) {
170
- related = related.concat(fn(entities[k]));
171
- }
172
- addToGraph(related);
173
- if (j >= flen - 1) {
174
- return;
175
- } // no more path segments
176
- // reset entities to deduped related entities
177
- entities = [];
178
- for (let l = 0, rlen = related.length; l < rlen; l++) {
179
- let r = related[l];
180
- if (entities.indexOf(r) < 0) {
181
- entities.push(r);
182
- }
183
- }
184
- }
185
- };
186
- }
187
- // Make function to get entities along a single expand path segment
188
- // such as the 'OrderDetails' in the 'Orders.OrderDetails.Product' path
189
- function makePathSegmentFn(baseType, segment) {
190
- let baseTypeName, fn = undefined, navType;
191
- try {
192
- baseTypeName = baseType.name;
193
- let nav = baseType.getNavigationProperty(segment);
194
- let fkName = nav.foreignKeyNames[0];
195
- if (!nav) {
196
- throw new Error(segment + " is not a navigation property of " + baseTypeName);
197
- }
198
- navType = nav.entityType;
199
- // add derived types
200
- let navTypes = navType.getSelfAndSubtypes();
201
- let grps = []; // non-empty groups for these types
202
- navTypes.forEach(function (t) {
203
- let grp = entityGroupMap[t.name];
204
- if (grp && grp._entities.length > 0) {
205
- grps.push(grp);
206
- }
207
- });
208
- let grpCount = grps.length;
209
- if (grpCount === 0) {
210
- // no related entities in cache
211
- fn = function () { return []; };
212
- }
213
- else if (fkName) {
214
- fn = function (entity) {
215
- let val = null;
216
- try {
217
- let keyValue = entity.getProperty(fkName);
218
- for (let i = 0; i < grpCount; i += 1) {
219
- val = grps[i]._entities[grps[i]._indexMap[keyValue]];
220
- if (val) {
221
- break;
222
- }
223
- }
224
- }
225
- catch (e) {
226
- rethrow(e);
227
- }
228
- return val;
229
- };
230
- }
231
- else {
232
- fkName = nav.inverse ?
233
- nav.inverse.foreignKeyNames[0] :
234
- nav.invForeignKeyNames[0];
235
- if (!fkName) {
236
- throw new Error("No inverse keys");
237
- }
238
- fn = function (entity) {
239
- let vals = [];
240
- try {
241
- let keyValue = entity.entityAspect.getKey().values[0];
242
- grps.forEach(function (grp) {
243
- vals = vals.concat(grp._entities.filter(function (en) {
244
- return en && en.getProperty(fkName) === keyValue;
245
- }));
246
- });
247
- }
248
- catch (e) {
249
- rethrow(e);
250
- }
251
- return vals;
252
- };
253
- }
254
- fn.navType = navType;
255
- fn.path = segment;
256
- }
257
- catch (err) {
258
- rethrow(err);
259
- }
260
- return fn;
261
- function rethrow(e) {
262
- let typeName = baseTypeName || baseType;
263
- let error = new Error("'getEntityGraph' can't expand '" + segment + "' for " + typeName);
264
- error.innerError = e;
265
- throw error;
266
- }
267
- }
268
- }
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4aW4tZ2V0LWVudGl0eS1ncmFwaC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvbWl4aW4tZ2V0LWVudGl0eS1ncmFwaC8iLCJzb3VyY2VzIjpbIm1peGluLWdldC1lbnRpdHktZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDO0FBQzdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILFlBQVk7QUFDWixPQUFPLEVBQVUsYUFBYSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWMsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBc0MxRyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsT0FBaUM7SUFDaEUsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQztJQUV0QyxJQUFJLENBQUUsS0FBYSxDQUFDLGNBQWMsRUFBRTtRQUNqQyxLQUFhLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztLQUNoRDtBQUNILENBQUM7QUFFRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUdoQyxTQUFTLGNBQWMsQ0FBQyxLQUEyQyxFQUFFLE1BQTZDO0lBQ2hILElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRTtRQUNoQyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsT0FBTyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNuRTtTQUFNO1FBQ0wsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDMUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUE0QixFQUFFLE1BQTZDO0lBQ3JHLElBQUksY0FBZ0QsQ0FBQztJQUNyRCxJQUFJLEtBQUssR0FBRyxFQUFtQixDQUFDO0lBQ2hDLElBQUksUUFBb0IsQ0FBQztJQUN6QixJQUFJLEtBQUssR0FBRyxLQUFLLENB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LENBQUMsQ0FBQzthQUNIO1lBQ0EsRUFBVSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDN0IsRUFBVSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7U0FFNUI7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUFFO1FBQy9CLE9BQU8sRUFBRSxDQUFDO1FBRVYsU0FBUyxPQUFPLENBQUMsQ0FBUTtZQUN2QixJQUFJLFFBQVEsR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDO1lBQ3hDLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGlDQUFpQyxHQUFHLE9BQU8sR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDeEYsS0FBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDOUIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyNyZWdpb24gQ29weXJpZ2h0LCBWZXJzaW9uLCBhbmQgRGVzY3JpcHRpb25cclxuLypcclxuICogQ29weXJpZ2h0IDIwMTUtMjAyMSBJZGVhQmxhZGUsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqIFVzZSwgcmVwcm9kdWN0aW9uLCBkaXN0cmlidXRpb24sIGFuZCBtb2RpZmljYXRpb24gb2YgdGhpcyBjb2RlIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZFxyXG4gKiBjb25kaXRpb25zIG9mIHRoZSBJZGVhQmxhZGUgQnJlZXplIGxpY2Vuc2UsIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3LmJyZWV6ZWpzLmNvbS9saWNlbnNlXHJcbiAqXHJcbiAqIEF1dGhvcjogV2FyZCBCZWxsXHJcbiAqIFZlcnNpb246IDAuOS41IC0gU3RldmUgU2NobWl0dCAtIGNvbnZlcnQgdG8gVHlwZVNjcmlwdCwgbWlncmF0ZSB0byBicmVlemUtY2xpZW50IHJlcG8sIGFkZCBIYXNFbnRpdHlHcmFwaCBhbmQgbWl4aW5FbnRpdHlHcmFwaFxyXG4gKiBWZXJzaW9uOiAwLjkuNCAtIE1hcmNlbCBHb29kIC0gZml4IFVNRCBtb2R1bGUgbmFtZVxyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKiBBZGRzIGdldEVudGl0eUdyYXBoIG1ldGhvZCB0byBCcmVlemUgRW50aXR5TWFuYWdlciBwcm90b3R5cGUuXHJcbiAqIENhbGwgICBtaXhpbkVudGl0eUdyYXBoKEVudGl0eU1hbmFnZXIpICAgdG8gYXBwbHkgdGhlIG1peGluIGluIGEgdHJlZS1zaGFraW5nLXJlc2lzdGFudCB3YXkuXHJcbiAqIFRoZW4gICAobWFuYWdlciBhcyBhbnkpLmdldEVudGl0eUdyYXBoKGVudGl0eSwgXCJjaGlsZFwiKTtcclxuICpcclxuICogRGVwZW5kcyBvbiBCcmVlemUgd2hpY2ggaXQgcGF0Y2hlc1xyXG4gKlxyXG4gKiBGb3IgZGlzY3Vzc2lvbiwgc2VlOlxyXG4gKiBodHRwOi8vd3d3LmJyZWV6ZWpzLmNvbS9kb2N1bWVudGF0aW9uL2dldGVudGl0eWdyYXBoXHJcbiAqXHJcbiAqIEZvciBleGFtcGxlIHVzYWdlLCBzZWU6XHJcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9CcmVlemUvYnJlZXplLmpzLnNhbXBsZXMvdHJlZS9tYXN0ZXIvbmV0L0RvY0NvZGUvRG9jQ29kZS90ZXN0cy9nZXRFbnRpdHlHcmFwaFRlc3RzLmpzXHJcbiAqL1xyXG4vLyNlbmRyZWdpb25cclxuaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlNYW5hZ2VyLCBFbnRpdHlRdWVyeSwgRW50aXR5U3RhdGUsIEVudGl0eVR5cGUsIEV4cGFuZENsYXVzZSB9IGZyb20gJ2JyZWV6ZS1jbGllbnQnO1xyXG5cclxuaW50ZXJmYWNlIEVudGl0eUdyb3VwIHtcclxuICBfZW50aXRpZXM6IChFbnRpdHkgfCBudWxsKVtdO1xyXG4gIF9pbmRleE1hcDogeyBbaW5kZXg6IHN0cmluZ106IG51bWJlciB9O1xyXG59XHJcblxyXG4vLyBtb2R1bGUgYXVnbWVudGF0aW9uIGZhaWxlZCB0byBidWlsZCB3aXRoIG5nLXBhY2thZ3IsIHNvIHdlIGhhdmUgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcclxuZXhwb3J0IGludGVyZmFjZSBIYXNFbnRpdHlHcmFwaCBleHRlbmRzIEVudGl0eU1hbmFnZXIge1xyXG4gIC8qKlxyXG4gIEdldCByZWxhdGVkIGVudGl0aWVzIG9mIHJvb3QgZW50aXR5IChvciByb290IGVudGl0aWVzKSBhcyBzcGVjaWZpZWQgYnkgZXhwYW5kLlxyXG4gIEBleGFtcGxlXHJcbiAgICAgIHZhciBncmFwaCA9IGJyZWV6ZS5FbnRpdHlNYW5hZ2VyLmdldEVudGl0eUdyYXBoKGN1c3RvbWVyLCAnT3JkZXJzLk9yZGVyRGV0YWlscycpO1xyXG4gICAgICAvLyBncmFwaCB3aWxsIGJlIHRoZSBjdXN0b21lciwgYWxsIG9mIGl0cyBvcmRlcnMgYW5kIHRoZWlyIGRldGFpbHMgZXZlbiBpZiBkZWxldGVkLlxyXG4gIEBtZXRob2QgZ2V0RW50aXR5R3JhcGhcclxuICBAcGFyYW0gcm9vdHMge0VudGl0eXxBcnJheSBvZiBFbnRpdHl9IFRoZSByb290IGVudGl0eSBvciByb290IGVudGl0aWVzLlxyXG4gIEBwYXJhbSBleHBhbmQge1N0cmluZ3xBcnJheSBvZiBTdHJpbmd8T2JqZWN0fSBhbiBleHBhbmQgc3RyaW5nLCBhIHF1ZXJ5IGV4cGFuZCBjbGF1c2UsIG9yIGFycmF5IG9mIHN0cmluZyBwYXRoc1xyXG4gIEByZXR1cm4ge0FycmF5IG9mIEVudGl0eX0gcm9vdCBlbnRpdGllcyBhbmQgdGhlaXIgcmVsYXRlZCBlbnRpdGllcywgaW5jbHVkaW5nIGRlbGV0ZWQgZW50aXRpZXMuIER1cGxpY2F0ZXMgYXJlIHJlbW92ZWQgYW5kIGVudGl0eSBvcmRlciBpcyBpbmRldGVybWluYXRlLlxyXG4gICoqL1xyXG4gIGdldEVudGl0eUdyYXBoKHJvb3RzOiBFbnRpdHkgfCBBcnJheTxFbnRpdHk+LCBleHBhbmQ6IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCBFeHBhbmRDbGF1c2UpOiBBcnJheTxFbnRpdHk+O1xyXG5cclxuICAvKipcclxuICBFeGVjdXRlIHF1ZXJ5IGxvY2FsbHkgYW5kIHJldHVybiBib3RoIHRoZSBxdWVyeSByZXN1bHRzIGFuZCB0aGVpciByZWxhdGVkIGVudGl0aWVzIGFzIHNwZWNpZmllZCBieSB0aGUgb3B0aW9uYWwgZXhwYW5kIHBhcmFtZXRlciBvciB0aGUgcXVlcnkncyBleHBhbmQgY2xhdXNlLlxyXG4gIEBleGFtcGxlXHJcbiAgICAgIHZhciBxdWVyeSA9IGJyZWV6ZS5FbnRpdHlRdWVyeS5mcm9tKCdDdXN0b21lcnMnKVxyXG4gICAgICAgICAgICAgICAgICAud2hlcmUoJ0NvbXBhbnlOYW1lJywgJ3N0YXJ0c1dpdGgnLCAnQWxmcmVkJylcclxuICAgICAgICAgICAgICAgICAgLmV4cGFuZCgnT3JkZXJzLk9yZGVyRGV0YWlscycpO1xyXG4gICAgICB2YXIgZ3JhcGggPSBtYW5hZ2VyLmdldEVudGl0eUdyYXBoKHF1ZXJ5KTtcclxuICAgICAgLy8gZ3JhcGggd2lsbCBiZSB0aGUgJ0FsZnJlZCcgY3VzdG9tZXJzLCB0aGVpciBvcmRlcnMgYW5kIHRoZWlyIGRldGFpbHMgZXZlbiBpZiBkZWxldGVkLlxyXG4gIEBtZXRob2QgZ2V0RW50aXR5R3JhcGhcclxuICBAcGFyYW0gcXVlcnkge0VudGl0eVF1ZXJ5fSBBIHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkIGFnYWluc3QgdGhlIG1hbmFnZXIncyBsb2NhbCBjYWNoZS5cclxuICBAcGFyYW0gW2V4cGFuZF0ge1N0cmluZ3xBcnJheSBvZiBTdHJpbmd8T2JqZWN0fSBhbiBleHBhbmQgc3RyaW5nLCBhIHF1ZXJ5IGV4cGFuZCBjbGF1c2UsIG9yIGFycmF5IG9mIHN0cmluZyBwYXRoc1xyXG4gIEByZXR1cm4ge0FycmF5IG9mIEVudGl0eX0gbG9jYWwgcXVlcmllZCByb290IGVudGl0aWVzIGFuZCB0aGVpciByZWxhdGVkIGVudGl0aWVzLCBpbmNsdWRpbmcgZGVsZXRlZCBlbnRpdGllcy4gRHVwbGljYXRlcyBhcmUgcmVtb3ZlZCBhbmQgZW50aXR5IG9yZGVyIGlzIGluZGV0ZXJtaW5hdGUuXHJcbiAgKiovXHJcbiAgZ2V0RW50aXR5R3JhcGgocXVlcnk6IEVudGl0eVF1ZXJ5LCBleHBhbmQ6IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCBFeHBhbmRDbGF1c2UpOiBBcnJheTxFbnRpdHk+O1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG1peGluRW50aXR5R3JhcGgoZW1jbGFzczogeyBuZXcoKTogRW50aXR5TWFuYWdlciB9KSB7XHJcbiAgY29uc3QgcHJvdG8gPSBFbnRpdHlNYW5hZ2VyLnByb3RvdHlwZTtcclxuXHJcbiAgaWYgKCEocHJvdG8gYXMgYW55KS5nZXRFbnRpdHlHcmFwaCkge1xyXG4gICAgKHByb3RvIGFzIGFueSkuZ2V0RW50aXR5R3JhcGggPSBnZXRFbnRpdHlHcmFwaDtcclxuICB9XHJcbn1cclxuXHJcbm1peGluRW50aXR5R3JhcGgoRW50aXR5TWFuYWdlcik7XHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0RW50aXR5R3JhcGgocm9vdHM6IEVudGl0eSB8IEFycmF5PEVudGl0eT4gfCBFbnRpdHlRdWVyeSwgZXhwYW5kOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+IHwgRXhwYW5kQ2xhdXNlKSB7XHJcbiAgaWYgKHJvb3RzIGluc3RhbmNlb2YgRW50aXR5UXVlcnkpIHtcclxuICAgIGxldCBuZXdSb290cyA9IHRoaXMuZXhlY3V0ZVF1ZXJ5TG9jYWxseShyb290cyk7XHJcbiAgICByZXR1cm4gZ2V0RW50aXR5R3JhcGhDb3JlKG5ld1Jvb3RzLCBleHBhbmQgfHwgcm9vdHMuZXhwYW5kQ2xhdXNlKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIGdldEVudGl0eUdyYXBoQ29yZShyb290cywgZXhwYW5kKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEVudGl0eUdyYXBoQ29yZShyb290OiBFbnRpdHkgfCBBcnJheTxFbnRpdHk+LCBleHBhbmQ6IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCBFeHBhbmRDbGF1c2UpIHtcclxuICBsZXQgZW50aXR5R3JvdXBNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBFbnRpdHlHcm91cCB9O1xyXG4gIGxldCBncmFwaCA9IFtdIGFzIEFycmF5PEVudGl0eT47XHJcbiAgbGV0IHJvb3RUeXBlOiBFbnRpdHlUeXBlO1xyXG4gIGxldCByb290cyA9IEFycmF5LmlzQXJyYXkocm9vdCkgPyByb290IDogW3Jvb3RdO1xyXG4gIGFkZFRvR3JhcGgocm9vdHMpOyAgICAgLy8gcmVtb3ZlcyBkdXBzICYgbnVsbHNcclxuICByb290cyA9IGdyYXBoLnNsaWNlKCk7IC8vIGNvcHkgb2YgZGUtZHVwZWQgcm9vdHNcclxuICBpZiAocm9vdHMubGVuZ3RoKSB7XHJcbiAgICBnZXRSb290SW5mbygpO1xyXG4gICAgZ2V0RXhwYW5kKCk7XHJcbiAgICBidWlsZEdyYXBoKCk7XHJcbiAgfVxyXG4gIHJldHVybiBncmFwaDtcclxuXHJcbiAgZnVuY3Rpb24gYWRkVG9HcmFwaChlbnRpdGllczogQXJyYXk8RW50aXR5Pikge1xyXG4gICAgZW50aXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZW50aXR5KSB7XHJcbiAgICAgIGlmIChlbnRpdHkgJiYgZ3JhcGguaW5kZXhPZihlbnRpdHkpIDwgMCkge1xyXG4gICAgICAgIGdyYXBoLnB1c2goZW50aXR5KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBnZXRSb290SW5mbygpIHtcclxuICAgIGxldCBjb21wYXRUeXBlczogQXJyYXk8RW50aXR5VHlwZT47XHJcblxyXG4gICAgcm9vdHMuZm9yRWFjaChmdW5jdGlvbiAocm9vdCwgaXgpIHtcclxuICAgICAgbGV0IGFzcGVjdDtcclxuICAgICAgaWYgKCFyb290IHx8ICEoYXNwZWN0ID0gcm9vdC5lbnRpdHlBc3BlY3QpKSB7XHJcbiAgICAgICAgdGhyb3cgZ2V0Um9vdEVycihpeCwgJ2lzIG5vdCBhbiBlbnRpdHknKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYXNwZWN0LmVudGl0eVN0YXRlID09PSBFbnRpdHlTdGF0ZS5EZXRhY2hlZCkge1xyXG4gICAgICAgIHRocm93IGdldFJvb3RFcnIoaXgsICdpcyBhIGRldGFjaGVkIGVudGl0eScpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZW0gPSBhc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICAgICAgaWYgKGVudGl0eUdyb3VwTWFwKSB7XHJcbiAgICAgICAgaWYgKGVudGl0eUdyb3VwTWFwICE9PSBlbS5fZW50aXR5R3JvdXBNYXApIHtcclxuICAgICAgICAgIHRocm93IGdldFJvb3RFcnIoaXgsIFwiaGFzIGEgZGlmZmVyZW50ICdFbnRpdHlNYW5hZ2VyJyB0aGFuIG90aGVyIHJvb3RzXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBlbnRpdHlHcm91cE1hcCA9IGVtLl9lbnRpdHlHcm91cE1hcDtcclxuICAgICAgfVxyXG4gICAgICBnZXRSb290VHlwZShyb290LCBpeCk7XHJcblxyXG4gICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gZ2V0Um9vdEVycihpeDogbnVtYmVyLCBtc2c6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gbmV3IEVycm9yKFwiJ2dldEVudGl0eUdyYXBoJyByb290W1wiICsgaXggKyBcIl0gXCIgKyBtc2cpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGdldFJvb3RUeXBlKHJvb3Q6IEVudGl0eSwgaXg6IG51bWJlcikge1xyXG4gICAgICBsZXQgdGhpc1R5cGUgPSByb290LmVudGl0eVR5cGU7XHJcbiAgICAgIGlmICghcm9vdFR5cGUpIHtcclxuICAgICAgICByb290VHlwZSA9IHRoaXNUeXBlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIGlmIChyb290VHlwZSA9PT0gdGhpc1R5cGUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gVHlwZXMgZGlmZmVycy4gTG9vayBmb3IgY2xvc2VzdCBjb21tb24gYmFzZSB0eXBlXHJcbiAgICAgIC8vIGRvZXMgdGhpc1R5cGUgZGVyaXZlIGZyb20gY3VycmVudCByb290VHlwZT9cclxuICAgICAgbGV0IGJhc2VUeXBlID0gcm9vdFR5cGU7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICBjb21wYXRUeXBlcyA9IGNvbXBhdFR5cGVzIHx8IGJhc2VUeXBlLmdldFNlbGZBbmRTdWJ0eXBlcygpO1xyXG4gICAgICAgIGlmIChjb21wYXRUeXBlcy5pbmRleE9mKHRoaXNUeXBlKSA+IC0xKSB7XHJcbiAgICAgICAgICByb290VHlwZSA9IGJhc2VUeXBlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBiYXNlVHlwZSA9IGJhc2VUeXBlLmJhc2VFbnRpdHlUeXBlO1xyXG4gICAgICAgIGNvbXBhdFR5cGVzID0gbnVsbDtcclxuICAgICAgfSB3aGlsZSAoYmFzZVR5cGUpO1xyXG5cclxuICAgICAgLy8gZG9lcyBjdXJyZW50IHJvb3RUeXBlIGRlcml2ZXMgZnJvbSB0aGlzVHlwZT9cclxuICAgICAgYmFzZVR5cGUgPSB0aGlzVHlwZTtcclxuICAgICAgZG8ge1xyXG4gICAgICAgIGNvbXBhdFR5cGVzID0gYmFzZVR5cGUuZ2V0U2VsZkFuZFN1YnR5cGVzKCk7XHJcbiAgICAgICAgaWYgKGNvbXBhdFR5cGVzLmluZGV4T2Yocm9vdFR5cGUpID4gLTEpIHtcclxuICAgICAgICAgIHJvb3RUeXBlID0gYmFzZVR5cGU7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJhc2VUeXBlID0gYmFzZVR5cGUuYmFzZUVudGl0eVR5cGU7XHJcbiAgICAgIH0gd2hpbGUgKGJhc2VUeXBlKTtcclxuXHJcbiAgICAgIHRocm93IGdldFJvb3RFcnIoaXgsIFwiaXMgbm90IEVudGl0eVR5cGUtY29tcGF0aWJsZSB3aXRoIG90aGVyIHJvb3RzXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gZ2V0RXhwYW5kKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaWYgKCFleHBhbmQpIHtcclxuICAgICAgICBleHBhbmQgPSBbXTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXhwYW5kID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIC8vIHRyaWNreSBiZWNhdXNlIEJyZWV6ZSBleHBhbmRDbGF1c2Ugbm90IGV4cG9zZWQgcHVibGljYWxseVxyXG4gICAgICAgIGV4cGFuZCA9IG5ldyBFbnRpdHlRdWVyeSgpLmV4cGFuZChleHBhbmQpLmV4cGFuZENsYXVzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZXhwYW5kIGluc3RhbmNlb2YgRXhwYW5kQ2xhdXNlICYmIGV4cGFuZC5wcm9wZXJ0eVBhdGhzKSB7IC8vIGV4cGFuZCBjbGF1c2VcclxuICAgICAgICBleHBhbmQgPSBleHBhbmQucHJvcGVydHlQYXRocztcclxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4cGFuZCkpIHtcclxuICAgICAgICBpZiAoIWV4cGFuZC5ldmVyeShmdW5jdGlvbiAoZWxlbSkgeyByZXR1cm4gdHlwZW9mIGVsZW0gPT09ICdzdHJpbmcnOyB9KSkge1xyXG4gICAgICAgICAgdGhyb3cgJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93ICcnO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChfKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICBcImV4cGFuZCBtdXN0IGJlIGFuIGV4cGFuZCBzdHJpbmcsIGFycmF5IG9mIHN0cmluZyBwYXRocywgb3IgYSBxdWVyeSBleHBhbmQgY2xhdXNlXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZnVuY3Rpb24gYnVpbGRHcmFwaCgpIHtcclxuICAgIGlmIChleHBhbmQgJiYgZXhwYW5kIGluc3RhbmNlb2YgQXJyYXkgJiYgZXhwYW5kLmxlbmd0aCkge1xyXG4gICAgICBsZXQgZm5zID0gZXhwYW5kLm1hcChtYWtlUGF0aEZuKTtcclxuICAgICAgZm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7IGZuKHJvb3RzKTsgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBNYWtlIGZ1bmN0aW9uIHRvIGdldCBlbnRpdGllcyBhbG9uZyBhIHNpbmdsZSBleHBhbmQgcGF0aFxyXG4gIC8vIHN1Y2ggYXMgJ09yZGVycy5PcmRlckRldGFpbHMuUHJvZHVjdCdcclxuICBmdW5jdGlvbiBtYWtlUGF0aEZuKHBhdGg6IHN0cmluZykge1xyXG4gICAgbGV0IGZucyA9IFtdIGFzIEFycmF5PEZ1bmN0aW9uPixcclxuICAgICAgc2VnbWVudHMgPSBwYXRoLnNwbGl0KCcuJyksXHJcbiAgICAgIHR5cGUgPSByb290VHlwZTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMCwgc2xlbiA9IHNlZ21lbnRzLmxlbmd0aDsgaSA8IHNsZW47IGkrKykge1xyXG4gICAgICBsZXQgZiA9IG1ha2VQYXRoU2VnbWVudEZuKHR5cGUsIHNlZ21lbnRzW2ldKTtcclxuICAgICAgdHlwZSA9IChmIGFzIGFueSkubmF2VHlwZTtcclxuICAgICAgZm5zLnB1c2goZik7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHBhdGhGbihlbnRpdGllczogQXJyYXk8RW50aXR5Pikge1xyXG4gICAgICBmb3IgKGxldCBqID0gMCwgZmxlbiA9IGZucy5sZW5ndGg7IGogPCBmbGVuOyBqKyspIHtcclxuICAgICAgICBsZXQgZWxlbiA9IGVudGl0aWVzLmxlbmd0aDtcclxuICAgICAgICBpZiAoZWxlbiA9PT0gMCkgeyByZXR1cm47IH0gLy8gbm90aGluZyBsZWZ0IHRvIGV4cGxvcmVcclxuICAgICAgICAvLyBmbiB0byBnZXQgcmVsYXRlZCBlbnRpdGllcyBmb3IgdGhpcyBwYXRoIHNlZ21lbnRcclxuICAgICAgICBsZXQgZm4gPSBmbnNbal07XHJcbiAgICAgICAgLy8gZ2V0IGVudGl0aWVzIHJlbGF0ZWQgYnkgdGhpcyBwYXRoIHNlZ21lbnRcclxuICAgICAgICBsZXQgcmVsYXRlZCA9IFtdIGFzIEFycmF5PEVudGl0eT47XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBlbGVuOyBrKyspIHtcclxuICAgICAgICAgIHJlbGF0ZWQgPSByZWxhdGVkLmNvbmNhdChmbihlbnRpdGllc1trXSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhZGRUb0dyYXBoKHJlbGF0ZWQpO1xyXG4gICAgICAgIGlmIChqID49IGZsZW4gLSAxKSB7IHJldHVybjsgfSAvLyBubyBtb3JlIHBhdGggc2VnbWVudHNcclxuXHJcbiAgICAgICAgLy8gcmVzZXQgZW50aXRpZXMgdG8gZGVkdXBlZCByZWxhdGVkIGVudGl0aWVzXHJcbiAgICAgICAgZW50aXRpZXMgPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBsID0gMCwgcmxlbiA9IHJlbGF0ZWQubGVuZ3RoOyBsIDwgcmxlbjsgbCsrKSB7XHJcbiAgICAgICAgICBsZXQgciA9IHJlbGF0ZWRbbF07XHJcbiAgICAgICAgICBpZiAoZW50aXRpZXMuaW5kZXhPZihyKSA8IDApIHsgZW50aXRpZXMucHVzaChyKTsgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vIE1ha2UgZnVuY3Rpb24gdG8gZ2V0IGVudGl0aWVzIGFsb25nIGEgc2luZ2xlIGV4cGFuZCBwYXRoIHNlZ21lbnRcclxuICAvLyBzdWNoIGFzIHRoZSAnT3JkZXJEZXRhaWxzJyBpbiB0aGUgJ09yZGVycy5PcmRlckRldGFpbHMuUHJvZHVjdCcgcGF0aFxyXG4gIGZ1bmN0aW9uIG1ha2VQYXRoU2VnbWVudEZuKGJhc2VUeXBlOiBFbnRpdHlUeXBlLCBzZWdtZW50OiBzdHJpbmcpIHtcclxuICAgIGxldCBiYXNlVHlwZU5hbWU6IHN0cmluZywgZm4gPSB1bmRlZmluZWQsIG5hdlR5cGU7XHJcbiAgICB0cnkge1xyXG4gICAgICBiYXNlVHlwZU5hbWUgPSBiYXNlVHlwZS5uYW1lO1xyXG4gICAgICBsZXQgbmF2ID0gYmFzZVR5cGUuZ2V0TmF2aWdhdGlvblByb3BlcnR5KHNlZ21lbnQpO1xyXG4gICAgICBsZXQgZmtOYW1lID0gbmF2LmZvcmVpZ25LZXlOYW1lc1swXTtcclxuICAgICAgaWYgKCFuYXYpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3Ioc2VnbWVudCArIFwiIGlzIG5vdCBhIG5hdmlnYXRpb24gcHJvcGVydHkgb2YgXCIgKyBiYXNlVHlwZU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICAgIG5hdlR5cGUgPSBuYXYuZW50aXR5VHlwZTtcclxuICAgICAgLy8gYWRkIGRlcml2ZWQgdHlwZXNcclxuICAgICAgbGV0IG5hdlR5cGVzID0gbmF2VHlwZS5nZXRTZWxmQW5kU3VidHlwZXMoKTtcclxuICAgICAgbGV0IGdycHMgPSBbXSBhcyBBcnJheTxFbnRpdHlHcm91cD47IC8vIG5vbi1lbXB0eSBncm91cHMgZm9yIHRoZXNlIHR5cGVzXHJcbiAgICAgIG5hdlR5cGVzLmZvckVhY2goZnVuY3Rpb24gKHQpIHtcclxuICAgICAgICBsZXQgZ3JwID0gZW50aXR5R3JvdXBNYXBbdC5uYW1lXTtcclxuICAgICAgICBpZiAoZ3JwICYmIGdycC5fZW50aXRpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgZ3Jwcy5wdXNoKGdycCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgbGV0IGdycENvdW50ID0gZ3Jwcy5sZW5ndGg7XHJcbiAgICAgIGlmIChncnBDb3VudCA9PT0gMCkge1xyXG4gICAgICAgIC8vIG5vIHJlbGF0ZWQgZW50aXRpZXMgaW4gY2FjaGVcclxuICAgICAgICBmbiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFtdIGFzIEFycmF5PEVudGl0eT47IH07XHJcbiAgICAgIH0gZWxzZSBpZiAoZmtOYW1lKSB7XHJcbiAgICAgICAgZm4gPSBmdW5jdGlvbiAoZW50aXR5OiBFbnRpdHkpIHtcclxuICAgICAgICAgIGxldCB2YWwgPSBudWxsO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IGtleVZhbHVlID0gZW50aXR5LmdldFByb3BlcnR5KGZrTmFtZSk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZ3JwQ291bnQ7IGkgKz0gMSkge1xyXG4gICAgICAgICAgICAgIHZhbCA9IGdycHNbaV0uX2VudGl0aWVzW2dycHNbaV0uX2luZGV4TWFwW2tleVZhbHVlXV07XHJcbiAgICAgICAgICAgICAgaWYgKHZhbCkgeyBicmVhazsgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7IHJldGhyb3coZSk7IH1cclxuICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBma05hbWUgPSBuYXYuaW52ZXJzZSA/XHJcbiAgICAgICAgICBuYXYuaW52ZXJzZS5mb3JlaWduS2V5TmFtZXNbMF0gOlxyXG4gICAgICAgICAgbmF2LmludkZvcmVpZ25LZXlOYW1lc1swXTtcclxuICAgICAgICBpZiAoIWZrTmFtZSkgeyB0aHJvdyBuZXcgRXJyb3IoXCJObyBpbnZlcnNlIGtleXNcIik7IH1cclxuICAgICAgICBmbiA9IGZ1bmN0aW9uIChlbnRpdHk6IEVudGl0eSkge1xyXG4gICAgICAgICAgbGV0IHZhbHMgPSBbXSBhcyBBcnJheTxFbnRpdHk+O1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IGtleVZhbHVlID0gZW50aXR5LmVudGl0eUFzcGVjdC5nZXRLZXkoKS52YWx1ZXNbMF07XHJcbiAgICAgICAgICAgIGdycHMuZm9yRWFjaChmdW5jdGlvbiAoZ3JwKSB7XHJcbiAgICAgICAgICAgICAgdmFscyA9IHZhbHMuY29uY2F0KGdycC5fZW50aXRpZXMuZmlsdGVyKGZ1bmN0aW9uIChlbikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuICYmIGVuLmdldFByb3BlcnR5KGZrTmFtZSkgPT09IGtleVZhbHVlO1xyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7IHJldGhyb3coZSk7IH1cclxuICAgICAgICAgIHJldHVybiB2YWxzO1xyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgKGZuIGFzIGFueSkubmF2VHlwZSA9IG5hdlR5cGU7XHJcbiAgICAgIChmbiBhcyBhbnkpLnBhdGggPSBzZWdtZW50O1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikgeyByZXRocm93KGVycik7IH1cclxuICAgIHJldHVybiBmbjtcclxuXHJcbiAgICBmdW5jdGlvbiByZXRocm93KGU6IEVycm9yKSB7XHJcbiAgICAgIGxldCB0eXBlTmFtZSA9IGJhc2VUeXBlTmFtZSB8fCBiYXNlVHlwZTtcclxuICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKFwiJ2dldEVudGl0eUdyYXBoJyBjYW4ndCBleHBhbmQgJ1wiICsgc2VnbWVudCArIFwiJyBmb3IgXCIgKyB0eXBlTmFtZSk7XHJcbiAgICAgIChlcnJvciBhcyBhbnkpLmlubmVyRXJyb3IgPSBlO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcblxyXG4iXX0=
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './mixin-save-queuing';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1taXhpbi1zYXZlLXF1ZXVpbmcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50L21peGluLXNhdmUtcXVldWluZy8iLCJzb3VyY2VzIjpbImJyZWV6ZS1jbGllbnQtbWl4aW4tc2F2ZS1xdWV1aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9taXhpbi1zYXZlLXF1ZXVpbmcnO1xuIl19