@mercurjs/core 2.3.4-canary.1 → 2.3.4-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 (129) hide show
  1. package/.medusa/server/src/api/admin/offers/batch/route.js +2 -1
  2. package/.medusa/server/src/api/admin/offers/query-config.js +2 -1
  3. package/.medusa/server/src/api/admin/offers/validators.d.ts +5 -0
  4. package/.medusa/server/src/api/admin/offers/validators.js +3 -2
  5. package/.medusa/server/src/api/admin/sellers/query-config.d.ts +1 -1
  6. package/.medusa/server/src/api/admin/sellers/query-config.js +11 -8
  7. package/.medusa/server/src/api/admin/sellers/validators.d.ts +6 -0
  8. package/.medusa/server/src/api/admin/sellers/validators.js +3 -1
  9. package/.medusa/server/src/api/admin/shipping-profiles/middlewares.js +2 -18
  10. package/.medusa/server/src/api/store/offers/query-config.js +2 -1
  11. package/.medusa/server/src/api/store/order-groups/query-config.js +14 -3
  12. package/.medusa/server/src/api/utils/rbac-role-fields.d.ts +1 -0
  13. package/.medusa/server/src/api/utils/rbac-role-fields.js +10 -0
  14. package/.medusa/server/src/api/vendor/members/middlewares.js +13 -11
  15. package/.medusa/server/src/api/vendor/offers/batch/route.js +2 -1
  16. package/.medusa/server/src/api/vendor/offers/query-config.js +2 -1
  17. package/.medusa/server/src/api/vendor/offers/validators.d.ts +11 -0
  18. package/.medusa/server/src/api/vendor/offers/validators.js +6 -3
  19. package/.medusa/server/src/api/vendor/rbac/me/permissions/route.js +9 -7
  20. package/.medusa/server/src/api/vendor/sellers/query-config.d.ts +3 -3
  21. package/.medusa/server/src/api/vendor/sellers/query-config.js +25 -20
  22. package/.medusa/server/src/api/vendor/sellers/validators.d.ts +3 -0
  23. package/.medusa/server/src/api/vendor/sellers/validators.js +2 -1
  24. package/.medusa/server/src/api/vendor/shipping-profiles/[id]/route.d.ts +0 -3
  25. package/.medusa/server/src/api/vendor/shipping-profiles/[id]/route.js +6 -30
  26. package/.medusa/server/src/api/vendor/shipping-profiles/helpers.d.ts +0 -1
  27. package/.medusa/server/src/api/vendor/shipping-profiles/helpers.js +2 -17
  28. package/.medusa/server/src/api/vendor/shipping-profiles/middlewares.js +1 -50
  29. package/.medusa/server/src/api/vendor/shipping-profiles/route.d.ts +0 -2
  30. package/.medusa/server/src/api/vendor/shipping-profiles/route.js +2 -16
  31. package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +0 -28
  32. package/.medusa/server/src/api/vendor/shipping-profiles/validators.js +2 -16
  33. package/.medusa/server/src/api/vendor/stores/query-config.js +4 -3
  34. package/.medusa/server/src/links/seller-member-rbac-role.js +31 -3
  35. package/.medusa/server/src/modules/commission/index.js +3 -2
  36. package/.medusa/server/src/modules/commission/loaders/providers.d.ts +4 -0
  37. package/.medusa/server/src/modules/commission/loaders/providers.js +40 -0
  38. package/.medusa/server/src/modules/commission/migrations/Migration20260910000000.d.ts +5 -0
  39. package/.medusa/server/src/modules/commission/migrations/Migration20260910000000.js +16 -0
  40. package/.medusa/server/src/modules/commission/models/commission-line.d.ts +2 -0
  41. package/.medusa/server/src/modules/commission/models/commission-line.js +3 -1
  42. package/.medusa/server/src/modules/commission/providers/index.d.ts +1 -0
  43. package/.medusa/server/src/modules/commission/providers/index.js +6 -0
  44. package/.medusa/server/src/modules/commission/providers/system.d.ts +41 -0
  45. package/.medusa/server/src/modules/commission/providers/system.js +157 -0
  46. package/.medusa/server/src/modules/commission/service.d.ts +19 -33
  47. package/.medusa/server/src/modules/commission/service.js +14 -148
  48. package/.medusa/server/src/modules/commission/services/index.d.ts +2 -0
  49. package/.medusa/server/src/{workflows/shipping-profile/steps → modules/commission/services}/index.js +8 -2
  50. package/.medusa/server/src/modules/commission/services/provider-service.d.ts +12 -0
  51. package/.medusa/server/src/modules/commission/services/provider-service.js +21 -0
  52. package/.medusa/server/src/modules/media/models/media-image.d.ts +1 -1
  53. package/.medusa/server/src/modules/media/service.d.ts +1 -1
  54. package/.medusa/server/src/modules/offer/migrations/Migration20260908000000.d.ts +5 -0
  55. package/.medusa/server/src/modules/offer/migrations/Migration20260908000000.js +14 -0
  56. package/.medusa/server/src/modules/offer/models/offer.d.ts +2 -1
  57. package/.medusa/server/src/modules/offer/models/offer.js +2 -1
  58. package/.medusa/server/src/modules/offer/service.d.ts +2 -1
  59. package/.medusa/server/src/modules/payout/models/onboarding.d.ts +5 -5
  60. package/.medusa/server/src/modules/payout/models/payout-account.d.ts +7 -7
  61. package/.medusa/server/src/modules/payout/models/payout.d.ts +7 -7
  62. package/.medusa/server/src/modules/payout/services/payout-module-service.d.ts +19 -19
  63. package/.medusa/server/src/modules/product-attribute/models/product-attribute-value.d.ts +2 -2
  64. package/.medusa/server/src/modules/product-attribute/models/product-attribute.d.ts +2 -2
  65. package/.medusa/server/src/modules/product-attribute/service.d.ts +4 -4
  66. package/.medusa/server/src/modules/product-edit/models/product-change-action.d.ts +3 -3
  67. package/.medusa/server/src/modules/product-edit/models/product-change.d.ts +2 -2
  68. package/.medusa/server/src/modules/product-edit/service.d.ts +5 -5
  69. package/.medusa/server/src/modules/promotion-cost/models/promotion-cost.d.ts +1 -1
  70. package/.medusa/server/src/modules/promotion-cost/service.d.ts +2 -2
  71. package/.medusa/server/src/modules/seller/migrations/Migration20260908010000.d.ts +5 -0
  72. package/.medusa/server/src/modules/seller/migrations/Migration20260908010000.js +14 -0
  73. package/.medusa/server/src/modules/seller/models/address.d.ts +5 -4
  74. package/.medusa/server/src/modules/seller/models/member-invite.d.ts +5 -4
  75. package/.medusa/server/src/modules/seller/models/member.d.ts +5 -4
  76. package/.medusa/server/src/modules/seller/models/payment-details.d.ts +5 -4
  77. package/.medusa/server/src/modules/seller/models/professional-details.d.ts +5 -4
  78. package/.medusa/server/src/modules/seller/models/seller-member.d.ts +11 -9
  79. package/.medusa/server/src/modules/seller/models/seller.d.ts +5 -4
  80. package/.medusa/server/src/modules/seller/models/seller.js +2 -1
  81. package/.medusa/server/src/modules/seller/service.d.ts +41 -33
  82. package/.medusa/server/src/modules/seller/utils/ensure-seller-default-roles.js +2 -3
  83. package/.medusa/server/src/patches/manifest.js +3 -3
  84. package/.medusa/server/src/with-mercur.js +5 -4
  85. package/.medusa/server/src/workflows/cart/workflows/complete-cart-with-split-orders.d.ts +8 -0
  86. package/.medusa/server/src/workflows/cart/workflows/complete-cart-with-split-orders.js +17 -4
  87. package/.medusa/server/src/workflows/commission/workflows/refresh-order-commission-lines.d.ts +13 -2
  88. package/.medusa/server/src/workflows/commission/workflows/refresh-order-commission-lines.js +17 -3
  89. package/.medusa/server/src/workflows/index.d.ts +0 -1
  90. package/.medusa/server/src/workflows/index.js +1 -2
  91. package/.medusa/server/src/workflows/media/steps/create-images.d.ts +1 -1
  92. package/.medusa/server/src/workflows/offer/steps/create-offers.d.ts +3 -1
  93. package/.medusa/server/src/workflows/offer/steps/update-offers.d.ts +4 -1
  94. package/.medusa/server/src/workflows/offer/steps/update-offers.js +2 -1
  95. package/.medusa/server/src/workflows/offer/workflows/create-offers.js +2 -1
  96. package/.medusa/server/src/workflows/offer/workflows/update-offers.js +12 -3
  97. package/.medusa/server/src/workflows/payout/steps/update-payout-account.d.ts +5 -5
  98. package/.medusa/server/src/workflows/payout/steps/update-payout.d.ts +5 -5
  99. package/.medusa/server/src/workflows/product-attribute/steps/update-product-attribute-values.d.ts +2 -2
  100. package/.medusa/server/src/workflows/product-edit/steps/add-product-change-action.d.ts +2 -2
  101. package/.medusa/server/src/workflows/product-edit/steps/cancel-product-change.d.ts +2 -2
  102. package/.medusa/server/src/workflows/product-edit/steps/confirm-product-changes.d.ts +2 -2
  103. package/.medusa/server/src/workflows/product-edit/steps/create-product-change-actions.d.ts +2 -2
  104. package/.medusa/server/src/workflows/product-edit/steps/create-product-changes.d.ts +2 -2
  105. package/.medusa/server/src/workflows/product-edit/steps/decline-product-change.d.ts +2 -2
  106. package/.medusa/server/src/workflows/product-edit/steps/update-product-change-actions.d.ts +2 -2
  107. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-attributes.d.ts +3 -0
  108. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-attributes.js +3 -2
  109. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-product.d.ts +3 -0
  110. package/.medusa/server/src/workflows/product-edit/workflows/product-edit-update-product.js +3 -2
  111. package/.medusa/server/src/workflows/promotion-cost/steps/upsert-promotion-costs.d.ts +1 -1
  112. package/.medusa/server/src/workflows/promotion-cost/workflows/upsert-promotion-costs.d.ts +1 -1
  113. package/.medusa/server/src/workflows/seller/steps/create-seller-default-roles.js +4 -1
  114. package/.medusa/server/src/workflows/seller/steps/create-seller-member.d.ts +11 -9
  115. package/.medusa/server/src/workflows/seller/steps/update-member.d.ts +5 -4
  116. package/.medusa/server/src/workflows/seller/steps/update-seller-member.d.ts +11 -9
  117. package/.medusa/server/src/workflows/seller/workflows/add-seller-member.d.ts +11 -9
  118. package/package.json +17 -17
  119. package/.medusa/server/src/links/shipping-profile-seller-link.d.ts +0 -2
  120. package/.medusa/server/src/links/shipping-profile-seller-link.js +0 -10
  121. package/.medusa/server/src/workflows/shipping-profile/index.d.ts +0 -2
  122. package/.medusa/server/src/workflows/shipping-profile/index.js +0 -19
  123. package/.medusa/server/src/workflows/shipping-profile/steps/index.d.ts +0 -1
  124. package/.medusa/server/src/workflows/shipping-profile/steps/link-seller-shipping-profile.d.ts +0 -6
  125. package/.medusa/server/src/workflows/shipping-profile/steps/link-seller-shipping-profile.js +0 -36
  126. package/.medusa/server/src/workflows/shipping-profile/workflows/create-seller-shipping-profiles.d.ts +0 -9
  127. package/.medusa/server/src/workflows/shipping-profile/workflows/create-seller-shipping-profiles.js +0 -20
  128. package/.medusa/server/src/workflows/shipping-profile/workflows/index.d.ts +0 -1
  129. package/.medusa/server/src/workflows/shipping-profile/workflows/index.js +0 -18
