@shopify/shopify-api 12.1.2 → 12.3.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 (499) hide show
  1. package/dist/cjs/lib/auth/index.js +4 -0
  2. package/dist/cjs/lib/auth/index.js.map +1 -1
  3. package/dist/cjs/lib/auth/oauth/create-session.js +6 -1
  4. package/dist/cjs/lib/auth/oauth/create-session.js.map +1 -1
  5. package/dist/cjs/lib/auth/oauth/migrate-to-expiring-token.js +47 -0
  6. package/dist/cjs/lib/auth/oauth/migrate-to-expiring-token.js.map +1 -0
  7. package/dist/cjs/lib/auth/oauth/oauth.js +2 -1
  8. package/dist/cjs/lib/auth/oauth/oauth.js.map +1 -1
  9. package/dist/cjs/lib/auth/oauth/refresh-token.js +43 -0
  10. package/dist/cjs/lib/auth/oauth/refresh-token.js.map +1 -0
  11. package/dist/cjs/lib/auth/oauth/token-exchange.js +2 -1
  12. package/dist/cjs/lib/auth/oauth/token-exchange.js.map +1 -1
  13. package/dist/cjs/lib/auth/oauth/types.js.map +1 -1
  14. package/dist/cjs/lib/session/session.js +28 -0
  15. package/dist/cjs/lib/session/session.js.map +1 -1
  16. package/dist/cjs/lib/types.js +1 -0
  17. package/dist/cjs/lib/types.js.map +1 -1
  18. package/dist/cjs/lib/version.js +1 -1
  19. package/dist/cjs/lib/version.js.map +1 -1
  20. package/dist/cjs/rest/admin/2026-01/abandoned_checkout.js +85 -0
  21. package/dist/cjs/rest/admin/2026-01/abandoned_checkout.js.map +1 -0
  22. package/dist/cjs/rest/admin/2026-01/access_scope.js +36 -0
  23. package/dist/cjs/rest/admin/2026-01/access_scope.js.map +1 -0
  24. package/dist/cjs/rest/admin/2026-01/apple_pay_certificate.js +62 -0
  25. package/dist/cjs/rest/admin/2026-01/apple_pay_certificate.js.map +1 -0
  26. package/dist/cjs/rest/admin/2026-01/application_charge.js +56 -0
  27. package/dist/cjs/rest/admin/2026-01/application_charge.js.map +1 -0
  28. package/dist/cjs/rest/admin/2026-01/application_credit.js +50 -0
  29. package/dist/cjs/rest/admin/2026-01/application_credit.js.map +1 -0
  30. package/dist/cjs/rest/admin/2026-01/article.js +114 -0
  31. package/dist/cjs/rest/admin/2026-01/article.js.map +1 -0
  32. package/dist/cjs/rest/admin/2026-01/asset.js +57 -0
  33. package/dist/cjs/rest/admin/2026-01/asset.js.map +1 -0
  34. package/dist/cjs/rest/admin/2026-01/assigned_fulfillment_order.js +41 -0
  35. package/dist/cjs/rest/admin/2026-01/assigned_fulfillment_order.js.map +1 -0
  36. package/dist/cjs/rest/admin/2026-01/balance.js +34 -0
  37. package/dist/cjs/rest/admin/2026-01/balance.js.map +1 -0
  38. package/dist/cjs/rest/admin/2026-01/blog.js +83 -0
  39. package/dist/cjs/rest/admin/2026-01/blog.js.map +1 -0
  40. package/dist/cjs/rest/admin/2026-01/cancellation_request.js +52 -0
  41. package/dist/cjs/rest/admin/2026-01/cancellation_request.js.map +1 -0
  42. package/dist/cjs/rest/admin/2026-01/carrier_service.js +63 -0
  43. package/dist/cjs/rest/admin/2026-01/carrier_service.js.map +1 -0
  44. package/dist/cjs/rest/admin/2026-01/checkout.js +103 -0
  45. package/dist/cjs/rest/admin/2026-01/checkout.js.map +1 -0
  46. package/dist/cjs/rest/admin/2026-01/collect.js +74 -0
  47. package/dist/cjs/rest/admin/2026-01/collect.js.map +1 -0
  48. package/dist/cjs/rest/admin/2026-01/collection.js +59 -0
  49. package/dist/cjs/rest/admin/2026-01/collection.js.map +1 -0
  50. package/dist/cjs/rest/admin/2026-01/collection_listing.js +80 -0
  51. package/dist/cjs/rest/admin/2026-01/collection_listing.js.map +1 -0
  52. package/dist/cjs/rest/admin/2026-01/comment.js +135 -0
  53. package/dist/cjs/rest/admin/2026-01/comment.js.map +1 -0
  54. package/dist/cjs/rest/admin/2026-01/country.js +76 -0
  55. package/dist/cjs/rest/admin/2026-01/country.js.map +1 -0
  56. package/dist/cjs/rest/admin/2026-01/currency.js +35 -0
  57. package/dist/cjs/rest/admin/2026-01/currency.js.map +1 -0
  58. package/dist/cjs/rest/admin/2026-01/custom_collection.js +79 -0
  59. package/dist/cjs/rest/admin/2026-01/custom_collection.js.map +1 -0
  60. package/dist/cjs/rest/admin/2026-01/customer.js +150 -0
  61. package/dist/cjs/rest/admin/2026-01/customer.js.map +1 -0
  62. package/dist/cjs/rest/admin/2026-01/deprecated_api_call.js +35 -0
  63. package/dist/cjs/rest/admin/2026-01/deprecated_api_call.js.map +1 -0
  64. package/dist/cjs/rest/admin/2026-01/discount_code.js +115 -0
  65. package/dist/cjs/rest/admin/2026-01/discount_code.js.map +1 -0
  66. package/dist/cjs/rest/admin/2026-01/dispute.js +53 -0
  67. package/dist/cjs/rest/admin/2026-01/dispute.js.map +1 -0
  68. package/dist/cjs/rest/admin/2026-01/dispute_evidence.js +57 -0
  69. package/dist/cjs/rest/admin/2026-01/dispute_evidence.js.map +1 -0
  70. package/dist/cjs/rest/admin/2026-01/dispute_file_upload.js +45 -0
  71. package/dist/cjs/rest/admin/2026-01/dispute_file_upload.js.map +1 -0
  72. package/dist/cjs/rest/admin/2026-01/draft_order.js +126 -0
  73. package/dist/cjs/rest/admin/2026-01/draft_order.js.map +1 -0
  74. package/dist/cjs/rest/admin/2026-01/event.js +67 -0
  75. package/dist/cjs/rest/admin/2026-01/event.js.map +1 -0
  76. package/dist/cjs/rest/admin/2026-01/fulfillment.js +102 -0
  77. package/dist/cjs/rest/admin/2026-01/fulfillment.js.map +1 -0
  78. package/dist/cjs/rest/admin/2026-01/fulfillment_event.js +79 -0
  79. package/dist/cjs/rest/admin/2026-01/fulfillment_event.js.map +1 -0
  80. package/dist/cjs/rest/admin/2026-01/fulfillment_order.js +164 -0
  81. package/dist/cjs/rest/admin/2026-01/fulfillment_order.js.map +1 -0
  82. package/dist/cjs/rest/admin/2026-01/fulfillment_request.js +61 -0
  83. package/dist/cjs/rest/admin/2026-01/fulfillment_request.js.map +1 -0
  84. package/dist/cjs/rest/admin/2026-01/fulfillment_service.js +67 -0
  85. package/dist/cjs/rest/admin/2026-01/fulfillment_service.js.map +1 -0
  86. package/dist/cjs/rest/admin/2026-01/gift_card.js +105 -0
  87. package/dist/cjs/rest/admin/2026-01/gift_card.js.map +1 -0
  88. package/dist/cjs/rest/admin/2026-01/gift_card_adjustment.js +58 -0
  89. package/dist/cjs/rest/admin/2026-01/gift_card_adjustment.js.map +1 -0
  90. package/dist/cjs/rest/admin/2026-01/image.js +77 -0
  91. package/dist/cjs/rest/admin/2026-01/image.js.map +1 -0
  92. package/dist/cjs/rest/admin/2026-01/index.js +155 -0
  93. package/dist/cjs/rest/admin/2026-01/index.js.map +1 -0
  94. package/dist/cjs/rest/admin/2026-01/inventory_item.js +54 -0
  95. package/dist/cjs/rest/admin/2026-01/inventory_item.js.map +1 -0
  96. package/dist/cjs/rest/admin/2026-01/inventory_level.js +87 -0
  97. package/dist/cjs/rest/admin/2026-01/inventory_level.js.map +1 -0
  98. package/dist/cjs/rest/admin/2026-01/location.js +85 -0
  99. package/dist/cjs/rest/admin/2026-01/location.js.map +1 -0
  100. package/dist/cjs/rest/admin/2026-01/locations_for_move.js +34 -0
  101. package/dist/cjs/rest/admin/2026-01/locations_for_move.js.map +1 -0
  102. package/dist/cjs/rest/admin/2026-01/marketing_event.js +98 -0
  103. package/dist/cjs/rest/admin/2026-01/marketing_event.js.map +1 -0
  104. package/dist/cjs/rest/admin/2026-01/metafield.js +154 -0
  105. package/dist/cjs/rest/admin/2026-01/metafield.js.map +1 -0
  106. package/dist/cjs/rest/admin/2026-01/mobile_platform_application.js +63 -0
  107. package/dist/cjs/rest/admin/2026-01/mobile_platform_application.js.map +1 -0
  108. package/dist/cjs/rest/admin/2026-01/order.js +202 -0
  109. package/dist/cjs/rest/admin/2026-01/order.js.map +1 -0
  110. package/dist/cjs/rest/admin/2026-01/order_risk.js +68 -0
  111. package/dist/cjs/rest/admin/2026-01/order_risk.js.map +1 -0
  112. package/dist/cjs/rest/admin/2026-01/page.js +83 -0
  113. package/dist/cjs/rest/admin/2026-01/page.js.map +1 -0
  114. package/dist/cjs/rest/admin/2026-01/payment.js +46 -0
  115. package/dist/cjs/rest/admin/2026-01/payment.js.map +1 -0
  116. package/dist/cjs/rest/admin/2026-01/payment_gateway.js +72 -0
  117. package/dist/cjs/rest/admin/2026-01/payment_gateway.js.map +1 -0
  118. package/dist/cjs/rest/admin/2026-01/payment_transaction.js +56 -0
  119. package/dist/cjs/rest/admin/2026-01/payment_transaction.js.map +1 -0
  120. package/dist/cjs/rest/admin/2026-01/payout.js +47 -0
  121. package/dist/cjs/rest/admin/2026-01/payout.js.map +1 -0
  122. package/dist/cjs/rest/admin/2026-01/policy.js +39 -0
  123. package/dist/cjs/rest/admin/2026-01/policy.js.map +1 -0
  124. package/dist/cjs/rest/admin/2026-01/price_rule.js +97 -0
  125. package/dist/cjs/rest/admin/2026-01/price_rule.js.map +1 -0
  126. package/dist/cjs/rest/admin/2026-01/product.js +89 -0
  127. package/dist/cjs/rest/admin/2026-01/product.js.map +1 -0
  128. package/dist/cjs/rest/admin/2026-01/product_listing.js +99 -0
  129. package/dist/cjs/rest/admin/2026-01/product_listing.js.map +1 -0
  130. package/dist/cjs/rest/admin/2026-01/product_resource_feedback.js +46 -0
  131. package/dist/cjs/rest/admin/2026-01/product_resource_feedback.js.map +1 -0
  132. package/dist/cjs/rest/admin/2026-01/province.js +65 -0
  133. package/dist/cjs/rest/admin/2026-01/province.js.map +1 -0
  134. package/dist/cjs/rest/admin/2026-01/recurring_application_charge.js +87 -0
  135. package/dist/cjs/rest/admin/2026-01/recurring_application_charge.js.map +1 -0
  136. package/dist/cjs/rest/admin/2026-01/redirect.js +71 -0
  137. package/dist/cjs/rest/admin/2026-01/redirect.js.map +1 -0
  138. package/dist/cjs/rest/admin/2026-01/refund.js +72 -0
  139. package/dist/cjs/rest/admin/2026-01/refund.js.map +1 -0
  140. package/dist/cjs/rest/admin/2026-01/resource_feedback.js +41 -0
  141. package/dist/cjs/rest/admin/2026-01/resource_feedback.js.map +1 -0
  142. package/dist/cjs/rest/admin/2026-01/script_tag.js +75 -0
  143. package/dist/cjs/rest/admin/2026-01/script_tag.js.map +1 -0
  144. package/dist/cjs/rest/admin/2026-01/shipping_zone.js +47 -0
  145. package/dist/cjs/rest/admin/2026-01/shipping_zone.js.map +1 -0
  146. package/dist/cjs/rest/admin/2026-01/shop.js +96 -0
  147. package/dist/cjs/rest/admin/2026-01/shop.js.map +1 -0
  148. package/dist/cjs/rest/admin/2026-01/smart_collection.js +93 -0
  149. package/dist/cjs/rest/admin/2026-01/smart_collection.js.map +1 -0
  150. package/dist/cjs/rest/admin/2026-01/storefront_access_token.js +50 -0
  151. package/dist/cjs/rest/admin/2026-01/storefront_access_token.js.map +1 -0
  152. package/dist/cjs/rest/admin/2026-01/tender_transaction.js +43 -0
  153. package/dist/cjs/rest/admin/2026-01/tender_transaction.js.map +1 -0
  154. package/dist/cjs/rest/admin/2026-01/theme.js +64 -0
  155. package/dist/cjs/rest/admin/2026-01/theme.js.map +1 -0
  156. package/dist/cjs/rest/admin/2026-01/transaction.js +83 -0
  157. package/dist/cjs/rest/admin/2026-01/transaction.js.map +1 -0
  158. package/dist/cjs/rest/admin/2026-01/usage_charge.js +53 -0
  159. package/dist/cjs/rest/admin/2026-01/usage_charge.js.map +1 -0
  160. package/dist/cjs/rest/admin/2026-01/user.js +69 -0
  161. package/dist/cjs/rest/admin/2026-01/user.js.map +1 -0
  162. package/dist/cjs/rest/admin/2026-01/variant.js +96 -0
  163. package/dist/cjs/rest/admin/2026-01/variant.js.map +1 -0
  164. package/dist/cjs/rest/admin/2026-01/webhook.js +78 -0
  165. package/dist/cjs/rest/admin/2026-01/webhook.js.map +1 -0
  166. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
  167. package/dist/esm/lib/auth/index.mjs +4 -0
  168. package/dist/esm/lib/auth/index.mjs.map +1 -1
  169. package/dist/esm/lib/auth/oauth/create-session.mjs +6 -1
  170. package/dist/esm/lib/auth/oauth/create-session.mjs.map +1 -1
  171. package/dist/esm/lib/auth/oauth/migrate-to-expiring-token.mjs +45 -0
  172. package/dist/esm/lib/auth/oauth/migrate-to-expiring-token.mjs.map +1 -0
  173. package/dist/esm/lib/auth/oauth/oauth.mjs +2 -1
  174. package/dist/esm/lib/auth/oauth/oauth.mjs.map +1 -1
  175. package/dist/esm/lib/auth/oauth/refresh-token.mjs +41 -0
  176. package/dist/esm/lib/auth/oauth/refresh-token.mjs.map +1 -0
  177. package/dist/esm/lib/auth/oauth/token-exchange.mjs +2 -1
  178. package/dist/esm/lib/auth/oauth/token-exchange.mjs.map +1 -1
  179. package/dist/esm/lib/auth/oauth/types.mjs.map +1 -1
  180. package/dist/esm/lib/session/session.mjs +28 -0
  181. package/dist/esm/lib/session/session.mjs.map +1 -1
  182. package/dist/esm/lib/types.mjs +1 -0
  183. package/dist/esm/lib/types.mjs.map +1 -1
  184. package/dist/esm/lib/version.mjs +1 -1
  185. package/dist/esm/lib/version.mjs.map +1 -1
  186. package/dist/esm/rest/admin/2026-01/abandoned_checkout.mjs +83 -0
  187. package/dist/esm/rest/admin/2026-01/abandoned_checkout.mjs.map +1 -0
  188. package/dist/esm/rest/admin/2026-01/access_scope.mjs +34 -0
  189. package/dist/esm/rest/admin/2026-01/access_scope.mjs.map +1 -0
  190. package/dist/esm/rest/admin/2026-01/apple_pay_certificate.mjs +60 -0
  191. package/dist/esm/rest/admin/2026-01/apple_pay_certificate.mjs.map +1 -0
  192. package/dist/esm/rest/admin/2026-01/application_charge.mjs +54 -0
  193. package/dist/esm/rest/admin/2026-01/application_charge.mjs.map +1 -0
  194. package/dist/esm/rest/admin/2026-01/application_credit.mjs +48 -0
  195. package/dist/esm/rest/admin/2026-01/application_credit.mjs.map +1 -0
  196. package/dist/esm/rest/admin/2026-01/article.mjs +112 -0
  197. package/dist/esm/rest/admin/2026-01/article.mjs.map +1 -0
  198. package/dist/esm/rest/admin/2026-01/asset.mjs +55 -0
  199. package/dist/esm/rest/admin/2026-01/asset.mjs.map +1 -0
  200. package/dist/esm/rest/admin/2026-01/assigned_fulfillment_order.mjs +39 -0
  201. package/dist/esm/rest/admin/2026-01/assigned_fulfillment_order.mjs.map +1 -0
  202. package/dist/esm/rest/admin/2026-01/balance.mjs +32 -0
  203. package/dist/esm/rest/admin/2026-01/balance.mjs.map +1 -0
  204. package/dist/esm/rest/admin/2026-01/blog.mjs +81 -0
  205. package/dist/esm/rest/admin/2026-01/blog.mjs.map +1 -0
  206. package/dist/esm/rest/admin/2026-01/cancellation_request.mjs +50 -0
  207. package/dist/esm/rest/admin/2026-01/cancellation_request.mjs.map +1 -0
  208. package/dist/esm/rest/admin/2026-01/carrier_service.mjs +61 -0
  209. package/dist/esm/rest/admin/2026-01/carrier_service.mjs.map +1 -0
  210. package/dist/esm/rest/admin/2026-01/checkout.mjs +101 -0
  211. package/dist/esm/rest/admin/2026-01/checkout.mjs.map +1 -0
  212. package/dist/esm/rest/admin/2026-01/collect.mjs +72 -0
  213. package/dist/esm/rest/admin/2026-01/collect.mjs.map +1 -0
  214. package/dist/esm/rest/admin/2026-01/collection.mjs +57 -0
  215. package/dist/esm/rest/admin/2026-01/collection.mjs.map +1 -0
  216. package/dist/esm/rest/admin/2026-01/collection_listing.mjs +78 -0
  217. package/dist/esm/rest/admin/2026-01/collection_listing.mjs.map +1 -0
  218. package/dist/esm/rest/admin/2026-01/comment.mjs +133 -0
  219. package/dist/esm/rest/admin/2026-01/comment.mjs.map +1 -0
  220. package/dist/esm/rest/admin/2026-01/country.mjs +74 -0
  221. package/dist/esm/rest/admin/2026-01/country.mjs.map +1 -0
  222. package/dist/esm/rest/admin/2026-01/currency.mjs +33 -0
  223. package/dist/esm/rest/admin/2026-01/currency.mjs.map +1 -0
  224. package/dist/esm/rest/admin/2026-01/custom_collection.mjs +77 -0
  225. package/dist/esm/rest/admin/2026-01/custom_collection.mjs.map +1 -0
  226. package/dist/esm/rest/admin/2026-01/customer.mjs +148 -0
  227. package/dist/esm/rest/admin/2026-01/customer.mjs.map +1 -0
  228. package/dist/esm/rest/admin/2026-01/deprecated_api_call.mjs +33 -0
  229. package/dist/esm/rest/admin/2026-01/deprecated_api_call.mjs.map +1 -0
  230. package/dist/esm/rest/admin/2026-01/discount_code.mjs +113 -0
  231. package/dist/esm/rest/admin/2026-01/discount_code.mjs.map +1 -0
  232. package/dist/esm/rest/admin/2026-01/dispute.mjs +51 -0
  233. package/dist/esm/rest/admin/2026-01/dispute.mjs.map +1 -0
  234. package/dist/esm/rest/admin/2026-01/dispute_evidence.mjs +55 -0
  235. package/dist/esm/rest/admin/2026-01/dispute_evidence.mjs.map +1 -0
  236. package/dist/esm/rest/admin/2026-01/dispute_file_upload.mjs +43 -0
  237. package/dist/esm/rest/admin/2026-01/dispute_file_upload.mjs.map +1 -0
  238. package/dist/esm/rest/admin/2026-01/draft_order.mjs +124 -0
  239. package/dist/esm/rest/admin/2026-01/draft_order.mjs.map +1 -0
  240. package/dist/esm/rest/admin/2026-01/event.mjs +65 -0
  241. package/dist/esm/rest/admin/2026-01/event.mjs.map +1 -0
  242. package/dist/esm/rest/admin/2026-01/fulfillment.mjs +100 -0
  243. package/dist/esm/rest/admin/2026-01/fulfillment.mjs.map +1 -0
  244. package/dist/esm/rest/admin/2026-01/fulfillment_event.mjs +77 -0
  245. package/dist/esm/rest/admin/2026-01/fulfillment_event.mjs.map +1 -0
  246. package/dist/esm/rest/admin/2026-01/fulfillment_order.mjs +162 -0
  247. package/dist/esm/rest/admin/2026-01/fulfillment_order.mjs.map +1 -0
  248. package/dist/esm/rest/admin/2026-01/fulfillment_request.mjs +59 -0
  249. package/dist/esm/rest/admin/2026-01/fulfillment_request.mjs.map +1 -0
  250. package/dist/esm/rest/admin/2026-01/fulfillment_service.mjs +65 -0
  251. package/dist/esm/rest/admin/2026-01/fulfillment_service.mjs.map +1 -0
  252. package/dist/esm/rest/admin/2026-01/gift_card.mjs +103 -0
  253. package/dist/esm/rest/admin/2026-01/gift_card.mjs.map +1 -0
  254. package/dist/esm/rest/admin/2026-01/gift_card_adjustment.mjs +56 -0
  255. package/dist/esm/rest/admin/2026-01/gift_card_adjustment.mjs.map +1 -0
  256. package/dist/esm/rest/admin/2026-01/image.mjs +75 -0
  257. package/dist/esm/rest/admin/2026-01/image.mjs.map +1 -0
  258. package/dist/esm/rest/admin/2026-01/index.mjs +153 -0
  259. package/dist/esm/rest/admin/2026-01/index.mjs.map +1 -0
  260. package/dist/esm/rest/admin/2026-01/inventory_item.mjs +52 -0
  261. package/dist/esm/rest/admin/2026-01/inventory_item.mjs.map +1 -0
  262. package/dist/esm/rest/admin/2026-01/inventory_level.mjs +85 -0
  263. package/dist/esm/rest/admin/2026-01/inventory_level.mjs.map +1 -0
  264. package/dist/esm/rest/admin/2026-01/location.mjs +83 -0
  265. package/dist/esm/rest/admin/2026-01/location.mjs.map +1 -0
  266. package/dist/esm/rest/admin/2026-01/locations_for_move.mjs +32 -0
  267. package/dist/esm/rest/admin/2026-01/locations_for_move.mjs.map +1 -0
  268. package/dist/esm/rest/admin/2026-01/marketing_event.mjs +96 -0
  269. package/dist/esm/rest/admin/2026-01/marketing_event.mjs.map +1 -0
  270. package/dist/esm/rest/admin/2026-01/metafield.mjs +152 -0
  271. package/dist/esm/rest/admin/2026-01/metafield.mjs.map +1 -0
  272. package/dist/esm/rest/admin/2026-01/mobile_platform_application.mjs +61 -0
  273. package/dist/esm/rest/admin/2026-01/mobile_platform_application.mjs.map +1 -0
  274. package/dist/esm/rest/admin/2026-01/order.mjs +200 -0
  275. package/dist/esm/rest/admin/2026-01/order.mjs.map +1 -0
  276. package/dist/esm/rest/admin/2026-01/order_risk.mjs +66 -0
  277. package/dist/esm/rest/admin/2026-01/order_risk.mjs.map +1 -0
  278. package/dist/esm/rest/admin/2026-01/page.mjs +81 -0
  279. package/dist/esm/rest/admin/2026-01/page.mjs.map +1 -0
  280. package/dist/esm/rest/admin/2026-01/payment.mjs +44 -0
  281. package/dist/esm/rest/admin/2026-01/payment.mjs.map +1 -0
  282. package/dist/esm/rest/admin/2026-01/payment_gateway.mjs +70 -0
  283. package/dist/esm/rest/admin/2026-01/payment_gateway.mjs.map +1 -0
  284. package/dist/esm/rest/admin/2026-01/payment_transaction.mjs +54 -0
  285. package/dist/esm/rest/admin/2026-01/payment_transaction.mjs.map +1 -0
  286. package/dist/esm/rest/admin/2026-01/payout.mjs +45 -0
  287. package/dist/esm/rest/admin/2026-01/payout.mjs.map +1 -0
  288. package/dist/esm/rest/admin/2026-01/policy.mjs +37 -0
  289. package/dist/esm/rest/admin/2026-01/policy.mjs.map +1 -0
  290. package/dist/esm/rest/admin/2026-01/price_rule.mjs +95 -0
  291. package/dist/esm/rest/admin/2026-01/price_rule.mjs.map +1 -0
  292. package/dist/esm/rest/admin/2026-01/product.mjs +87 -0
  293. package/dist/esm/rest/admin/2026-01/product.mjs.map +1 -0
  294. package/dist/esm/rest/admin/2026-01/product_listing.mjs +97 -0
  295. package/dist/esm/rest/admin/2026-01/product_listing.mjs.map +1 -0
  296. package/dist/esm/rest/admin/2026-01/product_resource_feedback.mjs +44 -0
  297. package/dist/esm/rest/admin/2026-01/product_resource_feedback.mjs.map +1 -0
  298. package/dist/esm/rest/admin/2026-01/province.mjs +63 -0
  299. package/dist/esm/rest/admin/2026-01/province.mjs.map +1 -0
  300. package/dist/esm/rest/admin/2026-01/recurring_application_charge.mjs +85 -0
  301. package/dist/esm/rest/admin/2026-01/recurring_application_charge.mjs.map +1 -0
  302. package/dist/esm/rest/admin/2026-01/redirect.mjs +69 -0
  303. package/dist/esm/rest/admin/2026-01/redirect.mjs.map +1 -0
  304. package/dist/esm/rest/admin/2026-01/refund.mjs +70 -0
  305. package/dist/esm/rest/admin/2026-01/refund.mjs.map +1 -0
  306. package/dist/esm/rest/admin/2026-01/resource_feedback.mjs +39 -0
  307. package/dist/esm/rest/admin/2026-01/resource_feedback.mjs.map +1 -0
  308. package/dist/esm/rest/admin/2026-01/script_tag.mjs +73 -0
  309. package/dist/esm/rest/admin/2026-01/script_tag.mjs.map +1 -0
  310. package/dist/esm/rest/admin/2026-01/shipping_zone.mjs +45 -0
  311. package/dist/esm/rest/admin/2026-01/shipping_zone.mjs.map +1 -0
  312. package/dist/esm/rest/admin/2026-01/shop.mjs +94 -0
  313. package/dist/esm/rest/admin/2026-01/shop.mjs.map +1 -0
  314. package/dist/esm/rest/admin/2026-01/smart_collection.mjs +91 -0
  315. package/dist/esm/rest/admin/2026-01/smart_collection.mjs.map +1 -0
  316. package/dist/esm/rest/admin/2026-01/storefront_access_token.mjs +48 -0
  317. package/dist/esm/rest/admin/2026-01/storefront_access_token.mjs.map +1 -0
  318. package/dist/esm/rest/admin/2026-01/tender_transaction.mjs +41 -0
  319. package/dist/esm/rest/admin/2026-01/tender_transaction.mjs.map +1 -0
  320. package/dist/esm/rest/admin/2026-01/theme.mjs +62 -0
  321. package/dist/esm/rest/admin/2026-01/theme.mjs.map +1 -0
  322. package/dist/esm/rest/admin/2026-01/transaction.mjs +81 -0
  323. package/dist/esm/rest/admin/2026-01/transaction.mjs.map +1 -0
  324. package/dist/esm/rest/admin/2026-01/usage_charge.mjs +51 -0
  325. package/dist/esm/rest/admin/2026-01/usage_charge.mjs.map +1 -0
  326. package/dist/esm/rest/admin/2026-01/user.mjs +67 -0
  327. package/dist/esm/rest/admin/2026-01/user.mjs.map +1 -0
  328. package/dist/esm/rest/admin/2026-01/variant.mjs +94 -0
  329. package/dist/esm/rest/admin/2026-01/variant.mjs.map +1 -0
  330. package/dist/esm/rest/admin/2026-01/webhook.mjs +76 -0
  331. package/dist/esm/rest/admin/2026-01/webhook.mjs.map +1 -0
  332. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  333. package/dist/ts/lib/auth/index.d.ts +4 -0
  334. package/dist/ts/lib/auth/index.d.ts.map +1 -1
  335. package/dist/ts/lib/auth/oauth/create-session.d.ts.map +1 -1
  336. package/dist/ts/lib/auth/oauth/migrate-to-expiring-token.d.ts +11 -0
  337. package/dist/ts/lib/auth/oauth/migrate-to-expiring-token.d.ts.map +1 -0
  338. package/dist/ts/lib/auth/oauth/oauth.d.ts.map +1 -1
  339. package/dist/ts/lib/auth/oauth/refresh-token.d.ts +11 -0
  340. package/dist/ts/lib/auth/oauth/refresh-token.d.ts.map +1 -0
  341. package/dist/ts/lib/auth/oauth/token-exchange.d.ts +1 -0
  342. package/dist/ts/lib/auth/oauth/token-exchange.d.ts.map +1 -1
  343. package/dist/ts/lib/auth/oauth/types.d.ts +13 -0
  344. package/dist/ts/lib/auth/oauth/types.d.ts.map +1 -1
  345. package/dist/ts/lib/session/session.d.ts +8 -0
  346. package/dist/ts/lib/session/session.d.ts.map +1 -1
  347. package/dist/ts/lib/session/types.d.ts +8 -0
  348. package/dist/ts/lib/session/types.d.ts.map +1 -1
  349. package/dist/ts/lib/types.d.ts +1 -0
  350. package/dist/ts/lib/types.d.ts.map +1 -1
  351. package/dist/ts/lib/version.d.ts +1 -1
  352. package/dist/ts/rest/admin/2026-01/abandoned_checkout.d.ts +90 -0
  353. package/dist/ts/rest/admin/2026-01/abandoned_checkout.d.ts.map +1 -0
  354. package/dist/ts/rest/admin/2026-01/access_scope.d.ts +30 -0
  355. package/dist/ts/rest/admin/2026-01/access_scope.d.ts.map +1 -0
  356. package/dist/ts/rest/admin/2026-01/apple_pay_certificate.d.ts +39 -0
  357. package/dist/ts/rest/admin/2026-01/apple_pay_certificate.d.ts.map +1 -0
  358. package/dist/ts/rest/admin/2026-01/application_charge.d.ts +46 -0
  359. package/dist/ts/rest/admin/2026-01/application_charge.d.ts.map +1 -0
  360. package/dist/ts/rest/admin/2026-01/application_credit.d.ts +40 -0
  361. package/dist/ts/rest/admin/2026-01/application_credit.d.ts.map +1 -0
  362. package/dist/ts/rest/admin/2026-01/article.d.ts +99 -0
  363. package/dist/ts/rest/admin/2026-01/article.d.ts.map +1 -0
  364. package/dist/ts/rest/admin/2026-01/asset.d.ts +49 -0
  365. package/dist/ts/rest/admin/2026-01/asset.d.ts.map +1 -0
  366. package/dist/ts/rest/admin/2026-01/assigned_fulfillment_order.d.ts +39 -0
  367. package/dist/ts/rest/admin/2026-01/assigned_fulfillment_order.d.ts.map +1 -0
  368. package/dist/ts/rest/admin/2026-01/balance.d.ts +28 -0
  369. package/dist/ts/rest/admin/2026-01/balance.d.ts.map +1 -0
  370. package/dist/ts/rest/admin/2026-01/blog.d.ts +60 -0
  371. package/dist/ts/rest/admin/2026-01/blog.d.ts.map +1 -0
  372. package/dist/ts/rest/admin/2026-01/cancellation_request.d.ts +36 -0
  373. package/dist/ts/rest/admin/2026-01/cancellation_request.d.ts.map +1 -0
  374. package/dist/ts/rest/admin/2026-01/carrier_service.d.ts +43 -0
  375. package/dist/ts/rest/admin/2026-01/carrier_service.d.ts.map +1 -0
  376. package/dist/ts/rest/admin/2026-01/checkout.d.ts +95 -0
  377. package/dist/ts/rest/admin/2026-01/checkout.d.ts.map +1 -0
  378. package/dist/ts/rest/admin/2026-01/collect.d.ts +51 -0
  379. package/dist/ts/rest/admin/2026-01/collect.d.ts.map +1 -0
  380. package/dist/ts/rest/admin/2026-01/collection.d.ts +46 -0
  381. package/dist/ts/rest/admin/2026-01/collection.d.ts.map +1 -0
  382. package/dist/ts/rest/admin/2026-01/collection_listing.d.ts +58 -0
  383. package/dist/ts/rest/admin/2026-01/collection_listing.d.ts.map +1 -0
  384. package/dist/ts/rest/admin/2026-01/comment.d.ts +103 -0
  385. package/dist/ts/rest/admin/2026-01/comment.d.ts.map +1 -0
  386. package/dist/ts/rest/admin/2026-01/country.d.ts +51 -0
  387. package/dist/ts/rest/admin/2026-01/country.d.ts.map +1 -0
  388. package/dist/ts/rest/admin/2026-01/currency.d.ts +27 -0
  389. package/dist/ts/rest/admin/2026-01/currency.d.ts.map +1 -0
  390. package/dist/ts/rest/admin/2026-01/custom_collection.d.ts +73 -0
  391. package/dist/ts/rest/admin/2026-01/custom_collection.d.ts.map +1 -0
  392. package/dist/ts/rest/admin/2026-01/customer.d.ts +121 -0
  393. package/dist/ts/rest/admin/2026-01/customer.d.ts.map +1 -0
  394. package/dist/ts/rest/admin/2026-01/deprecated_api_call.d.ts +29 -0
  395. package/dist/ts/rest/admin/2026-01/deprecated_api_call.d.ts.map +1 -0
  396. package/dist/ts/rest/admin/2026-01/discount_code.d.ts +76 -0
  397. package/dist/ts/rest/admin/2026-01/discount_code.d.ts.map +1 -0
  398. package/dist/ts/rest/admin/2026-01/dispute.d.ts +45 -0
  399. package/dist/ts/rest/admin/2026-01/dispute.d.ts.map +1 -0
  400. package/dist/ts/rest/admin/2026-01/dispute_evidence.d.ts +56 -0
  401. package/dist/ts/rest/admin/2026-01/dispute_evidence.d.ts.map +1 -0
  402. package/dist/ts/rest/admin/2026-01/dispute_file_upload.d.ts +35 -0
  403. package/dist/ts/rest/admin/2026-01/dispute_file_upload.d.ts.map +1 -0
  404. package/dist/ts/rest/admin/2026-01/draft_order.d.ts +116 -0
  405. package/dist/ts/rest/admin/2026-01/draft_order.d.ts.map +1 -0
  406. package/dist/ts/rest/admin/2026-01/event.d.ts +57 -0
  407. package/dist/ts/rest/admin/2026-01/event.d.ts.map +1 -0
  408. package/dist/ts/rest/admin/2026-01/fulfillment.d.ts +92 -0
  409. package/dist/ts/rest/admin/2026-01/fulfillment.d.ts.map +1 -0
  410. package/dist/ts/rest/admin/2026-01/fulfillment_event.d.ts +66 -0
  411. package/dist/ts/rest/admin/2026-01/fulfillment_event.d.ts.map +1 -0
  412. package/dist/ts/rest/admin/2026-01/fulfillment_order.d.ts +129 -0
  413. package/dist/ts/rest/admin/2026-01/fulfillment_order.d.ts.map +1 -0
  414. package/dist/ts/rest/admin/2026-01/fulfillment_request.d.ts +47 -0
  415. package/dist/ts/rest/admin/2026-01/fulfillment_request.d.ts.map +1 -0
  416. package/dist/ts/rest/admin/2026-01/fulfillment_service.d.ts +48 -0
  417. package/dist/ts/rest/admin/2026-01/fulfillment_service.d.ts.map +1 -0
  418. package/dist/ts/rest/admin/2026-01/gift_card.d.ts +83 -0
  419. package/dist/ts/rest/admin/2026-01/gift_card.d.ts.map +1 -0
  420. package/dist/ts/rest/admin/2026-01/gift_card_adjustment.d.ts +45 -0
  421. package/dist/ts/rest/admin/2026-01/gift_card_adjustment.d.ts.map +1 -0
  422. package/dist/ts/rest/admin/2026-01/image.d.ts +57 -0
  423. package/dist/ts/rest/admin/2026-01/image.d.ts.map +1 -0
  424. package/dist/ts/rest/admin/2026-01/index.d.ts +152 -0
  425. package/dist/ts/rest/admin/2026-01/index.d.ts.map +1 -0
  426. package/dist/ts/rest/admin/2026-01/inventory_item.d.ts +45 -0
  427. package/dist/ts/rest/admin/2026-01/inventory_item.d.ts.map +1 -0
  428. package/dist/ts/rest/admin/2026-01/inventory_level.d.ts +70 -0
  429. package/dist/ts/rest/admin/2026-01/inventory_level.d.ts.map +1 -0
  430. package/dist/ts/rest/admin/2026-01/location.d.ts +59 -0
  431. package/dist/ts/rest/admin/2026-01/location.d.ts.map +1 -0
  432. package/dist/ts/rest/admin/2026-01/locations_for_move.d.ts +29 -0
  433. package/dist/ts/rest/admin/2026-01/locations_for_move.d.ts.map +1 -0
  434. package/dist/ts/rest/admin/2026-01/marketing_event.d.ts +79 -0
  435. package/dist/ts/rest/admin/2026-01/marketing_event.d.ts.map +1 -0
  436. package/dist/ts/rest/admin/2026-01/metafield.d.ts +111 -0
  437. package/dist/ts/rest/admin/2026-01/metafield.d.ts.map +1 -0
  438. package/dist/ts/rest/admin/2026-01/mobile_platform_application.d.ts +43 -0
  439. package/dist/ts/rest/admin/2026-01/mobile_platform_application.d.ts.map +1 -0
  440. package/dist/ts/rest/admin/2026-01/order.d.ts +239 -0
  441. package/dist/ts/rest/admin/2026-01/order.d.ts.map +1 -0
  442. package/dist/ts/rest/admin/2026-01/order_risk.d.ts +49 -0
  443. package/dist/ts/rest/admin/2026-01/order_risk.d.ts.map +1 -0
  444. package/dist/ts/rest/admin/2026-01/page.d.ts +76 -0
  445. package/dist/ts/rest/admin/2026-01/page.d.ts.map +1 -0
  446. package/dist/ts/rest/admin/2026-01/payment.d.ts +43 -0
  447. package/dist/ts/rest/admin/2026-01/payment.d.ts.map +1 -0
  448. package/dist/ts/rest/admin/2026-01/payment_gateway.d.ts +52 -0
  449. package/dist/ts/rest/admin/2026-01/payment_gateway.d.ts.map +1 -0
  450. package/dist/ts/rest/admin/2026-01/payment_transaction.d.ts +51 -0
  451. package/dist/ts/rest/admin/2026-01/payment_transaction.d.ts.map +1 -0
  452. package/dist/ts/rest/admin/2026-01/payout.d.ts +41 -0
  453. package/dist/ts/rest/admin/2026-01/payout.d.ts.map +1 -0
  454. package/dist/ts/rest/admin/2026-01/policy.d.ts +31 -0
  455. package/dist/ts/rest/admin/2026-01/policy.d.ts.map +1 -0
  456. package/dist/ts/rest/admin/2026-01/price_rule.d.ts +90 -0
  457. package/dist/ts/rest/admin/2026-01/price_rule.d.ts.map +1 -0
  458. package/dist/ts/rest/admin/2026-01/product.d.ts +95 -0
  459. package/dist/ts/rest/admin/2026-01/product.d.ts.map +1 -0
  460. package/dist/ts/rest/admin/2026-01/product_listing.d.ts +73 -0
  461. package/dist/ts/rest/admin/2026-01/product_listing.d.ts.map +1 -0
  462. package/dist/ts/rest/admin/2026-01/product_resource_feedback.d.ts +36 -0
  463. package/dist/ts/rest/admin/2026-01/product_resource_feedback.d.ts.map +1 -0
  464. package/dist/ts/rest/admin/2026-01/province.d.ts +50 -0
  465. package/dist/ts/rest/admin/2026-01/province.d.ts.map +1 -0
  466. package/dist/ts/rest/admin/2026-01/recurring_application_charge.d.ts +65 -0
  467. package/dist/ts/rest/admin/2026-01/recurring_application_charge.d.ts.map +1 -0
  468. package/dist/ts/rest/admin/2026-01/redirect.d.ts +51 -0
  469. package/dist/ts/rest/admin/2026-01/redirect.d.ts.map +1 -0
  470. package/dist/ts/rest/admin/2026-01/refund.d.ts +73 -0
  471. package/dist/ts/rest/admin/2026-01/refund.d.ts.map +1 -0
  472. package/dist/ts/rest/admin/2026-01/resource_feedback.d.ts +32 -0
  473. package/dist/ts/rest/admin/2026-01/resource_feedback.d.ts.map +1 -0
  474. package/dist/ts/rest/admin/2026-01/script_tag.d.ts +57 -0
  475. package/dist/ts/rest/admin/2026-01/script_tag.d.ts.map +1 -0
  476. package/dist/ts/rest/admin/2026-01/shipping_zone.d.ts +45 -0
  477. package/dist/ts/rest/admin/2026-01/shipping_zone.d.ts.map +1 -0
  478. package/dist/ts/rest/admin/2026-01/shop.d.ts +82 -0
  479. package/dist/ts/rest/admin/2026-01/shop.d.ts.map +1 -0
  480. package/dist/ts/rest/admin/2026-01/smart_collection.d.ts +87 -0
  481. package/dist/ts/rest/admin/2026-01/smart_collection.d.ts.map +1 -0
  482. package/dist/ts/rest/admin/2026-01/storefront_access_token.d.ts +35 -0
  483. package/dist/ts/rest/admin/2026-01/storefront_access_token.d.ts.map +1 -0
  484. package/dist/ts/rest/admin/2026-01/tender_transaction.d.ts +43 -0
  485. package/dist/ts/rest/admin/2026-01/tender_transaction.d.ts.map +1 -0
  486. package/dist/ts/rest/admin/2026-01/theme.d.ts +46 -0
  487. package/dist/ts/rest/admin/2026-01/theme.d.ts.map +1 -0
  488. package/dist/ts/rest/admin/2026-01/transaction.d.ts +82 -0
  489. package/dist/ts/rest/admin/2026-01/transaction.d.ts.map +1 -0
  490. package/dist/ts/rest/admin/2026-01/usage_charge.d.ts +44 -0
  491. package/dist/ts/rest/admin/2026-01/usage_charge.d.ts.map +1 -0
  492. package/dist/ts/rest/admin/2026-01/user.d.ts +51 -0
  493. package/dist/ts/rest/admin/2026-01/user.d.ts.map +1 -0
  494. package/dist/ts/rest/admin/2026-01/variant.d.ts +78 -0
  495. package/dist/ts/rest/admin/2026-01/variant.d.ts.map +1 -0
  496. package/dist/ts/rest/admin/2026-01/webhook.d.ts +62 -0
  497. package/dist/ts/rest/admin/2026-01/webhook.d.ts.map +1 -0
  498. package/dist/ts/tsconfig.build.tsbuildinfo +1 -1
  499. package/package.json +7 -7
