@mercurjs/core 2.3.6-canary.0 → 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 (252) 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 +63 -17
  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 +21 -2
  105. package/.medusa/server/src/patches/patches/@medusajs+core-flows@2.20.1-delivery-hook.patch +39 -0
  106. package/.medusa/server/src/patches/patches/@medusajs+core-flows@2.21.0-payment-hooks.patch +89 -0
  107. package/.medusa/server/src/patches/register.d.ts +1 -0
  108. package/.medusa/server/src/patches/register.js +10 -0
  109. package/.medusa/server/src/permissions/definitions/api-keys.d.ts +1 -0
  110. package/.medusa/server/src/permissions/definitions/api-keys.js +8 -0
  111. package/.medusa/server/src/permissions/definitions/commissions.d.ts +1 -0
  112. package/.medusa/server/src/permissions/definitions/commissions.js +9 -0
  113. package/.medusa/server/src/permissions/definitions/customers.d.ts +1 -0
  114. package/.medusa/server/src/permissions/definitions/customers.js +9 -0
  115. package/.medusa/server/src/permissions/definitions/fulfillment.d.ts +1 -0
  116. package/.medusa/server/src/permissions/definitions/fulfillment.js +10 -0
  117. package/.medusa/server/src/permissions/definitions/inventory.d.ts +1 -0
  118. package/.medusa/server/src/permissions/definitions/inventory.js +10 -0
  119. package/.medusa/server/src/permissions/definitions/members.d.ts +1 -0
  120. package/.medusa/server/src/permissions/definitions/members.js +9 -0
  121. package/.medusa/server/src/permissions/definitions/notifications.d.ts +1 -0
  122. package/.medusa/server/src/permissions/definitions/notifications.js +8 -0
  123. package/.medusa/server/src/permissions/definitions/offers.d.ts +1 -0
  124. package/.medusa/server/src/permissions/definitions/offers.js +8 -0
  125. package/.medusa/server/src/permissions/definitions/orders.d.ts +1 -0
  126. package/.medusa/server/src/permissions/definitions/orders.js +12 -0
  127. package/.medusa/server/src/permissions/definitions/payments.d.ts +1 -0
  128. package/.medusa/server/src/permissions/definitions/payments.js +8 -0
  129. package/.medusa/server/src/permissions/definitions/payouts.d.ts +1 -0
  130. package/.medusa/server/src/permissions/definitions/payouts.js +9 -0
  131. package/.medusa/server/src/permissions/definitions/price-lists.d.ts +1 -0
  132. package/.medusa/server/src/permissions/definitions/price-lists.js +9 -0
  133. package/.medusa/server/src/permissions/definitions/product-attributes.d.ts +1 -0
  134. package/.medusa/server/src/permissions/definitions/product-attributes.js +8 -0
  135. package/.medusa/server/src/permissions/definitions/products.d.ts +1 -0
  136. package/.medusa/server/src/permissions/definitions/products.js +14 -0
  137. package/.medusa/server/src/permissions/definitions/promotions.d.ts +1 -0
  138. package/.medusa/server/src/permissions/definitions/promotions.js +9 -0
  139. package/.medusa/server/src/permissions/definitions/refund-reasons.d.ts +1 -0
  140. package/.medusa/server/src/permissions/definitions/refund-reasons.js +8 -0
  141. package/.medusa/server/src/permissions/definitions/regions.d.ts +1 -0
  142. package/.medusa/server/src/permissions/definitions/regions.js +9 -0
  143. package/.medusa/server/src/permissions/definitions/return-reasons.d.ts +1 -0
  144. package/.medusa/server/src/permissions/definitions/return-reasons.js +8 -0
  145. package/.medusa/server/src/permissions/definitions/reviews.d.ts +1 -0
  146. package/.medusa/server/src/permissions/definitions/reviews.js +8 -0
  147. package/.medusa/server/src/permissions/definitions/roles.d.ts +1 -0
  148. package/.medusa/server/src/permissions/definitions/roles.js +9 -0
  149. package/.medusa/server/src/permissions/definitions/sales-channels.d.ts +1 -0
  150. package/.medusa/server/src/permissions/definitions/sales-channels.js +8 -0
  151. package/.medusa/server/src/permissions/definitions/sellers.d.ts +1 -0
  152. package/.medusa/server/src/permissions/definitions/sellers.js +10 -0
  153. package/.medusa/server/src/permissions/definitions/store.d.ts +1 -0
  154. package/.medusa/server/src/permissions/definitions/store.js +8 -0
  155. package/.medusa/server/src/permissions/definitions/translations.d.ts +1 -0
  156. package/.medusa/server/src/permissions/definitions/translations.js +8 -0
  157. package/.medusa/server/src/permissions/definitions/users.d.ts +1 -0
  158. package/.medusa/server/src/permissions/definitions/users.js +8 -0
  159. package/.medusa/server/src/permissions/definitions/workflow-executions.d.ts +1 -0
  160. package/.medusa/server/src/permissions/definitions/workflow-executions.js +8 -0
  161. package/.medusa/server/src/permissions/index.d.ts +27 -0
  162. package/.medusa/server/src/permissions/index.js +44 -0
  163. package/.medusa/server/src/permissions/registry.d.ts +18 -0
  164. package/.medusa/server/src/permissions/registry.js +86 -0
  165. package/.medusa/server/src/subscribers/split-order-canceled.d.ts +5 -0
  166. package/.medusa/server/src/subscribers/split-order-canceled.js +24 -0
  167. package/.medusa/server/src/subscribers/split-order-payment-captured.d.ts +5 -0
  168. package/.medusa/server/src/subscribers/split-order-payment-captured.js +24 -0
  169. package/.medusa/server/src/utils/sanitize-rich-text.d.ts +2 -0
  170. package/.medusa/server/src/utils/sanitize-rich-text.js +50 -0
  171. package/.medusa/server/src/with-mercur.d.ts +5 -3
  172. package/.medusa/server/src/with-mercur.js +4 -23
  173. package/.medusa/server/src/workflows/cart/workflows/complete-cart-with-split-orders.js +18 -31
  174. package/.medusa/server/src/workflows/commission/workflows/refresh-order-commission-lines.d.ts +8 -1
  175. package/.medusa/server/src/workflows/commission/workflows/refresh-order-commission-lines.js +6 -2
  176. package/.medusa/server/src/workflows/index.d.ts +1 -0
  177. package/.medusa/server/src/workflows/index.js +2 -1
  178. package/.medusa/server/src/workflows/offer/workflows/create-offers.js +34 -4
  179. package/.medusa/server/src/workflows/order/workflows/confirm-return-receive.d.ts +15 -2
  180. package/.medusa/server/src/workflows/order/workflows/confirm-return-receive.js +14 -3
  181. package/.medusa/server/src/workflows/order/workflows/fulfillment-hooks.d.ts +9 -0
  182. package/.medusa/server/src/workflows/order/workflows/fulfillment-hooks.js +9 -0
  183. package/.medusa/server/src/workflows/order/workflows/index.d.ts +1 -0
  184. package/.medusa/server/src/workflows/order/workflows/index.js +2 -1
  185. package/.medusa/server/src/workflows/order-group/workflows/get-order-group-detail.js +8 -8
  186. package/.medusa/server/src/workflows/order-group/workflows/get-order-groups-list.js +8 -8
  187. package/.medusa/server/src/workflows/payment/index.d.ts +2 -0
  188. package/.medusa/server/src/workflows/payment/index.js +3 -1
  189. package/.medusa/server/src/workflows/payment/steps/create-order-payments.d.ts +44 -0
  190. package/.medusa/server/src/workflows/payment/steps/create-order-payments.js +48 -0
  191. package/.medusa/server/src/workflows/payment/steps/index.d.ts +2 -0
  192. package/.medusa/server/src/workflows/payment/steps/index.js +19 -0
  193. package/.medusa/server/src/workflows/payment/steps/record-payment-captures.d.ts +29 -0
  194. package/.medusa/server/src/workflows/payment/steps/record-payment-captures.js +28 -0
  195. package/.medusa/server/src/workflows/payment/utils/index.d.ts +2 -0
  196. package/.medusa/server/src/workflows/payment/utils/index.js +19 -0
  197. package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.d.ts +141 -0
  198. package/.medusa/server/src/workflows/payment/utils/split-order-payment-group.js +234 -0
  199. package/.medusa/server/src/workflows/payment/utils/split-order-payment.d.ts +15 -0
  200. package/.medusa/server/src/workflows/payment/utils/split-order-payment.js +65 -0
  201. package/.medusa/server/src/workflows/payment/workflows/index.d.ts +2 -0
  202. package/.medusa/server/src/workflows/payment/workflows/index.js +3 -1
  203. package/.medusa/server/src/workflows/payment/workflows/payment-hooks.d.ts +25 -0
  204. package/.medusa/server/src/workflows/payment/workflows/payment-hooks.js +10 -0
  205. package/.medusa/server/src/workflows/payment/workflows/split-order-payments.d.ts +66 -0
  206. package/.medusa/server/src/workflows/payment/workflows/split-order-payments.js +164 -0
  207. package/.medusa/server/src/workflows/payout/workflows/create-payout.d.ts +4 -1
  208. package/.medusa/server/src/workflows/payout/workflows/create-payout.js +6 -2
  209. package/.medusa/server/src/workflows/product-edit/workflows/apply-product-change-actions.js +18 -2
  210. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.d.ts +1 -0
  211. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-delete-product.js +2 -2
  212. package/.medusa/server/src/workflows/seller/steps/index.d.ts +0 -1
  213. package/.medusa/server/src/workflows/seller/steps/index.js +1 -2
  214. package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.d.ts +17 -2
  215. package/.medusa/server/src/workflows/seller/workflows/accept-member-invite.js +14 -3
  216. package/.medusa/server/src/workflows/seller/workflows/create-seller-account.d.ts +16 -1
  217. package/.medusa/server/src/workflows/seller/workflows/create-seller-account.js +6 -3
  218. package/.medusa/server/src/workflows/seller/workflows/index.d.ts +0 -1
  219. package/.medusa/server/src/workflows/seller/workflows/index.js +1 -2
  220. package/package.json +13 -11
  221. package/.medusa/server/src/api/utils/policy-resources.d.ts +0 -59
  222. package/.medusa/server/src/api/utils/policy-resources.js +0 -64
  223. package/.medusa/server/src/api/utils/rbac-role-fields.d.ts +0 -1
  224. package/.medusa/server/src/api/utils/rbac-role-fields.js +0 -10
  225. package/.medusa/server/src/api/utils/resolve-admin-roles-middleware.d.ts +0 -19
  226. package/.medusa/server/src/api/utils/resolve-admin-roles-middleware.js +0 -55
  227. package/.medusa/server/src/api/vendor/rbac/me/permissions/route.d.ts +0 -16
  228. package/.medusa/server/src/api/vendor/rbac/me/permissions/route.js +0 -58
  229. package/.medusa/server/src/links/seller-member-rbac-role.d.ts +0 -2
  230. package/.medusa/server/src/links/seller-member-rbac-role.js +0 -41
  231. package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.d.ts +0 -11
  232. package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.js +0 -128
  233. package/.medusa/server/src/policies/commission.d.ts +0 -1
  234. package/.medusa/server/src/policies/commission.js +0 -12
  235. package/.medusa/server/src/policies/offer.d.ts +0 -1
  236. package/.medusa/server/src/policies/offer.js +0 -7
  237. package/.medusa/server/src/policies/payout.d.ts +0 -1
  238. package/.medusa/server/src/policies/payout.js +0 -7
  239. package/.medusa/server/src/policies/product-attribute.d.ts +0 -1
  240. package/.medusa/server/src/policies/product-attribute.js +0 -7
  241. package/.medusa/server/src/policies/product-edit.d.ts +0 -1
  242. package/.medusa/server/src/policies/product-edit.js +0 -7
  243. package/.medusa/server/src/policies/review.d.ts +0 -1
  244. package/.medusa/server/src/policies/review.js +0 -7
  245. package/.medusa/server/src/policies/seller.d.ts +0 -1
  246. package/.medusa/server/src/policies/seller.js +0 -13
  247. package/.medusa/server/src/utils/generate-resource-policies.d.ts +0 -7
  248. package/.medusa/server/src/utils/generate-resource-policies.js +0 -30
  249. package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.d.ts +0 -2
  250. package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.js +0 -16
  251. package/.medusa/server/src/workflows/seller/workflows/create-seller-defaults.d.ts +0 -2
  252. package/.medusa/server/src/workflows/seller/workflows/create-seller-defaults.js +0 -11
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PERMISSIONS_FIELD = exports.REQUIRED_PERMISSION = void 0;
4
+ exports.isPermissionsModuleEnabled = isPermissionsModuleEnabled;
5
+ exports.resolvePermissionsMiddleware = resolvePermissionsMiddleware;
6
+ exports.requirePermission = requirePermission;
7
+ exports.requireAnyPermission = requireAnyPermission;
8
+ exports.takePermissionsField = takePermissionsField;
9
+ exports.attachPermissions = attachPermissions;
10
+ const utils_1 = require("@medusajs/framework/utils");
11
+ const types_1 = require("@mercurjs/types");
12
+ const permissions_1 = require("../../permissions");
13
+ function isPermissionsModuleEnabled(config) {
14
+ const modules = config.modules;
15
+ const entry = modules?.[types_1.PERMISSIONS_MODULE];
16
+ if (!entry) {
17
+ return false;
18
+ }
19
+ return !(typeof entry === "object" && "disable" in entry && entry.disable);
20
+ }
21
+ function getResolver(req) {
22
+ const config = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
23
+ if (!isPermissionsModuleEnabled(config)) {
24
+ return undefined;
25
+ }
26
+ return req.scope.resolve(types_1.PERMISSIONS_MODULE);
27
+ }
28
+ let catalogValidated = false;
29
+ function resolvePermissionsMiddleware(surface) {
30
+ return async (req, _res, next) => {
31
+ const catalog = (0, permissions_1.getPermissionCatalog)();
32
+ if (!catalogValidated) {
33
+ (0, permissions_1.validatePermissionCatalog)(catalog);
34
+ catalogValidated = true;
35
+ }
36
+ const resolver = getResolver(req);
37
+ const actorId = req.auth_context?.actor_id;
38
+ if (!resolver || !actorId) {
39
+ req.permissions = (0, permissions_1.grantAll)(catalog);
40
+ req.permissions_enforced = false;
41
+ return next();
42
+ }
43
+ const actor = {
44
+ actor_type: req.auth_context.actor_type,
45
+ actor_id: actorId,
46
+ surface,
47
+ seller_id: req.seller_context?.seller_id,
48
+ seller_member_id: req.seller_context?.seller_member?.id,
49
+ };
50
+ try {
51
+ req.permissions = await resolver.resolvePermissions(actor, catalog);
52
+ req.permissions_enforced = true;
53
+ next();
54
+ }
55
+ catch (error) {
56
+ next(error);
57
+ }
58
+ };
59
+ }
60
+ exports.REQUIRED_PERMISSION = Symbol.for("mercur:required-permission");
61
+ function requirePermission(key, right) {
62
+ const middleware = (req, res, next) => {
63
+ req.required_permissions ??= [];
64
+ req.required_permissions.push({ key, right });
65
+ // Routes reached before the resolving middleware (public or pre-seller
66
+ // routes) have nothing to enforce against.
67
+ if (!req.permissions_enforced) {
68
+ return next();
69
+ }
70
+ if ((0, permissions_1.satisfiesRight)(req.permissions?.[key], right)) {
71
+ return next();
72
+ }
73
+ res.status(403).json({
74
+ type: "not_allowed",
75
+ code: types_1.MISSING_PERMISSION_CODE,
76
+ message: `Missing required permission: ${key}:${right}`,
77
+ permission: key,
78
+ right,
79
+ });
80
+ };
81
+ return Object.assign(middleware, {
82
+ [exports.REQUIRED_PERMISSION]: { key, right },
83
+ });
84
+ }
85
+ /**
86
+ * Passes when the actor holds any one of the requirements. For routes shared
87
+ * by several domains, e.g. uploads used by both products and the store profile.
88
+ */
89
+ function requireAnyPermission(requirements) {
90
+ const middleware = (req, res, next) => {
91
+ req.required_permissions ??= [];
92
+ req.required_permissions.push(...requirements);
93
+ if (!req.permissions_enforced) {
94
+ return next();
95
+ }
96
+ if (requirements.some(({ key, right }) => (0, permissions_1.satisfiesRight)(req.permissions?.[key], right))) {
97
+ return next();
98
+ }
99
+ const [{ key, right }] = requirements;
100
+ res.status(403).json({
101
+ type: "not_allowed",
102
+ code: types_1.MISSING_PERMISSION_CODE,
103
+ message: `Missing required permission: ${requirements
104
+ .map((requirement) => `${requirement.key}:${requirement.right}`)
105
+ .join(" or ")}`,
106
+ permission: key,
107
+ right,
108
+ });
109
+ };
110
+ return Object.assign(middleware, {
111
+ [exports.REQUIRED_PERMISSION]: requirements[0],
112
+ });
113
+ }
114
+ exports.PERMISSIONS_FIELD = "permissions";
115
+ /**
116
+ * `permissions` is a virtual field: pull it out of the query config before it
117
+ * reaches `query.graph`, and report whether the client asked for it.
118
+ */
119
+ function takePermissionsField(req) {
120
+ const fields = req.queryConfig?.fields ?? [];
121
+ const requested = fields.includes(exports.PERMISSIONS_FIELD);
122
+ if (requested) {
123
+ req.queryConfig.fields = fields.filter((field) => field !== exports.PERMISSIONS_FIELD);
124
+ }
125
+ return requested;
126
+ }
127
+ function attachPermissions(req, entity, requested) {
128
+ if (!requested || !req.permissions_enforced || !req.permissions) {
129
+ return entity;
130
+ }
131
+ return { ...entity, permissions: req.permissions };
132
+ }
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMtbWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvdXRpbHMvcGVybWlzc2lvbnMtbWlkZGxld2FyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFpQ0EsZ0VBU0M7QUFrQkQsb0VBb0NDO0FBSUQsOENBK0JDO0FBTUQsb0RBcUNDO0FBUUQsb0RBU0M7QUFFRCw4Q0FTQztBQXBNRCxxREFBcUU7QUFDckUsMkNBU3dCO0FBRXhCLG1EQUswQjtBQVUxQixTQUFnQiwwQkFBMEIsQ0FBQyxNQUFvQjtJQUM3RCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBOEMsQ0FBQTtJQUNyRSxNQUFNLEtBQUssR0FBRyxPQUFPLEVBQUUsQ0FBQywwQkFBa0IsQ0FBQyxDQUFBO0lBRTNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxTQUFTLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUM1RSxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLEdBQStCO0lBRS9CLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUM5QixpQ0FBeUIsQ0FBQyxhQUFhLENBQ3hDLENBQUE7SUFFRCxJQUFJLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsMEJBQWtCLENBQUMsQ0FBQTtBQUNuRSxDQUFDO0FBRUQsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUE7QUFFNUIsU0FBZ0IsNEJBQTRCLENBQUMsT0FBMEI7SUFDckUsT0FBTyxLQUFLLEVBQ1YsR0FBK0Is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
@@ -1 +1,7 @@
1
+ import type { MedusaRequest } from "@medusajs/framework";
1
2
  export declare function scanUnauthenticatedRoutes(projectRoot: string): RegExp[];