@@ -4,10 +4,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("@medusajs/framework/utils");
7
- const rbac_1 = __importDefault(require("@medusajs/medusa/rbac"));
7
+ const config_1 = require("@medusajs/framework/config");
8
8
  const seller_1 = __importDefault(require("../modules/seller"));
9
+ // `medusaIntegrationTestRunner` registers feature flags without the project
10
+ // config and loads link files before Medusa's own flag loader runs, so the
11
+ // global router still reports rbac as off at that point. The loaded config is
12
+ // the reliable source.
13
+ const isRbacEnabled = () => {
14
+ if (utils_1.FeatureFlag.isFeatureEnabled("rbac")) {
15
+ return true;
16
+ }
17
+ try {
18
+ return !!config_1.configManager.config.featureFlags?.rbac;
19
+ }
20
+ catch {
21
+ return false;
22
+ }
23
+ };
24
+ // Must run before defineLink, which checks whether the file is disabled.
25
+ (0, utils_1.defineFileConfig)({
26
+ isDisabled: () => !isRbacEnabled(),
27
+ });
28
+ // Described inline instead of importing `@medusajs/medusa/rbac`: link files are
29
+ // evaluated at boot, and that import would load the RBAC module even with the
30
+ // flag off.
9
31
  exports.default = (0, utils_1.defineLink)({
10
32
  linkable: seller_1.default.linkable.sellerMember,
11
33
  field: "role_id",
12
- }, rbac_1.default.linkable.rbacRole, { readOnly: true });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsbGVyLW1lbWJlci1yYmFjLXJvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlua3Mvc2VsbGVyLW1lbWJlci1yYmFjLXJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBc0Q7QUFDdEQsaUVBQThDO0FBQzlDLCtEQUE0QztBQUU1QyxrQkFBZSxJQUFBLGtCQUFVLEVBQ3JCO0lBQ0ksUUFBUSxFQUFFLGdCQUFZLENBQUMsUUFBUSxDQUFDLFlBQVk7SUFDNUMsS0FBSyxFQUFFLFNBQVM7Q0FDbkIsRUFDRCxjQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFDNUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ3JCLENBQUEifQ==
34
+ }, {
35
+ linkable: "rbac_role_id",
36
+ primaryKey: "id",
37
+ serviceName: utils_1.Modules.RBAC,
38
+ field: "rbacRole",
39
+ entity: "RbacRole",
40
+ }, { readOnly: true });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsbGVyLW1lbWJlci1yYmFjLXJvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlua3Mvc2VsbGVyLW1lbWJlci1yYmFjLXJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFLa0M7QUFDbEMsdURBQTBEO0FBQzFELCtEQUE0QztBQUU1Qyw0RUFBNEU7QUFDNUUsMkVBQTJFO0FBQzNFLDhFQUE4RTtBQUM5RSx1QkFBdUI7QUFDdkIsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQ3pCLElBQUksbUJBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE9BQU8sQ0FBQyxDQUFDLHNCQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUE7SUFDbEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELHlFQUF5RTtBQUN6RSxJQUFBLHdCQUFnQixFQUFDO0lBQ2YsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBYSxFQUFFO0NBQ25DLENBQUMsQ0FBQTtBQUVGLGdGQUFnRjtBQUNoRiw4RUFBOEU7QUFDOUUsWUFBWTtBQUNaLGtCQUFlLElBQUEsa0JBQVUsRUFDdkI7SUFDRSxRQUFRLEVBQUUsZ0JBQVksQ0FBQyxRQUFRLENBQUMsWUFBWTtJQUM1QyxLQUFLLEVBQUUsU0FBUztDQUNqQixFQUNEO0lBQ0UsUUFBUSxFQUFFLGNBQWM7SUFDeEIsVUFBVSxFQUFFLElBQUk7SUFDaEIsV0FBVyxFQUFFLGVBQU8sQ0FBQyxJQUFJO0lBQ3pCLEtBQUssRUFBRSxVQUFVO0lBQ2pCLE1BQU0sRUFBRSxVQUFVO0NBQ25CLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CLENBQUEifQ==
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const utils_1 = require("@medusajs/framework/utils");
7
7
  const types_1 = require("@mercurjs/types");
