@mercurjs/b2c-core 1.5.1 → 1.5.2

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 (135) hide show
  1. package/.medusa/server/src/api/admin/custom/middlewares.d.ts +2 -0
  2. package/.medusa/server/src/api/admin/custom/middlewares.js +8 -0
  3. package/.medusa/server/src/api/admin/custom/product-variants/middlewares.d.ts +2 -0
  4. package/.medusa/server/src/api/admin/custom/product-variants/middlewares.js +16 -0
  5. package/.medusa/server/src/api/admin/custom/product-variants/query-config.d.ts +7 -0
  6. package/.medusa/server/src/api/admin/custom/product-variants/query-config.js +48 -0
  7. package/.medusa/server/src/api/admin/custom/product-variants/route.d.ts +100 -0
  8. package/.medusa/server/src/api/admin/custom/product-variants/route.js +133 -0
  9. package/.medusa/server/src/api/admin/custom/product-variants/utils.d.ts +19 -0
  10. package/.medusa/server/src/api/admin/custom/product-variants/utils.js +31 -0
  11. package/.medusa/server/src/api/admin/custom/product-variants/validators.d.ts +327 -0
  12. package/.medusa/server/src/api/admin/custom/product-variants/validators.js +34 -0
  13. package/.medusa/server/src/api/admin/middlewares.js +13 -7
  14. package/.medusa/server/src/api/admin/orders/[id]/route.d.ts +3 -3
  15. package/.medusa/server/src/api/admin/orders/[id]/route.js +6 -6
  16. package/.medusa/server/src/api/admin/orders/middlewares.d.ts +2 -0
  17. package/.medusa/server/src/api/admin/orders/middlewares.js +17 -0
  18. package/.medusa/server/src/api/admin/products/validators.d.ts +98 -98
  19. package/.medusa/server/src/api/admin/reservations/middlewares.d.ts +2 -0
  20. package/.medusa/server/src/api/admin/reservations/middlewares.js +12 -0
  21. package/.medusa/server/src/api/store/carts/[id]/line-items/[line_id]/route.js +2 -2
  22. package/.medusa/server/src/api/store/carts/[id]/route.d.ts +6 -0
  23. package/.medusa/server/src/api/store/carts/[id]/route.js +32 -0
  24. package/.medusa/server/src/api/store/carts/middlewares.js +4 -5
  25. package/.medusa/server/src/api/store/wishlist/middlewares.js +2 -2
  26. package/.medusa/server/src/api/store/wishlist/route.js +3 -4
  27. package/.medusa/server/src/api/vendor/campaigns/[id]/promotions/route.d.ts +22 -44
  28. package/.medusa/server/src/api/vendor/campaigns/[id]/promotions/route.js +31 -46
  29. package/.medusa/server/src/api/vendor/campaigns/middlewares.js +30 -18
  30. package/.medusa/server/src/api/vendor/campaigns/query-config.js +2 -2
  31. package/.medusa/server/src/api/vendor/campaigns/validators.d.ts +11 -0
  32. package/.medusa/server/src/api/vendor/campaigns/validators.js +3 -2
  33. package/.medusa/server/src/api/vendor/customer-groups/validators.js +1 -1
  34. package/.medusa/server/src/api/vendor/customers/route.js +2 -2
  35. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.d.ts +1 -2
  36. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.js +1 -1
  37. package/.medusa/server/src/api/vendor/inventory-items/validators.d.ts +8 -8
  38. package/.medusa/server/src/api/vendor/me/route.d.ts +1 -2
  39. package/.medusa/server/src/api/vendor/me/route.js +1 -1
  40. package/.medusa/server/src/api/vendor/members/[id]/route.js +3 -3
  41. package/.medusa/server/src/api/vendor/price-lists/validators.d.ts +2 -2
  42. package/.medusa/server/src/api/vendor/product-types/validators.d.ts +153 -1
  43. package/.medusa/server/src/api/vendor/product-types/validators.js +6 -3
  44. package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/media/route.d.ts +3 -0
  45. package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/media/route.js +20 -0
  46. package/.medusa/server/src/api/vendor/products/batch/route.d.ts +34 -0
  47. package/.medusa/server/src/api/vendor/products/batch/route.js +79 -0
  48. package/.medusa/server/src/api/vendor/products/middlewares.js +19 -5
  49. package/.medusa/server/src/api/vendor/products/route.js +4 -4
  50. package/.medusa/server/src/api/vendor/products/utils.d.ts +16 -1
  51. package/.medusa/server/src/api/vendor/products/utils.js +69 -3
  52. package/.medusa/server/src/api/vendor/products/validators.d.ts +218 -102
  53. package/.medusa/server/src/api/vendor/products/validators.js +52 -2
  54. package/.medusa/server/src/api/vendor/reservations/middlewares.d.ts +4 -1
  55. package/.medusa/server/src/api/vendor/reservations/middlewares.js +23 -3
  56. package/.medusa/server/src/api/vendor/reservations/route.js +5 -3
  57. package/.medusa/server/src/api/vendor/reservations/validators.d.ts +45 -3
  58. package/.medusa/server/src/api/vendor/reservations/validators.js +5 -1
  59. package/.medusa/server/src/api/vendor/sellers/validators.js +1 -1
  60. package/.medusa/server/src/api/vendor/stock-locations/[id]/route.d.ts +1 -2
  61. package/.medusa/server/src/api/vendor/stock-locations/[id]/route.js +1 -1
  62. package/.medusa/server/src/modules/payout/services/provider.js +1 -2
  63. package/.medusa/server/src/modules/seller/migrations/Migration20260114091400.d.ts +5 -0
  64. package/.medusa/server/src/modules/seller/migrations/Migration20260114091400.js +32 -0
  65. package/.medusa/server/src/modules/seller/service.js +2 -2
  66. package/.medusa/server/src/shared/infra/http/middlewares/check-ownership.d.ts +16 -7
  67. package/.medusa/server/src/shared/infra/http/middlewares/check-ownership.js +26 -18
  68. package/.medusa/server/src/shared/infra/http/middlewares/index.d.ts +1 -0
  69. package/.medusa/server/src/shared/infra/http/middlewares/index.js +2 -1
  70. package/.medusa/server/src/shared/infra/http/middlewares/reject-seller-linked-stock-location.d.ts +19 -0
  71. package/.medusa/server/src/shared/infra/http/middlewares/reject-seller-linked-stock-location.js +28 -0
  72. package/.medusa/server/src/shared/infra/http/middlewares/vendor-promotions-rule-attribute-options-path-params-guard.js +2 -2
  73. package/.medusa/server/src/shared/infra/http/middlewares/vendor-promotions-rule-value-options-path-params-guard.js +2 -2
  74. package/.medusa/server/src/shared/infra/http/utils/products.js +2 -2
  75. package/.medusa/server/src/shared/infra/http/utils/unless-base-url.d.ts +1 -3
  76. package/.medusa/server/src/shared/infra/http/utils/unless-base-url.js +1 -1
  77. package/.medusa/server/src/subscribers/notification-seller-new-order.d.ts +1 -1
  78. package/.medusa/server/src/subscribers/notification-seller-new-order.js +44 -37
  79. package/.medusa/server/src/subscribers/payout-webhook.js +1 -1
  80. package/.medusa/server/src/subscribers/seller-status-changed.js +2 -3
  81. package/.medusa/server/src/utils/stock-locations.d.ts +9 -0
  82. package/.medusa/server/src/utils/stock-locations.js +231 -0
  83. package/.medusa/server/src/workflows/attribute/steps/update-attributes.js +1 -1
  84. package/.medusa/server/src/workflows/attribute/utils/validate-attribute-values-to-link.js +2 -2
  85. package/.medusa/server/src/workflows/cart/steps/create-order-set.js +1 -1
  86. package/.medusa/server/src/workflows/cart/utils/prepare-confirm-inventory-input.js +1 -1
  87. package/.medusa/server/src/workflows/cart/workflows/split-and-complete-cart.js +5 -7
  88. package/.medusa/server/src/workflows/configuration/steps/create-configuration-rule.js +1 -1
  89. package/.medusa/server/src/workflows/fulfillment-set/create-vendor-service-zone.js +2 -2
  90. package/.medusa/server/src/workflows/hooks/add-order-line-items-pricing-context.d.ts +1 -0
  91. package/.medusa/server/src/workflows/hooks/add-order-line-items-pricing-context.js +75 -0
  92. package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.js +4 -4
  93. package/.medusa/server/src/workflows/hooks/product-deleted.js +12 -5
  94. package/.medusa/server/src/workflows/order/steps/create-payout.js +1 -1
  95. package/.medusa/server/src/workflows/order/steps/validate-seller-payout-account.js +2 -2
  96. package/.medusa/server/src/workflows/payout/steps/update-payout-account.js +1 -1
  97. package/.medusa/server/src/workflows/price-list/steps/validate-vendor-price-list-prices.js +2 -2
  98. package/.medusa/server/src/workflows/price-list/workflows/create-vendor-price-list.js +2 -2
  99. package/.medusa/server/src/workflows/product/steps/update-product-status.js +7 -1
  100. package/.medusa/server/src/workflows/product-variants/helpers/product-variant-filter-helper.d.ts +24 -0
  101. package/.medusa/server/src/workflows/product-variants/helpers/product-variant-filter-helper.js +39 -0
  102. package/.medusa/server/src/workflows/product-variants/index.d.ts +3 -0
  103. package/.medusa/server/src/workflows/product-variants/index.js +20 -0
  104. package/.medusa/server/src/workflows/product-variants/steps/filter-variants-combined.d.ts +4 -0
  105. package/.medusa/server/src/workflows/product-variants/steps/filter-variants-combined.js +63 -0
  106. package/.medusa/server/src/workflows/product-variants/steps/get-seller-product-ids.d.ts +4 -0
  107. package/.medusa/server/src/workflows/product-variants/steps/get-seller-product-ids.js +28 -0
  108. package/.medusa/server/src/workflows/product-variants/steps/index.d.ts +2 -0
  109. package/.medusa/server/src/workflows/product-variants/steps/index.js +19 -0
  110. package/.medusa/server/src/workflows/product-variants/types.d.ts +10 -0
  111. package/.medusa/server/src/workflows/product-variants/types.js +3 -0
  112. package/.medusa/server/src/workflows/product-variants/workflows/index.d.ts +1 -0
  113. package/.medusa/server/src/workflows/product-variants/workflows/index.js +18 -0
  114. package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.d.ts +31 -0
  115. package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.js +115 -0
  116. package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.d.ts +8 -0
  117. package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.js +87 -0
  118. package/.medusa/server/src/workflows/promotions/steps/index.d.ts +1 -1
  119. package/.medusa/server/src/workflows/promotions/steps/index.js +2 -2
  120. package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.js +4 -1
  121. package/.medusa/server/src/workflows/promotions/utils/sync-seller-product-rule-values.d.ts +2 -0
  122. package/.medusa/server/src/workflows/promotions/utils/sync-seller-product-rule-values.js +165 -0
  123. package/.medusa/server/src/workflows/promotions/workflows/batch-vendor-promotion-rules.js +7 -6
  124. package/.medusa/server/src/workflows/seller/steps/create-member.js +1 -1
  125. package/.medusa/server/src/workflows/seller/steps/create-payment-account.js +1 -1
  126. package/.medusa/server/src/workflows/seller/steps/create-payout-onboarding.js +1 -1
  127. package/.medusa/server/src/workflows/seller/steps/sync-stripe-account.js +1 -1
  128. package/.medusa/server/src/workflows/seller/steps/update-member-invite.js +3 -3
  129. package/.medusa/server/src/workflows/seller/steps/update-seller.js +2 -3
  130. package/.medusa/server/src/workflows/seller/steps/validate-products-to-import.d.ts +23 -23
  131. package/.medusa/server/src/workflows/seller/workflows/import-seller-products.js +2 -2
  132. package/.medusa/server/src/workflows/wishlist/steps/create-wishlist.js +1 -1
  133. package/package.json +1 -1
  134. package/.medusa/server/src/workflows/promotions/steps/verify-seller-product-rule-deletion.d.ts +0 -9
  135. package/.medusa/server/src/workflows/promotions/steps/verify-seller-product-rule-deletion.js +0 -27
