@xbstracts/medusa-coupons 0.0.3 → 0.0.5

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.
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.normalizeCurrencyCode = normalizeCurrencyCode;
4
7
  exports.normalizeCode = normalizeCode;
@@ -6,6 +9,8 @@ exports.normalizePrefix = normalizePrefix;
6
9
  exports.normalizePositiveInteger = normalizePositiveInteger;
7
10
  exports.normalizeCouponAmounts = normalizeCouponAmounts;
8
11
  exports.resolveAmountForCurrency = resolveAmountForCurrency;
12
+ exports.assertValidExpirationTimezone = assertValidExpirationTimezone;
13
+ exports.normalizeExpirationPolicy = normalizeExpirationPolicy;
9
14
  exports.assertExpirationPolicy = assertExpirationPolicy;
10
15
  exports.validateCouponConfig = validateCouponConfig;
11
16
  exports.computeExpirationDate = computeExpirationDate;
@@ -17,8 +22,50 @@ exports.createEntitlementCode = createEntitlementCode;
17
22
  exports.buildBenefitSnapshot = buildBenefitSnapshot;
18
23
  exports.normalizeConfigInput = normalizeConfigInput;
19
24
  const utils_1 = require("@medusajs/framework/utils");
25
+ const dayjs_1 = __importDefault(require("dayjs"));
26
+ const utc_1 = __importDefault(require("dayjs/plugin/utc"));
27
+ const timezone_1 = __importDefault(require("dayjs/plugin/timezone"));
20
28
  const purchase_conditions_1 = require("./purchase-conditions");
29
+ dayjs_1.default.extend(utc_1.default);
30
+ dayjs_1.default.extend(timezone_1.default);
21
31
  const CURRENCY_RE = /^[a-z]{3}$/i;
32
+ function localDateParts(value) {
33
+ return {
34
+ year: value.year(),
35
+ month: value.month() + 1,
36
+ day: value.date(),
37
+ };
38
+ }
39
+ function addLocalCalendarDays(value, amount) {
40
+ const date = new Date(Date.UTC(value.year, value.month - 1, value.day));
41
+ date.setUTCDate(date.getUTCDate() + amount);
42
+ return {
43
+ year: date.getUTCFullYear(),
44
+ month: date.getUTCMonth() + 1,
45
+ day: date.getUTCDate(),
46
+ };
47
+ }
48
+ function addLocalCalendarMonths(value, amount) {
49
+ const absoluteMonth = value.year * 12 + (value.month - 1) + amount;
50
+ const year = Math.floor(absoluteMonth / 12);
51
+ const month = ((absoluteMonth % 12) + 12) % 12 + 1;
52
+ const lastDay = new Date(Date.UTC(year, month, 0)).getUTCDate();
53
+ return {
54
+ date: {
55
+ year,
56
+ month,
57
+ day: Math.min(value.day, lastDay),
58
+ },
59
+ missingTargetDay: value.day > lastDay,
60
+ };
61
+ }
62
+ function zonedWallClock(value, clock, zone) {
63
+ const pad = (part, length = 2) => String(part).padStart(length, "0");
64
+ return dayjs_1.default.tz(`${pad(value.year, 4)}-${pad(value.month)}-${pad(value.day)}T${pad(clock.hour)}:${pad(clock.minute)}:${pad(clock.second)}.${pad(clock.millisecond, 3)}`, zone);
65
+ }
66
+ function zonedDayEnd(value, zone) {
67
+ return zonedWallClock(value, { hour: 23, minute: 59, second: 59, millisecond: 999 }, zone);
68
+ }
22
69
  function normalizeCurrencyCode(value) {
23
70
  return value ? value.trim().toLowerCase() : null;
24
71
  }
@@ -87,21 +134,79 @@ function resolveAmountForCurrency(value, currencyCode) {
87
134
  }
88
135
  return match;
89
136
  }