8
8
  const service_1 = __importDefault(require("./service"));
9
+ const providers_1 = __importDefault(require("./loaders/providers"));
9
10
  const seed_default_commission_rate_1 = __importDefault(require("./loaders/seed-default-commission-rate"));
10
11
  exports.default = (0, utils_1.Module)(types_1.MercurModules.COMMISSION, {
11
12
  service: service_1.default,
12
- loaders: [seed_default_commission_rate_1.default],
13
+ loaders: [providers_1.default, seed_default_commission_rate_1.default],
13
14
  });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb21taXNzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQWtEO0FBQ2xELDJDQUErQztBQUUvQyx3REFBK0M7QUFDL0MsMEdBQW9GO0FBRXBGLGtCQUFlLElBQUEsY0FBTSxFQUFDLHFCQUFhLENBQUMsVUFBVSxFQUFFO0lBQzlDLE9BQU8sRUFBRSxpQkFBdUI7SUFDaEMsT0FBTyxFQUFFLENBQUMsc0NBQStCLENBQUM7Q0FDM0MsQ0FBQyxDQUFBIn0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb21taXNzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQWtEO0FBQ2xELDJDQUErQztBQUUvQyx3REFBK0M7QUFDL0Msb0VBQStDO0FBQy9DLDBHQUFvRjtBQUVwRixrQkFBZSxJQUFBLGNBQU0sRUFBQyxxQkFBYSxDQUFDLFVBQVUsRUFBRTtJQUM5QyxPQUFPLEVBQUUsaUJBQXVCO0lBQ2hDLE9BQU8sRUFBRSxDQUFDLG1CQUFhLEVBQUUsc0NBQStCLENBQUM7Q0FDMUQsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,4 @@
