@aimee.shop/sdk 0.0.1

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 (479) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +144 -0
  3. package/dist/browser/browser-auth.d.ts +115 -0
  4. package/dist/browser/browser-auth.d.ts.map +1 -0
  5. package/dist/browser/browser-auth.js +234 -0
  6. package/dist/browser/browser-auth.js.map +1 -0
  7. package/dist/browser/index.d.ts +62 -0
  8. package/dist/browser/index.d.ts.map +1 -0
  9. package/dist/browser/index.js +69 -0
  10. package/dist/browser/index.js.map +1 -0
  11. package/dist/core/auth/api-key.authenticator.d.ts +16 -0
  12. package/dist/core/auth/api-key.authenticator.d.ts.map +1 -0
  13. package/dist/core/auth/api-key.authenticator.js +28 -0
  14. package/dist/core/auth/api-key.authenticator.js.map +1 -0
  15. package/dist/core/auth/auth-chain.d.ts +33 -0
  16. package/dist/core/auth/auth-chain.d.ts.map +1 -0
  17. package/dist/core/auth/auth-chain.js +65 -0
  18. package/dist/core/auth/auth-chain.js.map +1 -0
  19. package/dist/core/auth/authenticator.d.ts +19 -0
  20. package/dist/core/auth/authenticator.d.ts.map +1 -0
  21. package/dist/core/auth/authenticator.js +2 -0
  22. package/dist/core/auth/authenticator.js.map +1 -0
  23. package/dist/core/auth/cognito.authenticator.d.ts +28 -0
  24. package/dist/core/auth/cognito.authenticator.d.ts.map +1 -0
  25. package/dist/core/auth/cognito.authenticator.js +89 -0
  26. package/dist/core/auth/cognito.authenticator.js.map +1 -0
  27. package/dist/core/auth/index.d.ts +8 -0
  28. package/dist/core/auth/index.d.ts.map +1 -0
  29. package/dist/core/auth/index.js +6 -0
  30. package/dist/core/auth/index.js.map +1 -0
  31. package/dist/core/auth/interactive.authenticator.d.ts +22 -0
  32. package/dist/core/auth/interactive.authenticator.d.ts.map +1 -0
  33. package/dist/core/auth/interactive.authenticator.js +126 -0
  34. package/dist/core/auth/interactive.authenticator.js.map +1 -0
  35. package/dist/core/auth/lazy-interactive.authenticator.d.ts +51 -0
  36. package/dist/core/auth/lazy-interactive.authenticator.d.ts.map +1 -0
  37. package/dist/core/auth/lazy-interactive.authenticator.js +112 -0
  38. package/dist/core/auth/lazy-interactive.authenticator.js.map +1 -0
  39. package/dist/core/auth/token.authenticator.d.ts +20 -0
  40. package/dist/core/auth/token.authenticator.d.ts.map +1 -0
  41. package/dist/core/auth/token.authenticator.js +45 -0
  42. package/dist/core/auth/token.authenticator.js.map +1 -0
  43. package/dist/core/config.d.ts +72 -0
  44. package/dist/core/config.d.ts.map +1 -0
  45. package/dist/core/config.js +120 -0
  46. package/dist/core/config.js.map +1 -0
  47. package/dist/core/errors/index.d.ts +101 -0
  48. package/dist/core/errors/index.d.ts.map +1 -0
  49. package/dist/core/errors/index.js +119 -0
  50. package/dist/core/errors/index.js.map +1 -0
  51. package/dist/core/events/event-envelope.d.ts +34 -0
  52. package/dist/core/events/event-envelope.d.ts.map +1 -0
  53. package/dist/core/events/event-envelope.js +2 -0
  54. package/dist/core/events/event-envelope.js.map +1 -0
  55. package/dist/core/events/event-names.d.ts +552 -0
  56. package/dist/core/events/event-names.d.ts.map +1 -0
  57. package/dist/core/events/event-names.js +593 -0
  58. package/dist/core/events/event-names.js.map +1 -0
  59. package/dist/core/events/index.d.ts +4 -0
  60. package/dist/core/events/index.d.ts.map +1 -0
  61. package/dist/core/events/index.js +11 -0
  62. package/dist/core/events/index.js.map +1 -0
  63. package/dist/core/http-client.d.ts +88 -0
  64. package/dist/core/http-client.d.ts.map +1 -0
  65. package/dist/core/http-client.js +293 -0
  66. package/dist/core/http-client.js.map +1 -0
  67. package/dist/core/retry.d.ts +48 -0
  68. package/dist/core/retry.d.ts.map +1 -0
  69. package/dist/core/retry.js +57 -0
  70. package/dist/core/retry.js.map +1 -0
  71. package/dist/core/sdk.d.ts +153 -0
  72. package/dist/core/sdk.d.ts.map +1 -0
  73. package/dist/core/sdk.js +327 -0
  74. package/dist/core/sdk.js.map +1 -0
  75. package/dist/core/types/address.d.ts +18 -0
  76. package/dist/core/types/address.d.ts.map +1 -0
  77. package/dist/core/types/address.js +2 -0
  78. package/dist/core/types/address.js.map +1 -0
  79. package/dist/core/types/geo.d.ts +59 -0
  80. package/dist/core/types/geo.d.ts.map +1 -0
  81. package/dist/core/types/geo.js +78 -0
  82. package/dist/core/types/geo.js.map +1 -0
  83. package/dist/core/types/pagination.d.ts +42 -0
  84. package/dist/core/types/pagination.d.ts.map +1 -0
  85. package/dist/core/types/pagination.js +2 -0
  86. package/dist/core/types/pagination.js.map +1 -0
  87. package/dist/index.d.ts +68 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +37 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/services/core/assets.client.d.ts +520 -0
  92. package/dist/services/core/assets.client.d.ts.map +1 -0
  93. package/dist/services/core/assets.client.js +297 -0
  94. package/dist/services/core/assets.client.js.map +1 -0
  95. package/dist/services/core/base-resource.d.ts +70 -0
  96. package/dist/services/core/base-resource.d.ts.map +1 -0
  97. package/dist/services/core/base-resource.js +97 -0
  98. package/dist/services/core/base-resource.js.map +1 -0
  99. package/dist/services/core/cart-messages/cart-messages.client.d.ts +30 -0
  100. package/dist/services/core/cart-messages/cart-messages.client.d.ts.map +1 -0
  101. package/dist/services/core/cart-messages/cart-messages.client.js +30 -0
  102. package/dist/services/core/cart-messages/cart-messages.client.js.map +1 -0
  103. package/dist/services/core/cart-messages/index.d.ts +4 -0
  104. package/dist/services/core/cart-messages/index.d.ts.map +1 -0
  105. package/dist/services/core/cart-messages/index.js +3 -0
  106. package/dist/services/core/cart-messages/index.js.map +1 -0
  107. package/dist/services/core/cart-messages/types.d.ts +106 -0
  108. package/dist/services/core/cart-messages/types.d.ts.map +1 -0
  109. package/dist/services/core/cart-messages/types.js +6 -0
  110. package/dist/services/core/cart-messages/types.js.map +1 -0
  111. package/dist/services/core/carts.client.d.ts +253 -0
  112. package/dist/services/core/carts.client.d.ts.map +1 -0
  113. package/dist/services/core/carts.client.js +110 -0
  114. package/dist/services/core/carts.client.js.map +1 -0
  115. package/dist/services/core/categories.client.d.ts +105 -0
  116. package/dist/services/core/categories.client.d.ts.map +1 -0
  117. package/dist/services/core/categories.client.js +135 -0
  118. package/dist/services/core/categories.client.js.map +1 -0
  119. package/dist/services/core/checkout.client.d.ts +414 -0
  120. package/dist/services/core/checkout.client.d.ts.map +1 -0
  121. package/dist/services/core/checkout.client.js +153 -0
  122. package/dist/services/core/checkout.client.js.map +1 -0
  123. package/dist/services/core/cms/cms.client.d.ts +111 -0
  124. package/dist/services/core/cms/cms.client.d.ts.map +1 -0
  125. package/dist/services/core/cms/cms.client.js +148 -0
  126. package/dist/services/core/cms/cms.client.js.map +1 -0
  127. package/dist/services/core/cms/collections.client.d.ts +45 -0
  128. package/dist/services/core/cms/collections.client.d.ts.map +1 -0
  129. package/dist/services/core/cms/collections.client.js +67 -0
  130. package/dist/services/core/cms/collections.client.js.map +1 -0
  131. package/dist/services/core/cms/content-types.client.d.ts +101 -0
  132. package/dist/services/core/cms/content-types.client.d.ts.map +1 -0
  133. package/dist/services/core/cms/content-types.client.js +143 -0
  134. package/dist/services/core/cms/content-types.client.js.map +1 -0
  135. package/dist/services/core/cms/entries.client.d.ts +187 -0
  136. package/dist/services/core/cms/entries.client.d.ts.map +1 -0
  137. package/dist/services/core/cms/entries.client.js +265 -0
  138. package/dist/services/core/cms/entries.client.js.map +1 -0
  139. package/dist/services/core/cms/index.d.ts +10 -0
  140. package/dist/services/core/cms/index.d.ts.map +1 -0
  141. package/dist/services/core/cms/index.js +10 -0
  142. package/dist/services/core/cms/index.js.map +1 -0
  143. package/dist/services/core/cms/media.client.d.ts +63 -0
  144. package/dist/services/core/cms/media.client.d.ts.map +1 -0
  145. package/dist/services/core/cms/media.client.js +95 -0
  146. package/dist/services/core/cms/media.client.js.map +1 -0
  147. package/dist/services/core/cms/modules.client.d.ts +64 -0
  148. package/dist/services/core/cms/modules.client.d.ts.map +1 -0
  149. package/dist/services/core/cms/modules.client.js +88 -0
  150. package/dist/services/core/cms/modules.client.js.map +1 -0
  151. package/dist/services/core/cms/navigation.client.d.ts +78 -0
  152. package/dist/services/core/cms/navigation.client.d.ts.map +1 -0
  153. package/dist/services/core/cms/navigation.client.js +116 -0
  154. package/dist/services/core/cms/navigation.client.js.map +1 -0
  155. package/dist/services/core/cms/public.client.d.ts +64 -0
  156. package/dist/services/core/cms/public.client.d.ts.map +1 -0
  157. package/dist/services/core/cms/public.client.js +102 -0
  158. package/dist/services/core/cms/public.client.js.map +1 -0
  159. package/dist/services/core/cms/types.d.ts +804 -0
  160. package/dist/services/core/cms/types.d.ts.map +1 -0
  161. package/dist/services/core/cms/types.js +43 -0
  162. package/dist/services/core/cms/types.js.map +1 -0
  163. package/dist/services/core/customers.client.d.ts +285 -0
  164. package/dist/services/core/customers.client.d.ts.map +1 -0
  165. package/dist/services/core/customers.client.js +133 -0
  166. package/dist/services/core/customers.client.js.map +1 -0
  167. package/dist/services/core/discounts.client.d.ts +197 -0
  168. package/dist/services/core/discounts.client.d.ts.map +1 -0
  169. package/dist/services/core/discounts.client.js +81 -0
  170. package/dist/services/core/discounts.client.js.map +1 -0
  171. package/dist/services/core/exports/exports.client.d.ts +55 -0
  172. package/dist/services/core/exports/exports.client.d.ts.map +1 -0
  173. package/dist/services/core/exports/exports.client.js +80 -0
  174. package/dist/services/core/exports/exports.client.js.map +1 -0
  175. package/dist/services/core/exports/index.d.ts +4 -0
  176. package/dist/services/core/exports/index.d.ts.map +1 -0
  177. package/dist/services/core/exports/index.js +3 -0
  178. package/dist/services/core/exports/index.js.map +1 -0
  179. package/dist/services/core/exports/types.d.ts +68 -0
  180. package/dist/services/core/exports/types.d.ts.map +1 -0
  181. package/dist/services/core/exports/types.js +25 -0
  182. package/dist/services/core/exports/types.js.map +1 -0
  183. package/dist/services/core/facets.client.d.ts +127 -0
  184. package/dist/services/core/facets.client.d.ts.map +1 -0
  185. package/dist/services/core/facets.client.js +81 -0
  186. package/dist/services/core/facets.client.js.map +1 -0
  187. package/dist/services/core/fulfillments.client.d.ts +94 -0
  188. package/dist/services/core/fulfillments.client.d.ts.map +1 -0
  189. package/dist/services/core/fulfillments.client.js +66 -0
  190. package/dist/services/core/fulfillments.client.js.map +1 -0
  191. package/dist/services/core/inventory/adjustments.client.d.ts +60 -0
  192. package/dist/services/core/inventory/adjustments.client.d.ts.map +1 -0
  193. package/dist/services/core/inventory/adjustments.client.js +76 -0
  194. package/dist/services/core/inventory/adjustments.client.js.map +1 -0
  195. package/dist/services/core/inventory/index.d.ts +8 -0
  196. package/dist/services/core/inventory/index.d.ts.map +1 -0
  197. package/dist/services/core/inventory/index.js +7 -0
  198. package/dist/services/core/inventory/index.js.map +1 -0
  199. package/dist/services/core/inventory/inventory.client.d.ts +90 -0
  200. package/dist/services/core/inventory/inventory.client.d.ts.map +1 -0
  201. package/dist/services/core/inventory/inventory.client.js +135 -0
  202. package/dist/services/core/inventory/inventory.client.js.map +1 -0
  203. package/dist/services/core/inventory/locations.client.d.ts +71 -0
  204. package/dist/services/core/inventory/locations.client.d.ts.map +1 -0
  205. package/dist/services/core/inventory/locations.client.js +107 -0
  206. package/dist/services/core/inventory/locations.client.js.map +1 -0
  207. package/dist/services/core/inventory/reservations.client.d.ts +58 -0
  208. package/dist/services/core/inventory/reservations.client.d.ts.map +1 -0
  209. package/dist/services/core/inventory/reservations.client.js +87 -0
  210. package/dist/services/core/inventory/reservations.client.js.map +1 -0
  211. package/dist/services/core/inventory/stock.client.d.ts +74 -0
  212. package/dist/services/core/inventory/stock.client.d.ts.map +1 -0
  213. package/dist/services/core/inventory/stock.client.js +113 -0
  214. package/dist/services/core/inventory/stock.client.js.map +1 -0
  215. package/dist/services/core/inventory/types.d.ts +337 -0
  216. package/dist/services/core/inventory/types.d.ts.map +1 -0
  217. package/dist/services/core/inventory/types.js +2 -0
  218. package/dist/services/core/inventory/types.js.map +1 -0
  219. package/dist/services/core/invoices.client.d.ts +92 -0
  220. package/dist/services/core/invoices.client.d.ts.map +1 -0
  221. package/dist/services/core/invoices.client.js +68 -0
  222. package/dist/services/core/invoices.client.js.map +1 -0
  223. package/dist/services/core/notification-config.client.d.ts +57 -0
  224. package/dist/services/core/notification-config.client.d.ts.map +1 -0
  225. package/dist/services/core/notification-config.client.js +41 -0
  226. package/dist/services/core/notification-config.client.js.map +1 -0
  227. package/dist/services/core/openai-feed.client.d.ts +90 -0
  228. package/dist/services/core/openai-feed.client.d.ts.map +1 -0
  229. package/dist/services/core/openai-feed.client.js +63 -0
  230. package/dist/services/core/openai-feed.client.js.map +1 -0
  231. package/dist/services/core/option-types.client.d.ts +119 -0
  232. package/dist/services/core/option-types.client.d.ts.map +1 -0
  233. package/dist/services/core/option-types.client.js +81 -0
  234. package/dist/services/core/option-types.client.js.map +1 -0
  235. package/dist/services/core/option-values.client.d.ts +72 -0
  236. package/dist/services/core/option-values.client.d.ts.map +1 -0
  237. package/dist/services/core/option-values.client.js +64 -0
  238. package/dist/services/core/option-values.client.js.map +1 -0
  239. package/dist/services/core/order-edits.client.d.ts +88 -0
  240. package/dist/services/core/order-edits.client.d.ts.map +1 -0
  241. package/dist/services/core/order-edits.client.js +62 -0
  242. package/dist/services/core/order-edits.client.js.map +1 -0
  243. package/dist/services/core/orders.client.d.ts +284 -0
  244. package/dist/services/core/orders.client.d.ts.map +1 -0
  245. package/dist/services/core/orders.client.js +150 -0
  246. package/dist/services/core/orders.client.js.map +1 -0
  247. package/dist/services/core/pricing/currencies.client.d.ts +109 -0
  248. package/dist/services/core/pricing/currencies.client.d.ts.map +1 -0
  249. package/dist/services/core/pricing/currencies.client.js +145 -0
  250. package/dist/services/core/pricing/currencies.client.js.map +1 -0
  251. package/dist/services/core/pricing/customer-groups.client.d.ts +126 -0
  252. package/dist/services/core/pricing/customer-groups.client.d.ts.map +1 -0
  253. package/dist/services/core/pricing/customer-groups.client.js +154 -0
  254. package/dist/services/core/pricing/customer-groups.client.js.map +1 -0
  255. package/dist/services/core/pricing/geo-zones.client.d.ts +89 -0
  256. package/dist/services/core/pricing/geo-zones.client.d.ts.map +1 -0
  257. package/dist/services/core/pricing/geo-zones.client.js +116 -0
  258. package/dist/services/core/pricing/geo-zones.client.js.map +1 -0
  259. package/dist/services/core/pricing/index.d.ts +13 -0
  260. package/dist/services/core/pricing/index.d.ts.map +1 -0
  261. package/dist/services/core/pricing/index.js +13 -0
  262. package/dist/services/core/pricing/index.js.map +1 -0
  263. package/dist/services/core/pricing/markets.client.d.ts +154 -0
  264. package/dist/services/core/pricing/markets.client.d.ts.map +1 -0
  265. package/dist/services/core/pricing/markets.client.js +194 -0
  266. package/dist/services/core/pricing/markets.client.js.map +1 -0
  267. package/dist/services/core/pricing/pricing.client.d.ts +280 -0
  268. package/dist/services/core/pricing/pricing.client.d.ts.map +1 -0
  269. package/dist/services/core/pricing/pricing.client.js +363 -0
  270. package/dist/services/core/pricing/pricing.client.js.map +1 -0
  271. package/dist/services/core/pricing/product-geo-restrictions.client.d.ts +79 -0
  272. package/dist/services/core/pricing/product-geo-restrictions.client.d.ts.map +1 -0
  273. package/dist/services/core/pricing/product-geo-restrictions.client.js +109 -0
  274. package/dist/services/core/pricing/product-geo-restrictions.client.js.map +1 -0
  275. package/dist/services/core/pricing/product-market-settings.client.d.ts +168 -0
  276. package/dist/services/core/pricing/product-market-settings.client.d.ts.map +1 -0
  277. package/dist/services/core/pricing/product-market-settings.client.js +213 -0
  278. package/dist/services/core/pricing/product-market-settings.client.js.map +1 -0
  279. package/dist/services/core/pricing/rules.client.d.ts +46 -0
  280. package/dist/services/core/pricing/rules.client.d.ts.map +1 -0
  281. package/dist/services/core/pricing/rules.client.js +57 -0
  282. package/dist/services/core/pricing/rules.client.js.map +1 -0
  283. package/dist/services/core/pricing/store-markets.client.d.ts +168 -0
  284. package/dist/services/core/pricing/store-markets.client.d.ts.map +1 -0
  285. package/dist/services/core/pricing/store-markets.client.js +209 -0
  286. package/dist/services/core/pricing/store-markets.client.js.map +1 -0
  287. package/dist/services/core/pricing/tiers.client.d.ts +57 -0
  288. package/dist/services/core/pricing/tiers.client.d.ts.map +1 -0
  289. package/dist/services/core/pricing/tiers.client.js +72 -0
  290. package/dist/services/core/pricing/tiers.client.js.map +1 -0
  291. package/dist/services/core/pricing/types.d.ts +782 -0
  292. package/dist/services/core/pricing/types.d.ts.map +1 -0
  293. package/dist/services/core/pricing/types.js +2 -0
  294. package/dist/services/core/pricing/types.js.map +1 -0
  295. package/dist/services/core/pricing/variant-prices.client.d.ts +307 -0
  296. package/dist/services/core/pricing/variant-prices.client.d.ts.map +1 -0
  297. package/dist/services/core/pricing/variant-prices.client.js +347 -0
  298. package/dist/services/core/pricing/variant-prices.client.js.map +1 -0
  299. package/dist/services/core/product-relations.client.d.ts +260 -0
  300. package/dist/services/core/product-relations.client.d.ts.map +1 -0
  301. package/dist/services/core/product-relations.client.js +141 -0
  302. package/dist/services/core/product-relations.client.js.map +1 -0
  303. package/dist/services/core/products.client.d.ts +564 -0
  304. package/dist/services/core/products.client.d.ts.map +1 -0
  305. package/dist/services/core/products.client.js +277 -0
  306. package/dist/services/core/products.client.js.map +1 -0
  307. package/dist/services/core/returns.client.d.ts +199 -0
  308. package/dist/services/core/returns.client.d.ts.map +1 -0
  309. package/dist/services/core/returns.client.js +106 -0
  310. package/dist/services/core/returns.client.js.map +1 -0
  311. package/dist/services/core/reviews.client.d.ts +218 -0
  312. package/dist/services/core/reviews.client.d.ts.map +1 -0
  313. package/dist/services/core/reviews.client.js +161 -0
  314. package/dist/services/core/reviews.client.js.map +1 -0
  315. package/dist/services/core/search.client.d.ts +127 -0
  316. package/dist/services/core/search.client.d.ts.map +1 -0
  317. package/dist/services/core/search.client.js +120 -0
  318. package/dist/services/core/search.client.js.map +1 -0
  319. package/dist/services/core/shipping/classes.client.d.ts +20 -0
  320. package/dist/services/core/shipping/classes.client.d.ts.map +1 -0
  321. package/dist/services/core/shipping/classes.client.js +43 -0
  322. package/dist/services/core/shipping/classes.client.js.map +1 -0
  323. package/dist/services/core/shipping/index.d.ts +11 -0
  324. package/dist/services/core/shipping/index.d.ts.map +1 -0
  325. package/dist/services/core/shipping/index.js +11 -0
  326. package/dist/services/core/shipping/index.js.map +1 -0
  327. package/dist/services/core/shipping/labels.client.d.ts +20 -0
  328. package/dist/services/core/shipping/labels.client.d.ts.map +1 -0
  329. package/dist/services/core/shipping/labels.client.js +49 -0
  330. package/dist/services/core/shipping/labels.client.js.map +1 -0
  331. package/dist/services/core/shipping/providers.client.d.ts +19 -0
  332. package/dist/services/core/shipping/providers.client.d.ts.map +1 -0
  333. package/dist/services/core/shipping/providers.client.js +46 -0
  334. package/dist/services/core/shipping/providers.client.js.map +1 -0
  335. package/dist/services/core/shipping/rates.client.d.ts +19 -0
  336. package/dist/services/core/shipping/rates.client.d.ts.map +1 -0
  337. package/dist/services/core/shipping/rates.client.js +37 -0
  338. package/dist/services/core/shipping/rates.client.js.map +1 -0
  339. package/dist/services/core/shipping/rules.client.d.ts +17 -0
  340. package/dist/services/core/shipping/rules.client.d.ts.map +1 -0
  341. package/dist/services/core/shipping/rules.client.js +34 -0
  342. package/dist/services/core/shipping/rules.client.js.map +1 -0
  343. package/dist/services/core/shipping/shipper-identity.client.d.ts +49 -0
  344. package/dist/services/core/shipping/shipper-identity.client.d.ts.map +1 -0
  345. package/dist/services/core/shipping/shipper-identity.client.js +61 -0
  346. package/dist/services/core/shipping/shipper-identity.client.js.map +1 -0
  347. package/dist/services/core/shipping/shipping.client.d.ts +99 -0
  348. package/dist/services/core/shipping/shipping.client.d.ts.map +1 -0
  349. package/dist/services/core/shipping/shipping.client.js +165 -0
  350. package/dist/services/core/shipping/shipping.client.js.map +1 -0
  351. package/dist/services/core/shipping/store-providers.client.d.ts +48 -0
  352. package/dist/services/core/shipping/store-providers.client.d.ts.map +1 -0
  353. package/dist/services/core/shipping/store-providers.client.js +59 -0
  354. package/dist/services/core/shipping/store-providers.client.js.map +1 -0
  355. package/dist/services/core/shipping/types.d.ts +488 -0
  356. package/dist/services/core/shipping/types.d.ts.map +1 -0
  357. package/dist/services/core/shipping/types.js +3 -0
  358. package/dist/services/core/shipping/types.js.map +1 -0
  359. package/dist/services/core/shipping/zones.client.d.ts +16 -0
  360. package/dist/services/core/shipping/zones.client.d.ts.map +1 -0
  361. package/dist/services/core/shipping/zones.client.js +29 -0
  362. package/dist/services/core/shipping/zones.client.js.map +1 -0
  363. package/dist/services/core/storefront/index.d.ts +10 -0
  364. package/dist/services/core/storefront/index.d.ts.map +1 -0
  365. package/dist/services/core/storefront/index.js +10 -0
  366. package/dist/services/core/storefront/index.js.map +1 -0
  367. package/dist/services/core/storefront/storefront-addresses.client.d.ts +67 -0
  368. package/dist/services/core/storefront/storefront-addresses.client.d.ts.map +1 -0
  369. package/dist/services/core/storefront/storefront-addresses.client.js +95 -0
  370. package/dist/services/core/storefront/storefront-addresses.client.js.map +1 -0
  371. package/dist/services/core/storefront/storefront-auth.client.d.ts +104 -0
  372. package/dist/services/core/storefront/storefront-auth.client.d.ts.map +1 -0
  373. package/dist/services/core/storefront/storefront-auth.client.js +132 -0
  374. package/dist/services/core/storefront/storefront-auth.client.js.map +1 -0
  375. package/dist/services/core/storefront/storefront-orders.client.d.ts +73 -0
  376. package/dist/services/core/storefront/storefront-orders.client.d.ts.map +1 -0
  377. package/dist/services/core/storefront/storefront-orders.client.js +78 -0
  378. package/dist/services/core/storefront/storefront-orders.client.js.map +1 -0
  379. package/dist/services/core/storefront/storefront-plans.client.d.ts +76 -0
  380. package/dist/services/core/storefront/storefront-plans.client.d.ts.map +1 -0
  381. package/dist/services/core/storefront/storefront-plans.client.js +52 -0
  382. package/dist/services/core/storefront/storefront-plans.client.js.map +1 -0
  383. package/dist/services/core/storefront/storefront-reviews.client.d.ts +60 -0
  384. package/dist/services/core/storefront/storefront-reviews.client.d.ts.map +1 -0
  385. package/dist/services/core/storefront/storefront-reviews.client.js +88 -0
  386. package/dist/services/core/storefront/storefront-reviews.client.js.map +1 -0
  387. package/dist/services/core/storefront/storefront-subscriptions.client.d.ts +199 -0
  388. package/dist/services/core/storefront/storefront-subscriptions.client.d.ts.map +1 -0
  389. package/dist/services/core/storefront/storefront-subscriptions.client.js +149 -0
  390. package/dist/services/core/storefront/storefront-subscriptions.client.js.map +1 -0
  391. package/dist/services/core/storefront/storefront.client.d.ts +166 -0
  392. package/dist/services/core/storefront/storefront.client.d.ts.map +1 -0
  393. package/dist/services/core/storefront/storefront.client.js +228 -0
  394. package/dist/services/core/storefront/storefront.client.js.map +1 -0
  395. package/dist/services/core/storefront/types.d.ts +131 -0
  396. package/dist/services/core/storefront/types.d.ts.map +1 -0
  397. package/dist/services/core/storefront/types.js +3 -0
  398. package/dist/services/core/storefront/types.js.map +1 -0
  399. package/dist/services/core/storefront-redirects/index.d.ts +4 -0
  400. package/dist/services/core/storefront-redirects/index.d.ts.map +1 -0
  401. package/dist/services/core/storefront-redirects/index.js +3 -0
  402. package/dist/services/core/storefront-redirects/index.js.map +1 -0
  403. package/dist/services/core/storefront-redirects/storefront-redirects.client.d.ts +79 -0
  404. package/dist/services/core/storefront-redirects/storefront-redirects.client.d.ts.map +1 -0
  405. package/dist/services/core/storefront-redirects/storefront-redirects.client.js +132 -0
  406. package/dist/services/core/storefront-redirects/storefront-redirects.client.js.map +1 -0
  407. package/dist/services/core/storefront-redirects/storefront-redirects.public.client.d.ts +35 -0
  408. package/dist/services/core/storefront-redirects/storefront-redirects.public.client.d.ts.map +1 -0
  409. package/dist/services/core/storefront-redirects/storefront-redirects.public.client.js +42 -0
  410. package/dist/services/core/storefront-redirects/storefront-redirects.public.client.js.map +1 -0
  411. package/dist/services/core/storefront-redirects/types.d.ts +117 -0
  412. package/dist/services/core/storefront-redirects/types.d.ts.map +1 -0
  413. package/dist/services/core/storefront-redirects/types.js +2 -0
  414. package/dist/services/core/storefront-redirects/types.js.map +1 -0
  415. package/dist/services/core/stores/ai-discovery.client.d.ts +98 -0
  416. package/dist/services/core/stores/ai-discovery.client.d.ts.map +1 -0
  417. package/dist/services/core/stores/ai-discovery.client.js +72 -0
  418. package/dist/services/core/stores/ai-discovery.client.js.map +1 -0
  419. package/dist/services/core/stores/configuration.client.d.ts +238 -0
  420. package/dist/services/core/stores/configuration.client.d.ts.map +1 -0
  421. package/dist/services/core/stores/configuration.client.js +88 -0
  422. package/dist/services/core/stores/configuration.client.js.map +1 -0
  423. package/dist/services/core/stores/index.d.ts +11 -0
  424. package/dist/services/core/stores/index.d.ts.map +1 -0
  425. package/dist/services/core/stores/index.js +6 -0
  426. package/dist/services/core/stores/index.js.map +1 -0
  427. package/dist/services/core/stores/members.client.d.ts +91 -0
  428. package/dist/services/core/stores/members.client.d.ts.map +1 -0
  429. package/dist/services/core/stores/members.client.js +70 -0
  430. package/dist/services/core/stores/members.client.js.map +1 -0
  431. package/dist/services/core/stores/stores.client.d.ts +190 -0
  432. package/dist/services/core/stores/stores.client.d.ts.map +1 -0
  433. package/dist/services/core/stores/stores.client.js +177 -0
  434. package/dist/services/core/stores/stores.client.js.map +1 -0
  435. package/dist/services/core/stores/theme.types.d.ts +109 -0
  436. package/dist/services/core/stores/theme.types.d.ts.map +1 -0
  437. package/dist/services/core/stores/theme.types.js +27 -0
  438. package/dist/services/core/stores/theme.types.js.map +1 -0
  439. package/dist/services/core/taxes/index.d.ts +7 -0
  440. package/dist/services/core/taxes/index.d.ts.map +1 -0
  441. package/dist/services/core/taxes/index.js +7 -0
  442. package/dist/services/core/taxes/index.js.map +1 -0
  443. package/dist/services/core/taxes/jurisdictions.client.d.ts +61 -0
  444. package/dist/services/core/taxes/jurisdictions.client.d.ts.map +1 -0
  445. package/dist/services/core/taxes/jurisdictions.client.js +93 -0
  446. package/dist/services/core/taxes/jurisdictions.client.js.map +1 -0
  447. package/dist/services/core/taxes/providers.client.d.ts +111 -0
  448. package/dist/services/core/taxes/providers.client.d.ts.map +1 -0
  449. package/dist/services/core/taxes/providers.client.js +188 -0
  450. package/dist/services/core/taxes/providers.client.js.map +1 -0
  451. package/dist/services/core/taxes/rates.client.d.ts +63 -0
  452. package/dist/services/core/taxes/rates.client.d.ts.map +1 -0
  453. package/dist/services/core/taxes/rates.client.js +97 -0
  454. package/dist/services/core/taxes/rates.client.js.map +1 -0
  455. package/dist/services/core/taxes/store-providers.client.d.ts +48 -0
  456. package/dist/services/core/taxes/store-providers.client.d.ts.map +1 -0
  457. package/dist/services/core/taxes/store-providers.client.js +59 -0
  458. package/dist/services/core/taxes/store-providers.client.js.map +1 -0
  459. package/dist/services/core/taxes/taxes.client.d.ts +81 -0
  460. package/dist/services/core/taxes/taxes.client.d.ts.map +1 -0
  461. package/dist/services/core/taxes/taxes.client.js +117 -0
  462. package/dist/services/core/taxes/taxes.client.js.map +1 -0
  463. package/dist/services/core/taxes/types.d.ts +406 -0
  464. package/dist/services/core/taxes/types.d.ts.map +1 -0
  465. package/dist/services/core/taxes/types.js +3 -0
  466. package/dist/services/core/taxes/types.js.map +1 -0
  467. package/dist/services/core/variants.client.d.ts +415 -0
  468. package/dist/services/core/variants.client.d.ts.map +1 -0
  469. package/dist/services/core/variants.client.js +289 -0
  470. package/dist/services/core/variants.client.js.map +1 -0
  471. package/dist/services/core/wishlists.client.d.ts +151 -0
  472. package/dist/services/core/wishlists.client.d.ts.map +1 -0
  473. package/dist/services/core/wishlists.client.js +125 -0
  474. package/dist/services/core/wishlists.client.js.map +1 -0
  475. package/dist/storefront/index.d.ts +152 -0
  476. package/dist/storefront/index.d.ts.map +1 -0
  477. package/dist/storefront/index.js +189 -0
  478. package/dist/storefront/index.js.map +1 -0
  479. package/package.json +66 -0