@@ -4,6 +4,8 @@ import { safeCompare } from './oauth/safe-compare.mjs';
4
4
  import { buildEmbeddedAppUrl, getEmbeddedAppUrl } from './get-embedded-app-url.mjs';
5
5
  import { tokenExchange } from './oauth/token-exchange.mjs';
6
6
  import { clientCredentials } from './oauth/client-credentials.mjs';
7
+ import { refreshToken } from './oauth/refresh-token.mjs';
8
+ import { migrateToExpiringToken } from './oauth/migrate-to-expiring-token.mjs';
7
9
 
8
10
  function shopifyAuth(config) {
9
11
  const shopify = {
@@ -14,6 +16,8 @@ function shopifyAuth(config) {
14
16
  getEmbeddedAppUrl: getEmbeddedAppUrl(config),
15
17
  buildEmbeddedAppUrl: buildEmbeddedAppUrl(config),
16
18
  tokenExchange: tokenExchange(config),
19
+ migrateToExpiringToken: migrateToExpiringToken(config),
20
+ refreshToken: refreshToken(config),
17
21
  clientCredentials: clientCredentials(config),
18
22
  };
19
23
  return shopify;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../lib/auth/index.ts"],"sourcesContent":["import {ConfigInterface} from '../base-types';\n\nimport {OAuthBegin, OAuthCallback, begin, callback} from './oauth/oauth';\nimport {Nonce, nonce} from './oauth/nonce';\nimport {SafeCompare, safeCompare} from './oauth/safe-compare';\nimport {\n getEmbeddedAppUrl,\n buildEmbeddedAppUrl,\n GetEmbeddedAppUrl,\n BuildEmbeddedAppUrl,\n} from './get-embedded-app-url';\nimport {TokenExchange, tokenExchange} from './oauth/token-exchange';\nimport {ClientCredentials, clientCredentials} from './oauth/client-credentials';\n\nexport {AuthScopes} from './scopes';\n\nexport function shopifyAuth<Config extends ConfigInterface>(\n config: Config,\n): ShopifyAuth {\n const shopify = {\n begin: begin(config),\n callback: callback(config),\n nonce,\n safeCompare,\n getEmbeddedAppUrl: getEmbeddedAppUrl(config),\n buildEmbeddedAppUrl: buildEmbeddedAppUrl(config),\n tokenExchange: tokenExchange(config),\n clientCredentials: clientCredentials(config),\n } as ShopifyAuth;\n\n return shopify;\n}\n\nexport interface ShopifyAuth {\n begin: OAuthBegin;\n callback: OAuthCallback;\n nonce: Nonce;\n safeCompare: SafeCompare;\n getEmbeddedAppUrl: GetEmbeddedAppUrl;\n buildEmbeddedAppUrl: BuildEmbeddedAppUrl;\n tokenExchange: TokenExchange;\n clientCredentials: ClientCredentials;\n}\n"],"names":[],"mappings":";;;;;;;AAgBM,SAAU,WAAW,CACzB,MAAc,EAAA;AAEd,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;AACpB,QAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC1B,KAAK;QACL,WAAW;AACX,QAAA,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC;AAC5C,QAAA,mBAAmB,EAAE,mBAAmB,CAAC,MAAM,CAAC;AAChD,QAAA,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC;AACpC,QAAA,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC;KAC9B;AAEhB,IAAA,OAAO,OAAO;AAChB;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../lib/auth/index.ts"],"sourcesContent":["import {ConfigInterface} from '../base-types';\n\nimport {OAuthBegin, OAuthCallback, begin, callback} from './oauth/oauth';\nimport {Nonce, nonce} from './oauth/nonce';\nimport {SafeCompare, safeCompare} from './oauth/safe-compare';\nimport {\n getEmbeddedAppUrl,\n buildEmbeddedAppUrl,\n GetEmbeddedAppUrl,\n BuildEmbeddedAppUrl,\n} from './get-embedded-app-url';\nimport {TokenExchange, tokenExchange} from './oauth/token-exchange';\nimport {ClientCredentials, clientCredentials} from './oauth/client-credentials';\nimport {RefreshToken, refreshToken} from './oauth/refresh-token';\nimport {\n migrateToExpiringToken,\n MigrateToExpiringToken,\n} from './oauth/migrate-to-expiring-token';\n\nexport {AuthScopes} from './scopes';\n\nexport function shopifyAuth<Config extends ConfigInterface>(\n config: Config,\n): ShopifyAuth {\n const shopify = {\n begin: begin(config),\n callback: callback(config),\n nonce,\n safeCompare,\n getEmbeddedAppUrl: getEmbeddedAppUrl(config),\n buildEmbeddedAppUrl: buildEmbeddedAppUrl(config),\n tokenExchange: tokenExchange(config),\n migrateToExpiringToken: migrateToExpiringToken(config),\n refreshToken: refreshToken(config),\n clientCredentials: clientCredentials(config),\n } as ShopifyAuth;\n\n return shopify;\n}\n\nexport interface ShopifyAuth {\n begin: OAuthBegin;\n callback: OAuthCallback;\n nonce: Nonce;\n safeCompare: SafeCompare;\n getEmbeddedAppUrl: GetEmbeddedAppUrl;\n buildEmbeddedAppUrl: BuildEmbeddedAppUrl;\n tokenExchange: TokenExchange;\n migrateToExpiringToken: MigrateToExpiringToken;\n refreshToken: RefreshToken;\n clientCredentials: ClientCredentials;\n}\n"],"names":[],"mappings":";;;;;;;;;AAqBM,SAAU,WAAW,CACzB,MAAc,EAAA;AAEd,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;AACpB,QAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;QAC1B,KAAK;QACL,WAAW;AACX,QAAA,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC;AAC5C,QAAA,mBAAmB,EAAE,mBAAmB,CAAC,MAAM,CAAC;AAChD,QAAA,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC;AACpC,QAAA,sBAAsB,EAAE,sBAAsB,CAAC,MAAM,CAAC;AACtD,QAAA,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;AAClC,QAAA,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,CAAC;KAC9B;AAEhB,IAAA,OAAO,OAAO;AAChB;;;;"}
@@ -20,10 +20,15 @@ function createSession({ config, accessTokenResponse, shop, state, }) {
20
20
  };
21
21
  };
22
22
  const getOfflineSessionProperties = (responseBody) => {
23
- const { expires_in } = responseBody;
23
+ const { expires_in, refresh_token, refresh_token_expires_in } = responseBody;
24
24
  return {
25
25
  id: getOfflineId(config)(shop),
26
26
  ...(expires_in && { expires: getSessionExpiration(expires_in) }),
27
+ ...(refresh_token &&
28
+ refresh_token_expires_in && {
29
+ refreshToken: refresh_token,
30
+ refreshTokenExpires: getSessionExpiration(refresh_token_expires_in),
31
+ }),
27
32
  };
28
33
  };
29
34
  return new Session({
@@ -1 +1 @@
1
- {"version":3,"file":"create-session.mjs","sources":["../../../../../../../lib/auth/oauth/create-session.ts"],"sourcesContent":["import {Session} from '../../session/session';\nimport {ConfigInterface} from '../../base-types';\nimport {logger} from '../../logger';\nimport {getJwtSessionId, getOfflineId} from '../../session/session-utils';\n\nimport {\n AccessTokenResponse,\n OnlineAccessResponse,\n OnlineAccessInfo,\n OfflineAccessResponse,\n} from './types';\n\nexport function createSession({\n config,\n accessTokenResponse,\n shop,\n state,\n}: {\n config: ConfigInterface;\n accessTokenResponse: AccessTokenResponse;\n shop: string;\n state: string;\n}): Session {\n const associatedUser = (accessTokenResponse as OnlineAccessResponse)\n .associated_user;\n const isOnline = Boolean(associatedUser);\n\n logger(config).info('Creating new session', {shop, isOnline});\n\n const getSessionExpiration = (expires_in: number) =>\n new Date(Date.now() + expires_in * 1000);\n\n const getOnlineSessionProperties = (responseBody: OnlineAccessResponse) => {\n const {access_token, scope, ...rest} = responseBody;\n const sessionId = config.isEmbeddedApp\n ? getJwtSessionId(config)(\n shop,\n `${(rest as OnlineAccessInfo).associated_user.id}`,\n )\n : crypto.randomUUID();\n\n return {\n id: sessionId,\n onlineAccessInfo: rest,\n expires: getSessionExpiration(rest.expires_in),\n };\n };\n\n const getOfflineSessionProperties = (responseBody: OfflineAccessResponse) => {\n const {expires_in} = responseBody;\n return {\n id: getOfflineId(config)(shop),\n ...(expires_in && {expires: getSessionExpiration(expires_in)}),\n };\n };\n\n return new Session({\n shop,\n state,\n isOnline,\n accessToken: accessTokenResponse.access_token,\n scope: accessTokenResponse.scope,\n ...(isOnline\n ? getOnlineSessionProperties(accessTokenResponse as OnlineAccessResponse)\n : getOfflineSessionProperties(\n accessTokenResponse as OfflineAccessResponse,\n )),\n });\n}\n"],"names":[],"mappings":";;;;AAYM,SAAU,aAAa,CAAC,EAC5B,MAAM,EACN,mBAAmB,EACnB,IAAI,EACJ,KAAK,GAMN,EAAA;IACC,MAAM,cAAc,GAAI;AACrB,SAAA,eAAe;AAClB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;AAExC,IAAA,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;AAE7D,IAAA,MAAM,oBAAoB,GAAG,CAAC,UAAkB,KAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;AAE1C,IAAA,MAAM,0BAA0B,GAAG,CAAC,YAAkC,KAAI;QACxE,MAAM,EAAC,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,EAAC,GAAG,YAAY;AACnD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC;AACvB,cAAE,eAAe,CAAC,MAAM,CAAC,CACrB,IAAI,EACJ,CAAA,EAAI,IAAyB,CAAC,eAAe,CAAC,EAAE,EAAE;AAEtD,cAAE,MAAM,CAAC,UAAU,EAAE;QAEvB,OAAO;AACL,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;SAC/C;AACH,IAAA,CAAC;AAED,IAAA,MAAM,2BAA2B,GAAG,CAAC,YAAmC,KAAI;AAC1E,QAAA,MAAM,EAAC,UAAU,EAAC,GAAG,YAAY;QACjC,OAAO;AACL,YAAA,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,IAAI,UAAU,IAAI,EAAC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAAC,CAAC;SAC/D;AACH,IAAA,CAAC;IAED,OAAO,IAAI,OAAO,CAAC;QACjB,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,mBAAmB,CAAC,YAAY;QAC7C,KAAK,EAAE,mBAAmB,CAAC,KAAK;AAChC,QAAA,IAAI;AACF,cAAE,0BAA0B,CAAC,mBAA2C;AACxE,cAAE,2BAA2B,CACzB,mBAA4C,CAC7C,CAAC;AACP,KAAA,CAAC;AACJ;;;;"}
1
+ {"version":3,"file":"create-session.mjs","sources":["../../../../../../../lib/auth/oauth/create-session.ts"],"sourcesContent":["import {Session} from '../../session/session';\nimport {ConfigInterface} from '../../base-types';\nimport {logger} from '../../logger';\nimport {getJwtSessionId, getOfflineId} from '../../session/session-utils';\n\nimport {\n AccessTokenResponse,\n OnlineAccessResponse,\n OnlineAccessInfo,\n OfflineAccessResponse,\n} from './types';\n\nexport function createSession({\n config,\n accessTokenResponse,\n shop,\n state,\n}: {\n config: ConfigInterface;\n accessTokenResponse: AccessTokenResponse;\n shop: string;\n state: string;\n}): Session {\n const associatedUser = (accessTokenResponse as OnlineAccessResponse)\n .associated_user;\n const isOnline = Boolean(associatedUser);\n\n logger(config).info('Creating new session', {shop, isOnline});\n\n const getSessionExpiration = (expires_in: number) =>\n new Date(Date.now() + expires_in * 1000);\n\n const getOnlineSessionProperties = (responseBody: OnlineAccessResponse) => {\n const {access_token, scope, ...rest} = responseBody;\n const sessionId = config.isEmbeddedApp\n ? getJwtSessionId(config)(\n shop,\n `${(rest as OnlineAccessInfo).associated_user.id}`,\n )\n : crypto.randomUUID();\n\n return {\n id: sessionId,\n onlineAccessInfo: rest,\n expires: getSessionExpiration(rest.expires_in),\n };\n };\n\n const getOfflineSessionProperties = (responseBody: OfflineAccessResponse) => {\n const {expires_in, refresh_token, refresh_token_expires_in} = responseBody;\n return {\n id: getOfflineId(config)(shop),\n ...(expires_in && {expires: getSessionExpiration(expires_in)}),\n ...(refresh_token &&\n refresh_token_expires_in && {\n refreshToken: refresh_token,\n refreshTokenExpires: getSessionExpiration(refresh_token_expires_in),\n }),\n };\n };\n\n return new Session({\n shop,\n state,\n isOnline,\n accessToken: accessTokenResponse.access_token,\n scope: accessTokenResponse.scope,\n ...(isOnline\n ? getOnlineSessionProperties(accessTokenResponse as OnlineAccessResponse)\n : getOfflineSessionProperties(\n accessTokenResponse as OfflineAccessResponse,\n )),\n });\n}\n"],"names":[],"mappings":";;;;AAYM,SAAU,aAAa,CAAC,EAC5B,MAAM,EACN,mBAAmB,EACnB,IAAI,EACJ,KAAK,GAMN,EAAA;IACC,MAAM,cAAc,GAAI;AACrB,SAAA,eAAe;AAClB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;AAExC,IAAA,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;AAE7D,IAAA,MAAM,oBAAoB,GAAG,CAAC,UAAkB,KAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;AAE1C,IAAA,MAAM,0BAA0B,GAAG,CAAC,YAAkC,KAAI;QACxE,MAAM,EAAC,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,EAAC,GAAG,YAAY;AACnD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC;AACvB,cAAE,eAAe,CAAC,MAAM,CAAC,CACrB,IAAI,EACJ,CAAA,EAAI,IAAyB,CAAC,eAAe,CAAC,EAAE,EAAE;AAEtD,cAAE,MAAM,CAAC,UAAU,EAAE;QAEvB,OAAO;AACL,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;SAC/C;AACH,IAAA,CAAC;AAED,IAAA,MAAM,2BAA2B,GAAG,CAAC,YAAmC,KAAI;QAC1E,MAAM,EAAC,UAAU,EAAE,aAAa,EAAE,wBAAwB,EAAC,GAAG,YAAY;QAC1E,OAAO;AACL,YAAA,EAAE,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,IAAI,UAAU,IAAI,EAAC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAAC,CAAC;AAC9D,YAAA,IAAI,aAAa;AACf,gBAAA,wBAAwB,IAAI;AAC1B,gBAAA,YAAY,EAAE,aAAa;AAC3B,gBAAA,mBAAmB,EAAE,oBAAoB,CAAC,wBAAwB,CAAC;aACpE,CAAC;SACL;AACH,IAAA,CAAC;IAED,OAAO,IAAI,OAAO,CAAC;QACjB,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,mBAAmB,CAAC,YAAY;QAC7C,KAAK,EAAE,mBAAmB,CAAC,KAAK;AAChC,QAAA,IAAI;AACF,cAAE,0BAA0B,CAAC,mBAA2C;AACxE,cAAE,2BAA2B,CACzB,mBAA4C,CAC7C,CAAC;AACP,KAAA,CAAC;AACJ;;;;"}
@@ -0,0 +1,45 @@
1
+ import { throwFailedRequest } from '../../clients/common.mjs';
2
+ import { DataType } from '../../clients/types.mjs';
3
+ import { fetchRequestFactory } from '../../utils/fetch-request.mjs';
4
+ import { sanitizeShop } from '../../utils/shop-validator.mjs';
5
+ import { createSession } from './create-session.mjs';
6
+ import { RequestedTokenType } from './token-exchange.mjs';
7
+
8
+ const TokenExchangeGrantType = 'urn:ietf:params:oauth:grant-type:token-exchange';
9
+ function migrateToExpiringToken(config) {
10
+ return async ({ shop, nonExpiringOfflineAccessToken, }) => {
11
+ const body = {
12
+ client_id: config.apiKey,
13
+ client_secret: config.apiSecretKey,
14
+ grant_type: TokenExchangeGrantType,
15
+ subject_token: nonExpiringOfflineAccessToken,
16
+ subject_token_type: RequestedTokenType.OfflineAccessToken,
17
+ requested_token_type: RequestedTokenType.OfflineAccessToken,
18
+ expiring: '1',
19
+ };
20
+ const cleanShop = sanitizeShop(config)(shop, true);
21
+ const postResponse = await fetchRequestFactory(config)(`https://${cleanShop}/admin/oauth/access_token`, {
22
+ method: 'POST',
23
+ body: JSON.stringify(body),
24
+ headers: {
25
+ 'Content-Type': DataType.JSON,
26
+ Accept: DataType.JSON,
27
+ },
28
+ });
29
+ if (!postResponse.ok) {
30
+ throwFailedRequest(await postResponse.json(), false, postResponse);
31
+ }
32
+ return {
33
+ session: createSession({
34
+ accessTokenResponse: await postResponse.json(),
35
+ shop: cleanShop,
36
+ // We need to keep this as an empty string as our template DB schemas have this required
37
+ state: '',
38
+ config,
39
+ }),
40
+ };
41
+ };
42
+ }
43
+
44
+ export { migrateToExpiringToken };
45
+ //# sourceMappingURL=migrate-to-expiring-token.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-to-expiring-token.mjs","sources":["../../../../../../../lib/auth/oauth/migrate-to-expiring-token.ts"],"sourcesContent":["import {ConfigInterface} from '../../base-types';\nimport {throwFailedRequest} from '../../clients/common';\nimport {DataType} from '../../clients/types';\nimport {Session} from '../../session/session';\nimport {fetchRequestFactory} from '../../utils/fetch-request';\nimport {sanitizeShop} from '../../utils/shop-validator';\n\nimport {createSession} from './create-session';\nimport {RequestedTokenType} from './token-exchange';\nimport {AccessTokenResponse} from './types';\n\nconst TokenExchangeGrantType =\n 'urn:ietf:params:oauth:grant-type:token-exchange';\n\nexport interface MigrateToExpiringTokenParams {\n shop: string;\n nonExpiringOfflineAccessToken: string;\n}\n\nexport type MigrateToExpiringToken = (\n params: MigrateToExpiringTokenParams,\n) => Promise<{session: Session}>;\n\nexport function migrateToExpiringToken(\n config: ConfigInterface,\n): MigrateToExpiringToken {\n return async ({\n shop,\n nonExpiringOfflineAccessToken,\n }: MigrateToExpiringTokenParams) => {\n const body = {\n client_id: config.apiKey,\n client_secret: config.apiSecretKey,\n grant_type: TokenExchangeGrantType,\n subject_token: nonExpiringOfflineAccessToken,\n subject_token_type: RequestedTokenType.OfflineAccessToken,\n requested_token_type: RequestedTokenType.OfflineAccessToken,\n expiring: '1',\n };\n\n const cleanShop = sanitizeShop(config)(shop, true)!;\n\n const postResponse = await fetchRequestFactory(config)(\n `https://${cleanShop}/admin/oauth/access_token`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': DataType.JSON,\n Accept: DataType.JSON,\n },\n },\n );\n\n if (!postResponse.ok) {\n throwFailedRequest(await postResponse.json(), false, postResponse);\n }\n\n return {\n session: createSession({\n accessTokenResponse: await postResponse.json<AccessTokenResponse>(),\n shop: cleanShop,\n // We need to keep this as an empty string as our template DB schemas have this required\n state: '',\n config,\n }),\n };\n };\n}\n"],"names":[],"mappings":";;;;;;;AAWA,MAAM,sBAAsB,GAC1B,iDAAiD;AAW7C,SAAU,sBAAsB,CACpC,MAAuB,EAAA;IAEvB,OAAO,OAAO,EACZ,IAAI,EACJ,6BAA6B,GACA,KAAI;AACjC,QAAA,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,aAAa,EAAE,MAAM,CAAC,YAAY;AAClC,YAAA,UAAU,EAAE,sBAAsB;AAClC,YAAA,aAAa,EAAE,6BAA6B;YAC5C,kBAAkB,EAAE,kBAAkB,CAAC,kBAAkB;YACzD,oBAAoB,EAAE,kBAAkB,CAAC,kBAAkB;AAC3D,YAAA,QAAQ,EAAE,GAAG;SACd;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;QAEnD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CACpD,CAAA,QAAA,EAAW,SAAS,CAAA,yBAAA,CAA2B,EAC/C;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,EAAE;gBACP,cAAc,EAAE,QAAQ,CAAC,IAAI;gBAC7B,MAAM,EAAE,QAAQ,CAAC,IAAI;AACtB,aAAA;AACF,SAAA,CACF;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;YACpB,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC;QACpE;QAEA,OAAO;YACL,OAAO,EAAE,aAAa,CAAC;AACrB,gBAAA,mBAAmB,EAAE,MAAM,YAAY,CAAC,IAAI,EAAuB;AACnE,gBAAA,IAAI,EAAE,SAAS;;AAEf,gBAAA,KAAK,EAAE,EAAE;gBACT,MAAM;aACP,CAAC;SACH;AACH,IAAA,CAAC;AACH;;;;"}
@@ -70,7 +70,7 @@ function begin(config) {
70
70
  };
71
71
  }
72
72
  function callback(config) {
73
- return async function callback({ ...adapterArgs }) {
73
+ return async function callback({ expiring, ...adapterArgs }) {
74
74
  throwIfCustomStoreApp(config.isCustomStoreApp, 'Cannot perform OAuth for private apps');
75
75
  const log = logger(config);
76
76
  const request = await abstractConvertRequest(adapterArgs);
@@ -106,6 +106,7 @@ function callback(config) {
106
106
  client_id: config.apiKey,
107
107
  client_secret: config.apiSecretKey,
108
108
  code: query.get('code'),
109
+ expiring: expiring ? '1' : '0',
109
110
  };
110
111
  const cleanShop = sanitizeShop(config)(query.get('shop'), true);
111
112
  const postResponse = await fetchRequestFactory(config)(`https://${cleanShop}/admin/oauth/access_token`, {
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.mjs","sources":["../../../../../../../lib/auth/oauth/oauth.ts"],"sourcesContent":["import {isbot} from 'isbot';\n\nimport {throwFailedRequest} from '../../clients/common';\nimport ProcessedQuery from '../../utils/processed-query';\nimport {ConfigInterface} from '../../base-types';\nimport * as ShopifyErrors from '../../error';\nimport {validateHmac} from '../../utils/hmac-validator';\nimport {sanitizeShop} from '../../utils/shop-validator';\nimport {Session} from '../../session/session';\nimport {\n abstractConvertRequest,\n abstractConvertIncomingResponse,\n abstractConvertResponse,\n abstractConvertHeaders,\n AdapterResponse,\n AdapterHeaders,\n Cookies,\n NormalizedResponse,\n NormalizedRequest,\n} from '../../../runtime/http';\nimport {logger, ShopifyLogger} from '../../logger';\nimport {DataType} from '../../clients/types';\nimport {fetchRequestFactory} from '../../utils/fetch-request';\n\nimport {\n SESSION_COOKIE_NAME,\n STATE_COOKIE_NAME,\n BeginParams,\n CallbackParams,\n AuthQuery,\n AccessTokenResponse,\n} from './types';\nimport {nonce} from './nonce';\nimport {safeCompare} from './safe-compare';\nimport {createSession} from './create-session';\n\nexport type OAuthBegin = (beginParams: BeginParams) => Promise<AdapterResponse>;\n\nexport interface CallbackResponse<T = AdapterHeaders> {\n headers: T;\n session: Session;\n}\n\nexport type OAuthCallback = <T = AdapterHeaders>(\n callbackParams: CallbackParams,\n) => Promise<CallbackResponse<T>>;\n\ninterface BotLog {\n request: NormalizedRequest;\n log: ShopifyLogger;\n func: string;\n}\n\nconst logForBot = ({request, log, func}: BotLog) => {\n log.debug(`Possible bot request to auth ${func}: `, {\n userAgent: request.headers['User-Agent'],\n });\n};\n\nexport function begin(config: ConfigInterface): OAuthBegin {\n return async ({\n shop,\n callbackPath,\n isOnline,\n ...adapterArgs\n }: BeginParams): Promise<AdapterResponse> => {\n throwIfCustomStoreApp(\n config.isCustomStoreApp,\n 'Cannot perform OAuth for private apps',\n );\n\n const log = logger(config);\n log.info('Beginning OAuth', {shop, isOnline, callbackPath});\n\n const request = await abstractConvertRequest(adapterArgs);\n const response = await abstractConvertIncomingResponse(adapterArgs);\n\n let userAgent = request.headers['User-Agent'];\n if (Array.isArray(userAgent)) {\n userAgent = userAgent[0];\n }\n if (isbot(userAgent)) {\n logForBot({request, log, func: 'begin'});\n response.statusCode = 410;\n return abstractConvertResponse(response, adapterArgs);\n }\n\n const cookies = new Cookies(request, response, {\n keys: [config.apiSecretKey],\n secure: true,\n });\n\n const state = nonce();\n\n await cookies.setAndSign(STATE_COOKIE_NAME, state, {\n expires: new Date(Date.now() + 60000),\n sameSite: 'lax',\n secure: true,\n path: callbackPath,\n });\n\n const scopes = config.scopes ? config.scopes.toString() : '';\n const query = {\n client_id: config.apiKey,\n scope: scopes,\n redirect_uri: `${config.hostScheme}://${config.hostName}${callbackPath}`,\n state,\n 'grant_options[]': isOnline ? 'per-user' : '',\n };\n const processedQuery = new ProcessedQuery();\n processedQuery.putAll(query);\n\n const cleanShop = sanitizeShop(config)(shop, true)!;\n const redirectUrl = `https://${cleanShop}/admin/oauth/authorize${processedQuery.stringify()}`;\n response.statusCode = 302;\n response.statusText = 'Found';\n response.headers = {\n ...response.headers,\n ...cookies.response.headers!,\n Location: redirectUrl,\n };\n\n log.debug(`OAuth started, redirecting to ${redirectUrl}`, {shop, isOnline});\n\n return abstractConvertResponse(response, adapterArgs);\n };\n}\n\nexport function callback(config: ConfigInterface): OAuthCallback {\n return async function callback<T = AdapterHeaders>({\n ...adapterArgs\n }: CallbackParams): Promise<CallbackResponse<T>> {\n throwIfCustomStoreApp(\n config.isCustomStoreApp,\n 'Cannot perform OAuth for private apps',\n );\n\n const log = logger(config);\n\n const request = await abstractConvertRequest(adapterArgs);\n\n const query = new URL(\n request.url,\n `${config.hostScheme}://${config.hostName}`,\n ).searchParams;\n const shop = query.get('shop')!;\n\n const response = {} as NormalizedResponse;\n let userAgent = request.headers['User-Agent'];\n if (Array.isArray(userAgent)) {\n userAgent = userAgent[0];\n }\n if (isbot(userAgent)) {\n logForBot({request, log, func: 'callback'});\n throw new ShopifyErrors.BotActivityDetected(\n 'Invalid OAuth callback initiated by bot',\n );\n }\n\n log.info('Completing OAuth', {shop});\n\n const cookies = new Cookies(request, response, {\n keys: [config.apiSecretKey],\n secure: true,\n });\n\n const stateFromCookie = await cookies.getAndVerify(STATE_COOKIE_NAME);\n cookies.deleteCookie(STATE_COOKIE_NAME);\n if (!stateFromCookie) {\n log.error('Could not find OAuth cookie', {shop});\n\n throw new ShopifyErrors.CookieNotFound(\n `Cannot complete OAuth process. Could not find an OAuth cookie for shop url: ${shop}`,\n );\n }\n\n const authQuery: AuthQuery = Object.fromEntries(query.entries());\n if (!(await validQuery({config, query: authQuery, stateFromCookie}))) {\n log.error('Invalid OAuth callback', {shop, stateFromCookie});\n\n throw new ShopifyErrors.InvalidOAuthError('Invalid OAuth callback.');\n }\n\n log.debug('OAuth request is valid, requesting access token', {shop});\n\n const body = {\n client_id: config.apiKey,\n client_secret: config.apiSecretKey,\n code: query.get('code'),\n };\n\n const cleanShop = sanitizeShop(config)(query.get('shop')!, true)!;\n\n const postResponse = await fetchRequestFactory(config)(\n `https://${cleanShop}/admin/oauth/access_token`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': DataType.JSON,\n Accept: DataType.JSON,\n },\n },\n );\n\n if (!postResponse.ok) {\n throwFailedRequest(await postResponse.json(), false, postResponse);\n }\n\n const session: Session = createSession({\n accessTokenResponse: await postResponse.json<AccessTokenResponse>(),\n shop: cleanShop,\n state: stateFromCookie,\n config,\n });\n\n if (!config.isEmbeddedApp) {\n await cookies.setAndSign(SESSION_COOKIE_NAME, session.id, {\n expires: session.expires,\n sameSite: 'lax',\n secure: true,\n path: '/',\n });\n }\n\n return {\n headers: (await abstractConvertHeaders(\n cookies.response.headers!,\n adapterArgs,\n )) as T,\n session,\n };\n };\n}\n\nasync function validQuery({\n config,\n query,\n stateFromCookie,\n}: {\n config: ConfigInterface;\n query: AuthQuery;\n stateFromCookie: string;\n}): Promise<boolean> {\n return (\n (await validateHmac(config)(query)) &&\n safeCompare(query.state!, stateFromCookie)\n );\n}\n\nfunction throwIfCustomStoreApp(\n isCustomStoreApp: boolean,\n message: string,\n): void {\n if (isCustomStoreApp) {\n throw new ShopifyErrors.PrivateAppError(message);\n }\n}\n"],"names":["ShopifyErrors.BotActivityDetected","ShopifyErrors.CookieNotFound","ShopifyErrors.InvalidOAuthError","ShopifyErrors.PrivateAppError"],"mappings":"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"}
1
+ {"version":3,"file":"oauth.mjs","sources":["../../../../../../../lib/auth/oauth/oauth.ts"],"sourcesContent":["import {isbot} from 'isbot';\n\nimport {throwFailedRequest} from '../../clients/common';\nimport ProcessedQuery from '../../utils/processed-query';\nimport {ConfigInterface} from '../../base-types';\nimport * as ShopifyErrors from '../../error';\nimport {validateHmac} from '../../utils/hmac-validator';\nimport {sanitizeShop} from '../../utils/shop-validator';\nimport {Session} from '../../session/session';\nimport {\n abstractConvertRequest,\n abstractConvertIncomingResponse,\n abstractConvertResponse,\n abstractConvertHeaders,\n AdapterResponse,\n AdapterHeaders,\n Cookies,\n NormalizedResponse,\n NormalizedRequest,\n} from '../../../runtime/http';\nimport {logger, ShopifyLogger} from '../../logger';\nimport {DataType} from '../../clients/types';\nimport {fetchRequestFactory} from '../../utils/fetch-request';\n\nimport {\n SESSION_COOKIE_NAME,\n STATE_COOKIE_NAME,\n BeginParams,\n CallbackParams,\n AuthQuery,\n AccessTokenResponse,\n} from './types';\nimport {nonce} from './nonce';\nimport {safeCompare} from './safe-compare';\nimport {createSession} from './create-session';\n\nexport type OAuthBegin = (beginParams: BeginParams) => Promise<AdapterResponse>;\n\nexport interface CallbackResponse<T = AdapterHeaders> {\n headers: T;\n session: Session;\n}\n\nexport type OAuthCallback = <T = AdapterHeaders>(\n callbackParams: CallbackParams,\n) => Promise<CallbackResponse<T>>;\n\ninterface BotLog {\n request: NormalizedRequest;\n log: ShopifyLogger;\n func: string;\n}\n\nconst logForBot = ({request, log, func}: BotLog) => {\n log.debug(`Possible bot request to auth ${func}: `, {\n userAgent: request.headers['User-Agent'],\n });\n};\n\nexport function begin(config: ConfigInterface): OAuthBegin {\n return async ({\n shop,\n callbackPath,\n isOnline,\n ...adapterArgs\n }: BeginParams): Promise<AdapterResponse> => {\n throwIfCustomStoreApp(\n config.isCustomStoreApp,\n 'Cannot perform OAuth for private apps',\n );\n\n const log = logger(config);\n log.info('Beginning OAuth', {shop, isOnline, callbackPath});\n\n const request = await abstractConvertRequest(adapterArgs);\n const response = await abstractConvertIncomingResponse(adapterArgs);\n\n let userAgent = request.headers['User-Agent'];\n if (Array.isArray(userAgent)) {\n userAgent = userAgent[0];\n }\n if (isbot(userAgent)) {\n logForBot({request, log, func: 'begin'});\n response.statusCode = 410;\n return abstractConvertResponse(response, adapterArgs);\n }\n\n const cookies = new Cookies(request, response, {\n keys: [config.apiSecretKey],\n secure: true,\n });\n\n const state = nonce();\n\n await cookies.setAndSign(STATE_COOKIE_NAME, state, {\n expires: new Date(Date.now() + 60000),\n sameSite: 'lax',\n secure: true,\n path: callbackPath,\n });\n\n const scopes = config.scopes ? config.scopes.toString() : '';\n const query = {\n client_id: config.apiKey,\n scope: scopes,\n redirect_uri: `${config.hostScheme}://${config.hostName}${callbackPath}`,\n state,\n 'grant_options[]': isOnline ? 'per-user' : '',\n };\n const processedQuery = new ProcessedQuery();\n processedQuery.putAll(query);\n\n const cleanShop = sanitizeShop(config)(shop, true)!;\n const redirectUrl = `https://${cleanShop}/admin/oauth/authorize${processedQuery.stringify()}`;\n response.statusCode = 302;\n response.statusText = 'Found';\n response.headers = {\n ...response.headers,\n ...cookies.response.headers!,\n Location: redirectUrl,\n };\n\n log.debug(`OAuth started, redirecting to ${redirectUrl}`, {shop, isOnline});\n\n return abstractConvertResponse(response, adapterArgs);\n };\n}\n\nexport function callback(config: ConfigInterface): OAuthCallback {\n return async function callback<T = AdapterHeaders>({\n expiring,\n ...adapterArgs\n }: CallbackParams): Promise<CallbackResponse<T>> {\n throwIfCustomStoreApp(\n config.isCustomStoreApp,\n 'Cannot perform OAuth for private apps',\n );\n\n const log = logger(config);\n\n const request = await abstractConvertRequest(adapterArgs);\n\n const query = new URL(\n request.url,\n `${config.hostScheme}://${config.hostName}`,\n ).searchParams;\n const shop = query.get('shop')!;\n\n const response = {} as NormalizedResponse;\n let userAgent = request.headers['User-Agent'];\n if (Array.isArray(userAgent)) {\n userAgent = userAgent[0];\n }\n if (isbot(userAgent)) {\n logForBot({request, log, func: 'callback'});\n throw new ShopifyErrors.BotActivityDetected(\n 'Invalid OAuth callback initiated by bot',\n );\n }\n\n log.info('Completing OAuth', {shop});\n\n const cookies = new Cookies(request, response, {\n keys: [config.apiSecretKey],\n secure: true,\n });\n\n const stateFromCookie = await cookies.getAndVerify(STATE_COOKIE_NAME);\n cookies.deleteCookie(STATE_COOKIE_NAME);\n if (!stateFromCookie) {\n log.error('Could not find OAuth cookie', {shop});\n\n throw new ShopifyErrors.CookieNotFound(\n `Cannot complete OAuth process. Could not find an OAuth cookie for shop url: ${shop}`,\n );\n }\n\n const authQuery: AuthQuery = Object.fromEntries(query.entries());\n if (!(await validQuery({config, query: authQuery, stateFromCookie}))) {\n log.error('Invalid OAuth callback', {shop, stateFromCookie});\n\n throw new ShopifyErrors.InvalidOAuthError('Invalid OAuth callback.');\n }\n\n log.debug('OAuth request is valid, requesting access token', {shop});\n\n const body = {\n client_id: config.apiKey,\n client_secret: config.apiSecretKey,\n code: query.get('code'),\n expiring: expiring ? '1' : '0',\n };\n\n const cleanShop = sanitizeShop(config)(query.get('shop')!, true)!;\n\n const postResponse = await fetchRequestFactory(config)(\n `https://${cleanShop}/admin/oauth/access_token`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': DataType.JSON,\n Accept: DataType.JSON,\n },\n },\n );\n\n if (!postResponse.ok) {\n throwFailedRequest(await postResponse.json(), false, postResponse);\n }\n\n const session: Session = createSession({\n accessTokenResponse: await postResponse.json<AccessTokenResponse>(),\n shop: cleanShop,\n state: stateFromCookie,\n config,\n });\n\n if (!config.isEmbeddedApp) {\n await cookies.setAndSign(SESSION_COOKIE_NAME, session.id, {\n expires: session.expires,\n sameSite: 'lax',\n secure: true,\n path: '/',\n });\n }\n\n return {\n headers: (await abstractConvertHeaders(\n cookies.response.headers!,\n adapterArgs,\n )) as T,\n session,\n };\n };\n}\n\nasync function validQuery({\n config,\n query,\n stateFromCookie,\n}: {\n config: ConfigInterface;\n query: AuthQuery;\n stateFromCookie: string;\n}): Promise<boolean> {\n return (\n (await validateHmac(config)(query)) &&\n safeCompare(query.state!, stateFromCookie)\n );\n}\n\nfunction throwIfCustomStoreApp(\n isCustomStoreApp: boolean,\n message: string,\n): void {\n if (isCustomStoreApp) {\n throw new ShopifyErrors.PrivateAppError(message);\n }\n}\n"],"names":["ShopifyErrors.BotActivityDetected","ShopifyErrors.CookieNotFound","ShopifyErrors.InvalidOAuthError","ShopifyErrors.PrivateAppError"],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { throwFailedRequest } from '../../clients/common.mjs';
2
+ import { DataType } from '../../clients/types.mjs';
3
+ import { fetchRequestFactory } from '../../utils/fetch-request.mjs';
4
+ import { sanitizeShop } from '../../utils/shop-validator.mjs';
5
+ import { createSession } from './create-session.mjs';
6
+
7
+ const RefreshTokenGrantType = 'refresh_token';
8
+ function refreshToken(config) {
9
+ return async ({ shop, refreshToken }) => {
10
+ const body = {
11
+ client_id: config.apiKey,
12
+ client_secret: config.apiSecretKey,
13
+ refresh_token: refreshToken,
14
+ grant_type: RefreshTokenGrantType,
15
+ };
16
+ const cleanShop = sanitizeShop(config)(shop, true);
17
+ const postResponse = await fetchRequestFactory(config)(`https://${cleanShop}/admin/oauth/access_token`, {
18
+ method: 'POST',
19
+ body: JSON.stringify(body),
20
+ headers: {
21
+ 'Content-Type': DataType.JSON,
22
+ Accept: DataType.JSON,
23
+ },
24
+ });
25
+ if (!postResponse.ok) {
26
+ throwFailedRequest(await postResponse.json(), false, postResponse);
27
+ }
28
+ return {
29
+ session: createSession({
30
+ accessTokenResponse: await postResponse.json(),
31
+ shop: cleanShop,
32
+ // We need to keep this as an empty string as our template DB schemas have this required
33
+ state: '',
34
+ config,
35
+ }),
36
+ };
37
+ };
38
+ }
39
+
40
+ export { refreshToken };
41
+ //# sourceMappingURL=refresh-token.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refresh-token.mjs","sources":["../../../../../../../lib/auth/oauth/refresh-token.ts"],"sourcesContent":["import {ConfigInterface} from '../../base-types';\nimport {throwFailedRequest} from '../../clients/common';\nimport {DataType} from '../../clients/types';\nimport {Session} from '../../session/session';\nimport {fetchRequestFactory} from '../../utils/fetch-request';\nimport {sanitizeShop} from '../../utils/shop-validator';\n\nimport {createSession} from './create-session';\nimport {AccessTokenResponse} from './types';\n\nexport interface RefreshTokenParams {\n shop: string;\n refreshToken: string;\n}\n\nexport type RefreshToken = (\n params: RefreshTokenParams,\n) => Promise<{session: Session}>;\n\nconst RefreshTokenGrantType = 'refresh_token';\n\nexport function refreshToken(config: ConfigInterface): RefreshToken {\n return async ({shop, refreshToken}: RefreshTokenParams) => {\n const body = {\n client_id: config.apiKey,\n client_secret: config.apiSecretKey,\n refresh_token: refreshToken,\n grant_type: RefreshTokenGrantType,\n };\n\n const cleanShop = sanitizeShop(config)(shop, true)!;\n\n const postResponse = await fetchRequestFactory(config)(\n `https://${cleanShop}/admin/oauth/access_token`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': DataType.JSON,\n Accept: DataType.JSON,\n },\n },\n );\n\n if (!postResponse.ok) {\n throwFailedRequest(await postResponse.json(), false, postResponse);\n }\n\n return {\n session: createSession({\n accessTokenResponse: await postResponse.json<AccessTokenResponse>(),\n shop: cleanShop,\n // We need to keep this as an empty string as our template DB schemas have this required\n state: '',\n config,\n }),\n };\n };\n}\n"],"names":[],"mappings":";;;;;;AAmBA,MAAM,qBAAqB,GAAG,eAAe;AAEvC,SAAU,YAAY,CAAC,MAAuB,EAAA;IAClD,OAAO,OAAO,EAAC,IAAI,EAAE,YAAY,EAAqB,KAAI;AACxD,QAAA,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,aAAa,EAAE,MAAM,CAAC,YAAY;AAClC,YAAA,aAAa,EAAE,YAAY;AAC3B,YAAA,UAAU,EAAE,qBAAqB;SAClC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;QAEnD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CACpD,CAAA,QAAA,EAAW,SAAS,CAAA,yBAAA,CAA2B,EAC/C;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,EAAE;gBACP,cAAc,EAAE,QAAQ,CAAC,IAAI;gBAC7B,MAAM,EAAE,QAAQ,CAAC,IAAI;AACtB,aAAA;AACF,SAAA,CACF;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;YACpB,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC;QACpE;QAEA,OAAO;YACL,OAAO,EAAE,aAAa,CAAC;AACrB,gBAAA,mBAAmB,EAAE,MAAM,YAAY,CAAC,IAAI,EAAuB;AACnE,gBAAA,IAAI,EAAE,SAAS;;AAEf,gBAAA,KAAK,EAAE,EAAE;gBACT,MAAM;aACP,CAAC;SACH;AACH,IAAA,CAAC;AACH;;;;"}
@@ -13,7 +13,7 @@ var RequestedTokenType;
13
13
  const TokenExchangeGrantType = 'urn:ietf:params:oauth:grant-type:token-exchange';
14
14
  const IdTokenType = 'urn:ietf:params:oauth:token-type:id_token';
15
15
  function tokenExchange(config) {
16
- return async ({ shop, sessionToken, requestedTokenType, }) => {
16
+ return async ({ shop, sessionToken, requestedTokenType, expiring, }) => {
17
17
  await decodeSessionToken(config)(sessionToken);
18
18
  const body = {
19
19
  client_id: config.apiKey,
@@ -22,6 +22,7 @@ function tokenExchange(config) {
22
22
  subject_token: sessionToken,
23
23
  subject_token_type: IdTokenType,
24
24
  requested_token_type: requestedTokenType,
25
+ expiring: expiring ? '1' : '0',
25
26
  };
26
27
  const cleanShop = sanitizeShop(config)(shop, true);
27
28
  const postResponse = await fetchRequestFactory(config)(`https://${cleanShop}/admin/oauth/access_token`, {
@@ -1 +1 @@
1
- {"version":3,"file":"token-exchange.mjs","sources":["../../../../../../../lib/auth/oauth/token-exchange.ts"],"sourcesContent":["import {throwFailedRequest} from '../../clients/common';\nimport {decodeSessionToken} from '../../session/decode-session-token';\nimport {sanitizeShop} from '../../utils/shop-validator';\nimport {ConfigInterface} from '../../base-types';\nimport {Session} from '../../session/session';\nimport {DataType} from '../../clients/types';\nimport {fetchRequestFactory} from '../../utils/fetch-request';\n\nimport {createSession} from './create-session';\nimport {AccessTokenResponse} from './types';\n\nexport enum RequestedTokenType {\n OnlineAccessToken = 'urn:shopify:params:oauth:token-type:online-access-token',\n OfflineAccessToken = 'urn:shopify:params:oauth:token-type:offline-access-token',\n}\n\nconst TokenExchangeGrantType =\n 'urn:ietf:params:oauth:grant-type:token-exchange';\nconst IdTokenType = 'urn:ietf:params:oauth:token-type:id_token';\n\nexport interface TokenExchangeParams {\n shop: string;\n sessionToken: string;\n requestedTokenType: RequestedTokenType;\n}\n\nexport type TokenExchange = (\n params: TokenExchangeParams,\n) => Promise<{session: Session}>;\n\nexport function tokenExchange(config: ConfigInterface): TokenExchange {\n return async ({\n shop,\n sessionToken,\n requestedTokenType,\n }: TokenExchangeParams) => {\n await decodeSessionToken(config)(sessionToken);\n\n const body = {\n client_id: config.apiKey,\n client_secret: config.apiSecretKey,\n grant_type: TokenExchangeGrantType,\n subject_token: sessionToken,\n subject_token_type: IdTokenType,\n requested_token_type: requestedTokenType,\n };\n\n const cleanShop = sanitizeShop(config)(shop, true)!;\n\n const postResponse = await fetchRequestFactory(config)(\n `https://${cleanShop}/admin/oauth/access_token`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': DataType.JSON,\n Accept: DataType.JSON,\n },\n },\n );\n\n if (!postResponse.ok) {\n throwFailedRequest(await postResponse.json(), false, postResponse);\n }\n\n return {\n session: createSession({\n accessTokenResponse: await postResponse.json<AccessTokenResponse>(),\n shop: cleanShop,\n // We need to keep this as an empty string as our template DB schemas have this required\n state: '',\n config,\n }),\n };\n };\n}\n"],"names":[],"mappings":";;;;;;;IAWY;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,mBAAA,CAAA,GAAA,yDAA6E;AAC7E,IAAA,kBAAA,CAAA,oBAAA,CAAA,GAAA,0DAA+E;AACjF,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;AAK9B,MAAM,sBAAsB,GAC1B,iDAAiD;AACnD,MAAM,WAAW,GAAG,2CAA2C;AAYzD,SAAU,aAAa,CAAC,MAAuB,EAAA;IACnD,OAAO,OAAO,EACZ,IAAI,EACJ,YAAY,EACZ,kBAAkB,GACE,KAAI;AACxB,QAAA,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;AAE9C,QAAA,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,aAAa,EAAE,MAAM,CAAC,YAAY;AAClC,YAAA,UAAU,EAAE,sBAAsB;AAClC,YAAA,aAAa,EAAE,YAAY;AAC3B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,oBAAoB,EAAE,kBAAkB;SACzC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;QAEnD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CACpD,CAAA,QAAA,EAAW,SAAS,CAAA,yBAAA,CAA2B,EAC/C;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,EAAE;gBACP,cAAc,EAAE,QAAQ,CAAC,IAAI;gBAC7B,MAAM,EAAE,QAAQ,CAAC,IAAI;AACtB,aAAA;AACF,SAAA,CACF;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;YACpB,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC;QACpE;QAEA,OAAO;YACL,OAAO,EAAE,aAAa,CAAC;AACrB,gBAAA,mBAAmB,EAAE,MAAM,YAAY,CAAC,IAAI,EAAuB;AACnE,gBAAA,IAAI,EAAE,SAAS;;AAEf,gBAAA,KAAK,EAAE,EAAE;gBACT,MAAM;aACP,CAAC;SACH;AACH,IAAA,CAAC;AACH;;;;"}
1
+ {"version":3,"file":"token-exchange.mjs","sources":["../../../../../../../lib/auth/oauth/token-exchange.ts"],"sourcesContent":["import {throwFailedRequest} from '../../clients/common';\nimport {decodeSessionToken} from '../../session/decode-session-token';\nimport {sanitizeShop} from '../../utils/shop-validator';\nimport {ConfigInterface} from '../../base-types';\nimport {Session} from '../../session/session';\nimport {DataType} from '../../clients/types';\nimport {fetchRequestFactory} from '../../utils/fetch-request';\n\nimport {createSession} from './create-session';\nimport {AccessTokenResponse} from './types';\n\nexport enum RequestedTokenType {\n OnlineAccessToken = 'urn:shopify:params:oauth:token-type:online-access-token',\n OfflineAccessToken = 'urn:shopify:params:oauth:token-type:offline-access-token',\n}\n\nconst TokenExchangeGrantType =\n 'urn:ietf:params:oauth:grant-type:token-exchange';\nconst IdTokenType = 'urn:ietf:params:oauth:token-type:id_token';\n\nexport interface TokenExchangeParams {\n shop: string;\n sessionToken: string;\n requestedTokenType: RequestedTokenType;\n expiring?: boolean;\n}\n\nexport type TokenExchange = (\n params: TokenExchangeParams,\n) => Promise<{session: Session}>;\n\nexport function tokenExchange(config: ConfigInterface): TokenExchange {\n return async ({\n shop,\n sessionToken,\n requestedTokenType,\n expiring,\n }: TokenExchangeParams) => {\n await decodeSessionToken(config)(sessionToken);\n\n const body = {\n client_id: config.apiKey,\n client_secret: config.apiSecretKey,\n grant_type: TokenExchangeGrantType,\n subject_token: sessionToken,\n subject_token_type: IdTokenType,\n requested_token_type: requestedTokenType,\n expiring: expiring ? '1' : '0',\n };\n\n const cleanShop = sanitizeShop(config)(shop, true)!;\n\n const postResponse = await fetchRequestFactory(config)(\n `https://${cleanShop}/admin/oauth/access_token`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n headers: {\n 'Content-Type': DataType.JSON,\n Accept: DataType.JSON,\n },\n },\n );\n\n if (!postResponse.ok) {\n throwFailedRequest(await postResponse.json(), false, postResponse);\n }\n\n return {\n session: createSession({\n accessTokenResponse: await postResponse.json<AccessTokenResponse>(),\n shop: cleanShop,\n // We need to keep this as an empty string as our template DB schemas have this required\n state: '',\n config,\n }),\n };\n };\n}\n"],"names":[],"mappings":";;;;;;;IAWY;AAAZ,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,mBAAA,CAAA,GAAA,yDAA6E;AAC7E,IAAA,kBAAA,CAAA,oBAAA,CAAA,GAAA,0DAA+E;AACjF,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,GAAA,EAAA,CAAA,CAAA;AAK9B,MAAM,sBAAsB,GAC1B,iDAAiD;AACnD,MAAM,WAAW,GAAG,2CAA2C;AAazD,SAAU,aAAa,CAAC,MAAuB,EAAA;AACnD,IAAA,OAAO,OAAO,EACZ,IAAI,EACJ,YAAY,EACZ,kBAAkB,EAClB,QAAQ,GACY,KAAI;AACxB,QAAA,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;AAE9C,QAAA,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,MAAM,CAAC,MAAM;YACxB,aAAa,EAAE,MAAM,CAAC,YAAY;AAClC,YAAA,UAAU,EAAE,sBAAsB;AAClC,YAAA,aAAa,EAAE,YAAY;AAC3B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,oBAAoB,EAAE,kBAAkB;YACxC,QAAQ,EAAE,QAAQ,GAAG,GAAG,GAAG,GAAG;SAC/B;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;QAEnD,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CACpD,CAAA,QAAA,EAAW,SAAS,CAAA,yBAAA,CAA2B,EAC/C;AACE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,YAAA,OAAO,EAAE;gBACP,cAAc,EAAE,QAAQ,CAAC,IAAI;gBAC7B,MAAM,EAAE,QAAQ,CAAC,IAAI;AACtB,aAAA;AACF,SAAA,CACF;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;YACpB,kBAAkB,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC;QACpE;QAEA,OAAO;YACL,OAAO,EAAE,aAAa,CAAC;AACrB,gBAAA,mBAAmB,EAAE,MAAM,YAAY,CAAC,IAAI,EAAuB;AACnE,gBAAA,IAAI,EAAE,SAAS;;AAEf,gBAAA,KAAK,EAAE,EAAE;gBACT,MAAM;aACP,CAAC;SACH;AACH,IAAA,CAAC;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../../../../../../../lib/auth/oauth/types.ts"],"sourcesContent":["import {AdapterArgs} from '../../../runtime/http/types';\n\nexport const SESSION_COOKIE_NAME = 'shopify_app_session';\nexport const STATE_COOKIE_NAME = 'shopify_app_state';\n\nexport interface AuthQuery {\n [key: string]: string | undefined;\n hmac?: string;\n signature?: string;\n}\n\nexport interface BeginParams extends AdapterArgs {\n /**\n * The shop domain. For example: `{exampleshop}.myshopify.com`.\n */\n shop: string;\n /**\n * The path to the callback endpoint, with a leading `/`.\n * This URL must be allowed in the Partners dashboard, or using the CLI to run your app.\n */\n callbackPath: string;\n /**\n * Defines if the session is online or offline.\n * Learn more about [OAuth access modes](https://shopify.dev/docs/apps/auth/oauth/access-modes).\n */\n isOnline: boolean;\n}\n\nexport interface CallbackParams extends AdapterArgs {}\n\nexport interface AccessTokenResponse {\n access_token: string;\n scope: string;\n}\n\nexport interface OnlineAccessInfo {\n /**\n * How long the access token is valid for, in seconds.\n */\n expires_in: number;\n /**\n * The effective set of scopes for the session.\n */\n associated_user_scope: string;\n /**\n * The user associated with the access token.\n */\n associated_user: OnlineAccessUser;\n}\n\nexport interface OfflineAccessInfo {\n /**\n * How long the access token is valid for, in seconds.\n */\n expires_in?: number;\n}\n\nexport interface OnlineAccessUser {\n /**\n * The user's ID.\n */\n id: number;\n /**\n * The user's first name.\n */\n first_name: string;\n /**\n * The user's last name.\n */\n last_name: string;\n /**\n * The user's email address.\n */\n email: string;\n /**\n * Whether the user has verified their email address.\n */\n email_verified: boolean;\n /**\n * Whether the user is the account owner.\n */\n account_owner: boolean;\n /**\n * The user's locale.\n */\n locale: string;\n /**\n * Whether the user is a collaborator.\n */\n collaborator: boolean;\n}\n\nexport interface OnlineAccessResponse\n extends AccessTokenResponse,\n OnlineAccessInfo {}\n\nexport interface OfflineAccessResponse\n extends AccessTokenResponse,\n OfflineAccessInfo {}\n"],"names":[],"mappings":"AAEO,MAAM,mBAAmB,GAAG;AAC5B,MAAM,iBAAiB,GAAG;;;;"}
1
+ {"version":3,"file":"types.mjs","sources":["../../../../../../../lib/auth/oauth/types.ts"],"sourcesContent":["import {AdapterArgs} from '../../../runtime/http/types';\n\nexport const SESSION_COOKIE_NAME = 'shopify_app_session';\nexport const STATE_COOKIE_NAME = 'shopify_app_state';\n\nexport interface AuthQuery {\n [key: string]: string | undefined;\n hmac?: string;\n signature?: string;\n}\n\nexport interface BeginParams extends AdapterArgs {\n /**\n * The shop domain. For example: `{exampleshop}.myshopify.com`.\n */\n shop: string;\n /**\n * The path to the callback endpoint, with a leading `/`.\n * This URL must be allowed in the Partners dashboard, or using the CLI to run your app.\n */\n callbackPath: string;\n /**\n * Defines if the session is online or offline.\n * Learn more about [OAuth access modes](https://shopify.dev/docs/apps/auth/oauth/access-modes).\n */\n isOnline: boolean;\n}\n\nexport interface CallbackParams extends AdapterArgs {\n /**\n * Whether the access token should be expiring. Defaults to false.\n * Learn more about [Expiring Access Tokens](https://shopify.dev/docs/apps/auth/oauth/access-modes#expiring-access-tokens).\n */\n expiring?: boolean;\n}\n\nexport interface AccessTokenResponse {\n access_token: string;\n scope: string;\n}\n\nexport interface OnlineAccessInfo {\n /**\n * How long the access token is valid for, in seconds.\n */\n expires_in: number;\n /**\n * The effective set of scopes for the session.\n */\n associated_user_scope: string;\n /**\n * The user associated with the access token.\n */\n associated_user: OnlineAccessUser;\n}\n\nexport interface OfflineAccessInfo {\n /**\n * How long the access token is valid for, in seconds.\n */\n expires_in?: number;\n /**\n * The refresh token for the session.\n */\n refresh_token?: string;\n /**\n * How long the refresh token is valid for, in seconds.\n */\n refresh_token_expires_in?: number;\n}\n\nexport interface OnlineAccessUser {\n /**\n * The user's ID.\n */\n id: number;\n /**\n * The user's first name.\n */\n first_name: string;\n /**\n * The user's last name.\n */\n last_name: string;\n /**\n * The user's email address.\n */\n email: string;\n /**\n * Whether the user has verified their email address.\n */\n email_verified: boolean;\n /**\n * Whether the user is the account owner.\n */\n account_owner: boolean;\n /**\n * The user's locale.\n */\n locale: string;\n /**\n * Whether the user is a collaborator.\n */\n collaborator: boolean;\n}\n\nexport interface OnlineAccessResponse\n extends AccessTokenResponse,\n OnlineAccessInfo {}\n\nexport interface OfflineAccessResponse\n extends AccessTokenResponse,\n OfflineAccessInfo {}\n"],"names":[],"mappings":"AAEO,MAAM,mBAAmB,GAAG;AAC5B,MAAM,iBAAiB,GAAG;;;;"}
@@ -10,6 +10,8 @@ const propertiesToSave = [
10
10
  'scope',
11
11
  'accessToken',
12
12
  'expires',
13
+ 'refreshToken',
14
+ 'refreshTokenExpires',
13
15
  'onlineAccessInfo',
14
16
  ];
15
17
  /**
@@ -29,6 +31,10 @@ class Session {
29
31
  return ['isOnline', value];
30
32
  case 'accesstoken':
31
33
  return ['accessToken', value];
34
+ case 'refreshtoken':
35
+ return ['refreshToken', value];
36
+ case 'refreshtokenexpires':
37
+ return ['refreshTokenExpires', value];
32
38
  case 'onlineaccessinfo':
33
39
  return ['onlineAccessInfo', value];
34
40
  case 'userid':
@@ -68,6 +74,12 @@ class Session {
68
74
  case 'expires':
69
75
  sessionData[key] = value ? new Date(Number(value)) : undefined;
70
76
  break;
77
+ case 'refreshToken':
78
+ sessionData[key] = value ? String(value) : undefined;
79
+ break;
80
+ case 'refreshTokenExpires':
81
+ sessionData[key] = value ? new Date(Number(value)) : undefined;
82
+ break;
71
83
  case 'onlineAccessInfo':
72
84
  onlineAccessInfo.associated_user.id = Number(value);
73
85
  break;
@@ -150,6 +162,14 @@ class Session {
150
162
  * The access token for the session.
151
163
  */
152
164
  accessToken;
165
+ /**
166
+ * The refresh token for the session.
167
+ */
168
+ refreshToken;
169
+ /**
170
+ * The date the refresh token expires.
171
+ */
172
+ refreshTokenExpires;
153
173
  /**
154
174
  * Information on the user for the session. Only present for online sessions.
155
175
  */
@@ -210,6 +230,12 @@ class Session {
210
230
  if (this.accessToken) {
211
231
  object.accessToken = this.accessToken;
212
232
  }
233
+ if (this.refreshToken) {
234
+ object.refreshToken = this.refreshToken;
235
+ }
236
+ if (this.refreshTokenExpires) {
237
+ object.refreshTokenExpires = this.refreshTokenExpires;
238
+ }
213
239
  if (this.onlineAccessInfo) {
214
240
  object.onlineAccessInfo = this.onlineAccessInfo;
215
241
  }
@@ -246,6 +272,8 @@ class Session {
246
272
  switch (key) {
247
273
  case 'expires':
248
274
  return [[key, value ? value.getTime() : undefined]];
275
+ case 'refreshTokenExpires':
276
+ return [[key, value ? value.getTime() : undefined]];
249
277
  case 'onlineAccessInfo':
250
278
  // eslint-disable-next-line no-negated-condition
251
279
  if (!returnUserData) {
@@ -1 +1 @@
1
- {"version":3,"file":"session.mjs","sources":["../../../../../../lib/session/session.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\nimport {InvalidSession} from '../error';\nimport {OnlineAccessInfo} from '../auth/oauth/types';\nimport {AuthScopes} from '../auth/scopes';\n\nimport {SessionParams} from './types';\n\nconst propertiesToSave = [\n 'id',\n 'shop',\n 'state',\n 'isOnline',\n 'scope',\n 'accessToken',\n 'expires',\n 'onlineAccessInfo',\n];\n\n/**\n * Stores App information from logged in merchants so they can make authenticated requests to the Admin API.\n */\nexport class Session {\n public static fromPropertyArray(\n entries: [string, string | number | boolean][],\n returnUserData = false,\n ): Session {\n if (!Array.isArray(entries)) {\n throw new InvalidSession(\n 'The parameter is not an array: a Session cannot be created from this object.',\n );\n }\n\n const obj = Object.fromEntries(\n entries\n .filter(([_key, value]) => value !== null && value !== undefined)\n // Sanitize keys\n .map(([key, value]) => {\n switch (key.toLowerCase()) {\n case 'isonline':\n return ['isOnline', value];\n case 'accesstoken':\n return ['accessToken', value];\n case 'onlineaccessinfo':\n return ['onlineAccessInfo', value];\n case 'userid':\n return ['userId', value];\n case 'firstname':\n return ['firstName', value];\n case 'lastname':\n return ['lastName', value];\n case 'accountowner':\n return ['accountOwner', value];\n case 'emailverified':\n return ['emailVerified', value];\n default:\n return [key.toLowerCase(), value];\n }\n }),\n );\n\n const sessionData = {} as SessionParams;\n const onlineAccessInfo = {\n associated_user: {},\n } as OnlineAccessInfo;\n Object.entries(obj).forEach(([key, value]) => {\n switch (key) {\n case 'isOnline':\n if (typeof value === 'string') {\n sessionData[key] = value.toString().toLowerCase() === 'true';\n } else if (typeof value === 'number') {\n sessionData[key] = Boolean(value);\n } else {\n sessionData[key] = value;\n }\n break;\n case 'scope':\n sessionData[key] = value.toString();\n break;\n case 'expires':\n sessionData[key] = value ? new Date(Number(value)) : undefined;\n break;\n case 'onlineAccessInfo':\n onlineAccessInfo.associated_user.id = Number(value);\n break;\n case 'userId':\n if (returnUserData) {\n onlineAccessInfo.associated_user.id = Number(value);\n break;\n }\n case 'firstName':\n if (returnUserData) {\n onlineAccessInfo.associated_user.first_name = String(value);\n break;\n }\n case 'lastName':\n if (returnUserData) {\n onlineAccessInfo.associated_user.last_name = String(value);\n break;\n }\n case 'email':\n if (returnUserData) {\n onlineAccessInfo.associated_user.email = String(value);\n break;\n }\n case 'accountOwner':\n if (returnUserData) {\n onlineAccessInfo.associated_user.account_owner = Boolean(value);\n break;\n }\n case 'locale':\n if (returnUserData) {\n onlineAccessInfo.associated_user.locale = String(value);\n break;\n }\n case 'collaborator':\n if (returnUserData) {\n onlineAccessInfo.associated_user.collaborator = Boolean(value);\n break;\n }\n case 'emailVerified':\n if (returnUserData) {\n onlineAccessInfo.associated_user.email_verified = Boolean(value);\n break;\n }\n // Return any user keys as passed in\n default:\n sessionData[key] = value;\n }\n });\n if (sessionData.isOnline) {\n sessionData.onlineAccessInfo = onlineAccessInfo;\n }\n const session = new Session(sessionData);\n return session;\n }\n\n /**\n * The unique identifier for the session.\n */\n readonly id: string;\n /**\n * The Shopify shop domain, such as `example.myshopify.com`.\n */\n public shop: string;\n /**\n * The state of the session. Used for the OAuth authentication code flow.\n */\n public state: string;\n /**\n * Whether the access token in the session is online or offline.\n */\n public isOnline: boolean;\n /**\n * The desired scopes for the access token, at the time the session was created.\n */\n public scope?: string;\n /**\n * The date the access token expires.\n */\n public expires?: Date;\n /**\n * The access token for the session.\n */\n public accessToken?: string;\n /**\n * Information on the user for the session. Only present for online sessions.\n */\n public onlineAccessInfo?: OnlineAccessInfo;\n\n constructor(params: SessionParams) {\n Object.assign(this, params);\n }\n\n /**\n * Whether the session is active. Active sessions have an access token that is not expired, and has has the given\n * scopes if scopes is equal to a truthy value.\n */\n public isActive(\n scopes: AuthScopes | string | string[] | undefined,\n withinMillisecondsOfExpiry = 500,\n ): boolean {\n const hasAccessToken = Boolean(this.accessToken);\n const isTokenNotExpired = !this.isExpired(withinMillisecondsOfExpiry);\n const isScopeChanged = this.isScopeChanged(scopes);\n return !isScopeChanged && hasAccessToken && isTokenNotExpired;\n }\n\n /**\n * Whether the access token includes the given scopes if they are provided.\n */\n public isScopeChanged(\n scopes: AuthScopes | string | string[] | undefined,\n ): boolean {\n if (typeof scopes === 'undefined') {\n return false;\n }\n\n return !this.isScopeIncluded(scopes);\n }\n\n /**\n * Whether the access token includes the given scopes.\n */\n public isScopeIncluded(scopes: AuthScopes | string | string[]): boolean {\n const requiredScopes =\n scopes instanceof AuthScopes ? scopes : new AuthScopes(scopes);\n const sessionScopes = new AuthScopes(this.scope);\n\n return sessionScopes.has(requiredScopes);\n }\n\n /**\n * Whether the access token is expired.\n */\n public isExpired(withinMillisecondsOfExpiry = 0): boolean {\n return Boolean(\n this.expires &&\n this.expires.getTime() - withinMillisecondsOfExpiry < Date.now(),\n );\n }\n\n /**\n * Converts an object with data into a Session.\n */\n public toObject(): SessionParams {\n const object: SessionParams = {\n id: this.id,\n shop: this.shop,\n state: this.state,\n isOnline: this.isOnline,\n };\n\n if (this.scope) {\n object.scope = this.scope;\n }\n if (this.expires) {\n object.expires = this.expires;\n }\n if (this.accessToken) {\n object.accessToken = this.accessToken;\n }\n if (this.onlineAccessInfo) {\n object.onlineAccessInfo = this.onlineAccessInfo;\n }\n return object;\n }\n\n /**\n * Checks whether the given session is equal to this session.\n */\n public equals(other: Session | undefined): boolean {\n if (!other) return false;\n\n const mandatoryPropsMatch =\n this.id === other.id &&\n this.shop === other.shop &&\n this.state === other.state &&\n this.isOnline === other.isOnline;\n\n if (!mandatoryPropsMatch) return false;\n\n const copyA = this.toPropertyArray(true);\n copyA.sort(([k1], [k2]) => (k1 < k2 ? -1 : 1));\n\n const copyB = other.toPropertyArray(true);\n copyB.sort(([k1], [k2]) => (k1 < k2 ? -1 : 1));\n\n return JSON.stringify(copyA) === JSON.stringify(copyB);\n }\n\n /**\n * Converts the session into an array of key-value pairs.\n */\n public toPropertyArray(\n returnUserData = false,\n ): [string, string | number | boolean][] {\n return (\n Object.entries(this)\n .filter(\n ([key, value]) =>\n propertiesToSave.includes(key) &&\n value !== undefined &&\n value !== null,\n )\n // Prepare values for db storage\n .flatMap(([key, value]): [string, string | number | boolean][] => {\n switch (key) {\n case 'expires':\n return [[key, value ? value.getTime() : undefined]];\n case 'onlineAccessInfo':\n // eslint-disable-next-line no-negated-condition\n if (!returnUserData) {\n return [[key, value.associated_user.id]];\n } else {\n return [\n ['userId', value?.associated_user?.id],\n ['firstName', value?.associated_user?.first_name],\n ['lastName', value?.associated_user?.last_name],\n ['email', value?.associated_user?.email],\n ['locale', value?.associated_user?.locale],\n ['emailVerified', value?.associated_user?.email_verified],\n ['accountOwner', value?.associated_user?.account_owner],\n ['collaborator', value?.associated_user?.collaborator],\n ];\n }\n default:\n return [[key, value]];\n }\n })\n // Filter out tuples with undefined values\n .filter(([_key, value]) => value !== undefined)\n );\n }\n}\n"],"names":[],"mappings":";;;AAAA;AAOA,MAAM,gBAAgB,GAAG;IACvB,IAAI;IACJ,MAAM;IACN,OAAO;IACP,UAAU;IACV,OAAO;IACP,aAAa;IACb,SAAS;IACT,kBAAkB;CACnB;AAED;;AAEG;MACU,OAAO,CAAA;AACX,IAAA,OAAO,iBAAiB,CAC7B,OAA8C,EAC9C,cAAc,GAAG,KAAK,EAAA;QAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,cAAc,CACtB,8EAA8E,CAC/E;QACH;AAEA,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,CAC5B;AACG,aAAA,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;;aAE/D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACpB,YAAA,QAAQ,GAAG,CAAC,WAAW,EAAE;AACvB,gBAAA,KAAK,UAAU;AACb,oBAAA,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;AAC5B,gBAAA,KAAK,aAAa;AAChB,oBAAA,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC;AAC/B,gBAAA,KAAK,kBAAkB;AACrB,oBAAA,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC;AACpC,gBAAA,KAAK,QAAQ;AACX,oBAAA,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC1B,gBAAA,KAAK,WAAW;AACd,oBAAA,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC;AAC7B,gBAAA,KAAK,UAAU;AACb,oBAAA,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;AAC5B,gBAAA,KAAK,cAAc;AACjB,oBAAA,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC;AAChC,gBAAA,KAAK,eAAe;AAClB,oBAAA,OAAO,CAAC,eAAe,EAAE,KAAK,CAAC;AACjC,gBAAA;oBACE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC;;QAEvC,CAAC,CAAC,CACL;QAED,MAAM,WAAW,GAAG,EAAmB;AACvC,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,eAAe,EAAE,EAAE;SACA;AACrB,QAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC3C,QAAQ,GAAG;AACT,gBAAA,KAAK,UAAU;AACb,oBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,wBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM;oBAC9D;AAAO,yBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;wBACpC,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;oBACnC;yBAAO;AACL,wBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK;oBAC1B;oBACA;AACF,gBAAA,KAAK,OAAO;oBACV,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE;oBACnC;AACF,gBAAA,KAAK,SAAS;oBACZ,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;oBAC9D;AACF,gBAAA,KAAK,kBAAkB;oBACrB,gBAAgB,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;oBACnD;AACF,gBAAA,KAAK,QAAQ;oBACX,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC;wBACnD;oBACF;AACF,gBAAA,KAAK,WAAW;oBACd,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;wBAC3D;oBACF;AACF,gBAAA,KAAK,UAAU;oBACb,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;wBAC1D;oBACF;AACF,gBAAA,KAAK,OAAO;oBACV,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;wBACtD;oBACF;AACF,gBAAA,KAAK,cAAc;oBACjB,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;wBAC/D;oBACF;AACF,gBAAA,KAAK,QAAQ;oBACX,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;wBACvD;oBACF;AACF,gBAAA,KAAK,cAAc;oBACjB,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;wBAC9D;oBACF;AACF,gBAAA,KAAK,eAAe;oBAClB,IAAI,cAAc,EAAE;wBAClB,gBAAgB,CAAC,eAAe,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;wBAChE;oBACF;;AAEF,gBAAA;AACE,oBAAA,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK;;AAE9B,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;AACxB,YAAA,WAAW,CAAC,gBAAgB,GAAG,gBAAgB;QACjD;AACA,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC;AACxC,QAAA,OAAO,OAAO;IAChB;AAEA;;AAEG;AACM,IAAA,EAAE;AACX;;AAEG;AACI,IAAA,IAAI;AACX;;AAEG;AACI,IAAA,KAAK;AACZ;;AAEG;AACI,IAAA,QAAQ;AACf;;AAEG;AACI,IAAA,KAAK;AACZ;;AAEG;AACI,IAAA,OAAO;AACd;;AAEG;AACI,IAAA,WAAW;AAClB;;AAEG;AACI,IAAA,gBAAgB;AAEvB,IAAA,WAAA,CAAY,MAAqB,EAAA;AAC/B,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;IAC7B;AAEA;;;AAGG;AACI,IAAA,QAAQ,CACb,MAAkD,EAClD,0BAA0B,GAAG,GAAG,EAAA;QAEhC,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;QAChD,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC;QACrE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAClD,QAAA,OAAO,CAAC,cAAc,IAAI,cAAc,IAAI,iBAAiB;IAC/D;AAEA;;AAEG;AACI,IAAA,cAAc,CACnB,MAAkD,EAAA;AAElD,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACtC;AAEA;;AAEG;AACI,IAAA,eAAe,CAAC,MAAsC,EAAA;AAC3D,QAAA,MAAM,cAAc,GAClB,MAAM,YAAY,UAAU,GAAG,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;AAEhD,QAAA,OAAO,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;IAC1C;AAEA;;AAEG;IACI,SAAS,CAAC,0BAA0B,GAAG,CAAC,EAAA;AAC7C,QAAA,OAAO,OAAO,CACZ,IAAI,CAAC,OAAO;AACV,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,0BAA0B,GAAG,IAAI,CAAC,GAAG,EAAE,CACnE;IACH;AAEA;;AAEG;IACI,QAAQ,GAAA;AACb,QAAA,MAAM,MAAM,GAAkB;YAC5B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;QAC3B;AACA,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;QAC/B;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QACvC;AACA,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;QACjD;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACI,IAAA,MAAM,CAAC,KAA0B,EAAA;AACtC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,KAAK;QAExB,MAAM,mBAAmB,GACvB,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;AACxB,YAAA,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AAC1B,YAAA,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;AAElC,QAAA,IAAI,CAAC,mBAAmB;AAAE,YAAA,OAAO,KAAK;QAEtC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACxC,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAE9C,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC;AACzC,QAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE9C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;IACxD;AAEA;;AAEG;IACI,eAAe,CACpB,cAAc,GAAG,KAAK,EAAA;AAEtB,QAAA,QACE,MAAM,CAAC,OAAO,CAAC,IAAI;AAChB,aAAA,MAAM,CACL,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KACX,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC9B,YAAA,KAAK,KAAK,SAAS;YACnB,KAAK,KAAK,IAAI;;aAGjB,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAA2C;YAC/D,QAAQ,GAAG;AACT,gBAAA,KAAK,SAAS;AACZ,oBAAA,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;AACrD,gBAAA,KAAK,kBAAkB;;oBAErB,IAAI,CAAC,cAAc,EAAE;wBACnB,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC1C;yBAAO;wBACL,OAAO;AACL,4BAAA,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC;AACtC,4BAAA,CAAC,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC;AACjD,4BAAA,CAAC,UAAU,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,CAAC;AAC/C,4BAAA,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,CAAC;AACxC,4BAAA,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,CAAC;AAC1C,4BAAA,CAAC,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,CAAC;AACzD,4BAAA,CAAC,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,aAAa,CAAC;AACvD,4BAAA,CAAC,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC;yBACvD;oBACH;AACF,gBAAA;AACE,oBAAA,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;AAE3B,QAAA,CAAC;;AAEA,aAAA,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;IAErD;AACD;;;;"}
1
+ {"version":3,"file":"session.mjs","sources":["../../../../../../lib/session/session.ts"],"sourcesContent":["/* eslint-disable no-fallthrough */\nimport {InvalidSession} from '../error';\nimport {OnlineAccessInfo} from '../auth/oauth/types';\nimport {AuthScopes} from '../auth/scopes';\n\nimport {SessionParams} from './types';\n\nconst propertiesToSave = [\n 'id',\n 'shop',\n 'state',\n 'isOnline',\n 'scope',\n 'accessToken',\n 'expires',\n 'refreshToken',\n 'refreshTokenExpires',\n 'onlineAccessInfo',\n];\n\n/**\n * Stores App information from logged in merchants so they can make authenticated requests to the Admin API.\n */\nexport class Session {\n public static fromPropertyArray(\n entries: [string, string | number | boolean][],\n returnUserData = false,\n ): Session {\n if (!Array.isArray(entries)) {\n throw new InvalidSession(\n 'The parameter is not an array: a Session cannot be created from this object.',\n );\n }\n\n const obj = Object.fromEntries(\n entries\n .filter(([_key, value]) => value !== null && value !== undefined)\n // Sanitize keys\n .map(([key, value]) => {\n switch (key.toLowerCase()) {\n case 'isonline':\n return ['isOnline', value];\n case 'accesstoken':\n return ['accessToken', value];\n case 'refreshtoken':\n return ['refreshToken', value];\n case 'refreshtokenexpires':\n return ['refreshTokenExpires', value];\n case 'onlineaccessinfo':\n return ['onlineAccessInfo', value];\n case 'userid':\n return ['userId', value];\n case 'firstname':\n return ['firstName', value];\n case 'lastname':\n return ['lastName', value];\n case 'accountowner':\n return ['accountOwner', value];\n case 'emailverified':\n return ['emailVerified', value];\n default:\n return [key.toLowerCase(), value];\n }\n }),\n );\n\n const sessionData = {} as SessionParams;\n const onlineAccessInfo = {\n associated_user: {},\n } as OnlineAccessInfo;\n Object.entries(obj).forEach(([key, value]) => {\n switch (key) {\n case 'isOnline':\n if (typeof value === 'string') {\n sessionData[key] = value.toString().toLowerCase() === 'true';\n } else if (typeof value === 'number') {\n sessionData[key] = Boolean(value);\n } else {\n sessionData[key] = value;\n }\n break;\n case 'scope':\n sessionData[key] = value.toString();\n break;\n case 'expires':\n sessionData[key] = value ? new Date(Number(value)) : undefined;\n break;\n case 'refreshToken':\n sessionData[key] = value ? String(value) : undefined;\n break;\n case 'refreshTokenExpires':\n sessionData[key] = value ? new Date(Number(value)) : undefined;\n break;\n case 'onlineAccessInfo':\n onlineAccessInfo.associated_user.id = Number(value);\n break;\n case 'userId':\n if (returnUserData) {\n onlineAccessInfo.associated_user.id = Number(value);\n break;\n }\n case 'firstName':\n if (returnUserData) {\n onlineAccessInfo.associated_user.first_name = String(value);\n break;\n }\n case 'lastName':\n if (returnUserData) {\n onlineAccessInfo.associated_user.last_name = String(value);\n break;\n }\n case 'email':\n if (returnUserData) {\n onlineAccessInfo.associated_user.email = String(value);\n break;\n }\n case 'accountOwner':\n if (returnUserData) {\n onlineAccessInfo.associated_user.account_owner = Boolean(value);\n break;\n }\n case 'locale':\n if (returnUserData) {\n onlineAccessInfo.associated_user.locale = String(value);\n break;\n }\n case 'collaborator':\n if (returnUserData) {\n onlineAccessInfo.associated_user.collaborator = Boolean(value);\n break;\n }\n case 'emailVerified':\n if (returnUserData) {\n onlineAccessInfo.associated_user.email_verified = Boolean(value);\n break;\n }\n // Return any user keys as passed in\n default:\n sessionData[key] = value;\n }\n });\n if (sessionData.isOnline) {\n sessionData.onlineAccessInfo = onlineAccessInfo;\n }\n const session = new Session(sessionData);\n return session;\n }\n\n /**\n * The unique identifier for the session.\n */\n readonly id: string;\n /**\n * The Shopify shop domain, such as `example.myshopify.com`.\n */\n public shop: string;\n /**\n * The state of the session. Used for the OAuth authentication code flow.\n */\n public state: string;\n /**\n * Whether the access token in the session is online or offline.\n */\n public isOnline: boolean;\n /**\n * The desired scopes for the access token, at the time the session was created.\n */\n public scope?: string;\n /**\n * The date the access token expires.\n */\n public expires?: Date;\n /**\n * The access token for the session.\n */\n public accessToken?: string;\n /**\n * The refresh token for the session.\n */\n public refreshToken?: string;\n /**\n * The date the refresh token expires.\n */\n public refreshTokenExpires?: Date;\n /**\n * Information on the user for the session. Only present for online sessions.\n */\n public onlineAccessInfo?: OnlineAccessInfo;\n\n constructor(params: SessionParams) {\n Object.assign(this, params);\n }\n\n /**\n * Whether the session is active. Active sessions have an access token that is not expired, and has has the given\n * scopes if scopes is equal to a truthy value.\n */\n public isActive(\n scopes: AuthScopes | string | string[] | undefined,\n withinMillisecondsOfExpiry = 500,\n ): boolean {\n const hasAccessToken = Boolean(this.accessToken);\n const isTokenNotExpired = !this.isExpired(withinMillisecondsOfExpiry);\n const isScopeChanged = this.isScopeChanged(scopes);\n return !isScopeChanged && hasAccessToken && isTokenNotExpired;\n }\n\n /**\n * Whether the access token includes the given scopes if they are provided.\n */\n public isScopeChanged(\n scopes: AuthScopes | string | string[] | undefined,\n ): boolean {\n if (typeof scopes === 'undefined') {\n return false;\n }\n\n return !this.isScopeIncluded(scopes);\n }\n\n /**\n * Whether the access token includes the given scopes.\n */\n public isScopeIncluded(scopes: AuthScopes | string | string[]): boolean {\n const requiredScopes =\n scopes instanceof AuthScopes ? scopes : new AuthScopes(scopes);\n const sessionScopes = new AuthScopes(this.scope);\n\n return sessionScopes.has(requiredScopes);\n }\n\n /**\n * Whether the access token is expired.\n */\n public isExpired(withinMillisecondsOfExpiry = 0): boolean {\n return Boolean(\n this.expires &&\n this.expires.getTime() - withinMillisecondsOfExpiry < Date.now(),\n );\n }\n\n /**\n * Converts an object with data into a Session.\n */\n public toObject(): SessionParams {\n const object: SessionParams = {\n id: this.id,\n shop: this.shop,\n state: this.state,\n isOnline: this.isOnline,\n };\n\n if (this.scope) {\n object.scope = this.scope;\n }\n if (this.expires) {\n object.expires = this.expires;\n }\n if (this.accessToken) {\n object.accessToken = this.accessToken;\n }\n if (this.refreshToken) {\n object.refreshToken = this.refreshToken;\n }\n if (this.refreshTokenExpires) {\n object.refreshTokenExpires = this.refreshTokenExpires;\n }\n if (this.onlineAccessInfo) {\n object.onlineAccessInfo = this.onlineAccessInfo;\n }\n return object;\n }\n\n /**\n * Checks whether the given session is equal to this session.\n */\n public equals(other: Session | undefined): boolean {\n if (!other) return false;\n\n const mandatoryPropsMatch =\n this.id === other.id &&\n this.shop === other.shop &&\n this.state === other.state &&\n this.isOnline === other.isOnline;\n\n if (!mandatoryPropsMatch) return false;\n\n const copyA = this.toPropertyArray(true);\n copyA.sort(([k1], [k2]) => (k1 < k2 ? -1 : 1));\n\n const copyB = other.toPropertyArray(true);\n copyB.sort(([k1], [k2]) => (k1 < k2 ? -1 : 1));\n\n return JSON.stringify(copyA) === JSON.stringify(copyB);\n }\n\n /**\n * Converts the session into an array of key-value pairs.\n */\n public toPropertyArray(\n returnUserData = false,\n ): [string, string | number | boolean][] {\n return (\n Object.entries(this)\n .filter(\n ([key, value]) =>\n propertiesToSave.includes(key) &&\n value !== undefined &&\n value !== null,\n )\n // Prepare values for db storage\n .flatMap(([key, value]): [string, string | number | boolean][] => {\n switch (key) {\n case 'expires':\n return [[key, value ? value.getTime() : undefined]];\n case 'refreshTokenExpires':\n return [[key, value ? value.getTime() : undefined]];\n case 'onlineAccessInfo':\n // eslint-disable-next-line no-negated-condition\n if (!returnUserData) {\n return [[key, value.associated_user.id]];\n } else {\n return [\n ['userId', value?.associated_user?.id],\n ['firstName', value?.associated_user?.first_name],\n ['lastName', value?.associated_user?.last_name],\n ['email', value?.associated_user?.email],\n ['locale', value?.associated_user?.locale],\n ['emailVerified', value?.associated_user?.email_verified],\n ['accountOwner', value?.associated_user?.account_owner],\n ['collaborator', value?.associated_user?.collaborator],\n ];\n }\n default:\n return [[key, value]];\n }\n })\n // Filter out tuples with undefined values\n .filter(([_key, value]) => value !== undefined)\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ var ApiVersion;
21
21
  ApiVersion["July25"] = "2025-07";
22
22
  ApiVersion["October25"] = "2025-10";
23
23
  ApiVersion["January26"] = "2026-01";
24
+ ApiVersion["April26"] = "2026-04";
24
25
  ApiVersion["Unstable"] = "unstable";
25
26
  })(ApiVersion || (ApiVersion = {}));
26
27
  const LIBRARY_NAME = 'Shopify API Library';
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sources":["../../../../../lib/types.ts"],"sourcesContent":["export enum LogSeverity {\n Error,\n Warning,\n Info,\n Debug,\n}\n\nexport enum ApiVersion {\n October22 = '2022-10',\n January23 = '2023-01',\n April23 = '2023-04',\n July23 = '2023-07',\n October23 = '2023-10',\n January24 = '2024-01',\n April24 = '2024-04',\n July24 = '2024-07',\n October24 = '2024-10',\n January25 = '2025-01',\n April25 = '2025-04',\n July25 = '2025-07',\n October25 = '2025-10',\n January26 = '2026-01',\n Unstable = 'unstable',\n}\n\nexport const LIBRARY_NAME = 'Shopify API Library';\n\n/* eslint-disable @shopify/typescript/prefer-pascal-case-enums */\nexport enum ShopifyHeader {\n AccessToken = 'X-Shopify-Access-Token',\n ApiVersion = 'X-Shopify-API-Version',\n Domain = 'X-Shopify-Shop-Domain',\n Hmac = 'X-Shopify-Hmac-Sha256',\n Topic = 'X-Shopify-Topic',\n SubTopic = 'X-Shopify-Sub-Topic',\n WebhookId = 'X-Shopify-Webhook-Id',\n StorefrontPrivateToken = 'Shopify-Storefront-Private-Token',\n StorefrontSDKVariant = 'X-SDK-Variant',\n StorefrontSDKVersion = 'X-SDK-Version',\n}\n/* eslint-enable @shopify/typescript/prefer-pascal-case-enums */\n\nexport enum ClientType {\n Rest = 'rest',\n Graphql = 'graphql',\n}\n\nexport const privacyTopics: string[] = [\n 'CUSTOMERS_DATA_REQUEST',\n 'CUSTOMERS_REDACT',\n 'SHOP_REDACT',\n];\n\nexport enum BillingInterval {\n OneTime = 'ONE_TIME',\n Every30Days = 'EVERY_30_DAYS',\n Annual = 'ANNUAL',\n Usage = 'USAGE',\n}\n\nexport type RecurringBillingIntervals = Exclude<\n BillingInterval,\n BillingInterval.OneTime\n>;\n\nexport enum BillingReplacementBehavior {\n ApplyImmediately = 'APPLY_IMMEDIATELY',\n ApplyOnNextBillingCycle = 'APPLY_ON_NEXT_BILLING_CYCLE',\n Standard = 'STANDARD',\n}\n\nexport enum StatusCode {\n Continue = 100,\n SwitchingProtocols = 101,\n Ok = 200,\n Created = 201,\n Accepted = 202,\n NonAuthoritativeInformation = 203,\n NoContent = 204,\n ResetContent = 205,\n PartialContent = 206,\n MultipleChoices = 300,\n MovedPermanently = 301,\n Found = 302,\n SeeOther = 303,\n NotModified = 304,\n UseProxy = 305,\n TemporaryRedirect = 307,\n BadRequest = 400,\n Unauthorized = 401,\n PaymentRequired = 402,\n Forbidden = 403,\n NotFound = 404,\n MethodNotAllowed = 405,\n NotAcceptable = 406,\n ProxyAuthenticationRequired = 407,\n RequestTimeout = 408,\n Conflict = 409,\n Gone = 410,\n LengthRequired = 411,\n PreconditionFailed = 412,\n RequestEntityTooLarge = 413,\n RequestUriTooLong = 414,\n UnsupportedMediaType = 415,\n RequestedRangeNotSatisfiable = 416,\n ExpectationFailed = 417,\n ImATeapot = 418,\n UnprocessableEntity = 422,\n TooManyRequests = 429,\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HttpVersionNotSupported = 505,\n}\n\nexport enum Method {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Patch = 'PATCH',\n Delete = 'DELETE',\n Head = 'HEAD',\n Options = 'OPTIONS',\n Connect = 'CONNECT',\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.mjs","sources":["../../../../../lib/types.ts"],"sourcesContent":["export enum LogSeverity {\n Error,\n Warning,\n Info,\n Debug,\n}\n\nexport enum ApiVersion {\n October22 = '2022-10',\n January23 = '2023-01',\n April23 = '2023-04',\n July23 = '2023-07',\n October23 = '2023-10',\n January24 = '2024-01',\n April24 = '2024-04',\n July24 = '2024-07',\n October24 = '2024-10',\n January25 = '2025-01',\n April25 = '2025-04',\n July25 = '2025-07',\n October25 = '2025-10',\n January26 = '2026-01',\n April26 = '2026-04',\n Unstable = 'unstable',\n}\n\nexport const LIBRARY_NAME = 'Shopify API Library';\n\n/* eslint-disable @shopify/typescript/prefer-pascal-case-enums */\nexport enum ShopifyHeader {\n AccessToken = 'X-Shopify-Access-Token',\n ApiVersion = 'X-Shopify-API-Version',\n Domain = 'X-Shopify-Shop-Domain',\n Hmac = 'X-Shopify-Hmac-Sha256',\n Topic = 'X-Shopify-Topic',\n SubTopic = 'X-Shopify-Sub-Topic',\n WebhookId = 'X-Shopify-Webhook-Id',\n StorefrontPrivateToken = 'Shopify-Storefront-Private-Token',\n StorefrontSDKVariant = 'X-SDK-Variant',\n StorefrontSDKVersion = 'X-SDK-Version',\n}\n/* eslint-enable @shopify/typescript/prefer-pascal-case-enums */\n\nexport enum ClientType {\n Rest = 'rest',\n Graphql = 'graphql',\n}\n\nexport const privacyTopics: string[] = [\n 'CUSTOMERS_DATA_REQUEST',\n 'CUSTOMERS_REDACT',\n 'SHOP_REDACT',\n];\n\nexport enum BillingInterval {\n OneTime = 'ONE_TIME',\n Every30Days = 'EVERY_30_DAYS',\n Annual = 'ANNUAL',\n Usage = 'USAGE',\n}\n\nexport type RecurringBillingIntervals = Exclude<\n BillingInterval,\n BillingInterval.OneTime\n>;\n\nexport enum BillingReplacementBehavior {\n ApplyImmediately = 'APPLY_IMMEDIATELY',\n ApplyOnNextBillingCycle = 'APPLY_ON_NEXT_BILLING_CYCLE',\n Standard = 'STANDARD',\n}\n\nexport enum StatusCode {\n Continue = 100,\n SwitchingProtocols = 101,\n Ok = 200,\n Created = 201,\n Accepted = 202,\n NonAuthoritativeInformation = 203,\n NoContent = 204,\n ResetContent = 205,\n PartialContent = 206,\n MultipleChoices = 300,\n MovedPermanently = 301,\n Found = 302,\n SeeOther = 303,\n NotModified = 304,\n UseProxy = 305,\n TemporaryRedirect = 307,\n BadRequest = 400,\n Unauthorized = 401,\n PaymentRequired = 402,\n Forbidden = 403,\n NotFound = 404,\n MethodNotAllowed = 405,\n NotAcceptable = 406,\n ProxyAuthenticationRequired = 407,\n RequestTimeout = 408,\n Conflict = 409,\n Gone = 410,\n LengthRequired = 411,\n PreconditionFailed = 412,\n RequestEntityTooLarge = 413,\n RequestUriTooLong = 414,\n UnsupportedMediaType = 415,\n RequestedRangeNotSatisfiable = 416,\n ExpectationFailed = 417,\n ImATeapot = 418,\n UnprocessableEntity = 422,\n TooManyRequests = 429,\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HttpVersionNotSupported = 505,\n}\n\nexport enum Method {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Patch = 'PATCH',\n Delete = 'DELETE',\n Head = 'HEAD',\n Options = 'OPTIONS',\n Connect = 'CONNECT',\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- const SHOPIFY_API_LIBRARY_VERSION = '12.1.2';
1
+ const SHOPIFY_API_LIBRARY_VERSION = '12.3.0';
2
2
 
3
3
  export { SHOPIFY_API_LIBRARY_VERSION };
4
4
  //# sourceMappingURL=version.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","sources":["../../../../../lib/version.ts"],"sourcesContent":["export const SHOPIFY_API_LIBRARY_VERSION = '12.1.2';\n"],"names":[],"mappings":"AAAO,MAAM,2BAA2B,GAAG;;;;"}
1
+ {"version":3,"file":"version.mjs","sources":["../../../../../lib/version.ts"],"sourcesContent":["export const SHOPIFY_API_LIBRARY_VERSION = '12.3.0';\n"],"names":[],"mappings":"AAAO,MAAM,2BAA2B,GAAG;;;;"}