@@ -0,0 +1,2 @@
1
+ import { MiddlewareRoute } from "@medusajs/framework";
2
+ export declare const adminCustomMiddlewares: MiddlewareRoute[];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adminCustomMiddlewares = void 0;
4
+ const middlewares_1 = require("./product-variants/middlewares");
5
+ exports.adminCustomMiddlewares = [
6
+ ...middlewares_1.adminProductVariantsFilteredMiddlewares,
7
+ ];
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2N1c3RvbS9taWRkbGV3YXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxnRUFBeUY7QUFFNUUsUUFBQSxzQkFBc0IsR0FBc0I7SUFDdkQsR0FBRyxxREFBdUM7Q0FDM0MsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { MiddlewareRoute } from "@medusajs/medusa";
2
+ export declare const adminProductVariantsFilteredMiddlewares: MiddlewareRoute[];
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adminProductVariantsFilteredMiddlewares = void 0;
4
+ const framework_1 = require("@medusajs/framework");
5
+ const query_config_1 = require("./query-config");
6
+ const validators_1 = require("./validators");
7
+ exports.adminProductVariantsFilteredMiddlewares = [
8
+ {
9
+ method: ["GET"],
10
+ matcher: "/admin/custom/product-variants",
11
+ middlewares: [
12
+ (0, framework_1.validateAndTransformQuery)(validators_1.AdminGetProductVariantsParams, query_config_1.adminProductVariantQueryConfig.list),
13
+ ],
14
+ },
15
+ ];
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2N1c3RvbS9wcm9kdWN0LXZhcmlhbnRzL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRTtBQUdoRSxpREFBZ0U7QUFDaEUsNkNBQTZEO0FBRWhELFFBQUEsdUNBQXVDLEdBQXNCO0lBQ3hFO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLGdDQUFnQztRQUN6QyxXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2QiwwQ0FBNkIsRUFDN0IsNkNBQThCLENBQUMsSUFBSSxDQUNwQztTQUNGO0tBQ0Y7Q0FDRixDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ export declare const adminProductVariantFields: string[];
2
+ export declare const adminProductVariantQueryConfig: {
3
+ list: {
4
+ defaults: string[];
5
+ isList: boolean;
6
+ };
7
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adminProductVariantQueryConfig = exports.adminProductVariantFields = void 0;
4
+ exports.adminProductVariantFields = [
5
+ "id",
6
+ "title",
7
+ "sku",
8
+ "barcode",
9
+ "ean",
10
+ "upc",
11
+ "allow_backorder",
12
+ "manage_inventory",
13
+ "hs_code",
14
+ "origin_country",
15
+ "mid_code",
16
+ "material",
17
+ "weight",
18
+ "length",
19
+ "height",
20
+ "width",
21
+ "metadata",
22
+ "variant_rank",
23
+ "product_id",
24
+ "created_at",
25
+ "updated_at",
26
+ "*prices",
27
+ "prices.currency_code",
28
+ "prices.amount",
29
+ "prices.min_quantity",
30
+ "prices.max_quantity",
31
+ "*inventory_items",
32
+ "inventory_items.required_quantity",
33
+ "inventory_items.inventory_item_id",
34
+ "*options",
35
+ "options.value",
36
+ "options.option_id",
37
+ "*product",
38
+ "product.title",
39
+ "product.handle",
40
+ "product.status",
41
+ ];
42
+ exports.adminProductVariantQueryConfig = {
43
+ list: {
44
+ defaults: exports.adminProductVariantFields,
45
+ isList: true,
46
+ },
47
+ };
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9hZG1pbi9jdXN0b20vcHJvZHVjdC12YXJpYW50cy9xdWVyeS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSx5QkFBeUIsR0FBRztJQUN2QyxJQUFJO0lBQ0osT0FBTztJQUNQLEtBQUs7SUFDTCxTQUFTO0lBQ1QsS0FBSztJQUNMLEtBQUs7SUFDTCxpQkFBaUI7SUFDakIsa0JBQWtCO0lBQ2xCLFNBQVM7SUFDVCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLFVBQVU7SUFDVixRQUFRO0lBQ1IsUUFBUTtJQUNSLFFBQVE7SUFDUixPQUFPO0lBQ1AsVUFBVTtJQUNWLGNBQWM7SUFDZCxZQUFZO0lBQ1osWUFBWTtJQUNaLFlBQVk7SUFDWixTQUFTO0lBQ1Qsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGtCQUFrQjtJQUNsQixtQ0FBbUM7SUFDbkMsbUNBQW1DO0lBQ25DLFVBQVU7SUFDVixlQUFlO0lBQ2YsbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtDQUNqQixDQUFDO0FBRVcsUUFBQSw4QkFBOEIsR0FBRztJQUM1QyxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUUsaUNBQXlCO1FBQ25DLE1BQU0sRUFBRSxJQUFJO0tBQ2I7Q0FDRixDQUFDIn0=
@@ -0,0 +1,100 @@
1
+ import { AuthenticatedMedusaRequest, MedusaResponse } from "@medusajs/framework/http";
2
+ import { HttpTypes } from "@medusajs/framework/types";
3
+ import type { AdminGetProductVariantsParamsType } from "./validators";
4
+ /**
5
+ * @oas [get] /admin/custom/product-variants
6
+ * operationId: "AdminListProductVariantsFiltered"
7
+ * summary: "List Product Variants (Filtered)"
8
+ * description: "Retrieves a filtered list of product variants with advanced filtering options (seller, price, inventory)."
9
+ * x-authenticated: true
10
+ * parameters:
11
+ * - name: offset
12
+ * in: query
13
+ * schema:
14
+ * type: number
15
+ * required: false
16
+ * description: The number of items to skip before starting to collect the result set.
17
+ * - name: limit
18
+ * in: query
19
+ * schema:
20
+ * type: number
21
+ * required: false
22
+ * description: The number of items to return.
23
+ * - name: fields
24
+ * in: query
25
+ * schema:
26
+ * type: string
27
+ * required: false
28
+ * description: Comma-separated fields to include in the response.
29
+ * - name: seller_id
30
+ * in: query
31
+ * schema:
32
+ * type: string
33
+ * required: false
34
+ * description: Filter by seller ID.
35
+ * - name: has_price
36
+ * in: query
37
+ * schema:
38
+ * type: boolean
39
+ * required: false
40
+ * description: Filter variants that have prices.
41
+ * - name: has_inventory
42
+ * in: query
43
+ * schema:
44
+ * type: boolean
45
+ * required: false
46
+ * description: Filter variants that have inventory items.
47
+ * - name: has_stock_location
48
+ * in: query
49
+ * schema:
50
+ * type: boolean
51
+ * required: false
52
+ * description: Filter variants that have at least one inventory level in any stock location.
53
+ * - name: has_admin_stock_location
54
+ * in: query
55
+ * schema:
56
+ * type: boolean
57
+ * required: false
58
+ * description: Filter variants that have (or don't have) at least one admin-owned stock location (not linked to any seller).
59
+ * - name: q
60
+ * in: query
61
+ * schema:
62
+ * type: string
63
+ * required: false
64
+ * description: Search query for variant title or SKU.
65
+ * - name: order
66
+ * in: query
67
+ * schema:
68
+ * type: string
69
+ * required: false
70
+ * description: The order of the returned items.
71
+ * responses:
72
+ * "200":
73
+ * description: OK
74
+ * content:
75
+ * application/json:
76
+ * schema:
77
+ * type: object
78
+ * properties:
79
+ * variants:
80
+ * type: array
81
+ * description: Array of product variants.
82
+ * items:
83
+ * type: object
84
+ * description: Product variant object with details.
85
+ * count:
86
+ * type: integer
87
+ * description: The total number of items available
88
+ * offset:
89
+ * type: integer
90
+ * description: The number of items skipped before these items
91
+ * limit:
92
+ * type: integer
93
+ * description: The number of items per page
94
+ * tags:
95
+ * - Admin Product Variants
96
+ * security:
97
+ * - api_token: []
98
+ * - cookie_auth: []
99
+ */
100
+ export declare const GET: (req: AuthenticatedMedusaRequest<AdminGetProductVariantsParamsType>, res: MedusaResponse<HttpTypes.AdminProductVariantListResponse>) => Promise<void>;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const helpers_1 = require("@medusajs/medusa/api/admin/products/helpers");
5
+ const variant_inventory_quantity_1 = require("@medusajs/medusa/api/utils/middlewares/products/variant-inventory-quantity");
6
+ const stock_locations_1 = require("../../../../utils/stock-locations");
7
+ const list_filtered_product_variants_1 = require("../../../../workflows/product-variants/workflows/list-filtered-product-variants");
8
+ const utils_1 = require("./utils");
9
+ /**
10
+ * @oas [get] /admin/custom/product-variants
11
+ * operationId: "AdminListProductVariantsFiltered"
12
+ * summary: "List Product Variants (Filtered)"
13
+ * description: "Retrieves a filtered list of product variants with advanced filtering options (seller, price, inventory)."
14
+ * x-authenticated: true
15
+ * parameters:
16
+ * - name: offset
17
+ * in: query
18
+ * schema:
19
+ * type: number
20
+ * required: false
21
+ * description: The number of items to skip before starting to collect the result set.
22
+ * - name: limit
23
+ * in: query
24
+ * schema:
25
+ * type: number
26
+ * required: false
27
+ * description: The number of items to return.
28
+ * - name: fields
29
+ * in: query
30
+ * schema:
31
+ * type: string
32
+ * required: false
33
+ * description: Comma-separated fields to include in the response.
34
+ * - name: seller_id
35
+ * in: query
36
+ * schema:
37
+ * type: string
38
+ * required: false
39
+ * description: Filter by seller ID.
40
+ * - name: has_price
41
+ * in: query
42
+ * schema:
43
+ * type: boolean
44
+ * required: false
45
+ * description: Filter variants that have prices.
46
+ * - name: has_inventory
47
+ * in: query
48
+ * schema:
49
+ * type: boolean
50
+ * required: false
51
+ * description: Filter variants that have inventory items.
52
+ * - name: has_stock_location
53
+ * in: query
54
+ * schema:
55
+ * type: boolean
56
+ * required: false
57
+ * description: Filter variants that have at least one inventory level in any stock location.
58
+ * - name: has_admin_stock_location
59
+ * in: query
60
+ * schema:
61
+ * type: boolean
62
+ * required: false
63
+ * description: Filter variants that have (or don't have) at least one admin-owned stock location (not linked to any seller).
64
+ * - name: q
65
+ * in: query
66
+ * schema:
67
+ * type: string
68
+ * required: false
69
+ * description: Search query for variant title or SKU.
70
+ * - name: order
71
+ * in: query
72
+ * schema:
73
+ * type: string
74
+ * required: false
75
+ * description: The order of the returned items.
76
+ * responses:
77
+ * "200":
78
+ * description: OK
79
+ * content:
80
+ * application/json:
81
+ * schema:
82
+ * type: object
83
+ * properties:
84
+ * variants:
85
+ * type: array
86
+ * description: Array of product variants.
87
+ * items:
88
+ * type: object
89
+ * description: Product variant object with details.
90
+ * count:
91
+ * type: integer
92
+ * description: The total number of items available
93
+ * offset:
94
+ * type: integer
95
+ * description: The number of items skipped before these items
96
+ * limit:
97
+ * type: integer
98
+ * description: The number of items per page
99
+ * tags:
100
+ * - Admin Product Variants
101
+ * security:
102
+ * - api_token: []
103
+ * - cookie_auth: []
104
+ */
105
+ const GET = async (req, res) => {
106
+ const withInventoryQuantity = !!req.queryConfig?.fields?.some((field) => field.includes("inventory_quantity"));
107
+ if (withInventoryQuantity) {
108
+ req.queryConfig.fields = (req.queryConfig.fields ?? []).filter((field) => !field.includes("inventory_quantity"));
109
+ }
110
+ const { custom, filters } = (0, utils_1.splitVariantFilters)(req.filterableFields);
111
+ const { result } = await (0, list_filtered_product_variants_1.listFilteredProductVariantsWorkflow)(req.scope).run({
112
+ input: {
113
+ ...custom,
114
+ fields: (0, helpers_1.remapKeysForVariant)(req.queryConfig.fields ?? []),
115
+ filters,
116
+ pagination: req.queryConfig.pagination,
117
+ },
118
+ });
119
+ const workflowResult = result;
120
+ const filteredVariants = workflowResult.variants ?? [];
121
+ await (0, stock_locations_1.attachManagedByToVariants)(req.scope, filteredVariants);
122
+ if (withInventoryQuantity) {
123
+ await (0, variant_inventory_quantity_1.wrapVariantsWithTotalInventoryQuantity)(req, filteredVariants || []);
124
+ }
125
+ res.json({
126
+ variants: filteredVariants.map(utils_1.remapVariantWithManagedBy),
127
+ count: workflowResult?.count ?? filteredVariants.length,
128
+ offset: workflowResult?.offset ?? req.queryConfig.pagination?.skip ?? 0,
129
+ limit: workflowResult?.limit ?? req.queryConfig.pagination?.take ?? 50,
130
+ });
131
+ };
132
+ exports.GET = GET;
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2N1c3RvbS9wcm9kdWN0LXZhcmlhbnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLHlFQUVxRDtBQUNyRCwySEFBb0k7QUFFcEksdUVBQThFO0FBQzlFLG9JQUV5RjtBQUV6RixtQ0FHaUI7QUFFakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0ZHO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrRSxFQUNsRSxHQUE4RCxFQUM5RCxFQUFFO0lBQ0YsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDdEUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUNyQyxDQUFDO0lBRUYsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUM1RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFBLDJCQUFtQixFQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXRFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsb0VBQW1DLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMxRSxLQUFLLEVBQUU7WUFDTCxHQUFHLE1BQU07WUFDVCxNQUFNLEVBQUUsSUFBQSw2QkFBbUIsRUFBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFDekQsT0FBTztZQUNQLFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVU7U0FDdkM7S0FDRixDQUFDLENBQUM7SUFTSCxNQUFNLGNBQWMsR0FBRyxNQUFtQyxDQUFDO0lBQzNELE1BQU0sZ0JBQWdCLEdBQXdCLGNBQWMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO0lBRTVFLE1BQU0sSUFBQSwyQ0FBeUIsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFN0QsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBQSxtRUFBc0MsRUFBQyxHQUFHLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGlDQUF5QixDQUFDO1FBQ3pELEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxJQUFJLGdCQUFnQixDQUFDLE1BQU07UUFDdkQsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDdkUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7S0FDdkUsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBL0NXLFFBQUEsR0FBRyxPQStDZCJ9
@@ -0,0 +1,19 @@
1
+ import type { ProductVariantDTO } from "@medusajs/framework/types";
2
+ import { HttpTypes } from "@medusajs/framework/types";
3
+ import type { StockLocationManagedBy } from "../../../../utils/stock-locations";
4
+ export type VariantCustomFilters = {
5
+ seller_id?: string;
6
+ has_price?: boolean;
7
+ has_inventory?: boolean;
8
+ has_stock_location?: boolean;
9
+ has_admin_stock_location?: boolean;
10
+ q?: string;
11
+ };
12
+ export type AdminVariantWithManagedBy = HttpTypes.AdminProductVariant & {
13
+ managed_by: StockLocationManagedBy;
14
+ };
15
+ export declare function splitVariantFilters(input: unknown): {
16
+ custom: VariantCustomFilters;
17
+ filters: Record<string, unknown>;
18
+ };
19
+ export declare function remapVariantWithManagedBy(variant: ProductVariantDTO): AdminVariantWithManagedBy;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitVariantFilters = splitVariantFilters;
4
+ exports.remapVariantWithManagedBy = remapVariantWithManagedBy;
5
+ const helpers_1 = require("@medusajs/medusa/api/admin/products/helpers");
6
+ function splitVariantFilters(input) {
7
+ const record = input && typeof input === "object" ? input : {};
8
+ const { seller_id: seller_id_raw, has_price: has_price_raw, has_inventory: has_inventory_raw, has_stock_location: has_stock_location_raw, has_admin_stock_location: has_admin_stock_location_raw, q: q_raw, ...filters } = record;
9
+ const custom = {
10
+ seller_id: typeof seller_id_raw === "string" ? seller_id_raw : undefined,
11
+ has_price: typeof has_price_raw === "boolean" ? has_price_raw : undefined,
12
+ has_inventory: typeof has_inventory_raw === "boolean" ? has_inventory_raw : undefined,
13
+ has_stock_location: typeof has_stock_location_raw === "boolean"
14
+ ? has_stock_location_raw
15
+ : undefined,
16
+ has_admin_stock_location: typeof has_admin_stock_location_raw === "boolean"
17
+ ? has_admin_stock_location_raw
18
+ : undefined,
19
+ q: typeof q_raw === "string" ? q_raw : undefined,
20
+ };
21
+ return { custom, filters };
22
+ }
23
+ function remapVariantWithManagedBy(variant) {
24
+ const remapped = (0, helpers_1.remapVariantResponse)(variant);
25
+ const managedBy = typeof variant.managed_by === "string"
26
+ ? variant
27
+ .managed_by
28
+ : "none";
29
+ return { ...remapped, managed_by: managedBy };
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2N1c3RvbS9wcm9kdWN0LXZhcmlhbnRzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBa0JBLGtEQWlDQztBQUVELDhEQVdDO0FBOURELHlFQUFtRjtBQWdCbkYsU0FBZ0IsbUJBQW1CLENBQ2pDLEtBQWM7SUFFZCxNQUFNLE1BQU0sR0FDVixLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBRSxLQUFpQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFL0UsTUFBTSxFQUNKLFNBQVMsRUFBRSxhQUFhLEVBQ3hCLFNBQVMsRUFBRSxhQUFhLEVBQ3hCLGFBQWEsRUFBRSxpQkFBaUIsRUFDaEMsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQzFDLHdCQUF3QixFQUFFLDRCQUE0QixFQUN0RCxDQUFDLEVBQUUsS0FBSyxFQUNSLEdBQUcsT0FBTyxFQUNYLEdBQUcsTUFBTSxDQUFDO0lBRVgsTUFBTSxNQUFNLEdBQXlCO1FBQ25DLFNBQVMsRUFBRSxPQUFPLGFBQWEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUN4RSxTQUFTLEVBQUUsT0FBTyxhQUFhLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDekUsYUFBYSxFQUNYLE9BQU8saUJBQWlCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUztRQUN4RSxrQkFBa0IsRUFDaEIsT0FBTyxzQkFBc0IsS0FBSyxTQUFTO1lBQ3pDLENBQUMsQ0FBQyxzQkFBc0I7WUFDeEIsQ0FBQyxDQUFDLFNBQVM7UUFDZix3QkFBd0IsRUFDdEIsT0FBTyw0QkFBNEIsS0FBSyxTQUFTO1lBQy9DLENBQUMsQ0FBQyw0QkFBNEI7WUFDOUIsQ0FBQyxDQUFDLFNBQVM7UUFDZixDQUFDLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDakQsQ0FBQztJQUVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUN2QyxPQUEwQjtJQUUxQixNQUFNLFFBQVEsR0FBRyxJQUFBLDhCQUFvQixFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLE1BQU0sU0FBUyxHQUNiLE9BQVEsT0FBK0MsQ0FBQyxVQUFVLEtBQUssUUFBUTtRQUM3RSxDQUFDLENBQUcsT0FBOEQ7YUFDN0QsVUFBcUM7UUFDMUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUViLE9BQU8sRUFBRSxHQUFHLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUM7QUFDaEQsQ0FBQyJ9