@@ -0,0 +1,88 @@
1
+ import { type AxiosRequestConfig } from 'axios';
2
+ import type { AuthChain } from './auth/auth-chain.js';
3
+ import { ZiftrError } from './errors/index.js';
4
+ import { type RetryOptions } from './retry.js';
5
+ /**
6
+ * Configuration options for the HTTP client
7
+ */
8
+ export interface HttpClientOptions {
9
+ /** Request timeout in milliseconds */
10
+ timeout: number;
11
+ /** Enable debug logging */
12
+ debug: boolean;
13
+ /** Auth chain for adding authorization headers */
14
+ authChain: AuthChain;
15
+ /** Function to get current tenant ID */
16
+ getTenantId: () => string | undefined;
17
+ /** Function to get current store ID */
18
+ getStoreId: () => string | undefined;
19
+ /** Optional request interceptor hook */
20
+ onRequest?: (config: AxiosRequestConfig) => AxiosRequestConfig | Promise<AxiosRequestConfig>;
21
+ /** Optional response interceptor hook */
22
+ onResponse?: <T>(response: T) => T | Promise<T>;
23
+ /** Optional error handler hook. Called once per request, after retries are exhausted */
24
+ onError?: (error: ZiftrError) => void | Promise<void>;
25
+ /** Automatic retry policy. On by default; disable with { enabled: false } */
26
+ retry?: RetryOptions;
27
+ /** Wait implementation between retries; injectable for deterministic tests */
28
+ sleepFn?: (ms: number) => Promise<void>;
29
+ /** Randomness source for backoff jitter in [0, 1); injectable for deterministic tests */
30
+ randomFn?: () => number;
31
+ }
32
+ /**
33
+ * Structural transport interface used by resource clients.
34
+ *
35
+ * Resource clients depend on this shape instead of the concrete HttpClient class so platform
36
+ * packages can consume the public SDK HttpClient instance without duplicating private class
37
+ * identity across package builds.
38
+ */
39
+ export interface HttpClientTransport {
40
+ getTenantId(): string | undefined;
41
+ get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
42
+ post<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
43
+ patch<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
44
+ put<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
45
+ delete<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
46
+ stream(url: string, data?: unknown): Promise<Response>;
47
+ }
48
+ /**
49
+ * HTTP client wrapper around axios with:
50
+ * - Automatic auth header injection
51
+ * - Tenant/store context headers
52
+ * - Error transformation to typed ZiftrError classes
53
+ * - Debug logging
54
+ * - Request/response hooks
55
+ */
56
+ export declare class HttpClient implements HttpClientTransport {
57
+ private readonly client;
58
+ private readonly options;
59
+ private readonly retryPolicy;
60
+ private readonly sleep;
61
+ private readonly random;
62
+ constructor(options: HttpClientOptions);
63
+ /**
64
+ * Get the current tenant ID from the SDK context.
65
+ * Used by RBAC clients that need tenant_id as a query parameter.
66
+ */
67
+ getTenantId(): string | undefined;
68
+ private setupInterceptors;
69
+ /**
70
+ * Run a request through the retry policy. Re-invoking fn() re-runs the request
71
+ * interceptor, so each attempt gets fresh auth/tenant headers.
72
+ */
73
+ private withRetry;
74
+ private reportError;
75
+ private transformError;
76
+ /**
77
+ * POST and return the raw streaming Response (SSE). NOT retried: the request is
78
+ * non-idempotent and the body may be partially consumed by the time an error surfaces.
79
+ */
80
+ stream(url: string, data?: unknown): Promise<Response>;
81
+ private transformStreamError;
82
+ get<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
83
+ post<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
84
+ patch<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
85
+ put<T>(url: string, data?: unknown, config?: AxiosRequestConfig): Promise<T>;
86
+ delete<T>(url: string, config?: AxiosRequestConfig): Promise<T>;
87
+ }
88
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../../src/core/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,293 @@
1
+ import axios from 'axios';
2
+ import { ZiftrError, ApiError, AuthenticationError, AuthorizationError, ConfigurationError, ValidationError, NotFoundError, ConflictError, NotModifiedError, RateLimitError, } from './errors/index.js';
3
+ import { resolveRetryPolicy, retryDelayMs, shouldRetry, } from './retry.js';
4
+ import { isGeoRestrictedErrorDetails } from './types/geo.js';
5
+ /** Reject CR/LF/NUL so context values cannot smuggle extra HTTP headers. */
6
+ function assertSafeHeaderValue(name, value) {
7
+ if (/[\r\n\0]/.test(value)) {
8
+ throw new ConfigurationError(`Invalid characters in ${name} header value (CR, LF, and NUL are not allowed)`);
9
+ }
10
+ }
11
+ function isRecord(value) {
12
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
13
+ }
14
+ function getStringProperty(record, key) {
15
+ const value = record[key];
16
+ return typeof value === 'string' ? value : undefined;
17
+ }
18
+ function isFieldError(value) {
19
+ if (!isRecord(value))
20
+ return false;
21
+ const field = value.field;
22
+ const message = value.message;
23
+ const code = value.code;
24
+ return (typeof field === 'string' &&
25
+ typeof message === 'string' &&
26
+ (code === undefined || typeof code === 'string'));
27
+ }
28
+ function getFieldErrors(record) {
29
+ const errors = record?.errors;
30
+ if (!Array.isArray(errors))
31
+ return [];
32
+ return errors.filter(isFieldError);
33
+ }
34
+ /**
35
+ * HTTP client wrapper around axios with:
36
+ * - Automatic auth header injection
37
+ * - Tenant/store context headers
38
+ * - Error transformation to typed ZiftrError classes
39
+ * - Debug logging
40
+ * - Request/response hooks
41
+ */
42
+ export class HttpClient {
43
+ client;
44
+ options;
45
+ retryPolicy;
46
+ sleep;
47
+ random;
48
+ constructor(options) {
49
+ this.options = options;
50
+ this.retryPolicy = resolveRetryPolicy(options.retry);
51
+ this.sleep = options.sleepFn ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
52
+ this.random = options.randomFn ?? Math.random;
53
+ this.client = axios.create({
54
+ timeout: options.timeout,
55
+ headers: { 'Content-Type': 'application/json' },
56
+ });
57
+ this.setupInterceptors();
58
+ }
59
+ /**
60
+ * Get the current tenant ID from the SDK context.
61
+ * Used by RBAC clients that need tenant_id as a query parameter.
62
+ */
63
+ getTenantId() {
64
+ return this.options.getTenantId();
65
+ }
66
+ setupInterceptors() {
67
+ // Request interceptor - add auth and tenant headers
68
+ this.client.interceptors.request.use(async (config) => {
69
+ // Add auth headers
70
+ const authHeaders = await this.options.authChain.getAuthHeaders();
71
+ for (const [name, value] of Object.entries(authHeaders)) {
72
+ assertSafeHeaderValue(name, value);
73
+ }
74
+ Object.assign(config.headers, authHeaders);
75
+ // Add tenant context headers
76
+ const tenantId = this.options.getTenantId();
77
+ const storeId = this.options.getStoreId();
78
+ if (tenantId) {
79
+ assertSafeHeaderValue('x-tenant-id', tenantId);
80
+ config.headers['x-tenant-id'] = tenantId;
81
+ }
82
+ if (storeId) {
83
+ assertSafeHeaderValue('x-store-id', storeId);
84
+ config.headers['x-store-id'] = storeId;
85
+ }
86
+ // Per-call headers (e.g. withCustomer Authorization) are not always set via
87
+ // the auth chain; re-check after merge so CRLF cannot slip through.
88
+ const authorization = config.headers.Authorization ?? config.headers.authorization;
89
+ if (typeof authorization === 'string') {
90
+ assertSafeHeaderValue('Authorization', authorization);
91
+ }
92
+ // Debug logging (temporarily disabled)
93
+ // if (this.options.debug) {
94
+ // console.log(`[ZiftrSDK] ${config.method?.toUpperCase()} ${config.url}`);
95
+ // console.log(
96
+ // '[ZiftrSDK] Auth header:',
97
+ // config.headers.Authorization ? 'Bearer ***' : 'MISSING',
98
+ // );
99
+ // console.log('[ZiftrSDK] x-tenant-id:', config.headers['x-tenant-id'] || 'not set');
100
+ // console.log('[ZiftrSDK] x-store-id:', config.headers['x-store-id'] || 'not set');
101
+ // }
102
+ // User hook
103
+ if (this.options.onRequest) {
104
+ const modified = await this.options.onRequest(config);
105
+ Object.assign(config, modified);
106
+ return config;
107
+ }
108
+ return config;
109
+ });
110
+ // Response interceptor - transform errors
111
+ this.client.interceptors.response.use(async (response) => {
112
+ if (this.options.onResponse) {
113
+ return this.options.onResponse(response);
114
+ }
115
+ return response;
116
+ }, async (error) => {
117
+ // onError fires in withRetry once retries are exhausted, not per attempt.
118
+ // ZiftrErrors (e.g. auth-chain failures) pass through untransformed so they
119
+ // keep their real statusCode instead of becoming retryable network errors.
120
+ if (error instanceof ZiftrError)
121
+ throw error;
122
+ if (axios.isAxiosError(error))
123
+ throw this.transformError(error);
124
+ throw error;
125
+ });
126
+ }
127
+ /**
128
+ * Run a request through the retry policy. Re-invoking fn() re-runs the request
129
+ * interceptor, so each attempt gets fresh auth/tenant headers.
130
+ */
131
+ async withRetry(method, fn) {
132
+ let attempt = 1;
133
+ let elapsedDelayMs = 0;
134
+ for (;;) {
135
+ try {
136
+ return await fn();
137
+ }
138
+ catch (error) {
139
+ if (!(error instanceof ZiftrError))
140
+ throw error;
141
+ if (!shouldRetry(error, method, attempt, elapsedDelayMs, this.retryPolicy)) {
142
+ await this.reportError(error);
143
+ throw error;
144
+ }
145
+ const delayMs = retryDelayMs(error, attempt, this.retryPolicy, this.random);
146
+ if (elapsedDelayMs + delayMs > this.retryPolicy.maxTotalDelayMs) {
147
+ await this.reportError(error);
148
+ throw error;
149
+ }
150
+ await this.sleep(delayMs);
151
+ elapsedDelayMs += delayMs;
152
+ attempt += 1;
153
+ }
154
+ }
155
+ }
156
+ async reportError(error) {
157
+ if (this.options.onError) {
158
+ await this.options.onError(error);
159
+ }
160
+ }
161
+ transformError(error) {
162
+ const status = error.response?.status ?? 0;
163
+ const data = isRecord(error.response?.data) ? error.response.data : undefined;
164
+ const message = data ? (getStringProperty(data, 'message') ?? error.message) : error.message;
165
+ switch (status) {
166
+ case 304:
167
+ return new NotModifiedError(message);
168
+ case 400:
169
+ if (isGeoRestrictedErrorDetails(data)) {
170
+ return new ApiError(message, 400, getStringProperty(data, 'code') ?? 'UNKNOWN', data);
171
+ }
172
+ return new ValidationError(message, getFieldErrors(data));
173
+ case 401:
174
+ return new AuthenticationError(message);
175
+ case 403:
176
+ return new AuthorizationError(message);
177
+ case 404:
178
+ return new NotFoundError(message);
179
+ case 409:
180
+ return new ConflictError(message);
181
+ case 429: {
182
+ const retryAfterHeader = error.response?.headers?.['retry-after'];
183
+ const retryAfter = parseInt(typeof retryAfterHeader === 'string' ? retryAfterHeader : '60', 10);
184
+ return new RateLimitError(message, retryAfter);
185
+ }
186
+ default:
187
+ return new ApiError(message, status, data ? (getStringProperty(data, 'code') ?? 'UNKNOWN') : 'UNKNOWN', data);
188
+ }
189
+ }
190
+ // ==================== Streaming ====================
191
+ /**
192
+ * POST and return the raw streaming Response (SSE). NOT retried: the request is
193
+ * non-idempotent and the body may be partially consumed by the time an error surfaces.
194
+ */
195
+ async stream(url, data) {
196
+ const authHeaders = await this.options.authChain.getAuthHeaders();
197
+ for (const [name, value] of Object.entries(authHeaders)) {
198
+ assertSafeHeaderValue(name, value);
199
+ }
200
+ const tenantId = this.options.getTenantId();
201
+ const storeId = this.options.getStoreId();
202
+ const headers = {
203
+ 'Content-Type': 'application/json',
204
+ ...authHeaders,
205
+ };
206
+ if (tenantId) {
207
+ assertSafeHeaderValue('x-tenant-id', tenantId);
208
+ headers['x-tenant-id'] = tenantId;
209
+ }
210
+ if (storeId) {
211
+ assertSafeHeaderValue('x-store-id', storeId);
212
+ headers['x-store-id'] = storeId;
213
+ }
214
+ const response = await fetch(url, {
215
+ method: 'POST',
216
+ headers,
217
+ body: data ? JSON.stringify(data) : undefined,
218
+ });
219
+ if (!response.ok) {
220
+ throw await this.transformStreamError(response);
221
+ }
222
+ return response;
223
+ }
224
+ async transformStreamError(response) {
225
+ let data;
226
+ try {
227
+ const json = await response.json();
228
+ if (isRecord(json))
229
+ data = json;
230
+ }
231
+ catch {
232
+ /* ignore parse errors */
233
+ }
234
+ const message = data
235
+ ? (getStringProperty(data, 'message') ?? response.statusText)
236
+ : response.statusText;
237
+ switch (response.status) {
238
+ case 304:
239
+ return new NotModifiedError(message);
240
+ case 400:
241
+ if (isGeoRestrictedErrorDetails(data)) {
242
+ return new ApiError(message, 400, data ? (getStringProperty(data, 'code') ?? 'UNKNOWN') : 'UNKNOWN', data);
243
+ }
244
+ return new ValidationError(message, getFieldErrors(data));
245
+ case 401:
246
+ return new AuthenticationError(message);
247
+ case 403:
248
+ return new AuthorizationError(message);
249
+ case 404:
250
+ return new NotFoundError(message);
251
+ case 409:
252
+ return new ConflictError(message);
253
+ case 429: {
254
+ const retryAfter = parseInt(response.headers.get('retry-after') ?? '60', 10);
255
+ return new RateLimitError(message, retryAfter);
256
+ }
257
+ default:
258
+ return new ApiError(message, response.status, data ? (getStringProperty(data, 'code') ?? 'UNKNOWN') : 'UNKNOWN', data);
259
+ }
260
+ }
261
+ // ==================== HTTP Methods ====================
262
+ async get(url, config) {
263
+ return this.withRetry('GET', async () => {
264
+ const response = await this.client.get(url, config);
265
+ return response.data;
266
+ });
267
+ }
268
+ async post(url, data, config) {
269
+ return this.withRetry('POST', async () => {
270
+ const response = await this.client.post(url, data, config);
271
+ return response.data;
272
+ });
273
+ }
274
+ async patch(url, data, config) {
275
+ return this.withRetry('PATCH', async () => {
276
+ const response = await this.client.patch(url, data, config);
277
+ return response.data;
278
+ });
279
+ }
280
+ async put(url, data, config) {
281
+ return this.withRetry('PUT', async () => {
282
+ const response = await this.client.put(url, data, config);
283
+ return response.data;
284
+ });
285
+ }
286
+ async delete(url, config) {
287
+ return this.withRetry('DELETE', async () => {
288
+ const response = await this.client.delete(url, config);
289
+ return response.data;
290
+ });
291
+ }
292
+ }
293
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../../src/core/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { type ZiftrError } from './errors/index.js';
2
+ /**
3
+ * Options for automatic retry of failed requests.
4
+ *
5
+ * Retries are ON by default. Policy:
6
+ * - 429 (rate limit) is retried for ALL methods, honoring the server's retry-after.
7
+ * - Idempotent requests (GET/HEAD) are additionally retried on the configured
8
+ * statuses (default 502/503/504) and on network errors (no response).
9
+ * - Waits use full-jitter exponential backoff, capped per-wait by maxDelayMs and
10
+ * across the whole request by maxTotalDelayMs.
11
+ *
12
+ * Disable with `retry: { enabled: false }`.
13
+ */
14
+ export interface RetryOptions {
15
+ /** Enable automatic retries. Default: true */
16
+ enabled?: boolean;
17
+ /** Maximum attempts including the initial request. Default: 3 */
18
+ maxAttempts?: number;
19
+ /** Base delay for exponential backoff in milliseconds. Default: 300 */
20
+ baseDelayMs?: number;
21
+ /** Cap for a single backoff wait in milliseconds (also caps honored retry-after). Default: 10000 */
22
+ maxDelayMs?: number;
23
+ /** Total wait budget across all retries in milliseconds; retrying stops once exceeded. Default: 30000 */
24
+ maxTotalDelayMs?: number;
25
+ /** Statuses retried for idempotent (GET/HEAD) requests. 429 is always retried for all methods. Default: [429, 502, 503, 504] */
26
+ retryStatuses?: number[];
27
+ }
28
+ export type ResolvedRetryPolicy = Required<RetryOptions>;
29
+ export declare const DEFAULT_RETRY_POLICY: ResolvedRetryPolicy;
30
+ export declare function resolveRetryPolicy(options?: RetryOptions): ResolvedRetryPolicy;
31
+ /**
32
+ * Decide whether a failed attempt is eligible for another try.
33
+ *
34
+ * @param attempt 1-based attempt number that just failed
35
+ * @param elapsedDelayMs total time already spent waiting between attempts
36
+ */
37
+ export declare function shouldRetry(error: ZiftrError, method: string, attempt: number, elapsedDelayMs: number, policy: ResolvedRetryPolicy): boolean;
38
+ /**
39
+ * Compute the wait before the next attempt: full-jitter exponential backoff,
40
+ * raised to the server's retry-after for rate limits, capped at maxDelayMs.
41
+ * (transformError defaults retry-after to 60s when the header is absent, so the
42
+ * cap is what keeps a missing header from stalling every attempt for a minute.)
43
+ *
44
+ * @param attempt 1-based attempt number that just failed
45
+ * @param random source of randomness in [0, 1); injectable for deterministic tests
46
+ */
47
+ export declare function retryDelayMs(error: ZiftrError, attempt: number, policy: ResolvedRetryPolicy, random: () => number): number;
48
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../src/core/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAExF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gIAAgI;IAChI,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AAEzD,eAAO,MAAM,oBAAoB,EAAE,mBAOlC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,mBAAmB,CAE9E;AAOD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAiBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,mBAAmB,EAC3B,MAAM,EAAE,MAAM,MAAM,GACnB,MAAM,CASR"}
@@ -0,0 +1,57 @@
1
+ import { ConfigurationError, RateLimitError } from './errors/index.js';
2
+ export const DEFAULT_RETRY_POLICY = {
3
+ enabled: true,
4
+ maxAttempts: 3,
5
+ baseDelayMs: 300,
6
+ maxDelayMs: 10_000,
7
+ maxTotalDelayMs: 30_000,
8
+ retryStatuses: [429, 502, 503, 504],
9
+ };
10
+ export function resolveRetryPolicy(options) {
11
+ return { ...DEFAULT_RETRY_POLICY, ...options };
12
+ }
13
+ const IDEMPOTENT_METHODS = new Set(['GET', 'HEAD']);
14
+ /** statusCode 0 means the request never got a response (network error / timeout) */
15
+ const NETWORK_ERROR_STATUS = 0;
16
+ /**
17
+ * Decide whether a failed attempt is eligible for another try.
18
+ *
19
+ * @param attempt 1-based attempt number that just failed
20
+ * @param elapsedDelayMs total time already spent waiting between attempts
21
+ */
22
+ export function shouldRetry(error, method, attempt, elapsedDelayMs, policy) {
23
+ if (!policy.enabled)
24
+ return false;
25
+ if (attempt >= policy.maxAttempts)
26
+ return false;
27
+ if (elapsedDelayMs >= policy.maxTotalDelayMs)
28
+ return false;
29
+ // Permanent client-side config failures (e.g. header injection guards) share
30
+ // statusCode 0 with network errors; never retry them.
31
+ if (error instanceof ConfigurationError)
32
+ return false;
33
+ // Rate limits are safe to retry regardless of method: the server did not process the request.
34
+ if (error instanceof RateLimitError)
35
+ return true;
36
+ if (!IDEMPOTENT_METHODS.has(method.toUpperCase()))
37
+ return false;
38
+ return (error.statusCode === NETWORK_ERROR_STATUS || policy.retryStatuses.includes(error.statusCode));
39
+ }
40
+ /**
41
+ * Compute the wait before the next attempt: full-jitter exponential backoff,
42
+ * raised to the server's retry-after for rate limits, capped at maxDelayMs.
43
+ * (transformError defaults retry-after to 60s when the header is absent, so the
44
+ * cap is what keeps a missing header from stalling every attempt for a minute.)
45
+ *
46
+ * @param attempt 1-based attempt number that just failed
47
+ * @param random source of randomness in [0, 1); injectable for deterministic tests
48
+ */
49
+ export function retryDelayMs(error, attempt, policy, random) {
50
+ const ceiling = Math.min(policy.maxDelayMs, policy.baseDelayMs * 2 ** (attempt - 1));
51
+ const backoff = random() * ceiling;
52
+ if (error instanceof RateLimitError) {
53
+ return Math.min(Math.max(error.retryAfter * 1000, backoff), policy.maxDelayMs);
54
+ }
55
+ return backoff;
56
+ }
57
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../src/core/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AA+BxF,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,eAAe,EAAE,MAAM;IACvB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CACpC,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,OAAsB;IACvD,OAAO,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpD,oFAAoF;AACpF,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,KAAiB,EACjB,MAAc,EACd,OAAe,EACf,cAAsB,EACtB,MAA2B;IAE3B,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,OAAO,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,cAAc,IAAI,MAAM,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAE3D,6EAA6E;IAC7E,sDAAsD;IACtD,IAAI,KAAK,YAAY,kBAAkB;QAAE,OAAO,KAAK,CAAC;IAEtD,8FAA8F;IAC9F,IAAI,KAAK,YAAY,cAAc;QAAE,OAAO,IAAI,CAAC;IAEjD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhE,OAAO,CACL,KAAK,CAAC,UAAU,KAAK,oBAAoB,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAC7F,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,OAAe,EACf,MAA2B,EAC3B,MAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAEnC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}