@lodashventure/medusa-membership 0.1.2 → 0.1.3

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.
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const framework_1 = require("@medusajs/framework");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const promotion_cache_1 = require("../../../../../modules/promotion-cache");
7
+ const usable_promo_1 = require("../../../../../modules/usable-promo");
8
+ /**
9
+ * POST handler for collecting/claiming a specific promotion code by ID
10
+ *
11
+ * Allows authenticated customers to collect a promotion to their account.
12
+ * Once collected, the promotion code can be used during checkout.
13
+ *
14
+ * Validation:
15
+ * - Promotion must exist and be enabled for collection
16
+ * - Customer must be authenticated
17
+ * - Customer cannot collect the same promotion twice
18
+ */
19
+ const POST = async (req, res) => {
20
+ const { id: promotion_id } = req.params;
21
+ if (!promotion_id) {
22
+ return res.status(400).json({
23
+ message: "promotion_id is required",
24
+ });
25
+ }
26
+ const customerId = req.auth_context.actor_id;
27
+ if (!customerId) {
28
+ return res.status(401).json({
29
+ message: "Customer must be authenticated",
30
+ });
31
+ }
32
+ try {
33
+ // Check if promotion exists and is enabled for collection
34
+ const usablePromoService = framework_1.container.resolve(usable_promo_1.USABLE_PROMO_MODULE);
35
+ const [usablePromotion] = await usablePromoService.listUsablePromotions({
36
+ promotion_id: promotion_id,
37
+ });
38
+ if (!usablePromotion) {
39
+ return res.status(404).json({
40
+ message: "Promotion not found or not available for collection",
41
+ });
42
+ }
43
+ if (!usablePromotion.enabled) {
44
+ return res.status(400).json({
45
+ message: "This promotion is not enabled for collection",
46
+ });
47
+ }
48
+ // Verify promotion exists in the system
49
+ const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
50
+ const promotion = await promotionService.retrievePromotion(promotion_id, {
51
+ relations: [
52
+ "campaign",
53
+ "application_method",
54
+ ],
55
+ });
56
+ if (!promotion) {
57
+ return res.status(404).json({
58
+ message: "Promotion not found",
59
+ });
60
+ }
61
+ // Check if customer already has this promotion
62
+ const promoCacheService = framework_1.container.resolve(promotion_cache_1.PROMOTION_CACHE_MODULE);
63
+ const cacheKey = `user:${customerId}:promotion:${promotion_id}`;
64
+ const alreadyCollected = await promoCacheService.exists(cacheKey);
65
+ if (alreadyCollected) {
66
+ return res.status(400).json({
67
+ message: "You have already collected this promotion",
68
+ promotion: {
69
+ id: promotion.id,
70
+ code: promotion.code,
71
+ type: promotion.type,
72
+ },
73
+ });
74
+ }
75
+ // Add promotion to customer's cache
76
+ await promoCacheService.set(cacheKey, promotion_id);
77
+ // Return detailed promotion information
78
+ const applicationMethod = promotion.application_method;
79
+ const campaign = promotion.campaign;
80
+ res.status(201).json({
81
+ message: "Promotion collected successfully",
82
+ promotion: {
83
+ id: promotion.id,
84
+ code: promotion.code,
85
+ type: promotion.type,
86
+ is_automatic: promotion.is_automatic,
87
+ campaign: campaign
88
+ ? {
89
+ id: campaign.id,
90
+ name: campaign.name,
91
+ description: campaign.description,
92
+ starts_at: campaign.campaign_identifier?.starts_at,
93
+ ends_at: campaign.campaign_identifier?.ends_at,
94
+ }
95
+ : null,
96
+ application_method: applicationMethod
97
+ ? {
98
+ type: applicationMethod.type,
99
+ target_type: applicationMethod.target_type,
100
+ allocation: applicationMethod.allocation,
101
+ value: applicationMethod.value,
102
+ }
103
+ : null,
104
+ },
105
+ });
106
+ }
107
+ catch (error) {
108
+ console.error("Error collecting promotion:", error);
109
+ res.status(500).json({
110
+ message: "Failed to collect promotion",
111
+ error: error instanceof Error ? error.message : String(error),
112
+ });
113
+ }
114
+ };
115
+ exports.POST = POST;
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb21vdGlvbi1jb2Rlcy9baWRdL2NvbGxlY3Qvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBSTZCO0FBQzdCLHFEQUFvRDtBQUNwRCw0RUFBZ0Y7QUFFaEYsc0VBQTBFO0FBRzFFOzs7Ozs7Ozs7O0dBVUc7QUFDSSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQStCLEVBQy9CLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFeEMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUFFLDBCQUEwQjtTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDMUIsT0FBTyxFQUFFLGdDQUFnQztTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsMERBQTBEO1FBQzFELE1BQU0sa0JBQWtCLEdBQ3RCLHFCQUFTLENBQUMsT0FBTyxDQUEyQixrQ0FBbUIsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxNQUFNLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1lBQ3RFLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixP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
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const framework_1 = require("@medusajs/framework");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const promotion_cache_1 = require("../../../../modules/promotion-cache");
7
+ const usable_promo_1 = require("../../../../modules/usable-promo");
8
+ /**
9
+ * GET handler for fetching a single promotion by ID with full information
10
+ *
11
+ * Returns detailed promotion information including:
12
+ * - Basic promotion details (id, code, type, is_automatic)
13
+ * - Campaign information (name, description, start/end dates)
14
+ * - Application method details (type, value, allocation, rules)
15
+ * - Promotion rules with attributes, operators, and values
16
+ * - Collection status (is_collected flag)
17
+ * - Timestamps (created_at, updated_at)
18
+ */
19
+ const GET = async (req, res) => {
20
+ const { id } = req.params;
21
+ if (!id) {
22
+ return res.status(400).json({
23
+ message: "Promotion ID is required",
24
+ });
25
+ }
26
+ const customerId = req.auth_context.actor_id;
27
+ if (!customerId) {
28
+ return res.status(401).json({
29
+ message: "Customer must be authenticated",
30
+ });
31
+ }
32
+ try {
33
+ // Check if promotion exists and is enabled for collection
34
+ const usablePromoService = framework_1.container.resolve(usable_promo_1.USABLE_PROMO_MODULE);
35
+ const [usablePromotion] = await usablePromoService.listUsablePromotions({
36
+ promotion_id: id,
37
+ });
38
+ if (!usablePromotion) {
39
+ return res.status(404).json({
40
+ message: "Promotion not found or not available for collection",
41
+ });
42
+ }
43
+ if (!usablePromotion.enabled) {
44
+ return res.status(404).json({
45
+ message: "This promotion is not enabled for collection",
46
+ });
47
+ }
48
+ // Get full promotion details with all relations
49
+ const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
50
+ const promotion = await promotionService.retrievePromotion(id, {
51
+ relations: [
52
+ "campaign",
53
+ "application_method",
54
+ "application_method.target_rules",
55
+ "application_method.buy_rules",
56
+ "rules",
57
+ "rules.values",
58
+ ],
59
+ });
60
+ if (!promotion) {
61
+ return res.status(404).json({
62
+ message: "Promotion not found",
63
+ });
64
+ }
65
+ // Check if customer has already collected this promotion
66
+ const promoCacheService = framework_1.container.resolve(promotion_cache_1.PROMOTION_CACHE_MODULE);
67
+ const cacheKey = `user:${customerId}:promotion:${id}`;
68
+ const isCollected = await promoCacheService.exists(cacheKey);
69
+ // Extract detailed information
70
+ const applicationMethod = promotion.application_method;
71
+ const rules = promotion.rules || [];
72
+ const campaign = promotion.campaign;
73
+ const promotionWithFullInfo = {
74
+ id: promotion.id,
75
+ code: promotion.code,
76
+ type: promotion.type,
77
+ is_automatic: promotion.is_automatic,
78
+ campaign: campaign
79
+ ? {
80
+ id: campaign.id,
81
+ name: campaign.name,
82
+ description: campaign.description,
83
+ starts_at: campaign.campaign_identifier?.starts_at,
84
+ ends_at: campaign.campaign_identifier?.ends_at,
85
+ }
86
+ : null,
87
+ application_method: applicationMethod
88
+ ? {
89
+ type: applicationMethod.type,
90
+ target_type: applicationMethod.target_type,
91
+ allocation: applicationMethod.allocation,
92
+ value: applicationMethod.value,
93
+ max_quantity: applicationMethod.max_quantity,
94
+ apply_to_quantity: applicationMethod.apply_to_quantity,
95
+ buy_rules_min_quantity: applicationMethod.buy_rules_min_quantity,
96
+ target_rules: applicationMethod.target_rules || [],
97
+ buy_rules: applicationMethod.buy_rules || [],
98
+ }
99
+ : null,
100
+ rules: rules.map((rule) => ({
101
+ id: rule.id,
102
+ attribute: rule.attribute,
103
+ operator: rule.operator,
104
+ values: rule.values || [],
105
+ })),
106
+ is_collected: isCollected,
107
+ created_at: promotion.created_at,
108
+ updated_at: promotion.updated_at,
109
+ };
110
+ res.status(200).json({
111
+ promotion: promotionWithFullInfo,
112
+ });
113
+ }
114
+ catch (error) {
115
+ console.error("Error fetching promotion:", error);
116
+ res.status(500).json({
117
+ message: "Failed to fetch promotion",
118
+ error: error instanceof Error ? error.message : String(error),
119
+ });
120
+ }
121
+ };
122
+ exports.GET = GET;
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb21vdGlvbi1jb2Rlcy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1EQUk2QjtBQUM3QixxREFBb0Q7QUFDcEQseUVBQTZFO0FBRTdFLG1FQUF1RTtBQUd2RTs7Ozs7Ozs7OztHQVVHO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUErQixFQUMvQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFMUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUUsMEJBQTBCO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztJQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUMxQixPQUFPLEVBQUUsZ0NBQWdDO1NBQzFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCwwREFBMEQ7UUFDMUQsTUFBTSxrQkFBa0IsR0FDdEIscUJBQVMsQ0FBQyxPQUFPLENBQTJCLGtDQUFtQixDQUFDLENBQUM7UUFDbkUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsb0JBQW9CLENBQUM7WUFDdEUsWUFBWSxFQUFFLEVBQUU7U0FDakIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FB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
@@ -75,8 +75,17 @@ const POST = async (req, res) => {
75
75
  };
