bx-rest 1.5.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/CHANGELOG.md +163 -0
  2. package/README.en.md +206 -3
  3. package/README.md +207 -3
  4. package/consts/part-name-methods.d.ts +1 -0
  5. package/esm2022/consts/part-name-methods.mjs +2 -1
  6. package/esm2022/functions/errors.mjs +17 -5
  7. package/esm2022/functions/uniqueElementCode.mjs +24 -0
  8. package/esm2022/map/pull/application/config.mjs +25 -29
  9. package/esm2022/map/pull.mjs +8 -13
  10. package/esm2022/public-api.mjs +3 -2
  11. package/esm2022/request-navvy/bizproc.mjs +18 -9
  12. package/esm2022/request-navvy/booking/v1/resource.mjs +2 -2
  13. package/esm2022/request-navvy/booking/v1/resourcetype.mjs +2 -2
  14. package/esm2022/request-navvy/calendar/event.mjs +1 -9
  15. package/esm2022/request-navvy/catalog/catalog.mjs +2 -2
  16. package/esm2022/request-navvy/catalog/document/element.mjs +2 -2
  17. package/esm2022/request-navvy/catalog/document.mjs +2 -2
  18. package/esm2022/request-navvy/catalog/documentcontractor.mjs +2 -2
  19. package/esm2022/request-navvy/catalog/extra.mjs +2 -2
  20. package/esm2022/request-navvy/catalog/measure.mjs +2 -2
  21. package/esm2022/request-navvy/catalog/price.mjs +2 -2
  22. package/esm2022/request-navvy/catalog/pricetype.mjs +2 -2
  23. package/esm2022/request-navvy/catalog/pricetypegroup.mjs +2 -2
  24. package/esm2022/request-navvy/catalog/pricetypelang.mjs +2 -2
  25. package/esm2022/request-navvy/catalog/product/offer.mjs +2 -2
  26. package/esm2022/request-navvy/catalog/product/service.mjs +2 -2
  27. package/esm2022/request-navvy/catalog/product/sku.mjs +2 -2
  28. package/esm2022/request-navvy/catalog/product.mjs +2 -2
  29. package/esm2022/request-navvy/catalog/productproperty.mjs +2 -2
  30. package/esm2022/request-navvy/catalog/productpropertyenum.mjs +2 -2
  31. package/esm2022/request-navvy/catalog/productpropertyfeature.mjs +2 -2
  32. package/esm2022/request-navvy/catalog/productpropertysection.mjs +2 -2
  33. package/esm2022/request-navvy/catalog/ratio.mjs +2 -2
  34. package/esm2022/request-navvy/catalog/roundingrule.mjs +2 -2
  35. package/esm2022/request-navvy/catalog/section.mjs +2 -2
  36. package/esm2022/request-navvy/catalog/store.mjs +2 -2
  37. package/esm2022/request-navvy/catalog/storeproduct.mjs +2 -2
  38. package/esm2022/request-navvy/catalog/userfield/document.mjs +2 -2
  39. package/esm2022/request-navvy/catalog/vat.mjs +2 -2
  40. package/esm2022/request-navvy/crm/activity.mjs +2 -2
  41. package/esm2022/request-navvy/crm/deal/recurring.mjs +2 -2
  42. package/esm2022/request-navvy/crm/item/product/row.mjs +2 -2
  43. package/esm2022/request-navvy/crm/orderentity.mjs +2 -2
  44. package/esm2022/request-navvy/crm/requisite/link.mjs +2 -2
  45. package/esm2022/request-navvy/crm/stagehistory.mjs +2 -2
  46. package/esm2022/request-navvy/crm/timeline/bindings.mjs +2 -2
  47. package/esm2022/request-navvy/disk/operation.mjs +3 -10
  48. package/esm2022/request-navvy/documentgenerator/document.mjs +2 -2
  49. package/esm2022/request-navvy/documentgenerator/numerator.mjs +2 -2
  50. package/esm2022/request-navvy/documentgenerator/role.mjs +2 -2
  51. package/esm2022/request-navvy/documentgenerator/template.mjs +2 -2
  52. package/esm2022/request-navvy/pull/application/config.mjs +10 -4
  53. package/esm2022/request-navvy/pull/application/event.mjs +23 -0
  54. package/esm2022/request-navvy/pull/application/push.mjs +23 -0
  55. package/esm2022/request-navvy/pull/channel/public.mjs +4 -4
  56. package/esm2022/request-navvy/pull/config.mjs +8 -4
  57. package/esm2022/request-navvy/pull.mjs +12 -1
  58. package/esm2022/request-navvy/sale/basketitem.mjs +2 -2
  59. package/esm2022/request-navvy/sale/basketproperties.mjs +2 -2
  60. package/esm2022/request-navvy/sale/businessvaluepersondomain.mjs +2 -2
  61. package/esm2022/request-navvy/sale/order.mjs +2 -2
  62. package/esm2022/request-navvy/sale/payment.mjs +2 -2
  63. package/esm2022/request-navvy/sale/paymentitembasket.mjs +2 -2
  64. package/esm2022/request-navvy/sale/paymentitemshipment.mjs +2 -2
  65. package/esm2022/request-navvy/sale/persontype.mjs +2 -2
  66. package/esm2022/request-navvy/sale/property.mjs +2 -2
  67. package/esm2022/request-navvy/sale/propertyrelation.mjs +2 -2
  68. package/esm2022/request-navvy/sale/propertyvalue.mjs +2 -2
  69. package/esm2022/request-navvy/sale/propertyvariant.mjs +2 -2
  70. package/esm2022/request-navvy/sale/shipment.mjs +2 -2
  71. package/esm2022/request-navvy/sale/shipmentitem.mjs +2 -2
  72. package/esm2022/request-navvy/sale/shipmentproperty.mjs +2 -2
  73. package/esm2022/request-navvy/sale/shipmentpropertyvalue.mjs +2 -2
  74. package/esm2022/request-navvy/sale/status.mjs +2 -2
  75. package/esm2022/request-navvy/sale/statuslang.mjs +2 -2
  76. package/esm2022/request-navvy/sale/tradebinding.mjs +2 -2
  77. package/esm2022/request-navvy/sale/tradeplatform.mjs +2 -2
  78. package/esm2022/request-navvy/socialnetwork/api/livefeed.mjs +1 -5
  79. package/esm2022/request-navvy/task/operation/elapseditem.mjs +51 -28
  80. package/esm2022/request-navvy/tasks/task.mjs +1 -119
  81. package/esm2022/request-navvy/userfieldtype.mjs +2 -2
  82. package/esm2022/rest/navvy.mjs +66 -64
  83. package/esm2022/services/base.mjs +1 -4
  84. package/esm2022/services/context.mjs +59 -0
  85. package/esm2022/services/http/HttpBX.mjs +52 -19
  86. package/esm2022/services/http/authRefresh.mjs +25 -23
  87. package/esm2022/services/http/fetch.mjs +45 -0
  88. package/esm2022/services/http/http.mjs +25 -71
  89. package/esm2022/services/http/middleware.mjs +203 -0
  90. package/esm2022/services/http/sessionKey.mjs +16 -5
  91. package/esm2022/services/http/transport.mjs +5 -0
  92. package/esm2022/services/navvy/navvy-pag-nav-keyed.mjs +31 -0
  93. package/esm2022/services/navvy/navvy-support.mjs +2 -15
  94. package/esm2022/services/navvy.mjs +32 -31
  95. package/esm2022/typification/rest/calendar/event/get.mjs +1 -1
  96. package/esm2022/typification/rest/crm/requisite.mjs +1 -1
  97. package/esm2022/typification/rest/crm/timeline/bindings.mjs +1 -1
  98. package/esm2022/typification/rest/pull/application/config/get.mjs +1 -1
  99. package/esm2022/typification/rest/pull/application/event/add.mjs +2 -0
  100. package/esm2022/typification/rest/pull/application/push/add.mjs +2 -0
  101. package/esm2022/typification/rest/pull/config/get.mjs +1 -1
  102. package/esm2022/typification/rest/pull.mjs +3 -1
  103. package/esm2022/typification/rest/tasks/task/get.mjs +1 -1
  104. package/esm2022/typification/settings.mjs +1 -1
  105. package/fesm2022/bx-rest.mjs +800 -588
  106. package/fesm2022/bx-rest.mjs.map +1 -1
  107. package/functions/errors.d.ts +9 -0
  108. package/functions/uniqueElementCode.d.ts +12 -0
  109. package/map/pull/application/config.d.ts +3 -0
  110. package/package.json +1 -1
  111. package/public-api.d.ts +4 -2
  112. package/request-navvy/booking/v1/resource.d.ts +1 -1
  113. package/request-navvy/booking/v1/resourcetype.d.ts +1 -1
  114. package/request-navvy/catalog/catalog.d.ts +1 -1
  115. package/request-navvy/catalog/document/element.d.ts +1 -1
  116. package/request-navvy/catalog/document.d.ts +1 -1
  117. package/request-navvy/catalog/documentcontractor.d.ts +1 -1
  118. package/request-navvy/catalog/extra.d.ts +1 -1
  119. package/request-navvy/catalog/measure.d.ts +1 -1
  120. package/request-navvy/catalog/price.d.ts +1 -1
  121. package/request-navvy/catalog/pricetype.d.ts +1 -1
  122. package/request-navvy/catalog/pricetypegroup.d.ts +1 -1
  123. package/request-navvy/catalog/pricetypelang.d.ts +1 -1
  124. package/request-navvy/catalog/product/offer.d.ts +1 -1
  125. package/request-navvy/catalog/product/service.d.ts +1 -1
  126. package/request-navvy/catalog/product/sku.d.ts +1 -1
  127. package/request-navvy/catalog/product.d.ts +1 -1
  128. package/request-navvy/catalog/productproperty.d.ts +1 -1
  129. package/request-navvy/catalog/productpropertyenum.d.ts +1 -1
  130. package/request-navvy/catalog/productpropertyfeature.d.ts +1 -1
  131. package/request-navvy/catalog/productpropertysection.d.ts +1 -1
  132. package/request-navvy/catalog/ratio.d.ts +1 -1
  133. package/request-navvy/catalog/roundingrule.d.ts +1 -1
  134. package/request-navvy/catalog/section.d.ts +1 -1
  135. package/request-navvy/catalog/store.d.ts +1 -1
  136. package/request-navvy/catalog/storeproduct.d.ts +1 -1
  137. package/request-navvy/catalog/userfield/document.d.ts +1 -1
  138. package/request-navvy/catalog/vat.d.ts +1 -1
  139. package/request-navvy/crm/activity.d.ts +1 -1
  140. package/request-navvy/crm/deal/recurring.d.ts +1 -1
  141. package/request-navvy/crm/item/product/row.d.ts +5 -1
  142. package/request-navvy/crm/orderentity.d.ts +5 -1
  143. package/request-navvy/crm/requisite/link.d.ts +1 -1
  144. package/request-navvy/crm/stagehistory.d.ts +5 -1
  145. package/request-navvy/crm/timeline/bindings.d.ts +1 -1
  146. package/request-navvy/documentgenerator/document.d.ts +1 -1
  147. package/request-navvy/documentgenerator/numerator.d.ts +1 -1
  148. package/request-navvy/documentgenerator/role.d.ts +1 -1
  149. package/request-navvy/documentgenerator/template.d.ts +1 -1
  150. package/request-navvy/pull/application/config.d.ts +9 -3
  151. package/request-navvy/pull/application/event.d.ts +17 -0
  152. package/request-navvy/pull/application/push.d.ts +17 -0
  153. package/request-navvy/pull/config.d.ts +7 -3
  154. package/request-navvy/pull.d.ts +11 -0
  155. package/request-navvy/sale/basketitem.d.ts +1 -1
  156. package/request-navvy/sale/basketproperties.d.ts +1 -1
  157. package/request-navvy/sale/businessvaluepersondomain.d.ts +1 -1
  158. package/request-navvy/sale/order.d.ts +1 -1
  159. package/request-navvy/sale/payment.d.ts +1 -1
  160. package/request-navvy/sale/paymentitembasket.d.ts +1 -1
  161. package/request-navvy/sale/paymentitemshipment.d.ts +1 -1
  162. package/request-navvy/sale/persontype.d.ts +1 -1
  163. package/request-navvy/sale/property.d.ts +1 -1
  164. package/request-navvy/sale/propertyrelation.d.ts +1 -1
  165. package/request-navvy/sale/propertyvalue.d.ts +1 -1
  166. package/request-navvy/sale/propertyvariant.d.ts +1 -1
  167. package/request-navvy/sale/shipment.d.ts +1 -1
  168. package/request-navvy/sale/shipmentitem.d.ts +1 -1
  169. package/request-navvy/sale/shipmentproperty.d.ts +1 -1
  170. package/request-navvy/sale/shipmentpropertyvalue.d.ts +1 -1
  171. package/request-navvy/sale/status.d.ts +1 -1
  172. package/request-navvy/sale/statuslang.d.ts +1 -1
  173. package/request-navvy/sale/tradebinding.d.ts +1 -1
  174. package/request-navvy/sale/tradeplatform.d.ts +1 -1
  175. package/request-navvy/task/operation/elapseditem.d.ts +15 -10
  176. package/request-navvy/userfieldtype.d.ts +1 -1
  177. package/rest/navvy.d.ts +9 -0
  178. package/services/context.d.ts +43 -0
  179. package/services/http/HttpBX.d.ts +11 -0
  180. package/services/http/authRefresh.d.ts +5 -1
  181. package/services/http/fetch.d.ts +22 -0
  182. package/services/http/http.d.ts +20 -9
  183. package/services/http/middleware.d.ts +32 -0
  184. package/services/http/sessionKey.d.ts +10 -0
  185. package/services/http/transport.d.ts +28 -0
  186. package/services/navvy/navvy-pag-nav-keyed.d.ts +18 -0
  187. package/services/navvy/navvy-support.d.ts +0 -10
  188. package/services/navvy.d.ts +17 -0
  189. package/typification/rest/calendar/event/get.d.ts +1 -1
  190. package/typification/rest/crm/requisite.d.ts +1 -1
  191. package/typification/rest/crm/timeline/bindings.d.ts +2 -1
  192. package/typification/rest/pull/application/config/get.d.ts +1 -1
  193. package/typification/rest/pull/application/event/add.d.ts +24 -0
  194. package/typification/rest/pull/application/push/add.d.ts +16 -0
  195. package/typification/rest/pull/config/get.d.ts +28 -3
  196. package/typification/rest/pull.d.ts +2 -0
  197. package/typification/settings.d.ts +68 -0
  198. package/esm2022/functions/errorHandler.mjs +0 -34
  199. package/esm2022/request/app.mjs +0 -13
  200. package/esm2022/request/bizproc/activity.mjs +0 -3
  201. package/esm2022/request/bizproc/event.mjs +0 -3
  202. package/esm2022/request/bizproc/robot.mjs +0 -3
  203. package/esm2022/request/bizproc/task.mjs +0 -3
  204. package/esm2022/request/bizproc/workflow/instance.mjs +0 -3
  205. package/esm2022/request/bizproc/workflow/template.mjs +0 -3
  206. package/esm2022/request/bizproc/workflow.mjs +0 -18
  207. package/esm2022/request/bizproc.mjs +0 -15
  208. package/esm2022/request/department.mjs +0 -26
  209. package/esm2022/request/disk/attachedObject.mjs +0 -14
  210. package/esm2022/request/disk/file.mjs +0 -18
  211. package/esm2022/request/disk/folder.mjs +0 -117
  212. package/esm2022/request/disk.mjs +0 -11
  213. package/esm2022/request/lists/element.mjs +0 -18
  214. package/esm2022/request/lists/field.mjs +0 -35
  215. package/esm2022/request/lists.mjs +0 -86
  216. package/esm2022/request/log/blogcomment.mjs +0 -3
  217. package/esm2022/request/log/blogpost.mjs +0 -18
  218. package/esm2022/request/log.mjs +0 -9
  219. package/esm2022/request/pull/application/config.mjs +0 -11
  220. package/esm2022/request/pull/channel/public.mjs +0 -18
  221. package/esm2022/request/pull/config.mjs +0 -13
  222. package/esm2022/request/pull.mjs +0 -11
  223. package/esm2022/request/server.mjs +0 -14
  224. package/esm2022/request/socialnetwork/api/contentview.mjs +0 -14
  225. package/esm2022/request/socialnetwork/api/livefeed/blogpost/important.mjs +0 -14
  226. package/esm2022/request/socialnetwork/api/livefeed/blogpost.mjs +0 -7
  227. package/esm2022/request/socialnetwork/api/livefeed.mjs +0 -7
  228. package/esm2022/request/socialnetwork/api.mjs +0 -9
  229. package/esm2022/request/socialnetwork.mjs +0 -8
  230. package/esm2022/request/sonet_group.mjs +0 -24
  231. package/esm2022/request/task/commentitem.mjs +0 -32
  232. package/esm2022/request/task/elapseditem.mjs +0 -40
  233. package/esm2022/request/task/item/userfield.mjs +0 -14
  234. package/esm2022/request/task/item.mjs +0 -7
  235. package/esm2022/request/task/planner.mjs +0 -11
  236. package/esm2022/request/task.mjs +0 -13
  237. package/esm2022/request/tasks/task/result.mjs +0 -22
  238. package/esm2022/request/tasks/task.mjs +0 -110
  239. package/esm2022/request/tasks.mjs +0 -7
  240. package/esm2022/request/user/userfield.mjs +0 -14
  241. package/esm2022/request/user.mjs +0 -40
  242. package/esm2022/rest/base.mjs +0 -39
  243. package/esm2022/services/http/HttpData.mjs +0 -77
  244. package/esm2022/services/http/base/base.mjs +0 -4
  245. package/esm2022/services/http/httpNavvy.mjs +0 -14
  246. package/esm2022/typification/base/answers.mjs +0 -438
  247. package/esm2022/typification/base/params.mjs +0 -525
  248. package/esm2022/typification/base/workpiece/methods-list.mjs +0 -2
  249. package/esm2022/typification/base/workpiece/methods.mjs +0 -2
  250. package/functions/errorHandler.d.ts +0 -10
  251. package/request/app.d.ts +0 -8
  252. package/request/bizproc/activity.d.ts +0 -2
  253. package/request/bizproc/event.d.ts +0 -2
  254. package/request/bizproc/robot.d.ts +0 -2
  255. package/request/bizproc/task.d.ts +0 -2
  256. package/request/bizproc/workflow/instance.d.ts +0 -2
  257. package/request/bizproc/workflow/template.d.ts +0 -2
  258. package/request/bizproc/workflow.d.ts +0 -13
  259. package/request/bizproc.d.ts +0 -12
  260. package/request/department.d.ts +0 -18
  261. package/request/disk/attachedObject.d.ts +0 -8
  262. package/request/disk/file.d.ts +0 -10
  263. package/request/disk/folder.d.ts +0 -96
  264. package/request/disk.d.ts +0 -8
  265. package/request/lists/element.d.ts +0 -11
  266. package/request/lists/field.d.ts +0 -11
  267. package/request/lists.d.ts +0 -31
  268. package/request/log/blogcomment.d.ts +0 -2
  269. package/request/log/blogpost.d.ts +0 -11
  270. package/request/log.d.ts +0 -6
  271. package/request/pull/application/config.d.ts +0 -5
  272. package/request/pull/channel/public.d.ts +0 -5
  273. package/request/pull/config.d.ts +0 -7
  274. package/request/pull.d.ts +0 -8
  275. package/request/server.d.ts +0 -7
  276. package/request/socialnetwork/api/contentview.d.ts +0 -6
  277. package/request/socialnetwork/api/livefeed/blogpost/important.d.ts +0 -6
  278. package/request/socialnetwork/api/livefeed/blogpost.d.ts +0 -4
  279. package/request/socialnetwork/api/livefeed.d.ts +0 -4
  280. package/request/socialnetwork/api.d.ts +0 -6
  281. package/request/socialnetwork.d.ts +0 -4
  282. package/request/sonet_group.d.ts +0 -8
  283. package/request/task/commentitem.d.ts +0 -23
  284. package/request/task/elapseditem.d.ts +0 -26
  285. package/request/task/item/userfield.d.ts +0 -6
  286. package/request/task/item.d.ts +0 -4
  287. package/request/task/planner.d.ts +0 -4
  288. package/request/task.d.ts +0 -10
  289. package/request/tasks/task/result.d.ts +0 -13
  290. package/request/tasks/task.d.ts +0 -37
  291. package/request/tasks.d.ts +0 -4
  292. package/request/user/userfield.d.ts +0 -8
  293. package/request/user.d.ts +0 -24
  294. package/rest/base.d.ts +0 -33
  295. package/services/http/HttpData.d.ts +0 -7
  296. package/services/http/base/base.d.ts +0 -7
  297. package/services/http/httpNavvy.d.ts +0 -10
  298. package/typification/base/answers.d.ts +0 -12
  299. package/typification/base/params.d.ts +0 -16
  300. package/typification/base/workpiece/methods-list.d.ts +0 -247
  301. package/typification/base/workpiece/methods.d.ts +0 -20
