@lodashventure/medusa-membership 0.1.3 → 0.3.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/middlewares.js +15 -1
- package/.medusa/server/src/api/store/customers/me/member-tier/route.js +74 -4
- package/.medusa/server/src/api/store/customers/me/wishlist/route.js +1 -1
- package/.medusa/server/src/api/store/promotion-codes/[id]/collect/route.js +3 -3
- package/.medusa/server/src/api/store/promotion-codes/[id]/route.js +3 -3
- package/.medusa/server/src/api/store/promotion-codes/route.js +3 -3
- package/.medusa/server/src/modules/membership/migrations/Migration20250416034358.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250416231624.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250418020235.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250420014232.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250420050937.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250421010109.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250421011451.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250422230822.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250423021328.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250423021925.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250424011144.js +2 -2
- package/.medusa/server/src/modules/membership/migrations/Migration20250507013347.js +2 -2
- package/.medusa/server/src/modules/promotion-cache/service.js +5 -1
- package/.medusa/server/src/modules/usable-promo/migrations/Migration20250504044646.js +2 -2
- package/.medusa/server/src/modules/wishlist/migrations/Migration20250424011114.js +2 -2
- package/.medusa/server/src/subscribers/customer-created.js +33 -4
- package/.medusa/server/src/subscribers/order-canceled.js +48 -0
- package/.medusa/server/src/subscribers/order-completed.js +62 -16
- package/.medusa/server/src/subscribers/order-fulfilled.js +68 -0
- package/.medusa/server/src/subscribers/order-payment-captured.js +111 -0
- package/.medusa/server/src/subscribers/order-placed.js +83 -9
- package/.medusa/server/src/subscribers/return-received.js +48 -0
- package/.medusa/server/src/workflows/membership/create-membership.js +27 -6
- package/.medusa/server/src/workflows/membership/void-membership-points.js +110 -0
- package/.medusa/server/src/workflows/usable-promo/invalidateUsedPromotionWorkflow.js +8 -2
- package/package.json +17 -30
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createMembershipWorkflow = void 0;
|
|
4
|
-
const framework_1 = require("@medusajs/framework");
|
|
5
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
6
5
|
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
7
6
|
const membership_1 = require("../../modules/membership");
|
|
8
7
|
const createMembershipStep = (0, workflows_sdk_1.createStep)("create-membership", async (data, { container }) => {
|
|
9
8
|
const membershipModuleService = container.resolve(membership_1.MEMBERSHIP_MODULE);
|
|
9
|
+
console.log(`[Membership Workflow] Creating membership for customer ${data.customer_id} with ${data.points} points`);
|
|
10
10
|
const [memberTier] = await membershipModuleService.listMemberTiers({
|
|
11
11
|
min_points: {
|
|
12
12
|
$lte: data.points,
|
|
@@ -17,13 +17,16 @@ const createMembershipStep = (0, workflows_sdk_1.createStep)("create-membership"
|
|
|
17
17
|
},
|
|
18
18
|
take: 1,
|
|
19
19
|
});
|
|
20
|
+
console.log(`[Membership Workflow] Found member tier: ${memberTier ? `${memberTier.name} (id: ${memberTier.id}, min_points: ${memberTier.min_points})` : "none"}`);
|
|
20
21
|
if (memberTier) {
|
|
21
22
|
const membership = await membershipModuleService.createMemberships({
|
|
22
23
|
member_tier_id: memberTier.id,
|
|
23
24
|
membership_points: data.points,
|
|
24
25
|
});
|
|
26
|
+
console.log(`[Membership Workflow] Created membership: ${membership.id} with tier ${memberTier.name}`);
|
|
25
27
|
return new workflows_sdk_1.StepResponse({ membership }, { membership });
|
|
26
28
|
}
|
|
29
|
+
console.log(`[Membership Workflow] No member tier found for ${data.points} points`);
|
|
27
30
|
return new workflows_sdk_1.StepResponse(null, null);
|
|
28
31
|
}, async (membership, { container }) => {
|
|
29
32
|
const membershipModuleService = container.resolve(membership_1.MEMBERSHIP_MODULE);
|
|
@@ -31,8 +34,9 @@ const createMembershipStep = (0, workflows_sdk_1.createStep)("create-membership"
|
|
|
31
34
|
return;
|
|
32
35
|
await membershipModuleService.deleteMemberships(membership.membership.id);
|
|
33
36
|
});
|
|
34
|
-
const createMemberShipLink = (0, workflows_sdk_1.createStep)("create-membership-link", async (data) => {
|
|
35
|
-
const link =
|
|
37
|
+
const createMemberShipLink = (0, workflows_sdk_1.createStep)("create-membership-link", async (data, { container }) => {
|
|
38
|
+
const link = container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
39
|
+
console.log(`[Membership Workflow] Creating link between customer ${data.customerId} and membership ${data.membershipId}`);
|
|
36
40
|
try {
|
|
37
41
|
await link.create([
|
|
38
42
|
{
|
|
@@ -44,17 +48,34 @@ const createMemberShipLink = (0, workflows_sdk_1.createStep)("create-membership-
|
|
|
44
48
|
},
|
|
45
49
|
},
|
|
46
50
|
]);
|
|
51
|
+
console.log(`[Membership Workflow] Successfully created link between customer and membership`);
|
|
47
52
|
}
|
|
48
53
|
catch (error) {
|
|
49
|
-
|
|
54
|
+
console.error(`[Membership Workflow] Failed to create link:`, error);
|
|
55
|
+
const membershipModuleService = container.resolve(membership_1.MEMBERSHIP_MODULE);
|
|
50
56
|
await membershipModuleService.deleteMemberships(data.membershipId);
|
|
51
57
|
throw error;
|
|
52
58
|
}
|
|
53
59
|
return new workflows_sdk_1.StepResponse({ data }, { data });
|
|
60
|
+
}, async (data, { container }) => {
|
|
61
|
+
// Rollback: remove the link
|
|
62
|
+
if (!data?.data)
|
|
63
|
+
return;
|
|
64
|
+
const link = container.resolve(utils_1.ContainerRegistrationKeys.LINK);
|
|
65
|
+
await link.dismiss([
|
|
66
|
+
{
|
|
67
|
+
[utils_1.Modules.CUSTOMER]: {
|
|
68
|
+
customer_id: data.data.customerId,
|
|
69
|
+
},
|
|
70
|
+
[membership_1.MEMBERSHIP_MODULE]: {
|
|
71
|
+
membership_id: data.data.membershipId,
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
54
75
|
});
|
|
55
76
|
exports.createMembershipWorkflow = (0, workflows_sdk_1.createWorkflow)("create-membership", (input) => {
|
|
56
77
|
const { membership } = createMembershipStep(input);
|
|
57
|
-
(0, workflows_sdk_1.when)({ membership }, ({ membership }) => membership !==
|
|
78
|
+
(0, workflows_sdk_1.when)({ membership }, ({ membership }) => membership !== null).then(() => {
|
|
58
79
|
createMemberShipLink({
|
|
59
80
|
membershipId: membership.id,
|
|
60
81
|
customerId: input.customer_id,
|
|
@@ -64,4 +85,4 @@ exports.createMembershipWorkflow = (0, workflows_sdk_1.createWorkflow)("create-m
|
|
|
64
85
|
membership,
|
|
65
86
|
});
|
|
66
87
|
});
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1lbWJlcnNoaXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL21lbWJlcnNoaXAvY3JlYXRlLW1lbWJlcnNoaXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQStFO0FBQy9FLHFFQU0yQztBQUMzQyx5REFBNkQ7QUFRN0QsTUFBTSxvQkFBb0IsR0FBRyxJQUFBLDBCQUFVLEVBQ3JDLG1CQUFtQixFQUNuQixLQUFLLEVBQUUsSUFBMkIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDbkQsTUFBTSx1QkFBdUIsR0FDM0IsU0FBUyxDQUFDLE9BQU8sQ0FBQyw4QkFBaUIsQ0FBQyxDQUFDO0lBRXZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMERBQTBELElBQUksQ0FBQyxXQUFXLFNBQVMsSUFBSSxDQUFDLE1BQU0sU0FBUyxDQUFDLENBQUM7SUFFckgsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sdUJBQXVCLENBQUMsZUFBZSxDQUNoRTtRQUNFLFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNsQjtLQUNGLEVBQ0Q7UUFDRSxLQUFLLEVBQUU7WUFDTCxVQUFVLEVBQUUsTUFBTTtTQUNuQjtRQUNELElBQUksRUFBRSxDQUFDO0tBQ1IsQ0FDRixDQUFDO0lBRUYsT0FBTyxDQUFDLEdBQUcsQ0FBQyw0Q0FBNEMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLFNBQVMsVUFBVSxDQUFDLEVBQUUsaUJBQWlCLFVBQVUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUVuSyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxVQUFVLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQztZQUNqRSxjQUFjLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDN0IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU07U0FDL0IsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsVUFBVSxDQUFDLEVBQUUsY0FBYyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN2RyxPQUFPLElBQUksNEJBQVksQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsSUFBSSxDQUFDLE1BQU0sU0FBUyxDQUFDLENBQUM7SUFDcEYsT0FBTyxJQUFJLDRCQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUMsRUFFRCxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUNsQyxNQUFNLHVCQUF1QixHQUMzQixTQUFTLENBQUMsT0FBTyxDQUFDLDhCQUFpQixDQUFDLENBQUM7SUFFdkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRTtRQUFFLE9BQU87SUFFeEMsTUFBTSx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLENBQUMsQ0FDRixDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFBLDBCQUFVLEVBQ3JDLHdCQUF3QixFQUN4QixLQUFLLEVBQUUsSUFBa0QsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDMUUsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUvRCxPQUFPLENBQUMsR0FBRyxDQUFDLHdEQUF3RCxJQUFJLENBQUMsVUFBVSxtQkFBbUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFFM0gsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2hCO2dCQUNFLENBQUMsZUFBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNsQixXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVU7aUJBQzdCO2dCQUNELENBQUMsOEJBQWlCLENBQUMsRUFBRTtvQkFDbkIsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZO2lCQUNqQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpRkFBaUYsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyRSxNQUFNLHVCQUF1QixHQUMzQixTQUFTLENBQUMsT0FBTyxDQUFDLDhCQUFpQixDQUFDLENBQUM7UUFDdkMsTUFBTSx1QkFBdUIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbkUsTUFBTSxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQyxFQUVELEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzVCLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUk7UUFBRSxPQUFPO0lBRXhCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0QsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2pCO1lBQ0UsQ0FBQyxlQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ2xCLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7YUFDbEM7WUFDRCxDQUFDLDhCQUFpQixDQUFDLEVBQUU7Z0JBQ25CLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7YUFDdEM7U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FDRixDQUFDO0FBRVcsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDhCQUFjLEVBQ3BELG1CQUFtQixFQUNuQixDQUFDLEtBQTRCLEVBQUUsRUFBRTtJQUMvQixNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFbkQsSUFBQSxvQkFBSSxFQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNoRSxHQUFHLEVBQUU7UUFDSCxvQkFBb0IsQ0FBQztZQUNuQixZQUFZLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDM0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FDRixDQUFDO0lBRUYsT0FBTyxJQUFJLGdDQUFnQixDQUFDO1FBQzFCLFVBQVU7S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.voidMembershipPointsWorkflow = void 0;
|
|
4
|
+
const framework_1 = require("@medusajs/framework");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
7
|
+
const update_membership_1 = require("./update-membership");
|
|
8
|
+
const membership_1 = require("../../modules/membership");
|
|
9
|
+
const voidMembershipPointsStep = (0, workflows_sdk_1.createStep)("void-membership-points", async (data) => {
|
|
10
|
+
const query = framework_1.container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
11
|
+
console.log(`[Membership] Voiding points for order ${data.order_id}, reason: ${data.reason}`);
|
|
12
|
+
// Check if membership is enabled
|
|
13
|
+
const { data: [store], } = await query.graph({
|
|
14
|
+
entity: "store",
|
|
15
|
+
fields: ["id", "membership_config.*"],
|
|
16
|
+
});
|
|
17
|
+
if (!store.membership_config?.enable_membership) {
|
|
18
|
+
console.log(`[Membership] Membership is disabled, skipping void points`);
|
|
19
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
20
|
+
}
|
|
21
|
+
if (!data.customer_id) {
|
|
22
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Customer id is required");
|
|
23
|
+
}
|
|
24
|
+
if (!data.order_id) {
|
|
25
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order id is required");
|
|
26
|
+
}
|
|
27
|
+
// Get customer and membership
|
|
28
|
+
const { data: [customer], } = await query.graph({
|
|
29
|
+
entity: "customer",
|
|
30
|
+
fields: ["*", "membership.*"],
|
|
31
|
+
filters: {
|
|
32
|
+
id: data.customer_id,
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
if (!customer) {
|
|
36
|
+
console.error(`[Membership] Customer ${data.customer_id} not found`);
|
|
37
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
38
|
+
}
|
|
39
|
+
if (!customer.membership) {
|
|
40
|
+
console.log(`[Membership] Customer ${data.customer_id} has no membership, nothing to void`);
|
|
41
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
42
|
+
}
|
|
43
|
+
const membershipModuleService = framework_1.container.resolve(membership_1.MEMBERSHIP_MODULE);
|
|
44
|
+
// Find the original transaction that added points for this order
|
|
45
|
+
const { data: transactions } = await query.graph({
|
|
46
|
+
entity: "membership_transaction",
|
|
47
|
+
fields: ["id", "points", "source"],
|
|
48
|
+
filters: {
|
|
49
|
+
customer_id: data.customer_id,
|
|
50
|
+
source: `order: ${data.order_id}`,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
if (!transactions || transactions.length === 0) {
|
|
54
|
+
console.log(`[Membership] No points transaction found for order ${data.order_id}, nothing to void`);
|
|
55
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
56
|
+
}
|
|
57
|
+
// Check if points were already voided for this order
|
|
58
|
+
const voidSource = `void_${data.reason}: ${data.order_id}`;
|
|
59
|
+
const { data: voidTransactions } = await query.graph({
|
|
60
|
+
entity: "membership_transaction",
|
|
61
|
+
fields: ["id"],
|
|
62
|
+
filters: {
|
|
63
|
+
customer_id: data.customer_id,
|
|
64
|
+
source: voidSource,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
if (voidTransactions && voidTransactions.length > 0) {
|
|
68
|
+
console.log(`[Membership] Points already voided for order ${data.order_id}, skipping to avoid duplication`);
|
|
69
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
70
|
+
}
|
|
71
|
+
// Sum all points from this order (in case there are multiple transactions)
|
|
72
|
+
const totalPointsToVoid = transactions.reduce((sum, t) => sum + t.points, 0);
|
|
73
|
+
if (totalPointsToVoid <= 0) {
|
|
74
|
+
console.log(`[Membership] No positive points to void for order ${data.order_id}`);
|
|
75
|
+
return new workflows_sdk_1.StepResponse(null, null);
|
|
76
|
+
}
|
|
77
|
+
console.log(`[Membership] Voiding ${totalPointsToVoid} points from customer ${data.customer_id}`);
|
|
78
|
+
const currentPoints = customer.membership.membership_points || 0;
|
|
79
|
+
const newPoints = Math.max(0, currentPoints - totalPointsToVoid);
|
|
80
|
+
// Update membership points
|
|
81
|
+
await update_membership_1.updateMembershipWorkflow.run({
|
|
82
|
+
input: {
|
|
83
|
+
membership_id: customer.membership.id,
|
|
84
|
+
points: newPoints,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
// Create a negative transaction to record the void
|
|
88
|
+
await membershipModuleService.createMembershipTransactions({
|
|
89
|
+
customer_id: data.customer_id,
|
|
90
|
+
membership_id: customer.membership.id,
|
|
91
|
+
points: -totalPointsToVoid,
|
|
92
|
+
source: voidSource,
|
|
93
|
+
});
|
|
94
|
+
console.log(`[Membership] Successfully voided ${totalPointsToVoid} points for order ${data.order_id}`);
|
|
95
|
+
return new workflows_sdk_1.StepResponse({
|
|
96
|
+
voided_points: totalPointsToVoid,
|
|
97
|
+
new_points: newPoints
|
|
98
|
+
}, {
|
|
99
|
+
customer_id: data.customer_id,
|
|
100
|
+
membership_id: customer.membership.id,
|
|
101
|
+
voided_points: totalPointsToVoid,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
exports.voidMembershipPointsWorkflow = (0, workflows_sdk_1.createWorkflow)("void-membership-points", (input) => {
|
|
105
|
+
const result = voidMembershipPointsStep(input);
|
|
106
|
+
return new workflows_sdk_1.WorkflowResponse({
|
|
107
|
+
result,
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pZC1tZW1iZXJzaGlwLXBvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvbWVtYmVyc2hpcC92b2lkLW1lbWJlcnNoaXAtcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFnRDtBQUNoRCxxREFHbUM7QUFDbkMscUVBSzJDO0FBQzNDLDJEQUErRDtBQUUvRCx5REFBNkQ7QUFRN0QsTUFBTSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ3pDLHdCQUF3QixFQUN4QixLQUFLLEVBQUUsSUFBK0IsRUFBRSxFQUFFO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLHFCQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxHQUFHLENBQUMseUNBQXlDLElBQUksQ0FBQyxRQUFRLGFBQWEsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFOUYsaUNBQWlDO0lBQ2pDLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FDZCxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQztLQUN0QyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixFQUFFLENBQUM7UUFDaEQsT0FBTyxDQUFDLEdBQUcsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sSUFBSSw0QkFBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5QkFBeUIs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
|
|
@@ -13,8 +13,14 @@ const invalidateUsedPromotionStep = (0, workflows_sdk_1.createStep)("invalidate-
|
|
|
13
13
|
const customerId = order.customer_id;
|
|
14
14
|
const promotionSet = new Set(order.items
|
|
15
15
|
?.map((item) => item.adjustments?.map((adjustment) => adjustment.promotion_id))
|
|
16
|
-
.flat()
|
|
16
|
+
.flat()
|
|
17
|
+
.filter((id) => id !== null && id !== undefined) // Filter out null/undefined
|
|
18
|
+
);
|
|
17
19
|
const promotionIds = Array.from(promotionSet);
|
|
20
|
+
if (promotionIds.length === 0) {
|
|
21
|
+
console.log(`[Promotion Cache] No promotions to invalidate for order ${order_id}`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
18
24
|
const promotionCacheService = framework_1.container.resolve(promotion_cache_1.PROMOTION_CACHE_MODULE);
|
|
19
25
|
const keys = promotionIds.map((id) => `user:${customerId}:promotion:${id}`);
|
|
20
26
|
await promotionCacheService.invalidateKeys(keys);
|
|
@@ -25,4 +31,4 @@ exports.invalidatedUsePromotionWorkflow = (0, workflows_sdk_1.createWorkflow)("i
|
|
|
25
31
|
invalidateUsePromotion: data,
|
|
26
32
|
});
|
|
27
33
|
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YWxpZGF0ZVVzZWRQcm9tb3Rpb25Xb3JrZmxvdy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvdXNhYmxlLXByb21vL2ludmFsaWRhdGVVc2VkUHJvbW90aW9uV29ya2Zsb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQWdEO0FBQ2hELHFEQUFvRDtBQUNwRCxxRUFJMkM7QUFDM0MsbUVBQXVFO0FBR3ZFLE1BQU0sMkJBQTJCLEdBQUcsSUFBQSwwQkFBVSxFQUM1QywyQkFBMkIsRUFDM0IsS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUF3QixFQUFFLEVBQUU7SUFDM0MsTUFBTSxZQUFZLEdBQUcsTUFBTSxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUN2RCxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztLQUNqQyxDQUFDLENBQUM7SUFFSCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBRXJDLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxDQUMxQixLQUFLLENBQUMsS0FBSztRQUNULEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDYixJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUMvRDtTQUNBLElBQUksRUFBRTtTQUNOLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxDQUFDLENBQUMsNEJBQTRCO0tBQ2hGLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTlDLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLDJEQUEyRCxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxxQkFBcUIsR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FDN0Msd0NBQXNCLENBQ3ZCLENBQUM7SUFFRixNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxRQUFRLFVBQVUsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLE1BQU0scUJBQXFCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FDRixDQUFDO0FBRVcsUUFBQSwrQkFBK0IsR0FBRyxJQUFBLDhCQUFjLEVBQzNELDBCQUEwQixFQUMxQixDQUFDLEtBQTJCLEVBQUUsRUFBRTtJQUM5QixNQUFNLElBQUksR0FBRywyQkFBMkIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUV2RSxPQUFPLElBQUksZ0NBQWdCLENBQUM7UUFDMUIsc0JBQXNCLEVBQUUsSUFBSTtLQUM3QixDQUFDLENBQUM7QUFDTCxDQUFDLENBQ0YsQ0FBQyJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lodashventure/medusa-membership",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "A starter for Medusa plugins.",
|
|
5
5
|
"author": "Medusa (https://medusajs.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,27 +25,21 @@
|
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "medusa plugin:build",
|
|
28
|
-
"dev": "medusa plugin:develop"
|
|
28
|
+
"dev": "medusa plugin:develop",
|
|
29
|
+
"prepublishOnly": "medusa plugin:build"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
|
-
"@medusajs/admin-sdk": "2.
|
|
32
|
-
"@medusajs/cli": "2.
|
|
33
|
-
"@medusajs/framework": "2.
|
|
34
|
-
"@medusajs/icons": "^2.
|
|
35
|
-
"@medusajs/medusa": "2.
|
|
36
|
-
"@medusajs/test-utils": "2.
|
|
32
|
+
"@medusajs/admin-sdk": "2.11.0",
|
|
33
|
+
"@medusajs/cli": "2.11.0",
|
|
34
|
+
"@medusajs/framework": "2.11.0",
|
|
35
|
+
"@medusajs/icons": "^2.11.0",
|
|
36
|
+
"@medusajs/medusa": "2.11.0",
|
|
37
|
+
"@medusajs/test-utils": "2.11.0",
|
|
37
38
|
"@medusajs/ui": "4.0.4",
|
|
38
|
-
"@mikro-orm/cli": "6.4.3",
|
|
39
|
-
"@mikro-orm/core": "6.4.3",
|
|
40
|
-
"@mikro-orm/knex": "6.4.3",
|
|
41
|
-
"@mikro-orm/migrations": "6.4.3",
|
|
42
|
-
"@mikro-orm/postgresql": "6.4.3",
|
|
43
39
|
"@swc/core": "1.5.7",
|
|
44
40
|
"@types/node": "^20.0.0",
|
|
45
41
|
"@types/react": "^18.3.2",
|
|
46
42
|
"@types/react-dom": "^18.2.25",
|
|
47
|
-
"awilix": "^8.0.1",
|
|
48
|
-
"pg": "^8.13.0",
|
|
49
43
|
"prop-types": "^15.8.1",
|
|
50
44
|
"react": "^18.2.0",
|
|
51
45
|
"react-dom": "^18.2.0",
|
|
@@ -55,22 +49,15 @@
|
|
|
55
49
|
"yalc": "^1.0.0-pre.53"
|
|
56
50
|
},
|
|
57
51
|
"peerDependencies": {
|
|
58
|
-
"@medusajs/admin-sdk": "2.
|
|
59
|
-
"@medusajs/cli": "2.
|
|
60
|
-
"@medusajs/framework": "2.
|
|
61
|
-
"@medusajs/icons": "^2.
|
|
52
|
+
"@medusajs/admin-sdk": "2.11.0",
|
|
53
|
+
"@medusajs/cli": "2.11.0",
|
|
54
|
+
"@medusajs/framework": "2.11.0",
|
|
55
|
+
"@medusajs/icons": "^2.11.0",
|
|
62
56
|
"@medusajs/js-sdk": "*",
|
|
63
|
-
"@medusajs/medusa": "2.
|
|
64
|
-
"@medusajs/test-utils": "2.
|
|
57
|
+
"@medusajs/medusa": "2.11.0",
|
|
58
|
+
"@medusajs/test-utils": "2.11.0",
|
|
65
59
|
"@medusajs/ui": "4.0.3",
|
|
66
|
-
"@
|
|
67
|
-
"@mikro-orm/core": "6.4.3",
|
|
68
|
-
"@mikro-orm/knex": "6.4.3",
|
|
69
|
-
"@mikro-orm/migrations": "6.4.3",
|
|
70
|
-
"@mikro-orm/postgresql": "6.4.3",
|
|
71
|
-
"@tanstack/react-query": "*",
|
|
72
|
-
"awilix": "^8.0.1",
|
|
73
|
-
"pg": "^8.13.0"
|
|
60
|
+
"@tanstack/react-query": "*"
|
|
74
61
|
},
|
|
75
62
|
"engines": {
|
|
76
63
|
"node": ">=20"
|
|
@@ -82,4 +69,4 @@
|
|
|
82
69
|
"thai-address-autocomplete-react": "^1.2.2",
|
|
83
70
|
"zod": "^4.1.12"
|
|
84
71
|
}
|
|
85
|
-
}
|
|
72
|
+
}
|