76
76
  exports.POST = POST;
77
77
  /**
78
- * GET handler for listing all available promotions for collection
79
- * Returns promotions that are enabled for collection but not yet collected by the customer
78
+ * GET handler for listing all available promotions for collection with full information
79
+ *
80
+ * Returns promotions with comprehensive details including:
81
+ * - Basic promotion details (id, code, type, is_automatic)
82
+ * - Campaign information (name, description, start/end dates)
83
+ * - Application method details (type, value, allocation, rules)
84
+ * - Promotion rules with attributes, operators, and values
85
+ * - Collection status (is_collected flag)
86
+ * - Timestamps (created_at, updated_at)
87
+ *
88
+ * Only returns promotions that are enabled for collection but not yet collected by the customer
80
89
  */
81
90
  const GET = async (req, res) => {
82
91
  const customerId = req.auth_context.actor_id;
@@ -98,30 +107,74 @@ const GET = async (req, res) => {
98
107
  });
99
108
  }
100
109
  const promotionIds = usablePromotions.map((up) => up.promotion_id);
101
- // Get full promotion details
110
+ // Get full promotion details with all relations
102
111
  const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
103
112
  const promotions = await promotionService.listPromotions({
104
113
  id: promotionIds,
105
114
  }, {
106
- relations: ["campaign"],
115
+ relations: [
116
+ "campaign",
117
+ "application_method",
118
+ "application_method.target_rules",
119
+ "application_method.buy_rules",
120
+ "rules",
121
+ "rules.values",
122
+ ],
107
123
  });
