@mercurjs/core 2.3.6-canary.1 → 2.3.6-canary.10

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 (245) hide show
  1. package/.medusa/server/src/api/admin/campaigns/middlewares.js +3 -9
  2. package/.medusa/server/src/api/admin/collections/middlewares.js +8 -33
  3. package/.medusa/server/src/api/admin/commission-rates/middlewares.js +9 -39
  4. package/.medusa/server/src/api/admin/core-route-permissions.d.ts +18 -0
  5. package/.medusa/server/src/api/admin/core-route-permissions.js +82 -0
  6. package/.medusa/server/src/api/admin/customer-groups/middlewares.js +3 -9
  7. package/.medusa/server/src/api/admin/inventory-items/middlewares.js +3 -9
  8. package/.medusa/server/src/api/admin/members/middlewares.js +3 -9
  9. package/.medusa/server/src/api/admin/middlewares.js +8 -2
  10. package/.medusa/server/src/api/admin/offers/middlewares.js +10 -21
  11. package/.medusa/server/src/api/admin/order-groups/middlewares.js +10 -15
  12. package/.medusa/server/src/api/admin/orders/middlewares.js +3 -9
  13. package/.medusa/server/src/api/admin/payouts/middlewares.js +4 -15
  14. package/.medusa/server/src/api/admin/price-lists/middlewares.js +3 -9
  15. package/.medusa/server/src/api/admin/product-attributes/middlewares.js +11 -51
  16. package/.medusa/server/src/api/admin/product-categories/middlewares.js +14 -45
  17. package/.medusa/server/src/api/admin/product-changes/middlewares.js +8 -15
  18. package/.medusa/server/src/api/admin/products/[id]/route.js +8 -3
  19. package/.medusa/server/src/api/admin/products/middlewares.js +21 -99
  20. package/.medusa/server/src/api/admin/products/validators.d.ts +3 -3
  21. package/.medusa/server/src/api/admin/products/validators.js +4 -3
  22. package/.medusa/server/src/api/admin/promotions/middlewares.js +7 -21
  23. package/.medusa/server/src/api/admin/reservations/middlewares.js +3 -9
  24. package/.medusa/server/src/api/admin/reviews/middlewares.js +8 -33
  25. package/.medusa/server/src/api/admin/sellers/middlewares.js +32 -117
  26. package/.medusa/server/src/api/admin/sellers/query-config.js +3 -3
  27. package/.medusa/server/src/api/admin/shipping-options/middlewares.js +3 -9
  28. package/.medusa/server/src/api/admin/shipping-profiles/middlewares.js +3 -9
  29. package/.medusa/server/src/api/admin/stock-locations/middlewares.js +3 -9
  30. package/.medusa/server/src/api/admin/users/me/route.d.ts +4 -0
  31. package/.medusa/server/src/api/admin/users/me/route.js +42 -0
  32. package/.medusa/server/src/api/admin/users/middlewares.d.ts +2 -0
  33. package/.medusa/server/src/api/admin/users/middlewares.js +17 -0
  34. package/.medusa/server/src/api/utils/ensure-seller-middleware.js +1 -15
  35. package/.medusa/server/src/api/utils/index.d.ts +1 -2
  36. package/.medusa/server/src/api/utils/index.js +2 -3
  37. package/.medusa/server/src/api/utils/permissions-middleware.d.ts +32 -0
  38. package/.medusa/server/src/api/utils/permissions-middleware.js +133 -0
  39. package/.medusa/server/src/api/utils/scan-unauthenticated-routes.d.ts +6 -0
  40. package/.medusa/server/src/api/utils/scan-unauthenticated-routes.js +29 -6
  41. package/.medusa/server/src/api/utils/split-order-payment-status.d.ts +3 -1
  42. package/.medusa/server/src/api/utils/split-order-payment-status.js +25 -21
  43. package/.medusa/server/src/api/utils/unless-base-url.d.ts +4 -2
  44. package/.medusa/server/src/api/utils/unless-base-url.js +12 -4
  45. package/.medusa/server/src/api/vendor/campaigns/middlewares.js +9 -39
  46. package/.medusa/server/src/api/vendor/claims/middlewares.js +37 -129
  47. package/.medusa/server/src/api/vendor/collections/middlewares.js +5 -21
  48. package/.medusa/server/src/api/vendor/currencies/middlewares.js +4 -15
  49. package/.medusa/server/src/api/vendor/customer-groups/middlewares.js +9 -39
  50. package/.medusa/server/src/api/vendor/customers/middlewares.js +5 -21
  51. package/.medusa/server/src/api/vendor/exchanges/middlewares.js +31 -105
  52. package/.medusa/server/src/api/vendor/fulfillment-providers/middlewares.js +3 -9
  53. package/.medusa/server/src/api/vendor/fulfillment-sets/middlewares.js +8 -33
  54. package/.medusa/server/src/api/vendor/inventory-items/middlewares.js +14 -69
  55. package/.medusa/server/src/api/vendor/members/invites/accept/route.js +2 -1
  56. package/.medusa/server/src/api/vendor/members/me/route.js +6 -3
  57. package/.medusa/server/src/api/vendor/members/middlewares.js +3 -17
  58. package/.medusa/server/src/api/vendor/members/validators.d.ts +4 -2
  59. package/.medusa/server/src/api/vendor/members/validators.js +3 -2
  60. package/.medusa/server/src/api/vendor/middlewares.js +8 -3
  61. package/.medusa/server/src/api/vendor/offers/middlewares.js +10 -45
  62. package/.medusa/server/src/api/vendor/order-edits/middlewares.js +23 -69
  63. package/.medusa/server/src/api/vendor/orders/middlewares.js +18 -63
  64. package/.medusa/server/src/api/vendor/payments/helpers.js +22 -16
  65. package/.medusa/server/src/api/vendor/payments/middlewares.js +7 -33
  66. package/.medusa/server/src/api/vendor/payout-accounts/middlewares.js +6 -27
  67. package/.medusa/server/src/api/vendor/payouts/middlewares.js +4 -15
  68. package/.medusa/server/src/api/vendor/price-lists/middlewares.js +11 -51
  69. package/.medusa/server/src/api/vendor/price-preferences/middlewares.js +4 -15
  70. package/.medusa/server/src/api/vendor/product-attributes/middlewares.js +4 -15
  71. package/.medusa/server/src/api/vendor/product-categories/middlewares.js +5 -21
  72. package/.medusa/server/src/api/vendor/product-tags/middlewares.js +4 -15
  73. package/.medusa/server/src/api/vendor/product-types/middlewares.js +4 -15
  74. package/.medusa/server/src/api/vendor/product-variants/middlewares.js +3 -9
  75. package/.medusa/server/src/api/vendor/products/middlewares.js +24 -75
  76. package/.medusa/server/src/api/vendor/products/validators.d.ts +2 -2
  77. package/.medusa/server/src/api/vendor/products/validators.js +4 -3
  78. package/.medusa/server/src/api/vendor/promotions/middlewares.js +14 -69
  79. package/.medusa/server/src/api/vendor/refund-reasons/middlewares.js +4 -15
  80. package/.medusa/server/src/api/vendor/regions/middlewares.js +4 -15
  81. package/.medusa/server/src/api/vendor/reservations/middlewares.js +9 -33
  82. package/.medusa/server/src/api/vendor/return-reasons/middlewares.js +4 -15
  83. package/.medusa/server/src/api/vendor/returns/middlewares.js +26 -135
  84. package/.medusa/server/src/api/vendor/reviews/middlewares.js +5 -21
  85. package/.medusa/server/src/api/vendor/sales-channels/middlewares.js +5 -21
  86. package/.medusa/server/src/api/vendor/sellers/me/route.js +1 -1
  87. package/.medusa/server/src/api/vendor/sellers/middlewares.js +15 -92
  88. package/.medusa/server/src/api/vendor/sellers/query-config.d.ts +0 -4
  89. package/.medusa/server/src/api/vendor/sellers/query-config.js +8 -11
  90. package/.medusa/server/src/api/vendor/shipping-option-types/middlewares.js +4 -15
  91. package/.medusa/server/src/api/vendor/shipping-options/middlewares.js +9 -39
  92. package/.medusa/server/src/api/vendor/shipping-profiles/middlewares.js +4 -15
  93. package/.medusa/server/src/api/vendor/stock-locations/middlewares.js +11 -51
  94. package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +2 -2
  95. package/.medusa/server/src/api/vendor/uploads/middlewares.js +9 -9
  96. package/.medusa/server/src/modules/payout/migrations/Migration20260928120000.d.ts +5 -0
  97. package/.medusa/server/src/modules/payout/migrations/Migration20260928120000.js +14 -0
  98. package/.medusa/server/src/modules/payout/models/payout-account.js +2 -2
  99. package/.medusa/server/src/modules/seller/repositories/order-group.js +9 -1
  100. package/.medusa/server/src/patches/index.d.ts +11 -1
  101. package/.medusa/server/src/patches/index.js +52 -13
  102. package/.medusa/server/src/patches/loader.d.ts +10 -0
  103. package/.medusa/server/src/patches/loader.js +46 -4
  104. package/.medusa/server/src/patches/manifest.js +12 -3
  105. package/.medusa/server/src/patches/patches/@medusajs+core-flows@2.20.1-delivery-hook.patch +39 -0
  106. package/.medusa/server/src/patches/register.d.ts +1 -0
  107. package/.medusa/server/src/patches/register.js +10 -0
  108. package/.medusa/server/src/permissions/definitions/api-keys.d.ts +1 -0
  109. package/.medusa/server/src/permissions/definitions/api-keys.js +8 -0
  110. package/.medusa/server/src/permissions/definitions/commissions.d.ts +1 -0
  111. package/.medusa/server/src/permissions/definitions/commissions.js +9 -0
  112. package/.medusa/server/src/permissions/definitions/customers.d.ts +1 -0
  113. package/.medusa/server/src/permissions/definitions/customers.js +9 -0
  114. package/.medusa/server/src/permissions/definitions/fulfillment.d.ts +1 -0
  115. package/.medusa/server/src/permissions/definitions/fulfillment.js +10 -0
  116. package/.medusa/server/src/permissions/definitions/inventory.d.ts +1 -0
  117. package/.medusa/server/src/permissions/definitions/inventory.js +10 -0
  118. package/.medusa/server/src/permissions/definitions/members.d.ts +1 -0
  119. package/.medusa/server/src/permissions/definitions/members.js +9 -0
  120. package/.medusa/server/src/permissions/definitions/notifications.d.ts +1 -0
  121. package/.medusa/server/src/permissions/definitions/notifications.js +8 -0
  122. package/.medusa/server/src/permissions/definitions/offers.d.ts +1 -0
  123. package/.medusa/server/src/permissions/definitions/offers.js +8 -0
  124. package/.medusa/server/src/permissions/definitions/orders.d.ts +1 -0
  125. package/.medusa/server/src/permissions/definitions/orders.js +12 -0
  126. package/.medusa/server/src/permissions/definitions/payments.d.ts +1 -0
  127. package/.medusa/server/src/permissions/definitions/payments.js +8 -0
  128. package/.medusa/server/src/permissions/definitions/payouts.d.ts +1 -0
  129. package/.medusa/server/src/permissions/definitions/payouts.js +9 -0
  130. package/.medusa/server/src/permissions/definitions/price-lists.d.ts +1 -0
  131. package/.medusa/server/src/permissions/definitions/price-lists.js +9 -0
  132. package/.medusa/server/src/permissions/definitions/product-attributes.d.ts +1 -0
  133. package/.medusa/server/src/permissions/definitions/product-attributes.js +8 -0
  134. package/.medusa/server/src/permissions/definitions/products.d.ts +1 -0
  135. package/.medusa/server/src/permissions/definitions/products.js +14 -0
  136. package/.medusa/server/src/permissions/definitions/promotions.d.ts +1 -0
  137. package/.medusa/server/src/permissions/definitions/promotions.js +9 -0
  138. package/.medusa/server/src/permissions/definitions/refund-reasons.d.ts +1 -0
  139. package/.medusa/server/src/permissions/definitions/refund-reasons.js +8 -0
  140. package/.medusa/server/src/permissions/definitions/regions.d.ts +1 -0
  141. package/.medusa/server/src/permissions/definitions/regions.js +9 -0
  142. package/.medusa/server/src/permissions/definitions/return-reasons.d.ts +1 -0
  143. package/.medusa/server/src/permissions/definitions/return-reasons.js +8 -0
  144. package/.medusa/server/src/permissions/definitions/reviews.d.ts +1 -0
  145. package/.medusa/server/src/permissions/definitions/reviews.js +8 -0
  146. package/.medusa/server/src/permissions/definitions/roles.d.ts +1 -0
  147. package/.medusa/server/src/permissions/definitions/roles.js +9 -0
  148. package/.medusa/server/src/permissions/definitions/sales-channels.d.ts +1 -0
  149. package/.medusa/server/src/permissions/definitions/sales-channels.js +8 -0
  150. package/.medusa/server/src/permissions/definitions/sellers.d.ts +1 -0
  151. package/.medusa/server/src/permissions/definitions/sellers.js +10 -0
  152. package/.medusa/server/src/permissions/definitions/store.d.ts +1 -0
  153. package/.medusa/server/src/permissions/definitions/store.js +8 -0
  154. package/.medusa/server/src/permissions/definitions/translations.d.ts +1 -0
  155. package/.medusa/server/src/permissions/definitions/translations.js +8 -0
  156. package/.medusa/server/src/permissions/definitions/users.d.ts +1 -0
  157. package/.medusa/server/src/permissions/definitions/users.js +8 -0
  158. package/.medusa/server/src/permissions/definitions/workflow-executions.d.ts +1 -0
  159. package/.medusa/server/src/permissions/definitions/workflow-executions.js +8 -0
  160. package/.medusa/server/src/permissions/index.d.ts +27 -0
  161. package/.medusa/server/src/permissions/index.js +44 -0
  162. package/.medusa/server/src/permissions/registry.d.ts +18 -0
  163. package/.medusa/server/src/permissions/registry.js +86 -0
  164. package/.medusa/server/src/subscribers/split-order-canceled.d.ts +5 -0
  165. package/.medusa/server/src/subscribers/split-order-canceled.js +24 -0
  166. package/.medusa/server/src/subscribers/split-order-payment-captured.d.ts +5 -0
  167. package/.medusa/server/src/subscribers/split-order-payment-captured.js +24 -0
  168. package/.medusa/server/src/utils/sanitize-rich-text.d.ts +2 -0
  169. package/.medusa/server/src/utils/sanitize-rich-text.js +50 -0
  170. package/.medusa/server/src/with-mercur.d.ts +5 -3
  171. package/.medusa/server/src/with-mercur.js +4 -23
  172. package/.medusa/server/src/workflows/cart/workflows/complete-cart-with-split-orders.js +18 -31
  173. package/.medusa/server/src/workflows/index.d.ts +1 -0
  174. package/.medusa/server/src/workflows/index.js +2 -1
  175. package/.medusa/server/src/workflows/offer/workflows/create-offers.js +34 -4
  176. package/.medusa/server/src/workflows/order/workflows/fulfillment-hooks.d.ts +9 -0
  177. package/.medusa/server/src/workflows/order/workflows/fulfillment-hooks.js +9 -0
  178. package/.medusa/server/src/workflows/order/workflows/index.d.ts +1 -0
  179. package/.medusa/server/src/workflows/order/workflows/index.js +2 -1
  180. package/.medusa/server/src/workflows/order-group/workflows/get-order-group-detail.js +8 -8
  181. package/.medusa/server/src/workflows/order-group/workflows/get-order-groups-list.js +8 -8
  182. package/.medusa/server/src/workflows/payment/index.d.ts +2 -0
  183. package/.medusa/server/src/workflows/payment/index.js +3 -1
  184. package/.medusa/server/src/workflows/payment/steps/create-order-payments.d.ts +44 -0
  185. package/.medusa/server/src/workflows/payment/steps/create-order-payments.js +48 -0
  186. package/.medusa/server/src/workflows/payment/steps/index.d.ts +2 -0
  187. package/.medusa/server/src/workflows/payment/steps/index.js +19 -0
  188. package/.medusa/server/src/workflows/payment/steps/record-payment-captures.d.ts +29 -0
  189. package/.medusa/server/src/workflows/payment/steps/record-payment-captures.js +28 -0
  190. package/.medusa/server/src/workflows/payment/utils/index.d.ts +2 -0
  191. package/.medusa/server/src/workflows/payment/utils/index.js +19 -0
  192. package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.d.ts +141 -0
  193. package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.js +234 -0
  194. package/.medusa/server/src/workflows/payment/utils/split-order-payment.d.ts +15 -0
  195. package/.medusa/server/src/workflows/payment/utils/split-order-payment.js +65 -0
  196. package/.medusa/server/src/workflows/payment/workflows/index.d.ts +1 -0
  197. package/.medusa/server/src/workflows/payment/workflows/index.js +2 -1
  198. package/.medusa/server/src/workflows/payment/workflows/split-order-payments.d.ts +66 -0
  199. package/.medusa/server/src/workflows/payment/workflows/split-order-payments.js +164 -0
  200. package/.medusa/server/src/workflows/payout/workflows/create-payout.d.ts +4 -1
  201. package/.medusa/server/src/workflows/payout/workflows/create-payout.js +6 -2
  202. package/.medusa/server/src/workflows/product-edit/workflows/apply-product-change-actions.js +18 -2
  203. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.d.ts +1 -0
  204. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.js +2 -2
  205. package/.medusa/server/src/workflows/seller/steps/index.d.ts +0 -1
  206. package/.medusa/server/src/workflows/seller/steps/index.js +1 -2
  207. package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.d.ts +17 -2
  208. package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.js +14 -3
  209. package/.medusa/server/src/workflows/seller/workflows/create-seller-account.d.ts +16 -1
  210. package/.medusa/server/src/workflows/seller/workflows/create-seller-account.js +6 -3
  211. package/.medusa/server/src/workflows/seller/workflows/index.d.ts +0 -1
  212. package/.medusa/server/src/workflows/seller/workflows/index.js +1 -2
  213. package/package.json +13 -11
  214. package/.medusa/server/src/api/utils/policy-resources.d.ts +0 -59
  215. package/.medusa/server/src/api/utils/policy-resources.js +0 -64
  216. package/.medusa/server/src/api/utils/rbac-role-fields.d.ts +0 -1
  217. package/.medusa/server/src/api/utils/rbac-role-fields.js +0 -10
  218. package/.medusa/server/src/api/utils/resolve-admin-roles-middleware.d.ts +0 -19
  219. package/.medusa/server/src/api/utils/resolve-admin-roles-middleware.js +0 -55
  220. package/.medusa/server/src/api/vendor/rbac/me/permissions/route.d.ts +0 -16
  221. package/.medusa/server/src/api/vendor/rbac/me/permissions/route.js +0 -58
  222. package/.medusa/server/src/links/seller-member-rbac-role.d.ts +0 -2
  223. package/.medusa/server/src/links/seller-member-rbac-role.js +0 -41
  224. package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.d.ts +0 -11
  225. package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.js +0 -128
  226. package/.medusa/server/src/policies/commission.d.ts +0 -1
  227. package/.medusa/server/src/policies/commission.js +0 -12
  228. package/.medusa/server/src/policies/offer.d.ts +0 -1
  229. package/.medusa/server/src/policies/offer.js +0 -7
  230. package/.medusa/server/src/policies/payout.d.ts +0 -1
  231. package/.medusa/server/src/policies/payout.js +0 -7
  232. package/.medusa/server/src/policies/product-attribute.d.ts +0 -1
  233. package/.medusa/server/src/policies/product-attribute.js +0 -7
  234. package/.medusa/server/src/policies/product-edit.d.ts +0 -1
  235. package/.medusa/server/src/policies/product-edit.js +0 -7
  236. package/.medusa/server/src/policies/review.d.ts +0 -1
  237. package/.medusa/server/src/policies/review.js +0 -7
  238. package/.medusa/server/src/policies/seller.d.ts +0 -1
  239. package/.medusa/server/src/policies/seller.js +0 -13
  240. package/.medusa/server/src/utils/generate-resource-policies.d.ts +0 -7
  241. package/.medusa/server/src/utils/generate-resource-policies.js +0 -30
  242. package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.d.ts +0 -2
  243. package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.js +0 -16
  244. package/.medusa/server/src/workflows/seller/workflows/create-seller-defaults.d.ts +0 -2
  245. package/.medusa/server/src/workflows/seller/workflows/create-seller-defaults.js +0 -11
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.planCartPaymentVoid = exports.buildOrderPaymentCollectionLinks = exports.planCartPaymentSplit = exports.resolveSplitOrderCartId = exports.resolveOrderPaymentCollections = exports.hasSplitOrderCollections = exports.isOrderCanceled = exports.isPaymentCaptured = exports.cartOrderFields = exports.cartPaymentCollectionFields = exports.CART_PAYMENT_COLLECTION_KEY = exports.SPLIT_ORDER_COLLECTIONS_FLAG = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const split_order_payment_1 = require("./split-order-payment");
6
+ /** Set on a cart's payment collection once it is split into its orders'. */
7
+ exports.SPLIT_ORDER_COLLECTIONS_FLAG = "split_order_collections";
8
+ /** Set on an order's payment collection, pointing at the cart's. */
9
+ exports.CART_PAYMENT_COLLECTION_KEY = "cart_payment_collection_id";
10
+ const PAYMENT_FIELDS = [
11
+ "id",
12
+ "provider_id",
13
+ "currency_code",
14
+ "amount",
15
+ "raw_amount",
16
+ "data",
17
+ "captured_at",
18
+ "canceled_at",
19
+ "captures.id",
20
+ "captures.amount",
21
+ "captures.raw_amount",
22
+ "refunds.id",
23
+ "refunds.amount",
24
+ "refunds.raw_amount",
25
+ ];
26
+ const COLLECTION_FIELDS = [
27
+ "id",
28
+ "currency_code",
29
+ "metadata",
30
+ ...PAYMENT_FIELDS.map((field) => `payments.${field}`),
31
+ ];
32
+ /** Fields to query on `cart_payment_collection` to plan a split or a void. */
33
+ exports.cartPaymentCollectionFields = COLLECTION_FIELDS.map((field) => `payment_collection.${field}`);
34
+ /** Fields to query on `order_cart` to plan a split or a void. */
35
+ exports.cartOrderFields = [
36
+ "order.id",
37
+ "order.status",
38
+ "order.canceled_at",
39
+ "order.total",
40
+ ...COLLECTION_FIELDS.map((field) => `order.payment_collections.${field}`),
41
+ ];
42
+ const amountOf = (movement) => movement.raw_amount ?? movement.amount;
43
+ const sum = (movements) => (movements ?? []).reduce((acc, movement) => utils_1.MathBN.add(acc, amountOf(movement)), utils_1.MathBN.convert(0));
44
+ const isPaymentCaptured = (payment) => !!payment.captured_at || (payment.captures ?? []).length > 0;
45
+ exports.isPaymentCaptured = isPaymentCaptured;
46
+ const isOrderCanceled = (order) => order.status === utils_1.OrderStatus.CANCELED || !!order.canceled_at;
47
+ exports.isOrderCanceled = isOrderCanceled;
48
+ const hasSplitOrderCollections = (paymentCollection) => paymentCollection?.metadata?.[exports.SPLIT_ORDER_COLLECTIONS_FLAG] === true;
49
+ exports.hasSplitOrderCollections = hasSplitOrderCollections;
50
+ /**
51
+ * The payment collections that pay for an order. Until the cart payment is
52
+ * captured that is the cart's shared collection; afterwards the order has its
53
+ * own. An order canceled before the capture never gets one and keeps showing
54
+ * the cart's.
55
+ */
56
+ const resolveOrderPaymentCollections = (order) => {
57
+ const own = order.payment_collections ?? [];
58
+ const cartPaymentCollection = order.cart?.payment_collection;
59
+ if (!cartPaymentCollection) {
60
+ return own;
61
+ }
62
+ return (0, exports.hasSplitOrderCollections)(cartPaymentCollection) && own.length
63
+ ? own
64
+ : [cartPaymentCollection];
65
+ };
66
+ exports.resolveOrderPaymentCollections = resolveOrderPaymentCollections;
67
+ /**
68
+ * Resolves the cart a payment or an order belongs to. A payment can be the
69
+ * cart's own or one created for an order when the cart payment was split.
70
+ */
71
+ const resolveSplitOrderCartId = async (container, input) => {
72
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
73
+ if ("order_id" in input) {
74
+ const { data: [orderCart], } = await query.graph({
75
+ entity: "order_cart",
76
+ fields: ["cart_id"],
77
+ filters: { order_id: input.order_id },
78
+ });
79
+ return orderCart?.cart_id;
80
+ }
81
+ const { data: [payment], } = await query.graph({
82
+ entity: "payment",
83
+ fields: ["id", "payment_collection.id", "payment_collection.metadata"],
84
+ filters: { id: input.payment_id },
85
+ });
86
+ const collection = payment?.payment_collection;
87
+ if (!collection) {
88
+ return undefined;
89
+ }
90
+ const { data: [cartLink], } = await query.graph({
91
+ entity: "cart_payment_collection",
92
+ fields: ["cart_id"],
93
+ filters: {
94
+ payment_collection_id: collection.metadata?.[exports.CART_PAYMENT_COLLECTION_KEY] ?? collection.id,
95
+ },
96
+ });
97
+ return cartLink?.cart_id;
98
+ };
99
+ exports.resolveSplitOrderCartId = resolveSplitOrderCartId;
100
+ const getCartPayment = (collection) => (collection?.payments ?? []).find((payment) => !payment.canceled_at);
101
+ const getOrderCollection = (order, cartCollectionId) => (order.payment_collections ?? []).find((collection) => collection.metadata?.[exports.CART_PAYMENT_COLLECTION_KEY] === cartCollectionId);
102
+ const EMPTY_PLAN = {
103
+ collections: [],
104
+ payments: [],
105
+ captures: [],
106
+ recorded: [],
107
+ refunds: [],
108
+ };
109
+ /**
110
+ * Works out what is missing for every order of a cart to hold its share of
111
+ * what the cart payment has captured. Only ever plans the difference, so a
112
+ * cart that is already split yields an empty plan.
113
+ */
114
+ const planCartPaymentSplit = (cartCollection, orders) => {
115
+ const cartPayment = getCartPayment(cartCollection);
116
+ if (!cartCollection || !cartPayment || !orders.length) {
117
+ return EMPTY_PLAN;
118
+ }
119
+ const captured = sum(cartPayment.captures);
120
+ if (!utils_1.MathBN.gt(captured, 0)) {
121
+ return EMPTY_PLAN;
122
+ }
123
+ const decimalDigits = (0, split_order_payment_1.getCurrencyDecimalDigits)(cartPayment.currency_code);
124
+ const weights = orders.map((order) => order.total);
125
+ // What each order is entitled to of the authorization, and of the part of
126
+ // it captured so far.
127
+ const shares = (0, split_order_payment_1.allocateProportionally)({
128
+ amount: amountOf(cartPayment),
129
+ weights,
130
+ decimalDigits,
131
+ });
132
+ const targets = (0, split_order_payment_1.allocateProportionally)({
133
+ amount: captured,
134
+ weights,
135
+ decimalDigits,
136
+ });
137
+ const plan = {
138
+ collections: [],
139
+ payments: [],
140
+ captures: [],
141
+ recorded: [],
142
+ refunds: [],
143
+ };
144
+ let attributed = utils_1.MathBN.convert(0);
145
+ orders.forEach((order, index) => {
146
+ const collection = getOrderCollection(order, cartCollection.id);
147
+ const payment = collection?.payments?.[0];
148
+ const recorded = sum(payment?.captures);
149
+ const missing = utils_1.MathBN.sub(targets[index], recorded);
150
+ attributed = utils_1.MathBN.add(attributed, recorded);
151
+ for (const capture of payment?.captures ?? []) {
152
+ plan.recorded.push({
153
+ order_id: order.id,
154
+ currency_code: cartPayment.currency_code,
155
+ capture_id: capture.id,
156
+ amount: amountOf(capture),
157
+ });
158
+ }
159
+ // An order canceled before the capture is not paid: its part of the
160
+ // charge stays unattributed and is refunded.
161
+ if ((0, exports.isOrderCanceled)(order) || !utils_1.MathBN.gt(missing, 0)) {
162
+ return;
163
+ }
164
+ if (!collection) {
165
+ plan.collections.push({
166
+ order_id: order.id,
167
+ currency_code: cartPayment.currency_code,
168
+ amount: shares[index],
169
+ metadata: { [exports.CART_PAYMENT_COLLECTION_KEY]: cartCollection.id },
170
+ });
171
+ }
172
+ if (!payment) {
173
+ plan.payments.push({
174
+ order_id: order.id,
175
+ payment_collection_id: collection?.id,
176
+ provider_id: cartPayment.provider_id,
177
+ currency_code: cartPayment.currency_code,
178
+ amount: shares[index],
179
+ data: cartPayment.data ?? {},
180
+ });
181
+ }
182
+ plan.captures.push({
183
+ order_id: order.id,
184
+ payment_id: payment?.id,
185
+ amount: missing,
186
+ });
187
+ attributed = utils_1.MathBN.add(attributed, missing);
188
+ });
189
+ const unattributed = utils_1.MathBN.sub(captured, attributed, sum(cartPayment.refunds));
190
+ if (utils_1.MathBN.gt(unattributed, 0)) {
191
+ plan.refunds.push({
192
+ payment_id: cartPayment.id,
193
+ amount: unattributed,
194
+ note: "Share of orders canceled before the payment was captured",
195
+ });
196
+ }
197
+ if (!(0, exports.hasSplitOrderCollections)(cartCollection)) {
198
+ plan.cart_payment_collection = {
199
+ id: cartCollection.id,
200
+ metadata: {
201
+ ...cartCollection.metadata,
202
+ [exports.SPLIT_ORDER_COLLECTIONS_FLAG]: true,
203
+ },
204
+ };
205
+ }
206
+ return plan;
207
+ };
208
+ exports.planCartPaymentSplit = planCartPaymentSplit;
209
+ /** The links between the orders and the payment collections created for them. */
210
+ const buildOrderPaymentCollectionLinks = (plan, createdCollections) => plan.collections.map((collection, index) => ({
211
+ [utils_1.Modules.ORDER]: { order_id: collection.order_id },
212
+ [utils_1.Modules.PAYMENT]: { payment_collection_id: createdCollections[index].id },
213
+ }));
214
+ exports.buildOrderPaymentCollectionLinks = buildOrderPaymentCollectionLinks;
215
+ /**
216
+ * The cart payment to void: set once every order of the cart is canceled and
217
+ * nothing of the payment was captured.
218
+ */
219
+ const planCartPaymentVoid = (cartCollection, orders) => {
220
+ const cartPayment = getCartPayment(cartCollection);
221
+ if (!cartCollection ||
222
+ !cartPayment ||
223
+ !orders.length ||
224
+ (0, exports.isPaymentCaptured)(cartPayment) ||
225
+ !orders.every(exports.isOrderCanceled)) {
226
+ return { payment_ids: [], payment_collection_ids: [] };
227
+ }
228
+ return {
229
+ payment_ids: [cartPayment.id],
230
+ payment_collection_ids: [cartCollection.id],
231
+ };
232
+ };
233
+ exports.planCartPaymentVoid = planCartPaymentVoid;
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudC1ncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5bWVudC91dGlscy9zcGxpdC1vcmRlci1wYXltZW50LWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLHFEQUtrQztBQUVsQywrREFHOEI7QUFFOUIsNEVBQTRFO0FBQy9ELFFBQUEsNEJBQTRCLEdBQUcseUJBQXlCLENBQUE7QUFFckUsb0VBQW9FO0FBQ3ZELFFBQUEsMkJBQTJCLEdBQUcsNEJBQTRCLENBQUE7QUFvQ3ZFLE1BQU0sY0FBYyxHQUFHO0lBQ3JCLElBQUk7SUFDSixhQUFhO0lBQ2IsZUFBZTtJQUNmLFFBQVE7SUFDUixZQUFZO0lBQ1osTUFBTTtJQUNOLGFBQWE7SUFDYixhQUFhO0lBQ2IsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsWUFBWTtJQUNaLGdCQUFnQjtJQUNoQixvQkFBb0I7Q0FDckIsQ0FBQTtBQUVELE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSTtJQUNKLGVBQWU7SUFDZixVQUFVO0lBQ1YsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDO0NBQ3RELENBQUE7QUFFRCw4RUFBOEU7QUFDakUsUUFBQSwyQkFBMkIsR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQzlELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsS0FBSyxFQUFFLENBQ3pDLENBQUE7QUFFRCxpRUFBaUU7QUFDcEQsUUFBQSxlQUFlLEdBQUc7SUFDN0IsVUFBVTtJQUNWLGNBQWM7SUFDZCxtQkFBbUI7SUFDbkIsYUFBYTtJQUNiLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUM7Q0FDMUUs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
@@ -0,0 +1,15 @@
1
+ import { BigNumberInput } from "@medusajs/framework/types";
2
+ import { MathBN } from "@medusajs/framework/utils";
3
+ type BigNumberValue = ReturnType<typeof MathBN.convert>;
4
+ export declare const getCurrencyDecimalDigits: (currencyCode?: string | null) => number;
5
+ /**
6
+ * Splits `amount` across `weights` proportionally. Shares are rounded down to
7
+ * the currency precision and the remainder is handed out one minor unit at a
8
+ * time to the largest fractions, so the shares always sum exactly to `amount`.
9
+ */
10
+ export declare const allocateProportionally: ({ amount, weights, decimalDigits, }: {
11
+ amount: BigNumberInput;
12
+ weights: BigNumberInput[];
13
+ decimalDigits: number;
14
+ }) => BigNumberValue[];
15
+ export {};
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allocateProportionally = exports.getCurrencyDecimalDigits = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const DEFAULT_DECIMAL_DIGITS = 2;
6
+ const getCurrencyDecimalDigits = (currencyCode) => {
7
+ const currency = utils_1.defaultCurrencies[(currencyCode ?? "").toUpperCase()];
8
+ return currency?.decimal_digits ?? DEFAULT_DECIMAL_DIGITS;
9
+ };
10
+ exports.getCurrencyDecimalDigits = getCurrencyDecimalDigits;
11
+ const floorTo = (value, decimalDigits) => {
12
+ const rounded = utils_1.MathBN.convert(value, decimalDigits);
13
+ if (utils_1.MathBN.lte(rounded, value)) {
14
+ return rounded;
15
+ }
16
+ return utils_1.MathBN.sub(rounded, utils_1.MathBN.div(1, utils_1.MathBN.convert(10).pow(decimalDigits)));
17
+ };
18
+ /**
19
+ * Splits `amount` across `weights` proportionally. Shares are rounded down to
20
+ * the currency precision and the remainder is handed out one minor unit at a
21
+ * time to the largest fractions, so the shares always sum exactly to `amount`.
22
+ */
23
+ const allocateProportionally = ({ amount, weights, decimalDigits, }) => {
24
+ if (!weights.length) {
25
+ return [];
26
+ }
27
+ const total = utils_1.MathBN.convert(amount);
28
+ const positiveWeights = weights.map((weight) => utils_1.MathBN.max(utils_1.MathBN.convert(weight), 0));
29
+ const weightSum = positiveWeights.reduce((acc, weight) => utils_1.MathBN.add(acc, weight), utils_1.MathBN.convert(0));
30
+ const effectiveWeights = utils_1.MathBN.gt(weightSum, 0)
31
+ ? positiveWeights
32
+ : positiveWeights.map(() => utils_1.MathBN.convert(1));
33
+ const effectiveSum = utils_1.MathBN.gt(weightSum, 0)
34
+ ? weightSum
35
+ : utils_1.MathBN.convert(effectiveWeights.length);
36
+ const unit = utils_1.MathBN.div(1, utils_1.MathBN.convert(10).pow(decimalDigits));
37
+ const exact = effectiveWeights.map((weight) => utils_1.MathBN.div(utils_1.MathBN.mult(total, weight), effectiveSum));
38
+ const shares = exact.map((share) => floorTo(share, decimalDigits));
39
+ let leftover = utils_1.MathBN.sub(total, shares.reduce((acc, share) => utils_1.MathBN.add(acc, share), utils_1.MathBN.convert(0)));
40
+ const byLargestFraction = exact
41
+ .map((share, index) => ({
42
+ index,
43
+ fraction: utils_1.MathBN.sub(share, shares[index]),
44
+ }))
45
+ .sort((a, b) => utils_1.MathBN.eq(a.fraction, b.fraction)
46
+ ? a.index - b.index
47
+ : utils_1.MathBN.gt(a.fraction, b.fraction)
48
+ ? -1
49
+ : 1);
50
+ for (const { index } of byLargestFraction) {
51
+ if (utils_1.MathBN.lt(leftover, unit)) {
52
+ break;
53
+ }
54
+ shares[index] = utils_1.MathBN.add(shares[index], unit);
55
+ leftover = utils_1.MathBN.sub(leftover, unit);
56
+ }
57
+ // Only reachable when `amount` itself is finer than the currency precision.
58
+ if (utils_1.MathBN.gt(leftover, 0)) {
59
+ const { index } = byLargestFraction[0];
60
+ shares[index] = utils_1.MathBN.add(shares[index], leftover);
61
+ }
62
+ return shares;
63
+ };
64
+ exports.allocateProportionally = allocateProportionally;
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5bWVudC91dGlscy9zcGxpdC1vcmRlci1wYXltZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUFxRTtBQUlyRSxNQUFNLHNCQUFzQixHQUFHLENBQUMsQ0FBQTtBQUV6QixNQUFNLHdCQUF3QixHQUFHLENBQUMsWUFBNEIsRUFBRSxFQUFFO0lBQ3ZFLE1BQU0sUUFBUSxHQUFHLHlCQUFpQixDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDdEUsT0FBTyxRQUFRLEVBQUUsY0FBYyxJQUFJLHNCQUFzQixDQUFBO0FBQzNELENBQUMsQ0FBQTtBQUhZLFFBQUEsd0JBQXdCLDRCQUdwQztBQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBcUIsRUFBRSxhQUFxQixFQUFFLEVBQUU7SUFDL0QsTUFBTSxPQUFPLEdBQUcsY0FBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDcEQsSUFBSSxjQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7SUFDRCxPQUFPLGNBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGNBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGNBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNsRixDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ0ksTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEVBQ3JDLE1BQU0sRUFDTixPQUFPLEVBQ1AsYUFBYSxHQUtkLEVBQW9CLEVBQUU7SUFDckIsSUFBSSxDQUFDLE9BQU8s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
@@ -1,2 +1,3 @@
1
1
  export * from "./process-payment";
