merchi_cart 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +99 -0
  3. package/lib/Cart.js +62 -0
  4. package/lib/CartAlert.js +43 -0
  5. package/lib/CartHeader.js +28 -0
  6. package/lib/CartProvider.js +304 -0
  7. package/lib/CartTotals.js +99 -0
  8. package/lib/MerchiSDK/constants/auto_assign_production_on_actions.js +8 -0
  9. package/lib/MerchiSDK/constants/call_to_actions.js +16 -0
  10. package/lib/MerchiSDK/constants/call_to_actions.test.js +5 -0
  11. package/lib/MerchiSDK/constants/discount_types.js +5 -0
  12. package/lib/MerchiSDK/constants/discount_types.test.js +5 -0
  13. package/lib/MerchiSDK/constants/domain_types.js +14 -0
  14. package/lib/MerchiSDK/constants/domain_types.test.js +5 -0
  15. package/lib/MerchiSDK/constants/errors.js +33 -0
  16. package/lib/MerchiSDK/constants/event_types.js +7 -0
  17. package/lib/MerchiSDK/constants/event_types.test.js +5 -0
  18. package/lib/MerchiSDK/constants/field_types.js +15 -0
  19. package/lib/MerchiSDK/constants/field_types.test.js +5 -0
  20. package/lib/MerchiSDK/constants/input_types.js +15 -0
  21. package/lib/MerchiSDK/constants/input_types.test.js +5 -0
  22. package/lib/MerchiSDK/constants/inventory_status.test.js +5 -0
  23. package/lib/MerchiSDK/constants/inventory_statuses.js +8 -0
  24. package/lib/MerchiSDK/constants/invoice_types.js +7 -0
  25. package/lib/MerchiSDK/constants/invoice_types.test.js +5 -0
  26. package/lib/MerchiSDK/constants/item_types.js +7 -0
  27. package/lib/MerchiSDK/constants/item_types.test.js +5 -0
  28. package/lib/MerchiSDK/constants/job/drafting_status.js +9 -0
  29. package/lib/MerchiSDK/constants/job/drafting_status.test.js +5 -0
  30. package/lib/MerchiSDK/constants/job/payment_status.js +9 -0
  31. package/lib/MerchiSDK/constants/job/payment_status.test.js +5 -0
  32. package/lib/MerchiSDK/constants/job/production_status.js +14 -0
  33. package/lib/MerchiSDK/constants/job/production_status.test.js +5 -0
  34. package/lib/MerchiSDK/constants/job/shipment_status.js +13 -0
  35. package/lib/MerchiSDK/constants/job/shipment_status.test.js +5 -0
  36. package/lib/MerchiSDK/constants/job/supply_chain_request_status.js +8 -0
  37. package/lib/MerchiSDK/constants/job/supply_chain_request_status.test.js +5 -0
  38. package/lib/MerchiSDK/constants/job_priorities.js +8 -0
  39. package/lib/MerchiSDK/constants/job_priorities.test.js +5 -0
  40. package/lib/MerchiSDK/constants/job_status.js +51 -0
  41. package/lib/MerchiSDK/constants/job_status.test.js +5 -0
  42. package/lib/MerchiSDK/constants/job_types.js +17 -0
  43. package/lib/MerchiSDK/constants/job_types.test.js +5 -0
  44. package/lib/MerchiSDK/constants/notification_sections.js +15 -0
  45. package/lib/MerchiSDK/constants/notification_sections.test.js +5 -0
  46. package/lib/MerchiSDK/constants/notification_types.js +99 -0
  47. package/lib/MerchiSDK/constants/notification_types.test.js +5 -0
  48. package/lib/MerchiSDK/constants/notification_urgencies.js +8 -0
  49. package/lib/MerchiSDK/constants/notification_urgencies.test.js +5 -0
  50. package/lib/MerchiSDK/constants/payment_types.js +12 -0
  51. package/lib/MerchiSDK/constants/payment_types.test.js +5 -0
  52. package/lib/MerchiSDK/constants/platform.js +6 -0
  53. package/lib/MerchiSDK/constants/platform.test.js +9 -0
  54. package/lib/MerchiSDK/constants/product_types.js +27 -0
  55. package/lib/MerchiSDK/constants/product_types.test.js +5 -0
  56. package/lib/MerchiSDK/constants/rights.js +7 -0
  57. package/lib/MerchiSDK/constants/rights.test.js +5 -0
  58. package/lib/MerchiSDK/constants/robots_meta_directives.js +2 -0
  59. package/lib/MerchiSDK/constants/robots_meta_directives.test.js +5 -0
  60. package/lib/MerchiSDK/constants/roles.js +26 -0
  61. package/lib/MerchiSDK/constants/roles.test.js +5 -0
  62. package/lib/MerchiSDK/constants/shipment_companies.js +20 -0
  63. package/lib/MerchiSDK/constants/shipment_companies.test.js +5 -0
  64. package/lib/MerchiSDK/constants/shipment_services.js +5 -0
  65. package/lib/MerchiSDK/constants/shipment_services.test.js +5 -0
  66. package/lib/MerchiSDK/constants/system_roles.js +5 -0
  67. package/lib/MerchiSDK/constants/system_roles.test.js +5 -0
  68. package/lib/MerchiSDK/constants/theme_foundations.js +8 -0
  69. package/lib/MerchiSDK/constants/theme_foundations.test.js +5 -0
  70. package/lib/MerchiSDK/constants/theme_status.js +7 -0
  71. package/lib/MerchiSDK/constants/theme_status.test.js +5 -0
  72. package/lib/MerchiSDK/constants/user_types.js +19 -0
  73. package/lib/MerchiSDK/constants/user_types.test.js +5 -0
  74. package/lib/MerchiSDK/constants/white_label_accessibilities.js +7 -0
  75. package/lib/MerchiSDK/constants/white_label_accessibilities.test.js +5 -0
  76. package/lib/MerchiSDK/cookie.js +17 -0
  77. package/lib/MerchiSDK/cookie.test.js +13 -0
  78. package/lib/MerchiSDK/entities/address.js +166 -0
  79. package/lib/MerchiSDK/entities/address.test.js +7 -0
  80. package/lib/MerchiSDK/entities/assignment.js +185 -0
  81. package/lib/MerchiSDK/entities/assignment.test.js +39 -0
  82. package/lib/MerchiSDK/entities/automatic_payment_relationship.js +77 -0
  83. package/lib/MerchiSDK/entities/automatic_payment_relationship.test.js +7 -0
  84. package/lib/MerchiSDK/entities/backup.js +44 -0
  85. package/lib/MerchiSDK/entities/backup.test.js +7 -0
  86. package/lib/MerchiSDK/entities/bank.js +116 -0
  87. package/lib/MerchiSDK/entities/bank.test.js +7 -0
  88. package/lib/MerchiSDK/entities/cart.js +203 -0
  89. package/lib/MerchiSDK/entities/cart.test.js +53 -0
  90. package/lib/MerchiSDK/entities/cart_item.js +153 -0
  91. package/lib/MerchiSDK/entities/cart_item.test.js +35 -0
  92. package/lib/MerchiSDK/entities/cart_shipment_group.js +62 -0
  93. package/lib/MerchiSDK/entities/cart_shipment_quote.js +85 -0
  94. package/lib/MerchiSDK/entities/category.js +92 -0
  95. package/lib/MerchiSDK/entities/category.test.js +53 -0
  96. package/lib/MerchiSDK/entities/company.js +648 -0
  97. package/lib/MerchiSDK/entities/company.test.js +7 -0
  98. package/lib/MerchiSDK/entities/company_invitation.js +82 -0
  99. package/lib/MerchiSDK/entities/company_invitation.test.js +7 -0
  100. package/lib/MerchiSDK/entities/component.js +209 -0
  101. package/lib/MerchiSDK/entities/component.test.js +13 -0
  102. package/lib/MerchiSDK/entities/component_tag.js +50 -0
  103. package/lib/MerchiSDK/entities/component_tag.test.js +7 -0
  104. package/lib/MerchiSDK/entities/component_version.js +80 -0
  105. package/lib/MerchiSDK/entities/component_version.test.js +7 -0
  106. package/lib/MerchiSDK/entities/country_tax.js +110 -0
  107. package/lib/MerchiSDK/entities/country_tax.test.js +12 -0
  108. package/lib/MerchiSDK/entities/discount.js +77 -0
  109. package/lib/MerchiSDK/entities/discount.test.js +21 -0
  110. package/lib/MerchiSDK/entities/discount_group.js +74 -0
  111. package/lib/MerchiSDK/entities/discount_group.test.js +7 -0
  112. package/lib/MerchiSDK/entities/domain.js +535 -0
  113. package/lib/MerchiSDK/entities/domain.test.js +76 -0
  114. package/lib/MerchiSDK/entities/domain_invitation.js +90 -0
  115. package/lib/MerchiSDK/entities/domain_invitation.test.js +7 -0
  116. package/lib/MerchiSDK/entities/domain_tag.js +100 -0
  117. package/lib/MerchiSDK/entities/domain_tag.test.js +7 -0
  118. package/lib/MerchiSDK/entities/draft.js +180 -0
  119. package/lib/MerchiSDK/entities/draft.test.js +40 -0
  120. package/lib/MerchiSDK/entities/draft_comment.js +132 -0
  121. package/lib/MerchiSDK/entities/draft_comment.test.js +7 -0
  122. package/lib/MerchiSDK/entities/draft_template.js +105 -0
  123. package/lib/MerchiSDK/entities/draft_template.test.js +7 -0
  124. package/lib/MerchiSDK/entities/email_address.js +68 -0
  125. package/lib/MerchiSDK/entities/email_address.test.js +7 -0
  126. package/lib/MerchiSDK/entities/email_counter.js +56 -0
  127. package/lib/MerchiSDK/entities/email_counter.test.js +7 -0
  128. package/lib/MerchiSDK/entities/enrolled_domain.js +85 -0
  129. package/lib/MerchiSDK/entities/enrolled_domain.test.js +7 -0
  130. package/lib/MerchiSDK/entities/exchange_rate.js +62 -0
  131. package/lib/MerchiSDK/entities/exchange_rate.test.js +7 -0
  132. package/lib/MerchiSDK/entities/file.js +384 -0
  133. package/lib/MerchiSDK/entities/file.test.js +39 -0
  134. package/lib/MerchiSDK/entities/internal_tag.js +120 -0
  135. package/lib/MerchiSDK/entities/internal_tag.test.js +7 -0
  136. package/lib/MerchiSDK/entities/inventory.js +120 -0
  137. package/lib/MerchiSDK/entities/inventory.test.js +27 -0
  138. package/lib/MerchiSDK/entities/inventory_unit_variation.js +64 -0
  139. package/lib/MerchiSDK/entities/inventory_unit_variation.test.js +7 -0
  140. package/lib/MerchiSDK/entities/invoice.js +420 -0
  141. package/lib/MerchiSDK/entities/invoice.test.js +40 -0
  142. package/lib/MerchiSDK/entities/item.js +102 -0
  143. package/lib/MerchiSDK/entities/item.test.js +18 -0
  144. package/lib/MerchiSDK/entities/job.js +744 -0
  145. package/lib/MerchiSDK/entities/job.test.js +104 -0
  146. package/lib/MerchiSDK/entities/job_comment.js +120 -0
  147. package/lib/MerchiSDK/entities/job_comment.test.js +7 -0
  148. package/lib/MerchiSDK/entities/matching_inventory.js +77 -0
  149. package/lib/MerchiSDK/entities/menu.js +78 -0
  150. package/lib/MerchiSDK/entities/menu.test.js +7 -0
  151. package/lib/MerchiSDK/entities/menu_item.js +76 -0
  152. package/lib/MerchiSDK/entities/menu_item.test.js +7 -0
  153. package/lib/MerchiSDK/entities/notification.js +234 -0
  154. package/lib/MerchiSDK/entities/notification.test.js +7 -0
  155. package/lib/MerchiSDK/entities/page.js +84 -0
  156. package/lib/MerchiSDK/entities/page.test.js +7 -0
  157. package/lib/MerchiSDK/entities/payment.js +141 -0
  158. package/lib/MerchiSDK/entities/payment.test.js +19 -0
  159. package/lib/MerchiSDK/entities/payment_device.js +87 -0
  160. package/lib/MerchiSDK/entities/payment_device.test.js +7 -0
  161. package/lib/MerchiSDK/entities/phone_number.js +98 -0
  162. package/lib/MerchiSDK/entities/phone_number.test.js +7 -0
  163. package/lib/MerchiSDK/entities/product.js +806 -0
  164. package/lib/MerchiSDK/entities/product.test.js +812 -0
  165. package/lib/MerchiSDK/entities/production_comment.js +120 -0
  166. package/lib/MerchiSDK/entities/production_comment.test.js +7 -0
  167. package/lib/MerchiSDK/entities/quote.js +208 -0
  168. package/lib/MerchiSDK/entities/quote.test.js +108 -0
  169. package/lib/MerchiSDK/entities/quote_item.js +121 -0
  170. package/lib/MerchiSDK/entities/quote_item.test.js +57 -0
  171. package/lib/MerchiSDK/entities/seo_domain_page.js +82 -0
  172. package/lib/MerchiSDK/entities/seo_domain_page.test.js +7 -0
  173. package/lib/MerchiSDK/entities/session.js +77 -0
  174. package/lib/MerchiSDK/entities/session.test.js +7 -0
  175. package/lib/MerchiSDK/entities/shipment.js +401 -0
  176. package/lib/MerchiSDK/entities/shipment.test.js +29 -0
  177. package/lib/MerchiSDK/entities/shipment_item.js +49 -0
  178. package/lib/MerchiSDK/entities/shipment_item.test.js +7 -0
  179. package/lib/MerchiSDK/entities/shipment_item_fulfillment.js +48 -0
  180. package/lib/MerchiSDK/entities/shipment_item_fulfillment.test.js +7 -0
  181. package/lib/MerchiSDK/entities/shipment_method.js +146 -0
  182. package/lib/MerchiSDK/entities/shipment_method.test.js +7 -0
  183. package/lib/MerchiSDK/entities/shipment_method_variation.js +104 -0
  184. package/lib/MerchiSDK/entities/shipment_method_variation.test.js +7 -0
  185. package/lib/MerchiSDK/entities/short_url.js +95 -0
  186. package/lib/MerchiSDK/entities/short_url.test.js +7 -0
  187. package/lib/MerchiSDK/entities/subscription_plan.js +172 -0
  188. package/lib/MerchiSDK/entities/subscription_plan.test.js +7 -0
  189. package/lib/MerchiSDK/entities/supply_domain.js +73 -0
  190. package/lib/MerchiSDK/entities/supply_domain.test.js +7 -0
  191. package/lib/MerchiSDK/entities/system_role.js +50 -0
  192. package/lib/MerchiSDK/entities/system_role.test.js +7 -0
  193. package/lib/MerchiSDK/entities/theme.js +614 -0
  194. package/lib/MerchiSDK/entities/theme.test.js +40 -0
  195. package/lib/MerchiSDK/entities/theme_css_setting.js +67 -0
  196. package/lib/MerchiSDK/entities/theme_css_setting.test.js +7 -0
  197. package/lib/MerchiSDK/entities/user.js +749 -0
  198. package/lib/MerchiSDK/entities/user.test.js +158 -0
  199. package/lib/MerchiSDK/entities/user_company.js +78 -0
  200. package/lib/MerchiSDK/entities/user_company.test.js +7 -0
  201. package/lib/MerchiSDK/entities/variation.js +147 -0
  202. package/lib/MerchiSDK/entities/variation.test.js +7 -0
  203. package/lib/MerchiSDK/entities/variation_field.js +313 -0
  204. package/lib/MerchiSDK/entities/variation_field.test.js +70 -0
  205. package/lib/MerchiSDK/entities/variation_fields_option.js +190 -0
  206. package/lib/MerchiSDK/entities/variation_fields_option.test.js +48 -0
  207. package/lib/MerchiSDK/entities/variation_option.js +129 -0
  208. package/lib/MerchiSDK/entities/variation_option.test.js +7 -0
  209. package/lib/MerchiSDK/entities/variations_group.js +111 -0
  210. package/lib/MerchiSDK/entities/variations_group.test.js +7 -0
  211. package/lib/MerchiSDK/entity.js +896 -0
  212. package/lib/MerchiSDK/merchi.js +332 -0
  213. package/lib/MerchiSDK/merchi.test.js +36 -0
  214. package/lib/MerchiSDK/request.js +137 -0
  215. package/lib/MerchiSDK/request.test.js +47 -0
  216. package/lib/MerchiSDK/test_util.js +20 -0
  217. package/lib/MerchiSDK/toasts.js +28 -0
  218. package/lib/MerchiSDK/toasts.test.js +47 -0
  219. package/lib/MerchiSDK/util/float.js +25 -0
  220. package/lib/MerchiSDK/util/query_string.js +12 -0
  221. package/lib/MerchiSDK/util/query_string.test.js +7 -0
  222. package/lib/MerchiSDK/util/validation.js +4 -0
  223. package/lib/MerchiSDK/util/validation.test.js +13 -0
  224. package/lib/MerchiSDK/uuid.js +9 -0
  225. package/lib/MerchiSDK/uuid.test.js +14 -0
  226. package/lib/assets/merchi-swipe-outline.png +0 -0
  227. package/lib/assets/product-not-found.png +0 -0
  228. package/lib/buttons/Button.js +24 -0
  229. package/lib/buttons/ButtonBack.js +38 -0
  230. package/lib/buttons/ButtonClearCart.js +19 -0
  231. package/lib/buttons/ButtonInvoiceDownload.js +96 -0
  232. package/lib/buttons/ButtonNext.js +45 -0
  233. package/lib/buttons/ButtonNextDynamic.js +23 -0
  234. package/lib/buttons/ButtonPay.js +28 -0
  235. package/lib/buttons/ButtonShipmentTabNext.js +33 -0
  236. package/lib/buttons/index.js +8 -0
  237. package/lib/components/Alert.js +27 -0
  238. package/lib/components/CartBody.js +15 -0
  239. package/lib/components/CartClient.js +52 -0
  240. package/lib/components/CartFooter.js +13 -0
  241. package/lib/components/CartItemRow.js +133 -0
  242. package/lib/components/CartPaymentSettingsInvalid.js +15 -0
  243. package/lib/components/CartShipment.js +57 -0
  244. package/lib/components/CartTabContent.js +13 -0
  245. package/lib/components/CartTabPanel.js +26 -0
  246. package/lib/components/CartTableContainer.js +13 -0
  247. package/lib/components/Collapse.js +33 -0
  248. package/lib/components/LoadingTemplate.js +25 -0
  249. package/lib/components/NoCartItems.js +18 -0
  250. package/lib/components/ShipmentGroupCard.js +132 -0
  251. package/lib/components/Table.js +12 -0
  252. package/lib/components/Title.js +28 -0
  253. package/lib/components/containers.js +32 -0
  254. package/lib/components/index.js +15 -0
  255. package/lib/forms/FormNewCustomer.js +157 -0
  256. package/lib/forms/FormReturningCustomer.js +93 -0
  257. package/lib/forms/FormShipmentAddressAndNotes.js +118 -0
  258. package/lib/forms/FormSquarePayment.js +17 -0
  259. package/lib/forms/FormStripePayment.js +17 -0
  260. package/lib/forms/InputAcceptUserTermsAndConditions.js +38 -0
  261. package/lib/forms/InputError.js +17 -0
  262. package/lib/forms/InputSelect.js +52 -0
  263. package/lib/forms/InputText.js +59 -0
  264. package/lib/forms/InputsAddress.js +226 -0
  265. package/lib/index.js +5 -0
  266. package/lib/panels/PanelCartItems.js +59 -0
  267. package/lib/panels/PanelCartShipment.js +74 -0
  268. package/lib/panels/PanelClearCart.js +49 -0
  269. package/lib/panels/PanelClientCheckout.js +80 -0
  270. package/lib/panels/PanelEditCartItem.js +63 -0
  271. package/lib/panels/PanelPaymentSuccess.js +70 -0
  272. package/lib/panels/index.js +8 -0
  273. package/lib/slices/sliceCart.js +178 -0
  274. package/lib/slices/sliceCartAlert.js +35 -0
  275. package/lib/slices/sliceCartItem.js +30 -0
  276. package/lib/slices/sliceCartPayment.js +47 -0
  277. package/lib/slices/sliceCartShipment.js +72 -0
  278. package/lib/slices/sliceFormReturningCustomer.js +24 -0
  279. package/lib/slices/sliceNewCustomerForm.js +23 -0
  280. package/lib/square/SquareCard.js +52 -0
  281. package/lib/square/actions.js +53 -0
  282. package/lib/square/slices/reducersSquare.js +8 -0
  283. package/lib/square/slices/sliceSquareAlerts.js +34 -0
  284. package/lib/square/slices/sliceSquareForm.js +30 -0
  285. package/lib/store.js +704 -0
  286. package/lib/stripe/StripeCardFields.js +131 -0
  287. package/lib/stripe/StripeCardForm.js +149 -0
  288. package/lib/stripe/StripePaymentButtons.js +99 -0
  289. package/lib/stripe/actions.js +203 -0
  290. package/lib/stripe/slices/sliceStripeAlerts.js +34 -0
  291. package/lib/stripe/slices/sliceStripeCardForm.js +8 -0
  292. package/lib/stripe/slices/sliceStripeForm.js +57 -0
  293. package/lib/stripe/utils.js +20 -0
  294. package/lib/styles/globals.scss +179 -0
  295. package/lib/tabs/CartNav.js +33 -0
  296. package/lib/tabs/NavTab.js +38 -0
  297. package/lib/utilities/address.js +343 -0
  298. package/lib/utilities/cart.js +91 -0
  299. package/lib/utilities/company.js +7 -0
  300. package/lib/utilities/cookie.js +135 -0
  301. package/lib/utilities/currency.js +220 -0
  302. package/lib/utilities/helpers.js +224 -0
  303. package/lib/utilities/invoice.js +120 -0
  304. package/lib/utilities/product.js +6 -0
  305. package/lib/utilities/user.js +77 -0
  306. package/lib/utilities/variations.js +48 -0
  307. package/package.json +90 -0