1
+ import { LoaderOptions } from "@medusajs/framework/types";
2
+ import { CommissionModuleOptions } from "@mercurjs/types";
3
+ declare const _default: ({ container, options, }: LoaderOptions<CommissionModuleOptions>) => Promise<void>;
4
+ export default _default;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const awilix_1 = require("@medusajs/framework/awilix");
4
+ const modules_sdk_1 = require("@medusajs/framework/modules-sdk");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const providers_1 = require("../providers");
7
+ const provider_service_1 = require("../services/provider-service");
8
+ const registrationFn = async (klass, container, pluginOptions) => {
9
+ if (!klass?.identifier) {
10
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_ARGUMENT, "Trying to register a commission provider without a provider identifier.");
11
+ }
12
+ const key = `${provider_service_1.CommissionProviderRegistrationPrefix}${pluginOptions.id ?? klass.identifier}`;
13
+ container.register({
14
+ [key]: (0, awilix_1.asFunction)((cradle) => new klass(cradle, pluginOptions.options ?? {}), {
15
+ lifetime: klass.LIFE_TIME || awilix_1.Lifetime.SINGLETON,
16
+ }),
17
+ });
18
+ };
19
+ exports.default = async ({ container, options, }) => {
20
+ await registrationFn(providers_1.SystemCommissionProvider, container, {
21
+ id: providers_1.SystemCommissionProvider.identifier,
22
+ });
23
+ container.register(provider_service_1.CommissionDefaultProvider, (0, awilix_1.asValue)(providers_1.SystemCommissionProvider.identifier));
24
+ const providers = options?.providers ?? [];
25
+ await (0, modules_sdk_1.moduleProviderLoader)({
26
+ container,
27
+ providers,
28
+ registerServiceFn: registrationFn,
29
+ });
30
+ const isSingleProvider = providers.length === 1;
31
+ for (const provider of providers) {
32
+ if (provider.is_default || isSingleProvider) {
33
+ container.register(provider_service_1.CommissionDefaultProvider, (0, awilix_1.asValue)(provider.id));
34
+ }
35
+ }
36
+ if (options?.default_provider) {
37
+ container.register(provider_service_1.CommissionDefaultProvider, (0, awilix_1.asValue)(options.default_provider));
38
+ }
39
+ };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29tbWlzc2lvbi9sb2FkZXJzL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVEQUEwRTtBQUMxRSxpRUFBc0U7QUFFdEUscURBQXVEO0FBR3ZELDRDQUF1RDtBQUN2RCxtRUFHcUM7QUFFckMsTUFBTSxjQUFjLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEVBQUU7SUFDL0QsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQ2xDLHlFQUF5RSxDQUMxRSxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsdURBQW9DLEdBQUcsYUFBYSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7SUFFNUYsU0FBUyxDQUFDLFFBQVEsQ0FBQztRQUNqQixDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUEsbUJBQVUsRUFDZixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQzFEO1lBQ0UsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksaUJBQVEsQ0FBQyxTQUFTO1NBQ2hELENBQ0Y7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRCxrQkFBZSxLQUFLLEVBQUUsRUFDcEIsU0FBUyxFQUNULE9BQU8sR0FDZ0MsRUFBaUIsRUFBRTtJQUMxRCxNQUFNLGNBQWMsQ0FBQyxvQ0FBd0IsRUFBRSxTQUFTLEVBQUU7UUFDeEQsRUFBRSxFQUFFLG9DQUF3QixDQUFDLFVBQVU7S0FDeEMsQ0FBQyxDQUFBO0lBQ0YsU0FBUyxDQUFDLFFBQVEsQ0FDaEIsNENBQXlCLEVBQ3pCLElBQUEsZ0JBQU8sRUFBQyxvQ0FBd0IsQ0FBQyxVQUFVLENBQUMsQ0FDN0MsQ0FBQTtJQUVELE1BQU0sU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLElBQUksRUFBRSxDQUFBO0lBRTFDLE1BQU0sSUFBQSxrQ0FBb0IsRUFBQztRQUN6QixTQUFTO1FBQ1QsU0FBUztRQUNULGlCQUFpQixFQUFFLGNBQWM7S0FDbEMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQTtJQUMvQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2pDLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQzVDLFNBQVMsQ0FBQyxRQUFRLENBQUMsNENBQXlCLEVBQUUsSUFBQSxnQkFBTyxFQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQ3JFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixTQUFTLENBQUMsUUFBUSxDQUNoQiw0Q0FBeUIsRUFDekIsSUFBQSxnQkFBTyxFQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUNsQyxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQSJ9
@@ -0,0 +1,5 @@
1
+ import { Migration } from "@medusajs/framework/mikro-orm/migrations";
2
+ export declare class Migration20260910000000 extends Migration {
3
+ up(): Promise<void>;
4
+ down(): Promise<void>;
5
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260910000000 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260910000000 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`alter table if exists "commission_line" add column if not exists "provider_id" text not null default 'system';`);
8
+ this.addSql(`alter table if exists "commission_line" add column if not exists "data" jsonb null;`);
9
+ }
10
+ async down() {
11
+ this.addSql(`alter table if exists "commission_line" drop column if exists "data";`);
12
+ this.addSql(`alter table if exists "commission_line" drop column if exists "provider_id";`);
13
+ }
14
+ }
15
+ exports.Migration20260910000000 = Migration20260910000000;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA5MTAwMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb21taXNzaW9uL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjA5MTAwMDAwMDAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQXFFO0FBRXJFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFFM0MsS0FBSyxDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGdIQUFnSCxDQUFDLENBQUM7UUFDOUgsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxRkFBcUYsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFUSxLQUFLLENBQUMsSUFBSTtRQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLHVFQUF1RSxDQUFDLENBQUM7UUFDckYsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO0lBQzlGLENBQUM7Q0FFRjtBQVpELDBEQVlDIn0=
@@ -3,9 +3,11 @@ declare const CommissionLine: import("@medusajs/framework/utils").DmlEntity<impo
3
3
  item_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