3
+ /**
4
+ * Plugin routes are resolved on the first request: the vendor middlewares are
5
+ * built at import time, before the config module is available.
6
+ */
7
+ export declare const resolvePluginUnauthenticatedRoutes: (req: MedusaRequest) => Promise<RegExp[]>;
@@ -3,9 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolvePluginUnauthenticatedRoutes = void 0;
6
7
  exports.scanUnauthenticatedRoutes = scanUnauthenticatedRoutes;
7
8
  const fs_1 = __importDefault(require("fs"));
8
9
  const path_1 = __importDefault(require("path"));
10
+ const utils_1 = require("@medusajs/framework/utils");
9
11
  const VALID_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx"];
10
12
  function crawlRoutes(dir) {
11
13
  const files = [];
@@ -32,7 +34,9 @@ function hasAuthenticateFalse(filePath) {
32
34
  try {
33
35
  const content = fs_1.default.readFileSync(filePath, "utf-8");
34
36
  return (/export\s+const\s+AUTHENTICATE\s*=\s*false/.test(content) ||
35
- /export\s*\{[^}]*\bAUTHENTICATE\b[^}]*\}/.test(content));
37
+ /export\s*\{[^}]*\bAUTHENTICATE\b[^}]*\}/.test(content) ||
38
+ // Plugin routes are scanned in their compiled CommonJS output.
39
+ /\bexports\.AUTHENTICATE\s*=\s*false\b/.test(content));
36
40
  }