@@ -0,0 +1,332 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
7
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ import { AutomaticPaymentRelationship } from './entities/automatic_payment_relationship';
11
+ import { Session } from './entities/session';
12
+ import { JobComment } from './entities/job_comment';
13
+ import { Domain } from './entities/domain';
14
+ import { ExchangeRate } from './entities/exchange_rate';
15
+ import { Job } from './entities/job';
16
+ import { Menu } from './entities/menu';
17
+ import { Backup } from './entities/backup';
18
+ import { VariationField } from './entities/variation_field';
19
+ import { VariationOption } from './entities/variation_option';
20
+ import { ProductionComment } from './entities/production_comment';
21
+ import { Product } from './entities/product';
22
+ import { InternalTag } from './entities/internal_tag';
23
+ import { Inventory } from './entities/inventory';
24
+ import { QuoteItem } from './entities/quote_item';
25
+ import { Category } from './entities/category';
26
+ import { Invoice } from './entities/invoice';
27
+ import { UserCompany } from './entities/user_company';
28
+ import { InventoryUnitVariation } from './entities/inventory_unit_variation';
29
+ import { VariationFieldsOption } from './entities/variation_fields_option';
30
+ import { Bank } from './entities/bank';
31
+ import { Shipment } from './entities/shipment';
32
+ import { ShipmentItem } from './entities/shipment_item';
33
+ import { ShipmentItemFulfillment } from './entities/shipment_item_fulfillment';
34
+ import { ShipmentMethod } from './entities/shipment_method';
35
+ import { ShipmentMethodVariation } from './entities/shipment_method_variation';
36
+ import { DomainInvitation } from './entities/domain_invitation';
37
+ import { EmailCounter } from './entities/email_counter';
38
+ import { MenuItem } from './entities/menu_item';
39
+ import { SupplyDomain } from './entities/supply_domain';
40
+ import { Cart } from './entities/cart';
41
+ import { CartShipmentGroup } from './entities/cart_shipment_group';
42
+ import { CartShipmentQuote } from './entities/cart_shipment_quote';
43
+ import { Theme } from './entities/theme';
44
+ import { ThemeCssSetting } from './entities/theme_css_setting';
45
+ import { Component } from './entities/component';
46
+ import { ComponentVersion } from './entities/component_version';
47
+ import { MerchiFile } from './entities/file';
48
+ import { EmailAddress } from './entities/email_address';
49
+ import { SeoDomainPage } from './entities/seo_domain_page';
50
+ import { ShortUrl } from './entities/short_url';
51
+ import { VariationsGroup } from './entities/variations_group';
52
+ import { Quote } from './entities/quote';
53
+ import { Draft } from './entities/draft';
54
+ import { DraftTemplate } from './entities/draft_template';
55
+ import { Discount } from './entities/discount';
56
+ import { DiscountGroup } from './entities/discount_group';
57
+ import { User } from './entities/user';
58
+ import { Company } from './entities/company';
59
+ import { ComponentTag } from './entities/component_tag';
60
+ import { EnrolledDomain } from './entities/enrolled_domain';
61
+ import { CountryTax } from './entities/country_tax';
62
+ import { Item } from './entities/item';
63
+ import { DomainTag } from './entities/domain_tag';
64
+ import { DraftComment } from './entities/draft_comment';
65
+ import { Notification } from './entities/notification';
66
+ import { Payment } from './entities/payment';
67
+ import { Page } from './entities/page';
68
+ import { CompanyInvitation } from './entities/company_invitation';
69
+ import { SystemRole } from './entities/system_role';
70
+ import { PaymentDevice } from './entities/payment_device';
71
+ import { PhoneNumber } from './entities/phone_number';
72
+ import { Variation } from './entities/variation';
73
+ import { CartItem } from './entities/cart_item';
74
+ import { Address } from './entities/address';
75
+ import { Assignment } from './entities/assignment';
76
+ import { MatchingInventory } from './entities/matching_inventory';
77
+ import { SubscriptionPlan } from './entities/subscription_plan';
78
+ import { generateUUID } from './uuid';
79
+ // eslint-disable-next-line no-unused-vars
80
+ import { apiFetch, apiFetchWithProgress } from './request';
81
+ import { getCookie } from './cookie';
82
+
83
+ // the type of classes
84
+
85
+ function cloneClass(original, arg) {
86
+ // copy the constructor, but use the empty object as `this`
87
+ var copy = original.bind({}, arg);
88
+ // pick up any static members (this is shallow, the members are not copied)
89
+ Object.assign(copy, original);
90
+ return copy;
91
+ }
92
+ export var Merchi = /*#__PURE__*/function () {
93
+ function Merchi(sessionToken, clientToken, invoiceToken, cartToken) {
94
+ var _this = this;
95
+ _classCallCheck(this, Merchi);
96
+ this.id = generateUUID();
97
+ this.sessionToken = void 0;
98
+ this.invoiceToken = void 0;
99
+ this.clientToken = void 0;
100
+ this.cartToken = void 0;
101
+ this.AutomaticPaymentRelationship = void 0;
102
+ this.Notification = void 0;
103
+ this.EnrolledDomain = void 0;
104
+ this.Backup = void 0;
105
+ this.SystemRole = void 0;
106
+ this.UserCompany = void 0;
107
+ this.Variation = void 0;
108
+ this.CountryTax = void 0;
109
+ this.MenuItem = void 0;
110
+ this.VariationField = void 0;
111
+ this.Assignment = void 0;
112
+ this.InternalTag = void 0;
113
+ this.Inventory = void 0;
114
+ this.JobComment = void 0;
115
+ this.VariationOption = void 0;
116
+ this.SupplyDomain = void 0;
117
+ this.ProductionComment = void 0;
118
+ this.DraftComment = void 0;
119
+ this.Shipment = void 0;
120
+ this.ShipmentItem = void 0;
121
+ this.ShipmentItemFulfillment = void 0;
122
+ this.ShipmentMethod = void 0;
123
+ this.ShipmentMethodVariation = void 0;
124
+ this.Draft = void 0;
125
+ this.DraftTemplate = void 0;
126
+ this.VariationFieldsOption = void 0;
127
+ this.Category = void 0;
128
+ this.MerchiFile = void 0;
129
+ this.Invoice = void 0;
130
+ this.CompanyInvitation = void 0;
131
+ this.Bank = void 0;
132
+ this.Job = void 0;
133
+ this.DomainInvitation = void 0;
134
+ this.Product = void 0;
135
+ this.DomainTag = void 0;
136
+ this.EmailAddress = void 0;
137
+ this.PhoneNumber = void 0;
138
+ this.Company = void 0;
139
+ this.Address = void 0;
140
+ this.ComponentTag = void 0;
141
+ this.Discount = void 0;
142
+ this.DiscountGroup = void 0;
143
+ this.User = void 0;
144
+ this.Session = void 0;
145
+ this.Theme = void 0;
146
+ this.ThemeCssSetting = void 0;
147
+ this.Item = void 0;
148
+ this.EmailCounter = void 0;
149
+ this.SeoDomainPage = void 0;
150
+ this.Domain = void 0;
151
+ this.ExchangeRate = void 0;
152
+ this.Payment = void 0;
153
+ this.PaymentDevice = void 0;
154
+ this.Page = void 0;
155
+ this.ShortUrl = void 0;
156
+ this.CartItem = void 0;
157
+ this.InventoryUnitVariation = void 0;
158
+ this.VariationsGroup = void 0;
159
+ this.Menu = void 0;
160
+ this.Cart = void 0;
161
+ this.CartShipmentGroup = void 0;
162
+ this.CartShipmentQuote = void 0;
163
+ this.Quote = void 0;
164
+ this.Component = void 0;
165
+ this.ComponentVersion = void 0;
166
+ this.QuoteItem = void 0;
167
+ this.MatchingInventory = void 0;
168
+ this.SubscriptionPlan = void 0;
169
+ this.authenticatedFetch = function (resource, options, expectEmptyResponse) {
170
+ if (!options.query) {
171
+ /* istanbul ignore next */
172
+ options.query = [];
173
+ }
174
+ if (_this.sessionToken) {
175
+ /* istanbul ignore next */
176
+ options.query.push(['session_token', _this.sessionToken]);
177
+ }
178
+ if (_this.clientToken) {
179
+ /* istanbul ignore next */
180
+ options.query.push(['client_token', _this.clientToken]);
181
+ }
182
+ if (_this.invoiceToken) {
183
+ /* istanbul ignore next */
184
+ options.query.push(['invoice_token', _this.invoiceToken]);
185
+ }
186
+ if (_this.cartToken) {
187
+ /* istanbul ignore next */
188
+ options.query.push(['cart_token', _this.cartToken]);
189
+ }
190
+ return apiFetch(resource, options, expectEmptyResponse);
191
+ };
192
+ /* istanbul ignore next */
193
+ this.authenticatedFetchWithProgress = function (resource, options, progressCallback) {
194
+ if (!options.query) {
195
+ options.query = [];
196
+ }
197
+ if (_this.sessionToken) {
198
+ options.query.push(['session_token', _this.sessionToken]);
199
+ }
200
+ if (_this.clientToken) {
201
+ options.query.push(['client_token', _this.clientToken]);
202
+ }
203
+ if (_this.invoiceToken) {
204
+ options.query.push(['invoice_token', _this.invoiceToken]);
205
+ }
206
+ if (_this.cartToken) {
207
+ options.query.push(['cart_token', _this.cartToken]);
208
+ }
209
+ return apiFetchWithProgress(resource, options, progressCallback);
210
+ };
211
+ this.getCurrentUser = function (options) {
212
+ var _ref = options || {},
213
+ _ref$embed = _ref.embed,
214
+ embed = _ref$embed === void 0 ? {} : _ref$embed;
215
+ var defaultEmbed = {
216
+ user: {
217
+ enrolledDomains: {
218
+ domain: {}
219
+ }
220
+ }
221
+ };
222
+ if (!_this.sessionToken) {
223
+ return Promise.resolve(null);
224
+ }
225
+ return _this.Session.get(_this.sessionToken, {
226
+ embed: _objectSpread(_objectSpread({}, defaultEmbed), embed)
227
+ }).then(function (session) {
228
+ return session.user;
229
+ });
230
+ };
231
+ if (sessionToken) {
232
+ this.sessionToken = sessionToken;
233
+ } else {
234
+ this.sessionToken = getCookie('session_token');
235
+ }
236
+ if (clientToken) {
237
+ this.clientToken = clientToken;
238
+ } else {
239
+ this.clientToken = getCookie('client_token');
240
+ }
241
+ if (invoiceToken) {
242
+ this.invoiceToken = invoiceToken;
243
+ } else {
244
+ this.invoiceToken = getCookie('invoice_token');
245
+ }
246
+ if (cartToken) {
247
+ this.cartToken = cartToken;
248
+ } else {
249
+ this.cartToken = getCookie('cart_token');
250
+ }
251
+
252
+ // re-export configured versions of all classes
253
+ this.AutomaticPaymentRelationship = this.setupClass(AutomaticPaymentRelationship);
254
+ this.Variation = this.setupClass(Variation);
255
+ this.DraftComment = this.setupClass(DraftComment);
256
+ this.Component = this.setupClass(Component);
257
+ this.ComponentVersion = this.setupClass(ComponentVersion);
258
+ this.Theme = this.setupClass(Theme);
259
+ this.ThemeCssSetting = this.setupClass(ThemeCssSetting);
260
+ this.Company = this.setupClass(Company);
261
+ this.MenuItem = this.setupClass(MenuItem);
262
+ this.InternalTag = this.setupClass(InternalTag);
263
+ this.Inventory = this.setupClass(Inventory);
264
+ this.Notification = this.setupClass(Notification);
265
+ this.Shipment = this.setupClass(Shipment);
266
+ this.ShipmentItem = this.setupClass(ShipmentItem);
267
+ this.ShipmentItemFulfillment = this.setupClass(ShipmentItemFulfillment);
268
+ this.ShipmentMethod = this.setupClass(ShipmentMethod);
269
+ this.ShipmentMethodVariation = this.setupClass(ShipmentMethodVariation);
270
+ this.Domain = this.setupClass(Domain);
271
+ this.ExchangeRate = this.setupClass(ExchangeRate);
272
+ this.Invoice = this.setupClass(Invoice);
273
+ this.Job = this.setupClass(Job);
274
+ this.ComponentTag = this.setupClass(ComponentTag);
275
+ this.Category = this.setupClass(Category);
276
+ this.VariationField = this.setupClass(VariationField);
277
+ this.InventoryUnitVariation = this.setupClass(InventoryUnitVariation);
278
+ this.PhoneNumber = this.setupClass(PhoneNumber);
279
+ this.QuoteItem = this.setupClass(QuoteItem);
280
+ this.Menu = this.setupClass(Menu);
281
+ this.Assignment = this.setupClass(Assignment);
282
+ this.Draft = this.setupClass(Draft);
283
+ this.DraftTemplate = this.setupClass(DraftTemplate);
284
+ this.VariationsGroup = this.setupClass(VariationsGroup);
285
+ this.EnrolledDomain = this.setupClass(EnrolledDomain);
286
+ this.CompanyInvitation = this.setupClass(CompanyInvitation);
287
+ this.Quote = this.setupClass(Quote);
288
+ this.EmailAddress = this.setupClass(EmailAddress);
289
+ this.SeoDomainPage = this.setupClass(SeoDomainPage);
290
+ this.ProductionComment = this.setupClass(ProductionComment);
291
+ this.Backup = this.setupClass(Backup);
292
+ this.CountryTax = this.setupClass(CountryTax);
293
+ this.ShortUrl = this.setupClass(ShortUrl);
294
+ this.Product = this.setupClass(Product);
295
+ this.SystemRole = this.setupClass(SystemRole);
296
+ this.CartItem = this.setupClass(CartItem);
297
+ this.UserCompany = this.setupClass(UserCompany);
298
+ this.DomainTag = this.setupClass(DomainTag);
299
+ this.VariationFieldsOption = this.setupClass(VariationFieldsOption);
300
+ this.Address = this.setupClass(Address);
301
+ this.Item = this.setupClass(Item);
302
+ this.SupplyDomain = this.setupClass(SupplyDomain);
303
+ this.DomainInvitation = this.setupClass(DomainInvitation);
304
+ this.EmailCounter = this.setupClass(EmailCounter);
305
+ this.Session = this.setupClass(Session);
306
+ this.Bank = this.setupClass(Bank);
307
+ this.Discount = this.setupClass(Discount);
308
+ this.DiscountGroup = this.setupClass(DiscountGroup);
309
+ this.Payment = this.setupClass(Payment);
310
+ this.PaymentDevice = this.setupClass(PaymentDevice);
311
+ this.Page = this.setupClass(Page);
312
+ this.Cart = this.setupClass(Cart);
313
+ this.CartShipmentGroup = this.setupClass(CartShipmentGroup);
314
+ this.CartShipmentQuote = this.setupClass(CartShipmentQuote);
315
+ this.MerchiFile = this.setupClass(MerchiFile);
316
+ this.User = this.setupClass(User);
317
+ this.JobComment = this.setupClass(JobComment);
318
+ this.VariationOption = this.setupClass(VariationOption);
319
+ this.MatchingInventory = this.setupClass(MatchingInventory);
320
+ this.SubscriptionPlan = this.setupClass(SubscriptionPlan);
321
+ }
322
+ _createClass(Merchi, [{
323
+ key: "setupClass",
324
+ value: function setupClass(cls) {
325
+ var result = cloneClass(cls, this);
326
+ result.merchi = this;
327
+ return result;
328
+ }
329
+ }]);
330
+ return Merchi;
331
+ }();
332
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBdXRvbWF0aWNQYXltZW50UmVsYXRpb25zaGlwIiwiU2Vzc2lvbiIsIkpvYkNvbW1lbnQiLCJEb21haW4iLCJFeGNoYW5nZVJhdGUiLCJKb2IiLCJNZW51IiwiQmFja3VwIiwiVmFyaWF0aW9uRmllbGQiLCJWYXJpYXRpb25PcHRpb24iLCJQcm9kdWN0aW9uQ29tbWVudCIsIlByb2R1Y3QiLCJJbnRlcm5hbFRhZyIsIkludmVudG9yeSIsIlF1b3RlSXRlbSIsIkNhdGVnb3J5IiwiSW52b2ljZSIsIlVzZXJDb21wYW55IiwiSW52ZW50b3J5VW5pdFZhcmlhdGlvbiIsIlZhcmlhdGlvbkZpZWxkc09wdGlvbiIsIkJhbmsiLCJTaGlwbWVudCIsIlNoaXBtZW50SXRlbSIsIlNoaXBtZW50SXRlbUZ1bGZpbGxtZW50IiwiU2hpcG1lbnRNZXRob2QiLCJTaGlwbWVudE1ldGhvZFZhcmlhdGlvbiIsIkRvbWFpbkludml0YXRpb24iLCJFbWFpbENvdW50ZXIiLCJNZW51SXRlbSIsIlN1cHBseURvbWFpbiIsIkNhcnQiLCJDYXJ0U2hpcG1lbnRHcm91cCIsIkNhcnRTaGlwbWVudFF1b3RlIiwiVGhlbWUiLCJUaGVtZUNzc1NldHRpbmciLCJDb21wb25lbnQiLCJDb21wb25lbnRWZXJzaW9uIiwiTWVyY2hpRmlsZSIsIkVtYWlsQWRkcmVzcyIsIlNlb0RvbWFpblBhZ2UiLCJTaG9ydFVybCIsIlZhcmlhdGlvbnNHcm91cCIsIlF1b3RlIiwiRHJhZnQiLCJEcmFmdFRlbXBsYXRlIiwiRGlzY291bnQiLCJEaXNjb3VudEdyb3VwIiwiVXNlciIsIkNvbXBhbnkiLCJDb21wb25lbnRUYWciLCJFbnJvbGxlZERvbWFpbiIsIkNvdW50cnlUYXgiLCJJdGVtIiwiRG9tYWluVGFnIiwiRHJhZnRDb21tZW50IiwiTm90aWZpY2F0aW9uIiwiUGF5bWVudCIsIlBhZ2UiLCJDb21wYW55SW52aXRhdGlvbiIsIlN5c3RlbVJvbGUiLCJQYXltZW50RGV2aWNlIiwiUGhvbmVOdW1iZXIiLCJWYXJpYXRpb24iLCJDYXJ0SXRlbSIsIkFkZHJlc3MiLCJBc3NpZ25tZW50IiwiTWF0Y2hpbmdJbnZlbnRvcnkiLCJTdWJzY3JpcHRpb25QbGFuIiwiZ2VuZXJhdGVVVUlEIiwiYXBpRmV0Y2giLCJhcGlGZXRjaFdpdGhQcm9ncmVzcyIsImdldENvb2tpZSIsImNsb25lQ2xhc3MiLCJvcmlnaW5hbCIsImFyZyIsImNvcHkiLCJiaW5kIiwiT2JqZWN0IiwiYXNzaWduIiwiTWVyY2hpIiwic2Vzc2lvblRva2VuIiwiY2xpZW50VG9rZW4iLCJpbnZvaWNlVG9rZW4iLCJjYXJ0VG9rZW4iLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsImlkIiwiYXV0aGVudGljYXRlZEZldGNoIiwicmVzb3VyY2UiLCJvcHRpb25zIiwiZXhwZWN0RW1wdHlSZXNwb25zZSIsInF1ZXJ5IiwicHVzaCIsImF1dGhlbnRpY2F0ZWRGZXRjaFdpdGhQcm9ncmVzcyIsInByb2dyZXNzQ2FsbGJhY2siLCJnZXRDdXJyZW50VXNlciIsIl9yZWYiLCJfcmVmJGVtYmVkIiwiZW1iZWQiLCJkZWZhdWx0RW1iZWQiLCJ1c2VyIiwiZW5yb2xsZWREb21haW5zIiwiZG9tYWluIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXQiLCJfb2JqZWN0U3ByZWFkIiwidGhlbiIsInNlc3Npb24iLCJzZXR1cENsYXNzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJjbHMiLCJyZXN1bHQiLCJtZXJjaGkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvTWVyY2hpU0RLL21lcmNoaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnRpdHksXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBFbWJlZERlc2NyaXB0b3IsXG59IGZyb20gJy4vZW50aXR5JztcbmltcG9ydCB7IEF1dG9tYXRpY1BheW1lbnRSZWxhdGlvbnNoaXAgfSBmcm9tICcuL2VudGl0aWVzL2F1dG9tYXRpY19wYXltZW50X3JlbGF0aW9uc2hpcCc7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSAnLi9lbnRpdGllcy9zZXNzaW9uJztcbmltcG9ydCB7IEpvYkNvbW1lbnQgfSBmcm9tICcuL2VudGl0aWVzL2pvYl9jb21tZW50JztcbmltcG9ydCB7IERvbWFpbiB9IGZyb20gJy4vZW50aXRpZXMvZG9tYWluJztcbmltcG9ydCB7IEV4Y2hhbmdlUmF0ZSB9IGZyb20gJy4vZW50aXRpZXMvZXhjaGFuZ2VfcmF0ZSc7XG5pbXBvcnQgeyBKb2IgfSBmcm9tICcuL2VudGl0aWVzL2pvYic7XG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi9lbnRpdGllcy9tZW51JztcbmltcG9ydCB7IEJhY2t1cCB9IGZyb20gJy4vZW50aXRpZXMvYmFja3VwJztcbmltcG9ydCB7IFZhcmlhdGlvbkZpZWxkIH0gZnJvbSAnLi9lbnRpdGllcy92YXJpYXRpb25fZmllbGQnO1xuaW1wb3J0IHsgVmFyaWF0aW9uT3B0aW9uIH0gZnJvbSAnLi9lbnRpdGllcy92YXJpYXRpb25fb3B0aW9uJztcbmltcG9ydCB7IFByb2R1Y3Rpb25Db21tZW50IH0gZnJvbSAnLi9lbnRpdGllcy9wcm9kdWN0aW9uX2NvbW1lbnQnO1xuaW1wb3J0IHsgUHJvZHVjdCB9IGZyb20gJy4vZW50aXRpZXMvcHJvZHVjdCc7XG5pbXBvcnQgeyBJbnRlcm5hbFRhZyB9IGZyb20gJy4vZW50aXRpZXMvaW50ZXJuYWxfdGFnJztcbmltcG9ydCB7IEludmVudG9yeSB9IGZyb20gJy4vZW50aXRpZXMvaW52ZW50b3J5JztcbmltcG9ydCB7IFF1b3RlSXRlbSB9IGZyb20gJy4vZW50aXRpZXMvcXVvdGVfaXRlbSc7XG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gJy4vZW50aXRpZXMvY2F0ZWdvcnknO1xuaW1wb3J0IHsgSW52b2ljZSB9IGZyb20gJy4vZW50aXRpZXMvaW52b2ljZSc7XG5pbXBvcnQgeyBVc2VyQ29tcGFueSB9IGZyb20gJy4vZW50aXRpZXMvdXNlcl9jb21wYW55JztcbmltcG9ydCB7IEludmVudG9yeVVuaXRWYXJpYXRpb24gfSBmcm9tICcuL2VudGl0aWVzL2ludmVudG9yeV91bml0X3ZhcmlhdGlvbic7XG5pbXBvcnQgeyBWYXJpYXRpb25GaWVsZHNPcHRpb24gfSBmcm9tICcuL2VudGl0aWVzL3ZhcmlhdGlvbl9maWVsZHNfb3B0aW9uJztcbmltcG9ydCB7IEJhbmsgfSBmcm9tICcuL2VudGl0aWVzL2JhbmsnO1xuaW1wb3J0IHsgU2hpcG1lbnQgfSBmcm9tICcuL2VudGl0aWVzL3NoaXBtZW50JztcbmltcG9ydCB7IFNoaXBtZW50SXRlbSB9IGZyb20gJy4vZW50aXRpZXMvc2hpcG1lbnRfaXRlbSc7XG5pbXBvcnQgeyBTaGlwbWVudEl0ZW1GdWxmaWxsbWVudCB9IGZyb20gJy4vZW50aXRpZXMvc2hpcG1lbnRfaXRlbV9mdWxmaWxsbWVudCc7XG5pbXBvcnQgeyBTaGlwbWVudE1ldGhvZCB9IGZyb20gJy4vZW50aXRpZXMvc2hpcG1lbnRfbWV0aG9kJztcbmltcG9ydCB7IFNoaXBtZW50TWV0aG9kVmFyaWF0aW9uIH0gZnJvbSAnLi9lbnRpdGllcy9zaGlwbWVudF9tZXRob2RfdmFyaWF0aW9uJztcbmltcG9ydCB7IERvbWFpbkludml0YXRpb24gfSBmcm9tICcuL2VudGl0aWVzL2RvbWFpbl9pbnZpdGF0aW9uJztcbmltcG9ydCB7IEVtYWlsQ291bnRlciB9IGZyb20gJy4vZW50aXRpZXMvZW1haWxfY291bnRlcic7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJy4vZW50aXRpZXMvbWVudV9pdGVtJztcbmltcG9ydCB7IFN1cHBseURvbWFpbiB9IGZyb20gJy4vZW50aXRpZXMvc3VwcGx5X2RvbWFpbic7XG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSAnLi9lbnRpdGllcy9jYXJ0JztcbmltcG9ydCB7IENhcnRTaGlwbWVudEdyb3VwIH0gZnJvbSAnLi9lbnRpdGllcy9jYXJ0X3NoaXBtZW50X2dyb3VwJztcbmltcG9ydCB7IENhcnRTaGlwbWVudFF1b3RlIH0gZnJvbSAnLi9lbnRpdGllcy9jYXJ0X3NoaXBtZW50X3F1b3RlJztcbmltcG9ydCB7IFRoZW1lIH0gZnJvbSAnLi9lbnRpdGllcy90aGVtZSc7XG5pbXBvcnQgeyBUaGVtZUNzc1NldHRpbmcgfSBmcm9tICcuL2VudGl0aWVzL3RoZW1lX2Nzc19zZXR0aW5nJztcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJy4vZW50aXRpZXMvY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFZlcnNpb24gfSBmcm9tICcuL2VudGl0aWVzL2NvbXBvbmVudF92ZXJzaW9uJztcbmltcG9ydCB7IE1lcmNoaUZpbGUgfSBmcm9tICcuL2VudGl0aWVzL2ZpbGUnO1xuaW1wb3J0IHsgRW1haWxBZGRyZXNzIH0gZnJvbSAnLi9lbnRpdGllcy9lbWFpbF9hZGRyZXNzJztcbmltcG9ydCB7IFNlb0RvbWFpblBhZ2UgfSBmcm9tICcuL2VudGl0aWVzL3Nlb19kb21haW5fcGFnZSc7XG5pbXBvcnQgeyBTaG9ydFVybCB9IGZyb20gJy4vZW50aXRpZXMvc2hvcnRfdXJsJztcbmltcG9ydCB7IFZhcmlhdGlvbnNHcm91cCB9IGZyb20gJy4vZW50aXRpZXMvdmFyaWF0aW9uc19ncm91cCc7XG5pbXBvcnQgeyBRdW90ZSB9IGZyb20gJy4vZW50aXRpZXMvcXVvdGUnO1xuaW1wb3J0IHsgRHJhZnQgfSBmcm9tICcuL2VudGl0aWVzL2RyYWZ0JztcbmltcG9ydCB7IERyYWZ0VGVtcGxhdGUgfSBmcm9tICcuL2VudGl0aWVzL2RyYWZ0X3RlbXBsYXRlJztcbmltcG9ydCB7IERpc2NvdW50IH0gZnJvbSAnLi9lbnRpdGllcy9kaXNjb3VudCc7XG5pbXBvcnQgeyBEaXNjb3VudEdyb3VwIH0gZnJvbSAnLi9lbnRpdGllcy9kaXNjb3VudF9ncm91cCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi9lbnRpdGllcy91c2VyJztcbmltcG9ydCB7IENvbXBhbnkgfSBmcm9tICcuL2VudGl0aWVzL2NvbXBhbnknO1xuaW1wb3J0IHsgQ29tcG9uZW50VGFnIH0gZnJvbSAnLi9lbnRpdGllcy9jb21wb25lbnRfdGFnJztcbmltcG9ydCB7IEVucm9sbGVkRG9tYWluIH0gZnJvbSAnLi9lbnRpdGllcy9lbnJvbGxlZF9kb21haW4nO1xuaW1wb3J0IHsgQ291bnRyeVRheCB9IGZyb20gJy4vZW50aXRpZXMvY291bnRyeV90YXgnO1xuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4vZW50aXRpZXMvaXRlbSc7XG5pbXBvcnQgeyBEb21haW5UYWcgfSBmcm9tICcuL2VudGl0aWVzL2RvbWFpbl90YWcnO1xuaW1wb3J0IHsgRHJhZnRDb21tZW50IH0gZnJvbSAnLi9lbnRpdGllcy9kcmFmdF9jb21tZW50JztcbmltcG9ydCB7IE5vdGlmaWNhdGlvbiB9IGZyb20gJy4vZW50aXRpZXMvbm90aWZpY2F0aW9uJztcbmltcG9ydCB7IFBheW1lbnQgfSBmcm9tICcuL2VudGl0aWVzL3BheW1lbnQnO1xuaW1wb3J0IHsgUGFnZSB9IGZyb20gJy4vZW50aXRpZXMvcGFnZSc7XG5pbXBvcnQgeyBDb21wYW55SW52aXRhdGlvbiB9IGZyb20gJy4vZW50aXRpZXMvY29tcGFueV9pbnZpdGF0aW9uJztcbmltcG9ydCB7IFN5c3RlbVJvbGUgfSBmcm9tICcuL2VudGl0aWVzL3N5c3RlbV9yb2xlJztcbmltcG9ydCB7IFBheW1lbnREZXZpY2UgfSBmcm9tICcuL2VudGl0aWVzL3BheW1lbnRfZGV2aWNlJztcbmltcG9ydCB7IFBob25lTnVtYmVyIH0gZnJvbSAnLi9lbnRpdGllcy9waG9uZV9udW1iZXInO1xuaW1wb3J0IHsgVmFyaWF0aW9uIH0gZnJvbSAnLi9lbnRpdGllcy92YXJpYXRpb24nO1xuaW1wb3J0IHsgQ2FydEl0ZW0gfSBmcm9tICcuL2VudGl0aWVzL2NhcnRfaXRlbSc7XG5pbXBvcnQgeyBBZGRyZXNzIH0gZnJvbSAnLi9lbnRpdGllcy9hZGRyZXNzJztcbmltcG9ydCB7IEFzc2lnbm1lbnQgfSBmcm9tICcuL2VudGl0aWVzL2Fzc2lnbm1lbnQnO1xuaW1wb3J0IHsgTWF0Y2hpbmdJbnZlbnRvcnkgfSBmcm9tICcuL2VudGl0aWVzL21hdGNoaW5nX2ludmVudG9yeSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25QbGFuIH0gZnJvbSAnLi9lbnRpdGllcy9zdWJzY3JpcHRpb25fcGxhbic7XG5pbXBvcnQgeyBnZW5lcmF0ZVVVSUQgfSBmcm9tICcuL3V1aWQnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBSZXF1ZXN0T3B0aW9ucywgYXBpRmV0Y2gsIGFwaUZldGNoV2l0aFByb2dyZXNzIH0gZnJvbSAnLi9yZXF1ZXN0JztcbmltcG9ydCB7IGdldENvb2tpZSB9IGZyb20gJy4vY29va2llJztcblxuLy8gdGhlIHR5cGUgb2YgY2xhc3Nlc1xuZXhwb3J0IGludGVyZmFjZSBUeXBlPFQsIEEgZXh0ZW5kcyBhbnlbXT4gZXh0ZW5kcyBGdW5jdGlvbiB7XG4gIG5ldyAoLi4uYXJnczogQSk6IFQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lQ2xhc3M8VCwgQSBleHRlbmRzIFtdPihcbiAgb3JpZ2luYWw6IFR5cGU8VCwgQT4sXG4gIGFyZzogYW55XG4pOiBUeXBlPFQsIEE+IHtcbiAgLy8gY29weSB0aGUgY29uc3RydWN0b3IsIGJ1dCB1c2UgdGhlIGVtcHR5IG9iamVjdCBhcyBgdGhpc2BcbiAgY29uc3QgY29weSA9IG9yaWdpbmFsLmJpbmQoe30sIGFyZyk7XG4gIC8vIHBpY2sgdXAgYW55IHN0YXRpYyBtZW1iZXJzICh0aGlzIGlzIHNoYWxsb3csIHRoZSBtZW1iZXJzIGFyZSBub3QgY29waWVkKVxuICBPYmplY3QuYXNzaWduKGNvcHksIG9yaWdpbmFsKTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbmludGVyZmFjZSBVc2VyUmVxdWVzdE9wdGlvbnMge1xuICBlbWJlZD86IEVtYmVkRGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGNsYXNzIE1lcmNoaSB7XG4gIHB1YmxpYyBpZDogc3RyaW5nID0gZ2VuZXJhdGVVVUlEKCk7XG5cbiAgcHVibGljIHNlc3Npb25Ub2tlbj86IHN0cmluZztcbiAgcHVibGljIGludm9pY2VUb2tlbj86IHN0cmluZztcbiAgcHVibGljIGNsaWVudFRva2VuPzogc3RyaW5nO1xuICBwdWJsaWMgY2FydFRva2VuPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBBdXRvbWF0aWNQYXltZW50UmVsYXRpb25zaGlwOiB0eXBlb2YgQXV0b21hdGljUGF5bWVudFJlbGF0aW9uc2hpcDtcbiAgcHVibGljIE5vdGlmaWNhdGlvbjogdHlwZW9mIE5vdGlmaWNhdGlvbjtcbiAgcHVibGljIEVucm9sbGVkRG9tYWluOiB0eXBlb2YgRW5yb2xsZWREb21haW47XG4gIHB1YmxpYyBCYWNrdXA6IHR5cGVvZiBCYWNrdXA7XG4gIHB1YmxpYyBTeXN0ZW1Sb2xlOiB0eXBlb2YgU3lzdGVtUm9sZTtcbiAgcHVibGljIFVzZXJDb21wYW55OiB0eXBlb2YgVXNlckNvbXBhbnk7XG4gIHB1YmxpYyBWYXJpYXRpb246IHR5cGVvZiBWYXJpYXRpb247XG4gIHB1YmxpYyBDb3VudHJ5VGF4OiB0eXBlb2YgQ291bnRyeVRheDtcbiAgcHVibGljIE1lbnVJdGVtOiB0eXBlb2YgTWVudUl0ZW07XG4gIHB1YmxpYyBWYXJpYXRpb25GaWVsZDogdHlwZW9mIFZhcmlhdGlvbkZpZWxkO1xuICBwdWJsaWMgQXNzaWdubWVudDogdHlwZW9mIEFzc2lnbm1lbnQ7XG4gIHB1YmxpYyBJbnRlcm5hbFRhZzogdHlwZW9mIEludGVybmFsVGFnO1xuICBwdWJsaWMgSW52ZW50b3J5OiB0eXBlb2YgSW52ZW50b3J5O1xuICBwdWJsaWMgSm9iQ29tbWVudDogdHlwZW9mIEpvYkNvbW1lbnQ7XG4gIHB1YmxpYyBWYXJpYXRpb25PcHRpb246IHR5cGVvZiBWYXJpYXRpb25PcHRpb247XG4gIHB1YmxpYyBTdXBwbHlEb21haW46IHR5cGVvZiBTdXBwbHlEb21haW47XG4gIHB1YmxpYyBQcm9kdWN0aW9uQ29tbWVudDogdHlwZW9mIFByb2R1Y3Rpb25Db21tZW50O1xuICBwdWJsaWMgRHJhZnRDb21tZW50OiB0eXBlb2YgRHJhZnRDb21tZW50O1xuICBwdWJsaWMgU2hpcG1lbnQ6IHR5cGVvZiBTaGlwbWVudDtcbiAgcHVibGljIFNoaXBtZW50SXRlbTogdHlwZW9mIFNoaXBtZW50SXRlbTtcbiAgcHVibGljIFNoaXBtZW50SXRlbUZ1bGZpbGxtZW50OiB0eXBlb2YgU2hpcG1lbnRJdGVtRnVsZmlsbG1lbnQ7XG4gIHB1YmxpYyBTaGlwbWVudE1ldGhvZDogdHlwZW9mIFNoaXBtZW50TWV0aG9kO1xuICBwdWJsaWMgU2hpcG1lbnRNZXRob2RWYXJpYXRpb246IHR5cGVvZiBTaGlwbWVudE1ldGhvZFZhcmlhdGlvbjtcbiAgcHVibGljIERyYWZ0OiB0eXBlb2YgRHJhZnQ7XG4gIHB1YmxpYyBEcmFmdFRlbXBsYXRlOiB0eXBlb2YgRHJhZnRUZW1wbGF0ZTtcbiAgcHVibGljIFZhcmlhdGlvbkZpZWxkc09wdGlvbjogdHlwZW9mIFZhcmlhdGlvbkZpZWxkc09wdGlvbjtcbiAgcHVibGljIENhdGVnb3J5OiB0eXBlb2YgQ2F0ZWdvcnk7XG4gIHB1YmxpYyBNZXJjaGlGaWxlOiB0eXBlb2YgTWVyY2hpRmlsZTtcbiAgcHVibGljIEludm9pY2U6IHR5cGVvZiBJbnZvaWNlO1xuICBwdWJsaWMgQ29tcGFueUludml0YXRpb246IHR5cGVvZiBDb21wYW55SW52aXRhdGlvbjtcbiAgcHVibGljIEJhbms6IHR5cGVvZiBCYW5rO1xuICBwdWJsaWMgSm9iOiB0eXBlb2YgSm9iO1xuICBwdWJsaWMgRG9tYWluSW52aXRhdGlvbjogdHlwZW9mIERvbWFpbkludml0YXRpb247XG4gIHB1YmxpYyBQcm9kdWN0OiB0eXBlb2YgUHJvZHVjdDtcbiAgcHVibGljIERvbWFpblRhZzogdHlwZW9mIERvbWFpblRhZztcbiAgcHVibGljIEVtYWlsQWRkcmVzczogdHlwZW9mIEVtYWlsQWRkcmVzcztcbiAgcHVibGljIFBob25lTnVtYmVyOiB0eXBlb2YgUGhvbmVOdW1iZXI7XG4gIHB1YmxpYyBDb21wYW55OiB0eXBlb2YgQ29tcGFueTtcbiAgcHVibGljIEFkZHJlc3M6IHR5cGVvZiBBZGRyZXNzO1xuICBwdWJsaWMgQ29tcG9uZW50VGFnOiB0eXBlb2YgQ29tcG9uZW50VGFnO1xuICBwdWJsaWMgRGlzY291bnQ6IHR5cGVvZiBEaXNjb3VudDtcbiAgcHVibGljIERpc2NvdW50R3JvdXA6IHR5cGVvZiBEaXNjb3VudEdyb3VwO1xuICBwdWJsaWMgVXNlcjogdHlwZW9mIFVzZXI7XG4gIHB1YmxpYyBTZXNzaW9uOiB0eXBlb2YgU2Vzc2lvbjtcbiAgcHVibGljIFRoZW1lOiB0eXBlb2YgVGhlbWU7XG4gIHB1YmxpYyBUaGVtZUNzc1NldHRpbmc6IHR5cGVvZiBUaGVtZUNzc1NldHRpbmc7XG4gIHB1YmxpYyBJdGVtOiB0eXBlb2YgSXRlbTtcbiAgcHVibGljIEVtYWlsQ291bnRlcjogdHlwZW9mIEVtYWlsQ291bnRlcjtcbiAgcHVibGljIFNlb0RvbWFpblBhZ2U6IHR5cGVvZiBTZW9Eb21haW5QYWdlO1xuICBwdWJsaWMgRG9tYWluOiB0eXBlb2YgRG9tYWluO1xuICBwdWJsaWMgRXhjaGFuZ2VSYXRlOiB0eXBlb2YgRXhjaGFuZ2VSYXRlO1xuICBwdWJsaWMgUGF5bWVudDogdHlwZW9mIFBheW1lbnQ7XG4gIHB1YmxpYyBQYXltZW50RGV2aWNlOiB0eXBlb2YgUGF5bWVudERldmljZTtcbiAgcHVibGljIFBhZ2U6IHR5cGVvZiBQYWdlO1xuICBwdWJsaWMgU2hvcnRVcmw6IHR5cGVvZiBTaG9ydFVybDtcbiAgcHVibGljIENhcnRJdGVtOiB0eXBlb2YgQ2FydEl0ZW07XG4gIHB1YmxpYyBJbnZlbnRvcnlVbml0VmFyaWF0aW9uOiB0eXBlb2YgSW52ZW50b3J5VW5pdFZhcmlhdGlvbjtcbiAgcHVibGljIFZhcmlhdGlvbnNHcm91cDogdHlwZW9mIFZhcmlhdGlvbnNHcm91cDtcbiAgcHVibGljIE1lbnU6IHR5cGVvZiBNZW51O1xuICBwdWJsaWMgQ2FydDogdHlwZW9mIENhcnQ7XG4gIHB1YmxpYyBDYXJ0U2hpcG1lbnRHcm91cDogdHlwZW9mIENhcnRTaGlwbWVudEdyb3VwO1xuICBwdWJsaWMgQ2FydFNoaXBtZW50UXVvdGU6IHR5cGVvZiBDYXJ0U2hpcG1lbnRRdW90ZTtcbiAgcHVibGljIFF1b3RlOiB0eXBlb2YgUXVvdGU7XG4gIHB1YmxpYyBDb21wb25lbnQ6IHR5cGVvZiBDb21wb25lbnQ7XG4gIHB1YmxpYyBDb21wb25lbnRWZXJzaW9uIDogdHlwZW9mIENvbXBvbmVudFZlcnNpb247XG4gIHB1YmxpYyBRdW90ZUl0ZW06IHR5cGVvZiBRdW90ZUl0ZW07XG4gIHB1YmxpYyBNYXRjaGluZ0ludmVudG9yeTogdHlwZW9mIE1hdGNoaW5nSW52ZW50b3J5O1xuICBwdWJsaWMgU3Vic2NyaXB0aW9uUGxhbjogdHlwZW9mIFN1YnNjcmlwdGlvblBsYW47XG5cbiAgcHVibGljIHNldHVwQ2xhc3MoY2xzOiB0eXBlb2YgRW50aXR5KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gY2xvbmVDbGFzcyhjbHMsIHRoaXMpIGFzIHR5cGVvZiBFbnRpdHk7XG4gICAgcmVzdWx0Lm1lcmNoaSA9IHRoaXM7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBzZXNzaW9uVG9rZW4/OiBzdHJpbmcsXG4gICAgY2xpZW50VG9rZW4/OiBzdHJpbmcsXG4gICAgaW52b2ljZVRva2VuPzogc3RyaW5nLFxuICAgIGNhcnRUb2tlbj86IHN0cmluZ1xuICApIHtcbiAgICBpZiAoc2Vzc2lvblRva2VuKSB7XG4gICAgICB0aGlzLnNlc3Npb25Ub2tlbiA9IHNlc3Npb25Ub2tlbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXNzaW9uVG9rZW4gPSBnZXRDb29raWUoJ3Nlc3Npb25fdG9rZW4nKTtcbiAgICB9XG5cbiAgICBpZiAoY2xpZW50VG9rZW4pIHtcbiAgICAgIHRoaXMuY2xpZW50VG9rZW4gPSBjbGllbnRUb2tlbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGllbnRUb2tlbiA9IGdldENvb2tpZSgnY2xpZW50X3Rva2VuJyk7XG4gICAgfVxuXG4gICAgaWYgKGludm9pY2VUb2tlbikge1xuICAgICAgdGhpcy5pbnZvaWNlVG9rZW4gPSBpbnZvaWNlVG9rZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW52b2ljZVRva2VuID0gZ2V0Q29va2llKCdpbnZvaWNlX3Rva2VuJyk7XG4gICAgfVxuXG4gICAgaWYgKGNhcnRUb2tlbikge1xuICAgICAgdGhpcy5jYXJ0VG9rZW4gPSBjYXJ0VG9rZW47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FydFRva2VuID0gZ2V0Q29va2llKCdjYXJ0X3Rva2VuJyk7XG4gICAgfVxuXG4gICAgLy8gcmUtZXhwb3J0IGNvbmZpZ3VyZWQgdmVyc2lvbnMgb2YgYWxsIGNsYXNzZXNcbiAgICB0aGlzLkF1dG9tYXRpY1BheW1lbnRSZWxhdGlvbnNoaXAgPSB0aGlzLnNldHVwQ2xhc3MoXG4gICAgICBBdXRvbWF0aWNQYXltZW50UmVsYXRpb25zaGlwXG4gICAgKSBhcyB0eXBlb2YgQXV0b21hdGljUGF5bWVudFJlbGF0aW9uc2hpcDtcbiAgICB0aGlzLlZhcmlhdGlvbiA9IHRoaXMuc2V0dXBDbGFzcyhWYXJpYXRpb24pIGFzIHR5cGVvZiBWYXJpYXRpb247XG4gICAgdGhpcy5EcmFmdENvbW1lbnQgPSB0aGlzLnNldHVwQ2xhc3MoRHJhZnRDb21tZW50KSBhcyB0eXBlb2YgRHJhZnRDb21tZW50O1xuICAgIHRoaXMuQ29tcG9uZW50ID0gdGhpcy5zZXR1cENsYXNzKENvbXBvbmVudCkgYXMgdHlwZW9mIENvbXBvbmVudDtcbiAgICB0aGlzLkNvbXBvbmVudFZlcnNpb24gPSB0aGlzLnNldHVwQ2xhc3MoQ29tcG9uZW50VmVyc2lvbikgYXMgdHlwZW9mIENvbXBvbmVudFZlcnNpb247XG4gICAgdGhpcy5UaGVtZSA9IHRoaXMuc2V0dXBDbGFzcyhUaGVtZSkgYXMgdHlwZW9mIFRoZW1lO1xuICAgIHRoaXMuVGhlbWVDc3NTZXR0aW5nID0gdGhpcy5zZXR1cENsYXNzKFRoZW1lQ3NzU2V0dGluZykgYXMgdHlwZW9mIFRoZW1lQ3NzU2V0dGluZztcbiAgICB0aGlzLkNvbXBhbnkgPSB0aGlzLnNldHVwQ2xhc3MoQ29tcGFueSkgYXMgdHlwZW9mIENvbXBhbnk7XG4gICAgdGhpcy5NZW51SXRlbSA9IHRoaXMuc2V0dXBDbGFzcyhNZW51SXRlbSkgYXMgdHlwZW9mIE1lbnVJdGVtO1xuICAgIHRoaXMuSW50ZXJuYWxUYWcgPSB0aGlzLnNldHVwQ2xhc3MoSW50ZXJuYWxUYWcpIGFzIHR5cGVvZiBJbnRlcm5hbFRhZztcbiAgICB0aGlzLkludmVudG9yeSA9IHRoaXMuc2V0dXBDbGFzcyhJbnZlbnRvcnkpIGFzIHR5cGVvZiBJbnZlbnRvcnk7XG4gICAgdGhpcy5Ob3RpZmljYXRpb24gPSB0aGlzLnNldHVwQ2xhc3MoTm90aWZpY2F0aW9uKSBhcyB0eXBlb2YgTm90aWZpY2F0aW9uO1xuICAgIHRoaXMuU2hpcG1lbnQgPSB0aGlzLnNldHVwQ2xhc3MoU2hpcG1lbnQpIGFzIHR5cGVvZiBTaGlwbWVudDtcbiAgICB0aGlzLlNoaXBtZW50SXRlbSA9IHRoaXMuc2V0dXBDbGFzcyhTaGlwbWVudEl0ZW0pIGFzIHR5cGVvZiBTaGlwbWVudEl0ZW07XG4gICAgdGhpcy5TaGlwbWVudEl0ZW1GdWxmaWxsbWVudCA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFNoaXBtZW50SXRlbUZ1bGZpbGxtZW50XG4gICAgKSBhcyB0eXBlb2YgU2hpcG1lbnRJdGVtRnVsZmlsbG1lbnQ7XG4gICAgdGhpcy5TaGlwbWVudE1ldGhvZCA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFNoaXBtZW50TWV0aG9kXG4gICAgKSBhcyB0eXBlb2YgU2hpcG1lbnRNZXRob2Q7XG4gICAgdGhpcy5TaGlwbWVudE1ldGhvZFZhcmlhdGlvbiA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFNoaXBtZW50TWV0aG9kVmFyaWF0aW9uXG4gICAgKSBhcyB0eXBlb2YgU2hpcG1lbnRNZXRob2RWYXJpYXRpb247XG4gICAgdGhpcy5Eb21haW4gPSB0aGlzLnNldHVwQ2xhc3MoRG9tYWluKSBhcyB0eXBlb2YgRG9tYWluO1xuICAgIHRoaXMuRXhjaGFuZ2VSYXRlID0gdGhpcy5zZXR1cENsYXNzKEV4Y2hhbmdlUmF0ZSkgYXMgdHlwZW9mIEV4Y2hhbmdlUmF0ZTtcbiAgICB0aGlzLkludm9pY2UgPSB0aGlzLnNldHVwQ2xhc3MoSW52b2ljZSkgYXMgdHlwZW9mIEludm9pY2U7XG4gICAgdGhpcy5Kb2IgPSB0aGlzLnNldHVwQ2xhc3MoSm9iKSBhcyB0eXBlb2YgSm9iO1xuICAgIHRoaXMuQ29tcG9uZW50VGFnID0gdGhpcy5zZXR1cENsYXNzKENvbXBvbmVudFRhZykgYXMgdHlwZW9mIENvbXBvbmVudFRhZztcbiAgICB0aGlzLkNhdGVnb3J5ID0gdGhpcy5zZXR1cENsYXNzKENhdGVnb3J5KSBhcyB0eXBlb2YgQ2F0ZWdvcnk7XG4gICAgdGhpcy5WYXJpYXRpb25GaWVsZCA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFZhcmlhdGlvbkZpZWxkXG4gICAgKSBhcyB0eXBlb2YgVmFyaWF0aW9uRmllbGQ7XG4gICAgdGhpcy5JbnZlbnRvcnlVbml0VmFyaWF0aW9uID0gdGhpcy5zZXR1cENsYXNzKFxuICAgICAgSW52ZW50b3J5VW5pdFZhcmlhdGlvblxuICAgICkgYXMgdHlwZW9mIEludmVudG9yeVVuaXRWYXJpYXRpb247XG4gICAgdGhpcy5QaG9uZU51bWJlciA9IHRoaXMuc2V0dXBDbGFzcyhQaG9uZU51bWJlcikgYXMgdHlwZW9mIFBob25lTnVtYmVyO1xuICAgIHRoaXMuUXVvdGVJdGVtID0gdGhpcy5zZXR1cENsYXNzKFF1b3RlSXRlbSkgYXMgdHlwZW9mIFF1b3RlSXRlbTtcbiAgICB0aGlzLk1lbnUgPSB0aGlzLnNldHVwQ2xhc3MoTWVudSkgYXMgdHlwZW9mIE1lbnU7XG4gICAgdGhpcy5Bc3NpZ25tZW50ID0gdGhpcy5zZXR1cENsYXNzKEFzc2lnbm1lbnQpIGFzIHR5cGVvZiBBc3NpZ25tZW50O1xuICAgIHRoaXMuRHJhZnQgPSB0aGlzLnNldHVwQ2xhc3MoRHJhZnQpIGFzIHR5cGVvZiBEcmFmdDtcbiAgICB0aGlzLkRyYWZ0VGVtcGxhdGUgPSB0aGlzLnNldHVwQ2xhc3MoRHJhZnRUZW1wbGF0ZSkgYXMgdHlwZW9mIERyYWZ0VGVtcGxhdGU7XG4gICAgdGhpcy5WYXJpYXRpb25zR3JvdXAgPSB0aGlzLnNldHVwQ2xhc3MoXG4gICAgICBWYXJpYXRpb25zR3JvdXBcbiAgICApIGFzIHR5cGVvZiBWYXJpYXRpb25zR3JvdXA7XG4gICAgdGhpcy5FbnJvbGxlZERvbWFpbiA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIEVucm9sbGVkRG9tYWluXG4gICAgKSBhcyB0eXBlb2YgRW5yb2xsZWREb21haW47XG4gICAgdGhpcy5Db21wYW55SW52aXRhdGlvbiA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIENvbXBhbnlJbnZpdGF0aW9uXG4gICAgKSBhcyB0eXBlb2YgQ29tcGFueUludml0YXRpb247XG4gICAgdGhpcy5RdW90ZSA9IHRoaXMuc2V0dXBDbGFzcyhRdW90ZSkgYXMgdHlwZW9mIFF1b3RlO1xuICAgIHRoaXMuRW1haWxBZGRyZXNzID0gdGhpcy5zZXR1cENsYXNzKEVtYWlsQWRkcmVzcykgYXMgdHlwZW9mIEVtYWlsQWRkcmVzcztcbiAgICB0aGlzLlNlb0RvbWFpblBhZ2UgPSB0aGlzLnNldHVwQ2xhc3MoU2VvRG9tYWluUGFnZSkgYXMgdHlwZW9mIFNlb0RvbWFpblBhZ2U7XG4gICAgdGhpcy5Qcm9kdWN0aW9uQ29tbWVudCA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFByb2R1Y3Rpb25Db21tZW50XG4gICAgKSBhcyB0eXBlb2YgUHJvZHVjdGlvbkNvbW1lbnQ7XG4gICAgdGhpcy5CYWNrdXAgPSB0aGlzLnNldHVwQ2xhc3MoQmFja3VwKSBhcyB0eXBlb2YgQmFja3VwO1xuICAgIHRoaXMuQ291bnRyeVRheCA9IHRoaXMuc2V0dXBDbGFzcyhDb3VudHJ5VGF4KSBhcyB0eXBlb2YgQ291bnRyeVRheDtcbiAgICB0aGlzLlNob3J0VXJsID0gdGhpcy5zZXR1cENsYXNzKFNob3J0VXJsKSBhcyB0eXBlb2YgU2hvcnRVcmw7XG4gICAgdGhpcy5Qcm9kdWN0ID0gdGhpcy5zZXR1cENsYXNzKFByb2R1Y3QpIGFzIHR5cGVvZiBQcm9kdWN0O1xuICAgIHRoaXMuU3lzdGVtUm9sZSA9IHRoaXMuc2V0dXBDbGFzcyhTeXN0ZW1Sb2xlKSBhcyB0eXBlb2YgU3lzdGVtUm9sZTtcbiAgICB0aGlzLkNhcnRJdGVtID0gdGhpcy5zZXR1cENsYXNzKENhcnRJdGVtKSBhcyB0eXBlb2YgQ2FydEl0ZW07XG4gICAgdGhpcy5Vc2VyQ29tcGFueSA9IHRoaXMuc2V0dXBDbGFzcyhVc2VyQ29tcGFueSkgYXMgdHlwZW9mIFVzZXJDb21wYW55O1xuICAgIHRoaXMuRG9tYWluVGFnID0gdGhpcy5zZXR1cENsYXNzKERvbWFpblRhZykgYXMgdHlwZW9mIERvbWFpblRhZztcbiAgICB0aGlzLlZhcmlhdGlvbkZpZWxkc09wdGlvbiA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFZhcmlhdGlvbkZpZWxkc09wdGlvblxuICAgICkgYXMgdHlwZW9mIFZhcmlhdGlvbkZpZWxkc09wdGlvbjtcbiAgICB0aGlzLkFkZHJlc3MgPSB0aGlzLnNldHVwQ2xhc3MoQWRkcmVzcykgYXMgdHlwZW9mIEFkZHJlc3M7XG4gICAgdGhpcy5JdGVtID0gdGhpcy5zZXR1cENsYXNzKEl0ZW0pIGFzIHR5cGVvZiBJdGVtO1xuICAgIHRoaXMuU3VwcGx5RG9tYWluID0gdGhpcy5zZXR1cENsYXNzKFN1cHBseURvbWFpbikgYXMgdHlwZW9mIFN1cHBseURvbWFpbjtcbiAgICB0aGlzLkRvbWFpbkludml0YXRpb24gPSB0aGlzLnNldHVwQ2xhc3MoXG4gICAgICBEb21haW5JbnZpdGF0aW9uXG4gICAgKSBhcyB0eXBlb2YgRG9tYWluSW52aXRhdGlvbjtcbiAgICB0aGlzLkVtYWlsQ291bnRlciA9IHRoaXMuc2V0dXBDbGFzcyhFbWFpbENvdW50ZXIpIGFzIHR5cGVvZiBFbWFpbENvdW50ZXI7XG4gICAgdGhpcy5TZXNzaW9uID0gdGhpcy5zZXR1cENsYXNzKFNlc3Npb24pIGFzIHR5cGVvZiBTZXNzaW9uO1xuICAgIHRoaXMuQmFuayA9IHRoaXMuc2V0dXBDbGFzcyhCYW5rKSBhcyB0eXBlb2YgQmFuaztcbiAgICB0aGlzLkRpc2NvdW50ID0gdGhpcy5zZXR1cENsYXNzKERpc2NvdW50KSBhcyB0eXBlb2YgRGlzY291bnQ7XG4gICAgdGhpcy5EaXNjb3VudEdyb3VwID0gdGhpcy5zZXR1cENsYXNzKERpc2NvdW50R3JvdXApIGFzIHR5cGVvZiBEaXNjb3VudEdyb3VwO1xuICAgIHRoaXMuUGF5bWVudCA9IHRoaXMuc2V0dXBDbGFzcyhQYXltZW50KSBhcyB0eXBlb2YgUGF5bWVudDtcbiAgICB0aGlzLlBheW1lbnREZXZpY2UgPSB0aGlzLnNldHVwQ2xhc3MoUGF5bWVudERldmljZSkgYXMgdHlwZW9mIFBheW1lbnREZXZpY2U7XG4gICAgdGhpcy5QYWdlID0gdGhpcy5zZXR1cENsYXNzKFBhZ2UpIGFzIHR5cGVvZiBQYWdlO1xuICAgIHRoaXMuQ2FydCA9IHRoaXMuc2V0dXBDbGFzcyhDYXJ0KSBhcyB0eXBlb2YgQ2FydDtcbiAgICB0aGlzLkNhcnRTaGlwbWVudEdyb3VwID0gdGhpcy5zZXR1cENsYXNzKFxuICAgICAgQ2FydFNoaXBtZW50R3JvdXBcbiAgICApIGFzIHR5cGVvZiBDYXJ0U2hpcG1lbnRHcm91cDtcbiAgICB0aGlzLkNhcnRTaGlwbWVudFF1b3RlID0gdGhpcy5zZXR1cENsYXNzKFxuICAgICAgQ2FydFNoaXBtZW50UXVvdGVcbiAgICApIGFzIHR5cGVvZiBDYXJ0U2hpcG1lbnRRdW90ZTtcbiAgICB0aGlzLk1lcmNoaUZpbGUgPSB0aGlzLnNldHVwQ2xhc3MoTWVyY2hpRmlsZSkgYXMgdHlwZW9mIE1lcmNoaUZpbGU7XG4gICAgdGhpcy5Vc2VyID0gdGhpcy5zZXR1cENsYXNzKFVzZXIpIGFzIHR5cGVvZiBVc2VyO1xuICAgIHRoaXMuSm9iQ29tbWVudCA9IHRoaXMuc2V0dXBDbGFzcyhKb2JDb21tZW50KSBhcyB0eXBlb2YgSm9iQ29tbWVudDtcbiAgICB0aGlzLlZhcmlhdGlvbk9wdGlvbiA9IHRoaXMuc2V0dXBDbGFzcyhcbiAgICAgIFZhcmlhdGlvbk9wdGlvblxuICAgICkgYXMgdHlwZW9mIFZhcmlhdGlvbk9wdGlvbjtcbiAgICB0aGlzLk1hdGNoaW5nSW52ZW50b3J5ID0gdGhpcy5zZXR1cENsYXNzKFxuICAgICAgTWF0Y2hpbmdJbnZlbnRvcnlcbiAgICApIGFzIHR5cGVvZiBNYXRjaGluZ0ludmVudG9yeTtcbiAgICB0aGlzLlN1YnNjcmlwdGlvblBsYW4gPSB0aGlzLnNldHVwQ2xhc3MoXG4gICAgICBTdWJzY3JpcHRpb25QbGFuXG4gICAgKSBhcyB0eXBlb2YgU3Vic2NyaXB0aW9uUGxhbjtcbiAgfVxuXG4gIHB1YmxpYyBhdXRoZW50aWNhdGVkRmV0Y2ggPSAoXG4gICAgcmVzb3VyY2U6IHN0cmluZyxcbiAgICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyxcbiAgICBleHBlY3RFbXB0eVJlc3BvbnNlPzogYm9vbGVhblxuICApID0+IHtcbiAgICBpZiAoIW9wdGlvbnMucXVlcnkpIHtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBvcHRpb25zLnF1ZXJ5ID0gW107XG4gICAgfVxuICAgIGlmICh0aGlzLnNlc3Npb25Ub2tlbikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIG9wdGlvbnMucXVlcnkucHVzaChbJ3Nlc3Npb25fdG9rZW4nLCB0aGlzLnNlc3Npb25Ub2tlbl0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jbGllbnRUb2tlbikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIG9wdGlvbnMucXVlcnkucHVzaChbJ2NsaWVudF90b2tlbicsIHRoaXMuY2xpZW50VG9rZW5dKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW52b2ljZVRva2VuKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgb3B0aW9ucy5xdWVyeS5wdXNoKFsnaW52b2ljZV90b2tlbicsIHRoaXMuaW52b2ljZVRva2VuXSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhcnRUb2tlbikge1xuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIG9wdGlvbnMucXVlcnkucHVzaChbJ2NhcnRfdG9rZW4nLCB0aGlzLmNhcnRUb2tlbl0pO1xuICAgIH1cbiAgICByZXR1cm4gYXBpRmV0Y2gocmVzb3VyY2UsIG9wdGlvbnMsIGV4cGVjdEVtcHR5UmVzcG9uc2UpO1xuICB9O1xuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBhdXRoZW50aWNhdGVkRmV0Y2hXaXRoUHJvZ3Jlc3MgPSAoXG4gICAgcmVzb3VyY2U6IHN0cmluZyxcbiAgICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyxcbiAgICBwcm9ncmVzc0NhbGxiYWNrPzogKHByb2dyZXNzOiBudW1iZXIpID0+IHZvaWRcbiAgKSA9PiB7XG4gICAgaWYgKCFvcHRpb25zLnF1ZXJ5KSB7XG4gICAgICBvcHRpb25zLnF1ZXJ5ID0gW107XG4gICAgfVxuICAgIGlmICh0aGlzLnNlc3Npb25Ub2tlbikge1xuICAgICAgb3B0aW9ucy5xdWVyeS5wdXNoKFsnc2Vzc2lvbl90b2tlbicsIHRoaXMuc2Vzc2lvblRva2VuXSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNsaWVudFRva2VuKSB7XG4gICAgICBvcHRpb25zLnF1ZXJ5LnB1c2goWydjbGllbnRfdG9rZW4nLCB0aGlzLmNsaWVudFRva2VuXSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmludm9pY2VUb2tlbikge1xuICAgICAgb3B0aW9ucy5xdWVyeS5wdXNoKFsnaW52b2ljZV90b2tlbicsIHRoaXMuaW52b2ljZVRva2VuXSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNhcnRUb2tlbikge1xuICAgICAgb3B0aW9ucy5xdWVyeS5wdXNoKFsnY2FydF90b2tlbicsIHRoaXMuY2FydFRva2VuXSk7XG4gICAgfVxuICAgIHJldHVybiBhcGlGZXRjaFdpdGhQcm9ncmVzcyhyZXNvdXJjZSwgb3B0aW9ucywgcHJvZ3Jlc3NDYWxsYmFjayk7XG4gIH07XG5cbiAgcHVibGljIGdldEN1cnJlbnRVc2VyID0gKG9wdGlvbnM/OiBVc2VyUmVxdWVzdE9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB7IGVtYmVkID0ge30gfSA9IG9wdGlvbnMgfHwge307XG4gICAgY29uc3QgZGVmYXVsdEVtYmVkID0geyB1c2VyOiB7IGVucm9sbGVkRG9tYWluczogeyBkb21haW46IHt9IH0gfSB9O1xuICAgIGlmICghdGhpcy5zZXNzaW9uVG9rZW4pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLlNlc3Npb24uZ2V0KHRoaXMuc2Vzc2lvblRva2VuLCB7XG4gICAgICBlbWJlZDogeyAuLi5kZWZhdWx0RW1iZWQsIC4uLmVtYmVkIH0sXG4gICAgfSkudGhlbigoc2Vzc2lvbjogYW55KSA9PiBzZXNzaW9uLnVzZXIpO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFLQSxTQUFTQSw0QkFBNEIsUUFBUSwyQ0FBMkM7QUFDeEYsU0FBU0MsT0FBTyxRQUFRLG9CQUFvQjtBQUM1QyxTQUFTQyxVQUFVLFFBQVEsd0JBQXdCO0FBQ25ELFNBQVNDLE1BQU0sUUFBUSxtQkFBbUI7QUFDMUMsU0FBU0MsWUFBWSxRQUFRLDBCQUEwQjtBQUN2RCxTQUFTQyxHQUFHLFFBQVEsZ0JBQWdCO0FBQ3BDLFNBQVNDLElBQUksUUFBUSxpQkFBaUI7QUFDdEMsU0FBU0MsTUFBTSxRQUFRLG1CQUFtQjtBQUMxQyxTQUFTQyxjQUFjLFFBQVEsNEJBQTRCO0FBQzNELFNBQVNDLGVBQWUsUUFBUSw2QkFBNkI7QUFDN0QsU0FB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
@@ -0,0 +1,36 @@
1
+ import { setup, mockFetch } from './test_util';
2
+ import { Merchi } from './merchi';
3
+ setup();
4
+ test('can get current user merchi has session token', function () {
5
+ var testToken = 'YrDwzmh8&QGtAfg9quh(4QfSlE^RPXWl';
6
+ var merchi = new Merchi(testToken);
7
+ mockFetch(true, {
8
+ session: {
9
+ user: {
10
+ name: 'currentUser'
11
+ }
12
+ }
13
+ }, 200);
14
+ return merchi.getCurrentUser().then(function (user) {
15
+ return expect(user.name).toBe('currentUser');
16
+ });
17
+ });
18
+ test('get current user return empty if there is no cookie', function () {
19
+ Object.defineProperty(document, 'cookie', {
20
+ get: jest.fn().mockImplementation(function () {
21
+ return '';
22
+ })
23
+ });
24
+ var merchi = new Merchi();
25
+ mockFetch(true, {
26
+ user: {
27
+ name: 'currentUser'
28
+ }
29
+ }, 200);
30
+ return merchi.getCurrentUser({
31
+ embed: {}
32
+ }).then(function (user) {
33
+ return expect(user).toBe(null);
34
+ });
35
+ });
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXR1cCIsIm1vY2tGZXRjaCIsIk1lcmNoaSIsInRlc3QiLCJ0ZXN0VG9rZW4iLCJtZXJjaGkiLCJzZXNzaW9uIiwidXNlciIsIm5hbWUiLCJnZXRDdXJyZW50VXNlciIsInRoZW4iLCJleHBlY3QiLCJ0b0JlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJkb2N1bWVudCIsImdldCIsImplc3QiLCJmbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImVtYmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL01lcmNoaVNESy9tZXJjaGkudGVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzZXR1cCwgbW9ja0ZldGNoIH0gZnJvbSAnLi90ZXN0X3V0aWwnO1xuaW1wb3J0IHsgTWVyY2hpIH0gZnJvbSAnLi9tZXJjaGknO1xuXG5zZXR1cCgpO1xuXG50ZXN0KCdjYW4gZ2V0IGN1cnJlbnQgdXNlciBtZXJjaGkgaGFzIHNlc3Npb24gdG9rZW4nLCAoKSA9PiB7XG4gIGNvbnN0IHRlc3RUb2tlbiA9ICdZckR3em1oOCZRR3RBZmc5cXVoKDRRZlNsRV5SUFhXbCc7XG4gIGNvbnN0IG1lcmNoaSA9IG5ldyBNZXJjaGkodGVzdFRva2VuKTtcbiAgbW9ja0ZldGNoKHRydWUsIHsgc2Vzc2lvbjogeyB1c2VyOiB7IG5hbWU6ICdjdXJyZW50VXNlcicgfSB9IH0sIDIwMCk7XG4gIHJldHVybiBtZXJjaGlcbiAgICAuZ2V0Q3VycmVudFVzZXIoKVxuICAgIC50aGVuKHVzZXIgPT4gZXhwZWN0KHVzZXIubmFtZSkudG9CZSgnY3VycmVudFVzZXInKSk7XG59KTtcblxudGVzdCgnZ2V0IGN1cnJlbnQgdXNlciByZXR1cm4gZW1wdHkgaWYgdGhlcmUgaXMgbm8gY29va2llJywgKCkgPT4ge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsICdjb29raWUnLCB7XG4gICAgZ2V0OiBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9KSxcbiAgfSk7XG4gIGNvbnN0IG1lcmNoaSA9IG5ldyBNZXJjaGkoKTtcbiAgbW9ja0ZldGNoKHRydWUsIHsgdXNlcjogeyBuYW1lOiAnY3VycmVudFVzZXInIH0gfSwgMjAwKTtcbiAgcmV0dXJuIG1lcmNoaS5nZXRDdXJyZW50VXNlcih7ZW1iZWQ6IHt9fSkudGhlbihcbiAgICB1c2VyID0+IGV4cGVjdCh1c2VyKS50b0JlKG51bGwpKTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxLQUFLLEVBQUVDLFNBQVMsUUFBUSxhQUFhO0FBQzlDLFNBQVNDLE1BQU0sUUFBUSxVQUFVO0FBRWpDRixLQUFLLENBQUMsQ0FBQztBQUVQRyxJQUFJLENBQUMsK0NBQStDLEVBQUUsWUFBTTtFQUMxRCxJQUFNQyxTQUFTLEdBQUcsa0NBQWtDO0VBQ3BELElBQU1DLE1BQU0sR0FBRyxJQUFJSCxNQUFNLENBQUNFLFNBQVMsQ0FBQztFQUNwQ0gsU0FBUyxDQUFDLElBQUksRUFBRTtJQUFFSyxPQUFPLEVBQUU7TUFBRUMsSUFBSSxFQUFFO1FBQUVDLElBQUksRUFBRTtNQUFjO0lBQUU7RUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ3BFLE9BQU9ILE1BQU0sQ0FDVkksY0FBYyxDQUFDLENBQUMsQ0FDaEJDLElBQUksQ0FBQyxVQUFBSCxJQUFJO0lBQUEsT0FBSUksTUFBTSxDQUFDSixJQUFJLENBQUNDLElBQUksQ0FBQyxDQUFDSSxJQUFJLENBQUMsYUFBYSxDQUFDO0VBQUEsRUFBQztBQUN4RCxDQUFDLENBQUM7QUFFRlQsSUFBSSxDQUFDLHFEQUFxRCxFQUFFLFlBQU07RUFDaEVVLE1BQU0sQ0FBQ0MsY0FBYyxDQUFDQyxRQUFRLEVBQUUsUUFBUSxFQUFFO0lBQ3hDQyxHQUFHLEVBQUVDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUMsQ0FBQ0Msa0JBQWtCLENBQUMsWUFBTTtNQUN0QyxPQUFPLEVBQUU7SUFDWCxDQUFDO0VBQ0gsQ0FBQyxDQUFDO0VBQ0YsSUFBTWQsTUFBTSxHQUFHLElBQUlILE1BQU0sQ0FBQyxDQUFDO0VBQzNCRCxTQUFTLENBQUMsSUFBSSxFQUFFO0lBQUVNLElBQUksRUFBRTtNQUFFQyxJQUFJLEVBQUU7SUFBYztFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7RUFDdkQsT0FBT0gsTUFBTSxDQUFDSSxjQUFjLENBQUM7SUFBQ1csS0FBSyxFQUFFLENBQUM7RUFBQyxDQUFDLENBQUMsQ0FBQ1YsSUFBSSxDQUM1QyxVQUFBSCxJQUFJO0lBQUEsT0FBSUksTUFBTSxDQUFDSixJQUFJLENBQUMsQ0FBQ0ssSUFBSSxDQUFDLElBQUksQ0FBQztFQUFBLEVBQUM7QUFDcEMsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,137 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
5
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
6
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
8
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
10
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
11
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
12
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
13
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
14
+ function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }
15
+ function _construct(t, e, r) { if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); var o = [null]; o.push.apply(o, e); var p = new (t.bind.apply(t, o))(); return r && _setPrototypeOf(p, r.prototype), p; }
16
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
17
+ function _isNativeFunction(fn) { try { return Function.toString.call(fn).indexOf("[native code]") !== -1; } catch (e) { return typeof fn === "function"; } }
18
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
19
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
20
+ // eslint-disable-next-line no-unused-vars
21
+ import { getErrorFromCode } from './constants/errors';
22
+
23
+ /* this constant are expected to be defined in webpack (or provided as
24
+ globals by some other means. */
25
+
26
+ export var ApiError = /*#__PURE__*/function (_Error) {
27
+ _inherits(ApiError, _Error);
28
+ function ApiError(err) {
29
+ var _this;
30
+ _classCallCheck(this, ApiError);
31
+ var message = JSON.stringify(err);
32
+ /* istanbul ignore next */
33
+ _this = _callSuper(this, ApiError, [message]);
34
+ _this.statusCode = void 0;
35
+ _this.errorCode = void 0;
36
+ _this.errorMessage = void 0;
37
+ _this.original = void 0;
38
+ _this.statusCode = err.statusCode;
39
+ _this.errorCode = getErrorFromCode(err.errorCode);
40
+ _this.errorMessage = err.message ? err.message : 'No error message';
41
+ _this.name = 'ApiError';
42
+ _this.original = err;
43
+ return _this;
44
+ }
45
+ return _createClass(ApiError);
46
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
47
+ export var version = 'v6';
48
+ export function backendFetch(resource, options) {
49
+ var server = window.merchiBackendUri ? window.merchiBackendUri : BACKEND_URI;
50
+ var url = new URL(server + version + resource);
51
+ if (options && options.query) {
52
+ var _iterator = _createForOfIteratorHelper(options.query),
53
+ _step;
54
+ try {
55
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
56
+ var entry = _step.value;
57
+ url.searchParams.append(entry[0], entry[1]);
58
+ }
59
+ } catch (err) {
60
+ _iterator.e(err);
61
+ } finally {
62
+ _iterator.f();
63
+ }
64
+ }
65
+ return fetch(url.toString(), options);
66
+ }
67
+ export function apiFetch(resource, options, expectEmptyResponse) {
68
+ return backendFetch(resource, options).then(function (response) {
69
+ if (response.status < 200 || response.status > 299) {
70
+ return response.json().then(function (json) {
71
+ var err = new ApiError(json);
72
+ return Promise.reject(err);
73
+ });
74
+ } else {
75
+ return expectEmptyResponse ? '' : response.json();
76
+ }
77
+ });
78
+ }
79
+
80
+ /* istanbul ignore next */
81
+ export function apiFetchWithProgress(resource, options, progressCallback) {
82
+ return backendFetch(resource, options).then(function (response) {
83
+ if (!response.body) {
84
+ var err = new ApiError('empty response');
85
+ return Promise.reject(err);
86
+ }
87
+ var reader = response.body.getReader();
88
+ var bodyText = '';
89
+ var errorText = '';
90
+ var haveError = false;
91
+ var expected = '{"loadingBar": "' + '.'.repeat(100) + '"}';
92
+ function readChunk() {
93
+ return reader.read().then(function (_ref) {
94
+ var done = _ref.done,
95
+ value = _ref.value;
96
+ if (done) {
97
+ if (response.status < 200 || response.status > 299) {
98
+ var _err = new ApiError('Unknown error');
99
+ return Promise.reject(_err);
100
+ } else if (haveError) {
101
+ try {
102
+ var jsonText = JSON.parse(errorText);
103
+ return Promise.reject(new ApiError(jsonText));
104
+ } catch (e) {
105
+ return Promise.reject(new ApiError(errorText));
106
+ }
107
+ } else {
108
+ return bodyText;
109
+ }
110
+ } else {
111
+ var chunk = new TextDecoder().decode(value);
112
+ if (haveError) {
113
+ errorText += chunk;
114
+ } else {
115
+ for (var i = 0; i < chunk.length; ++i) {
116
+ var _char = chunk[i];
117
+ var expectedChar = expected[bodyText.length];
118
+ if (expectedChar == _char && !haveError) {
119
+ bodyText += _char;
120
+ } else {
121
+ haveError = true;
122
+ errorText += _char;
123
+ }
124
+ }
125
+ }
126
+ if (!haveError && progressCallback) {
127
+ var _progress = Math.min(Math.max(0, bodyText.length - 16), 100);
128
+ progressCallback(_progress);
129
+ }
130
+ return readChunk();
131
+ }
132
+ });
133
+ }
134
+ return readChunk();
135
+ });
136
+ }
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRFcnJvckZyb21Db2RlIiwiQXBpRXJyb3IiLCJfRXJyb3IiLCJfaW5oZXJpdHMiLCJlcnIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjayIsIm1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiX2NhbGxTdXBlciIsInN0YXR1c0NvZGUiLCJlcnJvckNvZGUiLCJlcnJvck1lc3NhZ2UiLCJvcmlnaW5hbCIsIm5hbWUiLCJfY3JlYXRlQ2xhc3MiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiRXJyb3IiLCJ2ZXJzaW9uIiwiYmFja2VuZEZldGNoIiwicmVzb3VyY2UiLCJvcHRpb25zIiwic2VydmVyIiwid2luZG93IiwibWVyY2hpQmFja2VuZFVyaSIsIkJBQ0tFTkRfVVJJIiwidXJsIiwiVVJMIiwicXVlcnkiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwiZW50cnkiLCJ2YWx1ZSIsInNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImUiLCJmIiwiZmV0Y2giLCJ0b1N0cmluZyIsImFwaUZldGNoIiwiZXhwZWN0RW1wdHlSZXNwb25zZSIsInRoZW4iLCJyZXNwb25zZSIsInN0YXR1cyIsImpzb24iLCJQcm9taXNlIiwicmVqZWN0IiwiYXBpRmV0Y2hXaXRoUHJvZ3Jlc3MiLCJwcm9ncmVzc0NhbGxiYWNrIiwiYm9keSIsInJlYWRlciIsImdldFJlYWRlciIsImJvZHlUZXh0IiwiZXJyb3JUZXh0IiwiaGF2ZUVycm9yIiwiZXhwZWN0ZWQiLCJyZXBlYXQiLCJyZWFkQ2h1bmsiLCJyZWFkIiwiX3JlZiIsImpzb25UZXh0IiwicGFyc2UiLCJjaHVuayIsIlRleHREZWNvZGVyIiwiZGVjb2RlIiwiaSIsImxlbmd0aCIsImNoYXIiLCJleHBlY3RlZENoYXIiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJtYXgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvTWVyY2hpU0RLL3JlcXVlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBFcnJvclR5cGUsIGdldEVycm9yRnJvbUNvZGUgfSBmcm9tICcuL2NvbnN0YW50cy9lcnJvcnMnO1xuXG4vKiB0aGlzIGNvbnN0YW50IGFyZSBleHBlY3RlZCB0byBiZSBkZWZpbmVkIGluIHdlYnBhY2sgKG9yIHByb3ZpZGVkIGFzXG4gICBnbG9iYWxzIGJ5IHNvbWUgb3RoZXIgbWVhbnMuICovXG5kZWNsYXJlIGNvbnN0IEJBQ0tFTkRfVVJJOiBzdHJpbmc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE9wdGlvbnMgZXh0ZW5kcyBSZXF1ZXN0SW5pdCB7XG4gIHF1ZXJ5Pzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBwdWJsaWMgc3RhdHVzQ29kZT86IG51bWJlcjtcbiAgcHVibGljIGVycm9yQ29kZT86IEVycm9yVHlwZTtcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBwdWJsaWMgb3JpZ2luYWw6IGFueTtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGVycjogYW55KSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IEpTT04uc3RyaW5naWZ5KGVycik7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLnN0YXR1c0NvZGUgPSBlcnIuc3RhdHVzQ29kZTtcbiAgICB0aGlzLmVycm9yQ29kZSA9IGdldEVycm9yRnJvbUNvZGUoZXJyLmVycm9yQ29kZSk7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBlcnIubWVzc2FnZSA/XG4gICAgICBlcnIubWVzc2FnZSA6ICdObyBlcnJvciBtZXNzYWdlJztcbiAgICB0aGlzLm5hbWUgPSAnQXBpRXJyb3InO1xuICAgIHRoaXMub3JpZ2luYWwgPSBlcnI7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSAndjYnO1xuXG5leHBvcnQgZnVuY3Rpb24gYmFja2VuZEZldGNoKHJlc291cmNlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucykge1xuICBjb25zdCBzZXJ2ZXIgPSAod2luZG93IGFzIGFueSkubWVyY2hpQmFja2VuZFVyaVxuICAgID8gKHdpbmRvdyBhcyBhbnkpLm1lcmNoaUJhY2tlbmRVcmlcbiAgICA6IEJBQ0tFTkRfVVJJO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZlciArIHZlcnNpb24gKyByZXNvdXJjZSk7XG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMucXVlcnkpIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG9wdGlvbnMucXVlcnkpIHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuYXBwZW5kKGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBmZXRjaCh1cmwudG9TdHJpbmcoKSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcGlGZXRjaChcbiAgcmVzb3VyY2U6IHN0cmluZyxcbiAgb3B0aW9ucz86IFJlcXVlc3RPcHRpb25zLFxuICBleHBlY3RFbXB0eVJlc3BvbnNlPzogYm9vbGVhblxuKSB7XG4gIHJldHVybiBiYWNrZW5kRmV0Y2gocmVzb3VyY2UsIG9wdGlvbnMgYXMgUmVxdWVzdEluaXQgfCB1bmRlZmluZWQpLnRoZW4oXG4gICAgZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzIDwgMjAwIHx8IHJlc3BvbnNlLnN0YXR1cyA+IDI5OSkge1xuICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpLnRoZW4oZnVuY3Rpb24gKGpzb24pIHtcbiAgICAgICAgICBjb25zdCBlcnIgPSBuZXcgQXBpRXJyb3IoanNvbik7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdEVtcHR5UmVzcG9uc2UgPyAnJyA6IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIH1cbiAgICB9XG4gICk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgZnVuY3Rpb24gYXBpRmV0Y2hXaXRoUHJvZ3Jlc3MoXG4gIHJlc291cmNlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9ucyxcbiAgcHJvZ3Jlc3NDYWxsYmFjaz86IChwcm9ncmVzczogbnVtYmVyKSA9PiB2b2lkXG4pIHtcbiAgcmV0dXJuIGJhY2tlbmRGZXRjaChyZXNvdXJjZSwgb3B0aW9ucyBhcyBSZXF1ZXN0SW5pdCB8IHVuZGVmaW5lZCkudGhlbihcbiAgICBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIGlmICghcmVzcG9uc2UuYm9keSkge1xuICAgICAgICBjb25zdCBlcnIgPSBuZXcgQXBpRXJyb3IoJ2VtcHR5IHJlc3BvbnNlJyk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keS5nZXRSZWFkZXIoKTtcbiAgICAgIGxldCBib2R5VGV4dCA9ICcnO1xuICAgICAgbGV0IGVycm9yVGV4dCA9ICcnO1xuICAgICAgbGV0IGhhdmVFcnJvciA9IGZhbHNlO1xuICAgICAgY29uc3QgZXhwZWN0ZWQgPSAne1wibG9hZGluZ0JhclwiOiBcIicgKyAnLicucmVwZWF0KDEwMCkgKyAnXCJ9JztcbiAgICAgIGZ1bmN0aW9uIHJlYWRDaHVuaygpOiBhbnkge1xuICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVuKCh7ZG9uZSwgdmFsdWV9KSA9PiB7XG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPCAyMDAgfHwgcmVzcG9uc2Uuc3RhdHVzID4gMjk5KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVyciA9IG5ldyBBcGlFcnJvcignVW5rbm93biBlcnJvcicpO1xuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZihoYXZlRXJyb3IpIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBqc29uVGV4dCA9IEpTT04ucGFyc2UoZXJyb3JUZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKGpzb25UZXh0KSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKGVycm9yVGV4dCkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXR1cm4gYm9keVRleHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGNodW5rID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKHZhbHVlKTtcbiAgICAgICAgICAgIGlmIChoYXZlRXJyb3IpIHtcbiAgICAgICAgICAgICAgZXJyb3JUZXh0ICs9IGNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaHVuay5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBjaHVua1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCBleHBlY3RlZENoYXIgPSBleHBlY3RlZFtib2R5VGV4dC5sZW5ndGhdO1xuICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZENoYXIgPT0gY2hhciAmJiAhaGF2ZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgICBib2R5VGV4dCArPSBjaGFyO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBoYXZlRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgZXJyb3JUZXh0ICs9IGNoYXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhdmVFcnJvciAmJiBwcm9ncmVzc0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYm9keVRleHQubGVuZ3RoIC0gMTYpLCAxMDApO1xuICAgICAgICAgICAgICBwcm9ncmVzc0NhbGxiYWNrKHByb2dyZXNzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZWFkQ2h1bmsoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlYWRDaHVuaygpO1xuICAgIH1cbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsU0FBb0JBLGdCQUFnQixRQUFRLG9CQUFvQjs7QUFFaEU7QUFDQTs7QUFPQSxXQUFhQyxRQUFRLDBCQUFBQyxNQUFBO0VBQUFDLFNBQUEsQ0FBQUYsUUFBQSxFQUFBQyxNQUFBO0VBS25CLFNBQUFELFNBQW1CRyxHQUFRLEVBQUU7SUFBQSxJQUFBQyxLQUFBO0lBQUFDLGVBQUEsT0FBQUwsUUFBQTtJQUMzQixJQUFNTSxPQUFPLEdBQUdDLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxHQUFHLENBQUM7SUFDbkM7SUFDQUMsS0FBQSxHQUFBSyxVQUFBLE9BQUFULFFBQUEsR0FBTU0sT0FBTztJQUFFRixLQUFBLENBUFZNLFVBQVU7SUFBQU4sS0FBQSxDQUNWTyxTQUFTO0lBQUFQLEtBQUEsQ0FDVFEsWUFBWTtJQUFBUixLQUFBLENBQ1pTLFFBQVE7SUFLYlQsS0FBQSxDQUFLTSxVQUFVLEdBQUdQLEdBQUcsQ0FBQ08sVUFBVTtJQUNoQ04sS0FBQSxDQUFLTyxTQUFTLEdBQUdaLGdCQUFnQixDQUFDSSxHQUFHLENBQUNRLFNB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