90
- function assertExpirationPolicy(value) {
137
+ function assertValidExpirationTimezone(value) {
138
+ const candidate = String(value || "UTC").trim() || "UTC";
139
+ try {
140
+ new Intl.DateTimeFormat("en-US", { timeZone: candidate }).format(new Date(0));
141
+ }
142
+ catch {
143
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Invalid coupon expiration timezone "${candidate}". Use an IANA timezone such as "Asia/Bangkok"`);
144
+ }
145
+ return candidate;
146
+ }
147
+ function normalizeExpirationPolicy(value) {
91
148
  if (!value || typeof value !== "object") {
92
149
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "expiration_policy is required");
93
150
  }
94
151
  const policy = value;
95
152
  if (policy.type === "none") {
96
- return;
153
+ return {
154
+ type: "none",
155
+ ...(policy.timezone
156
+ ? { timezone: assertValidExpirationTimezone(policy.timezone) }
157
+ : {}),
158
+ };
97
159
  }
98
160
  if (policy.type === "duration") {
99
- const days = Number(policy.duration_days);
100
- if (Number.isFinite(days) && days > 0) {
161
+ const legacy = policy.duration === undefined && policy.duration_days !== undefined;
162
+ const duration = Number(legacy ? policy.duration_days : policy.duration);
163
+ const durationUnit = legacy ? "days" : String(policy.duration_unit || "");
164
+ const timePolicy = legacy
165
+ ? "exactly"
166
+ : String(policy.time_policy || "day_end");
167
+ if (Number.isInteger(duration) &&
168
+ duration > 0 &&
169
+ ["days", "months"].includes(durationUnit) &&
170
+ ["exactly", "day_end"].includes(timePolicy)) {
101
171
  if (policy.cap_at && Number.isNaN(Date.parse(String(policy.cap_at)))) {
102
172
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "expiration_policy.cap_at must be a valid date");
103
173
  }
104
- return;
174
+ return {
175
+ type: "duration",
176
+ duration,
177
+ duration_unit: durationUnit,
178
+ time_policy: timePolicy,
179
+ ...(typeof policy.cap_by_campaign === "boolean"
180
+ ? { cap_by_campaign: policy.cap_by_campaign }
181
+ : {}),
182
+ ...(policy.cap_at !== undefined
183
+ ? { cap_at: policy.cap_at ? String(policy.cap_at) : null }
184
+ : {}),
185
+ ...(policy.timezone
186
+ ? { timezone: assertValidExpirationTimezone(policy.timezone) }
187
+ : {}),
188
+ };
189
+ }
190
+ }
191
+ if (policy.type === "month_end") {
192
+ const timePolicy = String(policy.time_policy || "day_end");
193
+ if (["exactly", "day_end"].includes(timePolicy)) {
194
+ if (policy.cap_at && Number.isNaN(Date.parse(String(policy.cap_at)))) {
195
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "expiration_policy.cap_at must be a valid date");
196
+ }
197
+ return {
198
+ type: "month_end",
199
+ time_policy: timePolicy,
200
+ ...(typeof policy.cap_by_campaign === "boolean"
201
+ ? { cap_by_campaign: policy.cap_by_campaign }
202
+ : {}),
203
+ ...(policy.cap_at !== undefined
204
+ ? { cap_at: policy.cap_at ? String(policy.cap_at) : null }
205
+ : {}),
206
+ ...(policy.timezone
207
+ ? { timezone: assertValidExpirationTimezone(policy.timezone) }
208
+ : {}),
209
+ };
105
210
  }
106
211
  }
107
212
  if (policy.type === "fixed") {
@@ -110,10 +215,25 @@ function assertExpirationPolicy(value) {
110
215
  if (policy.cap_at && Number.isNaN(Date.parse(String(policy.cap_at)))) {
111
216
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "expiration_policy.cap_at must be a valid date");
112
217
  }
113
- return;
218
+ return {
219
+ type: "fixed",
220
+ expires_at: expiresAt,
221
+ ...(typeof policy.cap_by_campaign === "boolean"
222
+ ? { cap_by_campaign: policy.cap_by_campaign }
223
+ : {}),
224
+ ...(policy.cap_at !== undefined
225
+ ? { cap_at: policy.cap_at ? String(policy.cap_at) : null }
226
+ : {}),
227
+ ...(policy.timezone
228
+ ? { timezone: assertValidExpirationTimezone(policy.timezone) }
229
+ : {}),
230
+ };
114
231
  }
115
232
  }
116
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "expiration_policy must be { type: 'none' }, { type: 'duration', duration_days }, or { type: 'fixed', expires_at }");
233
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "expiration_policy must be none, month_end, duration with duration/duration_unit/time_policy, or fixed with expires_at");
234
+ }
235
+ function assertExpirationPolicy(value) {
236
+ normalizeExpirationPolicy(value);
117
237
  }
118
238
  function validateCouponConfig(data) {
119
239
  const benefitType = data.benefit_type;
@@ -166,20 +286,54 @@ function validateCouponConfig(data) {
166
286
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "max_issuance_per_order_item must be greater than 0");
167
287
  }
168
288
  }
169
- function computeExpirationDate(policy, now = new Date(), campaignEndsAt) {
170
- if (policy.type === "none") {
289
+ function computeExpirationDate(policy, now = new Date(), campaignEndsAt, defaultTimezone = "UTC") {
290
+ const normalized = normalizeExpirationPolicy(policy);
291
+ if (normalized.type === "none") {
171
292
  return null;
172
293
  }
173
294
  let expiresAt;
174
- if (policy.type === "fixed") {
175
- expiresAt = new Date(policy.expires_at);
295
+ if (normalized.type === "fixed") {
296
+ expiresAt = new Date(normalized.expires_at);
176
297
  }
177
298
  else {
178
- expiresAt = new Date(now);
179
- expiresAt.setUTCDate(expiresAt.getUTCDate() + policy.duration_days);
299
+ const zone = assertValidExpirationTimezone(normalized.timezone || defaultTimezone);
300
+ const issued = (0, dayjs_1.default)(now).tz(zone);
301
+ const issueDate = localDateParts(issued);
302
+ const issueClock = {
303
+ hour: issued.hour(),
304
+ minute: issued.minute(),
305
+ second: issued.second(),
306
+ millisecond: issued.millisecond(),
307
+ };
308
+ if (normalized.type === "month_end") {
309
+ const lastDay = {
310
+ year: issueDate.year,
311
+ month: issueDate.month,
312
+ day: new Date(Date.UTC(issueDate.year, issueDate.month, 0)).getUTCDate(),
313
+ };
314
+ expiresAt = (normalized.time_policy === "day_end"
315
+ ? zonedDayEnd(lastDay, zone)
316
+ : zonedWallClock(lastDay, issueClock, zone).subtract(1, "millisecond")).toDate();
317
+ }
318
+ else if (normalized.duration_unit === "days") {
319
+ const targetDate = addLocalCalendarDays(issueDate, normalized.time_policy === "day_end"
320
+ ? normalized.duration - 1
321
+ : normalized.duration);
322
+ expiresAt = (normalized.time_policy === "day_end"
323
+ ? zonedDayEnd(targetDate, zone)
324
+ : zonedWallClock(targetDate, issueClock, zone).subtract(1, "millisecond")).toDate();
325
+ }
326
+ else {
327
+ const target = addLocalCalendarMonths(issueDate, normalized.duration);
328
+ expiresAt = (normalized.time_policy === "exactly"
329
+ ? zonedWallClock(target.date, issueClock, zone).subtract(1, "millisecond")
330
+ : target.missingTargetDay
331
+ ? zonedDayEnd(target.date, zone)
332
+ : zonedDayEnd(addLocalCalendarDays(target.date, -1), zone)).toDate();
333
+ }
180
334
  }
181
- const capValue = policy.cap_at || campaignEndsAt;
182
- if (policy.cap_by_campaign !== false && capValue) {
335
+ const capValue = normalized.cap_at || campaignEndsAt;
336
+ if (normalized.cap_by_campaign !== false && capValue) {
183
337
  const capAt = new Date(capValue);
184
338
  if (!Number.isNaN(capAt.getTime()) &&
185
339
  capAt.getTime() < expiresAt.getTime()) {
@@ -243,6 +397,7 @@ function mergeVariantConfig(productConfig, variantConfig) {
243
397
  merged.currency_code = normalized.currency_code;
244
398
  merged.code_prefix = normalizePrefix(merged.code_prefix);
245
399
  merged.shared_code = normalizeCode(merged.shared_code);
400
+ merged.expiration_policy = normalized.expiration_policy;
246
401
  validateCouponConfig(merged);
247
402
  return merged;
248
403
  }
@@ -261,7 +416,12 @@ function createEntitlementCode(config) {
261
416
  const timestamp = Date.now().toString(36).toUpperCase();
262
417
  return `${prefix}-${timestamp}-${random}`;
263
418
  }
264
- function buildBenefitSnapshot(config) {
419
+ function buildBenefitSnapshot(config, expirationTimezone) {
420
+ const expirationPolicy = normalizeExpirationPolicy(config.expiration_policy);
421
+ const resolvedExpirationPolicy = {
422
+ ...expirationPolicy,
423
+ timezone: assertValidExpirationTimezone(expirationPolicy.timezone || expirationTimezone || "UTC"),
424
+ };
265
425
  return {
266
426
  benefit_type: config.benefit_type,
267
427
  amounts: config.amounts.map((row) => ({ ...row })),
@@ -270,7 +430,7 @@ function buildBenefitSnapshot(config) {
270
430
  currency_code: config.currency_code,
271
431
  code_strategy: config.code_strategy,
272
432
  shared_code: config.shared_code,
273
- expiration_policy: { ...config.expiration_policy },
433
+ expiration_policy: resolvedExpirationPolicy,
274
434
  max_issuance_per_order_item: config.max_issuance_per_order_item,
275
435
  promotion_status: config.promotion_status,
276
436
  promotion_template: config.promotion_template
@@ -291,6 +451,9 @@ function normalizeConfigInput(input) {
291
451
  const first = amounts[0];
292
452
  return {
293
453
  ...input,
454
+ expiration_policy: input.expiration_policy
455
+ ? normalizeExpirationPolicy(input.expiration_policy)
456
+ : input.expiration_policy,
294
457
  purchase_conditions: (0, purchase_conditions_1.normalizePurchaseConditions)(input.purchase_conditions || []),
295
458
  amounts,
296
459
  amount: first?.amount ?? null,
@@ -299,4 +462,4 @@ function normalizeConfigInput(input) {
299
462
  shared_code: normalizeCode(input.shared_code),
300
463
  };
301
464
  }
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsc0RBRUM7QUFFRCxzQ0FFQztBQUVELDBDQUVDO0FBRUQsNERBT0M7QUFrQ0Qsd0RBUUM7QUF1QkQsNERBa0JDO0FBRUQsd0RBNkNDO0FBRUQsb0RBK0ZDO0FBRUQsc0RBNkJDO0FBRUQsZ0VBUUM7QUFFRCxnREFrRUM7QUFFRCxvREFFQztBQUVELG9EQUVDO0FBRUQsc0RBU0M7QUFFRCxvREFxQkM7QUFFRCxvREFrQkM7QUFsYkQscURBQXVEO0FBVXZELCtEQUc4QjtBQUU5QixNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUE7QUFFakMsU0FBZ0IscUJBQXFCLENBQUMsS0FBcUI7SUFDekQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ2xELENBQUM7QUFFRCxTQUFnQixhQUFhLENBQUMsS0FBcUI7SUFDakQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ2xELENBQUM7QUFFRCxTQUFnQixlQUFlLENBQUMsS0FBcUI7SUFDbkQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0FBQ2xELENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxLQUFjLEVBQUUsUUFBZ0I7SUFDdkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1B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
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFnR0Esc0RBRUM7QUFFRCxzQ0FFQztBQUVELDBDQUVDO0FBRUQsNERBT0M7QUFrQ0Qsd0RBUUM7QUF1QkQsNERBa0JDO0FBRUQsc0VBYUM7QUFFRCw4REE2R0M7QUFFRCx3REFJQztBQUVELG9EQStGQztBQUVELHNEQXlFQztBQUVELGdFQVFDO0FBRUQsZ0RBbUVDO0FBRUQsb0RBRUM7QUFFRCxvREFFQztBQUVELHNEQVNDO0FBRUQsb0RBK0JDO0FBRUQsb0RBcUJDO0FBaHBCRCxxREFBdUQ7QUFDdkQsa0RBQXlCO0FBQ3pCLDJEQUFrQztBQUNsQyxxRUFBNEM7QUFXNUMsK0RBRzhCO0FBRTlCLGVBQUssQ0FBQyxNQUFNLENBQUMsYUFBRyxDQUFDLENBQUE7QUFDakIsZUFBSyxDQUFDLE1BQU0sQ0FBQyxrQkFBUSxDQUFDLENBQUE7QUFFdEIsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFBO0FBZWpDLFNBQVMsY0FBYyxDQUFDLEtBQWtCO0lBQ3hDLE9BQU87UUFDTCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRTtRQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDeEIsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUU7S0FDbEIsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUMzQixLQUFxQixFQUNyQixNQUFjO0lBRWQsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFB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