2
2
  export * from "./payment-hooks";
3
+ export * from "./split-order-payments";
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./process-payment"), exports);
18
18
  __exportStar(require("./payment-hooks"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BheW1lbnQvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBaUM7QUFDakMsa0RBQStCIn0=
19
+ __exportStar(require("./split-order-payments"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BheW1lbnQvd29ya2Zsb3dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBaUM7QUFDakMsa0RBQStCO0FBQy9CLHlEQUFzQyJ9
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The cart whose payment to split.
3
+ */
4
+ export type SplitCapturedCartPaymentWorkflowInput = {
5
+ /**
6
+ * The ID of the cart.
7
+ */
8
+ cart_id: string;
9
+ };
10
+ export declare const splitCapturedCartPaymentWorkflowId = "split-captured-cart-payment";
11
+ /**
12
+ * This workflow splits a captured cart payment between the orders of the
13
+ * cart. Every order gets a payment collection of its own, linked to the order,
14
+ * with a captured payment for the order's share on the cart payment's provider
15
+ * and pointing at the same charge, so Medusa's refund and cancel workflows
16
+ * apply to the order. What was charged for orders canceled before the capture
17
+ * is refunded against the cart payment.
18
+ *
19
+ * The workflow only adds what is missing: it does nothing until the cart
20
+ * payment has a capture, and nothing when run again for the same capture.
21
+ *
22
+ * @example
23
+ * const { result } = await splitCapturedCartPaymentWorkflow(container)
24
+ * .run({
25
+ * input: {
26
+ * cart_id: "cart_123",
27
+ * }
28
+ * })
29
+ *
30
+ * @summary
31
+ *
32
+ * Split a captured cart payment into a payment per order.
33
+ */
34
+ export declare const splitCapturedCartPaymentWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<SplitCapturedCartPaymentWorkflowInput, import("@medusajs/types").PaymentDTO[], []>;
35
+ /**
36
+ * The cart whose payment to void.
37
+ */
38
+ export type VoidCanceledCartPaymentWorkflowInput = {
39
+ /**
40
+ * The ID of the cart.
41
+ */
42
+ cart_id: string;
43
+ };
44
+ export declare const voidCanceledCartPaymentWorkflowId = "void-canceled-cart-payment";
45
+ /**
46
+ * This workflow voids a cart's payment once every order of the cart is
47
+ * canceled. Until it is captured, the authorization is shared by the cart's
48
+ * orders, so canceling a single order leaves it in place. The workflow does
49
+ * nothing while an order is still open or once the payment is captured.
50
+ *
51
+ * @example
52
+ * const { result } = await voidCanceledCartPaymentWorkflow(container)
53
+ * .run({
54
+ * input: {
55
+ * cart_id: "cart_123",
56
+ * }
57
+ * })
58
+ *
59
+ * @summary
60
+ *
61
+ * Void a cart's payment when all of its orders are canceled.
62
+ */
63
+ export declare const voidCanceledCartPaymentWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<VoidCanceledCartPaymentWorkflowInput, {
64
+ payment_ids: string[];
65
+ payment_collection_ids: string[];
66
+ }, []>;
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.voidCanceledCartPaymentWorkflow = exports.voidCanceledCartPaymentWorkflowId = exports.splitCapturedCartPaymentWorkflow = exports.splitCapturedCartPaymentWorkflowId = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
7
+ const create_order_payments_1 = require("../steps/create-order-payments");
8
+ const record_payment_captures_1 = require("../steps/record-payment-captures");
9
+ const utils_2 = require("../utils");
10
+ const LOCK_TIMEOUT_SECONDS = 30;
11
+ const LOCK_TTL_SECONDS = 120;
12
+ const toOrders = (links) => links.flatMap((link) => link.order ?? []);
13
+ exports.splitCapturedCartPaymentWorkflowId = "split-captured-cart-payment";
14
+ /**
15
+ * This workflow splits a captured cart payment between the orders of the
16
+ * cart. Every order gets a payment collection of its own, linked to the order,
17
+ * with a captured payment for the order's share on the cart payment's provider
18
+ * and pointing at the same charge, so Medusa's refund and cancel workflows
19
+ * apply to the order. What was charged for orders canceled before the capture
20
+ * is refunded against the cart payment.
21
+ *
22
+ * The workflow only adds what is missing: it does nothing until the cart
23
+ * payment has a capture, and nothing when run again for the same capture.
24
+ *
25
+ * @example
26
+ * const { result } = await splitCapturedCartPaymentWorkflow(container)
27
+ * .run({
28
+ * input: {
29
+ * cart_id: "cart_123",
30
+ * }
31
+ * })
32
+ *
33
+ * @summary
34
+ *
35
+ * Split a captured cart payment into a payment per order.
36
+ */
37
+ exports.splitCapturedCartPaymentWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.splitCapturedCartPaymentWorkflowId, (input) => {
38
+ // Not the cart id itself: checkout holds that lock while it runs this
39
+ // workflow as a step.
40
+ const lockKey = (0, workflows_sdk_1.transform)({ input }, ({ input }) => `split-order-payment:${input.cart_id}`);
41
+ (0, core_flows_1.acquireLockStep)({
42
+ key: lockKey,
43
+ timeout: LOCK_TIMEOUT_SECONDS,
44
+ ttl: LOCK_TTL_SECONDS,
45
+ });
46
+ const cartPaymentQuery = (0, core_flows_1.useQueryGraphStep)({
47
+ entity: "cart_payment_collection",
48
+ fields: utils_2.cartPaymentCollectionFields,
49
+ filters: { cart_id: input.cart_id },
50
+ }).config({ name: "get-cart-payment-collection" });
51
+ const cartOrdersQuery = (0, core_flows_1.useQueryGraphStep)({
52
+ entity: "order_cart",
53
+ fields: utils_2.cartOrderFields,
54
+ filters: { cart_id: input.cart_id },
55
+ }).config({ name: "get-cart-orders" });
56
+ const plan = (0, workflows_sdk_1.transform)({ cartPaymentQuery, cartOrdersQuery }, ({ cartPaymentQuery, cartOrdersQuery }) => (0, utils_2.planCartPaymentSplit)(cartPaymentQuery.data[0]
57
+ ?.payment_collection, toOrders(cartOrdersQuery.data)));
58
+ const collections = (0, core_flows_1.createPaymentCollectionsStep)(plan.collections);
59
+ const links = (0, workflows_sdk_1.transform)({ plan, collections }, ({ plan, collections }) => (0, utils_2.buildOrderPaymentCollectionLinks)(plan, collections));
60
+ (0, core_flows_1.createRemoteLinkStep)(links).config({
61
+ name: "link-order-payment-collections",
62
+ });
63
+ const paymentsToCreate = (0, workflows_sdk_1.transform)({ plan, collections }, ({ plan, collections }) => {
64
+ const createdByOrder = new Map(plan.collections.map((collection, index) => [
65
+ collection.order_id,
66
+ collections[index].id,
67
+ ]));
68
+ return plan.payments.map(({ order_id, ...payment }) => ({
69
+ ...payment,
70
+ payment_collection_id: payment.payment_collection_id ??
71
+ createdByOrder.get(order_id),
72
+ }));
73
+ });
74
+ const payments = (0, create_order_payments_1.createOrderPaymentsStep)(paymentsToCreate);
75
+ const capturesToRecord = (0, workflows_sdk_1.transform)({ plan, payments }, ({ plan, payments }) => {
76
+ const createdByOrder = new Map(plan.payments.map((payment, index) => [
77
+ payment.order_id,
78
+ payments[index].id,
79
+ ]));
80
+ return plan.captures.map((capture) => ({
81
+ payment_id: capture.payment_id ??
82
+ createdByOrder.get(capture.order_id),
83
+ amount: capture.amount,
84
+ }));
85
+ });
86
+ const capturedPayments = (0, record_payment_captures_1.recordPaymentCapturesStep)(capturesToRecord);
87
+ const orderTransactions = (0, workflows_sdk_1.transform)({ plan, capturedPayments }, ({ plan, capturedPayments }) => [
88
+ ...plan.recorded.map((capture) => ({
89
+ order_id: capture.order_id,
90
+ amount: capture.amount,
91
+ currency_code: capture.currency_code,
92
+ reference: "capture",
93
+ reference_id: capture.capture_id,
94
+ })),
95
+ ...capturedPayments.flatMap((payment, index) => (payment.captures ?? []).map((capture) => ({
96
+ order_id: plan.captures[index].order_id,
97
+ amount: capture.raw_amount ?? capture.amount,
98
+ currency_code: payment.currency_code,
99
+ reference: "capture",
100
+ reference_id: capture.id,
101
+ }))),
102
+ ]);
103
+ (0, core_flows_1.addOrderTransactionStep)(orderTransactions);
104
+ (0, workflows_sdk_1.when)("flag-cart-payment-collection", { plan }, ({ plan }) => {
105
+ return !!plan.cart_payment_collection;
106
+ }).then(() => {
107
+ (0, core_flows_1.updatePaymentCollectionStep)({
108
+ selector: { id: plan.cart_payment_collection.id },
109
+ update: { metadata: plan.cart_payment_collection.metadata },
110
+ });
111
+ });
112
+ (0, core_flows_1.refundPaymentsStep)(plan.refunds);
113
+ const capturedEvents = (0, workflows_sdk_1.transform)({ capturedPayments }, ({ capturedPayments }) => capturedPayments.map((payment) => ({ id: payment.id })));
114
+ (0, core_flows_1.emitEventStep)({
115
+ eventName: utils_1.PaymentEvents.CAPTURED,
116
+ data: capturedEvents,
117
+ });
118
+ (0, core_flows_1.releaseLockStep)({ key: lockKey });
119
+ return new workflows_sdk_1.WorkflowResponse(capturedPayments);
120
+ });
121
+ exports.voidCanceledCartPaymentWorkflowId = "void-canceled-cart-payment";
122
+ /**
123
+ * This workflow voids a cart's payment once every order of the cart is
124
+ * canceled. Until it is captured, the authorization is shared by the cart's
125
+ * orders, so canceling a single order leaves it in place. The workflow does
126
+ * nothing while an order is still open or once the payment is captured.
127
+ *
128
+ * @example
129
+ * const { result } = await voidCanceledCartPaymentWorkflow(container)
130
+ * .run({
131
+ * input: {
132
+ * cart_id: "cart_123",
133
+ * }
134
+ * })
135
+ *
136
+ * @summary
137
+ *
138
+ * Void a cart's payment when all of its orders are canceled.
139
+ */
140
+ exports.voidCanceledCartPaymentWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.voidCanceledCartPaymentWorkflowId, (input) => {
141
+ const cartPaymentQuery = (0, core_flows_1.useQueryGraphStep)({
142
+ entity: "cart_payment_collection",
143
+ fields: utils_2.cartPaymentCollectionFields,
144
+ filters: { cart_id: input.cart_id },
145
+ }).config({ name: "get-cart-payment-collection" });
146
+ const cartOrdersQuery = (0, core_flows_1.useQueryGraphStep)({
147
+ entity: "order_cart",
148
+ fields: utils_2.cartOrderFields,
149
+ filters: { cart_id: input.cart_id },
150
+ }).config({ name: "get-cart-orders" });
151
+ const plan = (0, workflows_sdk_1.transform)({ cartPaymentQuery, cartOrdersQuery }, ({ cartPaymentQuery, cartOrdersQuery }) => (0, utils_2.planCartPaymentVoid)(cartPaymentQuery.data[0]
152
+ ?.payment_collection, toOrders(cartOrdersQuery.data)));
153
+ (0, core_flows_1.cancelPaymentStep)({ paymentIds: plan.payment_ids });
154
+ (0, workflows_sdk_1.when)("cancel-cart-payment-collection", { plan }, ({ plan }) => {
155
+ return plan.payment_collection_ids.length > 0;
156
+ }).then(() => {
157
+ (0, core_flows_1.updatePaymentCollectionStep)({
158
+ selector: { id: plan.payment_collection_ids },
159
+ update: { status: utils_1.PaymentCollectionStatus.CANCELED },
160
+ });
161
+ });
162
+ return new workflows_sdk_1.WorkflowResponse(plan);
163
+ });
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3BheW1lbnQvd29ya2Zsb3dzL3NwbGl0LW9yZGVyLXBheW1lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFrRjtBQUNsRixxRUFLMEM7QUFDMUMsNERBV29DO0FBRXBDLDBFQUF3RTtBQUN4RSw4RUFBNEU7QUFDNUUsb0NBUWlCO0FBWWpCLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFBO0FBQy9CLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFBO0FBUTVCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUE7QUFFOUIsUUFBQSxrQ0FBa0MsR0FBRyw2QkFBNkIsQ0FBQTtBQUMvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNVLFFBQUEsZ0NBQWdDLEdBQUcsSUFBQSw4QkFBYyxFQUM1RCwwQ0FBa0MsRUFDbEMsQ0FBQyxLQUE0QyxFQUFFLEVBQUU7SUFDL0Msc0VBQXNFO0lBQ3RFLHNCQUFzQjtJQUN0QixNQUFNLE9BQU8sR0FBRyxJQUFBLHlCQUFTLEVBQ3ZCLEVBQUUsS0FBSyxFQUFFLEVBQ1QsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUN0RCxDQUFBO0lBRUQsSUFBQSw0QkFBZSxFQUFDO1FBQ2QsR0FBRyxFQUFFLE9BQU87UUFDWixPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLEdBQUcsRUFBRSxnQkFBZ0I7S0FDdEIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQ3pDLE1BQU0sRUFB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
@@ -2,5 +2,8 @@ type CreatePayoutWorkflowInput = {
2
2
  order_id: string;
3
3
  };
4
4
  export declare const createPayoutWorkflowId = "create-payout";
5
- export declare const createPayoutWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<CreatePayoutWorkflowInput, import("@mercurjs/types").PayoutDTO, []>;
5
+ export declare const createPayoutWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<CreatePayoutWorkflowInput, import("@mercurjs/types").PayoutDTO, [import("@medusajs/framework/workflows-sdk").Hook<"payoutCreated", {
6
+ order_id: string;
7
+ payout_id: string;
8
+ }, unknown>]>;
6
9
  export {};
@@ -78,6 +78,10 @@ exports.createPayoutWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.creat
78
78
  },
79
79
  },
