@shopify/shopify-api 7.0.0 → 7.2.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 (549) hide show
  1. package/adapters/cf-worker/index.js +0 -1
  2. package/adapters/cf-worker/index.js.map +1 -1
  3. package/adapters/mock/index.js +0 -3
  4. package/adapters/mock/index.js.map +1 -1
  5. package/adapters/node/index.js +0 -3
  6. package/adapters/node/index.js.map +1 -1
  7. package/lib/auth/oauth/oauth.d.ts.map +1 -1
  8. package/lib/auth/oauth/oauth.js +18 -2
  9. package/lib/auth/oauth/oauth.js.map +1 -1
  10. package/lib/auth/scopes/index.d.ts +1 -1
  11. package/lib/auth/scopes/index.d.ts.map +1 -1
  12. package/lib/auth/scopes/index.js +4 -1
  13. package/lib/auth/scopes/index.js.map +1 -1
  14. package/lib/base-types.d.ts +4 -2
  15. package/lib/base-types.d.ts.map +1 -1
  16. package/lib/billing/check.d.ts +2 -2
  17. package/lib/billing/check.d.ts.map +1 -1
  18. package/lib/billing/check.js.map +1 -1
  19. package/lib/billing/index.d.ts +2 -2
  20. package/lib/billing/request.d.ts +2 -2
  21. package/lib/billing/request.d.ts.map +1 -1
  22. package/lib/billing/request.js +17 -4
  23. package/lib/billing/request.js.map +1 -1
  24. package/lib/billing/types.d.ts +13 -11
  25. package/lib/billing/types.d.ts.map +1 -1
  26. package/lib/clients/graphql/graphql_client.d.ts.map +1 -1
  27. package/lib/clients/graphql/graphql_client.js +10 -3
  28. package/lib/clients/graphql/graphql_client.js.map +1 -1
  29. package/lib/clients/rest/rest_client.d.ts.map +1 -1
  30. package/lib/clients/rest/rest_client.js +5 -4
  31. package/lib/clients/rest/rest_client.js.map +1 -1
  32. package/lib/config.d.ts.map +1 -1
  33. package/lib/config.js +26 -9
  34. package/lib/config.js.map +1 -1
  35. package/lib/error.d.ts +4 -0
  36. package/lib/error.d.ts.map +1 -1
  37. package/lib/error.js +7 -1
  38. package/lib/error.js.map +1 -1
  39. package/lib/index.d.ts.map +1 -1
  40. package/lib/index.js +7 -0
  41. package/lib/index.js.map +1 -1
  42. package/lib/logger/index.js +2 -2
  43. package/lib/logger/index.js.map +1 -1
  44. package/lib/session/index.d.ts +1 -0
  45. package/lib/session/index.d.ts.map +1 -1
  46. package/lib/session/index.js +1 -0
  47. package/lib/session/index.js.map +1 -1
  48. package/lib/setup-jest.js +2 -3
  49. package/lib/setup-jest.js.map +1 -1
  50. package/lib/types.d.ts +13 -0
  51. package/lib/types.d.ts.map +1 -1
  52. package/lib/types.js +1 -0
  53. package/lib/types.js.map +1 -1
  54. package/lib/utils/versioned-codeblocks.d.ts +2 -0
  55. package/lib/utils/versioned-codeblocks.d.ts.map +1 -0
  56. package/lib/utils/versioned-codeblocks.js +12 -0
  57. package/lib/utils/versioned-codeblocks.js.map +1 -0
  58. package/lib/version.d.ts +1 -1
  59. package/lib/version.js +1 -1
  60. package/lib/webhooks/index.d.ts +1 -0
  61. package/lib/webhooks/index.d.ts.map +1 -1
  62. package/lib/webhooks/index.js +2 -0
  63. package/lib/webhooks/index.js.map +1 -1
  64. package/lib/webhooks/process.d.ts +2 -2
  65. package/lib/webhooks/process.d.ts.map +1 -1
  66. package/lib/webhooks/process.js +77 -112
  67. package/lib/webhooks/process.js.map +1 -1
  68. package/lib/webhooks/registry.js +1 -1
  69. package/lib/webhooks/registry.js.map +1 -1
  70. package/lib/webhooks/types.d.ts +31 -3
  71. package/lib/webhooks/types.d.ts.map +1 -1
  72. package/lib/webhooks/types.js +7 -1
  73. package/lib/webhooks/types.js.map +1 -1
  74. package/lib/webhooks/validate.d.ts +4 -0
  75. package/lib/webhooks/validate.d.ts.map +1 -0
  76. package/lib/webhooks/validate.js +86 -0
  77. package/lib/webhooks/validate.js.map +1 -0
  78. package/package.json +8 -7
  79. package/rest/admin/2022-04/abandoned_checkout.d.ts +91 -0
  80. package/rest/admin/2022-04/abandoned_checkout.d.ts.map +1 -0
  81. package/rest/admin/2022-04/abandoned_checkout.js +45 -0
  82. package/rest/admin/2022-04/abandoned_checkout.js.map +1 -0
  83. package/rest/admin/2022-04/access_scope.d.ts +31 -0
  84. package/rest/admin/2022-04/access_scope.d.ts.map +1 -0
  85. package/rest/admin/2022-04/access_scope.js +33 -0
  86. package/rest/admin/2022-04/access_scope.js.map +1 -0
  87. package/rest/admin/2022-04/android_pay_key.d.ts +33 -0
  88. package/rest/admin/2022-04/android_pay_key.d.ts.map +1 -0
  89. package/rest/admin/2022-04/android_pay_key.js +45 -0
  90. package/rest/admin/2022-04/android_pay_key.js.map +1 -0
  91. package/rest/admin/2022-04/apple_pay_certificate.d.ts +40 -0
  92. package/rest/admin/2022-04/apple_pay_certificate.d.ts.map +1 -0
  93. package/rest/admin/2022-04/apple_pay_certificate.js +62 -0
  94. package/rest/admin/2022-04/apple_pay_certificate.js.map +1 -0
  95. package/rest/admin/2022-04/application_charge.d.ts +47 -0
  96. package/rest/admin/2022-04/application_charge.d.ts.map +1 -0
  97. package/rest/admin/2022-04/application_charge.js +47 -0
  98. package/rest/admin/2022-04/application_charge.js.map +1 -0
  99. package/rest/admin/2022-04/application_credit.d.ts +41 -0
  100. package/rest/admin/2022-04/application_credit.d.ts.map +1 -0
  101. package/rest/admin/2022-04/application_credit.js +47 -0
  102. package/rest/admin/2022-04/application_credit.js.map +1 -0
  103. package/rest/admin/2022-04/article.d.ts +100 -0
  104. package/rest/admin/2022-04/article.d.ts.map +1 -0
  105. package/rest/admin/2022-04/article.js +110 -0
  106. package/rest/admin/2022-04/article.js.map +1 -0
  107. package/rest/admin/2022-04/asset.d.ts +50 -0
  108. package/rest/admin/2022-04/asset.d.ts.map +1 -0
  109. package/rest/admin/2022-04/asset.js +48 -0
  110. package/rest/admin/2022-04/asset.js.map +1 -0
  111. package/rest/admin/2022-04/assigned_fulfillment_order.d.ts +40 -0
  112. package/rest/admin/2022-04/assigned_fulfillment_order.d.ts.map +1 -0
  113. package/rest/admin/2022-04/assigned_fulfillment_order.js +32 -0
  114. package/rest/admin/2022-04/assigned_fulfillment_order.js.map +1 -0
  115. package/rest/admin/2022-04/balance.d.ts +26 -0
  116. package/rest/admin/2022-04/balance.d.ts.map +1 -0
  117. package/rest/admin/2022-04/balance.js +32 -0
  118. package/rest/admin/2022-04/balance.js.map +1 -0
  119. package/rest/admin/2022-04/blog.d.ts +61 -0
  120. package/rest/admin/2022-04/blog.d.ts.map +1 -0
  121. package/rest/admin/2022-04/blog.js +77 -0
  122. package/rest/admin/2022-04/blog.js.map +1 -0
  123. package/rest/admin/2022-04/cancellation_request.d.ts +37 -0
  124. package/rest/admin/2022-04/cancellation_request.d.ts.map +1 -0
  125. package/rest/admin/2022-04/cancellation_request.js +53 -0
  126. package/rest/admin/2022-04/cancellation_request.js.map +1 -0
  127. package/rest/admin/2022-04/carrier_service.d.ts +44 -0
  128. package/rest/admin/2022-04/carrier_service.d.ts.map +1 -0
  129. package/rest/admin/2022-04/carrier_service.js +58 -0
  130. package/rest/admin/2022-04/carrier_service.js.map +1 -0
  131. package/rest/admin/2022-04/checkout.d.ts +96 -0
  132. package/rest/admin/2022-04/checkout.d.ts.map +1 -0
  133. package/rest/admin/2022-04/checkout.js +74 -0
  134. package/rest/admin/2022-04/checkout.js.map +1 -0
  135. package/rest/admin/2022-04/collect.d.ts +52 -0
  136. package/rest/admin/2022-04/collect.d.ts.map +1 -0
  137. package/rest/admin/2022-04/collect.js +73 -0
  138. package/rest/admin/2022-04/collect.js.map +1 -0
  139. package/rest/admin/2022-04/collection.d.ts +47 -0
  140. package/rest/admin/2022-04/collection.d.ts.map +1 -0
  141. package/rest/admin/2022-04/collection.js +50 -0
  142. package/rest/admin/2022-04/collection.js.map +1 -0
  143. package/rest/admin/2022-04/collection_listing.d.ts +59 -0
  144. package/rest/admin/2022-04/collection_listing.d.ts.map +1 -0
  145. package/rest/admin/2022-04/collection_listing.js +77 -0
  146. package/rest/admin/2022-04/collection_listing.js.map +1 -0
  147. package/rest/admin/2022-04/comment.d.ts +104 -0
  148. package/rest/admin/2022-04/comment.d.ts.map +1 -0
  149. package/rest/admin/2022-04/comment.js +141 -0
  150. package/rest/admin/2022-04/comment.js.map +1 -0
  151. package/rest/admin/2022-04/country.d.ts +52 -0
  152. package/rest/admin/2022-04/country.d.ts.map +1 -0
  153. package/rest/admin/2022-04/country.js +77 -0
  154. package/rest/admin/2022-04/country.js.map +1 -0
  155. package/rest/admin/2022-04/currency.d.ts +28 -0
  156. package/rest/admin/2022-04/currency.d.ts.map +1 -0
  157. package/rest/admin/2022-04/currency.js +32 -0
  158. package/rest/admin/2022-04/currency.js.map +1 -0
  159. package/rest/admin/2022-04/custom_collection.d.ts +74 -0
  160. package/rest/admin/2022-04/custom_collection.d.ts.map +1 -0
  161. package/rest/admin/2022-04/custom_collection.js +74 -0
  162. package/rest/admin/2022-04/custom_collection.js.map +1 -0
  163. package/rest/admin/2022-04/customer.d.ts +124 -0
  164. package/rest/admin/2022-04/customer.d.ts.map +1 -0
  165. package/rest/admin/2022-04/customer.js +141 -0
  166. package/rest/admin/2022-04/customer.js.map +1 -0
  167. package/rest/admin/2022-04/customer_address.d.ts +72 -0
  168. package/rest/admin/2022-04/customer_address.d.ts.map +1 -0
  169. package/rest/admin/2022-04/customer_address.js +93 -0
  170. package/rest/admin/2022-04/customer_address.js.map +1 -0
  171. package/rest/admin/2022-04/customer_saved_search.d.ts +60 -0
  172. package/rest/admin/2022-04/customer_saved_search.d.ts.map +1 -0
  173. package/rest/admin/2022-04/customer_saved_search.js +90 -0
  174. package/rest/admin/2022-04/customer_saved_search.js.map +1 -0
  175. package/rest/admin/2022-04/deprecated_api_call.d.ts +30 -0
  176. package/rest/admin/2022-04/deprecated_api_call.d.ts.map +1 -0
  177. package/rest/admin/2022-04/deprecated_api_call.js +32 -0
  178. package/rest/admin/2022-04/deprecated_api_call.js.map +1 -0
  179. package/rest/admin/2022-04/discount_code.d.ts +77 -0
  180. package/rest/admin/2022-04/discount_code.d.ts.map +1 -0
  181. package/rest/admin/2022-04/discount_code.js +123 -0
  182. package/rest/admin/2022-04/discount_code.js.map +1 -0
  183. package/rest/admin/2022-04/dispute.d.ts +46 -0
  184. package/rest/admin/2022-04/dispute.d.ts.map +1 -0
  185. package/rest/admin/2022-04/dispute.js +43 -0
  186. package/rest/admin/2022-04/dispute.js.map +1 -0
  187. package/rest/admin/2022-04/draft_order.d.ts +117 -0
  188. package/rest/admin/2022-04/draft_order.d.ts.map +1 -0
  189. package/rest/admin/2022-04/draft_order.js +109 -0
  190. package/rest/admin/2022-04/draft_order.js.map +1 -0
  191. package/rest/admin/2022-04/event.d.ts +58 -0
  192. package/rest/admin/2022-04/event.d.ts.map +1 -0
  193. package/rest/admin/2022-04/event.js +61 -0
  194. package/rest/admin/2022-04/event.js.map +1 -0
  195. package/rest/admin/2022-04/fulfillment.d.ts +107 -0
  196. package/rest/admin/2022-04/fulfillment.d.ts.map +1 -0
  197. package/rest/admin/2022-04/fulfillment.js +128 -0
  198. package/rest/admin/2022-04/fulfillment.js.map +1 -0
  199. package/rest/admin/2022-04/fulfillment_event.d.ts +67 -0
  200. package/rest/admin/2022-04/fulfillment_event.d.ts.map +1 -0
  201. package/rest/admin/2022-04/fulfillment_event.js +65 -0
  202. package/rest/admin/2022-04/fulfillment_event.js.map +1 -0
  203. package/rest/admin/2022-04/fulfillment_order.d.ts +116 -0
  204. package/rest/admin/2022-04/fulfillment_order.d.ts.map +1 -0
  205. package/rest/admin/2022-04/fulfillment_order.js +155 -0
  206. package/rest/admin/2022-04/fulfillment_order.js.map +1 -0
  207. package/rest/admin/2022-04/fulfillment_request.d.ts +39 -0
  208. package/rest/admin/2022-04/fulfillment_request.d.ts.map +1 -0
  209. package/rest/admin/2022-04/fulfillment_request.js +53 -0
  210. package/rest/admin/2022-04/fulfillment_request.js.map +1 -0
  211. package/rest/admin/2022-04/fulfillment_service.d.ts +49 -0
  212. package/rest/admin/2022-04/fulfillment_service.d.ts.map +1 -0
  213. package/rest/admin/2022-04/fulfillment_service.js +58 -0
  214. package/rest/admin/2022-04/fulfillment_service.js.map +1 -0
  215. package/rest/admin/2022-04/gift_card.d.ts +84 -0
  216. package/rest/admin/2022-04/gift_card.d.ts.map +1 -0
  217. package/rest/admin/2022-04/gift_card.js +98 -0
  218. package/rest/admin/2022-04/gift_card.js.map +1 -0
  219. package/rest/admin/2022-04/gift_card_adjustment.d.ts +46 -0
  220. package/rest/admin/2022-04/gift_card_adjustment.d.ts.map +1 -0
  221. package/rest/admin/2022-04/gift_card_adjustment.js +47 -0
  222. package/rest/admin/2022-04/gift_card_adjustment.js.map +1 -0
  223. package/rest/admin/2022-04/image.d.ts +58 -0
  224. package/rest/admin/2022-04/image.d.ts.map +1 -0
  225. package/rest/admin/2022-04/image.js +74 -0
  226. package/rest/admin/2022-04/image.js.map +1 -0
  227. package/rest/admin/2022-04/index.d.ts +156 -0
  228. package/rest/admin/2022-04/index.d.ts.map +1 -0
  229. package/rest/admin/2022-04/index.js +157 -0
  230. package/rest/admin/2022-04/index.js.map +1 -0
  231. package/rest/admin/2022-04/inventory_item.d.ts +46 -0
  232. package/rest/admin/2022-04/inventory_item.d.ts.map +1 -0
  233. package/rest/admin/2022-04/inventory_item.js +44 -0
  234. package/rest/admin/2022-04/inventory_item.js.map +1 -0
  235. package/rest/admin/2022-04/inventory_level.d.ts +71 -0
  236. package/rest/admin/2022-04/inventory_level.d.ts.map +1 -0
  237. package/rest/admin/2022-04/inventory_level.js +93 -0
  238. package/rest/admin/2022-04/inventory_level.js.map +1 -0
  239. package/rest/admin/2022-04/location.d.ts +59 -0
  240. package/rest/admin/2022-04/location.d.ts.map +1 -0
  241. package/rest/admin/2022-04/location.js +75 -0
  242. package/rest/admin/2022-04/location.js.map +1 -0
  243. package/rest/admin/2022-04/locations_for_move.d.ts +30 -0
  244. package/rest/admin/2022-04/locations_for_move.d.ts.map +1 -0
  245. package/rest/admin/2022-04/locations_for_move.js +32 -0
  246. package/rest/admin/2022-04/locations_for_move.js.map +1 -0
  247. package/rest/admin/2022-04/marketing_event.d.ts +80 -0
  248. package/rest/admin/2022-04/marketing_event.d.ts.map +1 -0
  249. package/rest/admin/2022-04/marketing_event.js +90 -0
  250. package/rest/admin/2022-04/marketing_event.js.map +1 -0
  251. package/rest/admin/2022-04/metafield.d.ts +115 -0
  252. package/rest/admin/2022-04/metafield.d.ts.map +1 -0
  253. package/rest/admin/2022-04/metafield.js +140 -0
  254. package/rest/admin/2022-04/metafield.js.map +1 -0
  255. package/rest/admin/2022-04/mobile_platform_application.d.ts +42 -0
  256. package/rest/admin/2022-04/mobile_platform_application.d.ts.map +1 -0
  257. package/rest/admin/2022-04/mobile_platform_application.js +58 -0
  258. package/rest/admin/2022-04/mobile_platform_application.js.map +1 -0
  259. package/rest/admin/2022-04/order.d.ts +223 -0
  260. package/rest/admin/2022-04/order.d.ts.map +1 -0
  261. package/rest/admin/2022-04/order.js +132 -0
  262. package/rest/admin/2022-04/order.js.map +1 -0
  263. package/rest/admin/2022-04/order_risk.d.ts +50 -0
  264. package/rest/admin/2022-04/order_risk.d.ts.map +1 -0
  265. package/rest/admin/2022-04/order_risk.js +61 -0
  266. package/rest/admin/2022-04/order_risk.js.map +1 -0
  267. package/rest/admin/2022-04/page.d.ts +77 -0
  268. package/rest/admin/2022-04/page.d.ts.map +1 -0
  269. package/rest/admin/2022-04/page.js +77 -0
  270. package/rest/admin/2022-04/page.js.map +1 -0
  271. package/rest/admin/2022-04/payment.d.ts +56 -0
  272. package/rest/admin/2022-04/payment.d.ts.map +1 -0
  273. package/rest/admin/2022-04/payment.js +65 -0
  274. package/rest/admin/2022-04/payment.js.map +1 -0
  275. package/rest/admin/2022-04/payment_gateway.d.ts +53 -0
  276. package/rest/admin/2022-04/payment_gateway.d.ts.map +1 -0
  277. package/rest/admin/2022-04/payment_gateway.js +58 -0
  278. package/rest/admin/2022-04/payment_gateway.js.map +1 -0
  279. package/rest/admin/2022-04/payment_transaction.d.ts +48 -0
  280. package/rest/admin/2022-04/payment_transaction.d.ts.map +1 -0
  281. package/rest/admin/2022-04/payment_transaction.js +39 -0
  282. package/rest/admin/2022-04/payment_transaction.js.map +1 -0
  283. package/rest/admin/2022-04/payout.d.ts +42 -0
  284. package/rest/admin/2022-04/payout.d.ts.map +1 -0
  285. package/rest/admin/2022-04/payout.js +43 -0
  286. package/rest/admin/2022-04/payout.js.map +1 -0
  287. package/rest/admin/2022-04/policy.d.ts +32 -0
  288. package/rest/admin/2022-04/policy.d.ts.map +1 -0
  289. package/rest/admin/2022-04/policy.js +32 -0
  290. package/rest/admin/2022-04/policy.js.map +1 -0
  291. package/rest/admin/2022-04/price_rule.d.ts +91 -0
  292. package/rest/admin/2022-04/price_rule.d.ts.map +1 -0
  293. package/rest/admin/2022-04/price_rule.js +74 -0
  294. package/rest/admin/2022-04/price_rule.js.map +1 -0
  295. package/rest/admin/2022-04/product.d.ts +96 -0
  296. package/rest/admin/2022-04/product.d.ts.map +1 -0
  297. package/rest/admin/2022-04/product.js +79 -0
  298. package/rest/admin/2022-04/product.js.map +1 -0
  299. package/rest/admin/2022-04/product_listing.d.ts +74 -0
  300. package/rest/admin/2022-04/product_listing.d.ts.map +1 -0
  301. package/rest/admin/2022-04/product_listing.js +95 -0
  302. package/rest/admin/2022-04/product_listing.js.map +1 -0
  303. package/rest/admin/2022-04/product_resource_feedback.d.ts +37 -0
  304. package/rest/admin/2022-04/product_resource_feedback.d.ts.map +1 -0
  305. package/rest/admin/2022-04/product_resource_feedback.js +36 -0
  306. package/rest/admin/2022-04/product_resource_feedback.js.map +1 -0
  307. package/rest/admin/2022-04/province.d.ts +51 -0
  308. package/rest/admin/2022-04/province.d.ts.map +1 -0
  309. package/rest/admin/2022-04/province.js +60 -0
  310. package/rest/admin/2022-04/province.js.map +1 -0
  311. package/rest/admin/2022-04/recurring_application_charge.d.ts +66 -0
  312. package/rest/admin/2022-04/recurring_application_charge.d.ts.map +1 -0
  313. package/rest/admin/2022-04/recurring_application_charge.js +76 -0
  314. package/rest/admin/2022-04/recurring_application_charge.js.map +1 -0
  315. package/rest/admin/2022-04/redirect.d.ts +52 -0
  316. package/rest/admin/2022-04/redirect.d.ts.map +1 -0
  317. package/rest/admin/2022-04/redirect.js +74 -0
  318. package/rest/admin/2022-04/redirect.js.map +1 -0
  319. package/rest/admin/2022-04/refund.d.ts +71 -0
  320. package/rest/admin/2022-04/refund.d.ts.map +1 -0
  321. package/rest/admin/2022-04/refund.js +63 -0
  322. package/rest/admin/2022-04/refund.js.map +1 -0
  323. package/rest/admin/2022-04/report.d.ts +48 -0
  324. package/rest/admin/2022-04/report.d.ts.map +1 -0
  325. package/rest/admin/2022-04/report.js +58 -0
  326. package/rest/admin/2022-04/report.js.map +1 -0
  327. package/rest/admin/2022-04/resource_feedback.d.ts +33 -0
  328. package/rest/admin/2022-04/resource_feedback.d.ts.map +1 -0
  329. package/rest/admin/2022-04/resource_feedback.js +33 -0
  330. package/rest/admin/2022-04/resource_feedback.js.map +1 -0
  331. package/rest/admin/2022-04/script_tag.d.ts +58 -0
  332. package/rest/admin/2022-04/script_tag.d.ts.map +1 -0
  333. package/rest/admin/2022-04/script_tag.js +74 -0
  334. package/rest/admin/2022-04/script_tag.js.map +1 -0
  335. package/rest/admin/2022-04/shipping_zone.d.ts +46 -0
  336. package/rest/admin/2022-04/shipping_zone.d.ts.map +1 -0
  337. package/rest/admin/2022-04/shipping_zone.js +37 -0
  338. package/rest/admin/2022-04/shipping_zone.js.map +1 -0
  339. package/rest/admin/2022-04/shop.d.ts +82 -0
  340. package/rest/admin/2022-04/shop.d.ts.map +1 -0
  341. package/rest/admin/2022-04/shop.js +32 -0
  342. package/rest/admin/2022-04/shop.js.map +1 -0
  343. package/rest/admin/2022-04/smart_collection.d.ts +88 -0
  344. package/rest/admin/2022-04/smart_collection.d.ts.map +1 -0
  345. package/rest/admin/2022-04/smart_collection.js +90 -0
  346. package/rest/admin/2022-04/smart_collection.js.map +1 -0
  347. package/rest/admin/2022-04/storefront_access_token.d.ts +36 -0
  348. package/rest/admin/2022-04/storefront_access_token.d.ts.map +1 -0
  349. package/rest/admin/2022-04/storefront_access_token.js +46 -0
  350. package/rest/admin/2022-04/storefront_access_token.js.map +1 -0
  351. package/rest/admin/2022-04/tender_transaction.d.ts +44 -0
  352. package/rest/admin/2022-04/tender_transaction.d.ts.map +1 -0
  353. package/rest/admin/2022-04/tender_transaction.js +32 -0
  354. package/rest/admin/2022-04/tender_transaction.js.map +1 -0
  355. package/rest/admin/2022-04/theme.d.ts +47 -0
  356. package/rest/admin/2022-04/theme.d.ts.map +1 -0
  357. package/rest/admin/2022-04/theme.js +58 -0
  358. package/rest/admin/2022-04/theme.js.map +1 -0
  359. package/rest/admin/2022-04/transaction.d.ts +78 -0
  360. package/rest/admin/2022-04/transaction.d.ts.map +1 -0
  361. package/rest/admin/2022-04/transaction.js +60 -0
  362. package/rest/admin/2022-04/transaction.js.map +1 -0
  363. package/rest/admin/2022-04/usage_charge.d.ts +45 -0
  364. package/rest/admin/2022-04/usage_charge.d.ts.map +1 -0
  365. package/rest/admin/2022-04/usage_charge.js +47 -0
  366. package/rest/admin/2022-04/usage_charge.js.map +1 -0
  367. package/rest/admin/2022-04/user.d.ts +52 -0
  368. package/rest/admin/2022-04/user.d.ts.map +1 -0
  369. package/rest/admin/2022-04/user.js +59 -0
  370. package/rest/admin/2022-04/user.js.map +1 -0
  371. package/rest/admin/2022-04/variant.d.ts +80 -0
  372. package/rest/admin/2022-04/variant.d.ts.map +1 -0
  373. package/rest/admin/2022-04/variant.js +78 -0
  374. package/rest/admin/2022-04/variant.js.map +1 -0
  375. package/rest/admin/2022-04/webhook.d.ts +63 -0
  376. package/rest/admin/2022-04/webhook.d.ts.map +1 -0
  377. package/rest/admin/2022-04/webhook.js +74 -0
  378. package/rest/admin/2022-04/webhook.js.map +1 -0
  379. package/rest/admin/2022-07/application_credit.d.ts +1 -1
  380. package/rest/admin/2022-07/carrier_service.d.ts +1 -0
  381. package/rest/admin/2022-07/carrier_service.d.ts.map +1 -1
  382. package/rest/admin/2022-07/carrier_service.js.map +1 -1
  383. package/rest/admin/2022-07/discount_code.d.ts +3 -0
  384. package/rest/admin/2022-07/discount_code.d.ts.map +1 -1
  385. package/rest/admin/2022-07/discount_code.js.map +1 -1
  386. package/rest/admin/2022-07/dispute.d.ts +1 -1
  387. package/rest/admin/2022-07/draft_order.d.ts +1 -1
  388. package/rest/admin/2022-07/event.d.ts +1 -1
  389. package/rest/admin/2022-07/event.d.ts.map +1 -1
  390. package/rest/admin/2022-07/fulfillment.d.ts +2 -0
  391. package/rest/admin/2022-07/fulfillment.d.ts.map +1 -1
  392. package/rest/admin/2022-07/fulfillment.js.map +1 -1
  393. package/rest/admin/2022-07/gift_card.d.ts +9 -3
  394. package/rest/admin/2022-07/gift_card.d.ts.map +1 -1
  395. package/rest/admin/2022-07/gift_card.js +6 -1
  396. package/rest/admin/2022-07/gift_card.js.map +1 -1
  397. package/rest/admin/2022-07/order.d.ts +1 -1
  398. package/rest/admin/2022-07/order_risk.d.ts +1 -1
  399. package/rest/admin/2022-07/order_risk.d.ts.map +1 -1
  400. package/rest/admin/2022-07/order_risk.js +2 -2
  401. package/rest/admin/2022-07/order_risk.js.map +1 -1
  402. package/rest/admin/2022-07/shipping_zone.d.ts +4 -4
  403. package/rest/admin/2022-07/shipping_zone.d.ts.map +1 -1
  404. package/rest/admin/2022-07/shop.d.ts +1 -1
  405. package/rest/admin/2022-07/shop.d.ts.map +1 -1
  406. package/rest/admin/2022-07/theme.d.ts +1 -0
  407. package/rest/admin/2022-07/theme.d.ts.map +1 -1
  408. package/rest/admin/2022-07/theme.js.map +1 -1
  409. package/rest/admin/2022-07/usage_charge.d.ts +1 -1
  410. package/rest/admin/2022-10/application_credit.d.ts +1 -1
  411. package/rest/admin/2022-10/carrier_service.d.ts +1 -0
  412. package/rest/admin/2022-10/carrier_service.d.ts.map +1 -1
  413. package/rest/admin/2022-10/carrier_service.js.map +1 -1
  414. package/rest/admin/2022-10/discount_code.d.ts +3 -0
  415. package/rest/admin/2022-10/discount_code.d.ts.map +1 -1
  416. package/rest/admin/2022-10/discount_code.js.map +1 -1
  417. package/rest/admin/2022-10/dispute.d.ts +1 -1
  418. package/rest/admin/2022-10/draft_order.d.ts +1 -1
  419. package/rest/admin/2022-10/event.d.ts +1 -1
  420. package/rest/admin/2022-10/event.d.ts.map +1 -1
  421. package/rest/admin/2022-10/fulfillment.d.ts +2 -0
  422. package/rest/admin/2022-10/fulfillment.d.ts.map +1 -1
  423. package/rest/admin/2022-10/fulfillment.js.map +1 -1
  424. package/rest/admin/2022-10/gift_card.d.ts +9 -3
  425. package/rest/admin/2022-10/gift_card.d.ts.map +1 -1
  426. package/rest/admin/2022-10/gift_card.js +6 -1
  427. package/rest/admin/2022-10/gift_card.js.map +1 -1
  428. package/rest/admin/2022-10/order.d.ts +1 -1
  429. package/rest/admin/2022-10/order_risk.d.ts +1 -1
  430. package/rest/admin/2022-10/order_risk.d.ts.map +1 -1
  431. package/rest/admin/2022-10/order_risk.js +2 -2
  432. package/rest/admin/2022-10/order_risk.js.map +1 -1
  433. package/rest/admin/2022-10/shipping_zone.d.ts +4 -4
  434. package/rest/admin/2022-10/shipping_zone.d.ts.map +1 -1
  435. package/rest/admin/2022-10/shop.d.ts +1 -1
  436. package/rest/admin/2022-10/shop.d.ts.map +1 -1
  437. package/rest/admin/2022-10/theme.d.ts +1 -0
  438. package/rest/admin/2022-10/theme.d.ts.map +1 -1
  439. package/rest/admin/2022-10/theme.js.map +1 -1
  440. package/rest/admin/2022-10/usage_charge.d.ts +1 -1
  441. package/rest/admin/2023-01/application_credit.d.ts +1 -1
  442. package/rest/admin/2023-01/carrier_service.d.ts +1 -0
  443. package/rest/admin/2023-01/carrier_service.d.ts.map +1 -1
  444. package/rest/admin/2023-01/carrier_service.js.map +1 -1
  445. package/rest/admin/2023-01/discount_code.d.ts +3 -0
  446. package/rest/admin/2023-01/discount_code.d.ts.map +1 -1
  447. package/rest/admin/2023-01/discount_code.js.map +1 -1
  448. package/rest/admin/2023-01/dispute.d.ts +1 -1
  449. package/rest/admin/2023-01/dispute_evidence.d.ts +57 -0
  450. package/rest/admin/2023-01/dispute_evidence.d.ts.map +1 -0
  451. package/rest/admin/2023-01/dispute_evidence.js +36 -0
  452. package/rest/admin/2023-01/dispute_evidence.js.map +1 -0
  453. package/rest/admin/2023-01/draft_order.d.ts +1 -1
  454. package/rest/admin/2023-01/event.d.ts +1 -1
  455. package/rest/admin/2023-01/event.d.ts.map +1 -1
  456. package/rest/admin/2023-01/fulfillment.d.ts +2 -0
  457. package/rest/admin/2023-01/fulfillment.d.ts.map +1 -1
  458. package/rest/admin/2023-01/fulfillment.js.map +1 -1
  459. package/rest/admin/2023-01/gift_card.d.ts +9 -3
  460. package/rest/admin/2023-01/gift_card.d.ts.map +1 -1
  461. package/rest/admin/2023-01/gift_card.js +6 -1
  462. package/rest/admin/2023-01/gift_card.js.map +1 -1
  463. package/rest/admin/2023-01/index.d.ts +2 -0
  464. package/rest/admin/2023-01/index.d.ts.map +1 -1
  465. package/rest/admin/2023-01/index.js +2 -0
  466. package/rest/admin/2023-01/index.js.map +1 -1
  467. package/rest/admin/2023-01/order.d.ts +1 -1
  468. package/rest/admin/2023-01/order_risk.d.ts +1 -1
  469. package/rest/admin/2023-01/order_risk.d.ts.map +1 -1
  470. package/rest/admin/2023-01/order_risk.js +2 -2
  471. package/rest/admin/2023-01/order_risk.js.map +1 -1
  472. package/rest/admin/2023-01/shipping_zone.d.ts +4 -4
  473. package/rest/admin/2023-01/shipping_zone.d.ts.map +1 -1
  474. package/rest/admin/2023-01/shop.d.ts +1 -1
  475. package/rest/admin/2023-01/shop.d.ts.map +1 -1
  476. package/rest/admin/2023-01/theme.d.ts +1 -0
  477. package/rest/admin/2023-01/theme.d.ts.map +1 -1
  478. package/rest/admin/2023-01/theme.js.map +1 -1
  479. package/rest/admin/2023-01/usage_charge.d.ts +1 -1
  480. package/rest/admin/2023-04/application_credit.d.ts +1 -1
  481. package/rest/admin/2023-04/carrier_service.d.ts +1 -0
  482. package/rest/admin/2023-04/carrier_service.d.ts.map +1 -1
  483. package/rest/admin/2023-04/carrier_service.js.map +1 -1
  484. package/rest/admin/2023-04/discount_code.d.ts +3 -0
  485. package/rest/admin/2023-04/discount_code.d.ts.map +1 -1
  486. package/rest/admin/2023-04/discount_code.js.map +1 -1
  487. package/rest/admin/2023-04/dispute.d.ts +46 -0
  488. package/rest/admin/2023-04/dispute.d.ts.map +1 -0
  489. package/rest/admin/2023-04/dispute.js +43 -0
  490. package/rest/admin/2023-04/dispute.js.map +1 -0
  491. package/rest/admin/2023-04/dispute_evidence.d.ts +57 -0
  492. package/rest/admin/2023-04/dispute_evidence.d.ts.map +1 -0
  493. package/rest/admin/2023-04/dispute_evidence.js +36 -0
  494. package/rest/admin/2023-04/dispute_evidence.js.map +1 -0
  495. package/rest/admin/2023-04/draft_order.d.ts +1 -1
  496. package/rest/admin/2023-04/event.d.ts +1 -1
  497. package/rest/admin/2023-04/event.d.ts.map +1 -1
  498. package/rest/admin/2023-04/fulfillment.d.ts +2 -0
  499. package/rest/admin/2023-04/fulfillment.d.ts.map +1 -1
  500. package/rest/admin/2023-04/fulfillment.js.map +1 -1
  501. package/rest/admin/2023-04/gift_card.d.ts +9 -3
  502. package/rest/admin/2023-04/gift_card.d.ts.map +1 -1
  503. package/rest/admin/2023-04/gift_card.js +6 -1
  504. package/rest/admin/2023-04/gift_card.js.map +1 -1
  505. package/rest/admin/2023-04/index.d.ts +6 -0
  506. package/rest/admin/2023-04/index.d.ts.map +1 -1
  507. package/rest/admin/2023-04/index.js +6 -0
  508. package/rest/admin/2023-04/index.js.map +1 -1
  509. package/rest/admin/2023-04/order.d.ts +1 -1
  510. package/rest/admin/2023-04/order_risk.d.ts +1 -1
  511. package/rest/admin/2023-04/order_risk.d.ts.map +1 -1
  512. package/rest/admin/2023-04/order_risk.js +2 -2
  513. package/rest/admin/2023-04/order_risk.js.map +1 -1
  514. package/rest/admin/2023-04/payment_transaction.d.ts +48 -0
  515. package/rest/admin/2023-04/payment_transaction.d.ts.map +1 -0
  516. package/rest/admin/2023-04/payment_transaction.js +39 -0
  517. package/rest/admin/2023-04/payment_transaction.js.map +1 -0
  518. package/rest/admin/2023-04/shipping_zone.d.ts +4 -4
  519. package/rest/admin/2023-04/shipping_zone.d.ts.map +1 -1
  520. package/rest/admin/2023-04/shop.d.ts +1 -1
  521. package/rest/admin/2023-04/shop.d.ts.map +1 -1
  522. package/rest/admin/2023-04/theme.d.ts +1 -0
  523. package/rest/admin/2023-04/theme.d.ts.map +1 -1
  524. package/rest/admin/2023-04/theme.js.map +1 -1
  525. package/rest/admin/2023-04/usage_charge.d.ts +1 -1
  526. package/runtime/crypto/crypto.d.ts +3 -2
  527. package/runtime/crypto/crypto.d.ts.map +1 -1
  528. package/runtime/crypto/crypto.js +17 -3
  529. package/runtime/crypto/crypto.js.map +1 -1
  530. package/adapters/__e2etests__/rollup.test-cf-worker-app.config.d.ts +0 -10
  531. package/adapters/__e2etests__/rollup.test-cf-worker-app.config.d.ts.map +0 -1
  532. package/adapters/__e2etests__/rollup.test-cf-worker-app.config.js +0 -30
  533. package/adapters/__e2etests__/rollup.test-cf-worker-app.config.js.map +0 -1
  534. package/adapters/__e2etests__/test_config_types.d.ts +0 -30
  535. package/adapters/__e2etests__/test_config_types.d.ts.map +0 -1
  536. package/adapters/__e2etests__/test_config_types.js +0 -23
  537. package/adapters/__e2etests__/test_config_types.js.map +0 -1
  538. package/adapters/__e2etests__/test_environments.d.ts +0 -4
  539. package/adapters/__e2etests__/test_environments.d.ts.map +0 -1
  540. package/adapters/__e2etests__/test_environments.js +0 -52
  541. package/adapters/__e2etests__/test_environments.js.map +0 -1
  542. package/adapters/__e2etests__/test_suite.d.ts +0 -8
  543. package/adapters/__e2etests__/test_suite.d.ts.map +0 -1
  544. package/adapters/__e2etests__/test_suite.js +0 -326
  545. package/adapters/__e2etests__/test_suite.js.map +0 -1
  546. package/adapters/__e2etests__/utils.d.ts +0 -5
  547. package/adapters/__e2etests__/utils.d.ts.map +0 -1
  548. package/adapters/__e2etests__/utils.js +0 -40
  549. package/adapters/__e2etests__/utils.js.map +0 -1
