@medusajs/medusa 1.3.4 → 2.0.0-next.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 (502) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +27 -0
  3. package/dist/api/middlewares/await-middleware.js +7 -0
  4. package/dist/api/middlewares/await-middleware.js.map +1 -1
  5. package/dist/api/middlewares/error-handler.d.ts +1 -1
  6. package/dist/api/middlewares/error-handler.js.map +1 -1
  7. package/dist/api/middlewares/transform-query.d.ts +1 -1
  8. package/dist/api/middlewares/transform-query.js +2 -0
  9. package/dist/api/middlewares/transform-query.js.map +1 -1
  10. package/dist/api/middlewares/validators/product-existence.d.ts +3 -0
  11. package/dist/api/middlewares/validators/product-existence.js +86 -0
  12. package/dist/api/middlewares/validators/product-existence.js.map +1 -0
  13. package/dist/api/middlewares/validators/sales-channel-existence.d.ts +3 -0
  14. package/dist/api/middlewares/validators/sales-channel-existence.js +86 -0
  15. package/dist/api/middlewares/validators/sales-channel-existence.js.map +1 -0
  16. package/dist/api/routes/admin/auth/create-session.js +10 -2
  17. package/dist/api/routes/admin/auth/create-session.js.map +1 -1
  18. package/dist/api/routes/admin/batch/cancel-batch-job.js +12 -2
  19. package/dist/api/routes/admin/batch/cancel-batch-job.js.map +1 -1
  20. package/dist/api/routes/admin/batch/confirm-batch-job.js +12 -2
  21. package/dist/api/routes/admin/batch/confirm-batch-job.js.map +1 -1
  22. package/dist/api/routes/admin/batch/create-batch-job.js +10 -2
  23. package/dist/api/routes/admin/batch/create-batch-job.js.map +1 -1
  24. package/dist/api/routes/admin/collections/add-products.js +10 -2
  25. package/dist/api/routes/admin/collections/add-products.js.map +1 -1
  26. package/dist/api/routes/admin/collections/create-collection.js +10 -2
  27. package/dist/api/routes/admin/collections/create-collection.js.map +1 -1
  28. package/dist/api/routes/admin/collections/delete-collection.js +10 -2
  29. package/dist/api/routes/admin/collections/delete-collection.js.map +1 -1
  30. package/dist/api/routes/admin/collections/remove-products.js +10 -2
  31. package/dist/api/routes/admin/collections/remove-products.js.map +1 -1
  32. package/dist/api/routes/admin/collections/update-collection.js +10 -2
  33. package/dist/api/routes/admin/collections/update-collection.js.map +1 -1
  34. package/dist/api/routes/admin/customer-groups/add-customers-batch.js +15 -5
  35. package/dist/api/routes/admin/customer-groups/add-customers-batch.js.map +1 -1
  36. package/dist/api/routes/admin/customer-groups/create-customer-group.js +12 -2
  37. package/dist/api/routes/admin/customer-groups/create-customer-group.js.map +1 -1
  38. package/dist/api/routes/admin/customer-groups/delete-customer-group.js +12 -2
  39. package/dist/api/routes/admin/customer-groups/delete-customer-group.js.map +1 -1
  40. package/dist/api/routes/admin/customer-groups/delete-customers-batch.js +15 -5
  41. package/dist/api/routes/admin/customer-groups/delete-customers-batch.js.map +1 -1
  42. package/dist/api/routes/admin/customer-groups/update-customer-group.js +12 -2
  43. package/dist/api/routes/admin/customer-groups/update-customer-group.js.map +1 -1
  44. package/dist/api/routes/admin/customers/create-customer.js +12 -2
  45. package/dist/api/routes/admin/customers/create-customer.js.map +1 -1
  46. package/dist/api/routes/admin/customers/update-customer.js +12 -2
  47. package/dist/api/routes/admin/customers/update-customer.js.map +1 -1
  48. package/dist/api/routes/admin/discounts/add-region.js +12 -2
  49. package/dist/api/routes/admin/discounts/add-region.js.map +1 -1
  50. package/dist/api/routes/admin/discounts/create-condition.d.ts +1 -1
  51. package/dist/api/routes/admin/discounts/create-condition.js +13 -3
  52. package/dist/api/routes/admin/discounts/create-condition.js.map +1 -1
  53. package/dist/api/routes/admin/discounts/create-discount.d.ts +1 -2
  54. package/dist/api/routes/admin/discounts/create-discount.js +12 -3
  55. package/dist/api/routes/admin/discounts/create-discount.js.map +1 -1
  56. package/dist/api/routes/admin/discounts/create-dynamic-code.js +12 -2
  57. package/dist/api/routes/admin/discounts/create-dynamic-code.js.map +1 -1
  58. package/dist/api/routes/admin/discounts/delete-condition.js +12 -2
  59. package/dist/api/routes/admin/discounts/delete-condition.js.map +1 -1
  60. package/dist/api/routes/admin/discounts/delete-discount.js +12 -2
  61. package/dist/api/routes/admin/discounts/delete-discount.js.map +1 -1
  62. package/dist/api/routes/admin/discounts/delete-dynamic-code.js +12 -2
  63. package/dist/api/routes/admin/discounts/delete-dynamic-code.js.map +1 -1
  64. package/dist/api/routes/admin/discounts/remove-region.js +12 -2
  65. package/dist/api/routes/admin/discounts/remove-region.js.map +1 -1
  66. package/dist/api/routes/admin/discounts/update-condition.js +12 -2
  67. package/dist/api/routes/admin/discounts/update-condition.js.map +1 -1
  68. package/dist/api/routes/admin/discounts/update-discount.d.ts +1 -1
  69. package/dist/api/routes/admin/discounts/update-discount.js +13 -3
  70. package/dist/api/routes/admin/discounts/update-discount.js.map +1 -1
  71. package/dist/api/routes/admin/draft-orders/create-draft-order.js +12 -2
  72. package/dist/api/routes/admin/draft-orders/create-draft-order.js.map +1 -1
  73. package/dist/api/routes/admin/draft-orders/create-line-item.js +4 -2
  74. package/dist/api/routes/admin/draft-orders/create-line-item.js.map +1 -1
  75. package/dist/api/routes/admin/draft-orders/delete-draft-order.js +12 -2
  76. package/dist/api/routes/admin/draft-orders/delete-draft-order.js.map +1 -1
  77. package/dist/api/routes/admin/draft-orders/register-payment.js +6 -3
  78. package/dist/api/routes/admin/draft-orders/register-payment.js.map +1 -1
  79. package/dist/api/routes/admin/draft-orders/update-draft-order.js +28 -12
  80. package/dist/api/routes/admin/draft-orders/update-draft-order.js.map +1 -1
  81. package/dist/api/routes/admin/gift-cards/create-gift-card.js +10 -2
  82. package/dist/api/routes/admin/gift-cards/create-gift-card.js.map +1 -1
  83. package/dist/api/routes/admin/gift-cards/delete-gift-card.js +10 -2
  84. package/dist/api/routes/admin/gift-cards/delete-gift-card.js.map +1 -1
  85. package/dist/api/routes/admin/gift-cards/update-gift-card.js +12 -2
  86. package/dist/api/routes/admin/gift-cards/update-gift-card.js.map +1 -1
  87. package/dist/api/routes/admin/invites/accept-invite.js +12 -2
  88. package/dist/api/routes/admin/invites/accept-invite.js.map +1 -1
  89. package/dist/api/routes/admin/invites/create-invite.js +12 -2
  90. package/dist/api/routes/admin/invites/create-invite.js.map +1 -1
  91. package/dist/api/routes/admin/invites/delete-invite.js +12 -2
  92. package/dist/api/routes/admin/invites/delete-invite.js.map +1 -1
  93. package/dist/api/routes/admin/invites/resend-invite.js +12 -2
  94. package/dist/api/routes/admin/invites/resend-invite.js.map +1 -1
  95. package/dist/api/routes/admin/notes/create-note.js +15 -7
  96. package/dist/api/routes/admin/notes/create-note.js.map +1 -1
  97. package/dist/api/routes/admin/notes/delete-note.js +10 -2
  98. package/dist/api/routes/admin/notes/delete-note.js.map +1 -1
  99. package/dist/api/routes/admin/notes/update-note.js +12 -2
  100. package/dist/api/routes/admin/notes/update-note.js.map +1 -1
  101. package/dist/api/routes/admin/notifications/list-notifications.js +8 -7
  102. package/dist/api/routes/admin/notifications/list-notifications.js.map +1 -1
  103. package/dist/api/routes/admin/notifications/resend-notification.js +12 -2
  104. package/dist/api/routes/admin/notifications/resend-notification.js.map +1 -1
  105. package/dist/api/routes/admin/orders/add-shipping-method.js +14 -4
  106. package/dist/api/routes/admin/orders/add-shipping-method.js.map +1 -1
  107. package/dist/api/routes/admin/orders/archive-order.js +10 -2
  108. package/dist/api/routes/admin/orders/archive-order.js.map +1 -1
  109. package/dist/api/routes/admin/orders/cancel-claim.js +12 -2
  110. package/dist/api/routes/admin/orders/cancel-claim.js.map +1 -1
  111. package/dist/api/routes/admin/orders/cancel-fulfillment-claim.js +12 -2
  112. package/dist/api/routes/admin/orders/cancel-fulfillment-claim.js.map +1 -1
  113. package/dist/api/routes/admin/orders/cancel-fulfillment-swap.js +12 -2
  114. package/dist/api/routes/admin/orders/cancel-fulfillment-swap.js.map +1 -1
  115. package/dist/api/routes/admin/orders/cancel-fulfillment.js +12 -2
  116. package/dist/api/routes/admin/orders/cancel-fulfillment.js.map +1 -1
  117. package/dist/api/routes/admin/orders/cancel-order.js +10 -2
  118. package/dist/api/routes/admin/orders/cancel-order.js.map +1 -1
  119. package/dist/api/routes/admin/orders/cancel-swap.js +10 -2
  120. package/dist/api/routes/admin/orders/cancel-swap.js.map +1 -1
  121. package/dist/api/routes/admin/orders/capture-payment.js +12 -2
  122. package/dist/api/routes/admin/orders/capture-payment.js.map +1 -1
  123. package/dist/api/routes/admin/orders/complete-order.js +12 -2
  124. package/dist/api/routes/admin/orders/complete-order.js.map +1 -1
  125. package/dist/api/routes/admin/orders/create-claim-shipment.js +18 -8
  126. package/dist/api/routes/admin/orders/create-claim-shipment.js.map +1 -1
  127. package/dist/api/routes/admin/orders/create-claim.js +199 -140
  128. package/dist/api/routes/admin/orders/create-claim.js.map +1 -1
  129. package/dist/api/routes/admin/orders/create-fulfillment.d.ts +1 -1
  130. package/dist/api/routes/admin/orders/create-fulfillment.js +15 -5
  131. package/dist/api/routes/admin/orders/create-fulfillment.js.map +1 -1
  132. package/dist/api/routes/admin/orders/create-shipment.js +23 -8
  133. package/dist/api/routes/admin/orders/create-shipment.js.map +1 -1
  134. package/dist/api/routes/admin/orders/create-swap-shipment.js +16 -8
  135. package/dist/api/routes/admin/orders/create-swap-shipment.js.map +1 -1
  136. package/dist/api/routes/admin/orders/create-swap.js +150 -101
  137. package/dist/api/routes/admin/orders/create-swap.js.map +1 -1
  138. package/dist/api/routes/admin/orders/fulfill-swap.js +8 -9
  139. package/dist/api/routes/admin/orders/fulfill-swap.js.map +1 -1
  140. package/dist/api/routes/admin/orders/index.d.ts +1 -3
  141. package/dist/api/routes/admin/orders/index.js +0 -10
  142. package/dist/api/routes/admin/orders/index.js.map +1 -1
  143. package/dist/api/routes/admin/orders/list-orders.d.ts +1 -0
  144. package/dist/api/routes/admin/orders/list-orders.js +1 -0
  145. package/dist/api/routes/admin/orders/list-orders.js.map +1 -1
  146. package/dist/api/routes/admin/orders/refund-payment.js +14 -4
  147. package/dist/api/routes/admin/orders/refund-payment.js.map +1 -1
  148. package/dist/api/routes/admin/orders/request-return.js +180 -131
  149. package/dist/api/routes/admin/orders/request-return.js.map +1 -1
  150. package/dist/api/routes/admin/orders/update-claim.js +12 -2
  151. package/dist/api/routes/admin/orders/update-claim.js.map +1 -1
  152. package/dist/api/routes/admin/orders/update-order.d.ts +9 -9
  153. package/dist/api/routes/admin/orders/update-order.js +16 -6
  154. package/dist/api/routes/admin/orders/update-order.js.map +1 -1
  155. package/dist/api/routes/admin/price-lists/add-prices-batch.js +12 -2
  156. package/dist/api/routes/admin/price-lists/add-prices-batch.js.map +1 -1
  157. package/dist/api/routes/admin/price-lists/create-price-list.js +12 -2
  158. package/dist/api/routes/admin/price-lists/create-price-list.js.map +1 -1
  159. package/dist/api/routes/admin/price-lists/delete-price-list.js +10 -2
  160. package/dist/api/routes/admin/price-lists/delete-price-list.js.map +1 -1
  161. package/dist/api/routes/admin/price-lists/delete-prices-batch.js +12 -2
  162. package/dist/api/routes/admin/price-lists/delete-prices-batch.js.map +1 -1
  163. package/dist/api/routes/admin/price-lists/delete-product-prices.js +12 -4
  164. package/dist/api/routes/admin/price-lists/delete-product-prices.js.map +1 -1
  165. package/dist/api/routes/admin/price-lists/delete-variant-prices.js +12 -4
  166. package/dist/api/routes/admin/price-lists/delete-variant-prices.js.map +1 -1
  167. package/dist/api/routes/admin/price-lists/list-price-list-products.d.ts +2 -2
  168. package/dist/api/routes/admin/price-lists/list-price-list-products.js +1 -2
  169. package/dist/api/routes/admin/price-lists/list-price-list-products.js.map +1 -1
  170. package/dist/api/routes/admin/price-lists/list-price-lists.js.map +1 -1
  171. package/dist/api/routes/admin/price-lists/update-price-list.js +12 -2
  172. package/dist/api/routes/admin/price-lists/update-price-list.js.map +1 -1
  173. package/dist/api/routes/admin/products/add-option.js +12 -2
  174. package/dist/api/routes/admin/products/add-option.js.map +1 -1
  175. package/dist/api/routes/admin/products/create-product.d.ts +10 -8
  176. package/dist/api/routes/admin/products/create-product.js +36 -37
  177. package/dist/api/routes/admin/products/create-product.js.map +1 -1
  178. package/dist/api/routes/admin/products/create-variant.js +12 -2
  179. package/dist/api/routes/admin/products/create-variant.js.map +1 -1
  180. package/dist/api/routes/admin/products/delete-option.js +12 -2
  181. package/dist/api/routes/admin/products/delete-option.js.map +1 -1
  182. package/dist/api/routes/admin/products/delete-product.js +10 -2
  183. package/dist/api/routes/admin/products/delete-product.js.map +1 -1
  184. package/dist/api/routes/admin/products/delete-variant.js +14 -2
  185. package/dist/api/routes/admin/products/delete-variant.js.map +1 -1
  186. package/dist/api/routes/admin/products/index.d.ts +2 -2
  187. package/dist/api/routes/admin/products/index.js +6 -31
  188. package/dist/api/routes/admin/products/index.js.map +1 -1
  189. package/dist/api/routes/admin/products/list-products.d.ts +3 -20
  190. package/dist/api/routes/admin/products/list-products.js +15 -103
  191. package/dist/api/routes/admin/products/list-products.js.map +1 -1
  192. package/dist/api/routes/admin/products/set-metadata.js +18 -10
  193. package/dist/api/routes/admin/products/set-metadata.js.map +1 -1
  194. package/dist/api/routes/admin/products/update-option.js +12 -2
  195. package/dist/api/routes/admin/products/update-option.js.map +1 -1
  196. package/dist/api/routes/admin/products/update-product.d.ts +10 -8
  197. package/dist/api/routes/admin/products/update-product.js +40 -33
  198. package/dist/api/routes/admin/products/update-product.js.map +1 -1
  199. package/dist/api/routes/admin/products/update-variant.js +14 -2
  200. package/dist/api/routes/admin/products/update-variant.js.map +1 -1
  201. package/dist/api/routes/admin/regions/add-country.js +12 -2
  202. package/dist/api/routes/admin/regions/add-country.js.map +1 -1
  203. package/dist/api/routes/admin/regions/add-fulfillment-provider.js +12 -2
  204. package/dist/api/routes/admin/regions/add-fulfillment-provider.js.map +1 -1
  205. package/dist/api/routes/admin/regions/add-payment-provider.js +12 -2
  206. package/dist/api/routes/admin/regions/add-payment-provider.js.map +1 -1
  207. package/dist/api/routes/admin/regions/create-region.js +12 -2
  208. package/dist/api/routes/admin/regions/create-region.js.map +1 -1
  209. package/dist/api/routes/admin/regions/delete-region.js +12 -2
  210. package/dist/api/routes/admin/regions/delete-region.js.map +1 -1
  211. package/dist/api/routes/admin/regions/index.d.ts +0 -1
  212. package/dist/api/routes/admin/regions/index.js +0 -9
  213. package/dist/api/routes/admin/regions/index.js.map +1 -1
  214. package/dist/api/routes/admin/regions/remove-country.js +12 -2
  215. package/dist/api/routes/admin/regions/remove-country.js.map +1 -1
  216. package/dist/api/routes/admin/regions/remove-fulfillment-provider.js +12 -2
  217. package/dist/api/routes/admin/regions/remove-fulfillment-provider.js.map +1 -1
  218. package/dist/api/routes/admin/regions/remove-payment-provider.js +12 -2
  219. package/dist/api/routes/admin/regions/remove-payment-provider.js.map +1 -1
  220. package/dist/api/routes/admin/regions/update-region.js +12 -2
  221. package/dist/api/routes/admin/regions/update-region.js.map +1 -1
  222. package/dist/api/routes/admin/return-reasons/create-reason.js +12 -2
  223. package/dist/api/routes/admin/return-reasons/create-reason.js.map +1 -1
  224. package/dist/api/routes/admin/return-reasons/delete-reason.js +12 -2
  225. package/dist/api/routes/admin/return-reasons/delete-reason.js.map +1 -1
  226. package/dist/api/routes/admin/return-reasons/update-reason.js +12 -2
  227. package/dist/api/routes/admin/return-reasons/update-reason.js.map +1 -1
  228. package/dist/api/routes/admin/returns/cancel-return.js +10 -2
  229. package/dist/api/routes/admin/returns/cancel-return.js.map +1 -1
  230. package/dist/api/routes/admin/sales-channels/add-product-batch.d.ts +28 -0
  231. package/dist/api/routes/admin/sales-channels/add-product-batch.js +111 -0
  232. package/dist/api/routes/admin/sales-channels/add-product-batch.js.map +1 -0
  233. package/dist/api/routes/admin/sales-channels/create-sales-channel.d.ts +2 -1
  234. package/dist/api/routes/admin/sales-channels/create-sales-channel.js +19 -3
  235. package/dist/api/routes/admin/sales-channels/create-sales-channel.js.map +1 -1
  236. package/dist/api/routes/admin/sales-channels/delete-products-batch.d.ts +28 -0
  237. package/dist/api/routes/admin/sales-channels/delete-products-batch.js +111 -0
  238. package/dist/api/routes/admin/sales-channels/delete-products-batch.js.map +1 -0
  239. package/dist/api/routes/admin/sales-channels/delete-sales-channel.js +12 -2
  240. package/dist/api/routes/admin/sales-channels/delete-sales-channel.js.map +1 -1
  241. package/dist/api/routes/admin/sales-channels/index.d.ts +7 -3
  242. package/dist/api/routes/admin/sales-channels/index.js +18 -8
  243. package/dist/api/routes/admin/sales-channels/index.js.map +1 -1
  244. package/dist/api/routes/admin/sales-channels/list-sales-channels.d.ts +57 -0
  245. package/dist/api/routes/admin/sales-channels/list-sales-channels.js +197 -0
  246. package/dist/api/routes/admin/sales-channels/list-sales-channels.js.map +1 -0
  247. package/dist/api/routes/admin/sales-channels/update-sales-channel.js +12 -2
  248. package/dist/api/routes/admin/sales-channels/update-sales-channel.js.map +1 -1
  249. package/dist/api/routes/admin/shipping-options/create-shipping-option.js +13 -2
  250. package/dist/api/routes/admin/shipping-options/create-shipping-option.js.map +1 -1
  251. package/dist/api/routes/admin/shipping-options/delete-shipping-option.js +12 -2
  252. package/dist/api/routes/admin/shipping-options/delete-shipping-option.js.map +1 -1
  253. package/dist/api/routes/admin/shipping-options/update-shipping-option.js +12 -2
  254. package/dist/api/routes/admin/shipping-options/update-shipping-option.js.map +1 -1
  255. package/dist/api/routes/admin/shipping-profiles/create-shipping-profile.js +12 -2
  256. package/dist/api/routes/admin/shipping-profiles/create-shipping-profile.js.map +1 -1
  257. package/dist/api/routes/admin/shipping-profiles/delete-shipping-profile.js +12 -2
  258. package/dist/api/routes/admin/shipping-profiles/delete-shipping-profile.js.map +1 -1
  259. package/dist/api/routes/admin/shipping-profiles/update-shipping-profile.js +12 -2
  260. package/dist/api/routes/admin/shipping-profiles/update-shipping-profile.js.map +1 -1
  261. package/dist/api/routes/admin/store/add-currency.js +12 -2
  262. package/dist/api/routes/admin/store/add-currency.js.map +1 -1
  263. package/dist/api/routes/admin/store/get-store.js +6 -2
  264. package/dist/api/routes/admin/store/get-store.js.map +1 -1
  265. package/dist/api/routes/admin/store/remove-currency.js +12 -2
  266. package/dist/api/routes/admin/store/remove-currency.js.map +1 -1
  267. package/dist/api/routes/admin/store/update-store.js +12 -2
  268. package/dist/api/routes/admin/store/update-store.js.map +1 -1
  269. package/dist/api/routes/admin/tax-rates/add-to-product-types.js +12 -2
  270. package/dist/api/routes/admin/tax-rates/add-to-product-types.js.map +1 -1
  271. package/dist/api/routes/admin/tax-rates/add-to-products.js +12 -2
  272. package/dist/api/routes/admin/tax-rates/add-to-products.js.map +1 -1
  273. package/dist/api/routes/admin/tax-rates/add-to-shipping-options.js +12 -2
  274. package/dist/api/routes/admin/tax-rates/add-to-shipping-options.js.map +1 -1
  275. package/dist/api/routes/admin/tax-rates/delete-tax-rate.js +10 -2
  276. package/dist/api/routes/admin/tax-rates/delete-tax-rate.js.map +1 -1
  277. package/dist/api/routes/admin/tax-rates/remove-from-product-types.js +12 -2
  278. package/dist/api/routes/admin/tax-rates/remove-from-product-types.js.map +1 -1
  279. package/dist/api/routes/admin/tax-rates/remove-from-products.js +12 -2
  280. package/dist/api/routes/admin/tax-rates/remove-from-products.js.map +1 -1
  281. package/dist/api/routes/admin/tax-rates/remove-from-shipping-options.js +12 -2
  282. package/dist/api/routes/admin/tax-rates/remove-from-shipping-options.js.map +1 -1
  283. package/dist/api/routes/admin/users/create-user.js +12 -2
  284. package/dist/api/routes/admin/users/create-user.js.map +1 -1
  285. package/dist/api/routes/admin/users/delete-user.js +10 -2
  286. package/dist/api/routes/admin/users/delete-user.js.map +1 -1
  287. package/dist/api/routes/admin/users/reset-password-token.js +12 -4
  288. package/dist/api/routes/admin/users/reset-password-token.js.map +1 -1
  289. package/dist/api/routes/admin/users/reset-password.js +17 -8
  290. package/dist/api/routes/admin/users/reset-password.js.map +1 -1
  291. package/dist/api/routes/admin/users/update-user.js +12 -2
  292. package/dist/api/routes/admin/users/update-user.js.map +1 -1
  293. package/dist/api/routes/store/auth/create-session.js +12 -2
  294. package/dist/api/routes/store/auth/create-session.js.map +1 -1
  295. package/dist/api/routes/store/carts/calculate-taxes.js +84 -49
  296. package/dist/api/routes/store/carts/calculate-taxes.js.map +1 -1
  297. package/dist/api/routes/store/carts/complete-cart.js +10 -2
  298. package/dist/api/routes/store/carts/complete-cart.js.map +1 -1
  299. package/dist/api/routes/store/carts/create-cart.d.ts +4 -0
  300. package/dist/api/routes/store/carts/create-cart.js +72 -85
  301. package/dist/api/routes/store/carts/create-cart.js.map +1 -1
  302. package/dist/api/routes/store/carts/create-line-item.js +6 -3
  303. package/dist/api/routes/store/carts/create-line-item.js.map +1 -1
  304. package/dist/api/routes/store/carts/create-payment-sessions.js +10 -2
  305. package/dist/api/routes/store/carts/create-payment-sessions.js.map +1 -1
  306. package/dist/api/routes/store/carts/decorate-line-items-with-totals.js +20 -10
  307. package/dist/api/routes/store/carts/decorate-line-items-with-totals.js.map +1 -1
  308. package/dist/api/routes/store/carts/delete-payment-session.js +10 -2
  309. package/dist/api/routes/store/carts/delete-payment-session.js.map +1 -1
  310. package/dist/api/routes/store/carts/index.js +6 -30
  311. package/dist/api/routes/store/carts/index.js.map +1 -1
  312. package/dist/api/routes/store/carts/refresh-payment-session.js +10 -2
  313. package/dist/api/routes/store/carts/refresh-payment-session.js.map +1 -1
  314. package/dist/api/routes/store/carts/set-payment-session.js +11 -3
  315. package/dist/api/routes/store/carts/set-payment-session.js.map +1 -1
  316. package/dist/api/routes/store/carts/update-cart.d.ts +4 -0
  317. package/dist/api/routes/store/carts/update-cart.js +49 -64
  318. package/dist/api/routes/store/carts/update-cart.js.map +1 -1
  319. package/dist/api/routes/store/carts/update-line-item.js +1 -1
  320. package/dist/api/routes/store/carts/update-line-item.js.map +1 -1
  321. package/dist/api/routes/store/carts/update-payment-session.js +17 -7
  322. package/dist/api/routes/store/carts/update-payment-session.js.map +1 -1
  323. package/dist/api/routes/store/customers/create-address.js +13 -3
  324. package/dist/api/routes/store/customers/create-address.js.map +1 -1
  325. package/dist/api/routes/store/customers/create-customer.js +12 -2
  326. package/dist/api/routes/store/customers/create-customer.js.map +1 -1
  327. package/dist/api/routes/store/customers/delete-address.js +12 -2
  328. package/dist/api/routes/store/customers/delete-address.js.map +1 -1
  329. package/dist/api/routes/store/customers/list-orders.js.map +1 -1
  330. package/dist/api/routes/store/customers/reset-password-token.js +12 -4
  331. package/dist/api/routes/store/customers/reset-password-token.js.map +1 -1
  332. package/dist/api/routes/store/customers/reset-password.js +14 -4
  333. package/dist/api/routes/store/customers/reset-password.js.map +1 -1
  334. package/dist/api/routes/store/customers/update-address.js +12 -2
  335. package/dist/api/routes/store/customers/update-address.js.map +1 -1
  336. package/dist/api/routes/store/customers/update-customer.js +12 -2
  337. package/dist/api/routes/store/customers/update-customer.js.map +1 -1
  338. package/dist/api/routes/store/orders/index.d.ts +1 -1
  339. package/dist/api/routes/store/orders/index.js.map +1 -1
  340. package/dist/api/routes/store/returns/create-return.js +145 -100
  341. package/dist/api/routes/store/returns/create-return.js.map +1 -1
  342. package/dist/api/routes/store/shipping-options/list-shipping-options.js +7 -1
  343. package/dist/api/routes/store/shipping-options/list-shipping-options.js.map +1 -1
  344. package/dist/api/routes/store/swaps/create-swap.js +148 -99
  345. package/dist/api/routes/store/swaps/create-swap.js.map +1 -1
  346. package/dist/interfaces/base-repository.d.ts +3 -0
  347. package/dist/interfaces/base-repository.js +28 -0
  348. package/dist/interfaces/base-repository.js.map +1 -0
  349. package/dist/interfaces/index.d.ts +3 -0
  350. package/dist/interfaces/index.js +3 -0
  351. package/dist/interfaces/index.js.map +1 -1
  352. package/dist/interfaces/notification-service.d.ts +18 -0
  353. package/dist/interfaces/notification-service.js +40 -0
  354. package/dist/interfaces/notification-service.js.map +1 -0
  355. package/dist/interfaces/search-service.d.ts +78 -0
  356. package/dist/interfaces/search-service.js +42 -0
  357. package/dist/interfaces/search-service.js.map +1 -0
  358. package/dist/loaders/index.js +1 -1
  359. package/dist/loaders/index.js.map +1 -1
  360. package/dist/loaders/plugins.js +10 -12
  361. package/dist/loaders/plugins.js.map +1 -1
  362. package/dist/loaders/search-index.d.ts +1 -0
  363. package/dist/loaders/search-index.js +7 -64
  364. package/dist/loaders/search-index.js.map +1 -1
  365. package/dist/models/index.d.ts +1 -0
  366. package/dist/models/index.js +1 -0
  367. package/dist/models/index.js.map +1 -1
  368. package/dist/models/notification.d.ts +1 -1
  369. package/dist/models/notification.js +1 -1
  370. package/dist/models/notification.js.map +1 -1
  371. package/dist/models/order.d.ts +1 -1
  372. package/dist/models/payment-session.d.ts +1 -1
  373. package/dist/models/payment-session.js +4 -4
  374. package/dist/models/payment-session.js.map +1 -1
  375. package/dist/models/product.js +1 -1
  376. package/dist/models/product.js.map +1 -1
  377. package/dist/repositories/claim.js.map +1 -1
  378. package/dist/repositories/order.d.ts +3 -3
  379. package/dist/repositories/order.js +2 -2
  380. package/dist/repositories/order.js.map +1 -1
  381. package/dist/repositories/price-list.js.map +1 -1
  382. package/dist/repositories/product.d.ts +2 -2
  383. package/dist/repositories/product.js +19 -11
  384. package/dist/repositories/product.js.map +1 -1
  385. package/dist/repositories/sales-channel.d.ts +5 -1
  386. package/dist/repositories/sales-channel.js +116 -0
  387. package/dist/repositories/sales-channel.js.map +1 -1
  388. package/dist/services/batch-job.js +18 -32
  389. package/dist/services/batch-job.js.map +1 -1
  390. package/dist/services/cart.d.ts +37 -10
  391. package/dist/services/cart.js +293 -161
  392. package/dist/services/cart.js.map +1 -1
  393. package/dist/services/claim.js +18 -32
  394. package/dist/services/claim.js.map +1 -1
  395. package/dist/services/custom-shipping-option.js +28 -53
  396. package/dist/services/custom-shipping-option.js.map +1 -1
  397. package/dist/services/customer.js +33 -78
  398. package/dist/services/customer.js.map +1 -1
  399. package/dist/services/discount-condition.js +12 -19
  400. package/dist/services/discount-condition.js.map +1 -1
  401. package/dist/services/discount.js +67 -91
  402. package/dist/services/discount.js.map +1 -1
  403. package/dist/services/draft-order.js +57 -85
  404. package/dist/services/draft-order.js.map +1 -1
  405. package/dist/services/fulfillment.d.ts +1 -1
  406. package/dist/services/fulfillment.js +12 -19
  407. package/dist/services/fulfillment.js.map +1 -1
  408. package/dist/services/gift-card.js +67 -116
  409. package/dist/services/gift-card.js.map +1 -1
  410. package/dist/services/idempotency-key.d.ts +2 -3
  411. package/dist/services/idempotency-key.js +3 -3
  412. package/dist/services/idempotency-key.js.map +1 -1
  413. package/dist/services/inventory.d.ts +22 -21
  414. package/dist/services/inventory.js +57 -55
  415. package/dist/services/inventory.js.map +1 -1
  416. package/dist/services/line-item.js +19 -33
  417. package/dist/services/line-item.js.map +1 -1
  418. package/dist/services/note.d.ts +43 -48
  419. package/dist/services/note.js +106 -118
  420. package/dist/services/note.js.map +1 -1
  421. package/dist/services/notification.d.ts +54 -51
  422. package/dist/services/notification.js +118 -113
  423. package/dist/services/notification.js.map +1 -1
  424. package/dist/services/order.d.ts +163 -184
  425. package/dist/services/order.js +1248 -1319
  426. package/dist/services/order.js.map +1 -1
  427. package/dist/services/price-list.js +35 -45
  428. package/dist/services/price-list.js.map +1 -1
  429. package/dist/services/pricing.js +32 -35
  430. package/dist/services/pricing.js.map +1 -1
  431. package/dist/services/product.d.ts +7 -4
  432. package/dist/services/product.js +151 -170
  433. package/dist/services/product.js.map +1 -1
  434. package/dist/services/sales-channel.d.ts +22 -1
  435. package/dist/services/sales-channel.js +130 -28
  436. package/dist/services/sales-channel.js.map +1 -1
  437. package/dist/services/search.d.ts +23 -19
  438. package/dist/services/search.js +10 -9
  439. package/dist/services/search.js.map +1 -1
  440. package/dist/services/shipping-option.d.ts +1 -1
  441. package/dist/services/shipping-option.js +77 -84
  442. package/dist/services/shipping-option.js.map +1 -1
  443. package/dist/services/shipping-profile.js +37 -30
  444. package/dist/services/shipping-profile.js.map +1 -1
  445. package/dist/services/store.d.ts +5 -5
  446. package/dist/services/store.js +13 -20
  447. package/dist/services/store.js.map +1 -1
  448. package/dist/services/swap.js +3 -1
  449. package/dist/services/swap.js.map +1 -1
  450. package/dist/services/tax-provider.d.ts +18 -19
  451. package/dist/services/tax-provider.js +81 -61
  452. package/dist/services/tax-provider.js.map +1 -1
  453. package/dist/services/tax-rate.js +23 -46
  454. package/dist/services/tax-rate.js.map +1 -1
  455. package/dist/services/totals.d.ts +7 -4
  456. package/dist/services/totals.js +19 -7
  457. package/dist/services/totals.js.map +1 -1
  458. package/dist/services/user.d.ts +3 -0
  459. package/dist/services/user.js +70 -76
  460. package/dist/services/user.js.map +1 -1
  461. package/dist/strategies/__fixtures__/order-export-data.js +11 -0
  462. package/dist/strategies/__fixtures__/order-export-data.js.map +1 -1
  463. package/dist/strategies/__fixtures__/product-export-data.d.ts +10 -0
  464. package/dist/strategies/__fixtures__/product-export-data.js +7 -0
  465. package/dist/strategies/__fixtures__/product-export-data.js.map +1 -1
  466. package/dist/strategies/batch-jobs/order/export.d.ts +10 -4
  467. package/dist/strategies/batch-jobs/order/export.js +29 -11
  468. package/dist/strategies/batch-jobs/order/export.js.map +1 -1
  469. package/dist/strategies/batch-jobs/order/index.js +1 -1
  470. package/dist/strategies/batch-jobs/order/index.js.map +1 -1
  471. package/dist/strategies/batch-jobs/product/export.d.ts +13 -1
  472. package/dist/strategies/batch-jobs/product/export.js +137 -80
  473. package/dist/strategies/batch-jobs/product/export.js.map +1 -1
  474. package/dist/strategies/batch-jobs/product/index.d.ts +1 -0
  475. package/dist/strategies/batch-jobs/product/index.js.map +1 -1
  476. package/dist/subscribers/search-indexing.d.ts +18 -0
  477. package/dist/subscribers/search-indexing.js +126 -0
  478. package/dist/subscribers/search-indexing.js.map +1 -0
  479. package/dist/types/cart.d.ts +7 -4
  480. package/dist/types/common.d.ts +10 -1
  481. package/dist/types/common.js +63 -1
  482. package/dist/types/common.js.map +1 -1
  483. package/dist/types/gift-card.d.ts +3 -1
  484. package/dist/types/global.d.ts +3 -2
  485. package/dist/types/orders.d.ts +80 -3
  486. package/dist/types/orders.js +8 -2
  487. package/dist/types/orders.js.map +1 -1
  488. package/dist/types/product.d.ts +16 -0
  489. package/dist/types/product.js +46 -1
  490. package/dist/types/product.js.map +1 -1
  491. package/dist/types/sales-channels.d.ts +3 -0
  492. package/dist/types/sales-channels.js +21 -0
  493. package/dist/types/sales-channels.js.map +1 -1
  494. package/dist/utils/index.d.ts +5 -4
  495. package/dist/utils/index.js +1 -0
  496. package/dist/utils/index.js.map +1 -1
  497. package/dist/utils/remove-undefined-properties.d.ts +1 -0
  498. package/dist/utils/remove-undefined-properties.js +46 -0
  499. package/dist/utils/remove-undefined-properties.js.map +1 -0
  500. package/jest.config.js +6 -6
  501. package/package.json +4 -5
  502. package/yarn-error.log +29038 -0
