@devx-commerce/plugin-product-reviews
Version:
Product Reviews Plugin for Medusa
139 lines • 11.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.storeProductReviewRoutesMiddlewares = exports.checkReviewEligibilityQuerySchema = exports.defaultStoreReviewsQueryConfig = exports.allowedStoreProductReviewFields = exports.defaultStoreProductReviewFields = exports.updateProductReviewsSchema = exports.createProductReviewsSchema = exports.upsertProductReviewsSchema = exports.listStoreProductReviewsQuerySchema = void 0;
const framework_1 = require("@medusajs/framework");
const validators_1 = require("@medusajs/medusa/api/utils/validators");
const zod_1 = require("zod");
exports.listStoreProductReviewsQuerySchema = (0, validators_1.createFindParams)({
offset: 0,
limit: 50,
}).merge(zod_1.z.object({
q: zod_1.z.string().optional(),
id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
product_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
order_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
rating: zod_1.z
.union([zod_1.z.number().max(5).min(1), zod_1.z.array(zod_1.z.number().max(5).min(1))])
.optional(),
created_at: (0, validators_1.createOperatorMap)().optional(),
updated_at: (0, validators_1.createOperatorMap)().optional(),
}));
exports.upsertProductReviewsSchema = zod_1.z.object({
phone: zod_1.z.string().optional(),
email: zod_1.z.string().optional(),
name: zod_1.z.string().optional(),
reviews: zod_1.z.array(zod_1.z.object({
product_id: zod_1.z.string(),
order_id: zod_1.z.string().optional(),
order_item_id: zod_1.z.string().optional(),
rating: zod_1.z.number().max(5).min(1),
title: zod_1.z.string(),
description: zod_1.z.string(),
media: zod_1.z.array(zod_1.z.object({ url: zod_1.z.string(), type: zod_1.z.enum(["IMAGE", "VIDEO"]) })),
})),
});
exports.createProductReviewsSchema = zod_1.z.object({
phone: zod_1.z.string().optional(),
email: zod_1.z.string().optional(),
name: zod_1.z.string().optional(),
product_id: zod_1.z.string(),
order: zod_1.z
.object({
id: zod_1.z.string(),
item_id: zod_1.z.string(),
})
.optional(),
rating: zod_1.z.number().max(5).min(1),
title: zod_1.z.string().optional(),
description: zod_1.z.string(),
medias: zod_1.z.array(zod_1.z.object({ url: zod_1.z.string(), type: zod_1.z.enum(["IMAGE", "VIDEO"]) })),
});
exports.updateProductReviewsSchema = zod_1.z.object({
rating: zod_1.z.number().max(5).min(1).optional(),
title: zod_1.z.string().optional(),
description: zod_1.z.string().optional(),
medias: zod_1.z
.array(zod_1.z.object({ url: zod_1.z.string(), type: zod_1.z.enum(["IMAGE", "VIDEO"]) }))
.optional(),
});
exports.defaultStoreProductReviewFields = [
"id",
"is_admin_verified",
"title",
"description",
"is_verified_purchase",
"product_id",
"name",
"rating",
"content",
"created_at",
"updated_at",
"response.*",
"associated_medias.*",
"product.*",
"response.*",
];
exports.allowedStoreProductReviewFields = [
"id",
"is_admin_verified",
"product_id",
"title",
"description",
"is_verified_purchase",
"name",
"rating",
"content",
"created_at",
"updated_at",
"response",
"associated_medias",
"product",
"response",
];
exports.defaultStoreReviewsQueryConfig = {
allowed: [...exports.allowedStoreProductReviewFields],
defaults: [...exports.defaultStoreProductReviewFields],
defaultLimit: 50,
isList: true,
};
exports.checkReviewEligibilityQuerySchema = zod_1.z
.object({
customer_id: zod_1.z.string().optional(),
email: zod_1.z.string().email().optional(),
phone: zod_1.z.string().optional(),
product_id: zod_1.z.string(),
})
.refine((data) => {
// At least one of customer_id, email, or phone must be provided
return !!(data.customer_id || data.email || data.phone);
}, {
message: "At least one of customer_id, email, or phone must be provided",
path: ["customer_id", "email", "phone"],
});
exports.storeProductReviewRoutesMiddlewares = [
{
matcher: "/store/product-reviews",
method: "GET",
middlewares: [
(0, framework_1.validateAndTransformQuery)(exports.listStoreProductReviewsQuerySchema, exports.defaultStoreReviewsQueryConfig),
],
},
{
matcher: "/store/product-reviews",
method: "POST",
middlewares: [(0, framework_1.validateAndTransformBody)(exports.createProductReviewsSchema)],
},
{
matcher: "/store/product-reviews/:id",
method: "PUT",
middlewares: [(0, framework_1.validateAndTransformBody)(exports.updateProductReviewsSchema)],
},
{
matcher: "/store/product-reviews/eligibility",
method: "GET",
middlewares: [
(0, framework_1.validateAndTransformQuery)(exports.checkReviewEligibilityQuerySchema, {}),
],
},
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3QtcmV2aWV3cy9taWRkbGV3YXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFJNkI7QUFDN0Isc0VBRytDO0FBRS9DLDZCQUF3QjtBQUlYLFFBQUEsa0NBQWtDLEdBQUcsSUFBQSw2QkFBZ0IsRUFBQztJQUNqRSxNQUFNLEVBQUUsQ0FBQztJQUNULEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQyxDQUFDLEtBQUssQ0FDTixPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ1AsQ0FBQyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEIsRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3pELFVBQVUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNqRSxRQUFRLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDL0QsTUFBTSxFQUFFLE9BQUM7U0FDTixLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFDLENB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