@@ -4,69 +4,42 @@ exports.process = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const network_1 = require("@shopify/network");
6
6
  const http_1 = require("../../runtime/http");
7
- const crypto_1 = require("../../runtime/crypto");
8
- const types_1 = require("../../runtime/crypto/types");
9
- const types_2 = require("../types");
10
- const safe_compare_1 = require("../auth/oauth/safe-compare");
11
7
  const ShopifyErrors = tslib_1.__importStar(require("../error"));
12
8
  const logger_1 = require("../logger");
13
- const types_3 = require("./types");
14
- const registry_1 = require("./registry");
9
+ const types_1 = require("./types");
10
+ const validate_1 = require("./validate");
11
+ const STATUS_TEXT_LOOKUP = {
12
+ [network_1.StatusCode.Ok]: 'OK',
13
+ [network_1.StatusCode.BadRequest]: 'Bad Request',
14
+ [network_1.StatusCode.Unauthorized]: 'Unauthorized',
15
+ [network_1.StatusCode.NotFound]: 'Not Found',
16
+ [network_1.StatusCode.InternalServerError]: 'Internal Server Error',
17
+ };
15
18
  function process(config, webhookRegistry) {
16
19
  return function process(_a) {
17
20
  var { rawBody } = _a, adapterArgs = tslib_1.__rest(_a, ["rawBody"]);
18
21
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
- const request = yield (0, http_1.abstractConvertRequest)(adapterArgs);
20
22
  const response = {
21
23
  statusCode: network_1.StatusCode.Ok,
22
- statusText: statusTextLookup[network_1.StatusCode.Ok],
24
+ statusText: STATUS_TEXT_LOOKUP[network_1.StatusCode.Ok],
23
25
  headers: {},
24
26
  };
25
- const webhookCheck = checkWebhookRequest(rawBody, request.headers);
26
- const { webhookOk, apiVersion, domain, hmac, topic, webhookId } = webhookCheck;
27
- let { errorMessage } = webhookCheck;
28
- const loggingContext = { apiVersion, domain, topic, webhookId };
29
- const log = (0, logger_1.logger)(config);
30
- log.info('Processing webhook request', loggingContext);
31
- if (webhookOk) {
32
- log.debug('Webhook request is well formed', loggingContext);
33
- if (yield validateOkWebhook(config.apiSecretKey, rawBody, hmac)) {
34
- log.debug('Webhook request is valid', loggingContext);
35
- const graphqlTopic = (0, registry_1.topicForStorage)(topic);
36
- const handlers = webhookRegistry[graphqlTopic] || [];
37
- let found = false;
38
- for (const handler of handlers) {
39
- if (handler.deliveryMethod !== types_3.DeliveryMethod.Http) {
40
- continue;
41
- }
42
- found = true;
43
- log.debug('Found HTTP handler, triggering it', loggingContext);
44
- try {
45
- yield handler.callback(graphqlTopic, domain, rawBody, webhookId, apiVersion);
46
- response.statusCode = network_1.StatusCode.Ok;
47
- }
48
- catch (error) {
49
- response.statusCode = network_1.StatusCode.InternalServerError;
50
- errorMessage = error.message;
51
- }
52
- }
53
- if (!found) {
54
- log.debug('No HTTP handlers found', loggingContext);
55
- response.statusCode = network_1.StatusCode.NotFound;
56
- errorMessage = `No HTTP webhooks registered for topic ${graphqlTopic}`;
57
- }
58
- }
59
- else {
60
- log.debug('Webhook validation failed', loggingContext);
61
- response.statusCode = network_1.StatusCode.Unauthorized;
62
- errorMessage = `Could not validate request for topic ${topic}`;
27
+ yield (0, logger_1.logger)(config).info('Receiving webhook request');
28
+ const webhookCheck = yield (0, validate_1.validateFactory)(config)(Object.assign({ rawBody }, adapterArgs));
29
+ let errorMessage = 'Unknown error while handling webhook';
30
+ if (webhookCheck.valid) {
31
+ const handlerResult = yield callWebhookHandlers(config, webhookRegistry, webhookCheck, rawBody);
32
+ response.statusCode = handlerResult.statusCode;
33
+ if (!(0, http_1.isOK)(response)) {
34
+ errorMessage = handlerResult.errorMessage || errorMessage;
63
35
  }
64
36
  }
65
37
  else {
66
- log.debug('Webhook request is malformed', loggingContext);
67
- response.statusCode = network_1.StatusCode.BadRequest;
38
+ const errorResult = yield handleInvalidWebhook(config, webhookCheck);
39
+ response.statusCode = errorResult.statusCode;
40
+ response.statusText = STATUS_TEXT_LOOKUP[response.statusCode];
41
+ errorMessage = errorResult.errorMessage;
68
42
  }
69
- response.statusText = statusTextLookup[response.statusCode];
70
43
  const returnResponse = yield (0, http_1.abstractConvertResponse)(response, adapterArgs);
71
44
  if (!(0, http_1.isOK)(response)) {
72
45
  throw new ShopifyErrors.InvalidWebhookError({
@@ -79,75 +52,67 @@ function process(config, webhookRegistry) {
79
52
  };
80
53
  }
81
54
  exports.process = process;
82
- const statusTextLookup = {
83
- [network_1.StatusCode.Ok]: 'OK',
84
- [network_1.StatusCode.BadRequest]: 'Bad Request',
85
- [network_1.StatusCode.Unauthorized]: 'Unauthorized',
86
- [network_1.StatusCode.NotFound]: 'Not Found',
87
- [network_1.StatusCode.InternalServerError]: 'Internal Server Error',
88
- };
89
- const headerProperties = [
90
- {
91
- property: 'apiVersion',
92
- headerName: types_2.ShopifyHeader.ApiVersion,
93
- },
94
- {
95
- property: 'domain',
96
- headerName: types_2.ShopifyHeader.Domain,
97
- },
98
- {
99
- property: 'hmac',
100
- headerName: types_2.ShopifyHeader.Hmac,
101
- },
102
- {
103
- property: 'topic',
104
- headerName: types_2.ShopifyHeader.Topic,
105
- },
106
- {
107
- property: 'webhookId',
108
- headerName: types_2.ShopifyHeader.WebhookId,
109
- },
110
- ];
111
- function checkWebhookRequest(rawBody, headers) {
112
- let retVal = {
113
- webhookOk: true,
114
- errorMessage: '',
115
- apiVersion: '',
116
- domain: '',
117
- hmac: '',
118
- topic: '',
119
- webhookId: '',
120
- };
121
- if (rawBody.length) {
122
- const missingHeaders = [];
123
- const headerValues = {};
124
- headerProperties.forEach(({ property, headerName }) => {
125
- const headerValue = (0, http_1.getHeader)(headers, headerName);
126
- if (headerValue) {
127
- headerValues[property] = headerValue;
55
+ function callWebhookHandlers(config, webhookRegistry, webhookCheck, rawBody) {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ const log = (0, logger_1.logger)(config);
58
+ const { hmac: _hmac, valid: _valid } = webhookCheck, loggingContext = tslib_1.__rest(webhookCheck, ["hmac", "valid"]);
59
+ yield log.debug('Webhook request is valid, looking for HTTP handlers to call', loggingContext);
60
+ const handlers = webhookRegistry[webhookCheck.topic] || [];
61
+ const response = { statusCode: network_1.StatusCode.Ok };
62
+ let found = false;
63
+ for (const handler of handlers) {
64
+ if (handler.deliveryMethod !== types_1.DeliveryMethod.Http) {
65
+ continue;
128
66
  }
129
- else {
130
- missingHeaders.push(headerName);
67
+ if (!handler.callback) {
68
+ response.statusCode = network_1.StatusCode.InternalServerError;
69
+ response.errorMessage =
70
+ "Cannot call webhooks.process with a webhook handler that doesn't have a callback";
71
+ throw new ShopifyErrors.MissingWebhookCallbackError({
72
+ message: response.errorMessage,
73
+ response,
74
+ });
75
+ }
76
+ found = true;
77
+ yield log.debug('Found HTTP handler, triggering it', loggingContext);
78
+ try {
79
+ yield handler.callback(webhookCheck.topic, webhookCheck.domain, rawBody, webhookCheck.webhookId, webhookCheck.apiVersion);
80
+ }
81
+ catch (error) {
82
+ response.statusCode = network_1.StatusCode.InternalServerError;
83
+ response.errorMessage = error.message;
131
84
  }
132
- });
133
- if (missingHeaders.length) {
134
- retVal.webhookOk = false;
135
- retVal.errorMessage = `Missing one or more of the required HTTP headers to process webhooks: [${missingHeaders.join(', ')}]`;
136
85
  }
137
- else {
138
- retVal = Object.assign(Object.assign({}, retVal), headerValues);
86
+ if (!found) {
87
+ yield log.debug('No HTTP handlers found', loggingContext);
88
+ response.statusCode = network_1.StatusCode.NotFound;
89
+ response.errorMessage = `No HTTP webhooks registered for topic ${webhookCheck.topic}`;
139
90
  }
140
- }
141
- else {
142
- retVal.webhookOk = false;
143
- retVal.errorMessage = 'No body was received when processing webhook';
144
- }
145
- return retVal;
91
+ return response;
92
+ });
146
93
  }
147
- function validateOkWebhook(secret, rawBody, hmac) {
94
+ function handleInvalidWebhook(config, webhookCheck) {
148
95
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
149
- const generatedHash = yield (0, crypto_1.createSHA256HMAC)(secret, rawBody, types_1.HashFormat.Base64);
150
- return (0, safe_compare_1.safeCompare)(generatedHash, hmac);
96
+ const response = {
97
+ statusCode: network_1.StatusCode.InternalServerError,
98
+ errorMessage: 'Unknown error while handling webhook',
99
+ };
100
+ switch (webhookCheck.reason) {
101
+ case types_1.WebhookValidationErrorReason.MissingHeaders:
102
+ response.statusCode = network_1.StatusCode.BadRequest;
103
+ response.errorMessage = `Missing one or more of the required HTTP headers to process webhooks: [${webhookCheck.missingHeaders.join(', ')}]`;
104
+ break;
105
+ case types_1.WebhookValidationErrorReason.MissingBody:
106
+ response.statusCode = network_1.StatusCode.BadRequest;
107
+ response.errorMessage = 'No body was received when processing webhook';
108
+ break;
109
+ case types_1.WebhookValidationErrorReason.InvalidHmac:
110
+ response.statusCode = network_1.StatusCode.Unauthorized;
111
+ response.errorMessage = `Could not validate request HMAC`;
112
+ break;
113
+ }
114
+ yield (0, logger_1.logger)(config).debug(`Webhook request is invalid, returning ${response.statusCode}: ${response.errorMessage}`);
115
+ return response;
151
116
  });
152
117
  }
153
118
  //# sourceMappingURL=process.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.js","sourceRoot":"","sources":["process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["process.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ function registry() {
9
9
  }
10
10
  exports.registry = registry;
11
11
  function topicForStorage(topic) {
12
- return topic.toUpperCase().replace(/\//g, '_');
12
+ return topic.toUpperCase().replace(/\/|\./g, '_');
13
13
  }
14
14
  exports.topicForStorage = topicForStorage;
15
15
  function addHandlers(config, webhookRegistry) {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["registry.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ export interface HttpWebhookHandler extends BaseWebhookHandler {
15
15
  deliveryMethod: DeliveryMethod.Http;
16
16
  privateMetafieldNamespaces?: string[];
17
17
  callbackUrl: string;
18
+ }
19
+ export interface HttpWebhookHandlerWithCallback extends HttpWebhookHandler {
18
20
  callback: WebhookHandlerFunction;
19
21
  }
20
22
  export interface EventBridgeWebhookHandler extends BaseWebhookHandler {
@@ -26,9 +28,9 @@ export interface PubSubWebhookHandler extends BaseWebhookHandler {
26
28
  pubSubProject: string;
27
29
  pubSubTopic: string;
28
30
  }
29
- export declare type WebhookHandler = HttpWebhookHandler | EventBridgeWebhookHandler | PubSubWebhookHandler;
30
- export interface WebhookRegistry {
31
- [topic: string]: WebhookHandler[];
31
+ export declare type WebhookHandler = HttpWebhookHandler | HttpWebhookHandlerWithCallback | EventBridgeWebhookHandler | PubSubWebhookHandler;
32
+ export interface WebhookRegistry<Handler extends WebhookHandler = WebhookHandler> {
33
+ [topic: string]: Handler[];
32
34
  }
33
35
  export declare enum WebhookOperation {
34
36
  Create = "create",
@@ -84,5 +86,31 @@ export interface AddHandlersParams {
84
86
  export interface WebhookProcessParams extends AdapterArgs {
85
87
  rawBody: string;
86
88
  }
89
+ export interface WebhookValidateParams extends WebhookProcessParams {
90
+ }
91
+ export declare enum WebhookValidationErrorReason {
92
+ MissingHeaders = "missing_headers",
93
+ MissingBody = "missing_body",
94
+ InvalidHmac = "invalid_hmac"
95
+ }
96
+ export interface WebhookFields {
97
+ webhookId: string;
98
+ apiVersion: string;
99
+ domain: string;
100
+ hmac: string;
101
+ topic: string;
102
+ }
103
+ export interface WebhookValidationInvalid {
104
+ valid: false;
105
+ reason: WebhookValidationErrorReason;
106
+ }
107
+ export interface WebhookValidationMissingHeaders extends WebhookValidationInvalid {
108
+ reason: WebhookValidationErrorReason.MissingHeaders;
109
+ missingHeaders: string[];
110
+ }
111
+ export interface WebhookValidationValid extends WebhookFields {
112
+ valid: true;
113
+ }
114
+ export declare type WebhookValidation = WebhookValidationValid | WebhookValidationInvalid | WebhookValidationMissingHeaders;
87
115
  export {};
88
116
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebhookOperation = exports.DeliveryMethod = void 0;
3
+ exports.WebhookValidationErrorReason = exports.WebhookOperation = exports.DeliveryMethod = void 0;
4
4
  var DeliveryMethod;
5
5
  (function (DeliveryMethod) {
6
6
  DeliveryMethod["Http"] = "http";
@@ -13,4 +13,10 @@ var WebhookOperation;
13
13
  WebhookOperation["Update"] = "update";
14
14
  WebhookOperation["Delete"] = "delete";
15
15
  })(WebhookOperation = exports.WebhookOperation || (exports.WebhookOperation = {}));
16
+ var WebhookValidationErrorReason;
17
+ (function (WebhookValidationErrorReason) {
18
+ WebhookValidationErrorReason["MissingHeaders"] = "missing_headers";
19
+ WebhookValidationErrorReason["MissingBody"] = "missing_body";
20
+ WebhookValidationErrorReason["InvalidHmac"] = "invalid_hmac";
21
+ })(WebhookValidationErrorReason = exports.WebhookValidationErrorReason || (exports.WebhookValidationErrorReason = {}));
16
22
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":";;;AAGA,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,6CAA2B,CAAA;IAC3B,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AA4CD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":";;;AAGA,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,6CAA2B,CAAA;IAC3B,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB;AAiDD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;IACjB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAiED,IAAY,4BAIX;AAJD,WAAY,4BAA4B;IACtC,kEAAkC,CAAA;IAClC,4DAA4B,CAAA;IAC5B,4DAA4B,CAAA;AAC9B,CAAC,EAJW,4BAA4B,GAA5B,oCAA4B,KAA5B,oCAA4B,QAIvC"}
@@ -0,0 +1,4 @@
1
+ import { ConfigInterface } from '../base-types';
2
+ import { WebhookValidateParams, WebhookValidation } from './types';
3
+ export declare function validateFactory(config: ConfigInterface): ({ rawBody, ...adapterArgs }: WebhookValidateParams) => Promise<WebhookValidation>;
4
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["validate.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAI9C,OAAO,EAEL,qBAAqB,EACrB,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAajB,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,iCAIlD,qBAAqB,KAAG,QAAQ,iBAAiB,CAAC,CAiCtD"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFactory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const http_1 = require("../../runtime/http");
6
+ const crypto_1 = require("../../runtime/crypto");
7
+ const types_1 = require("../../runtime/crypto/types");
8
+ const types_2 = require("../types");
9
+ const safe_compare_1 = require("../auth/oauth/safe-compare");
10
+ const logger_1 = require("../logger");
11
+ const types_3 = require("./types");
12
+ const registry_1 = require("./registry");
13
+ const HANDLER_PROPERTIES = {
14
+ apiVersion: types_2.ShopifyHeader.ApiVersion,
15
+ domain: types_2.ShopifyHeader.Domain,
16
+ hmac: types_2.ShopifyHeader.Hmac,
17
+ topic: types_2.ShopifyHeader.Topic,
18
+ webhookId: types_2.ShopifyHeader.WebhookId,
19
+ };
20
+ function validateFactory(config) {
21
+ return function validate(_a) {
22
+ var { rawBody } = _a, adapterArgs = tslib_1.__rest(_a, ["rawBody"]);
23
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
24
+ const request = yield (0, http_1.abstractConvertRequest)(adapterArgs);
25
+ const log = (0, logger_1.logger)(config);
26
+ const webhookCheck = checkWebhookRequest(rawBody, request.headers);
27
+ if (!webhookCheck.valid) {
28
+ yield log.debug('Received malformed webhook request', webhookCheck);
29
+ return webhookCheck;
30
+ }
31
+ const { hmac, valid: _valid } = webhookCheck, loggingContext = tslib_1.__rest(webhookCheck, ["hmac", "valid"]);
32
+ yield log.debug('Webhook request is well formed', loggingContext);
33
+ if (yield checkWebhookHmac(config.apiSecretKey, rawBody, hmac)) {
34
+ yield log.debug('Webhook request is valid', loggingContext);
35
+ return webhookCheck;
36
+ }
37
+ else {
38
+ yield log.debug('Webhook validation failed', loggingContext);
39
+ if (config.isCustomStoreApp) {
40
+ log.deprecated('8.0.0', "apiSecretKey should be set to the custom store app's API secret key, so that webhook validation succeeds. adminApiAccessToken should be set to the custom store app's Admin API access token");
41
+ }
42
+ return {
43
+ valid: false,
44
+ reason: types_3.WebhookValidationErrorReason.InvalidHmac,
45
+ };
46
+ }
47
+ });
48
+ };
49
+ }
50
+ exports.validateFactory = validateFactory;
51
+ function checkWebhookRequest(rawBody, headers) {
52
+ if (!rawBody.length) {
53
+ return {
54
+ valid: false,
55
+ reason: types_3.WebhookValidationErrorReason.MissingBody,
56
+ };
57
+ }
58
+ const missingHeaders = [];
59
+ const headerValues = Object.entries(HANDLER_PROPERTIES).reduce((acc, [property, headerName]) => {
60
+ const headerValue = (0, http_1.getHeader)(headers, headerName);
61
+ if (headerValue) {
62
+ acc[property] = headerValue;
63
+ }
64
+ else {
65
+ missingHeaders.push(headerName);
66
+ }
67
+ return acc;
68
+ }, {});
69
+ if (missingHeaders.length) {
70
+ return {
71
+ valid: false,
72
+ reason: types_3.WebhookValidationErrorReason.MissingHeaders,
73
+ missingHeaders,
74
+ };
75
+ }
76
+ else {
77
+ return Object.assign(Object.assign({ valid: true }, headerValues), { topic: (0, registry_1.topicForStorage)(headerValues.topic) });
78
+ }
79
+ }
80
+ function checkWebhookHmac(secret, rawBody, hmac) {
81
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
82
+ const generatedHash = yield (0, crypto_1.createSHA256HMAC)(secret, rawBody, types_1.HashFormat.Base64);
83
+ return (0, safe_compare_1.safeCompare)(generatedHash, hmac);
84
+ });
85
+ }
86
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["validate.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shopify/shopify-api",
3
- "version": "7.0.0",
3
+ "version": "7.2.0",
4
4
  "description": "Shopify API Library for Node - accelerate development with support for authentication, graphql proxy, webhooks",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -75,11 +75,10 @@
75
75
  },
76
76
  "dependencies": {
77
77
  "@shopify/network": "^3.2.1",
78
- "@types/node-fetch": "^2.5.7",
79
- "@types/supertest": "^2.0.10",
78
+ "compare-versions": "^5.0.3",
79
+ "isbot": "^3.6.10",
80
80
  "jose": "^4.9.1",
81
81
  "node-fetch": "^2.6.1",
82
- "semver": "^7.3.8",
83
82
  "tslib": "^2.0.3",
84
83
  "uuid": "^9.0.0"
85
84
  },
@@ -94,9 +93,10 @@
94
93
  "@types/express": "^4.17.13",
95
94
  "@types/jest": "^29.5.0",
96
95
  "@types/node": "^14.18.12",
97
- "@types/semver": "^7.3.12",
96
+ "@types/node-fetch": "^2.5.7",
97
+ "@types/supertest": "^2.0.10",
98
98
  "@types/uuid": "^9.0.0",
99
- "eslint": "^7.30.0",
99
+ "eslint": "^8.39.0",
100
100
  "express": "^4.17.13",
101
101
  "jest": "^29.1.2",
102
102
  "jest-environment-miniflare": "^2.12.1",
@@ -115,6 +115,7 @@
115
115
  "**/*.js",
116
116
  "**/*.js.map",
117
117
  "!bundle/*",
118
- "!node_modules"
118
+ "!node_modules",
119
+ "!adapters/__e2etests__/*"
119
120
  ]
120
121
  }
@@ -0,0 +1,91 @@
1
+ /***********************************************************************************************************************
2
+ * This file is auto-generated. If you have an issue, please create a GitHub issue. *
3
+ ***********************************************************************************************************************/
4
+ import { Base } from '../../base';
5
+ import { ResourcePath } from '../../types';
6
+ import { Session } from '../../../lib/session/session';
7
+ import { ApiVersion } from '../../../lib/types';
8
+ import { Currency } from './currency';
9
+ import { Customer } from './customer';
10
+ import { DiscountCode } from './discount_code';
11
+ interface CheckoutsArgs {
12
+ [key: string]: unknown;
13
+ session: Session;
14
+ since_id?: unknown;
15
+ created_at_min?: unknown;
16
+ created_at_max?: unknown;
17
+ updated_at_min?: unknown;
18
+ updated_at_max?: unknown;
19
+ status?: unknown;
20
+ limit?: unknown;
21
+ }
22
+ export declare class AbandonedCheckout extends Base {
23
+ static apiVersion: ApiVersion;
24
+ protected static resourceName: string;
25
+ protected static pluralName: string;
26
+ protected static hasOne: {
27
+ [key: string]: typeof Base;
28
+ };
29
+ protected static hasMany: {
30
+ [key: string]: typeof Base;
31
+ };
32
+ protected static paths: ResourcePath[];
33
+ static checkouts({ session, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, status, limit, ...otherArgs }: CheckoutsArgs): Promise<unknown>;
34
+ abandoned_checkout_url: string | null;
35
+ billing_address: {
36
+ [key: string]: unknown;
37
+ } | null;
38
+ buyer_accepts_marketing: boolean | null;
39
+ buyer_accepts_sms_marketing: boolean | null;
40
+ cart_token: string | null;
41
+ closed_at: string | null;
42
+ completed_at: string | null;
43
+ created_at: string | null;
44
+ currency: Currency | null | {
45
+ [key: string]: any;
46
+ };
47
+ customer: Customer | null | {
48
+ [key: string]: any;
49
+ };
50
+ customer_locale: string | null;
51
+ device_id: number | null;
52
+ discount_codes: DiscountCode[] | null | {
53
+ [key: string]: any;
54
+ };
55
+ email: string | null;
56
+ gateway: string | null;
57
+ id: number | null;
58
+ landing_site: string | null;
59
+ line_items: {
60
+ [key: string]: unknown;
61
+ } | null;
62
+ location_id: number | null;
63
+ note: string | null;
64
+ phone: string | null;
65
+ presentment_currency: string | null;
66
+ referring_site: string | null;
67
+ shipping_address: {
68
+ [key: string]: unknown;
69
+ } | null;
70
+ shipping_lines: {
71
+ [key: string]: unknown;
72
+ } | null;
73
+ sms_marketing_phone: string | null;
74
+ source_name: string | null;
75
+ subtotal_price: string | null;
76
+ tax_lines: {
77
+ [key: string]: unknown;
78
+ } | null;
79
+ taxes_included: boolean | null;
80
+ token: string | null;
81
+ total_discounts: string | null;
82
+ total_duties: string | null;
83
+ total_line_items_price: string | null;
84
+ total_price: string | null;
85
+ total_tax: string | null;
86
+ total_weight: number | null;
87
+ updated_at: string | null;
88
+ user_id: number | null;
89
+ }
90
+ export {};
91
+ //# sourceMappingURL=abandoned_checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abandoned_checkout.d.ts","sourceRoot":"","sources":["abandoned_checkout.ts"],"names":[],"mappings":"AAAA;;wHAEwH;AAExH,OAAO,EAAC,IAAI,EAAC,MAAM,YAAY,CAAC;AAChC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,EAAC,OAAO,EAAC,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,UAAU,aAAa;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,iBAAkB,SAAQ,IAAI;IACzC,OAAc,UAAU,aAAsB;IAE9C,SAAS,CAAC,MAAM,CAAC,YAAY,SAAwB;IACrD,SAAS,CAAC,MAAM,CAAC,UAAU,SAAyB;IACpD,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,IAAI,CAAA;KAAC,CAGnD;IACF,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,IAAI,CAAA;KAAC,CAEpD;IACF,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAGpC;WAEkB,SAAS,CAC3B,EACE,OAAO,EACP,QAAe,EACf,cAAqB,EACrB,cAAqB,EACrB,cAAqB,EACrB,cAAqB,EACrB,MAAa,EACb,KAAY,EACZ,GAAG,SAAS,EACb,EAAE,aAAa,GACf,OAAO,CAAC,OAAO,CAAC;IAcZ,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,eAAe,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC;IACjD,uBAAuB,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,2BAA2B,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IACjD,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IACjD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC7D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC;IAClD,cAAc,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC;IAChD,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAC,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B"}