@@ -97,6 +97,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
97
97
  }
98
98
  return to.concat(ar || Array.prototype.slice.call(from));
99
99
  };
100
+ var __importDefault = (this && this.__importDefault) || function (mod) {
101
+ return (mod && mod.__esModule) ? mod : { "default": mod };
102
+ };
100
103
  Object.defineProperty(exports, "__esModule", { value: true });
101
104
  var lodash_1 = require("lodash");
102
105
  var medusa_core_utils_1 = require("medusa-core-utils");
@@ -104,13 +107,14 @@ var typeorm_1 = require("typeorm");
104
107
  var interfaces_1 = require("../interfaces");
105
108
  var models_1 = require("../models");
106
109
  var utils_1 = require("../utils");
110
+ var sales_channels_1 = __importDefault(require("../loaders/feature-flags/sales-channels"));
107
111
  /* Provides layer to manipulate carts.
108
112
  * @implements BaseService
109
113
  */
110
114
  var CartService = /** @class */ (function (_super) {
111
115
  __extends(CartService, _super);
112
116
  function CartService(_a) {
113
- var manager = _a.manager, cartRepository = _a.cartRepository, shippingMethodRepository = _a.shippingMethodRepository, lineItemRepository = _a.lineItemRepository, eventBusService = _a.eventBusService, paymentProviderService = _a.paymentProviderService, productService = _a.productService, productVariantService = _a.productVariantService, taxProviderService = _a.taxProviderService, regionService = _a.regionService, lineItemService = _a.lineItemService, shippingOptionService = _a.shippingOptionService, customerService = _a.customerService, discountService = _a.discountService, giftCardService = _a.giftCardService, totalsService = _a.totalsService, addressRepository = _a.addressRepository, paymentSessionRepository = _a.paymentSessionRepository, inventoryService = _a.inventoryService, customShippingOptionService = _a.customShippingOptionService, lineItemAdjustmentService = _a.lineItemAdjustmentService, priceSelectionStrategy = _a.priceSelectionStrategy;
117
+ var manager = _a.manager, cartRepository = _a.cartRepository, shippingMethodRepository = _a.shippingMethodRepository, lineItemRepository = _a.lineItemRepository, eventBusService = _a.eventBusService, paymentProviderService = _a.paymentProviderService, productService = _a.productService, productVariantService = _a.productVariantService, taxProviderService = _a.taxProviderService, regionService = _a.regionService, lineItemService = _a.lineItemService, shippingOptionService = _a.shippingOptionService, customerService = _a.customerService, discountService = _a.discountService, giftCardService = _a.giftCardService, totalsService = _a.totalsService, addressRepository = _a.addressRepository, paymentSessionRepository = _a.paymentSessionRepository, inventoryService = _a.inventoryService, customShippingOptionService = _a.customShippingOptionService, lineItemAdjustmentService = _a.lineItemAdjustmentService, priceSelectionStrategy = _a.priceSelectionStrategy, salesChannelService = _a.salesChannelService, featureFlagRouter = _a.featureFlagRouter, storeService = _a.storeService;
114
118
  var _this =
115
119
  // eslint-disable-next-line prefer-rest-params
116
120
  _super.call(this, arguments[0]) || this;
@@ -136,6 +140,9 @@ var CartService = /** @class */ (function (_super) {
136
140
  _this.taxProviderService_ = taxProviderService;
137
141
  _this.lineItemAdjustmentService_ = lineItemAdjustmentService;
138
142
  _this.priceSelectionStrategy_ = priceSelectionStrategy;
143
+ _this.salesChannelService_ = salesChannelService;
144
+ _this.featureFlagRouter_ = featureFlagRouter;
145
+ _this.storeService_ = storeService;
139
146
  return _this;
140
147
  }
141
148
  CartService.prototype.transformQueryForTotals_ = function (config) {
@@ -270,21 +277,14 @@ var CartService = /** @class */ (function (_super) {
270
277
  CartService.prototype.list = function (selector, config) {
271
278
  if (config === void 0) { config = {}; }
272
279
  return __awaiter(this, void 0, void 0, function () {
273
- var _this = this;
280
+ var manager, cartRepo, query;
274
281
  return __generator(this, function (_a) {
275
282
  switch (_a.label) {
276
- case 0: return [4 /*yield*/, this.atomicPhase_(function (transactionManager) { return __awaiter(_this, void 0, void 0, function () {
277
- var cartRepo, query;
278
- return __generator(this, function (_a) {
279
- switch (_a.label) {
280
- case 0:
281
- cartRepo = transactionManager.getCustomRepository(this.cartRepository_);
282
- query = (0, utils_1.buildQuery)(selector, config);
283
- return [4 /*yield*/, cartRepo.find(query)];
284
- case 1: return [2 /*return*/, _a.sent()];
285
- }
286
- });
287
- }); })];
283
+ case 0:
284
+ manager = this.manager_;
285
+ cartRepo = manager.getCustomRepository(this.cartRepository_);
286
+ query = (0, utils_1.buildQuery)(selector, config);
287
+ return [4 /*yield*/, cartRepo.find(query)];
288
288
  case 1: return [2 /*return*/, _a.sent()];
289
289
  }
290
290
  });
@@ -301,41 +301,34 @@ var CartService = /** @class */ (function (_super) {
301
301
  if (options === void 0) { options = {}; }
302
302
  if (totalsConfig === void 0) { totalsConfig = {}; }
303
303
  return __awaiter(this, void 0, void 0, function () {
304
- var _this = this;
305
- return __generator(this, function (_a) {
306
- switch (_a.label) {
307
- case 0: return [4 /*yield*/, this.atomicPhase_(function (transactionManager) { return __awaiter(_this, void 0, void 0, function () {
308
- var cartRepo, validatedId, _a, select, relations, totalsToSelect, query, queryRelations, raw;
309
- return __generator(this, function (_b) {
310
- switch (_b.label) {
311
- case 0:
312
- cartRepo = transactionManager.getCustomRepository(this.cartRepository_);
313
- validatedId = (0, utils_1.validateId)(cartId);
314
- _a = this.transformQueryForTotals_(options), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
315
- query = (0, utils_1.buildQuery)({ id: validatedId }, __assign(__assign({}, options), { select: select, relations: relations }));
316
- if (relations && relations.length > 0) {
317
- query.relations = relations;
318
- }
319
- if (select && select.length > 0) {
320
- query.select = select;
321
- }
322
- else {
323
- query.select = undefined;
324
- }
325
- queryRelations = query.relations;
326
- query.relations = undefined;
327
- return [4 /*yield*/, cartRepo.findOneWithRelations(queryRelations, query)];
328
- case 1:
329
- raw = _b.sent();
330
- if (!raw) {
331
- throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Cart with ".concat(cartId, " was not found"));
332
- }
333
- return [4 /*yield*/, this.decorateTotals_(raw, totalsToSelect, totalsConfig)];
334
- case 2: return [2 /*return*/, _b.sent()];
335
- }
336
- });
337
- }); })];
338
- case 1: return [2 /*return*/, _a.sent()];
304
+ var manager, cartRepo, validatedId, _a, select, relations, totalsToSelect, query, queryRelations, raw;
305
+ return __generator(this, function (_b) {
306
+ switch (_b.label) {
307
+ case 0:
308
+ manager = this.manager_;
309
+ cartRepo = manager.getCustomRepository(this.cartRepository_);
310
+ validatedId = (0, utils_1.validateId)(cartId);
311
+ _a = this.transformQueryForTotals_(options), select = _a.select, relations = _a.relations, totalsToSelect = _a.totalsToSelect;
312
+ query = (0, utils_1.buildQuery)({ id: validatedId }, __assign(__assign({}, options), { select: select, relations: relations }));
313
+ if (relations && relations.length > 0) {
314
+ query.relations = relations;
315
+ }
316
+ if (select && select.length > 0) {
317
+ query.select = select;
318
+ }
319
+ else {
320
+ query.select = undefined;
321
+ }
322
+ queryRelations = query.relations;
323
+ query.relations = undefined;
324
+ return [4 /*yield*/, cartRepo.findOneWithRelations(queryRelations, query)];
325
+ case 1:
326
+ raw = _b.sent();
327
+ if (!raw) {
328
+ throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_FOUND, "Cart with ".concat(cartId, " was not found"));
329
+ }
330
+ return [4 /*yield*/, this.decorateTotals_(raw, totalsToSelect, totalsConfig)];
331
+ case 2: return [2 /*return*/, _b.sent()];
339
332
  }
340
333
  });
341
334
  });
@@ -351,62 +344,72 @@ var CartService = /** @class */ (function (_super) {
351
344
  return __generator(this, function (_a) {
352
345
  switch (_a.label) {
353
346
  case 0: return [4 /*yield*/, this.atomicPhase_(function (transactionManager) { return __awaiter(_this, void 0, void 0, function () {
354
- var cartRepo, addressRepo, region_id, rawCart, customer, region, regCountries, addr, remainingFields, remainingFields_1, remainingFields_1_1, remainingField, createdCart, cart;
355
- var e_2, _a;
356
- return __generator(this, function (_b) {
357
- switch (_b.label) {
347
+ var cartRepo, addressRepo, rawCart, _a, customer, region, regCountries, addr, remainingFields, remainingFields_1, remainingFields_1_1, remainingField, key, createdCart, cart;
348
+ var e_2, _b;
349
+ var _c;
350
+ return __generator(this, function (_d) {
351
+ switch (_d.label) {
358
352
  case 0:
359
353
  cartRepo = transactionManager.getCustomRepository(this.cartRepository_);
360
354
  addressRepo = transactionManager.getCustomRepository(this.addressRepository_);
361
- region_id = data.region_id;
362
- if (!region_id) {
363
- throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "A region_id must be provided when creating a cart");
364
- }
365
- rawCart = {};
366
- if (!data.email) return [3 /*break*/, 2];
367
- return [4 /*yield*/, this.createOrFetchUserFromEmail_(data.email)];
355
+ rawCart = {
356
+ context: (_c = data.context) !== null && _c !== void 0 ? _c : {},
357
+ };
358
+ if (!this.featureFlagRouter_.isFeatureEnabled(sales_channels_1.default.key)) return [3 /*break*/, 2];
359
+ _a = rawCart;
360
+ return [4 /*yield*/, this.getValidatedSalesChannel(data.sales_channel_id)];
368
361
  case 1:
369
- customer = _b.sent();
362
+ _a.sales_channel_id = (_d.sent()).id;
363
+ _d.label = 2;
364
+ case 2:
365
+ if (!data.email) return [3 /*break*/, 4];
366
+ return [4 /*yield*/, this.createOrFetchUserFromEmail_(data.email)];
367
+ case 3:
368
+ customer = _d.sent();
370
369
  rawCart.customer = customer;
371
370
  rawCart.customer_id = customer.id;
372
371
  rawCart.email = customer.email;
373
- _b.label = 2;
374
- case 2: return [4 /*yield*/, this.regionService_
375
- .withTransaction(transactionManager)
376
- .retrieve(region_id, {
377
- relations: ["countries"],
378
- })];
379
- case 3:
380
- region = _b.sent();
372
+ _d.label = 4;
373
+ case 4:
374
+ if (!data.region_id) {
375
+ throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "A region_id must be provided when creating a cart");
376
+ }
377
+ rawCart.region_id = data.region_id;
378
+ return [4 /*yield*/, this.regionService_
379
+ .withTransaction(transactionManager)
380
+ .retrieve(data.region_id, {
381
+ relations: ["countries"],
382
+ })];
383
+ case 5:
384
+ region = _d.sent();
381
385
  regCountries = region.countries.map(function (_a) {
382
386
  var iso_2 = _a.iso_2;
383
387
  return iso_2;
384
388
  });
385
- rawCart.region_id = region.id;
386
- if (!(!data.shipping_address && !data.shipping_address_id)) return [3 /*break*/, 4];
389
+ if (!(!data.shipping_address && !data.shipping_address_id)) return [3 /*break*/, 6];
387
390
  if (region.countries.length === 1) {
388
391
  rawCart.shipping_address = addressRepo.create({
389
392
  country_code: regCountries[0],
390
393
  });
391
394
  }
392
- return [3 /*break*/, 6];
393
- case 4:
395
+ return [3 /*break*/, 8];
396
+ case 6:
394
397
  if (data.shipping_address) {
395
398
  if (!regCountries.includes(data.shipping_address.country_code)) {
396
399
  throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Shipping country not in region");
397
400
  }
398
401
  rawCart.shipping_address = data.shipping_address;
399
402
  }
400
- if (!data.shipping_address_id) return [3 /*break*/, 6];
403
+ if (!data.shipping_address_id) return [3 /*break*/, 8];
401
404
  return [4 /*yield*/, addressRepo.findOne(data.shipping_address_id)];
402
- case 5:
403
- addr = _b.sent();
405
+ case 7:
406
+ addr = _d.sent();
404
407
  if (addr && !regCountries.includes(addr.country_code)) {
405
408
  throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.NOT_ALLOWED, "Shipping country not in region");
406
409
  }
407
410
  rawCart.shipping_address_id = data.shipping_address_id;
408
- _b.label = 6;
409
- case 6:
411
+ _d.label = 8;
412
+ case 8:
410
413
  remainingFields = [
411
414
  "billing_address_id",
412
415
  "context",
@@ -420,31 +423,29 @@ var CartService = /** @class */ (function (_super) {
420
423
  remainingField = remainingFields_1_1.value;
421
424
  if (typeof data[remainingField] !== "undefined" &&
422
425
  remainingField !== "object") {
423
- /* TODO: See how to fix the error TS2590 properly while keeping the DeepPartial type */
424
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
425
- // @ts-ignore
426
- rawCart[remainingField] = data[remainingField];
426
+ key = remainingField;
427
+ rawCart[key] = data[remainingField];
427
428
  }
428
429
  }
429
430
  }
430
431
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
431
432
  finally {
432
433
  try {
433
- if (remainingFields_1_1 && !remainingFields_1_1.done && (_a = remainingFields_1.return)) _a.call(remainingFields_1);
434
+ if (remainingFields_1_1 && !remainingFields_1_1.done && (_b = remainingFields_1.return)) _b.call(remainingFields_1);
434
435
  }
435
436
  finally { if (e_2) throw e_2.error; }
436
437
  }
437
438
  createdCart = cartRepo.create(rawCart);
438
439
  return [4 /*yield*/, cartRepo.save(createdCart)];
439
- case 7:
440
- cart = _b.sent();
440
+ case 9:
441
+ cart = _d.sent();
441
442
  return [4 /*yield*/, this.eventBus_
442
443
  .withTransaction(transactionManager)
443
444
  .emit(CartService.Events.CREATED, {
444
445
  id: cart.id,
445
446
  })];
446
- case 8:
447
- _b.sent();
447
+ case 10:
448
+ _d.sent();
448
449
  return [2 /*return*/, cart];
449
450
  }
450
451
  });
@@ -454,6 +455,34 @@ var CartService = /** @class */ (function (_super) {
454
455
  });
455
456
  });
456
457
  };
458
+ CartService.prototype.getValidatedSalesChannel = function (salesChannelId) {
459
+ return __awaiter(this, void 0, void 0, function () {
460
+ var salesChannel;
461
+ return __generator(this, function (_a) {
462
+ switch (_a.label) {
463
+ case 0:
464
+ if (!(typeof salesChannelId !== "undefined")) return [3 /*break*/, 2];
465
+ return [4 /*yield*/, this.salesChannelService_
466
+ .withTransaction(this.manager_)
467
+ .retrieve(salesChannelId)];
468
+ case 1:
469
+ salesChannel = _a.sent();
470
+ return [3 /*break*/, 4];
471
+ case 2: return [4 /*yield*/, this.storeService_.withTransaction(this.manager_).retrieve({
472
+ relations: ["default_sales_channel"],
473
+ })];
474
+ case 3:
475
+ salesChannel = (_a.sent()).default_sales_channel;
476
+ _a.label = 4;
477
+ case 4:
478
+ if (salesChannel.is_disabled) {
479
+ throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "Unable to assign the cart to a disabled Sales Channel \"".concat(salesChannel.name, "\""));
480
+ }
481
+ return [2 /*return*/, salesChannel];
482
+ }
483
+ });
484
+ });
485
+ };
457
486
  /**
458
487
  * Removes a line item from the cart.
459
488
  * @param cartId - the id of the cart that we will remove from
@@ -539,7 +568,7 @@ var CartService = /** @class */ (function (_super) {
539
568
  * shipping methods.
540
569
  * @param shippingMethods - the set of shipping methods to check from
541
570
  * @param lineItem - the line item
542
- * @return boolean representing wheter shipping method is validated
571
+ * @return boolean representing whether shipping method is validated
543
572
  */
544
573
  CartService.prototype.validateLineItemShipping_ = function (shippingMethods, lineItem) {
545
574
  if (!lineItem.variant_id) {
@@ -558,13 +587,46 @@ var CartService = /** @class */ (function (_super) {
558
587
  }
559
588
  return false;
560
589
  };
590
+ /**
591
+ * Check if line item's variant belongs to the cart's sales channel.
592
+ *
593
+ * @param cart - the cart for the line item
594
+ * @param lineItem - the line item being added
595
+ * @return a boolean indicating validation result
596
+ */
597
+ CartService.prototype.validateLineItem = function (cart, lineItem) {
598
+ return __awaiter(this, void 0, void 0, function () {
599
+ var lineItemVariant;
600
+ return __generator(this, function (_a) {
601
+ switch (_a.label) {
602
+ case 0:
603
+ if (!cart.sales_channel_id) {
604
+ return [2 /*return*/, true];
605
+ }
606
+ return [4 /*yield*/, this.productVariantService_
607
+ .withTransaction(this.manager_)
608
+ .retrieve(lineItem.variant_id)];
609
+ case 1:
610
+ lineItemVariant = _a.sent();
611
+ return [4 /*yield*/, this.productService_
612
+ .withTransaction(this.manager_)
613
+ .filterProductsBySalesChannel([lineItemVariant.product_id], cart.sales_channel_id)];
614
+ case 2: return [2 /*return*/, !!(_a.sent()).length];
615
+ }
616
+ });
617
+ });
618
+ };
561
619
  /**
562
620
  * Adds a line item to the cart.
563
621
  * @param cartId - the id of the cart that we will add to
564
622
  * @param lineItem - the line item to add.
623
+ * @param config
624
+ * validateSalesChannels - should check if product belongs to the same sales chanel as cart
625
+ * (if cart has associated sales channel)
565
626
  * @return the result of the update operation
566
627
  */
567
- CartService.prototype.addLineItem = function (cartId, lineItem) {
628
+ CartService.prototype.addLineItem = function (cartId, lineItem, config) {
629
+ if (config === void 0) { config = { validateSalesChannels: true }; }
568
630
  return __awaiter(this, void 0, void 0, function () {
569
631
  var _this = this;
570
632
  return __generator(this, function (_a) {
@@ -587,6 +649,15 @@ var CartService = /** @class */ (function (_super) {
587
649
  })];
588
650
  case 1:
589
651
  cart = _a.sent();
652
+ if (!this.featureFlagRouter_.isFeatureEnabled("sales_channels")) return [3 /*break*/, 3];
653
+ if (!config.validateSalesChannels) return [3 /*break*/, 3];
654
+ return [4 /*yield*/, this.validateLineItem(cart, lineItem)];
655
+ case 2:
656
+ if (!(_a.sent())) {
657
+ throw new medusa_core_utils_1.MedusaError(medusa_core_utils_1.MedusaError.Types.INVALID_DATA, "The product \"".concat(lineItem.title, "\" must belongs to the sales channel on which the cart has been created."));
658
+ }
659
+ _a.label = 3;
660
+ case 3:
590
661
  if (lineItem.should_merge) {
591
662
  currentItem = cart.items.find(function (item) {
592
663
  if (item.should_merge && item.variant_id === lineItem.variant_id) {
@@ -602,45 +673,45 @@ var CartService = /** @class */ (function (_super) {
602
673
  return [4 /*yield*/, this.inventoryService_
603
674
  .withTransaction(transactionManager)
604
675
  .confirmInventory(lineItem.variant_id, quantity)];
605
- case 2:
676
+ case 4:
606
677
  // Confirm inventory or throw error
607
678
  _a.sent();
608
- if (!currentItem) return [3 /*break*/, 4];
679
+ if (!currentItem) return [3 /*break*/, 6];
609
680
  return [4 /*yield*/, this.lineItemService_
610
681
  .withTransaction(transactionManager)
611
682
  .update(currentItem.id, {
612
683
  quantity: currentItem.quantity,
613
684
  })];
614
- case 3:
685
+ case 5:
615
686
  _a.sent();
616
- return [3 /*break*/, 6];
617
- case 4: return [4 /*yield*/, this.lineItemService_
687
+ return [3 /*break*/, 8];
688
+ case 6: return [4 /*yield*/, this.lineItemService_
618
689
  .withTransaction(transactionManager)
619
690
  .create(__assign(__assign({}, lineItem), { has_shipping: false, cart_id: cartId }))];
620
- case 5:
691
+ case 7:
621
692
  _a.sent();
622
- _a.label = 6;
623
- case 6:
693
+ _a.label = 8;
694
+ case 8:
624
695
  lineItemRepository = transactionManager.getCustomRepository(this.lineItemRepository_);
625
696
  return [4 /*yield*/, lineItemRepository.update({
626
697
  id: (0, typeorm_1.In)(cart.items.map(function (item) { return item.id; })),
627
698
  }, {
628
699
  has_shipping: false,
629
700
  })];
630
- case 7:
701
+ case 9:
631
702
  _a.sent();
632
703
  return [4 /*yield*/, this.retrieve(cartId, {
633
704
  relations: ["items", "discounts", "discounts.rule"],
634
705
  })];
635
- case 8:
706
+ case 10:
636
707
  result = _a.sent();
637
708
  return [4 /*yield*/, this.refreshAdjustments_(result)];
638
- case 9:
709
+ case 11:
639
710
  _a.sent();
640
711
  return [4 /*yield*/, this.eventBus_
641
712
  .withTransaction(transactionManager)
642
713
  .emit(CartService.Events.UPDATED, result)];
643
- case 10:
714
+ case 12:
644
715
  _a.sent();
645
716
  return [2 /*return*/, result];
646
717
  }
@@ -788,13 +859,31 @@ var CartService = /** @class */ (function (_super) {
788
859
  return __generator(this, function (_a) {
789
860
  switch (_a.label) {
790
861
  case 0: return [4 /*yield*/, this.atomicPhase_(function (transactionManager) { return __awaiter(_this, void 0, void 0, function () {
791
- var cartRepo, cart, customer, countryCode, addrRepo, billingAddress, shippingAddress, previousDiscounts, hasFreeShipping, prevContext, updatedCart;
862
+ var cartRepo, relations, cart, customer, shippingAddress_1, countryCode, addrRepo, billingAddress, shippingAddress, previousDiscounts, hasFreeShipping, prevContext, updatedCart;
792
863
  var _this = this;
793
- var _a, _b, _c, _d, _e;
794
- return __generator(this, function (_f) {
795
- switch (_f.label) {
864
+ var _a, _b, _c, _d;
865
+ return __generator(this, function (_e) {
866
+ switch (_e.label) {
796
867
  case 0:
797
868
  cartRepo = transactionManager.getCustomRepository(this.cartRepository_);
869
+ relations = [
870
+ "items",
871
+ "shipping_methods",
872
+ "shipping_address",
873
+ "billing_address",
874
+ "gift_cards",
875
+ "customer",
876
+ "region",
877
+ "payment_sessions",
878
+ "region.countries",
879
+ "discounts",
880
+ "discounts.rule",
881
+ "discounts.regions",
882
+ ];
883
+ if (this.featureFlagRouter_.isFeatureEnabled(sales_channels_1.default.key) &&
884
+ data.sales_channel_id) {
885
+ relations.push("items.variant", "items.variant.product");
886
+ }
798
887
  return [4 /*yield*/, this.retrieve(cartId, {
799
888
  select: [
800
889
  "subtotal",
@@ -803,76 +892,75 @@ var CartService = /** @class */ (function (_super) {
803
892
  "discount_total",
804
893
  "total",
805
894
  ],
806
- relations: [
807
- "items",
808
- "shipping_methods",
809
- "shipping_address",
810
- "billing_address",
811
- "gift_cards",
812
- "customer",
813
- "region",
814
- "payment_sessions",
815
- "region.countries",
816
- "discounts",
817
- "discounts.rule",
818
- "discounts.regions",
819
- ],
895
+ relations: relations,
820
896
  })];
821
897
  case 1:
822
- cart = _f.sent();
898
+ cart = _e.sent();
823
899
  if (!data.customer_id) return [3 /*break*/, 3];
824
900
  return [4 /*yield*/, this.updateCustomerId_(cart, data.customer_id)];
825
901
  case 2:
826
- _f.sent();
902
+ _e.sent();
827
903
  return [3 /*break*/, 5];
828
904
  case 3:
829
905
  if (!(typeof data.email !== "undefined")) return [3 /*break*/, 5];
830
906
  return [4 /*yield*/, this.createOrFetchUserFromEmail_(data.email)];
831
907
  case 4:
832
- customer = _f.sent();
908
+ customer = _e.sent();
833
909
  cart.customer = customer;
834
910
  cart.customer_id = customer.id;
835
911
  cart.email = customer.email;
836
- _f.label = 5;
912
+ _e.label = 5;
837
913
  case 5:
838
914
  if (!(typeof data.customer_id !== "undefined" ||
839
915
  typeof data.region_id !== "undefined")) return [3 /*break*/, 7];
840
916
  return [4 /*yield*/, this.updateUnitPrices_(cart, data.region_id, data.customer_id)];
841
917
  case 6:
842
- _f.sent();
843
- _f.label = 7;
918
+ _e.sent();
919
+ _e.label = 7;
844
920
  case 7:
845
921
  if (!(typeof data.region_id !== "undefined")) return [3 /*break*/, 9];
846
- countryCode = (_b = (data.country_code || ((_a = data.shipping_address) === null || _a === void 0 ? void 0 : _a.country_code))) !== null && _b !== void 0 ? _b : null;
922
+ shippingAddress_1 = typeof data.shipping_address !== "string"
923
+ ? data.shipping_address
924
+ : {};
925
+ countryCode = (_a = (data.country_code || (shippingAddress_1 === null || shippingAddress_1 === void 0 ? void 0 : shippingAddress_1.country_code))) !== null && _a !== void 0 ? _a : null;
847
926
  return [4 /*yield*/, this.setRegion_(cart, data.region_id, countryCode)];
848
927
  case 8:
849
- _f.sent();
850
- _f.label = 9;
928
+ _e.sent();
929
+ _e.label = 9;
851
930
  case 9:
852
931
  addrRepo = transactionManager.getCustomRepository(this.addressRepository_);
853
- billingAddress = (_c = data.billing_address_id) !== null && _c !== void 0 ? _c : data.billing_address;
932
+ billingAddress = (_b = data.billing_address_id) !== null && _b !== void 0 ? _b : data.billing_address;
854
933
  if (!(billingAddress !== undefined)) return [3 /*break*/, 11];
855
934
  return [4 /*yield*/, this.updateBillingAddress_(cart, billingAddress, addrRepo)];
856
935
  case 10:
857
- _f.sent();
858
- _f.label = 11;
936
+ _e.sent();
937
+ _e.label = 11;
859
938
  case 11:
860
- shippingAddress = (_d = data.shipping_address_id) !== null && _d !== void 0 ? _d : data.shipping_address;
939
+ shippingAddress = (_c = data.shipping_address_id) !== null && _c !== void 0 ? _c : data.shipping_address;
861
940
  if (!(shippingAddress !== undefined)) return [3 /*break*/, 13];
862
941
  return [4 /*yield*/, this.updateShippingAddress_(cart, shippingAddress, addrRepo)];
863
942
  case 12:
864
- _f.sent();
865
- _f.label = 13;
943
+ _e.sent();
944
+ _e.label = 13;
866
945
  case 13:
867
- if (!(typeof data.discounts !== "undefined")) return [3 /*break*/, 18];
946
+ if (!this.featureFlagRouter_.isFeatureEnabled(sales_channels_1.default.key)) return [3 /*break*/, 15];
947
+ if (!(typeof data.sales_channel_id !== "undefined" &&
948
+ data.sales_channel_id != cart.sales_channel_id)) return [3 /*break*/, 15];
949
+ return [4 /*yield*/, this.onSalesChannelChange(cart, data.sales_channel_id)];
950
+ case 14:
951
+ _e.sent();
952
+ cart.sales_channel_id = data.sales_channel_id;
953
+ _e.label = 15;
954
+ case 15:
955
+ if (!(typeof data.discounts !== "undefined")) return [3 /*break*/, 20];
868
956
  previousDiscounts = __spreadArray([], __read(cart.discounts), false);
869
957
  cart.discounts.length = 0;
870
958
  return [4 /*yield*/, Promise.all(data.discounts.map(function (_a) {
871
959
  var code = _a.code;
872
960
  return _this.applyDiscount(cart, code);
873
961
  }))];
874
- case 14:
875
- _f.sent();
962
+ case 16:
963
+ _e.sent();
876
964
  hasFreeShipping = cart.discounts.some(function (_a) {
877
965
  var rule = _a.rule;
878
966
  return (rule === null || rule === void 0 ? void 0 : rule.type) === "free_shipping";
@@ -881,28 +969,28 @@ var CartService = /** @class */ (function (_super) {
881
969
  var rule = _a.rule;
882
970
  return rule.type === "free_shipping";
883
971
  }) &&
884
- !hasFreeShipping)) return [3 /*break*/, 16];
972
+ !hasFreeShipping)) return [3 /*break*/, 18];
885
973
  return [4 /*yield*/, this.adjustFreeShipping_(cart, false)];
886
- case 15:
887
- _f.sent();
888
- _f.label = 16;
889
- case 16:
890
- if (!hasFreeShipping) return [3 /*break*/, 18];
891
- return [4 /*yield*/, this.adjustFreeShipping_(cart, true)];
892
974
  case 17:
893
- _f.sent();
894
- _f.label = 18;
975
+ _e.sent();
976
+ _e.label = 18;
895
977
  case 18:
896
- if (!("gift_cards" in data)) return [3 /*break*/, 20];
978
+ if (!hasFreeShipping) return [3 /*break*/, 20];
979
+ return [4 /*yield*/, this.adjustFreeShipping_(cart, true)];
980
+ case 19:
981
+ _e.sent();
982
+ _e.label = 20;
983
+ case 20:
984
+ if (!("gift_cards" in data)) return [3 /*break*/, 22];
897
985
  cart.gift_cards = [];
898
- return [4 /*yield*/, Promise.all(((_e = data.gift_cards) !== null && _e !== void 0 ? _e : []).map(function (_a) {
986
+ return [4 /*yield*/, Promise.all(((_d = data.gift_cards) !== null && _d !== void 0 ? _d : []).map(function (_a) {
899
987
  var code = _a.code;
900
988
  return _this.applyGiftCard_(cart, code);
901
989
  }))];
902
- case 19:
903
- _f.sent();
904
- _f.label = 20;
905
- case 20:
990
+ case 21:
991
+ _e.sent();
992
+ _e.label = 22;
993
+ case 22:
906
994
  if (data === null || data === void 0 ? void 0 : data.metadata) {
907
995
  cart.metadata = (0, utils_1.setMetadata)(cart, data.metadata);
908
996
  }
@@ -917,20 +1005,20 @@ var CartService = /** @class */ (function (_super) {
917
1005
  cart.payment_authorized_at = data.payment_authorized_at;
918
1006
  }
919
1007
  return [4 /*yield*/, cartRepo.save(cart)];
920
- case 21:
921
- updatedCart = _f.sent();
922
- if (!("email" in data || "customer_id" in data)) return [3 /*break*/, 23];
1008
+ case 23:
1009
+ updatedCart = _e.sent();
1010
+ if (!("email" in data || "customer_id" in data)) return [3 /*break*/, 25];
923
1011
  return [4 /*yield*/, this.eventBus_
924
1012
  .withTransaction(transactionManager)
925
1013
  .emit(CartService.Events.CUSTOMER_UPDATED, updatedCart.id)];
926
- case 22:
927
- _f.sent();
928
- _f.label = 23;
929
- case 23: return [4 /*yield*/, this.eventBus_
1014
+ case 24:
1015
+ _e.sent();
1016
+ _e.label = 25;
1017
+ case 25: return [4 /*yield*/, this.eventBus_
930
1018
  .withTransaction(transactionManager)
931
1019
  .emit(CartService.Events.UPDATED, updatedCart)];
932
- case 24:
933
- _f.sent();
1020
+ case 26:
1021
+ _e.sent();
934
1022
  return [2 /*return*/, updatedCart];
935
1023
  }
936
1024
  });
@@ -940,6 +1028,50 @@ var CartService = /** @class */ (function (_super) {
940
1028
  });
941
1029
  });
942
1030
  };
1031
+ /**
1032
+ * Remove the cart line item that does not belongs to the newly assigned sales channel
1033
+ *
1034
+ * @param cart - The cart being updated
1035
+ * @param newSalesChannelId - The new sales channel being assigned to the cart
1036
+ * @return void
1037
+ * @protected
1038
+ */
1039
+ CartService.prototype.onSalesChannelChange = function (cart, newSalesChannelId) {
1040
+ var _a, _b;
1041
+ return __awaiter(this, void 0, void 0, function () {
1042
+ var productIds, productsToKeep, productIdsToKeep, itemsToRemove, results;
1043
+ var _this = this;
1044
+ return __generator(this, function (_c) {
1045
+ switch (_c.label) {
1046
+ case 0: return [4 /*yield*/, this.getValidatedSalesChannel(newSalesChannelId)];
1047
+ case 1:
1048
+ _c.sent();
1049
+ productIds = cart.items.map(function (item) { return item.variant.product_id; });
1050
+ return [4 /*yield*/, this.productService_
1051
+ .withTransaction(this.manager_)
1052
+ .filterProductsBySalesChannel(productIds, newSalesChannelId, {
1053
+ select: ["id", "sales_channels"],
1054
+ take: productIds.length,
1055
+ })];
1056
+ case 2:
1057
+ productsToKeep = _c.sent();
1058
+ productIdsToKeep = new Set(productsToKeep.map(function (product) { return product.id; }));
1059
+ itemsToRemove = cart.items.filter(function (item) {
1060
+ return !productIdsToKeep.has(item.variant.product_id);
1061
+ });
1062
+ if (!itemsToRemove.length) return [3 /*break*/, 4];
1063
+ return [4 /*yield*/, Promise.all(itemsToRemove.map(function (item) {
1064
+ return _this.removeLineItem(cart.id, item.id);
1065
+ }))];
1066
+ case 3:
1067
+ results = _c.sent();
1068
+ cart.items = (_b = (_a = results.pop()) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : [];
1069
+ _c.label = 4;
1070
+ case 4: return [2 /*return*/];
1071
+ }
1072
+ });
1073
+ });
1074
+ };
943
1075
  /**
944
1076
  * Sets the customer id of a cart
945
1077
  * @param cart - the cart to add email to