4
4
  shipping_method_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
5
5
  commission_rate_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
6
+ provider_id: import("@medusajs/framework/utils").TextProperty;
6
7
  code: import("@medusajs/framework/utils").TextProperty;
7
8
  rate: import("@medusajs/framework/utils").FloatProperty;
8
9
  amount: import("@medusajs/framework/utils").BigNumberProperty;
9
10
  description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
11
+ data: import("@medusajs/framework/utils").NullableModifier<NoInfer<Record<string, unknown>>, import("@medusajs/framework/utils").JSONProperty<NoInfer<Record<string, unknown>>>>;
10
12
  }>, "commission_line">;
11
13
  export default CommissionLine;
@@ -6,10 +6,12 @@ const CommissionLine = utils_1.model.define("commission_line", {
6
6
  item_id: utils_1.model.text().nullable(),
7
7
  shipping_method_id: utils_1.model.text().nullable(),
8
8
  commission_rate_id: utils_1.model.text().nullable(),
9
+ provider_id: utils_1.model.text().default("system"),
9
10
  code: utils_1.model.text(),
10
11
  rate: utils_1.model.float(),
11
12
  amount: utils_1.model.bigNumber(),
12
13
  description: utils_1.model.text().nullable(),
14
+ data: utils_1.model.json().nullable(),
13
15
  });