@@ -1,4 +1,4 @@
1
- import { throwError, forkJoin, from, defer } from 'rxjs';
1
+ import { Observable, throwError, forkJoin, defer } from 'rxjs';
2
2
  import clone from 'just-clone';
3
3
  import { HttpServices } from './http';
4
4
  import flatten from 'just-flatten-it';
@@ -7,6 +7,9 @@ import { switchMap } from 'rxjs/operators';
7
7
  import { prepareBaseAddress } from '../base';
8
8
  import { serializeBitrixParams as stringifyBitrixParams } from '../../functions/serializeBitrixParams';
9
9
  import { withAuthRefresh } from './authRefresh';
10
+ import { composeMiddleware } from './transport';
11
+ import { builtInMiddleware } from './middleware';
12
+ import { fetchSend } from './fetch';
10
13
  export class HttpBXServices extends HttpServices {
11
14
  /**
12
15
  * Не считайте этот метод образцом/финальным API.
@@ -71,8 +74,8 @@ export class HttpBXServices extends HttpServices {
71
74
  get(name, params = {}, headers) {
72
75
  return this.httpGet(this.getNameMethod(name), params, undefined, headers);
73
76
  }
74
- // settings — только для совместимости сигнатуры с HttpServices: здесь тело
75
- // уходит JSON-ом/urlencoded, и пересчёт дат из iHttpParamSettings не нужен.
77
+ // settings не используется и оставлен ради прежней сигнатуры: headers
78
+ // остаётся четвёртым параметром у httpPost и httpGet.
76
79
  httpPost(url, params = {}, settings, headers) {
77
80
  // defer() откладывает всё содержимое (в том числе чтение BXRestSettings
78
81
  // через this.session.*) до реальной подписки — иначе даже с "живым"
@@ -103,20 +106,19 @@ export class HttpBXServices extends HttpServices {
103
106
  return throwError(() => this.session.getBaseUrlError('post'));
104
107
  }
105
108
  const fullUrl = prepareBaseAddress(baseUrl) + url;
106
- if (key === 'sessid') {
107
- // Преобразуем параметры в формат x-www-form-urlencoded
108
- const bodyString = this.serializeBitrixParams(paramsClone);
109
- return from(this.axiosInstance.post(fullUrl, bodyString, {
110
- withCredentials: this.session.getWithCredentials(),
111
- headers: this.buildHeaders(headers, { 'Content-Type': 'application/x-www-form-urlencoded' }),
112
- }).then((response) => response.data));
113
- }
114
- return from(this.axiosInstance.post(fullUrl, paramsClone, {
109
+ // sessid — тело x-www-form-urlencoded, остальные ключи — JSON
110
+ const urlencoded = key === 'sessid';
111
+ return this.send({
112
+ method: 'POST',
113
+ url: fullUrl,
114
+ data: urlencoded ? this.serializeBitrixParams(paramsClone) : paramsClone,
115
115
  withCredentials: this.session.getWithCredentials(),
116
- headers: this.buildHeaders(headers, { 'Content-Type': 'application/json' }),
117
- }).then((response) => response.data));
116
+ headers: this.buildHeaders(headers, {
117
+ 'Content-Type': urlencoded ? 'application/x-www-form-urlencoded' : 'application/json'
118
+ }),
119
+ });
118
120
  }));
119
- }));
121
+ }), this.session.ctx);
120
122
  }
121
123
  httpGet(url, params = {}, settings, headers) {
122
124
  // Та же причина, что и у httpPost выше: откладываем чтение BXRestSettings
@@ -144,12 +146,43 @@ export class HttpBXServices extends HttpServices {
144
146
  const fullUrl = prepareBaseAddress(baseUrl) + url;
145
147
  const queryString = this.serializeBitrixParams(paramsClone);
146
148
  const finalUrl = `${fullUrl}?${queryString}`;
147
- return from(this.axiosInstance.get(finalUrl, {
149
+ return this.send({
150
+ method: 'GET',
151
+ url: finalUrl,
148
152
  withCredentials: this.session.getWithCredentials(),
149
153
  headers: this.buildHeaders(headers),
150
- }).then((response) => response.data));
154
+ });
151
155
  }));
152
- }));
156
+ }), this.session.ctx);
157
+ }
158
+ /**
159
+ * Отправка через шаги из настроек: `retryOnQueryLimit`, `throttle`,
160
+ * `timeout`, `logRequests`, затем `middleware`; последним идёт транспорт
161
+ * клиента — axios или `fetch` (`transport`). Настройки читаются при
162
+ * подписке. Отписка отменяет HTTP-запрос (AbortSignal). Ошибка транспорта
163
+ * уходит дальше как есть: у axios в ней весь запрос, вместе с токеном и
164
+ * секретом вебхука (см. README, «Обработка ошибок»).
165
+ */
166
+ send(config) {
167
+ return new Observable(subscriber => {
168
+ const controller = new AbortController();
169
+ const ctx = this.session.ctx;
170
+ const settings = ctx.settings;
171
+ const send = composeMiddleware([...builtInMiddleware(settings, ctx), ...this.session.getMiddleware()], (settings.transport === 'fetch') ? fetchSend : request => this.axiosSend(request));
172
+ send({ ...config, signal: controller.signal }).then(data => {
173
+ subscriber.next(data);
174
+ subscriber.complete();
175
+ }, (error) => subscriber.error(error));
176
+ return () => controller.abort();
177
+ });
178
+ }
179
+ /** Транспорт по умолчанию: axios клиента, как и раньше через post()/get(). */
180
+ axiosSend(config) {
181
+ const options = { headers: config.headers, withCredentials: config.withCredentials, signal: config.signal };
182
+ const request = (config.method === 'GET')
183
+ ? this.axiosInstance.get(config.url, options)
184
+ : this.axiosInstance.post(config.url, config.data, options);
185
+ return request.then(response => response.data);
153
186
  }
154
187
  /**
155
188
  * Заголовки запроса: `BXRestSettings.headers`, поверх них — заголовки
@@ -167,4 +200,4 @@ export class HttpBXServices extends HttpServices {
167
200
  return arr.join('.');
168
201
  }
169
202
  }
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNwRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFL0MsTUFBTSxPQUFPLGNBQWUsU0FBUSxZQUFZO0lBRTlDOzs7O09BSUc7SUFDSCxNQUFNLENBQU8sS0FBeUQ7UUFFcEUsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7UUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFBLENBQUMsbUJBQW1CO1FBQ25DLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLDJDQUEyQztRQUM3RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0QsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUNiLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFO2dCQUNqQyxJQUFJLEVBQUUsQ0FBQztnQkFDUCxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUNsQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQTtnQkFDdkIsQ0FBQyxDQUFDLENBQUM7YUFDSixDQUFDLENBQUE7UUFDSixDQUFDLENBQUMsQ0FDcUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsWUFBWSxDQUFJLEtBQXlEO1FBQ3ZFLElBQUksR0FBRyxHQUEyQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FDekQsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDWCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQ2IsT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDLEVBQ0QsRUFBNEIsQ0FDN0IsQ0FBQTtRQUNELEtBQUssSUFBSSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDM0UsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM1RSxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFBO0lBQ1osQ0FBQztJQUVELGVBQWUsQ0FBSSxHQUE2QjtRQUM5QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUN0QyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQ3hGLENBQUE7SUFDMUIsQ0FBQztJQUVELHlCQUF5QixDQUFJLEdBQTZCO1FBQ3hELE9BQU8sT0FBTyxDQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNqRCxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxJQUFJLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3RSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQ2pCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUNoQixDQUFBO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFJLENBQUksSUFBYyxFQUFFLFNBQWMsRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsT0FBZ0M7UUFDekYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQW1CLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDeEcsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEdBQUcsQ0FBSSxJQUFjLEVBQUUsU0FBYyxFQUFFLEVBQUUsT0FBZ0M7UUFDdkUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFtQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDN0YsQ0FBQztJQUVELDJFQUEyRTtJQUMzRSw0RUFBNEU7SUFDbkUsUUFBUSxDQUNmLEdBQVcsRUFDWCxTQUFjLEVBQUUsRUFDaEIsUUFBNkIsRUFDN0IsT0FBZ0M7UUFFaEMsd0VBQXdFO1FBQ3hFLG9FQUFvRTtRQUNwRSxzRUFBc0U7UUFDdEUsb0VBQW9FO1FBQ3BFLGlEQUFpRDtRQUNqRCxFQUFFO1FBQ0YseUVBQXlFO1FBQ3pFLHVFQUF1RTtRQUN2RSxvRUFBb0U7UUFDcEUsd0VBQXdFO1FBQ3hFLHdCQUF3QjtRQUN4QixPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBRXZELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7Z0JBQzVELENBQUM7Z0JBRUQsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3JCLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO2dCQUMvRCxDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFFakQsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3JCLHVEQUF1RDtvQkFDdkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFBO29CQUMxRCxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBSSxPQUFPLEVBQUUsVUFBVSxFQUFFO3dCQUM5QyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTt3QkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUMsY0FBYyxFQUFFLG1DQUFtQyxFQUFDLENBQUM7cUJBQzNGLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDckMsQ0FBQTtnQkFDSCxDQUFDO2dCQUVELE9BQU8sSUFBSSxDQUNULElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFJLE9BQU8sRUFBRSxXQUFXLEVBQzdDO29CQUNFLGVBQWUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFO29CQUNsRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQztpQkFDMUUsQ0FDRixDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUNwQyxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRVEsT0FBTyxDQUNkLEdBQVcsRUFDWCxTQUFjLEVBQUUsRUFDaEIsUUFBNkIsRUFDN0IsT0FBZ0M7UUFFaEMsMEVBQTBFO1FBQzFFLHNFQUFzRTtRQUN0RSx5RUFBeUU7UUFDekUsNkRBQTZEO1FBQzdELGdDQUFnQztRQUNoQyxPQUFPLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2hDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFBO1lBRXZELElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNWLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7Z0JBQzNELENBQUM7Z0JBRUQsSUFBSSxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ3JCLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDYixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO2dCQUM5RCxDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtnQkFDakQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUMzRCxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQTtnQkFFNUMsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUksUUFBUSxFQUFFO29CQUNsQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRTtvQkFDbEQsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO2lCQUNwQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ3JDLENBQUE7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFlBQVksQ0FBQyxPQUFnQyxFQUFFLFdBQW1DLEVBQUU7UUFDMUYsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxDQUFBO0lBQ2xFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFlO1FBQ25DLE9BQU8scUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFhO1FBQ3pCLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN0QixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmb3JrSm9pbiwgZnJvbSwgZGVmZXIgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgY2xvbmUgZnJvbSAnanVzdC1jbG9uZSdcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2VzIH0gZnJvbSAnLi9odHRwJ1xyXG5pbXBvcnQge1xyXG4gIGlCYXRjaFJlcXVlc3RBbnN3ZXIsIGlCYXRjaFJlcXVlc3RQYXJhbSwgaUJhdGNoUmVxdWVzdFBhcmFtQXJyLCBpQmF0Y2hSZXF1ZXN0UGFyYW1IdHRwLCBrZXlCYXRjaCxcclxufSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9iYXRjaC9iYXRjaFJlcXVlc3RQYXJhbSdcclxuaW1wb3J0IHsgaUJYUmVzdEFuc3dlciB9IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2Jhc2UvYW5zd2VyJ1xyXG5pbXBvcnQgZmxhdHRlbiBmcm9tICdqdXN0LWZsYXR0ZW4taXQnXHJcbmltcG9ydCB7IGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9tYXBSZXN1bHQnXHJcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xyXG5pbXBvcnQgeyBwcmVwYXJlQmFzZUFkZHJlc3MgfSBmcm9tICcuLi9iYXNlJ1xyXG5pbXBvcnQgeyBzZXJpYWxpemVCaXRyaXhQYXJhbXMgYXMgc3RyaW5naWZ5Qml0cml4UGFyYW1zIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL3NlcmlhbGl6ZUJpdHJpeFBhcmFtcydcclxuaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXHJcbmltcG9ydCB7IHdpdGhBdXRoUmVmcmVzaCB9IGZyb20gJy4vYXV0aFJlZnJlc2gnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQndC1INGB0YfQuNGC0LDQudGC0LUg0Y3RgtC+0YIg0LzQtdGC0L7QtCDQvtCx0YDQsNC30YbQvtC8L9GE0LjQvdCw0LvRjNC90YvQvCBBUEkuXHJcbiAgICogVE9ETzog0KPQtNCw0LvQuNGC0Ywg0LTQsNC90L3Ri9C5INC80LXRgtC+0LQg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCDQtdCz0L4g0LIg0YDQsNC30LTQtdC70LUgTmF2dnlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBicmFuY2g8VCwgQT4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHByZXBhcmVQYXJhbSA9IE9iamVjdC5lbnRyaWVzPHN0cmluZz4odGhpcy5wcmVwYXJlQmF0Y2g8VD4ocGFyYW0pKVxyXG4gICAgY29uc3Qgc2l6ZSA9IDUwIC8vINCx0L7Qu9GM0YjQtSDQvdC1INC+0YLQtNCw0YHRglxyXG4gICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGguY2VpbChwcmVwYXJlUGFyYW0ubGVuZ3RoIC8gc2l6ZSk7IGkrKykge1xyXG4gICAgICBzdWJhcnJheVtpXSA9IHByZXBhcmVQYXJhbS5zbGljZSgoaSAqIHNpemUpLCAoaSAqIHNpemUpICsgc2l6ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdCgnYmF0Y2guanNvbicsIHtcclxuICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICBjbWQ6IE9iamVjdC5hc3NpZ24oe30sIC4uLmkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1t4WzBdXTogeFsxXX1cclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApIGFzIE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdPlxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgbGV0IHJlczogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCA9IE9iamVjdC5rZXlzKHBhcmFtKS5yZWR1Y2UoXHJcbiAgICAgIChvYmosIGtleSkgPT4ge1xyXG4gICAgICAgIG9ialtrZXldID0gJydcclxuICAgICAgICByZXR1cm4gb2JqXHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHBcclxuICAgIClcclxuICAgIGZvciAobGV0IGtleSBpbiBwYXJhbSkge1xyXG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgIHJlc1trZXldID0gcGFyYW1ba2V5XS5uYW1lICsgJz8nICsgc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtW2tleV0ucGFyYW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNcclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdDxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpID8gaS5yZXN1bHQucmVzdWx0IDogdW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8a2V5QmF0Y2gsIFQ+XHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHRXaXRob3V0S2V5PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKTogVFtdIHtcclxuICAgIHJldHVybiBmbGF0dGVuPFQ+KE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpXHJcbiAgICAgICAgPyBpLnJlc3VsdC5yZXN1bHRcclxuICAgICAgICA6IHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGB0L3QvtCy0L3QvtC5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSByZXN0QXBpXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIHBvc3Q8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIHJlc3RBcGkgPSBmYWxzZSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LIuINCf0L4g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQu9GD0YfRiNC1INC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLy8gc2V0dGluZ3Mg4oCUINGC0L7Qu9GM0LrQviDQtNC70Y8g0YHQvtCy0LzQtdGB0YLQuNC80L7RgdGC0Lgg0YHQuNCz0L3QsNGC0YPRgNGLINGBIEh0dHBTZXJ2aWNlczog0LfQtNC10YHRjCDRgtC10LvQvlxyXG4gIC8vINGD0YXQvtC00LjRgiBKU09OLdC+0LwvdXJsZW5jb2RlZCwg0Lgg0L/QtdGA0LXRgdGH0ZHRgiDQtNCw0YIg0LjQtyBpSHR0cFBhcmFtU2V0dGluZ3Mg0L3QtSDQvdGD0LbQtdC9LlxyXG4gIG92ZXJyaWRlIGh0dHBQb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gZGVmZXIoKSDQvtGC0LrQu9Cw0LTRi9Cy0LDQtdGCINCy0YHRkSDRgdC+0LTQtdGA0LbQuNC80L7QtSAo0LIg0YLQvtC8INGH0LjRgdC70LUg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDRh9C10YDQtdC3IHRoaXMuc2Vzc2lvbi4qKSDQtNC+INGA0LXQsNC70YzQvdC+0Lkg0L/QvtC00L/QuNGB0LrQuCDigJQg0LjQvdCw0YfQtSDQtNCw0LbQtSDRgSBcItC20LjQstGL0LxcIlxyXG4gICAgLy8g0LPQtdGC0YLQtdGA0L7QvCDQsiBTZXNzaW9uS2V5U2VydmljZXMg0L3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0LvQuNGB0Ywg0LHRiyDQsiDQvNC+0LzQtdC90YIg0LLRi9C30L7QstCwXHJcbiAgICAvLyAucmVzKCksINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpL2ZpcnN0VmFsdWVGcm9tKCksINGH0YLQviDQuCDQvtCx0LXRidCw0L3QvlxyXG4gICAgLy8g0LIgUkVBRE1FINC60LDQuiDQv9C+0LLQtdC00LXQvdC40LUgXCLQu9C10L3QuNCy0L7Qs9C+XCIgUkVTVC3QstGL0LfQvtCy0LAuXHJcbiAgICAvL1xyXG4gICAgLy8gd2l0aEF1dGhSZWZyZXNoKCkg0L/QvtCy0YLQvtGA0Y/QtdGCINC30LDQv9GA0L7RgSDQv9C+0YHQu9C1IEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaCDigJRcclxuICAgIC8vINC/0L7QstGC0L7RgNC90L7QuSDQv9C+0LTQv9C40YHQutC+0Lkg0L3QsCDRjdGC0L7RgiDQttC1IGRlZmVyKCksINC/0L7RjdGC0L7QvNGDINC/0L7QstGC0L7RgCDQt9Cw0L3QvtCy0L4g0YfQuNGC0LDQtdGCXHJcbiAgICAvLyDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuC4g0KfQtdGA0LXQtyBodHRwUG9zdC9odHRwR2V0INC40LTRg9GCINCy0YHQtSDQt9Cw0L/RgNC+0YHRi1xyXG4gICAgLy8g0LHQuNCx0LvQuNC+0YLQtdC60LggKHBvc3QvZ2V0LCBiYXRjaCwg0LLRgdC1INCy0LjQtNGLIE5hdnZ5LdC30LDQv9GA0L7RgdC+0LIpLCDRgtCw0Log0YfRgtC+INC/0L7QstGC0L7RgFxyXG4gICAgLy8g0LLRgdGC0YDQvtC10L0g0YLQvtC70YzQutC+INC30LTQtdGB0YwuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcblxyXG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3Nlc3NpZCcpIHtcclxuICAgICAgICAgICAgLy8g0J/RgNC10L7QsdGA0LDQt9GD0LXQvCDQv9Cw0YDQsNC80LXRgtGA0Ysg0LIg0YTQvtGA0LzQsNGCIHgtd3d3LWZvcm0tdXJsZW5jb2RlZFxyXG4gICAgICAgICAgICBjb25zdCBib2R5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIGJvZHlTdHJpbmcsIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ30pLFxyXG4gICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oXHJcbiAgICAgICAgICAgIHRoaXMuYXhpb3NJbnN0YW5jZS5wb3N0PFQ+KGZ1bGxVcmwsIHBhcmFtc0Nsb25lLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycywgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbid9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSkpXHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBodHRwR2V0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8g0KLQsCDQttC1INC/0YDQuNGH0LjQvdCwLCDRh9GC0L4g0Lgg0YMgaHR0cFBvc3Qg0LLRi9GI0LU6INC+0YLQutC70LDQtNGL0LLQsNC10Lwg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDQtNC+INC/0L7QtNC/0LjRgdC60LgsINGH0YLQvtCx0YsgYGdldCgpYCDQstGR0Lsg0YHQtdCx0Y8g0YLQsNC6INC20LUgXCLQu9C10L3QuNCy0L5cIiwg0LrQsNC6INC4IGBwb3N0KClgXHJcbiAgICAvLyAo0YHQuNC80LzQtdGC0YDQuNGPLCDQutC+0YLQvtGA0L7QuSDQvdC1INCx0YvQu9C+INC00L4g0Y3RgtC+0LPQviDigJQgR0VUINGA0LXQt9C+0LvQstC40Lsg0L3QsNGB0YLRgNC+0LnQutC4INCyINC80L7QvNC10L3RglxyXG4gICAgLy8g0LLRi9C30L7QstCwLCDQsCDQvdC1INCyINC80L7QvNC10L3RgiBzdWJzY3JpYmUoKSkuINCf0L7QstGC0L7RgCDQv9C+0YHQu9C1INC/0YDQvtC00LvQtdC90LjRj1xyXG4gICAgLy8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCDigJQg0LrQsNC6INCyIGh0dHBQb3N0LlxyXG4gICAgcmV0dXJuIHdpdGhBdXRoUmVmcmVzaChkZWZlcigoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxyXG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXHJcbiAgICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXHJcbiAgICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcclxuXHJcbiAgICAgIGlmIChjaGVja0lzT24pIHtcclxuICAgICAgICBpZiAoIWF1dGgpIHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBwcmVwYXJlQmFzZUFkZHJlc3MoYmFzZVVybCkgKyB1cmxcclxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5zZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zQ2xvbmUpXHJcbiAgICAgICAgICBjb25zdCBmaW5hbFVybCA9IGAke2Z1bGxVcmx9PyR7cXVlcnlTdHJpbmd9YFxyXG5cclxuICAgICAgICAgIHJldHVybiBmcm9tKFxyXG4gICAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UuZ2V0PFQ+KGZpbmFsVXJsLCB7XHJcbiAgICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLnNlc3Npb24uZ2V0V2l0aENyZWRlbnRpYWxzKCksXHJcbiAgICAgICAgICAgICAgaGVhZGVyczogdGhpcy5idWlsZEhlYWRlcnMoaGVhZGVycyksXHJcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlKSA9PiByZXNwb25zZS5kYXRhKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH0pKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog0JfQsNCz0L7Qu9C+0LLQutC4INC30LDQv9GA0L7RgdCwOiBgQlhSZXN0U2V0dGluZ3MuaGVhZGVyc2AsINC/0L7QstC10YDRhSDQvdC40YUg4oCUINC30LDQs9C+0LvQvtCy0LrQuFxyXG4gICAqINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LfQsNC/0YDQvtGB0LAsINC/0L7QstC10YDRhSDQstGB0LXQs9C+IOKAlCBgcmVxdWlyZWRgLiDQkiBgcmVxdWlyZWRgINC40LTRkdGCXHJcbiAgICogYENvbnRlbnQtVHlwZWA6INC+0YIg0L3QtdCz0L4g0LfQsNCy0LjRgdC40YIsINC60LDQuiDRgdC10YDQstC10YAg0YDQsNC30LHQtdGA0ZHRgiDRgtC10LvQviwg0L/QvtGN0YLQvtC80YNcclxuICAgKiDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQtSDQt9Cw0LPQvtC70L7QstC60Lgg0LXQs9C+INC90LUg0L/QtdGA0LXQsdC40LLQsNGO0YIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZEhlYWRlcnMoaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIHJlcXVpcmVkOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30pIHtcclxuICAgIHJldHVybiB7IC4uLnRoaXMuc2Vzc2lvbi5nZXRIZWFkZXJzKCksIC4uLmhlYWRlcnMsIC4uLnJlcXVpcmVkIH1cclxuICB9XHJcblxyXG4gIHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXM6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHN0cmluZ2lmeUJpdHJpeFBhcmFtcyhwYXJhbXMpXHJcbiAgfVxyXG5cclxuICBnZXROYW1lTWV0aG9kKGFycjogc3RyaW5nW10pIHtcclxuICAgIHJldHVybiBhcnIuam9pbignLicpXHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cEJYLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYngtcmVzdC9zcmMvc2VydmljZXMvaHR0cC9IdHRwQlgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5RCxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFDOUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUtyQyxPQUFPLE9BQU8sTUFBTSxpQkFBaUIsQ0FBQTtBQUNyQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsSUFBSSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBRXRHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDL0MsT0FBTyxFQUF1QixpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLFlBQVk7SUFFOUM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBTyxLQUF5RDtRQUVwRSxJQUFJLFlBQVksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFTLElBQUksQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUN0RSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUEsQ0FBQyxtQkFBbUI7UUFDbkMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFBLENB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QUMxRixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUE7SUFDbEUsQ0FBQztJQUVELHFCQUFxQixDQUFDLE1BQWU7UUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsYUFBYSxDQUFDLEdBQWE7UUFDekIsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIGZvcmtKb2luLCBkZWZlciB9IGZyb20gJ3J4anMnXHJcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZXMgfSBmcm9tICcuL2h0dHAnXHJcbmltcG9ydCB7XHJcbiAgaUJhdGNoUmVxdWVzdEFuc3dlciwgaUJhdGNoUmVxdWVzdFBhcmFtLCBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnIsIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAsIGtleUJhdGNoLFxyXG59IGZyb20gJy4uLy4uL3R5cGlmaWNhdGlvbi9yZXN0L2JhdGNoL2JhdGNoUmVxdWVzdFBhcmFtJ1xyXG5pbXBvcnQgeyBpQlhSZXN0QW5zd2VyIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3QvYmFzZS9hbnN3ZXInXHJcbmltcG9ydCBmbGF0dGVuIGZyb20gJ2p1c3QtZmxhdHRlbi1pdCdcclxuaW1wb3J0IHsgaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21hcFJlc3VsdCdcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXHJcbmltcG9ydCB7IHByZXBhcmVCYXNlQWRkcmVzcyB9IGZyb20gJy4uL2Jhc2UnXHJcbmltcG9ydCB7IHNlcmlhbGl6ZUJpdHJpeFBhcmFtcyBhcyBzdHJpbmdpZnlCaXRyaXhQYXJhbXMgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvc2VyaWFsaXplQml0cml4UGFyYW1zJ1xyXG5pbXBvcnQgeyBpSHR0cFBhcmFtU2V0dGluZ3MgfSBmcm9tICcuLi8uLi90eXBpZmljYXRpb24vcmVzdC9zZXR0aW5ncydcclxuaW1wb3J0IHsgd2l0aEF1dGhSZWZyZXNoIH0gZnJvbSAnLi9hdXRoUmVmcmVzaCdcclxuaW1wb3J0IHsgQlhSZXN0UmVxdWVzdENvbmZpZywgY29tcG9zZU1pZGRsZXdhcmUgfSBmcm9tICcuL3RyYW5zcG9ydCdcclxuaW1wb3J0IHsgYnVpbHRJbk1pZGRsZXdhcmUgfSBmcm9tICcuL21pZGRsZXdhcmUnXHJcbmltcG9ydCB7IGZldGNoU2VuZCB9IGZyb20gJy4vZmV0Y2gnXHJcblxyXG5leHBvcnQgY2xhc3MgSHR0cEJYU2VydmljZXMgZXh0ZW5kcyBIdHRwU2VydmljZXMge1xyXG5cclxuICAvKipcclxuICAgKiDQndC1INGB0YfQuNGC0LDQudGC0LUg0Y3RgtC+0YIg0LzQtdGC0L7QtCDQvtCx0YDQsNC30YbQvtC8L9GE0LjQvdCw0LvRjNC90YvQvCBBUEkuXHJcbiAgICogVE9ETzog0KPQtNCw0LvQuNGC0Ywg0LTQsNC90L3Ri9C5INC80LXRgtC+0LQg0L/QvtGB0LvQtSDRgNC10LDQu9C40LfQsNGG0LjQuCDQtdCz0L4g0LIg0YDQsNC30LTQtdC70LUgTmF2dnlcclxuICAgKiBAcGFyYW0gcGFyYW1cclxuICAgKi9cclxuICBicmFuY2g8VCwgQT4ocGFyYW06IGlCYXRjaFJlcXVlc3RQYXJhbUFycjxUPiB8IGlCYXRjaFJlcXVlc3RQYXJhbTxUPltdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGlCYXRjaFJlcXVlc3RBbnN3ZXI8QT5bXSB8IHVuZGVmaW5lZD4ge1xyXG4gICAgbGV0IHByZXBhcmVQYXJhbSA9IE9iamVjdC5lbnRyaWVzPHN0cmluZz4odGhpcy5wcmVwYXJlQmF0Y2g8VD4ocGFyYW0pKVxyXG4gICAgY29uc3Qgc2l6ZSA9IDUwIC8vINCx0L7Qu9GM0YjQtSDQvdC1INC+0YLQtNCw0YHRglxyXG4gICAgbGV0IHN1YmFycmF5ID0gW10gLy/QvNCw0YHRgdC40LIg0LIg0LrQvtGC0L7RgNGL0Lkg0LHRg9C00LXRgiDQstGL0LLQtdC00LXQvSDRgNC10LfRg9C70YzRgtCw0YIuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGguY2VpbChwcmVwYXJlUGFyYW0ubGVuZ3RoIC8gc2l6ZSk7IGkrKykge1xyXG4gICAgICBzdWJhcnJheVtpXSA9IHByZXBhcmVQYXJhbS5zbGljZSgoaSAqIHNpemUpLCAoaSAqIHNpemUpICsgc2l6ZSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgIHN1YmFycmF5Lm1hcChpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwUG9zdCgnYmF0Y2guanNvbicsIHtcclxuICAgICAgICAgIGhhbHQ6IDAsXHJcbiAgICAgICAgICBjbWQ6IE9iamVjdC5hc3NpZ24oe30sIC4uLmkubWFwKHggPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4ge1t4WzBdXTogeFsxXX1cclxuICAgICAgICAgIH0pKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICApIGFzIE9ic2VydmFibGU8aUJhdGNoUmVxdWVzdEFuc3dlcjxBPltdPlxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZUJhdGNoPFQ+KHBhcmFtOiBpQmF0Y2hSZXF1ZXN0UGFyYW1BcnI8VD4gfCBpQmF0Y2hSZXF1ZXN0UGFyYW08VD5bXSk6IGlCYXRjaFJlcXVlc3RQYXJhbUh0dHAge1xyXG4gICAgbGV0IHJlczogaUJhdGNoUmVxdWVzdFBhcmFtSHR0cCA9IE9iamVjdC5rZXlzKHBhcmFtKS5yZWR1Y2UoXHJcbiAgICAgIChvYmosIGtleSkgPT4ge1xyXG4gICAgICAgIG9ialtrZXldID0gJydcclxuICAgICAgICByZXR1cm4gb2JqXHJcbiAgICAgIH0sXHJcbiAgICAgIHt9IGFzIGlCYXRjaFJlcXVlc3RQYXJhbUh0dHBcclxuICAgIClcclxuICAgIGZvciAobGV0IGtleSBpbiBwYXJhbSkge1xyXG4gICAgICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGtleSA9PT0gJ251bWJlcicgJiYgcGFyYW1ba2V5XS5wYXJhbSkge1xyXG4gICAgICAgIHJlc1trZXldID0gcGFyYW1ba2V5XS5uYW1lICsgJz8nICsgc3RyaW5naWZ5Qml0cml4UGFyYW1zKHBhcmFtW2tleV0ucGFyYW0pXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXNcclxuICB9XHJcblxyXG4gIG1hcEJyYW5jaFJlc3VsdDxUPihyZXM6IGlCYXRjaFJlcXVlc3RBbnN3ZXI8VD5bXSkge1xyXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpID8gaS5yZXN1bHQucmVzdWx0IDogdW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8a2V5QmF0Y2gsIFQ+XHJcbiAgfVxyXG5cclxuICBtYXBCcmFuY2hSZXN1bHRXaXRob3V0S2V5PFQ+KHJlczogaUJhdGNoUmVxdWVzdEFuc3dlcjxUPltdKTogVFtdIHtcclxuICAgIHJldHVybiBmbGF0dGVuPFQ+KE9iamVjdC5hc3NpZ24oW10sIC4uLnJlcy5tYXAoaSA9PlxyXG4gICAgICAoaW5zdGFuY2VPZmlCWFJlc3RBbnN3ZXJTdWNjZXNzKGkpICYmIGluc3RhbmNlT2ZpQlhSZXN0QW5zd2VyU3VjY2VzcyhpLnJlc3VsdCkpXHJcbiAgICAgICAgPyBpLnJlc3VsdC5yZXN1bHRcclxuICAgICAgICA6IHVuZGVmaW5lZCkpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGB0L3QvtCy0L3QvtC5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LJcclxuICAgKlxyXG4gICAqIEBwYXJhbSBuYW1lXHJcbiAgICogQHBhcmFtIHBhcmFtc1xyXG4gICAqIEBwYXJhbSByZXN0QXBpXHJcbiAgICogQHBhcmFtIGhlYWRlcnMg0LfQsNCz0L7Qu9C+0LLQutC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0Y3RgtC+0LPQviDQt9Cw0L/RgNC+0YHQsCwg0L/QvtCy0LXRgNGFIGBCWFJlc3RTZXR0aW5ncy5oZWFkZXJzYFxyXG4gICAqL1xyXG4gIHBvc3Q8VD4obmFtZTogc3RyaW5nW10sIHBhcmFtczogYW55ID0ge30sIHJlc3RBcGkgPSBmYWxzZSwgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRoaXMuZ2V0TmFtZU1ldGhvZChuYW1lKVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFBvc3Q8aUJYUmVzdEFuc3dlcjxUPj4ocmVzdEFwaSA/IGBhcGkvJHttZXRob2R9YCA6IG1ldGhvZCwgcGFyYW1zLCB1bmRlZmluZWQsIGhlYWRlcnMpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQktGC0L7RgNC+0YHRgtC10L/QtdC90L3Ri9C5INC80LXRgtC+0LQg0LTQu9GPINC30LDQv9GA0L7RgdC+0LIuINCf0L4g0LLQvtC30LzQvtC20L3QvtGB0YLQuCDQu9GD0YfRiNC1INC90LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMXHJcbiAgICpcclxuICAgKiBAcGFyYW0gbmFtZVxyXG4gICAqIEBwYXJhbSBwYXJhbXNcclxuICAgKiBAcGFyYW0gaGVhZGVycyDQt9Cw0LPQvtC70L7QstC60Lgg0YLQvtC70YzQutC+INC00LvRjyDRjdGC0L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUgYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgXHJcbiAgICovXHJcbiAgZ2V0PFQ+KG5hbWU6IHN0cmluZ1tdLCBwYXJhbXM6IGFueSA9IHt9LCBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cEdldDxpQlhSZXN0QW5zd2VyPFQ+Pih0aGlzLmdldE5hbWVNZXRob2QobmFtZSksIHBhcmFtcywgdW5kZWZpbmVkLCBoZWFkZXJzKVxyXG4gIH1cclxuXHJcbiAgLy8gc2V0dGluZ3Mg0L3QtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0Lgg0L7RgdGC0LDQstC70LXQvSDRgNCw0LTQuCDQv9GA0LXQttC90LXQuSDRgdC40LPQvdCw0YLRg9GA0Ys6IGhlYWRlcnNcclxuICAvLyDQvtGB0YLQsNGR0YLRgdGPINGH0LXRgtCy0ZHRgNGC0YvQvCDQv9Cw0YDQsNC80LXRgtGA0L7QvCDRgyBodHRwUG9zdCDQuCBodHRwR2V0LlxyXG4gIGh0dHBQb3N0PFQ+KFxyXG4gICAgdXJsOiBzdHJpbmcsXHJcbiAgICBwYXJhbXM6IGFueSA9IHt9LFxyXG4gICAgc2V0dGluZ3M/OiBpSHR0cFBhcmFtU2V0dGluZ3MsXHJcbiAgICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgLy8gZGVmZXIoKSDQvtGC0LrQu9Cw0LTRi9Cy0LDQtdGCINCy0YHRkSDRgdC+0LTQtdGA0LbQuNC80L7QtSAo0LIg0YLQvtC8INGH0LjRgdC70LUg0YfRgtC10L3QuNC1IEJYUmVzdFNldHRpbmdzXHJcbiAgICAvLyDRh9C10YDQtdC3IHRoaXMuc2Vzc2lvbi4qKSDQtNC+INGA0LXQsNC70YzQvdC+0Lkg0L/QvtC00L/QuNGB0LrQuCDigJQg0LjQvdCw0YfQtSDQtNCw0LbQtSDRgSBcItC20LjQstGL0LxcIlxyXG4gICAgLy8g0LPQtdGC0YLQtdGA0L7QvCDQsiBTZXNzaW9uS2V5U2VydmljZXMg0L3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0LvQuNGB0Ywg0LHRiyDQsiDQvNC+0LzQtdC90YIg0LLRi9C30L7QstCwXHJcbiAgICAvLyAucmVzKCksINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpL2ZpcnN0VmFsdWVGcm9tKCksINGH0YLQviDQuCDQvtCx0LXRidCw0L3QvlxyXG4gICAgLy8g0LIgUkVBRE1FINC60LDQuiDQv9C+0LLQtdC00LXQvdC40LUgXCLQu9C10L3QuNCy0L7Qs9C+XCIgUkVTVC3QstGL0LfQvtCy0LAuXHJcbiAgICAvL1xyXG4gICAgLy8gd2l0aEF1dGhSZWZyZXNoKCkg0L/QvtCy0YLQvtGA0Y/QtdGCINC30LDQv9GA0L7RgSDQv9C+0YHQu9C1IEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaCDigJRcclxuICAgIC8vINC/0L7QstGC0L7RgNC90L7QuSDQv9C+0LTQv9C40YHQutC+0Lkg0L3QsCDRjdGC0L7RgiDQttC1IGRlZmVyKCksINC/0L7RjdGC0L7QvNGDINC/0L7QstGC0L7RgCDQt9Cw0L3QvtCy0L4g0YfQuNGC0LDQtdGCXHJcbiAgICAvLyDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuC4g0KfQtdGA0LXQtyBodHRwUG9zdC9odHRwR2V0INC40LTRg9GCINCy0YHQtSDQt9Cw0L/RgNC+0YHRi1xyXG4gICAgLy8g0LHQuNCx0LvQuNC+0YLQtdC60LggKHBvc3QvZ2V0LCBiYXRjaCwg0LLRgdC1INCy0LjQtNGLIE5hdnZ5LdC30LDQv9GA0L7RgdC+0LIpLCDRgtCw0Log0YfRgtC+INC/0L7QstGC0L7RgFxyXG4gICAgLy8g0LLRgdGC0YDQvtC10L0g0YLQvtC70YzQutC+INC30LTQtdGB0YwuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcigncG9zdCcpKVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGtleSAhPT0gJ09BdXRoMicpIHtcclxuICAgICAgICAgIHBhcmFtc0Nsb25lW2tleV0gPSBhdXRoXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoYmFzZVVybCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCFiYXNlVXJsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ3Bvc3QnKSlcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBjb25zdCBmdWxsVXJsID0gcHJlcGFyZUJhc2VBZGRyZXNzKGJhc2VVcmwpICsgdXJsXHJcbiAgICAgICAgICAvLyBzZXNzaWQg4oCUINGC0LXQu9C+IHgtd3d3LWZvcm0tdXJsZW5jb2RlZCwg0L7RgdGC0LDQu9GM0L3Ri9C1INC60LvRjtGH0Lgg4oCUIEpTT05cclxuICAgICAgICAgIGNvbnN0IHVybGVuY29kZWQgPSBrZXkgPT09ICdzZXNzaWQnXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZDxUPih7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICAgICAgICB1cmw6IGZ1bGxVcmwsXHJcbiAgICAgICAgICAgIGRhdGE6IHVybGVuY29kZWQgPyB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSkgOiBwYXJhbXNDbG9uZSxcclxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLnNlc3Npb24uZ2V0V2l0aENyZWRlbnRpYWxzKCksXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuYnVpbGRIZWFkZXJzKGhlYWRlcnMsIHtcclxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogdXJsZW5jb2RlZCA/ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIDogJ2FwcGxpY2F0aW9uL2pzb24nXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9KSwgdGhpcy5zZXNzaW9uLmN0eClcclxuICB9XHJcblxyXG4gIGh0dHBHZXQ8VD4oXHJcbiAgICB1cmw6IHN0cmluZyxcclxuICAgIHBhcmFtczogYW55ID0ge30sXHJcbiAgICBzZXR0aW5ncz86IGlIdHRwUGFyYW1TZXR0aW5ncyxcclxuICAgIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgKTogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPiB7XHJcbiAgICAvLyDQotCwINC20LUg0L/RgNC40YfQuNC90LAsINGH0YLQviDQuCDRgyBodHRwUG9zdCDQstGL0YjQtTog0L7RgtC60LvQsNC00YvQstCw0LXQvCDRh9GC0LXQvdC40LUgQlhSZXN0U2V0dGluZ3NcclxuICAgIC8vINC00L4g0L/QvtC00L/QuNGB0LrQuCwg0YfRgtC+0LHRiyBgZ2V0KClgINCy0ZHQuyDRgdC10LHRjyDRgtCw0Log0LbQtSBcItC70LXQvdC40LLQvlwiLCDQutCw0Log0LggYHBvc3QoKWBcclxuICAgIC8vICjRgdC40LzQvNC10YLRgNC40Y8sINC60L7RgtC+0YDQvtC5INC90LUg0LHRi9C70L4g0LTQviDRjdGC0L7Qs9C+IOKAlCBHRVQg0YDQtdC30L7Qu9Cy0LjQuyDQvdCw0YHRgtGA0L7QudC60Lgg0LIg0LzQvtC80LXQvdGCXHJcbiAgICAvLyDQstGL0LfQvtCy0LAsINCwINC90LUg0LIg0LzQvtC80LXQvdGCIHN1YnNjcmliZSgpKS4g0J/QvtCy0YLQvtGAINC/0L7RgdC70LUg0L/RgNC+0LTQu9C10L3QuNGPXHJcbiAgICAvLyDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4IOKAlCDQutCw0Log0LIgaHR0cFBvc3QuXHJcbiAgICByZXR1cm4gd2l0aEF1dGhSZWZyZXNoKGRlZmVyKCgpID0+IHtcclxuICAgICAgY29uc3QgcGFyYW1zQ2xvbmUgPSBjbG9uZShwYXJhbXMpXHJcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKClcclxuICAgICAgY29uc3QgYXV0aCA9IHRoaXMuc2Vzc2lvbi5nZXRBdXRoUGFyYW1zKClcclxuICAgICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxyXG5cclxuICAgICAgaWYgKGNoZWNrSXNPbikge1xyXG4gICAgICAgIGlmICghYXV0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEF1dGhFcnJvcignZ2V0JykpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoa2V5ICE9PSAnT0F1dGgyJykge1xyXG4gICAgICAgICAgcGFyYW1zQ2xvbmVba2V5XSA9IGF1dGhcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChiYXNlVXJsKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIWJhc2VVcmwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcignZ2V0JykpXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxyXG4gICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSB0aGlzLnNlcmlhbGl6ZUJpdHJpeFBhcmFtcyhwYXJhbXNDbG9uZSlcclxuICAgICAgICAgIGNvbnN0IGZpbmFsVXJsID0gYCR7ZnVsbFVybH0/JHtxdWVyeVN0cmluZ31gXHJcblxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZDxUPih7XHJcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXHJcbiAgICAgICAgICAgIHVybDogZmluYWxVcmwsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5zZXNzaW9uLmdldFdpdGhDcmVkZW50aWFscygpLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiB0aGlzLmJ1aWxkSGVhZGVycyhoZWFkZXJzKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfSksIHRoaXMuc2Vzc2lvbi5jdHgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDQntGC0L/RgNCw0LLQutCwINGH0LXRgNC10Lcg0YjQsNCz0Lgg0LjQtyDQvdCw0YHRgtGA0L7QtdC6OiBgcmV0cnlPblF1ZXJ5TGltaXRgLCBgdGhyb3R0bGVgLFxyXG4gICAqIGB0aW1lb3V0YCwgYGxvZ1JlcXVlc3RzYCwg0LfQsNGC0LXQvCBgbWlkZGxld2FyZWA7INC/0L7RgdC70LXQtNC90LjQvCDQuNC00ZHRgiDRgtGA0LDQvdGB0L/QvtGA0YJcclxuICAgKiDQutC70LjQtdC90YLQsCDigJQgYXhpb3Mg0LjQu9C4IGBmZXRjaGAgKGB0cmFuc3BvcnRgKS4g0J3QsNGB0YLRgNC+0LnQutC4INGH0LjRgtCw0Y7RgtGB0Y8g0L/RgNC4XHJcbiAgICog0L/QvtC00L/QuNGB0LrQtS4g0J7RgtC/0LjRgdC60LAg0L7RgtC80LXQvdGP0LXRgiBIVFRQLdC30LDQv9GA0L7RgSAoQWJvcnRTaWduYWwpLiDQntGI0LjQsdC60LAg0YLRgNCw0L3RgdC/0L7RgNGC0LBcclxuICAgKiDRg9GF0L7QtNC40YIg0LTQsNC70YzRiNC1INC60LDQuiDQtdGB0YLRjDog0YMgYXhpb3Mg0LIg0L3QtdC5INCy0LXRgdGMINC30LDQv9GA0L7RgSwg0LLQvNC10YHRgtC1INGBINGC0L7QutC10L3QvtC8INC4XHJcbiAgICog0YHQtdC60YDQtdGC0L7QvCDQstC10LHRhdGD0LrQsCAo0YHQvC4gUkVBRE1FLCDCq9Ce0LHRgNCw0LHQvtGC0LrQsCDQvtGI0LjQsdC+0LrCuykuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZW5kPFQ+KGNvbmZpZzogQlhSZXN0UmVxdWVzdENvbmZpZyk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+KHN1YnNjcmliZXIgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXHJcbiAgICAgIGNvbnN0IGN0eCA9IHRoaXMuc2Vzc2lvbi5jdHhcclxuICAgICAgY29uc3Qgc2V0dGluZ3MgPSBjdHguc2V0dGluZ3NcclxuICAgICAgY29uc3Qgc2VuZCA9IGNvbXBvc2VNaWRkbGV3YXJlKFxyXG4gICAgICAgIFsuLi5idWlsdEluTWlkZGxld2FyZShzZXR0aW5ncywgY3R4KSwgLi4udGhpcy5zZXNzaW9uLmdldE1pZGRsZXdhcmUoKV0sXHJcbiAgICAgICAgKHNldHRpbmdzLnRyYW5zcG9ydCA9PT0gJ2ZldGNoJykgPyBmZXRjaFNlbmQgOiByZXF1ZXN0ID0+IHRoaXMuYXhpb3NTZW5kKHJlcXVlc3QpXHJcbiAgICAgIClcclxuICAgICAgc2VuZCh7IC4uLmNvbmZpZywgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCB9KS50aGVuKFxyXG4gICAgICAgIGRhdGEgPT4ge1xyXG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KGRhdGEgYXMgVCB8IHVuZGVmaW5lZClcclxuICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yOiB1bmtub3duKSA9PiBzdWJzY3JpYmVyLmVycm9yKGVycm9yKVxyXG4gICAgICApXHJcbiAgICAgIHJldHVybiAoKSA9PiBjb250cm9sbGVyLmFib3J0KClcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiog0KLRgNCw0L3RgdC/0L7RgNGCINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOOiBheGlvcyDQutC70LjQtdC90YLQsCwg0LrQsNC6INC4INGA0LDQvdGM0YjQtSDRh9C10YDQtdC3IHBvc3QoKS9nZXQoKS4gKi9cclxuICBwcml2YXRlIGF4aW9zU2VuZChjb25maWc6IEJYUmVzdFJlcXVlc3RDb25maWcpOiBQcm9taXNlPHVua25vd24+IHtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7IGhlYWRlcnM6IGNvbmZpZy5oZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IGNvbmZpZy53aXRoQ3JlZGVudGlhbHMsIHNpZ25hbDogY29uZmlnLnNpZ25hbCB9XHJcbiAgICBjb25zdCByZXF1ZXN0ID0gKGNvbmZpZy5tZXRob2QgPT09ICdHRVQnKVxyXG4gICAgICA/IHRoaXMuYXhpb3NJbnN0YW5jZS5nZXQoY29uZmlnLnVybCwgb3B0aW9ucylcclxuICAgICAgOiB0aGlzLmF4aW9zSW5zdGFuY2UucG9zdChjb25maWcudXJsLCBjb25maWcuZGF0YSwgb3B0aW9ucylcclxuICAgIHJldHVybiByZXF1ZXN0LnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqINCX0LDQs9C+0LvQvtCy0LrQuCDQt9Cw0L/RgNC+0YHQsDogYEJYUmVzdFNldHRpbmdzLmhlYWRlcnNgLCDQv9C+0LLQtdGA0YUg0L3QuNGFIOKAlCDQt9Cw0LPQvtC70L7QstC60LhcclxuICAgKiDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC30LDQv9GA0L7RgdCwLCDQv9C+0LLQtdGA0YUg0LLRgdC10LPQviDigJQgYHJlcXVpcmVkYC4g0JIgYHJlcXVpcmVkYCDQuNC00ZHRglxyXG4gICAqIGBDb250ZW50LVR5cGVgOiDQvtGCINC90LXQs9C+INC30LDQstC40YHQuNGCLCDQutCw0Log0YHQtdGA0LLQtdGAINGA0LDQt9Cx0LXRgNGR0YIg0YLQtdC70L4sINC/0L7RjdGC0L7QvNGDXHJcbiAgICog0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0LfQsNCz0L7Qu9C+0LLQutC4INC10LPQviDQvdC1INC/0LXRgNC10LHQuNCy0LDRjtGCLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRIZWFkZXJzKGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCByZXF1aXJlZDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9KSB7XHJcbiAgICByZXR1cm4geyAuLi50aGlzLnNlc3Npb24uZ2V0SGVhZGVycygpLCAuLi5oZWFkZXJzLCAuLi5yZXF1aXJlZCB9XHJcbiAgfVxyXG5cclxuICBzZXJpYWxpemVCaXRyaXhQYXJhbXMocGFyYW1zOiB1bmtub3duKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBzdHJpbmdpZnlCaXRyaXhQYXJhbXMocGFyYW1zKVxyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZU1ldGhvZChhcnI6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gYXJyLmpvaW4oJy4nKVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbiJdfQ==
@@ -1,8 +1,7 @@
1
1
  import { defer, from, throwError } from 'rxjs';
2
2
  import { catchError, switchMap } from 'rxjs/operators';
3
- import axios from 'axios';
4
- import { BXRestSettings } from '../../settings';
5
- import { parseBXRestErrorBody } from '../../functions/errors';
3
+ import { httpErrorResponse, parseBXRestErrorBody } from '../../functions/errors';
4
+ import { globalContext } from '../context';
6
5
  /**
7
6
  * Коды ошибок Bitrix, которые лечатся продлением токена. `expired_token` —
8
7
  * единственный системный код, для которого документация Bitrix24 советует
@@ -24,34 +23,34 @@ const AUTH_ERROR_CODES = ['expired_token', 'invalid_token'];
24
23
  * Ответ 401 с другим кодом Bitrix ошибкой авторизации не считается.
25
24
  */
26
25
  export function isBXRestAuthError(error) {
27
- if (!axios.isAxiosError(error) || !error.response) {
26
+ const response = httpErrorResponse(error);
27
+ if (!response) {
28
28
  return false;
29
29
  }
30
- const parsed = parseBXRestErrorBody(error.response.data);
30
+ const parsed = parseBXRestErrorBody(response.data);
31
31
  if (parsed) {
32
32
  return AUTH_ERROR_CODES.includes(parsed.error);
33
33
  }
34
- return error.response.status === 401;
34
+ return response.status === 401;
35
35
  }
36
- // Общее на всю библиотеку состояние продления — как и сами BXRestSettings.
37
- // pendingRefresh — идущее сейчас продление, его ждут все упавшие запросы;
38
- // refreshCount — сколько продлений уже завершилось успешно.
39
- let pendingRefresh;
40
- let refreshCount = 0;
41
- function sharedRefresh(refresh) {
42
- if (!pendingRefresh) {
43
- pendingRefresh = Promise.resolve()
36
+ // Состояние продления живёт в контексте клиента (BXRestContext): у глобальных
37
+ // настроек оно одно на всю библиотеку, у каждого new BXRestNavvy(settings) —
38
+ // своё. pendingRefresh — идущее сейчас продление, его ждут все упавшие
39
+ // запросы клиента; refreshCount — сколько продлений уже завершилось успешно.
40
+ function sharedRefresh(refresh, ctx) {
41
+ if (!ctx.pendingRefresh) {
42
+ ctx.pendingRefresh = Promise.resolve()
44
43
  // Через then, чтобы синхронное исключение в refresh() тоже стало
45
44
  // отклонённым промисом, а не вылетело из catchError
46
45
  .then(() => refresh())
47
46
  .then(() => {
48
- refreshCount++;
47
+ ctx.refreshCount++;
49
48
  })
50
49
  .finally(() => {
51
- pendingRefresh = undefined;
50
+ ctx.pendingRefresh = undefined;
52
51
  });
53
52
  }
54
- return pendingRefresh;
53
+ return ctx.pendingRefresh;
55
54
  }
56
55
  /**
57
56
  * Повтор запроса после продления авторизации (`BXRestSettings.auth.refresh`).
@@ -60,23 +59,26 @@ function sharedRefresh(refresh) {
60
59
  * `defer()` в HttpBXServices): повтор — это повторная подписка, поэтому
61
60
  * токен, адрес и заголовки берутся уже новые. На второй попытке ошибка не
62
61
  * перехватывается — запрос повторяется не больше одного раза.
62
+ *
63
+ * `ctx` — контекст клиента, из которого берутся `refresh`, `isAuthError` и
64
+ * общее состояние продления.
63
65
  */
64
- export function withAuthRefresh(request$) {
66
+ export function withAuthRefresh(request$, ctx = globalContext) {
65
67
  return defer(() => {
66
- const { refresh, isAuthError = isBXRestAuthError } = BXRestSettings.value.auth;
68
+ const { refresh, isAuthError = isBXRestAuthError } = ctx.settings.auth;
67
69
  if (!refresh) {
68
70
  return request$;
69
71
  }
70
- const refreshCountAtStart = refreshCount;
72
+ const refreshCountAtStart = ctx.refreshCount;
71
73
  return request$.pipe(catchError((error) => {
72
74
  if (!isAuthError(error)) {
73
75
  return throwError(() => error);
74
76
  }
75
77
  // Пока этот запрос был в пути, токен уже продлили по ошибке другого
76
78
  // запроса — повторяем без нового продления
77
- const refreshed = (refreshCount !== refreshCountAtStart)
79
+ const refreshed = (ctx.refreshCount !== refreshCountAtStart)
78
80
  ? Promise.resolve()
79
- : sharedRefresh(refresh);
81
+ : sharedRefresh(refresh, ctx);
80
82
  return from(refreshed).pipe(catchError((refreshError) => {
81
83
  if (error && typeof error === 'object') {
82
84
  error.authRefreshError = refreshError;
@@ -86,4 +88,4 @@ export function withAuthRefresh(request$) {
86
88
  }));
87
89
  });
88
90
  }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFJlZnJlc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2F1dGhSZWZyZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFN0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxlQUFlLEVBQUUsZUFBZSxDQUFDLENBQUE7QUFFM0Q7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxLQUFjO0lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUE7QUFDdEMsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSwwRUFBMEU7QUFDMUUsNERBQTREO0FBQzVELElBQUksY0FBeUMsQ0FBQTtBQUM3QyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUE7QUFFcEIsU0FBUyxhQUFhLENBQUMsT0FBK0I7SUFDcEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLGNBQWMsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ2hDLGlFQUFpRTtZQUNqRSxvREFBb0Q7YUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ3JCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxZQUFZLEVBQUUsQ0FBQTtRQUNoQixDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osY0FBYyxHQUFHLFNBQVMsQ0FBQTtRQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxPQUFPLGNBQWMsQ0FBQTtBQUN2QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUksUUFBdUI7SUFDeEQsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7UUFDOUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztRQUVELE1BQU0sbUJBQW1CLEdBQUcsWUFBWSxDQUFBO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FDbEIsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDO1lBQ0Qsb0VBQW9FO1lBQ3BFLDJDQUEyQztZQUMzQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksS0FBSyxtQkFBbUIsQ0FBQztnQkFDdEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQ25CLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7WUFFMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN6QixVQUFVLENBQUMsQ0FBQyxZQUFxQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN0QyxLQUF3QyxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQTtnQkFDM0UsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmZXIsIGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnXG5pbXBvcnQgeyBCWFJlc3RTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NldHRpbmdzJ1xuaW1wb3J0IHsgcGFyc2VCWFJlc3RFcnJvckJvZHkgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZXJyb3JzJ1xuXG4vKipcbiAqINCa0L7QtNGLINC+0YjQuNCx0L7QuiBCaXRyaXgsINC60L7RgtC+0YDRi9C1INC70LXRh9Cw0YLRgdGPINC/0YDQvtC00LvQtdC90LjQtdC8INGC0L7QutC10L3QsC4gYGV4cGlyZWRfdG9rZW5gIOKAlFxuICog0LXQtNC40L3RgdGC0LLQtdC90L3Ri9C5INGB0LjRgdGC0LXQvNC90YvQuSDQutC+0LQsINC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC00L7QutGD0LzQtdC90YLQsNGG0LjRjyBCaXRyaXgyNCDRgdC+0LLQtdGC0YPQtdGCXG4gKiBcItC+0LHQvdC+0LLQuNGC0Ywg0YLQvtC60LXQvdGLINC4INC/0L7QstGC0L7RgNC40YLRjCDQstGL0LfQvtCyXCIuIGBpbnZhbGlkX3Rva2VuYCDQsiDRgdC/0LjRgdC60LUg0YHQuNGB0YLQtdC80L3Ri9GFXG4gKiDQvtGI0LjQsdC+0Log0LTQvtC60YPQvNC10L3RgtCw0YbQuNC4INC90LXRgiwg0L3QviDRgtCw0Log0LbQtSDRgdGH0LjRgtCw0LXRgiDQvtGE0LjRhtC40LDQu9GM0L3Ri9C5IGBAYml0cml4MjQvYjI0anNzZGtgLlxuICpcbiAqINCe0YHRgtCw0LvRjNC90YvQtSDRgdC40YHRgtC10LzQvdGL0LUg0L7RiNC40LHQutC4INGC0L7QttC1INC/0YDQuNGF0L7QtNGP0YIg0YHQviDRgdGC0LDRgtGD0YHQvtC8IDQwMVxuICogKGBpbnN1ZmZpY2llbnRfc2NvcGVgLCBgTk9fQVVUSF9GT1VORGAsIGBBQ0NFU1NfREVOSUVEYCxcbiAqIGBJTlZBTElEX0NSRURFTlRJQUxTYCwgYHVzZXJfYWNjZXNzX2Vycm9yYCwgLi4uKSwg0L3QviDQvdC+0LLRi9C5INGC0L7QutC10L0g0LjRhVxuICog0L3QtSDQuNGB0L/RgNCw0LLQuNGCIOKAlCDQv9C+0Y3RgtC+0LzRgyDRgdC80L7RgtGA0LjQvCDQvdCwINC60L7QtCwg0LAg0L3QtSDRgtC+0LvRjNC60L4g0L3QsCDRgdGC0LDRgtGD0YEuXG4gKi9cbmNvbnN0IEFVVEhfRVJST1JfQ09ERVMgPSBbJ2V4cGlyZWRfdG9rZW4nLCAnaW52YWxpZF90b2tlbiddXG5cbi8qKlxuICog0KPRgdC70L7QstC40LUg0L/RgNC+0LTQu9C10L3QuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIChgQlhSZXN0U2V0dGluZ3MuYXV0aC5pc0F1dGhFcnJvcmApOlxuICogLSDQvtGC0LLQtdGCINGBINC+0YjQuNCx0LrQvtC5IEJpdHJpeCBgZXhwaXJlZF90b2tlbmAg0LjQu9C4IGBpbnZhbGlkX3Rva2VuYCDigJQg0L/RgNC4INC70Y7QsdC+0Lwg0YHRgtCw0YLRg9GB0LU7XG4gKiAtINC+0YLQstC10YIgNDAxINCx0LXQtyDRgtC10LvQsCDQvtGI0LjQsdC60LggQml0cml4IOKAlCDQvdCw0L/RgNC40LzQtdGALCDQv9GD0YHRgtC+0Lkg0L7RgtCy0LXRgiDRgdCy0L7QtdCz0L5cbiAqICAg0LHRjdC60LXQvdC0LdC/0YDQvtC60YHQuCwg0YMg0LrQvtGC0L7RgNC+0LPQviDQvdC10YIg0LTQtdC50YHRgtCy0YPRjtGJ0LXQs9C+INGC0L7QutC10L3QsC5cbiAqXG4gKiDQntGC0LLQtdGCIDQwMSDRgSDQtNGA0YPQs9C40Lwg0LrQvtC00L7QvCBCaXRyaXgg0L7RiNC40LHQutC+0Lkg0LDQstGC0L7RgNC40LfQsNGG0LjQuCDQvdC1INGB0YfQuNGC0LDQtdGC0YHRjy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQlhSZXN0QXV0aEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghYXhpb3MuaXNBeGlvc0Vycm9yKGVycm9yKSB8fCAhZXJyb3IucmVzcG9uc2UpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBwYXJzZWQgPSBwYXJzZUJYUmVzdEVycm9yQm9keShlcnJvci5yZXNwb25zZS5kYXRhKVxuICBpZiAocGFyc2VkKSB7XG4gICAgcmV0dXJuIEFVVEhfRVJST1JfQ09ERVMuaW5jbHVkZXMocGFyc2VkLmVycm9yKVxuICB9XG4gIHJldHVybiBlcnJvci5yZXNwb25zZS5zdGF0dXMgPT09IDQwMVxufVxuXG4vLyDQntCx0YnQtdC1INC90LAg0LLRgdGOINCx0LjQsdC70LjQvtGC0LXQutGDINGB0L7RgdGC0L7Rj9C90LjQtSDQv9GA0L7QtNC70LXQvdC40Y8g4oCUINC60LDQuiDQuCDRgdCw0LzQuCBCWFJlc3RTZXR0aW5ncy5cbi8vIHBlbmRpbmdSZWZyZXNoIOKAlCDQuNC00YPRidC10LUg0YHQtdC50YfQsNGBINC/0YDQvtC00LvQtdC90LjQtSwg0LXQs9C+INC20LTRg9GCINCy0YHQtSDRg9C/0LDQstGI0LjQtSDQt9Cw0L/RgNC+0YHRiztcbi8vIHJlZnJlc2hDb3VudCDigJQg0YHQutC+0LvRjNC60L4g0L/RgNC+0LTQu9C10L3QuNC5INGD0LbQtSDQt9Cw0LLQtdGA0YjQuNC70L7RgdGMINGD0YHQv9C10YjQvdC+LlxubGV0IHBlbmRpbmdSZWZyZXNoOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkXG5sZXQgcmVmcmVzaENvdW50ID0gMFxuXG5mdW5jdGlvbiBzaGFyZWRSZWZyZXNoKHJlZnJlc2g6ICgpID0+IFByb21pc2U8dW5rbm93bj4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFwZW5kaW5nUmVmcmVzaCkge1xuICAgIHBlbmRpbmdSZWZyZXNoID0gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgIC8vINCn0LXRgNC10LcgdGhlbiwg0YfRgtC+0LHRiyDRgdC40L3RhdGA0L7QvdC90L7QtSDQuNGB0LrQu9GO0YfQtdC90LjQtSDQsiByZWZyZXNoKCkg0YLQvtC20LUg0YHRgtCw0LvQvlxuICAgICAgLy8g0L7RgtC60LvQvtC90ZHQvdC90YvQvCDQv9GA0L7QvNC40YHQvtC8LCDQsCDQvdC1INCy0YvQu9C10YLQtdC70L4g0LjQtyBjYXRjaEVycm9yXG4gICAgICAudGhlbigoKSA9PiByZWZyZXNoKCkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJlZnJlc2hDb3VudCsrXG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBwZW5kaW5nUmVmcmVzaCA9IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgfVxuICByZXR1cm4gcGVuZGluZ1JlZnJlc2hcbn1cblxuLyoqXG4gKiDQn9C+0LLRgtC+0YAg0LfQsNC/0YDQvtGB0LAg0L/QvtGB0LvQtSDQv9GA0L7QtNC70LXQvdC40Y8g0LDQstGC0L7RgNC40LfQsNGG0LjQuCAoYEJYUmVzdFNldHRpbmdzLmF1dGgucmVmcmVzaGApLlxuICpcbiAqIGByZXF1ZXN0JGAg0LTQvtC70LbQtdC9INCx0YvRgtGMIFwi0YXQvtC70L7QtNC90YvQvFwiINC4INGH0LjRgtCw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0L/RgNC4INC/0L7QtNC/0LjRgdC60LUgKNC60LDQulxuICogYGRlZmVyKClgINCyIEh0dHBCWFNlcnZpY2VzKTog0L/QvtCy0YLQvtGAIOKAlCDRjdGC0L4g0L/QvtCy0YLQvtGA0L3QsNGPINC/0L7QtNC/0LjRgdC60LAsINC/0L7RjdGC0L7QvNGDXG4gKiDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuCDQsdC10YDRg9GC0YHRjyDRg9C20LUg0L3QvtCy0YvQtS4g0J3QsCDQstGC0L7RgNC+0Lkg0L/QvtC/0YvRgtC60LUg0L7RiNC40LHQutCwINC90LVcbiAqINC/0LXRgNC10YXQstCw0YLRi9Cy0LDQtdGC0YHRjyDigJQg0LfQsNC/0YDQvtGBINC/0L7QstGC0L7RgNGP0LXRgtGB0Y8g0L3QtSDQsdC+0LvRjNGI0LUg0L7QtNC90L7Qs9C+INGA0LDQt9CwLlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEF1dGhSZWZyZXNoPFQ+KHJlcXVlc3QkOiBPYnNlcnZhYmxlPFQ+KTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBkZWZlcigoKSA9PiB7XG4gICAgY29uc3QgeyByZWZyZXNoLCBpc0F1dGhFcnJvciA9IGlzQlhSZXN0QXV0aEVycm9yIH0gPSBCWFJlc3RTZXR0aW5ncy52YWx1ZS5hdXRoXG4gICAgaWYgKCFyZWZyZXNoKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdCRcbiAgICB9XG5cbiAgICBjb25zdCByZWZyZXNoQ291bnRBdFN0YXJ0ID0gcmVmcmVzaENvdW50XG4gICAgcmV0dXJuIHJlcXVlc3QkLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICBpZiAoIWlzQXV0aEVycm9yKGVycm9yKSkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICB9XG4gICAgICAgIC8vINCf0L7QutCwINGN0YLQvtGCINC30LDQv9GA0L7RgSDQsdGL0Lsg0LIg0L/Rg9GC0LgsINGC0L7QutC10L0g0YPQttC1INC/0YDQvtC00LvQuNC70Lgg0L/QviDQvtGI0LjQsdC60LUg0LTRgNGD0LPQvtCz0L5cbiAgICAgICAgLy8g0LfQsNC/0YDQvtGB0LAg4oCUINC/0L7QstGC0L7RgNGP0LXQvCDQsdC10Lcg0L3QvtCy0L7Qs9C+INC/0YDQvtC00LvQtdC90LjRj1xuICAgICAgICBjb25zdCByZWZyZXNoZWQgPSAocmVmcmVzaENvdW50ICE9PSByZWZyZXNoQ291bnRBdFN0YXJ0KVxuICAgICAgICAgID8gUHJvbWlzZS5yZXNvbHZlKClcbiAgICAgICAgICA6IHNoYXJlZFJlZnJlc2gocmVmcmVzaClcblxuICAgICAgICByZXR1cm4gZnJvbShyZWZyZXNoZWQpLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigocmVmcmVzaEVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgJiYgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAoZXJyb3IgYXMgeyBhdXRoUmVmcmVzaEVycm9yPzogdW5rbm93biB9KS5hdXRoUmVmcmVzaEVycm9yID0gcmVmcmVzaEVycm9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcilcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gcmVxdWVzdCQpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9KVxufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aFJlZnJlc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2F1dGhSZWZyZXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hGLE9BQU8sRUFBaUIsYUFBYSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0FBRTNEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsS0FBYztJQUM5QyxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUNYLE9BQU8sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsOEVBQThFO0FBQzlFLDZFQUE2RTtBQUM3RSx1RUFBdUU7QUFDdkUsNkVBQTZFO0FBQzdFLFNBQVMsYUFBYSxDQUFDLE9BQStCLEVBQUUsR0FBa0I7SUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixHQUFHLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEMsaUVBQWlFO1lBQ2pFLG9EQUFvRDthQUNuRCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDckIsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNULEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNwQixDQUFDLENBQUM7YUFDRCxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osR0FBRyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUE7UUFDaEMsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFBO0FBQzNCLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FBSSxRQUF1QixFQUFFLE1BQXFCLGFBQWE7SUFDNUYsT0FBTyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxHQUFHLGlCQUFpQixFQUFFLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUE7UUFDdEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUE7UUFDakIsQ0FBQztRQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQTtRQUM1QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQ2xCLFVBQVUsQ0FBQyxDQUFDLEtBQWMsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEMsQ0FBQztZQUNELG9FQUFvRTtZQUNwRSwyQ0FBMkM7WUFDM0MsTUFBTSxTQUFTLEdBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxLQUFLLG1CQUFtQixDQUFDO2dCQUMxRCxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDbkIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFFL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUN6QixVQUFVLENBQUMsQ0FBQyxZQUFxQixFQUFFLEVBQUU7Z0JBQ25DLElBQUksS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN0QyxLQUF3QyxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQTtnQkFDM0UsQ0FBQztnQkFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNoQyxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQzFCLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmZXIsIGZyb20sIE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycydcclxuaW1wb3J0IHsgaHR0cEVycm9yUmVzcG9uc2UsIHBhcnNlQlhSZXN0RXJyb3JCb2R5IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL2Vycm9ycydcclxuaW1wb3J0IHsgQlhSZXN0Q29udGV4dCwgZ2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnXHJcblxyXG4vKipcclxuICog0JrQvtC00Ysg0L7RiNC40LHQvtC6IEJpdHJpeCwg0LrQvtGC0L7RgNGL0LUg0LvQtdGH0LDRgtGB0Y8g0L/RgNC+0LTQu9C10L3QuNC10Lwg0YLQvtC60LXQvdCwLiBgZXhwaXJlZF90b2tlbmAg4oCUXHJcbiAqINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDRgdC40YHRgtC10LzQvdGL0Lkg0LrQvtC0LCDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Y8gQml0cml4MjQg0YHQvtCy0LXRgtGD0LXRglxyXG4gKiBcItC+0LHQvdC+0LLQuNGC0Ywg0YLQvtC60LXQvdGLINC4INC/0L7QstGC0L7RgNC40YLRjCDQstGL0LfQvtCyXCIuIGBpbnZhbGlkX3Rva2VuYCDQsiDRgdC/0LjRgdC60LUg0YHQuNGB0YLQtdC80L3Ri9GFXHJcbiAqINC+0YjQuNCx0L7QuiDQtNC+0LrRg9C80LXQvdGC0LDRhtC40Lgg0L3QtdGCLCDQvdC+INGC0LDQuiDQttC1INGB0YfQuNGC0LDQtdGCINC+0YTQuNGG0LjQsNC70YzQvdGL0LkgYEBiaXRyaXgyNC9iMjRqc3Nka2AuXHJcbiAqXHJcbiAqINCe0YHRgtCw0LvRjNC90YvQtSDRgdC40YHRgtC10LzQvdGL0LUg0L7RiNC40LHQutC4INGC0L7QttC1INC/0YDQuNGF0L7QtNGP0YIg0YHQviDRgdGC0LDRgtGD0YHQvtC8IDQwMVxyXG4gKiAoYGluc3VmZmljaWVudF9zY29wZWAsIGBOT19BVVRIX0ZPVU5EYCwgYEFDQ0VTU19ERU5JRURgLFxyXG4gKiBgSU5WQUxJRF9DUkVERU5USUFMU2AsIGB1c2VyX2FjY2Vzc19lcnJvcmAsIC4uLiksINC90L4g0L3QvtCy0YvQuSDRgtC+0LrQtdC9INC40YVcclxuICog0L3QtSDQuNGB0L/RgNCw0LLQuNGCIOKAlCDQv9C+0Y3RgtC+0LzRgyDRgdC80L7RgtGA0LjQvCDQvdCwINC60L7QtCwg0LAg0L3QtSDRgtC+0LvRjNC60L4g0L3QsCDRgdGC0LDRgtGD0YEuXHJcbiAqL1xyXG5jb25zdCBBVVRIX0VSUk9SX0NPREVTID0gWydleHBpcmVkX3Rva2VuJywgJ2ludmFsaWRfdG9rZW4nXVxyXG5cclxuLyoqXHJcbiAqINCj0YHQu9C+0LLQuNC1INC/0YDQvtC00LvQtdC90LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiAoYEJYUmVzdFNldHRpbmdzLmF1dGguaXNBdXRoRXJyb3JgKTpcclxuICogLSDQvtGC0LLQtdGCINGBINC+0YjQuNCx0LrQvtC5IEJpdHJpeCBgZXhwaXJlZF90b2tlbmAg0LjQu9C4IGBpbnZhbGlkX3Rva2VuYCDigJQg0L/RgNC4INC70Y7QsdC+0Lwg0YHRgtCw0YLRg9GB0LU7XHJcbiAqIC0g0L7RgtCy0LXRgiA0MDEg0LHQtdC3INGC0LXQu9CwINC+0YjQuNCx0LrQuCBCaXRyaXgg4oCUINC90LDQv9GA0LjQvNC10YAsINC/0YPRgdGC0L7QuSDQvtGC0LLQtdGCINGB0LLQvtC10LPQvlxyXG4gKiAgINCx0Y3QutC10L3QtC3Qv9GA0L7QutGB0LgsINGDINC60L7RgtC+0YDQvtCz0L4g0L3QtdGCINC00LXQudGB0YLQstGD0Y7RidC10LPQviDRgtC+0LrQtdC90LAuXHJcbiAqXHJcbiAqINCe0YLQstC10YIgNDAxINGBINC00YDRg9Cz0LjQvCDQutC+0LTQvtC8IEJpdHJpeCDQvtGI0LjQsdC60L7QuSDQsNCy0YLQvtGA0LjQt9Cw0YbQuNC4INC90LUg0YHRh9C40YLQsNC10YLRgdGPLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQlhSZXN0QXV0aEVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBodHRwRXJyb3JSZXNwb25zZShlcnJvcilcbiAgaWYgKCFyZXNwb25zZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlQlhSZXN0RXJyb3JCb2R5KHJlc3BvbnNlLmRhdGEpXG4gIGlmIChwYXJzZWQpIHtcbiAgICByZXR1cm4gQVVUSF9FUlJPUl9DT0RFUy5pbmNsdWRlcyhwYXJzZWQuZXJyb3IpXG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxXHJcbn1cclxuXHJcbi8vINCh0L7RgdGC0L7Rj9C90LjQtSDQv9GA0L7QtNC70LXQvdC40Y8g0LbQuNCy0ZHRgiDQsiDQutC+0L3RgtC10LrRgdGC0LUg0LrQu9C40LXQvdGC0LAgKEJYUmVzdENvbnRleHQpOiDRgyDQs9C70L7QsdCw0LvRjNC90YvRhVxyXG4vLyDQvdCw0YHRgtGA0L7QtdC6INC+0L3QviDQvtC00L3QviDQvdCwINCy0YHRjiDQsdC40LHQu9C40L7RgtC10LrRgywg0YMg0LrQsNC20LTQvtCz0L4gbmV3IEJYUmVzdE5hdnZ5KHNldHRpbmdzKSDigJRcclxuLy8g0YHQstC+0ZEuIHBlbmRpbmdSZWZyZXNoIOKAlCDQuNC00YPRidC10LUg0YHQtdC50YfQsNGBINC/0YDQvtC00LvQtdC90LjQtSwg0LXQs9C+INC20LTRg9GCINCy0YHQtSDRg9C/0LDQstGI0LjQtVxyXG4vLyDQt9Cw0L/RgNC+0YHRiyDQutC70LjQtdC90YLQsDsgcmVmcmVzaENvdW50IOKAlCDRgdC60L7Qu9GM0LrQviDQv9GA0L7QtNC70LXQvdC40Lkg0YPQttC1INC30LDQstC10YDRiNC40LvQvtGB0Ywg0YPRgdC/0LXRiNC90L4uXHJcbmZ1bmN0aW9uIHNoYXJlZFJlZnJlc2gocmVmcmVzaDogKCkgPT4gUHJvbWlzZTx1bmtub3duPiwgY3R4OiBCWFJlc3RDb250ZXh0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgaWYgKCFjdHgucGVuZGluZ1JlZnJlc2gpIHtcclxuICAgIGN0eC5wZW5kaW5nUmVmcmVzaCA9IFByb21pc2UucmVzb2x2ZSgpXHJcbiAgICAgIC8vINCn0LXRgNC10LcgdGhlbiwg0YfRgtC+0LHRiyDRgdC40L3RhdGA0L7QvdC90L7QtSDQuNGB0LrQu9GO0YfQtdC90LjQtSDQsiByZWZyZXNoKCkg0YLQvtC20LUg0YHRgtCw0LvQvlxyXG4gICAgICAvLyDQvtGC0LrQu9C+0L3RkdC90L3Ri9C8INC/0YDQvtC80LjRgdC+0LwsINCwINC90LUg0LLRi9C70LXRgtC10LvQviDQuNC3IGNhdGNoRXJyb3JcclxuICAgICAgLnRoZW4oKCkgPT4gcmVmcmVzaCgpKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgY3R4LnJlZnJlc2hDb3VudCsrXHJcbiAgICAgIH0pXHJcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICBjdHgucGVuZGluZ1JlZnJlc2ggPSB1bmRlZmluZWRcclxuICAgICAgfSlcclxuICB9XHJcbiAgcmV0dXJuIGN0eC5wZW5kaW5nUmVmcmVzaFxyXG59XHJcblxyXG4vKipcclxuICog0J/QvtCy0YLQvtGAINC30LDQv9GA0L7RgdCwINC/0L7RgdC70LUg0L/RgNC+0LTQu9C10L3QuNGPINCw0LLRgtC+0YDQuNC30LDRhtC40LggKGBCWFJlc3RTZXR0aW5ncy5hdXRoLnJlZnJlc2hgKS5cclxuICpcclxuICogYHJlcXVlc3QkYCDQtNC+0LvQttC10L0g0LHRi9GC0YwgXCLRhdC+0LvQvtC00L3Ri9C8XCIg0Lgg0YfQuNGC0LDRgtGMINC90LDRgdGC0YDQvtC50LrQuCDQv9GA0Lgg0L/QvtC00L/QuNGB0LrQtSAo0LrQsNC6XHJcbiAqIGBkZWZlcigpYCDQsiBIdHRwQlhTZXJ2aWNlcyk6INC/0L7QstGC0L7RgCDigJQg0Y3RgtC+INC/0L7QstGC0L7RgNC90LDRjyDQv9C+0LTQv9C40YHQutCwLCDQv9C+0Y3RgtC+0LzRg1xyXG4gKiDRgtC+0LrQtdC9LCDQsNC00YDQtdGBINC4INC30LDQs9C+0LvQvtCy0LrQuCDQsdC10YDRg9GC0YHRjyDRg9C20LUg0L3QvtCy0YvQtS4g0J3QsCDQstGC0L7RgNC+0Lkg0L/QvtC/0YvRgtC60LUg0L7RiNC40LHQutCwINC90LVcclxuICog0L/QtdGA0LXRhdCy0LDRgtGL0LLQsNC10YLRgdGPIOKAlCDQt9Cw0L/RgNC+0YEg0L/QvtCy0YLQvtGA0Y/QtdGC0YHRjyDQvdC1INCx0L7Qu9GM0YjQtSDQvtC00L3QvtCz0L4g0YDQsNC30LAuXHJcbiAqXHJcbiAqIGBjdHhgIOKAlCDQutC+0L3RgtC10LrRgdGCINC60LvQuNC10L3RgtCwLCDQuNC3INC60L7RgtC+0YDQvtCz0L4g0LHQtdGA0YPRgtGB0Y8gYHJlZnJlc2hgLCBgaXNBdXRoRXJyb3JgINC4XHJcbiAqINC+0LHRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC/0YDQvtC00LvQtdC90LjRjy5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB3aXRoQXV0aFJlZnJlc2g8VD4ocmVxdWVzdCQ6IE9ic2VydmFibGU8VD4sIGN0eDogQlhSZXN0Q29udGV4dCA9IGdsb2JhbENvbnRleHQpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICByZXR1cm4gZGVmZXIoKCkgPT4ge1xyXG4gICAgY29uc3QgeyByZWZyZXNoLCBpc0F1dGhFcnJvciA9IGlzQlhSZXN0QXV0aEVycm9yIH0gPSBjdHguc2V0dGluZ3MuYXV0aFxyXG4gICAgaWYgKCFyZWZyZXNoKSB7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0JFxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJlZnJlc2hDb3VudEF0U3RhcnQgPSBjdHgucmVmcmVzaENvdW50XHJcbiAgICByZXR1cm4gcmVxdWVzdCQucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcclxuICAgICAgICBpZiAoIWlzQXV0aEVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vINCf0L7QutCwINGN0YLQvtGCINC30LDQv9GA0L7RgSDQsdGL0Lsg0LIg0L/Rg9GC0LgsINGC0L7QutC10L0g0YPQttC1INC/0YDQvtC00LvQuNC70Lgg0L/QviDQvtGI0LjQsdC60LUg0LTRgNGD0LPQvtCz0L5cclxuICAgICAgICAvLyDQt9Cw0L/RgNC+0YHQsCDigJQg0L/QvtCy0YLQvtGA0Y/QtdC8INCx0LXQtyDQvdC+0LLQvtCz0L4g0L/RgNC+0LTQu9C10L3QuNGPXHJcbiAgICAgICAgY29uc3QgcmVmcmVzaGVkID0gKGN0eC5yZWZyZXNoQ291bnQgIT09IHJlZnJlc2hDb3VudEF0U3RhcnQpXHJcbiAgICAgICAgICA/IFByb21pc2UucmVzb2x2ZSgpXHJcbiAgICAgICAgICA6IHNoYXJlZFJlZnJlc2gocmVmcmVzaCwgY3R4KVxyXG5cclxuICAgICAgICByZXR1cm4gZnJvbShyZWZyZXNoZWQpLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChyZWZyZXNoRXJyb3I6IHVua25vd24pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAoZXJyb3IgYXMgeyBhdXRoUmVmcmVzaEVycm9yPzogdW5rbm93biB9KS5hdXRoUmVmcmVzaEVycm9yID0gcmVmcmVzaEVycm9yXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiByZXF1ZXN0JClcclxuICAgICAgICApXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgfSlcclxufVxyXG4iXX0=
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Ответ не 2xx при `transport: 'fetch'`. Поле `response` такое же, как у
3
+ * `AxiosError`: по нему библиотека узнаёт ошибки Bitrix и ошибки авторизации.
4
+ * В `.resVanilla()` приходит сама эта ошибка, в `.res()` — в `cause`.
5
+ */
6
+ export class BXRestHttpError extends Error {
7
+ constructor(response) {
8
+ super(`Request failed with status code ${response.status}`);
9
+ this.response = response;
10
+ this.name = 'BXRestHttpError';
11
+ }
12
+ }
13
+ /**
14
+ * Транспорт `transport: 'fetch'`: глобальный `fetch` браузера или Node 18+.
15
+ * Тело ответа разбирается как JSON, а если это не JSON (например, HTML от
16
+ * прокси) — отдаётся строкой, как это делает axios.
17
+ */
18
+ export async function fetchSend(config) {
19
+ let body;
20
+ if (config.method === 'POST') {
21
+ body = (typeof config.data === 'string') ? config.data : JSON.stringify(config.data ?? {});
22
+ }
23
+ const response = await fetch(config.url, {
24
+ method: config.method,
25
+ headers: config.headers,
26
+ body,
27
+ credentials: config.withCredentials ? 'include' : 'same-origin',
28
+ signal: config.signal,
29
+ });
30
+ const text = await response.text();
31
+ let data = text;
32
+ if (text) {
33
+ try {
34
+ data = JSON.parse(text);
35
+ }
36
+ catch {
37
+ // Не JSON — отдаём текстом
38
+ }
39
+ }
40
+ if (!response.ok) {
41
+ throw new BXRestHttpError({ status: response.status, data });
42
+ }
43
+ return data;
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ieC1yZXN0L3NyYy9zZXJ2aWNlcy9odHRwL2ZldGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxLQUFLO0lBQ3hDLFlBQXFCLFFBQTJDO1FBQzlELEtBQUssQ0FBQyxtQ0FBbUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFEeEMsYUFBUSxHQUFSLFFBQVEsQ0FBbUM7UUFFOUQsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQTtJQUMvQixDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxTQUFTLENBQUMsTUFBMkI7SUFDekQsSUFBSSxJQUF3QixDQUFBO0lBQzVCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUM3QixJQUFJLEdBQUcsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM1RixDQUFDO0lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUN2QyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLElBQUk7UUFDSixXQUFXLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBQy9ELE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtLQUN0QixDQUFDLENBQUE7SUFDRixNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNsQyxJQUFJLElBQUksR0FBWSxJQUFJLENBQUE7SUFDeEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULElBQUksQ0FBQztZQUNILElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwyQkFBMkI7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sSUFBSSxlQUFlLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzlELENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCWFJlc3RSZXF1ZXN0Q29uZmlnIH0gZnJvbSAnLi90cmFuc3BvcnQnXG5cbi8qKlxuICog0J7RgtCy0LXRgiDQvdC1IDJ4eCDQv9GA0LggYHRyYW5zcG9ydDogJ2ZldGNoJ2AuINCf0L7Qu9C1IGByZXNwb25zZWAg0YLQsNC60L7QtSDQttC1LCDQutCw0Log0YNcbiAqIGBBeGlvc0Vycm9yYDog0L/QviDQvdC10LzRgyDQsdC40LHQu9C40L7RgtC10LrQsCDRg9C30L3QsNGR0YIg0L7RiNC40LHQutC4IEJpdHJpeCDQuCDQvtGI0LjQsdC60Lgg0LDQstGC0L7RgNC40LfQsNGG0LjQuC5cbiAqINCSIGAucmVzVmFuaWxsYSgpYCDQv9GA0LjRhdC+0LTQuNGCINGB0LDQvNCwINGN0YLQsCDQvtGI0LjQsdC60LAsINCyIGAucmVzKClgIOKAlCDQsiBgY2F1c2VgLlxuICovXG5leHBvcnQgY2xhc3MgQlhSZXN0SHR0cEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciwgZGF0YTogdW5rbm93biB9KSB7XG4gICAgc3VwZXIoYFJlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUgJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICB0aGlzLm5hbWUgPSAnQlhSZXN0SHR0cEVycm9yJ1xuICB9XG59XG5cbi8qKlxuICog0KLRgNCw0L3RgdC/0L7RgNGCIGB0cmFuc3BvcnQ6ICdmZXRjaCdgOiDQs9C70L7QsdCw0LvRjNC90YvQuSBgZmV0Y2hgINCx0YDQsNGD0LfQtdGA0LAg0LjQu9C4IE5vZGUgMTgrLlxuICog0KLQtdC70L4g0L7RgtCy0LXRgtCwINGA0LDQt9Cx0LjRgNCw0LXRgtGB0Y8g0LrQsNC6IEpTT04sINCwINC10YHQu9C4INGN0YLQviDQvdC1IEpTT04gKNC90LDQv9GA0LjQvNC10YAsIEhUTUwg0L7RglxuICog0L/RgNC+0LrRgdC4KSDigJQg0L7RgtC00LDRkdGC0YHRjyDRgdGC0YDQvtC60L7QuSwg0LrQsNC6INGN0YLQviDQtNC10LvQsNC10YIgYXhpb3MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFNlbmQoY29uZmlnOiBCWFJlc3RSZXF1ZXN0Q29uZmlnKTogUHJvbWlzZTx1bmtub3duPiB7XG4gIGxldCBib2R5OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgaWYgKGNvbmZpZy5tZXRob2QgPT09ICdQT1NUJykge1xuICAgIGJvZHkgPSAodHlwZW9mIGNvbmZpZy5kYXRhID09PSAnc3RyaW5nJykgPyBjb25maWcuZGF0YSA6IEpTT04uc3RyaW5naWZ5KGNvbmZpZy5kYXRhID8/IHt9KVxuICB9XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goY29uZmlnLnVybCwge1xuICAgIG1ldGhvZDogY29uZmlnLm1ldGhvZCxcbiAgICBoZWFkZXJzOiBjb25maWcuaGVhZGVycyxcbiAgICBib2R5LFxuICAgIGNyZWRlbnRpYWxzOiBjb25maWcud2l0aENyZWRlbnRpYWxzID8gJ2luY2x1ZGUnIDogJ3NhbWUtb3JpZ2luJyxcbiAgICBzaWduYWw6IGNvbmZpZy5zaWduYWwsXG4gIH0pXG4gIGNvbnN0IHRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KClcbiAgbGV0IGRhdGE6IHVua25vd24gPSB0ZXh0XG4gIGlmICh0ZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHRleHQpXG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyDQndC1IEpTT04g4oCUINC+0YLQtNCw0ZHQvCDRgtC10LrRgdGC0L7QvFxuICAgIH1cbiAgfVxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEJYUmVzdEh0dHBFcnJvcih7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLCBkYXRhIH0pXG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbiJdfQ==
@@ -1,75 +1,29 @@
1
- import { from, throwError } from 'rxjs';
2
- import { switchMap } from 'rxjs/operators';
3
1
  import axios from 'axios';
4
- import { SessionKeyServices } from '../../services/http/sessionKey';
5
- import clone from 'just-clone';
6
- import { BaseHttp } from './base/base';
7
- import { prepareBaseAddress } from '../base';
8
- export class HttpServices extends BaseHttp {
9
- constructor() {
10
- super();
11
- this.session = new SessionKeyServices();
12
- this.axiosInstance = axios.create();
2
+ import { SessionKeyServices } from './sessionKey';
3
+ import { BXRestContext, runInContext } from '../context';
4
+ /**
5
+ * Общая часть HTTP-клиента: экземпляр axios и источник токена и адреса.
6
+ * Сами запросы отправляет `HttpBXServices` (`BXRestRequest`).
7
+ */
8
+ export class HttpServices {
9
+ /**
10
+ * @param settings свои настройки, как у `new BXRestNavvy(settings)`: запросы
11
+ * идут на этот портал с этим токеном, а `BXRestSettings` на них не влияют.
12
+ * Без них — настройки клиента, внутри которого создан объект, или
13
+ * глобальные `BXRestSettings`.
14
+ */
15
+ constructor(settings) {
16
+ this.session = settings
17
+ ? runInContext(new BXRestContext(settings), () => new SessionKeyServices())
18
+ : new SessionKeyServices();
13
19
  }
14
- httpPost(url, params = {}, settings = this.defSettings) {
15
- const auth = this.session.getAuthParams();
16
- const checkIsOn = this.session.getCheckAuthParamsIsOn();
17
- const paramsClone = clone(params);
18
- if (checkIsOn) {
19
- if (!auth) {
20
- return throwError(() => this.session.getAuthError('post'));
21
- }
22
- paramsClone[this.session.getKeyAuth()] = auth;
23
- }
24
- return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
25
- if (!baseUrl) {
26
- return throwError(() => this.session.getBaseUrlError('post'));
27
- }
28
- const fullUrl = prepareBaseAddress(baseUrl) + url;
29
- if (this.session.getKeyAuth() === 'sessid') {
30
- const urlEncodedBody = new URLSearchParams();
31
- Object.keys(paramsClone).forEach((key) => {
32
- const value = paramsClone[key];
33
- if (typeof value === 'object' && value !== null) {
34
- for (const subKey in value) {
35
- if (Object.prototype.hasOwnProperty.call(value, subKey)) {
36
- urlEncodedBody.append(`${key}[${subKey}]`, value[subKey]);
37
- }
38
- }
39
- }
40
- else {
41
- urlEncodedBody.append(key, value);
42
- }
43
- });
44
- return from(this.axiosInstance.post(fullUrl, urlEncodedBody.toString(), {
45
- headers: {
46
- 'Content-Type': 'application/x-www-form-urlencoded',
47
- },
48
- }).then((response) => response.data));
49
- }
50
- const body = this.getHttpParamsPost(paramsClone, new FormData(), [], settings);
51
- return from(this.axiosInstance.post(fullUrl, body).then((response) => response.data));
52
- }));
53
- }
54
- httpGet(url, params = {}) {
55
- const auth = this.session.getAuthParams();
56
- const checkIsOn = this.session.getCheckAuthParamsIsOn();
57
- const paramsClone = clone(params);
58
- if (checkIsOn) {
59
- if (!auth) {
60
- return throwError(() => this.session.getAuthError('get'));
61
- }
62
- paramsClone[this.session.getKeyAuth()] = auth;
63
- }
64
- return this.session.getBaseUrl().pipe(switchMap((baseUrl) => {
65
- if (!baseUrl) {
66
- return throwError(() => this.session.getBaseUrlError('get'));
67
- }
68
- const fullUrl = prepareBaseAddress(baseUrl) + url;
69
- const queryString = new URLSearchParams(paramsClone).toString();
70
- const finalUrl = `${fullUrl}?${queryString}`;
71
- return from(this.axiosInstance.get(finalUrl).then((response) => response.data));
72
- }));
20
+ /**
21
+ * Экземпляр axios клиента. Один на контекст (клиента со своими настройками
22
+ * или глобальные настройки) и создаётся при первом запросе — раньше каждый
23
+ * объект запроса создавал свой.
24
+ */
25
+ get axiosInstance() {
26
+ return this.session.ctx.axios ??= axios.create();
73
27
  }
74
28
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUMsT0FBTyxLQUF3QixNQUFNLE9BQU8sQ0FBQTtBQUM1QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUNuRSxPQUFPLEtBQUssTUFBTSxZQUFZLENBQUE7QUFFOUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFNUMsTUFBTSxPQUFPLFlBQWEsU0FBUSxRQUFRO0lBS3hDO1FBQ0UsS0FBSyxFQUFFLENBQUE7UUFITyxZQUFPLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFBO1FBSWhELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ3JDLENBQUM7SUFFUSxRQUFRLENBQ2YsR0FBVyxFQUNYLFNBQWMsRUFBRSxFQUNoQixXQUErQixJQUFJLENBQUMsV0FBVztRQUUvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFakMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1lBQzVELENBQUM7WUFFRCxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUMvQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7WUFDL0QsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtZQUNqRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7Z0JBRTVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFFOUIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO3dCQUNoRCxLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssRUFBRSxDQUFDOzRCQUMzQixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQ0FDeEQsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxNQUFNLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTs0QkFDM0QsQ0FBQzt3QkFDSCxDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtvQkFDbkMsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FBQTtnQkFFRixPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBSSxPQUFPLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUM3RCxPQUFPLEVBQUU7d0JBQ1AsY0FBYyxFQUFFLG1DQUFtQztxQkFDcEQ7aUJBQ0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUNyQyxDQUFBO1lBQ0gsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDOUUsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUksT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUM1RSxDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFUSxPQUFPLENBQUksR0FBVyxFQUFFLFNBQWMsRUFBRTtRQUMvQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3pDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLEVBQUUsQ0FBQTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFakMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDVixPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQzNELENBQUM7WUFFRCxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQTtRQUMvQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FDbkMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDOUQsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQTtZQUNqRCxNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUMvRCxNQUFNLFFBQVEsR0FBRyxHQUFHLE9BQU8sSUFBSSxXQUFXLEVBQUUsQ0FBQTtZQUU1QyxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBSSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FDdEUsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UgfSBmcm9tICdheGlvcydcbmltcG9ydCB7IFNlc3Npb25LZXlTZXJ2aWNlcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2h0dHAvc2Vzc2lvbktleSdcbmltcG9ydCBjbG9uZSBmcm9tICdqdXN0LWNsb25lJ1xuaW1wb3J0IHsgaUh0dHBQYXJhbVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3Jlc3Qvc2V0dGluZ3MnXG5pbXBvcnQgeyBCYXNlSHR0cCB9IGZyb20gJy4vYmFzZS9iYXNlJ1xuaW1wb3J0IHsgcHJlcGFyZUJhc2VBZGRyZXNzIH0gZnJvbSAnLi4vYmFzZSdcblxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlcyBleHRlbmRzIEJhc2VIdHRwIHtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXhpb3NJbnN0YW5jZTogQXhpb3NJbnN0YW5jZVxuICBwdWJsaWMgcmVhZG9ubHkgc2Vzc2lvbiA9IG5ldyBTZXNzaW9uS2V5U2VydmljZXMoKVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmF4aW9zSW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoKVxuICB9XG5cbiAgb3ZlcnJpZGUgaHR0cFBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBhbnkgPSB7fSxcbiAgICBzZXR0aW5nczogaUh0dHBQYXJhbVNldHRpbmdzID0gdGhpcy5kZWZTZXR0aW5nc1xuICApOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBhdXRoID0gdGhpcy5zZXNzaW9uLmdldEF1dGhQYXJhbXMoKVxuICAgIGNvbnN0IGNoZWNrSXNPbiA9IHRoaXMuc2Vzc2lvbi5nZXRDaGVja0F1dGhQYXJhbXNJc09uKClcbiAgICBjb25zdCBwYXJhbXNDbG9uZSA9IGNsb25lKHBhcmFtcylcblxuICAgIGlmIChjaGVja0lzT24pIHtcbiAgICAgIGlmICghYXV0aCkge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiB0aGlzLnNlc3Npb24uZ2V0QXV0aEVycm9yKCdwb3N0JykpXG4gICAgICB9XG5cbiAgICAgIHBhcmFtc0Nsb25lW3RoaXMuc2Vzc2lvbi5nZXRLZXlBdXRoKCldID0gYXV0aFxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlc3Npb24uZ2V0QmFzZVVybCgpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKGJhc2VVcmwpID0+IHtcbiAgICAgICAgaWYgKCFiYXNlVXJsKSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmxFcnJvcigncG9zdCcpKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uLmdldEtleUF1dGgoKSA9PT0gJ3Nlc3NpZCcpIHtcbiAgICAgICAgICBjb25zdCB1cmxFbmNvZGVkQm9keSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuXG4gICAgICAgICAgT2JqZWN0LmtleXMocGFyYW1zQ2xvbmUpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNDbG9uZVtrZXldXG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViS2V5IGluIHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ViS2V5KSkge1xuICAgICAgICAgICAgICAgICAgdXJsRW5jb2RlZEJvZHkuYXBwZW5kKGAke2tleX1bJHtzdWJLZXl9XWAsIHZhbHVlW3N1YktleV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB1cmxFbmNvZGVkQm9keS5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuXG4gICAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UucG9zdDxUPihmdWxsVXJsLCB1cmxFbmNvZGVkQm9keS50b1N0cmluZygpLCB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5nZXRIdHRwUGFyYW1zUG9zdChwYXJhbXNDbG9uZSwgbmV3IEZvcm1EYXRhKCksIFtdLCBzZXR0aW5ncylcbiAgICAgICAgcmV0dXJuIGZyb20oXG4gICAgICAgICAgdGhpcy5heGlvc0luc3RhbmNlLnBvc3Q8VD4oZnVsbFVybCwgYm9keSkudGhlbigocmVzcG9uc2UpID0+IHJlc3BvbnNlLmRhdGEpXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgb3ZlcnJpZGUgaHR0cEdldDxUPih1cmw6IHN0cmluZywgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGF1dGggPSB0aGlzLnNlc3Npb24uZ2V0QXV0aFBhcmFtcygpXG4gICAgY29uc3QgY2hlY2tJc09uID0gdGhpcy5zZXNzaW9uLmdldENoZWNrQXV0aFBhcmFtc0lzT24oKVxuICAgIGNvbnN0IHBhcmFtc0Nsb25lID0gY2xvbmUocGFyYW1zKVxuXG4gICAgaWYgKGNoZWNrSXNPbikge1xuICAgICAgaWYgKCFhdXRoKSB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRBdXRoRXJyb3IoJ2dldCcpKVxuICAgICAgfVxuXG4gICAgICBwYXJhbXNDbG9uZVt0aGlzLnNlc3Npb24uZ2V0S2V5QXV0aCgpXSA9IGF1dGhcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmdldEJhc2VVcmwoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChiYXNlVXJsKSA9PiB7XG4gICAgICAgIGlmICghYmFzZVVybCkge1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IHRoaXMuc2Vzc2lvbi5nZXRCYXNlVXJsRXJyb3IoJ2dldCcpKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZnVsbFVybCA9IHByZXBhcmVCYXNlQWRkcmVzcyhiYXNlVXJsKSArIHVybFxuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zQ2xvbmUpLnRvU3RyaW5nKClcbiAgICAgICAgY29uc3QgZmluYWxVcmwgPSBgJHtmdWxsVXJsfT8ke3F1ZXJ5U3RyaW5nfWBcblxuICAgICAgICByZXR1cm4gZnJvbShcbiAgICAgICAgICB0aGlzLmF4aW9zSW5zdGFuY2UuZ2V0PFQ+KGZpbmFsVXJsKS50aGVuKChyZXNwb25zZSkgPT4gcmVzcG9uc2UuZGF0YSlcbiAgICAgICAgKVxuICAgICAgfSlcbiAgICApXG4gIH1cbn1cbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J4LXJlc3Qvc3JjL3NlcnZpY2VzL2h0dHAvaHR0cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQXdCLE1BQU0sT0FBTyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUd4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUl2Qjs7Ozs7T0FLRztJQUNILFlBQVksUUFBMEI7UUFDcEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRO1lBQ3JCLENBQUMsQ0FBQyxZQUFZLENBQUMsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQzNFLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixFQUFFLENBQUE7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGFBQWE7UUFDekIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ2xELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0luc3RhbmNlIH0gZnJvbSAnYXhpb3MnXG5pbXBvcnQgeyBTZXNzaW9uS2V5U2VydmljZXMgfSBmcm9tICcuL3Nlc3Npb25LZXknXG5pbXBvcnQgeyBCWFJlc3RDb250ZXh0LCBydW5JbkNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0J1xuaW1wb3J0IHsgaUJYUmVzdFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vdHlwaWZpY2F0aW9uL3NldHRpbmdzJ1xuXG4vKipcbiAqINCe0LHRidCw0Y8g0YfQsNGB0YLRjCBIVFRQLdC60LvQuNC10L3RgtCwOiDRjdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0Lgg0LjRgdGC0L7Rh9C90LjQuiDRgtC+0LrQtdC90LAg0Lgg0LDQtNGA0LXRgdCwLlxuICog0KHQsNC80Lgg0LfQsNC/0YDQvtGB0Ysg0L7RgtC/0YDQsNCy0LvRj9C10YIgYEh0dHBCWFNlcnZpY2VzYCAoYEJYUmVzdFJlcXVlc3RgKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlcyB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlc3Npb246IFNlc3Npb25LZXlTZXJ2aWNlc1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gc2V0dGluZ3Mg0YHQstC+0Lgg0L3QsNGB0YLRgNC+0LnQutC4LCDQutCw0Log0YMgYG5ldyBCWFJlc3ROYXZ2eShzZXR0aW5ncylgOiDQt9Cw0L/RgNC+0YHRi1xuICAgKiAgINC40LTRg9GCINC90LAg0Y3RgtC+0YIg0L/QvtGA0YLQsNC7INGBINGN0YLQuNC8INGC0L7QutC10L3QvtC8LCDQsCBgQlhSZXN0U2V0dGluZ3NgINC90LAg0L3QuNGFINC90LUg0LLQu9C40Y/RjtGCLlxuICAgKiAgINCR0LXQtyDQvdC40YUg4oCUINC90LDRgdGC0YDQvtC50LrQuCDQutC70LjQtdC90YLQsCwg0LLQvdGD0YLRgNC4INC60L7RgtC+0YDQvtCz0L4g0YHQvtC30LTQsNC9INC+0LHRitC10LrRgiwg0LjQu9C4XG4gICAqICAg0LPQu9C+0LHQsNC70YzQvdGL0LUgYEJYUmVzdFNldHRpbmdzYC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNldHRpbmdzPzogaUJYUmVzdFNldHRpbmdzKSB7XG4gICAgdGhpcy5zZXNzaW9uID0gc2V0dGluZ3NcbiAgICAgID8gcnVuSW5Db250ZXh0KG5ldyBCWFJlc3RDb250ZXh0KHNldHRpbmdzKSwgKCkgPT4gbmV3IFNlc3Npb25LZXlTZXJ2aWNlcygpKVxuICAgICAgOiBuZXcgU2Vzc2lvbktleVNlcnZpY2VzKClcbiAgfVxuXG4gIC8qKlxuICAgKiDQrdC60LfQtdC80L/Qu9GP0YAgYXhpb3Mg0LrQu9C40LXQvdGC0LAuINCe0LTQuNC9INC90LAg0LrQvtC90YLQtdC60YHRgiAo0LrQu9C40LXQvdGC0LAg0YHQviDRgdCy0L7QuNC80Lgg0L3QsNGB0YLRgNC+0LnQutCw0LzQuFxuICAgKiDQuNC70Lgg0LPQu9C+0LHQsNC70YzQvdGL0LUg0L3QsNGB0YLRgNC+0LnQutC4KSDQuCDRgdC+0LfQtNCw0ZHRgtGB0Y8g0L/RgNC4INC/0LXRgNCy0L7QvCDQt9Cw0L/RgNC+0YHQtSDigJQg0YDQsNC90YzRiNC1INC60LDQttC00YvQuVxuICAgKiDQvtCx0YrQtdC60YIg0LfQsNC/0YDQvtGB0LAg0YHQvtC30LTQsNCy0LDQuyDRgdCy0L7QuS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXQgYXhpb3NJbnN0YW5jZSgpOiBBeGlvc0luc3RhbmNlIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uLmN0eC5heGlvcyA/Pz0gYXhpb3MuY3JlYXRlKClcbiAgfVxufVxuIl19