37
41
  catch {
38
42
  return false;
@@ -50,10 +54,9 @@ function filePathToRegex(filePath, apiDir) {
50
54
  });
51
55
  return new RegExp("^\\/" + regexSegments.join("\\/") + "$");
52
56
  }
53
- function scanUnauthenticatedRoutes(projectRoot) {
54
- const vendorApiDir = path_1.default.join(projectRoot, "src", "api", "vendor");
55
- const apiDir = path_1.default.join(projectRoot, "src", "api");
56
- const routeFiles = crawlRoutes(vendorApiDir);
57
+ function scanSourceDir(srcDir) {
58
+ const apiDir = path_1.default.join(srcDir, "api");
59
+ const routeFiles = crawlRoutes(path_1.default.join(apiDir, "vendor"));
57
60
  const patterns = [];
58
61
  for (const file of routeFiles) {
59
62
  if (hasAuthenticateFalse(file)) {
@@ -62,4 +65,24 @@ function scanUnauthenticatedRoutes(projectRoot) {
62
65
  }
63
66
  return patterns;
64
67
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi11bmF1dGhlbnRpY2F0ZWQtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS91dGlscy9zY2FuLXVuYXV0aGVudGljYXRlZC1yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUEyREEsOERBYUM7QUF4RUQsNENBQW1CO0FBQ25CLGdEQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFFdkQsU0FBUyxXQUFXLENBQUMsR0FBVztJQUM5QixNQUFNLEtBQUssR0FBYSxFQUFFLENBQUE7SUFFMUIsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxZQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRTVELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxRQUFRLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTNDLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBQ3RDLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sR0FBRyxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3BDLE1BQU0sUUFBUSxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQTtZQUUvQyxJQUFJLFFBQVEsS0FBSyxPQUFPLElBQUksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDdEIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxRQUFnQjtJQUM1QyxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sR0FBRyxZQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNsRCxPQUFPLENBQ0wsMkNBQTJDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUN6RCx5Q0FBeUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQ3hELENBQUE7SUFDSCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsTUFBYztJQUN2RCxNQUFNLFlBQVksR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQ3hFLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFFckUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNuQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDN0MsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxPQUFPLENBQUE7UUFDaEIsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUMsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtBQUM3RCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsV0FBbUI7SUFDM0QsTUFBTSxZQUFZLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNuRSxNQUFNLE1BQU0sR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbkQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQTtJQUU3QixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUMifQ==
68
+ function scanUnauthenticatedRoutes(projectRoot) {
69
+ return scanSourceDir(path_1.default.join(projectRoot, "src"));
70
+ }
71
+ let pluginPatterns;
72
+ /**
73
+ * Plugin routes are resolved on the first request: the vendor middlewares are
74
+ * built at import time, before the config module is available.
75
+ */
76
+ const resolvePluginUnauthenticatedRoutes = (req) => {
77
+ pluginPatterns ??= (async () => {
78
+ const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
79
+ const plugins = await (0, utils_1.getResolvedPlugins)(process.cwd(), configModule);
80
+ return plugins.flatMap((plugin) => scanSourceDir(plugin.resolve));
81
+ })().catch((error) => {
82
+ pluginPatterns = undefined;
83
+ throw error;
84
+ });
85
+ return pluginPatterns;
86
+ };
87
+ exports.resolvePluginUnauthenticatedRoutes = resolvePluginUnauthenticatedRoutes;
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi11bmF1dGhlbnRpY2F0ZWQtcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS91dGlscy9zY2FuLXVuYXV0aGVudGljYXRlZC1yb3V0ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZ0ZBLDhEQUVDO0FBbEZELDRDQUFtQjtBQUNuQixnREFBdUI7QUFFdkIscURBR2tDO0FBRWxDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUV2RCxTQUFTLFdBQVcsQ0FBQyxHQUFXO0lBQzlCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUUxQixJQUFJLENBQUMsWUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFlBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFFNUQsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM1QixNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFM0MsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDdEMsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFDMUIsTUFBTSxHQUFHLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDcEMsTUFBTSxRQUFRLEdBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBRS9DLElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN0QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLFFBQWdCO0lBQzVDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2xELE9BQU8sQ0FDTCwyQ0FBMkMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ3pELHlDQUF5QyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDdkQsK0RBQStEO1lBQy9ELHVDQUF1QyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FDdEQsQ0FBQTtJQUNILENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxNQUFjO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDeEUsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUVyRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ25DLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUM3QyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFBO0FBQzdELENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxNQUFjO0lBQ25DLE1BQU0sTUFBTSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ3ZDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQzNELE1BQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQTtJQUU3QixLQUFLLE1BQU0sSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQixRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUM7QUFFRCxTQUFnQix5QkFBeUIsQ0FBQyxXQUFtQjtJQUMzRCxPQUFPLGFBQWEsQ0FBQyxjQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3JELENBQUM7QUFFRCxJQUFJLGNBQTZDLENBQUE7QUFFakQ7OztHQUdHO0FBQ0ksTUFBTSxrQ0FBa0MsR0FBRyxDQUNoRCxHQUFrQixFQUNDLEVBQUU7SUFDckIsY0FBYyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDN0IsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ3BDLGlDQUF5QixDQUFDLGFBQWEsQ0FDeEMsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSwwQkFBa0IsRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUE7UUFDckUsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDbkUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNuQixjQUFjLEdBQUcsU0FBUyxDQUFBO1FBQzFCLE1BQU0sS0FBSyxDQUFBO0lBQ2IsQ0FBQyxDQUFDLENBQUE7SUFFRixPQUFPLGNBQWMsQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFmWSxRQUFBLGtDQUFrQyxzQ0FlOUMifQ==
@@ -1,6 +1,8 @@
1
1
  type OrderWithCartPaymentCollection = {
2
2
  cart?: {
3
- payment_collection?: unknown;
3
+ payment_collection?: {
4
+ metadata?: Record<string, unknown> | null;
5
+ } | null;
4
6
  } | null;
5
7
  payment_collections?: unknown[];
6
8
  payment_status?: string;
@@ -3,36 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOrderPaymentCollections = exports.withCartPaymentCollectionFields = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const aggregate_status_1 = require("../../workflows/order-group/utils/aggregate-status");
6
- // The shared cart payment collection is reached through the cart, not linked
7
- // to the order. These fields must always be loaded so the routes can normalize
8
- // them back onto `payment_collections` and recompute `payment_status` — even
9
- // when the client sends an absolute `fields=` list that would otherwise replace
10
- // the route defaults.
11
- const CART_PAYMENT_COLLECTION_FIELDS = [
12
- "cart.payment_collection.*",
13
- "cart.payment_collection.payments.*",
14
- "cart.payment_collection.payments.refunds.*",
15
- "cart.payment_collection.payments.refunds.refund_reason.*",
16
- "cart.payment_collection.payment_sessions.*",
6
+ const split_order_payment_group_1 = require("../../workflows/payment/utils/split-order-payment-group");
7
+ // An order is paid through the cart's shared payment collection until that
8
+ // payment is captured, and through its own linked collection afterwards. Both
9
+ // are always loaded so the routes can pick the right one and recompute
10
+ // `payment_status`, even when the client sends an absolute `fields=` list that
11
+ // would otherwise replace the route defaults.
12
+ const PAYMENT_COLLECTION_FIELDS = [
13
+ "*",
14
+ "payments.*",
15
+ "payments.refunds.*",
16
+ "payments.refunds.refund_reason.*",
17
+ "payment_sessions.*",
17
18
  ];
18
19
  const withCartPaymentCollectionFields = (fields) => {
19
- return (0, utils_1.deduplicate)([...fields, ...CART_PAYMENT_COLLECTION_FIELDS]);
20
+ return (0, utils_1.deduplicate)([
21
+ ...fields,
22
+ ...PAYMENT_COLLECTION_FIELDS.map((f) => `payment_collections.${f}`),
23
+ ...PAYMENT_COLLECTION_FIELDS.map((f) => `cart.payment_collection.${f}`),
24
+ ]);
20
25
  };
21
26
  exports.withCartPaymentCollectionFields = withCartPaymentCollectionFields;
22
- // The shared cart payment collection is fetched via `cart.payment_collection`
23
- // (it is not linked directly to an order). Expose it back on the order under
24
- // `payment_collections` so consumers keep the familiar shape, and recompute
25
- // `payment_status` from it — Medusa's aggregation reads the linked payment
26
- // collections, which are always empty for split orders under the cart-path model.
27
+ // Exposes the order's payment collections under `payment_collections` whichever
28
+ // way they are attached, and recomputes `payment_status` from them: Medusa's
29
+ // aggregation only reads the linked ones.
27
30
  const normalizeOrderPaymentCollections = (order) => {
28
- const paymentCollection = order.cart?.payment_collection;
31
+ const hadCart = !!order.cart;
32
+ const paymentCollections = (0, split_order_payment_group_1.resolveOrderPaymentCollections)(order);
29
33
  delete order.cart;
30
- if (!paymentCollection) {
34
+ if (!hadCart && !order.payment_collections) {
31
35
  return order;
32
36
  }
33
- order.payment_collections = [paymentCollection];
37
+ order.payment_collections = paymentCollections;
34
38
  order.payment_status = (0, aggregate_status_1.getLastPaymentStatus)(order);
35
39
  return order;
36
40
  };
37
41
  exports.normalizeOrderPaymentCollections = normalizeOrderPaymentCollections;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudC1zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3V0aWxzL3NwbGl0LW9yZGVyLXBheW1lbnQtc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUV2RCx5RkFBeUY7QUFRekYsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSw2RUFBNkU7QUFDN0UsZ0ZBQWdGO0FBQ2hGLHNCQUFzQjtBQUN0QixNQUFNLDhCQUE4QixHQUFHO0lBQ3JDLDJCQUEyQjtJQUMzQixvQ0FBb0M7SUFDcEMsNENBQTRDO0lBQzVDLDBEQUEwRDtJQUMxRCw0Q0FBNEM7Q0FDN0MsQ0FBQTtBQUVNLE1BQU0sK0JBQStCLEdBQUcsQ0FBQyxNQUFnQixFQUFZLEVBQUU7SUFDNUUsT0FBTyxJQUFBLG1CQUFXLEVBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLDhCQUE4QixDQUFDLENBQUMsQ0FBQTtBQUNwRSxDQUFDLENBQUE7QUFGWSxRQUFBLCtCQUErQixtQ0FFM0M7QUFFRCw4RUFBOEU7QUFDOUUsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwyRUFBMkU7QUFDM0Usa0ZBQWtGO0FBQzNFLE1BQU0sZ0NBQWdDLEdBQUcsQ0FHOUMsS0FBUSxFQUNMLEVBQUU7SUFDTCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUE7SUFFeEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFBO0lBRWpCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDL0MsS0FBSyxDQUFDLGNBQWMsR0FBRyxJQUFBLHVDQUFvQixFQUN6QyxLQUFrQyxDQUNuQyxDQUFBO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDLENBQUE7QUFuQlksUUFBQSxnQ0FBZ0Msb0NBbUI1QyJ9
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQtb3JkZXItcGF5bWVudC1zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3V0aWxzL3NwbGl0LW9yZGVyLXBheW1lbnQtc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUV2RCx5RkFBeUY7QUFFekYsdUdBQXdHO0FBUXhHLDJFQUEyRTtBQUMzRSw4RUFBOEU7QUFDOUUsdUVBQXVFO0FBQ3ZFLCtFQUErRTtBQUMvRSw4Q0FBOEM7QUFDOUMsTUFBTSx5QkFBeUIsR0FBRztJQUNoQyxHQUFHO0lBQ0gsWUFBWTtJQUNaLG9CQUFvQjtJQUNwQixrQ0FBa0M7SUFDbEMsb0JBQW9CO0NBQ3JCLENBQUE7QUFFTSxNQUFNLCtCQUErQixHQUFHLENBQUMsTUFBZ0IsRUFBWSxFQUFFO0lBQzVFLE9BQU8sSUFBQSxtQkFBVyxFQUFDO1FBQ2pCLEdBQUcsTUFBTTtRQUNULEdBQUcseUJBQXlCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7UUFDbkUsR0FBRyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztLQUN4RSxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFOWSxRQUFBLCtCQUErQixtQ0FNM0M7QUFFRCxnRkFBZ0Y7QUFDaEYsNkVBQTZFO0FBQzdFLDBDQUEwQztBQUNuQyxNQUFNLGdDQUFnQyxHQUFHLENBRzlDLEtBQVEsRUFDTCxFQUFFO0lBQ0wsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUE7SUFDNUIsTUFBTSxrQkFBa0IsR0FBRyxJQUFBLDBEQUE4QixFQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQTtJQUVqQixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLG1CQUFtQixHQUFHLGtCQUFrQixDQUFBO0lBQzlDLEtBQUssQ0FBQyxjQUFjLEdBQUcsSUFBQSx1Q0FBb0IsRUFDekMsS0FBa0MsQ0FDbkMsQ0FBQTtJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBcEJZLFFBQUEsZ0NBQWdDLG9DQW9CNUMifQ==
@@ -1,10 +1,12 @@
1
1
  import { MedusaNextFunction } from '@medusajs/framework';
2
2
  import { MedusaResponse, MiddlewareFunction } from '@medusajs/framework';
3
3
  import { MedusaRequest } from '@medusajs/framework';
4
+ type PathMatcher = RegExp | RegExp[] | ((req: MedusaRequest) => RegExp[] | Promise<RegExp[]>);
4
5
  /**
5
6
  * Due to Medusa's `unlessPath` function bug, we need to use this function to skip middlewares for particular routes.
6
- * @param onPath - Regular expression or array of regular expressions to match against the base URL
7
+ * @param onPath - Regular expression(s) to match against the base URL, or a resolver returning them per request
7
8
  * @param middleware - The middleware function to execute
8
9
  * @param methods - Optional array of HTTP methods to match against. If not provided, matches all methods.
9
10
  */
10
- export declare const unlessBaseUrl: (onPath: RegExp | RegExp[], middleware: MiddlewareFunction, methods?: string[]) => (req: MedusaRequest, res: MedusaResponse, next: MedusaNextFunction) => any;
11
+ export declare const unlessBaseUrl: (onPath: PathMatcher, middleware: MiddlewareFunction, methods?: string[]) => (req: MedusaRequest, res: MedusaResponse, next: MedusaNextFunction) => Promise<any>;
12
+ export {};
@@ -3,13 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.unlessBaseUrl = void 0;
4
4
  /**
5
5
  * Due to Medusa's `unlessPath` function bug, we need to use this function to skip middlewares for particular routes.
6
- * @param onPath - Regular expression or array of regular expressions to match against the base URL
6
+ * @param onPath - Regular expression(s) to match against the base URL, or a resolver returning them per request
7
7
  * @param middleware - The middleware function to execute
8
8
  * @param methods - Optional array of HTTP methods to match against. If not provided, matches all methods.
9
9
  */
10
- const unlessBaseUrl = (onPath, middleware, methods) => (req, res, next) => {
10
+ const unlessBaseUrl = (onPath, middleware, methods) => async (req, res, next) => {
11
11
  const methodMatches = !methods || methods.includes(req.method.toUpperCase());
12
- const paths = Array.isArray(onPath) ? onPath : [onPath];
12
+ let paths;
13
+ try {
14
+ paths = typeof onPath === "function"
15
+ ? await onPath(req)
16
+ : Array.isArray(onPath) ? onPath : [onPath];
17
+ }
18
+ catch (error) {
19
+ return next(error);
20
+ }
13
21
  const pathMatches = paths.some(p => p.test(req.baseUrl));
14
22
  if (pathMatches && methodMatches) {
15
23
  return next();
@@ -19,4 +27,4 @@ const unlessBaseUrl = (onPath, middleware, methods) => (req, res, next) => {
19
27
  }
20
28
  };
21
29
  exports.unlessBaseUrl = unlessBaseUrl;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sZXNzLWJhc2UtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS91dGlscy91bmxlc3MtYmFzZS11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUE7Ozs7O0dBS0c7QUFDSSxNQUFNLGFBQWEsR0FDdEIsQ0FBQyxNQUF5QixFQUFFLFVBQThCLEVBQUUsT0FBa0IsRUFBRSxFQUFFLENBQzlFLENBQUMsR0FBa0IsRUFBRSxHQUFtQixFQUFFLElBQXdCLEVBQUUsRUFBRTtJQUNsRSxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUM1RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdkQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDeEQsSUFBSSxXQUFXLElBQUksYUFBYSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUNqQixDQUFDO1NBQU0sQ0FBQztRQUNKLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDckMsQ0FBQztBQUNMLENBQUMsQ0FBQTtBQVhJLFFBQUEsYUFBYSxpQkFXakIifQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5sZXNzLWJhc2UtdXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS91dGlscy91bmxlc3MtYmFzZS11cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0E7Ozs7O0dBS0c7QUFDSSxNQUFNLGFBQWEsR0FDdEIsQ0FBQyxNQUFtQixFQUFFLFVBQThCLEVBQUUsT0FBa0IsRUFBRSxFQUFFLENBQ3hFLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsSUFBd0IsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO0lBQzVFLElBQUksS0FBZSxDQUFBO0lBQ25CLElBQUksQ0FBQztRQUNELEtBQUssR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVO1lBQ2hDLENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDbkIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3RCLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUN4RCxJQUFJLFdBQVcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUMvQixPQUFPLElBQUksRUFBRSxDQUFBO0lBQ2pCLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBbEJJLFFBQUEsYUFBYSxpQkFrQmpCIn0=
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.vendorCampaignsMiddlewares = void 0;
4
- const policy_resources_1 = require("../../utils/policy-resources");
5
- const utils_1 = require("@medusajs/framework/utils");
4
+ const utils_1 = require("../../utils");
6
5
  const http_1 = require("@medusajs/framework/http");
7
6
  const framework_1 = require("@medusajs/framework");
8
7
  const validators_1 = require("@medusajs/medusa/api/utils/validators");
@@ -22,82 +21,53 @@ exports.vendorCampaignsMiddlewares = [
22
21
  method: ["GET"],
23
22
  matcher: "/vendor/campaigns",
24
23
  middlewares: [
24
+ (0, utils_1.requirePermission)("campaigns", "view"),
25
25
  (0, framework_1.validateAndTransformQuery)(validators_2.VendorGetCampaignsParams, query_config_1.vendorCampaignQueryConfig.list),
26
26
  applySellerCampaignLinkFilter,
27
27
  helpers_1.applyCampaignFilters,
28
28
  ],
29
- policies: [
30
- {
31
- resource: policy_resources_1.PolicyResource.campaign,
32
- operation: utils_1.PolicyOperation.read,
33
- },
34
- ],
35
29
  },
36
30
  {
37
31
  method: ["POST"],
38
32
  matcher: "/vendor/campaigns",
39
33
  middlewares: [
34
+ (0, utils_1.requirePermission)("campaigns", "edit"),
40
35
  (0, framework_1.validateAndTransformBody)(validators_2.VendorCreateCampaign),
41
36
  (0, framework_1.validateAndTransformQuery)(validators_2.VendorGetCampaignParams, query_config_1.vendorCampaignQueryConfig.retrieve),
42
37
  ],
43
- policies: [
44
- {
45
- resource: policy_resources_1.PolicyResource.campaign,
46
- operation: utils_1.PolicyOperation.create,
47
- },
48
- ],
49
38
  },
50
39
  {
51
40
  method: ["GET"],
52
41
  matcher: "/vendor/campaigns/:id",
53
42
  middlewares: [
43
+ (0, utils_1.requirePermission)("campaigns", "view"),
54
44
  (0, framework_1.validateAndTransformQuery)(validators_2.VendorGetCampaignParams, query_config_1.vendorCampaignQueryConfig.retrieve),
55
45
  ],
56
- policies: [
57
- {
58
- resource: policy_resources_1.PolicyResource.campaign,
59
- operation: utils_1.PolicyOperation.read,
60
- },
61
- ],
62
46
  },
63
47
  {
64
48
  method: ["POST"],
65
49
  matcher: "/vendor/campaigns/:id",
66
50
  middlewares: [
51
+ (0, utils_1.requirePermission)("campaigns", "edit"),
67
52
  (0, framework_1.validateAndTransformBody)(validators_2.VendorUpdateCampaign),
68
53
  (0, framework_1.validateAndTransformQuery)(validators_2.VendorGetCampaignParams, query_config_1.vendorCampaignQueryConfig.retrieve),
69
54
  ],
70
- policies: [
71
- {
72
- resource: policy_resources_1.PolicyResource.campaign,
73
- operation: utils_1.PolicyOperation.update,
74
- },
75
- ],
76
55
  },
77
56
  {
78
57
  method: ["DELETE"],
79
58
  matcher: "/vendor/campaigns/:id",
80
- middlewares: [],
81
- policies: [
82
- {
83
- resource: policy_resources_1.PolicyResource.campaign,
84
- operation: utils_1.PolicyOperation.delete,
85
- },
59
+ middlewares: [
60
+ (0, utils_1.requirePermission)("campaigns", "manage"),
86
61
  ],
87
62
  },
88
63
  {
89
64
  method: ["POST"],
90
65
  matcher: "/vendor/campaigns/:id/promotions",
91
66
  middlewares: [
67
+ (0, utils_1.requirePermission)("campaigns", "edit"),
92
68
  (0, framework_1.validateAndTransformBody)((0, validators_1.createLinkBody)()),
93
69
  (0, framework_1.validateAndTransformQuery)(validators_2.VendorGetCampaignParams, query_config_1.vendorCampaignQueryConfig.retrieve),
94
70
  ],
95
- policies: [
96
- {
97
- resource: policy_resources_1.PolicyResource.campaign,
98
- operation: utils_1.PolicyOperation.update,
99
- },
100
- ],
101
71
  },
102
72
  ];
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jYW1wYWlnbnMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQTZEO0FBQzdELHFEQUEyRDtBQUMzRCxtREFNaUM7QUFDakMsbURBRzRCO0FBQzVCLHNFQUFzRTtBQUV0RSx1Q0FBZ0Q7QUFDaEQsaURBQTBEO0FBQzFELDZDQUtxQjtBQUVyQixNQUFNLDZCQUE2QixHQUFHLENBQ3BDLEdBQStCLEVBQy9CLEdBQW1CLEVBQ25CLElBQXdCLEVBQ3hCLEVBQUU7SUFDRixHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxjQUFlLENBQUMsU0FBUyxDQUFBO0lBRTlELE9BQU8sSUFBQSwyQkFBb0IsRUFBQztRQUMxQixVQUFVLEVBQUUsaUJBQWlCO1FBQzdCLFVBQVUsRUFBRSxhQUFhO1FBQ3pCLGVBQWUsRUFBRSxXQUFXO0tBQzdCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQUVZLFFBQUEsMEJBQTBCLEdBQXNCO0lBQzNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLG1CQUFtQjtRQUM1QixXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2QixxQ0FBd0IsRUFDeEIsd0NBQXlCLENBQUMsSUFBSSxDQUMvQjtZQUNELDZCQUE2QjtZQUM3Qiw4QkFBb0I7U0FDckI7UUFDRCxRQUFRLEVBQUU7WUFDUjtnQkFDRSxRQUFRLEVBQUUsaUNBQWMsQ0FBQyxRQUFRO2dCQUNqQyxTQUFTLEVBQUUsdUJBQWUsQ0FBQyxJQUFJO2FBQ2hDO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQyxpQ0FBb0IsQ0FBQztZQUM5QyxJQUFBLHFDQUF5QixFQUN2QixvQ0FBdUIsRUFDdkIsd0NBQXlCLENBQUMsUUFBUSxDQUNuQztTQUNGO1FBQ0QsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsUUFBUSxFQUFFLGlDQUFjLENBQUMsUUFBUTtnQkFDakMsU0FBUyxFQUFFLHVCQUFlLENBQUMsTUFBTTthQUNsQztTQUNGO0tBQ0Y7SUFDRDtRQUNFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNmLE9BQU8sRUFBRSx1QkFBdUI7UUFDaEMsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQ0FBeUIsRUFDdkIsb0NBQXVCLEVBQ3ZCLHdDQUF5QixDQUFDLFFBQVEsQ0FDbkM7U0FDRjtRQUNELFFBQVEsRUFBRTtZQUNSO2dCQUNFLFFBQVEsRUFBRSxpQ0FBYyxDQUFDLFFBQVE7Z0JBQ2pDLFNBQVMsRUFBRSx1QkFBZSxDQUFDLElBQUk7YUFDaEM7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDaEIsT0FBTyxFQUFFLHVCQUF1QjtRQUNoQyxXQUFXLEVBQUU7WUFDWCxJQUFBLG9DQUF3QixFQUFDLGlDQUFvQixDQUFDO1lBQzlDLElBQUEscUNBQXlCLEVBQ3ZCLG9DQUF1QixFQUN2Qix3Q0FBeUIsQ0FBQyxRQUFRLENBQ25DO1NBQ0Y7UUFDRCxRQUFRLEVBQUU7WUFDUjtnQkFDRSxRQUFRLEVBQUUsaUNBQWMsQ0FBQyxRQUFRO2dCQUNqQyxTQUFTLEVBQUUsdUJBQWUsQ0FBQyxNQUFNO2FBQ2xDO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSx1QkFBdUI7UUFDaEMsV0FBVyxFQUFFLEVBQUU7UUFDZixRQUFRLEVBQUU7WUFDUjtnQkFDRSxRQUFRLEVBQUUsaUNBQWMsQ0FBQyxRQUFRO2dCQUNqQyxTQUFTLEVBQUUsdUJBQWUsQ0FBQyxNQUFNO2FBQ2xDO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxrQ0FBa0M7UUFDM0MsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQyxJQUFBLDJCQUFjLEdBQUUsQ0FBQztZQUMxQyxJQUFBLHFDQUF5QixFQUN2QixvQ0FBdUIsRUFDdkIsd0NBQXlCLENBQUMsUUFBUSxDQUNuQztTQUNGO1FBQ0QsUUFBUSxFQUFFO1lBQ1I7Z0JBQ0UsUUFBUSxFQUFFLGlDQUFjLENBQUMsUUFBUTtnQkFDakMsU0FBUyxFQUFFLHVCQUFlLENBQUMsTUFBTTthQUNsQztTQUNGO0tBQ0Y7Q0FDRixDQUFBIn0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jYW1wYWlnbnMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQStDO0FBQy9DLG1EQU1pQztBQUNqQyxtREFHNEI7QUFDNUIsc0VBQXNFO0FBRXRFLHVDQUFnRDtBQUNoRCxpREFBMEQ7QUFDMUQsNkNBS3FCO0FBRXJCLE1BQU0sNkJBQTZCLEdBQUcsQ0FDcEMsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsSUFBd0IsRUFDeEIsRUFBRTtJQUNGLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLGNBQWUsQ0FBQyxTQUFTLENBQUE7SUFFOUQsT0FBTyxJQUFBLDJCQUFvQixFQUFDO1FBQzFCLFVBQVUsRUFBRSxpQkFBaUI7UUFDN0IsVUFBVSxFQUFFLGFBQWE7UUFDekIsZUFBZSxFQUFFLFdBQVc7S0FDN0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDcEIsQ0FBQyxDQUFBO0FBRVksUUFBQSwwQkFBMEIsR0FBc0I7SUFDM0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZixPQUFPLEVBQUUsbUJBQW1CO1FBQzVCLFdBQVcsRUFBRTtZQUNYLElBQUEseUJBQWlCLEVBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztZQUN0QyxJQUFBLHFDQUF5QixFQUN2QixxQ0FBd0IsRUFDeEIsd0NBQXlCLENBQUMsSUFBSSxDQUMvQjtZQUNELDZCQUE2QjtZQUM3Qiw4QkFBb0I7U0FDckI7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxtQkFBbUI7UUFDNUIsV0FBVyxFQUFFO1lBQ1gsSUFBQSx5QkFBaUIsRUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO1lBQ3RDLElBQUEsb0NBQXdCLEVBQUMsaUNBQW9CLENBQUM7WUFDOUMsSUFBQSxxQ0FBeUIsRUFDdkIsb0NBQXVCLEVBQ3ZCLHdDQUF5QixDQUFDLFFBQVEsQ0FDbkM7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZixPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLFdBQVcsRUFBRTtZQUNYLElBQUEseUJBQWlCLEVBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztZQUN0QyxJQUFBLHFDQUF5QixFQUN2QixvQ0FBdUIsRUFDdkIsd0NBQXlCLENBQUMsUUFBUSxDQUNuQztTQUNGO0tBQ0Y7SUFDRDtRQUNFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLFdBQVcsRUFBRTtZQUNYLElBQUEseUJBQWlCLEVBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztZQUN0QyxJQUFBLG9DQUF3QixFQUFDLGlDQUFvQixDQUFDO1lBQzlDLElBQUEscUNBQXlCLEVBQ3ZCLG9DQUF1QixFQUN2Qix3Q0FBeUIsQ0FBQyxRQUFRLENBQ25DO1NBQ0Y7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSx1QkFBdUI7UUFDaEMsV0FBVyxFQUFFO1lBQ1gsSUFBQSx5QkFBaUIsRUFBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO1NBQ3pDO0tBQ0Y7SUFDRDtRQUNFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNoQixPQUFPLEVBQUUsa0NBQWtDO1FBQzNDLFdBQVcsRUFBRTtZQUNYLElBQUEseUJBQWlCLEVBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQztZQUN0QyxJQUFBLG9DQUF3QixFQUFDLElBQUEsMkJBQWMsR0FBRSxDQUFDO1lBQzFDLElBQUEscUNBQXlCLEVBQ3ZCLG9DQUF1QixFQUN2Qix3Q0FBeUIsQ0FBQyxRQUFRLENBQ25DO1NBQ0Y7S0FDRjtDQUNGLENBQUEifQ==