14
16
  exports.default = CommissionLine;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWlzc2lvbi1saW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29tbWlzc2lvbi9tb2RlbHMvY29tbWlzc2lvbi1saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQWlEO0FBRWpELE1BQU0sY0FBYyxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUU7SUFDckQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDaEQsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsa0JBQWtCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQyxrQkFBa0IsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNDLElBQUksRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFO0lBQ2xCLElBQUksRUFBRSxhQUFLLENBQUMsS0FBSyxFQUFFO0lBQ25CLE1BQU0sRUFBRSxhQUFLLENBQUMsU0FBUyxFQUFFO0lBQ3pCLFdBQVcsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3JDLENBQUMsQ0FBQTtBQUVGLGtCQUFlLGNBQWMsQ0FBQSJ9
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWlzc2lvbi1saW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29tbWlzc2lvbi9tb2RlbHMvY29tbWlzc2lvbi1saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQWlEO0FBRWpELE1BQU0sY0FBYyxHQUFHLGFBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUU7SUFDckQsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDaEQsT0FBTyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsa0JBQWtCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQyxrQkFBa0IsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNDLFdBQVcsRUFBRSxhQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUMzQyxJQUFJLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUNsQixJQUFJLEVBQUUsYUFBSyxDQUFDLEtBQUssRUFBRTtJQUNuQixNQUFNLEVBQUUsYUFBSyxDQUFDLFNBQVMsRUFBRTtJQUN6QixXQUFXLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxJQUFJLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5QixDQUFDLENBQUE7QUFFRixrQkFBZSxjQUFjLENBQUEifQ==
@@ -0,0 +1 @@
1
+ export { SystemCommissionProvider } from "./system";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemCommissionProvider = void 0;
4
+ var system_1 = require("./system");
5
+ Object.defineProperty(exports, "SystemCommissionProvider", { enumerable: true, get: function () { return system_1.SystemCommissionProvider; } });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb21taXNzaW9uL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUQ7QUFBMUMsa0hBQUEsd0JBQXdCLE9BQUEifQ==
@@ -0,0 +1,41 @@
1
+ import { InferEntityType, ModulesSdkTypes } from "@medusajs/framework/types";
2
+ import { CommissionCalculationContext, CreateCommissionLineDTO, ICommissionProvider } from "@mercurjs/types";
3
+ import { CommissionRate } from "../models";
4
+ type CommissionRateEntity = InferEntityType<typeof CommissionRate>;
5
+ type InjectedDependencies = {
6
+ commissionRateService: ModulesSdkTypes.IMedusaInternalService<CommissionRateEntity>;
7
+ };
8
+ /**
9
+ * The built-in provider: resolves commission lines from the module's own
10
+ * rates and rules. Registered unconditionally and used when no other
11
+ * provider is configured as default.
12
+ */
13
+ export declare class SystemCommissionProvider implements ICommissionProvider {
14
+ static identifier: string;
15
+ protected readonly commissionRateService_: InjectedDependencies["commissionRateService"];
16
+ constructor({ commissionRateService }: InjectedDependencies);
17
+ /**
18
+ * Does a single rule match a product?
19
+ */
20
+ private ruleMatchesProduct;
21
+ /**
22
+ * A rate matches an item when **every** present dimension group (rules
23
+ * grouped by `reference`) has at least one matching rule
24
+ * (AND-across-dimension, OR-within-dimension). A rule-less rate is the
25
+ * default and matches everything.
26
+ */
27
+ private rateMatchesItem;
28
+ /**
29
+ * Specificity = number of distinct dimension groups a rate scopes on.
30
+ * More dimensions → higher specificity → wins the tie-break.
31
+ */
32
+ private rateSpecificity;
33
+ /**
34
+ * Resolve the commission amount + line `rate` for a base amount.
35
+ * Percentage uses the scalar `value`; Fixed reads the per-currency
36
+ * `values` (falling back to the legacy single `value`).
37
+ */
38
+ private computeCommission;
39
+ getCommissionLines(context: CommissionCalculationContext): Promise<CreateCommissionLineDTO[]>;
40
+ }
41
+ export {};
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SystemCommissionProvider = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const types_1 = require("@mercurjs/types");
6
+ /**
7
+ * The built-in provider: resolves commission lines from the module's own
8
+ * rates and rules. Registered unconditionally and used when no other
9
+ * provider is configured as default.
10
+ */
11
+ class SystemCommissionProvider {
12
+ constructor({ commissionRateService }) {
13
+ this.commissionRateService_ = commissionRateService;
14
+ }
15
+ /**
16
+ * Does a single rule match a product?
17
+ */
18
+ ruleMatchesProduct(rule, product) {
19
+ if (!product) {
20
+ return false;
21
+ }
22
+ switch (rule.reference) {
23
+ case "product":
24
+ return product.id === rule.reference_id;
25
+ case "product_type":
26
+ return product.type_id === rule.reference_id;
27
+ case "product_collection":
28
+ return product.collection_id === rule.reference_id;
29
+ case "product_category":
30
+ return (product.categories?.some((cat) => cat.id === rule.reference_id) ??
31
+ false);
32
+ case "seller":
33
+ return product.seller?.id === rule.reference_id;
34
+ default:
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * A rate matches an item when **every** present dimension group (rules
40
+ * grouped by `reference`) has at least one matching rule
41
+ * (AND-across-dimension, OR-within-dimension). A rule-less rate is the
42
+ * default and matches everything.
43
+ */
44
+ rateMatchesItem(rate, item) {
45
+ const rules = (rate.rules ?? []);
46
+ if (rules.length === 0) {
47
+ return true;
48
+ }
49
+ const groups = new Map();
50
+ for (const rule of rules) {
51
+ const bucket = groups.get(rule.reference) ?? [];
52
+ bucket.push(rule);
53
+ groups.set(rule.reference, bucket);
54
+ }
55
+ for (const groupRules of groups.values()) {
56
+ if (!groupRules.some((rule) => this.ruleMatchesProduct(rule, item.product))) {
57
+ return false;
58
+ }
59
+ }
60
+ return true;
61
+ }
62
+ /**
63
+ * Specificity = number of distinct dimension groups a rate scopes on.
64
+ * More dimensions → higher specificity → wins the tie-break.
65
+ */
66
+ rateSpecificity(rate) {
67
+ return new Set((rate.rules ?? []).map((rule) => rule.reference)).size;
68
+ }
69
+ /**
70
+ * Resolve the commission amount + line `rate` for a base amount.
71
+ * Percentage uses the scalar `value`; Fixed reads the per-currency
72
+ * `values` (falling back to the legacy single `value`).
73
+ */
74
+ computeCommission(rate, baseAmount, currencyCode) {
75
+ if (rate.type === types_1.CommissionRateType.PERCENTAGE) {
76
+ const amount = utils_1.MathBN.div(utils_1.MathBN.mult(baseAmount, rate.value), 100);
77
+ return {
78
+ rate: utils_1.MathBN.convert(rate.value).toNumber(),
79
+ amount: utils_1.MathBN.convert(amount).toNumber(),
80
+ };
81
+ }
82
+ const perCurrency = (rate.values ?? []).find((value) => value.currency_code === currencyCode);
83
+ const fixed = perCurrency ? perCurrency.amount : rate.value;
84
+ return {
85
+ rate: utils_1.MathBN.convert(fixed).toNumber(),
86
+ amount: utils_1.MathBN.convert(fixed).toNumber(),
87
+ };
88
+ }
89
+ async getCommissionLines(context) {
90
+ const commissionLines = [];
91
+ const { items = [], shipping_methods = [], currency_code } = context;
92
+ // Load all enabled rates with their rules + per-currency values,
93
+ // oldest first (created_at ASC) so it is the deterministic tie-break.
94
+ const commissionRates = (await this.commissionRateService_.list({ is_enabled: true }, { relations: ["rules", "values"], order: { created_at: "ASC" } }));
95
+ // Legacy single-currency rates only apply to their currency; rates
96
+ // without a currency_code apply to any currency.
97
+ const applicableRates = commissionRates.filter((rate) => !rate.currency_code || rate.currency_code === currency_code);
98
+ // The Global Commission: the is_default rate (fallback: any rule-less rate).
99
+ const defaultRate = applicableRates.find((rate) => rate.is_default) ??
100
+ applicableRates.find((rate) => (rate.rules ?? []).length === 0);
101
+ // Item lines — match per item, most-specific rate wins.
102
+ for (const item of items) {
103
+ const candidates = applicableRates.filter((rate) => this.rateMatchesItem(rate, item));
104
+ if (!candidates.length) {
105
+ continue;
106
+ }
107
+ candidates.sort((a, b) => {
108
+ const specificityDiff = this.rateSpecificity(b) - this.rateSpecificity(a);
109
+ if (specificityDiff !== 0) {
110
+ return specificityDiff;
111
+ }
112
+ return (new Date(a.created_at).getTime() - new Date(b.created_at).getTime());
113
+ });
114
+ const matchedRate = candidates[0];
115
+ let baseAmount = item.subtotal;
116
+ if (matchedRate.include_tax && item.tax_total) {
117
+ baseAmount = utils_1.MathBN.add(item.subtotal, item.tax_total);
118
+ }
119
+ const { rate, amount } = this.computeCommission(matchedRate, baseAmount, currency_code);
120
+ commissionLines.push({
121
+ item_id: item.id,
122
+ shipping_method_id: null,
123
+ code: matchedRate.code,
124
+ rate,
125
+ amount,
126
+ commission_rate_id: matchedRate.id,
127
+ provider_id: SystemCommissionProvider.identifier,
128
+ });
129
+ }
130
+ // Shipping lines — one per shipping method, governed by the global
131
+ // rate, only when its include_shipping is on (resolved independently
132
+ // of the items the method ships).
133
+ if (defaultRate?.include_shipping) {
134
+ for (const shippingMethod of shipping_methods) {
135
+ let baseAmount = shippingMethod.subtotal;
136
+ if (defaultRate.include_tax && shippingMethod.tax_total) {
137
+ baseAmount = utils_1.MathBN.add(shippingMethod.subtotal, shippingMethod.tax_total);
138
+ }
139
+ const { rate, amount } = this.computeCommission(defaultRate, baseAmount, currency_code);
140
+ commissionLines.push({
141
+ item_id: null,
142
+ shipping_method_id: shippingMethod.id,
143
+ code: defaultRate.code,
144
+ rate,
145
+ amount,
146
+ commission_rate_id: defaultRate.id,
147
+ provider_id: SystemCommissionProvider.identifier,
148
+ description: "Shipping Commission",
149
+ });
150
+ }
151
+ }
152
+ return commissionLines;
153
+ }
154
+ }
155
+ exports.SystemCommissionProvider = SystemCommissionProvider;
156
+ SystemCommissionProvider.identifier = "system";
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3lzdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY29tbWlzc2lvbi9wcm92aWRlcnMvc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFrRDtBQUNsRCwyQ0FPd0I7QUFXeEI7Ozs7R0FJRztBQUNILE1BQWEsd0JBQXdCO0lBS25DLFlBQVksRUFBRSxxQkFBcUIsRUFBd0I7UUFDekQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFBO0lBQ3JELENBQUM7SUFFRDs7T0FFRztJQUNLLGtCQUFrQixDQUN4QixJQUEwQixFQUMxQixPQUFrRDtRQUVsRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7UUFFRCxRQUFRLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxPQUFPLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUE7WUFDekMsS0FBSyxjQUFjO2dCQUNqQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLFlBQVksQ0FBQTtZQUM5QyxLQUFLLG9CQUFvQjtnQkFDdkIsT0FBTyxPQUFPLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUE7WUFDcEQsS0FBSyxrQkFBa0I7Z0JBQ3JCLE9BQU8sQ0FDTCxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDO29CQUMvRCxLQUFLLENBQ04sQ0FBQTtZQUNILEtBQUssUUFBUTtnQkFDWCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUE7WUFDakQ7Z0JBQ0UsT0FBTyxLQUFLLENBQUE7UUFDaEIsQ0FBQztJ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
@@ -1,6 +1,13 @@
1
1
  import { Context, DAL, FindConfig, InferEntityType, ModulesSdkTypes } from "@medusajs/framework/types";
2
- import { CommissionCalculationContext, CommissionLineDTO, CommissionRateType, CreateCommissionLineDTO } from "@mercurjs/types";
2
+ import { CommissionCalculationContext, CommissionLineDTO, CreateCommissionLineDTO } from "@mercurjs/types";
3
3
  import { CommissionLine } from "./models";
4
+ import CommissionProviderService, { CommissionDefaultProvider } from "./services/provider-service";
5
+ type InjectedDependencies = {
6
+ commissionLineService: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof CommissionLine>>;
7
+ commissionProviderService: CommissionProviderService;
8
+ baseRepository: DAL.RepositoryService;
9
+ [CommissionDefaultProvider]: string;
10
+ };
4
11
  declare const CommissionModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{
5
12
  readonly CommissionRate: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
6
13
  id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
@@ -9,7 +16,7 @@ declare const CommissionModuleService_base: import("@medusajs/framework/utils").
9
16
  currency_code: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
10
17
  name: import("@medusajs/framework/utils").TextProperty;
11
18
  code: import("@medusajs/framework/utils").TextProperty;
12
- type: import("@medusajs/framework/utils").EnumProperty<typeof CommissionRateType>;
19
+ type: import("@medusajs/framework/utils").EnumProperty<typeof import("@mercurjs/types").CommissionRateType>;
13
20
  value: import("@medusajs/framework/utils").BigNumberProperty;
14
21
  include_tax: import("@medusajs/framework/utils").BooleanProperty;
15
22
  include_shipping: import("@medusajs/framework/utils").BooleanProperty;
@@ -37,7 +44,7 @@ declare const CommissionModuleService_base: import("@medusajs/framework/utils").
37
44
  currency_code: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
38
45
  name: import("@medusajs/framework/utils").TextProperty;
39
46
  code: import("@medusajs/framework/utils").TextProperty;
40
- type: import("@medusajs/framework/utils").EnumProperty<typeof CommissionRateType>;
47
+ type: import("@medusajs/framework/utils").EnumProperty<typeof import("@mercurjs/types").CommissionRateType>;
41
48
  value: import("@medusajs/framework/utils").BigNumberProperty;
42
49
  include_tax: import("@medusajs/framework/utils").BooleanProperty;
43
50
  include_shipping: import("@medusajs/framework/utils").BooleanProperty;
@@ -61,7 +68,7 @@ declare const CommissionModuleService_base: import("@medusajs/framework/utils").
61
68
  currency_code: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
62
69
  name: import("@medusajs/framework/utils").TextProperty;
63
70
  code: import("@medusajs/framework/utils").TextProperty;
64
- type: import("@medusajs/framework/utils").EnumProperty<typeof CommissionRateType>;
71
+ type: import("@medusajs/framework/utils").EnumProperty<typeof import("@mercurjs/types").CommissionRateType>;
65
72
  value: import("@medusajs/framework/utils").BigNumberProperty;
66
73
  include_tax: import("@medusajs/framework/utils").BooleanProperty;
67
74
  include_shipping: import("@medusajs/framework/utils").BooleanProperty;
@@ -79,42 +86,21 @@ declare const CommissionModuleService_base: import("@medusajs/framework/utils").
79
86
  item_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
80
87
  shipping_method_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
81
88
  commission_rate_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
89
+ provider_id: import("@medusajs/framework/utils").TextProperty;
82
90
  code: import("@medusajs/framework/utils").TextProperty;
83
91
  rate: import("@medusajs/framework/utils").FloatProperty;
84
92
  amount: import("@medusajs/framework/utils").BigNumberProperty;
85
93
  description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
94
+ data: import("@medusajs/framework/utils").NullableModifier<NoInfer<Record<string, unknown>>, import("@medusajs/framework/utils").JSONProperty<NoInfer<Record<string, unknown>>>>;
86
95
  }>, "commission_line">;
87
96
  }>>;
88
97
  declare class CommissionModuleService extends CommissionModuleService_base {
89
98
  protected commissionLineService_: ModulesSdkTypes.IMedusaInternalService<InferEntityType<typeof CommissionLine>>;
90
99
  protected baseRepository_: DAL.RepositoryService;
91
- constructor({ commissionLineService, baseRepository }: {
92
- commissionLineService: any;
93
- baseRepository: any;
94
- });
95
- /**
96
- * Does a single rule match a product?
97
- */
98
- private ruleMatchesProduct;
99
- /**
100
- * A rate matches an item when **every** present dimension group (rules
101
- * grouped by `reference`) has at least one matching rule
102
- * (AND-across-dimension, OR-within-dimension). A rule-less rate is the
103
- * default and matches everything.
104
- */
105
- private rateMatchesItem;
106
- /**
107
- * Specificity = number of distinct dimension groups a rate scopes on.
108
- * More dimensions → higher specificity → wins the tie-break.
109
- */
110
- private rateSpecificity;
111
- /**
112
- * Resolve the commission amount + line `rate` for a base amount.
113
- * Percentage uses the scalar `value`; Fixed reads the per-currency
114
- * `values` (falling back to the legacy single `value`).
115
- */
116
- private computeCommission;
117
- getCommissionLines(context: CommissionCalculationContext, sharedContext?: Context): Promise<CreateCommissionLineDTO[]>;
100
+ protected commissionProviderService_: CommissionProviderService;
101
+ protected defaultProviderId_: string;
102
+ constructor(container: InjectedDependencies);
103
+ getCommissionLines(context: CommissionCalculationContext): Promise<CreateCommissionLineDTO[]>;
118
104
  /**
119
105
  * Overrides the auto-generated upsert with idempotent **replace**
120
106
  * semantics keyed on the line's anchor (item_id / shipping_method_id):
@@ -152,7 +138,7 @@ declare class CommissionModuleService extends CommissionModuleService_base {
152
138
  currency_code: string | null;
153
139
  name: string;
154
140
  code: string;
155
- type: CommissionRateType;
141
+ type: import("@mercurjs/types").CommissionRateType;
156
142
  value: number;
157
143
  include_tax: boolean;
158
144
  include_shipping: boolean;
@@ -189,7 +175,7 @@ declare class CommissionModuleService extends CommissionModuleService_base {
189
175
  currency_code: string | null;
190
176
  name: string;
191
177
  code: string;
192
- type: CommissionRateType;
178
+ type: import("@mercurjs/types").CommissionRateType;
193
179
  value: number;
194
180
  include_tax: boolean;
195
181
  include_shipping: boolean;