80
80
  ]);
81
- return new workflows_sdk_1.WorkflowResponse(payout);
81
+ const payoutCreated = (0, workflows_sdk_1.createHook)("payoutCreated", {
82
+ order_id: input.order_id,
83
+ payout_id: payout.id,
84
+ });
85
+ return new workflows_sdk_1.WorkflowResponse(payout, { hooks: [payoutCreated] });
82
86
  });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5b3V0L3dvcmtmbG93cy9jcmVhdGUtcGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUFxRjtBQUNyRixxRUFBNkc7QUFDN0cscURBQStEO0FBQy9ELDJDQUErQztBQUUvQyxvQ0FBMkM7QUFNOUIsUUFBQSxzQkFBc0IsR0FBRyxlQUFlLENBQUE7QUFFeEMsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDhCQUFjLEVBQ2hELDhCQUFzQixFQUN0QixVQUFVLEtBQThDO0lBQ3RELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixlQUFlO1lBQ2YsT0FBTztZQUNQLFVBQVU7WUFDVix5QkFBeUI7WUFDekIsU0FBUztZQUNULG9CQUFvQjtTQUNyQjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFFbEMsTUFBTSxLQUFLLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU5RCxNQUFNLGlCQUFpQixHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxHQUFHLEVBQUU7WUFDSCxFQUFFLE9B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
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXBheW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcGF5b3V0L3dvcmtmbG93cy9jcmVhdGUtcGF5b3V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDREQUFxRjtBQUNyRixxRUFNMEM7QUFDMUMscURBQStEO0FBQy9ELDJDQUErQztBQUUvQyxvQ0FBMkM7QUFNOUIsUUFBQSxzQkFBc0IsR0FBRyxlQUFlLENBQUE7QUFFeEMsUUFBQSxvQkFBb0IsR0FBRyxJQUFBLDhCQUFjLEVBQ2hELDhCQUFzQixFQUN0QixVQUFVLEtBQThDO0lBQ3RELE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSw4QkFBaUIsRUFBQztRQUN6QyxNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRTtZQUNOLElBQUk7WUFDSixlQUFlO1lBQ2YsT0FBTztZQUNQLFVBQVU7WUFDVix5QkFBeUI7WUFDekIsU0FBUztZQUNULG9CQUFvQjtTQUNyQjtRQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQy9CLE9BQU8sRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRTtLQUN0QyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUE7SUFFbEMsTUFBTSxLQUFLLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUU5RCxNQUFNLGlCQUFpQixHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3RCxHQUFHLEVBQUU7WUFDSCxFQUFFLE9B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