108
124
  // Check which ones the customer has already collected
109
125
  const promoCacheService = framework_1.container.resolve(promotion_cache_1.PROMOTION_CACHE_MODULE);
110
- const promotionsWithStatus = await Promise.all(promotions.map(async (promotion) => {
126
+ const promotionsWithFullInfo = await Promise.all(promotions.map(async (promotion) => {
111
127
  const cacheKey = `user:${customerId}:promotion:${promotion.id}`;
112
128
  const isCollected = await promoCacheService.exists(cacheKey);
129
+ // Extract detailed information
130
+ const applicationMethod = promotion.application_method;
131
+ const rules = promotion.rules || [];
132
+ const campaign = promotion.campaign;
113
133
  return {
114
- ...promotion,
134
+ id: promotion.id,
135
+ code: promotion.code,
136
+ type: promotion.type,
137
+ is_automatic: promotion.is_automatic,
138
+ campaign: campaign
139
+ ? {
140
+ id: campaign.id,
141
+ name: campaign.name,
142
+ description: campaign.description,
143
+ starts_at: campaign.campaign_identifier?.starts_at,
144
+ ends_at: campaign.campaign_identifier?.ends_at,
145
+ }
146
+ : null,
147
+ application_method: applicationMethod
148
+ ? {
149
+ type: applicationMethod.type,
150
+ target_type: applicationMethod.target_type,
151
+ allocation: applicationMethod.allocation,
152
+ value: applicationMethod.value,
153
+ max_quantity: applicationMethod.max_quantity,
154
+ apply_to_quantity: applicationMethod.apply_to_quantity,
155
+ buy_rules_min_quantity: applicationMethod.buy_rules_min_quantity,
156
+ target_rules: applicationMethod.target_rules || [],
157
+ buy_rules: applicationMethod.buy_rules || [],
158
+ }
159
+ : null,
160
+ rules: rules.map((rule) => ({
161
+ id: rule.id,
162
+ attribute: rule.attribute,
163
+ operator: rule.operator,
164
+ values: rule.values || [],
165
+ })),
115
166
  is_collected: isCollected,
167
+ created_at: promotion.created_at,
168
+ updated_at: promotion.updated_at,
116
169
  };
117
170
  }));
118
171
  // Filter to only show uncollected promotions (optional - depends on UX requirements)
119
172
  // You can remove this filter if you want to show all promotions with collected status
120
- const availablePromotions = promotionsWithStatus.filter((p) => !p.is_collected);
173
+ const availablePromotions = promotionsWithFullInfo.filter((p) => !p.is_collected);
121
174
  res.status(200).json({
122
175
  promotions: availablePromotions,
123
176
  count: availablePromotions.length,
124
- total: promotionsWithStatus.length,
177
+ total: promotionsWithFullInfo.length,
125
178
  });
126
179
  }
127
180
  catch (error) {
@@ -133,4 +186,4 @@ const GET = async (req, res) => {
133
186
  }
134
187
  };
135
188
  exports.GET = GET;
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb21vdGlvbi1jb2Rlcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFLNkI7QUFDN0IscURBQW9EO0FBQ3BELHNFQUEwRTtBQUUxRSxnRUFBb0U7QUFHcEU7OztHQUdHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUErQixFQUMvQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFnQyxDQUFDO0lBRTlELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSwwQkFBMEI7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBRTdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxnQ0FBZ0M7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILDBEQUEwRDtRQUMxRCxNQUFNLGtCQUFrQixHQUN0QixxQkFBUyxDQUFDLE9BQU8sQ0FBMkIsa0NBQW1CLENBQUMsQ0FBQztRQUVuRSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztZQUN0RSxZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxD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
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb21vdGlvbi1jb2Rlcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtREFLNkI7QUFDN0IscURBQW9EO0FBQ3BELHNFQUEwRTtBQUUxRSxnRUFBb0U7QUFHcEU7OztHQUdHO0FBQ0ksTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUErQixFQUMvQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFnQyxDQUFDO0lBRTlELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNsQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSwwQkFBMEI7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBRTdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzFCLE9BQU8sRUFBRSxnQ0FBZ0M7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILDBEQUEwRDtRQUMxRCxNQUFNLGtCQUFrQixHQUN0QixxQkFBUyxDQUFDLE9BQU8sQ0FBMkIsa0NBQW1CLENBQUMsQ0FBQztRQUVuRSxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztZQUN0RSxZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lodashventure/medusa-membership",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -25,8 +25,7 @@
25
25
  ],
26
26
  "scripts": {
27
27
  "build": "medusa plugin:build",
28
- "dev": "medusa plugin:develop",
29
- "prepublishOnly": "medusa plugin:build"
28
+ "dev": "medusa plugin:develop"
30
29
  },
31
30
  "devDependencies": {
32
31
  "@medusajs/admin-sdk": "2.10.0",
@@ -83,4 +82,4 @@
83
82
  "thai-address-autocomplete-react": "^1.2.2",
84
83
  "zod": "^4.1.12"
85
84
  }
86
- }
85
+ }