@mercurjs/b2c-core 1.5.0 → 1.5.1
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.
- package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.js +36 -0
- package/.medusa/server/src/api/admin/notifications/route.js +8 -8
- package/.medusa/server/src/api/admin/sellers/validators.d.ts +2 -2
- package/.medusa/server/src/api/admin/sellers/validators.js +9 -7
- package/.medusa/server/src/api/store/carts/[id]/promotions/route.js +3 -4
- package/.medusa/server/src/api/store/middlewares.js +11 -9
- package/.medusa/server/src/api/store/products/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/store/products/middlewares.js +13 -0
- package/.medusa/server/src/api/store/products/search/route.d.ts +81 -0
- package/.medusa/server/src/api/store/products/search/route.js +170 -0
- package/.medusa/server/src/api/store/products/validators.d.ts +36 -0
- package/.medusa/server/src/api/store/products/validators.js +17 -0
- package/.medusa/server/src/api/store/wishlist/middlewares.d.ts +1 -1
- package/.medusa/server/src/api/store/wishlist/middlewares.js +47 -25
- package/.medusa/server/src/api/store/wishlist/{[id]/product → product}/[reference_id]/route.d.ts +3 -9
- package/.medusa/server/src/api/store/wishlist/product/[reference_id]/route.js +65 -0
- package/.medusa/server/src/api/store/wishlist/route.d.ts +789 -28
- package/.medusa/server/src/api/store/wishlist/route.js +817 -37
- package/.medusa/server/src/api/vendor/campaigns/validators.js +4 -4
- package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.js +2 -5
- package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/batch/route.js +2 -2
- package/.medusa/server/src/api/vendor/orders/validators.d.ts +4 -4
- package/.medusa/server/src/api/vendor/payout-account/route.js +3 -2
- package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.d.ts +2 -2
- package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.js +2 -2
- package/.medusa/server/src/api/vendor/price-lists/route.d.ts +1 -1
- package/.medusa/server/src/api/vendor/price-lists/route.js +27 -8
- package/.medusa/server/src/api/vendor/product-collections/middlewares.js +2 -2
- package/.medusa/server/src/api/vendor/product-collections/route.d.ts +18 -0
- package/.medusa/server/src/api/vendor/product-collections/route.js +19 -1
- package/.medusa/server/src/api/vendor/product-collections/validators.d.ts +404 -15
- package/.medusa/server/src/api/vendor/product-collections/validators.js +18 -3
- package/.medusa/server/src/api/vendor/product-tags/route.d.ts +4 -1
- package/.medusa/server/src/api/vendor/product-tags/route.js +8 -8
- package/.medusa/server/src/api/vendor/products/route.d.ts +8 -2
- package/.medusa/server/src/api/vendor/products/route.js +28 -20
- package/.medusa/server/src/api/vendor/products/utils.d.ts +20 -1
- package/.medusa/server/src/api/vendor/products/utils.js +81 -5
- package/.medusa/server/src/api/vendor/products/validators.d.ts +60 -0
- package/.medusa/server/src/api/vendor/products/validators.js +8 -2
- package/.medusa/server/src/api/vendor/promotions/route.d.ts +86 -2
- package/.medusa/server/src/api/vendor/promotions/route.js +116 -7
- package/.medusa/server/src/api/vendor/promotions/validators.d.ts +237 -38
- package/.medusa/server/src/api/vendor/promotions/validators.js +23 -5
- package/.medusa/server/src/api/vendor/shipping-profiles/route.d.ts +31 -2
- package/.medusa/server/src/api/vendor/shipping-profiles/route.js +61 -10
- package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +92 -3
- package/.medusa/server/src/api/vendor/shipping-profiles/validators.js +10 -2
- package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +10 -10
- package/.medusa/server/src/links/wishlist-product.js +3 -3
- package/.medusa/server/src/modules/seller/utils.d.ts +1 -1
- package/.medusa/server/src/modules/seller/utils.js +37 -10
- package/.medusa/server/src/shared/infra/http/utils/products.js +8 -2
- package/.medusa/server/src/workflows/attribute/steps/validate-attribute-value.js +7 -3
- package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.d.ts +3 -3
- package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.js +17 -15
- package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.js +97 -0
- package/.medusa/server/src/workflows/promotions/steps/index.d.ts +2 -0
- package/.medusa/server/src/workflows/promotions/steps/index.js +3 -1
- package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.d.ts +6 -0
- package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.js +40 -0
- package/.medusa/server/src/workflows/promotions/steps/verify-seller-product-rule-deletion.d.ts +9 -0
- package/.medusa/server/src/workflows/promotions/steps/verify-seller-product-rule-deletion.js +27 -0
- package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.d.ts +5 -0
- package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.js +27 -11
- package/.medusa/server/src/workflows/promotions/workflows/batch-vendor-promotion-rules.js +5 -1
- package/.medusa/server/src/workflows/promotions/workflows/create-vendor-promotion.js +4 -3
- package/.medusa/server/src/workflows/seller/steps/validate-products-to-import.d.ts +5 -0
- package/package.json +1 -1
- package/.medusa/server/src/api/store/wishlist/[id]/product/[reference_id]/route.js +0 -61
package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELETE = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const core_flows_1 = require("@medusajs/core-flows");
|
|
6
|
+
const helpers_1 = require("@medusajs/medusa/api/admin/inventory-items/helpers");
|
|
7
|
+
// Overridden admin default delete inventory level route to force delete the inventory level with stocked items at the locations.
|
|
8
|
+
const DELETE = async (req, res) => {
|
|
9
|
+
const { id, location_id } = req.params;
|
|
10
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
const result = await query.graph({
|
|
12
|
+
entity: "inventory_level",
|
|
13
|
+
filters: { inventory_item_id: id, location_id },
|
|
14
|
+
fields: ["id", "reserved_quantity"],
|
|
15
|
+
}, { throwIfKeyNotFound: true });
|
|
16
|
+
const { id: levelId, reserved_quantity: reservedQuantity } = result.data[0];
|
|
17
|
+
if (reservedQuantity > 0) {
|
|
18
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, `Cannot remove Inventory Level ${id} at Location ${location_id} because there are reservations at location`);
|
|
19
|
+
}
|
|
20
|
+
const deleteInventoryLevelWorkflow = (0, core_flows_1.deleteInventoryLevelsWorkflow)(req.scope);
|
|
21
|
+
await deleteInventoryLevelWorkflow.run({
|
|
22
|
+
input: {
|
|
23
|
+
id: [levelId],
|
|
24
|
+
force: true,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const inventoryItem = await (0, helpers_1.refetchInventoryItem)(id, req.scope, req.queryConfig.fields);
|
|
28
|
+
res.status(200).json({
|
|
29
|
+
id: levelId,
|
|
30
|
+
object: "inventory-level",
|
|
31
|
+
deleted: true,
|
|
32
|
+
parent: inventoryItem,
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
exports.DELETE = DELETE;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ludmVudG9yeS1pdGVtcy9baWRdL2xvY2F0aW9uLWxldmVscy9bbG9jYXRpb25faWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUdtQztBQUduQyxxREFBcUU7QUFFckUsZ0ZBQTBGO0FBRTFGLGlJQUFpSTtBQUUxSCxNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQ3pCLEdBQWtCLEVBQ2xCLEdBQWdFLEVBQ2hFLEVBQUU7SUFDRixNQUFNLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFdkMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakUsTUFBTSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQy9CLE1BQU0sRUFBRSxpQkFBaUI7UUFDekIsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRTtRQUMvQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUM7S0FDcEMsRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFakMsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRTVFLElBQUksZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFDN0IsaUNBQWlDLEVBQUUsZ0JBQWdCLFdBQVcsNkNBQTZDLENBQzVHLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSw0QkFBNEIsR0FBRyxJQUFBLDBDQUE2QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5RSxNQUFNLDRCQUE0QixDQUFDLEdBQUcsQ0FBQztRQUNyQyxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDYixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLDhCQUFvQixFQUM5QyxFQUFFLEVBQ0YsR0FBRyxDQUFDLEtBQUssRUFDVCxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDdkIsQ0FBQztJQUVGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ25CLEVBQUUsRUFBRSxPQUFPO1FBQ1gsTUFBTSxFQUFFLGlCQUFpQjtRQUN6QixPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxhQUFhO0tBQ3RCLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQTVDVyxRQUFBLE1BQU0sVUE0Q2pCIn0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = void 0;
|
|
4
|
-
const
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
/**
|
|
6
6
|
* @oas [get] /admin/notifications
|
|
7
7
|
* operationId: "AdminListNotifications"
|
|
@@ -55,19 +55,19 @@ const http_1 = require("@medusajs/framework/http");
|
|
|
55
55
|
* - cookie_auth: []
|
|
56
56
|
*/
|
|
57
57
|
const GET = async (req, res) => {
|
|
58
|
-
const
|
|
58
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
59
|
+
const { data: notifications, metadata } = await query.graph({
|
|
59
60
|
entity: 'notification',
|
|
60
|
-
|
|
61
|
-
scope: req.scope,
|
|
61
|
+
filters: { ...req.filterableFields, channel: 'feed' },
|
|
62
62
|
fields: req.queryConfig.fields,
|
|
63
63
|
pagination: req.queryConfig.pagination
|
|
64
64
|
});
|
|
65
65
|
res.json({
|
|
66
66
|
notifications,
|
|
67
|
-
count: metadata.
|
|
68
|
-
offset: metadata.skip,
|
|
69
|
-
limit: metadata.take
|
|
67
|
+
count: metadata?.count ?? notifications.length,
|
|
68
|
+
offset: metadata?.skip ?? req.queryConfig.pagination?.skip ?? 0,
|
|
69
|
+
limit: metadata?.take ?? req.queryConfig.pagination?.take ?? 0
|
|
70
70
|
});
|
|
71
71
|
};
|
|
72
72
|
exports.GET = GET;
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL25vdGlmaWNhdGlvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EscURBQXFFO0FBRXJFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtREc7QUFDSSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQXNFLEVBQ3RFLEdBQTRELEVBQzVELEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDMUQsTUFBTSxFQUFFLGNBQWM7UUFDdEIsT0FBTyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtRQUNyRCxNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQzlCLFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVU7S0FDdkMsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLGFBQWE7UUFDYixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssSUFBSSxhQUFhLENBQUMsTUFBTTtRQUM5QyxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQztRQUMvRCxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLElBQUksQ0FBQztLQUMvRCxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFuQlksUUFBQSxHQUFHLE9BbUJmIn0=
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { z } from
|
|
2
|
-
import { StoreStatus } from
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { StoreStatus } from "@mercurjs/framework";
|
|
3
3
|
export type AdminSellerParamsType = z.infer<typeof AdminSellerParams>;
|
|
4
4
|
export declare const AdminSellerParams: z.ZodObject<{
|
|
5
5
|
fields: z.ZodOptional<z.ZodString>;
|
|
@@ -6,19 +6,19 @@ const validators_1 = require("@medusajs/medusa/api/utils/validators");
|
|
|
6
6
|
const framework_1 = require("@mercurjs/framework");
|
|
7
7
|
exports.AdminSellerParams = (0, validators_1.createFindParams)({
|
|
8
8
|
offset: 0,
|
|
9
|
-
limit: 50
|
|
9
|
+
limit: 50,
|
|
10
10
|
});
|
|
11
11
|
exports.AdminGetSellerProductsParams = (0, validators_1.createFindParams)({
|
|
12
12
|
offset: 0,
|
|
13
|
-
limit: 50
|
|
13
|
+
limit: 50,
|
|
14
14
|
});
|
|
15
15
|
exports.AdminGetSellerOrdersParams = (0, validators_1.createFindParams)({
|
|
16
16
|
offset: 0,
|
|
17
|
-
limit: 50
|
|
17
|
+
limit: 50,
|
|
18
18
|
});
|
|
19
19
|
exports.AdminGetSellerCustomerGroupsParams = (0, validators_1.createFindParams)({
|
|
20
20
|
offset: 0,
|
|
21
|
-
limit: 50
|
|
21
|
+
limit: 50,
|
|
22
22
|
});
|
|
23
23
|
exports.AdminUpdateSeller = zod_1.z
|
|
24
24
|
.object({
|
|
@@ -35,11 +35,13 @@ exports.AdminUpdateSeller = zod_1.z
|
|
|
35
35
|
postal_code: zod_1.z.string().optional(),
|
|
36
36
|
country_code: zod_1.z.string().optional(),
|
|
37
37
|
tax_id: zod_1.z.string().optional(),
|
|
38
|
-
store_status: zod_1.z.nativeEnum(framework_1.StoreStatus).optional()
|
|
38
|
+
store_status: zod_1.z.nativeEnum(framework_1.StoreStatus).optional(),
|
|
39
39
|
})
|
|
40
40
|
.strict();
|
|
41
41
|
exports.AdminInviteSeller = zod_1.z.object({
|
|
42
42
|
email: zod_1.z.string().email(),
|
|
43
|
-
registration_url: zod_1.z
|
|
43
|
+
registration_url: zod_1.z
|
|
44
|
+
.string()
|
|
45
|
+
.default((0, framework_1.buildHostAddress)(framework_1.Hosts.VENDOR_PANEL, "/register").toString()),
|
|
44
46
|
});
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc2VsbGVycy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF3QjtBQUV4QixzRUFBeUU7QUFFekUsbURBQTJFO0FBRzlELFFBQUEsaUJBQWlCLEdBQUcsSUFBQSw2QkFBZ0IsRUFBQztJQUNoRCxNQUFNLEVBQUUsQ0FBQztJQUNULEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQyxDQUFDO0FBS1UsUUFBQSw0QkFBNEIsR0FBRyxJQUFBLDZCQUFnQixFQUFDO0lBQzNELE1BQU0sRUFBRSxDQUFDO0lBQ1QsS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDLENBQUM7QUFLVSxRQUFBLDBCQUEwQixHQUFHLElBQUEsNkJBQWdCLEVBQUM7SUFDekQsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsRUFBRTtDQUNWLENBQUMsQ0FBQztBQUtVLFFBQUEsa0NBQWtDLEdBQUcsSUFBQSw2QkFBZ0IsRUFBQztJQUNqRSxNQUFNLEVBQUUsQ0FBQztJQUNULEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQyxDQUFDO0FBR1UsUUFBQSxpQkFBaUIsR0FBRyxPQUFDO0tBQy9CLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxPQUFDO1NBQ0osVUFBVSxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRCxRQUFRLEVBQUU7SUFDYixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNwQyxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxJQUFJLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMzQixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixXQUFXLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNsQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM3QixZQUFZLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FBQyx1QkFBVyxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQ25ELENBQUM7S0FDRCxNQUFNLEVBQUUsQ0FBQztBQUdDLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssRUFBRTtJQUN6QixnQkFBZ0IsRUFBRSxPQUFDO1NBQ2hCLE1BQU0sRUFBRTtTQUNSLE9BQU8sQ0FBQyxJQUFBLDRCQUFnQixFQUFDLGlCQUFLLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0NBQ3pFLENBQUMsQ0FBQyJ9
|
|
@@ -3,16 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
-
const framework_1 = require("@mercurjs/framework");
|
|
7
6
|
const seller_1 = require("../../../../../modules/seller");
|
|
8
7
|
const POST = async (req, res) => {
|
|
9
8
|
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
10
|
-
const
|
|
11
|
-
const validatePromotions = await (0, seller_1.validateSellerPromotions)(req.validatedBody.promo_codes, req.scope, seller.id);
|
|
9
|
+
const validatePromotions = await (0, seller_1.validateSellersPromotions)(req.validatedBody.promo_codes, req.scope, req.params.id);
|
|
12
10
|
if (!validatePromotions.valid) {
|
|
13
11
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Some of the promotion codes are invalid');
|
|
14
12
|
}
|
|
15
13
|
await core_flows_1.updateCartPromotionsWorkflow.run({
|
|
14
|
+
container: req.scope,
|
|
16
15
|
input: {
|
|
17
16
|
cart_id: req.params.id,
|
|
18
17
|
promo_codes: req.validatedBody.promo_codes,
|
|
@@ -31,4 +30,4 @@ const POST = async (req, res) => {
|
|
|
31
30
|
res.json({ cart });
|
|
32
31
|
};
|
|
33
32
|
exports.POST = POST;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhcnRzL1tpZF0vcHJvbW90aW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBb0c7QUFFcEcsNERBQTBFO0FBQzFFLDBEQUF5RTtBQUVsRSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3JCLEdBQTJELEVBQzNELEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSxNQUFNLGtCQUFrQixHQUFHLE1BQU0sSUFBQSxrQ0FBeUIsRUFDeEQsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQzdCLEdBQUcsQ0FBQyxLQUFLLEVBQ1QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ2QsQ0FBQTtJQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksbUJBQVcsQ0FBQyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUseUNBQXlDLENBQUMsQ0FBQTtJQUNsRyxDQUFDO0lBQ0QsTUFBTSx5Q0FBNEIsQ0FBQyxHQUFHLENBQUM7UUFDckMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRTtZQUNMLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDdEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsV0FBVztZQUMxQyxNQUFNLEVBQ0YsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyx3QkFBZ0IsQ0FBQyxHQUFHO2dCQUN0QixDQUFDLENBQUMsd0JBQWdCLENBQUMsT0FBTztTQUNqQztLQUNKLENBQUMsQ0FBQTtJQUNGLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDYixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7U0FDbEI7UUFDRCxNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO0tBQy9CLENBQUMsQ0FBQTtJQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0FBQ3BCLENBQUMsQ0FBQTtBQW5DVSxRQUFBLElBQUksUUFtQ2QifQ==
|
|
@@ -4,10 +4,11 @@ exports.storeMiddlewares = void 0;
|
|
|
4
4
|
const framework_1 = require("@medusajs/framework");
|
|
5
5
|
const middlewares_1 = require("./carts/middlewares");
|
|
6
6
|
const middlewares_2 = require("./order-set/middlewares");
|
|
7
|
-
const middlewares_3 = require("./
|
|
8
|
-
const middlewares_4 = require("./
|
|
9
|
-
const middlewares_5 = require("./
|
|
10
|
-
const middlewares_6 = require("./
|
|
7
|
+
const middlewares_3 = require("./products/middlewares");
|
|
8
|
+
const middlewares_4 = require("./returns/middlewares");
|
|
9
|
+
const middlewares_5 = require("./seller/middlewares");
|
|
10
|
+
const middlewares_6 = require("./shipping-options/middlewares");
|
|
11
|
+
const middlewares_7 = require("./wishlist/middlewares");
|
|
11
12
|
exports.storeMiddlewares = [
|
|
12
13
|
{
|
|
13
14
|
matcher: "/store/reviews/*",
|
|
@@ -19,9 +20,10 @@ exports.storeMiddlewares = [
|
|
|
19
20
|
},
|
|
20
21
|
...middlewares_1.storeCartsMiddlewares,
|
|
21
22
|
...middlewares_2.storeOrderSetMiddlewares,
|
|
22
|
-
...
|
|
23
|
-
...middlewares_5.
|
|
24
|
-
...
|
|
25
|
-
...
|
|
23
|
+
...middlewares_3.storeProductsMiddlewares,
|
|
24
|
+
...middlewares_5.storeSellerMiddlewares,
|
|
25
|
+
...middlewares_6.storeShippingOptionRoutesMiddlewares,
|
|
26
|
+
...middlewares_4.storeReturnsMiddlewares,
|
|
27
|
+
...middlewares_7.storeWishlistMiddlewares,
|
|
26
28
|
];
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFvRTtBQUVwRSxxREFBNEQ7QUFDNUQseURBQW1FO0FBQ25FLHdEQUFrRTtBQUNsRSx1REFBZ0U7QUFDaEUsc0RBQThEO0FBQzlELGdFQUFzRjtBQUN0Rix3REFBa0U7QUFFckQsUUFBQSxnQkFBZ0IsR0FBc0I7SUFDakQ7UUFDRSxPQUFPLEVBQUUsa0JBQWtCO1FBQzNCLFdBQVcsRUFBRSxDQUFDLElBQUEsd0JBQVksRUFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUMvRDtJQUNEO1FBQ0UsT0FBTyxFQUFFLHlCQUF5QjtRQUNsQyxXQUFXLEVBQUUsQ0FBQyxJQUFBLHdCQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDL0Q7SUFDRCxHQUFHLG1DQUFxQjtJQUN4QixHQUFHLHNDQUF3QjtJQUMzQixHQUFHLHNDQUF3QjtJQUMzQixHQUFHLG9DQUFzQjtJQUN6QixHQUFHLGtEQUFvQztJQUN2QyxHQUFHLHFDQUF1QjtJQUMxQixHQUFHLHNDQUF3QjtDQUM1QixDQUFDIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.storeProductsMiddlewares = void 0;
|
|
4
|
+
const framework_1 = require("@medusajs/framework");
|
|
5
|
+
const validators_1 = require("./validators");
|
|
6
|
+
exports.storeProductsMiddlewares = [
|
|
7
|
+
{
|
|
8
|
+
methods: ['POST'],
|
|
9
|
+
matcher: '/store/products/search',
|
|
10
|
+
middlewares: [(0, framework_1.validateAndTransformBody)(validators_1.StoreSearchProductsSchema)]
|
|
11
|
+
}
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUc0QjtBQUU1Qiw2Q0FBd0Q7QUFFM0MsUUFBQSx3QkFBd0IsR0FBc0I7SUFDekQ7UUFDRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakIsT0FBTyxFQUFFLHdCQUF3QjtRQUNqQyxXQUFXLEVBQUUsQ0FBQyxJQUFBLG9DQUF3QixFQUFDLHNDQUF5QixDQUFDLENBQUM7S0FDbkU7Q0FDRixDQUFBIn0=
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { MedusaRequest, MedusaResponse } from '@medusajs/framework';
|
|
2
|
+
import { StoreSearchProductsType } from '../validators';
|
|
3
|
+
/**
|
|
4
|
+
* @oas [post] /store/products/search
|
|
5
|
+
* operationId: "StoreSearchProducts"
|
|
6
|
+
* summary: "Search products"
|
|
7
|
+
* description: "Searches products using Algolia and returns hydrated product data from the database. Only product IDs are retrieved from Algolia to avoid the 10KB response limit, all product data is fetched from the database."
|
|
8
|
+
* requestBody:
|
|
9
|
+
* content:
|
|
10
|
+
* application/json:
|
|
11
|
+
* schema:
|
|
12
|
+
* type: object
|
|
13
|
+
* properties:
|
|
14
|
+
* query:
|
|
15
|
+
* type: string
|
|
16
|
+
* description: The search query string
|
|
17
|
+
* page:
|
|
18
|
+
* type: number
|
|
19
|
+
* description: The page number (0-indexed)
|
|
20
|
+
* hitsPerPage:
|
|
21
|
+
* type: number
|
|
22
|
+
* description: Number of results per page
|
|
23
|
+
* filters:
|
|
24
|
+
* type: string
|
|
25
|
+
* description: Algolia filter string
|
|
26
|
+
* facets:
|
|
27
|
+
* type: array
|
|
28
|
+
* items:
|
|
29
|
+
* type: string
|
|
30
|
+
* description: Array of facet attributes to retrieve
|
|
31
|
+
* maxValuesPerFacet:
|
|
32
|
+
* type: number
|
|
33
|
+
* description: Maximum number of facet values to return per facet
|
|
34
|
+
* currency_code:
|
|
35
|
+
* type: string
|
|
36
|
+
* description: Currency code for price calculation
|
|
37
|
+
* region_id:
|
|
38
|
+
* type: string
|
|
39
|
+
* description: Region ID for price calculation
|
|
40
|
+
* customer_id:
|
|
41
|
+
* type: string
|
|
42
|
+
* description: Customer ID for customer-specific price calculation
|
|
43
|
+
* customer_group_id:
|
|
44
|
+
* type: array
|
|
45
|
+
* items:
|
|
46
|
+
* type: string
|
|
47
|
+
* description: Customer group IDs for group-specific price calculation
|
|
48
|
+
* responses:
|
|
49
|
+
* "200":
|
|
50
|
+
* description: OK
|
|
51
|
+
* content:
|
|
52
|
+
* application/json:
|
|
53
|
+
* schema:
|
|
54
|
+
* type: object
|
|
55
|
+
* properties:
|
|
56
|
+
* products:
|
|
57
|
+
* type: array
|
|
58
|
+
* items:
|
|
59
|
+
* type: object
|
|
60
|
+
* nbHits:
|
|
61
|
+
* type: number
|
|
62
|
+
* description: Total number of matching products
|
|
63
|
+
* page:
|
|
64
|
+
* type: number
|
|
65
|
+
* description: Current page number
|
|
66
|
+
* nbPages:
|
|
67
|
+
* type: number
|
|
68
|
+
* description: Total number of pages
|
|
69
|
+
* hitsPerPage:
|
|
70
|
+
* type: number
|
|
71
|
+
* description: Number of results per page
|
|
72
|
+
* facets:
|
|
73
|
+
* type: object
|
|
74
|
+
* description: Facet values and counts
|
|
75
|
+
* processingTimeMS:
|
|
76
|
+
* type: number
|
|
77
|
+
* description: Algolia processing time in milliseconds
|
|
78
|
+
* tags:
|
|
79
|
+
* - Store Products
|
|
80
|
+
*/
|
|
81
|
+
export declare const POST: (req: MedusaRequest<StoreSearchProductsType>, res: MedusaResponse) => Promise<MedusaResponse | undefined>;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const framework_1 = require("@mercurjs/framework");
|
|
6
|
+
/**
|
|
7
|
+
* @oas [post] /store/products/search
|
|
8
|
+
* operationId: "StoreSearchProducts"
|
|
9
|
+
* summary: "Search products"
|
|
10
|
+
* description: "Searches products using Algolia and returns hydrated product data from the database. Only product IDs are retrieved from Algolia to avoid the 10KB response limit, all product data is fetched from the database."
|
|
11
|
+
* requestBody:
|
|
12
|
+
* content:
|
|
13
|
+
* application/json:
|
|
14
|
+
* schema:
|
|
15
|
+
* type: object
|
|
16
|
+
* properties:
|
|
17
|
+
* query:
|
|
18
|
+
* type: string
|
|
19
|
+
* description: The search query string
|
|
20
|
+
* page:
|
|
21
|
+
* type: number
|
|
22
|
+
* description: The page number (0-indexed)
|
|
23
|
+
* hitsPerPage:
|
|
24
|
+
* type: number
|
|
25
|
+
* description: Number of results per page
|
|
26
|
+
* filters:
|
|
27
|
+
* type: string
|
|
28
|
+
* description: Algolia filter string
|
|
29
|
+
* facets:
|
|
30
|
+
* type: array
|
|
31
|
+
* items:
|
|
32
|
+
* type: string
|
|
33
|
+
* description: Array of facet attributes to retrieve
|
|
34
|
+
* maxValuesPerFacet:
|
|
35
|
+
* type: number
|
|
36
|
+
* description: Maximum number of facet values to return per facet
|
|
37
|
+
* currency_code:
|
|
38
|
+
* type: string
|
|
39
|
+
* description: Currency code for price calculation
|
|
40
|
+
* region_id:
|
|
41
|
+
* type: string
|
|
42
|
+
* description: Region ID for price calculation
|
|
43
|
+
* customer_id:
|
|
44
|
+
* type: string
|
|
45
|
+
* description: Customer ID for customer-specific price calculation
|
|
46
|
+
* customer_group_id:
|
|
47
|
+
* type: array
|
|
48
|
+
* items:
|
|
49
|
+
* type: string
|
|
50
|
+
* description: Customer group IDs for group-specific price calculation
|
|
51
|
+
* responses:
|
|
52
|
+
* "200":
|
|
53
|
+
* description: OK
|
|
54
|
+
* content:
|
|
55
|
+
* application/json:
|
|
56
|
+
* schema:
|
|
57
|
+
* type: object
|
|
58
|
+
* properties:
|
|
59
|
+
* products:
|
|
60
|
+
* type: array
|
|
61
|
+
* items:
|
|
62
|
+
* type: object
|
|
63
|
+
* nbHits:
|
|
64
|
+
* type: number
|
|
65
|
+
* description: Total number of matching products
|
|
66
|
+
* page:
|
|
67
|
+
* type: number
|
|
68
|
+
* description: Current page number
|
|
69
|
+
* nbPages:
|
|
70
|
+
* type: number
|
|
71
|
+
* description: Total number of pages
|
|
72
|
+
* hitsPerPage:
|
|
73
|
+
* type: number
|
|
74
|
+
* description: Number of results per page
|
|
75
|
+
* facets:
|
|
76
|
+
* type: object
|
|
77
|
+
* description: Facet values and counts
|
|
78
|
+
* processingTimeMS:
|
|
79
|
+
* type: number
|
|
80
|
+
* description: Algolia processing time in milliseconds
|
|
81
|
+
* tags:
|
|
82
|
+
* - Store Products
|
|
83
|
+
*/
|
|
84
|
+
const POST = async (req, res) => {
|
|
85
|
+
const algoliaService = req.scope.resolve(framework_1.ALGOLIA_MODULE);
|
|
86
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
87
|
+
const { query: searchQuery, page, hitsPerPage, filters, facets, maxValuesPerFacet, currency_code, region_id, customer_id, customer_group_id } = req.validatedBody;
|
|
88
|
+
const searchParams = {
|
|
89
|
+
query: searchQuery,
|
|
90
|
+
page,
|
|
91
|
+
hitsPerPage,
|
|
92
|
+
attributesToRetrieve: ['id'],
|
|
93
|
+
attributesToHighlight: []
|
|
94
|
+
};
|
|
95
|
+
if (filters) {
|
|
96
|
+
searchParams.filters = filters;
|
|
97
|
+
}
|
|
98
|
+
if (facets) {
|
|
99
|
+
searchParams.facets = facets;
|
|
100
|
+
}
|
|
101
|
+
if (maxValuesPerFacet) {
|
|
102
|
+
searchParams.maxValuesPerFacet = maxValuesPerFacet;
|
|
103
|
+
}
|
|
104
|
+
const algoliaResult = await algoliaService.search(framework_1.IndexType.PRODUCT, searchParams);
|
|
105
|
+
const productIds = algoliaResult.hits.map((hit) => hit.id);
|
|
106
|
+
if (productIds.length === 0) {
|
|
107
|
+
return res.json({
|
|
108
|
+
products: [],
|
|
109
|
+
nbHits: algoliaResult.nbHits,
|
|
110
|
+
page: algoliaResult.page,
|
|
111
|
+
nbPages: algoliaResult.nbPages,
|
|
112
|
+
hitsPerPage: algoliaResult.hitsPerPage,
|
|
113
|
+
facets: algoliaResult.facets,
|
|
114
|
+
facets_stats: algoliaResult.facets_stats,
|
|
115
|
+
processingTimeMS: algoliaResult.processingTimeMS,
|
|
116
|
+
query: algoliaResult.query
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
const hasPricingContext = currency_code || region_id || customer_id || customer_group_id;
|
|
120
|
+
const contextParams = {};
|
|
121
|
+
if (hasPricingContext) {
|
|
122
|
+
contextParams.variants = {
|
|
123
|
+
calculated_price: (0, utils_1.QueryContext)({
|
|
124
|
+
...(currency_code && { currency_code }),
|
|
125
|
+
...(region_id && { region_id }),
|
|
126
|
+
...(customer_id && { customer_id }),
|
|
127
|
+
...(customer_group_id && { customer_group_id })
|
|
128
|
+
})
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const { data: products } = await query.graph({
|
|
132
|
+
entity: 'product',
|
|
133
|
+
fields: [
|
|
134
|
+
'*',
|
|
135
|
+
'images.*',
|
|
136
|
+
'options.*',
|
|
137
|
+
'options.values.*',
|
|
138
|
+
'variants.*',
|
|
139
|
+
'variants.options.*',
|
|
140
|
+
'variants.prices.*',
|
|
141
|
+
...(hasPricingContext ? ['variants.calculated_price.*'] : []),
|
|
142
|
+
'categories.*',
|
|
143
|
+
'collection.*',
|
|
144
|
+
'type.*',
|
|
145
|
+
'tags.*',
|
|
146
|
+
'seller.*'
|
|
147
|
+
],
|
|
148
|
+
filters: {
|
|
149
|
+
id: productIds
|
|
150
|
+
},
|
|
151
|
+
...(Object.keys(contextParams).length > 0 && { context: contextParams })
|
|
152
|
+
});
|
|
153
|
+
const productMap = new Map(products.map((p) => [p.id, p]));
|
|
154
|
+
const orderedProducts = productIds
|
|
155
|
+
.map((id) => productMap.get(id))
|
|
156
|
+
.filter(Boolean);
|
|
157
|
+
res.json({
|
|
158
|
+
products: orderedProducts,
|
|
159
|
+
nbHits: algoliaResult.nbHits,
|
|
160
|
+
page: algoliaResult.page,
|
|
161
|
+
nbPages: algoliaResult.nbPages,
|
|
162
|
+
hitsPerPage: algoliaResult.hitsPerPage,
|
|
163
|
+
facets: algoliaResult.facets,
|
|
164
|
+
facets_stats: algoliaResult.facets_stats,
|
|
165
|
+
processingTimeMS: algoliaResult.processingTimeMS,
|
|
166
|
+
query: algoliaResult.query
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
exports.POST = POST;
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL3NlYXJjaC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFHa0M7QUFDbEMsbURBSTRCO0FBUTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZFRztBQUNJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBMkMsRUFDM0MsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUF3QiwwQkFBYyxDQUFDLENBQUE7SUFDL0UsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsTUFBTSxFQUNKLEtBQUssRUFBRSxXQUFXLEVBQ2xCLElBQUksRUFDSixXQUFXLEVBQ1gsT0FBTyxFQUNQLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFNBQVMsRUFDVCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2xCLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQTtJQUVyQixNQUFNLFlBQVksR0FBNEI7UUFDNUMsS0FBSyxFQUFFLFdBQVc7UUFDbEIsSUFBSTtRQUNKLFdBQVc7UUFDWCxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQztRQUM1QixxQkFBcUIsRUFBRSxFQUFFO0tBQzFCLENBQUE7SUFFRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ1osWUFBWSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDaEMsQ0FBQztJQUNELElBQUksTUFBTSxFQUFFLENBQUM7UUFDWCxZQUFZLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUM5QixDQUFDO0lBQ0Qs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
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export type StoreSearchProductsType = z.infer<typeof StoreSearchProductsSchema>;
|
|
3
|
+
export declare const StoreSearchProductsSchema: z.ZodObject<{
|
|
4
|
+
query: z.ZodDefault<z.ZodString>;
|
|
5
|
+
page: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
hitsPerPage: z.ZodDefault<z.ZodNumber>;
|
|
7
|
+
filters: z.ZodOptional<z.ZodString>;
|
|
8
|
+
facets: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
9
|
+
maxValuesPerFacet: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
currency_code: z.ZodOptional<z.ZodString>;
|
|
11
|
+
region_id: z.ZodOptional<z.ZodString>;
|
|
12
|
+
customer_id: z.ZodOptional<z.ZodString>;
|
|
13
|
+
customer_group_id: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
query: string;
|
|
16
|
+
page: number;
|
|
17
|
+
hitsPerPage: number;
|
|
18
|
+
filters?: string | undefined;
|
|
19
|
+
facets?: string[] | undefined;
|
|
20
|
+
maxValuesPerFacet?: number | undefined;
|
|
21
|
+
currency_code?: string | undefined;
|
|
22
|
+
region_id?: string | undefined;
|
|
23
|
+
customer_id?: string | undefined;
|
|
24
|
+
customer_group_id?: string[] | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
query?: string | undefined;
|
|
27
|
+
page?: number | undefined;
|
|
28
|
+
hitsPerPage?: number | undefined;
|
|
29
|
+
filters?: string | undefined;
|
|
30
|
+
facets?: string[] | undefined;
|
|
31
|
+
maxValuesPerFacet?: number | undefined;
|
|
32
|
+
currency_code?: string | undefined;
|
|
33
|
+
region_id?: string | undefined;
|
|
34
|
+
customer_id?: string | undefined;
|
|
35
|
+
customer_group_id?: string[] | undefined;
|
|
36
|
+
}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StoreSearchProductsSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.StoreSearchProductsSchema = zod_1.z.object({
|
|
6
|
+
query: zod_1.z.string().default(''),
|
|
7
|
+
page: zod_1.z.coerce.number().int().min(0).default(0),
|
|
8
|
+
hitsPerPage: zod_1.z.coerce.number().int().min(1).max(100).default(12),
|
|
9
|
+
filters: zod_1.z.string().optional(),
|
|
10
|
+
facets: zod_1.z.array(zod_1.z.string()).optional(),
|
|
11
|
+
maxValuesPerFacet: zod_1.z.coerce.number().int().min(1).max(1000).optional(),
|
|
12
|
+
currency_code: zod_1.z.string().length(3).optional(),
|
|
13
|
+
region_id: zod_1.z.string().optional(),
|
|
14
|
+
customer_id: zod_1.z.string().optional(),
|
|
15
|
+
customer_group_id: zod_1.z.array(zod_1.z.string()).optional()
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvcHJvZHVjdHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFJVixRQUFBLHlCQUF5QixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEQsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQzdCLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFdBQVcsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNoRSxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixNQUFNLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDdEMsaUJBQWlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN0RSxhQUFhLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDOUMsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsV0FBVyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbEMsaUJBQWlCLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7Q0FDbEQsQ0FBQyxDQUFBIn0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { MiddlewareRoute } from
|
|
1
|
+
import { MiddlewareRoute } from "@medusajs/medusa";
|
|
2
2
|
export declare const storeWishlistMiddlewares: MiddlewareRoute[];
|
|
@@ -1,39 +1,61 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.storeWishlistMiddlewares = void 0;
|
|
7
4
|
const framework_1 = require("@medusajs/framework");
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const query_config_1 = require("
|
|
11
|
-
const validators_1 = require("
|
|
5
|
+
const medusa_1 = require("@medusajs/medusa");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const query_config_1 = require("@medusajs/medusa/api/store/products/query-config");
|
|
8
|
+
const validators_1 = require("@medusajs/medusa/api/store/products/validators");
|
|
9
|
+
const query_config_2 = require("./query-config");
|
|
10
|
+
const validators_2 = require("./validators");
|
|
11
|
+
const http_1 = require("@medusajs/framework/http");
|
|
12
|
+
const index_1 = require("@medusajs/medusa/api/utils/middlewares/index");
|
|
12
13
|
exports.storeWishlistMiddlewares = [
|
|
13
14
|
{
|
|
14
|
-
method: [
|
|
15
|
-
matcher:
|
|
15
|
+
method: ["GET"],
|
|
16
|
+
matcher: "/store/wishlist",
|
|
16
17
|
middlewares: [
|
|
17
|
-
(0,
|
|
18
|
-
|
|
18
|
+
(0, medusa_1.authenticate)("customer", ["bearer", "session"]),
|
|
19
|
+
(0, framework_1.validateAndTransformQuery)(validators_1.StoreGetProductsParams, query_config_1.listProductQueryConfig),
|
|
20
|
+
(0, index_1.filterByValidSalesChannels)(),
|
|
21
|
+
(0, http_1.maybeApplyLinkFilter)({
|
|
22
|
+
entryPoint: "product_sales_channel",
|
|
23
|
+
resourceId: "product_id",
|
|
24
|
+
filterableField: "sales_channel_id",
|
|
25
|
+
}),
|
|
26
|
+
(0, http_1.applyDefaultFilters)({
|
|
27
|
+
status: utils_1.ProductStatus.PUBLISHED,
|
|
28
|
+
// TODO: the type here seems off and the implementation does not take into account $and and $or possible filters. Might be worth re working (original type used here was StoreGetProductsParamsType)
|
|
29
|
+
categories: (filters, fields) => {
|
|
30
|
+
const categoryIds = filters.category_id;
|
|
31
|
+
delete filters.category_id;
|
|
32
|
+
if (!(0, utils_1.isPresent)(categoryIds)) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
return { id: categoryIds, is_internal: false, is_active: true };
|
|
36
|
+
},
|
|
37
|
+
}),
|
|
38
|
+
(0, index_1.normalizeDataForContext)(),
|
|
39
|
+
(0, index_1.setPricingContext)(),
|
|
40
|
+
(0, index_1.setTaxContext)(),
|
|
41
|
+
(0, http_1.clearFiltersByKey)(["region_id", "country_code", "province", "cart_id"]),
|
|
42
|
+
],
|
|
19
43
|
},
|
|
20
44
|
{
|
|
21
|
-
method: [
|
|
22
|
-
matcher:
|
|
45
|
+
method: ["POST"],
|
|
46
|
+
matcher: "/store/wishlist",
|
|
23
47
|
middlewares: [
|
|
24
|
-
(0,
|
|
25
|
-
(0, framework_1.
|
|
26
|
-
|
|
48
|
+
(0, medusa_1.authenticate)("customer", ["bearer", "session"]),
|
|
49
|
+
(0, framework_1.validateAndTransformQuery)(validators_2.StoreGetWishlistsParams, query_config_2.storeWishlistQueryConfig.retrieve),
|
|
50
|
+
(0, framework_1.validateAndTransformBody)(validators_2.StoreCreateWishlist),
|
|
51
|
+
],
|
|
27
52
|
},
|
|
28
53
|
{
|
|
29
|
-
method: [
|
|
30
|
-
matcher:
|
|
54
|
+
method: ["DELETE"],
|
|
55
|
+
matcher: "/store/wishlist/product/:reference_id",
|
|
31
56
|
middlewares: [
|
|
32
|
-
(0,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
})
|
|
36
|
-
]
|
|
37
|
-
}
|
|
57
|
+
(0, medusa_1.authenticate)("customer", ["bearer", "session"]),
|
|
58
|
+
],
|
|
59
|
+
},
|
|
38
60
|
];
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0L21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUc2QjtBQUM3Qiw2Q0FBaUU7QUFFakUscURBQXFFO0FBQ3JFLG1GQUEwRjtBQUMxRiwrRUFBd0Y7QUFHeEYsaURBQTBEO0FBQzFELDZDQUE0RTtBQUU1RSxtREFJa0M7QUFDbEMsd0VBS3NEO0FBRXpDLFFBQUEsd0JBQXdCLEdBQXNCO0lBQ3pEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQy9DLElBQUEscUNBQXlCLEVBQUMsbUNBQXNCLEVBQUUscUNBQXNCLENBQUM7WUFDekUsSUFBQSxrQ0FBMEIsR0FBRTtZQUM1QixJQUFBLDJCQUFvQixFQUFDO2dCQUNuQixVQUFVLEVBQUUsdUJBQXVCO2dCQUNuQyxVQUFVLEVBQUUsWUFBWTtnQkFDeEIsZUFBZSxFQUFFLGtCQUFrQjthQUNwQyxDQUFDO1lBQ0YsSUFBQSwwQkFBbUIsRUFBQztnQkFDbEIsTUFBTSxFQUFFLHFCQUFhLENBQUMsU0FBUztnQkFDL0Isb01BQW9NO2dCQUNwTSxVQUFVLEVBQUUsQ0FBQyxPQUFZLEVBQUUsTUFBZ0IsRUFBRSxFQUFFO29CQUM3QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDO29CQUN4QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUM7b0JBRTNCLElBQUksQ0FBQyxJQUFBLGlCQUFTLEVBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzt3QkFDNUIsT0FBTztvQkFDVCxDQUFDO29CQUVELE9BQU8sRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNsRSxDQUFDO2FBQ0YsQ0FBQztZQUNGLElBQUEsK0JBQXVCLEdBQUU7WUFDekIsSUFBQSx5QkFBaUIsR0FBRTtZQUNuQixJQUFBLHFCQUFhLEdBQUU7WUFDZixJQUFBLHdCQUFpQixFQUFDLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDeEU7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQkFBWSxFQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMvQyxJQUFBLHFDQUF5QixFQUN2QixvQ0FBdUIsRUFDdkIsdUNBQXdCLENBQUMsUUFBUSxDQUNsQztZQUNELElBQUEsb0NBQXdCLEVBQUMsZ0NBQW1CLENBQUM7U0FDOUM7S0FDRjtJQUNEO1FBQ0UsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBQ2xCLE9BQU8sRUFBRSx1Q0FBdUM7UUFDaEQsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQkFBWSxFQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNoRDtLQUNGO0NBQ0YsQ0FBQyJ9
|