@modainteract/moda-interact-shared 0.12.0 → 0.12.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/dist/{chunk-JZVD5O5P.js → chunk-LJSKRESH.js} +69 -2
- package/dist/{chunk-JZVD5O5P.js.map → chunk-LJSKRESH.js.map} +1 -1
- package/dist/chunk-RVJPH6B7.js +62 -0
- package/dist/chunk-RVJPH6B7.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +71 -45
- package/dist/recovery-policy.d.ts +36 -0
- package/dist/recovery-policy.js +15 -0
- package/dist/recovery-policy.js.map +1 -0
- package/dist/shopify/index.d.ts +51 -1
- package/dist/shopify/index.js +15 -1
- package/dist/shopify/node.d.ts +7 -1
- package/dist/shopify/node.js +16 -0
- package/dist/shopify/node.js.map +1 -1
- package/package.json +6 -1
|
@@ -278,6 +278,7 @@ function createShopifyOrderCorrelationOrderingKey(input) {
|
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
// src/shopify/queue-contracts.ts
|
|
281
|
+
import { z as z10 } from "zod";
|
|
281
282
|
var SHOPIFY_WEBHOOK_QUEUE_CONTRACTS = {
|
|
282
283
|
CHECKOUT_EVENTS: {
|
|
283
284
|
queueName: "checkout-events",
|
|
@@ -294,8 +295,67 @@ var SHOPIFY_WEBHOOK_QUEUE_CONTRACTS = {
|
|
|
294
295
|
ORDER_EVENTS: {
|
|
295
296
|
queueName: "order-events",
|
|
296
297
|
jobName: "order-completed"
|
|
298
|
+
},
|
|
299
|
+
SHOPIFY_DISCOUNT_SYNC: {
|
|
300
|
+
queueName: "shopify-discount-sync",
|
|
301
|
+
jobName: "reconcile-shopify-discounts"
|
|
297
302
|
}
|
|
298
303
|
};
|
|
304
|
+
var SHOPIFY_DISCOUNT_SYNC_REASONS = [
|
|
305
|
+
"SUBSCRIPTION_ACTIVATED",
|
|
306
|
+
"REINSTALL_RECONCILED",
|
|
307
|
+
"SCOPES_UPDATED",
|
|
308
|
+
"DISCOUNT_WEBHOOK"
|
|
309
|
+
];
|
|
310
|
+
var SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS = [
|
|
311
|
+
"discounts/create",
|
|
312
|
+
"discounts/update",
|
|
313
|
+
"discounts/delete",
|
|
314
|
+
"discounts/redeemcode_added",
|
|
315
|
+
"discounts/redeemcode_removed"
|
|
316
|
+
];
|
|
317
|
+
var ShopifyDiscountSyncReasonSchema = z10.enum(SHOPIFY_DISCOUNT_SYNC_REASONS);
|
|
318
|
+
var ShopifyDiscountSyncWebhookTopicSchema = z10.enum(SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS);
|
|
319
|
+
var ShopifyDiscountSyncJobSchema = z10.object({
|
|
320
|
+
schemaVersion: z10.literal(1),
|
|
321
|
+
shopId: z10.string().trim().min(1).max(128),
|
|
322
|
+
shopDomain: z10.string().trim().min(1).max(512),
|
|
323
|
+
reason: ShopifyDiscountSyncReasonSchema,
|
|
324
|
+
requestedAt: z10.iso.datetime({ offset: true }),
|
|
325
|
+
deliveryId: z10.string().trim().min(1).nullable(),
|
|
326
|
+
webhookTopic: ShopifyDiscountSyncWebhookTopicSchema.nullable()
|
|
327
|
+
}).strict().superRefine((value, ctx) => {
|
|
328
|
+
if (value.reason === "DISCOUNT_WEBHOOK") {
|
|
329
|
+
if (!value.deliveryId || value.deliveryId.trim().length === 0) {
|
|
330
|
+
ctx.addIssue({
|
|
331
|
+
code: "custom",
|
|
332
|
+
path: ["deliveryId"],
|
|
333
|
+
message: "deliveryId is required when reason is DISCOUNT_WEBHOOK"
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
if (value.webhookTopic === null) {
|
|
337
|
+
ctx.addIssue({
|
|
338
|
+
code: "custom",
|
|
339
|
+
path: ["webhookTopic"],
|
|
340
|
+
message: "webhookTopic is required when reason is DISCOUNT_WEBHOOK"
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
} else {
|
|
344
|
+
if (value.webhookTopic !== null) {
|
|
345
|
+
ctx.addIssue({
|
|
346
|
+
code: "custom",
|
|
347
|
+
path: ["webhookTopic"],
|
|
348
|
+
message: "webhookTopic must be null when reason is not DISCOUNT_WEBHOOK"
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
function parseShopifyDiscountSyncJob(input) {
|
|
354
|
+
return ShopifyDiscountSyncJobSchema.parse(input);
|
|
355
|
+
}
|
|
356
|
+
function safeParseShopifyDiscountSyncJob(input) {
|
|
357
|
+
return ShopifyDiscountSyncJobSchema.safeParse(input);
|
|
358
|
+
}
|
|
299
359
|
|
|
300
360
|
export {
|
|
301
361
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1,
|
|
@@ -340,6 +400,13 @@ export {
|
|
|
340
400
|
createShopifyPendingRecoveryOrderingKey,
|
|
341
401
|
createShopifyCartActivityOrderingKey,
|
|
342
402
|
createShopifyOrderCorrelationOrderingKey,
|
|
343
|
-
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS
|
|
403
|
+
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
404
|
+
SHOPIFY_DISCOUNT_SYNC_REASONS,
|
|
405
|
+
SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS,
|
|
406
|
+
ShopifyDiscountSyncReasonSchema,
|
|
407
|
+
ShopifyDiscountSyncWebhookTopicSchema,
|
|
408
|
+
ShopifyDiscountSyncJobSchema,
|
|
409
|
+
parseShopifyDiscountSyncJob,
|
|
410
|
+
safeParseShopifyDiscountSyncJob
|
|
344
411
|
};
|
|
345
|
-
//# sourceMappingURL=chunk-
|
|
412
|
+
//# sourceMappingURL=chunk-LJSKRESH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/shopify/constants.ts","../src/shopify/common.schema.ts","../src/shopify/v1/checkout-observed.schema.ts","../src/shopify/v1/order-completed.schema.ts","../src/shopify/v1/commerce-event.schema.ts","../src/shopify/v2/checkout-created.schema.ts","../src/shopify/v2/checkout-updated.schema.ts","../src/shopify/v2/cart-activity.schema.ts","../src/shopify/v2/order-completed.schema.ts","../src/shopify/v2/recovery-event.schema.ts","../src/shopify/queue-contracts.ts"],"sourcesContent":["export const SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1 = 1 as const;\nexport const SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2 = 2 as const;\n\n// Backward-compatible alias for existing v1 callers.\nexport const SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION =\n SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1;\n\nexport const SHOPIFY_COMMERCE_EVENT_TYPES = {\n CHECKOUT_OBSERVED: \"checkout.observed\",\n ORDER_COMPLETED: \"order.completed\",\n} as const;\n\nexport const SHOPIFY_RECOVERY_EVENT_TYPES_V2 = {\n CART_ACTIVITY: \"cart.activity\",\n CHECKOUT_CREATED: \"checkout.created\",\n CHECKOUT_UPDATED: \"checkout.updated\",\n ORDER_COMPLETED: \"order.completed\",\n} as const;\n\nexport const SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS = {\n CHECKOUT_EVENTS: \"CHECKOUT_EVENTS\",\n ORDER_EVENTS: \"ORDER_EVENTS\",\n} as const;\n","import { z } from \"zod\";\n\n/**\n * Reasonable upper bounds for externally controlled (Shopify-originated) strings.\n * These exist to keep queue messages small and predictable, not to validate business rules.\n */\nconst MAX_ID_LENGTH = 100;\nconst MAX_SHORT_TEXT_LENGTH = 320;\nconst MAX_TITLE_LENGTH = 500;\nconst MAX_URL_LENGTH = 2048;\nconst MAX_LINE_ITEMS = 250;\n\nconst decimalStringPattern = /^-?\\d+(\\.\\d+)?$/;\n\n/** Decimal amount encoded as a string; never a JS number to avoid float precision loss. */\nconst DecimalStringSchema = z\n .string()\n .min(1)\n .max(32)\n .regex(decimalStringPattern, \"must be a decimal string, e.g. \\\"12.34\\\"\");\n\nexport const ShopifyTenantSchema = z\n .object({\n shopId: z.string().min(1).max(MAX_ID_LENGTH),\n shopDomain: z\n .string()\n .min(1)\n .max(MAX_SHORT_TEXT_LENGTH)\n .toLowerCase()\n .trim(),\n })\n .strict();\n\nexport type ShopifyTenant = z.infer<typeof ShopifyTenantSchema>;\n\nexport const ShopifyCustomerReferenceSchema = z\n .object({\n shopifyCustomerId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n email: z.string().email().max(MAX_SHORT_TEXT_LENGTH).nullable(),\n phone: z.string().min(1).max(64).nullable(),\n firstName: z.string().min(1).max(MAX_TITLE_LENGTH).nullable(),\n lastName: z.string().min(1).max(MAX_TITLE_LENGTH).nullable(),\n })\n .strict();\n\nexport type ShopifyCustomerReference = z.infer<typeof ShopifyCustomerReferenceSchema>;\n\nexport const ShopifyMoneySchema = z\n .object({\n amount: DecimalStringSchema,\n currencyCode: z\n .string()\n .regex(/^[A-Z]{3}$/, \"must be an uppercase three-letter currency code\"),\n })\n .strict();\n\nexport type ShopifyMoney = z.infer<typeof ShopifyMoneySchema>;\n\n/**\n * Fields limited to what checkout recovery and customer-facing basket context require.\n * Line-item arrays are bounded (see MAX_LINE_ITEMS) to prevent unexpectedly large queue messages.\n */\nexport const ShopifyCheckoutLineItemSchema = z\n .object({\n lineItemId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n variantId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n productId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n title: z.string().min(1).max(MAX_TITLE_LENGTH),\n variantTitle: z.string().min(1).max(MAX_TITLE_LENGTH).nullable(),\n quantity: z.number().int().positive(),\n unitPrice: DecimalStringSchema.nullable(),\n sku: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n })\n .strict();\n\nexport type ShopifyCheckoutLineItem = z.infer<typeof ShopifyCheckoutLineItemSchema>;\n\nexport const ShopifyCheckoutLineItemsSchema = z\n .array(ShopifyCheckoutLineItemSchema)\n .max(MAX_LINE_ITEMS);\n\nexport { MAX_URL_LENGTH, MAX_LINE_ITEMS };\n","import { z } from \"zod\";\nimport {\n MAX_URL_LENGTH,\n ShopifyCheckoutLineItemsSchema,\n ShopifyCustomerReferenceSchema,\n ShopifyMoneySchema,\n} from \"../common.schema.js\";\n\nexport const CheckoutObservedPayloadSchema = z\n .object({\n checkoutToken: z.string().min(1),\n cartToken: z.string().min(1).nullable(),\n checkoutUrl: z.url().max(MAX_URL_LENGTH).nullable(),\n customer: ShopifyCustomerReferenceSchema.nullable(),\n total: ShopifyMoneySchema.nullable(),\n lineItems: ShopifyCheckoutLineItemsSchema,\n checkoutCreatedAt: z.iso.datetime().nullable(),\n checkoutUpdatedAt: z.iso.datetime().nullable(),\n completedAt: z.iso.datetime().nullable(),\n })\n .strict();\n\nexport type CheckoutObservedPayload = z.infer<typeof CheckoutObservedPayloadSchema>;\n","import { z } from \"zod\";\nimport { ShopifyMoneySchema } from \"../common.schema.js\";\n\nexport const OrderCompletedPayloadSchema = z\n .object({\n orderId: z.string().min(1),\n checkoutToken: z.string().min(1).nullable(),\n shopifyCustomerId: z.string().min(1).nullable(),\n total: ShopifyMoneySchema.nullable(),\n completedAt: z.iso.datetime(),\n })\n .strict();\n\nexport type OrderCompletedPayload = z.infer<typeof OrderCompletedPayloadSchema>;\n","import { z } from \"zod\";\nimport {\n SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION,\n SHOPIFY_COMMERCE_EVENT_TYPES,\n} from \"../constants.js\";\nimport { ShopifyTenantSchema } from \"../common.schema.js\";\nimport { CheckoutObservedPayloadSchema } from \"./checkout-observed.schema.js\";\nimport { OrderCompletedPayloadSchema } from \"./order-completed.schema.js\";\n\nconst ShopifyCommerceEventBaseSchema = z.object({\n schemaVersion: z.literal(SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION),\n receiptId: z.string().min(1),\n deliveryId: z.string().min(1),\n eventId: z.string().min(1).nullable(),\n source: z.literal(\"shopify\"),\n providerTopic: z.string().min(1),\n tenant: ShopifyTenantSchema,\n occurredAt: z.iso.datetime().nullable(),\n receivedAt: z.iso.datetime(),\n traceId: z.string().min(1),\n orderingKey: z.string().min(1),\n});\n\nexport const ShopifyCheckoutObservedEventSchema = ShopifyCommerceEventBaseSchema.extend({\n eventType: z.literal(SHOPIFY_COMMERCE_EVENT_TYPES.CHECKOUT_OBSERVED),\n payload: CheckoutObservedPayloadSchema,\n}).strict();\n\nexport type ShopifyCheckoutObservedEvent = z.infer<\n typeof ShopifyCheckoutObservedEventSchema\n>;\n\nexport const ShopifyOrderCompletedEventSchema = ShopifyCommerceEventBaseSchema.extend({\n eventType: z.literal(SHOPIFY_COMMERCE_EVENT_TYPES.ORDER_COMPLETED),\n payload: OrderCompletedPayloadSchema,\n}).strict();\n\nexport type ShopifyOrderCompletedEvent = z.infer<\n typeof ShopifyOrderCompletedEventSchema\n>;\n\nexport const ShopifyCommerceEventSchema = z.discriminatedUnion(\"eventType\", [\n ShopifyCheckoutObservedEventSchema,\n ShopifyOrderCompletedEventSchema,\n]);\n\nexport type ShopifyCommerceEvent = z.infer<typeof ShopifyCommerceEventSchema>;\nexport type ShopifyCommerceEventType = ShopifyCommerceEvent[\"eventType\"];\n\nexport function parseShopifyCommerceEvent(input: unknown): ShopifyCommerceEvent {\n return ShopifyCommerceEventSchema.parse(input);\n}\n\nexport function safeParseShopifyCommerceEvent(input: unknown) {\n return ShopifyCommerceEventSchema.safeParse(input);\n}\n\nexport function isCheckoutObservedEvent(\n event: ShopifyCommerceEvent,\n): event is ShopifyCheckoutObservedEvent {\n return event.eventType === SHOPIFY_COMMERCE_EVENT_TYPES.CHECKOUT_OBSERVED;\n}\n\nexport function isOrderCompletedEvent(\n event: ShopifyCommerceEvent,\n): event is ShopifyOrderCompletedEvent {\n return event.eventType === SHOPIFY_COMMERCE_EVENT_TYPES.ORDER_COMPLETED;\n}\n\n/**\n * Stable ordering key for a shop/checkout pair.\n * Checkout and order events for the same checkout must share this key, so\n * deliveryId is intentionally excluded.\n */\nexport function createShopifyCommerceOrderingKey(\n shopId: string,\n checkoutToken: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyCommerceOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof checkoutToken !== \"string\" || checkoutToken.length === 0) {\n throw new Error(\n \"createShopifyCommerceOrderingKey: checkoutToken must be a non-empty string\",\n );\n }\n\n return `${shopId}:${checkoutToken}`;\n}\n\nexport function createShopifyOrderOrderingKey(\n shopId: string,\n orderId: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyOrderOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof orderId !== \"string\" || orderId.length === 0) {\n throw new Error(\n \"createShopifyOrderOrderingKey: orderId must be a non-empty string\",\n );\n }\n\n return `${shopId}:${orderId}`;\n}","import { z } from \"zod\";\nimport { MAX_URL_LENGTH } from \"../common.schema.js\";\n\nexport const CheckoutCreatedPayloadV2Schema = z\n .object({\n checkoutToken: z.string().min(1),\n cartToken: z.string().min(1).nullable(),\n abandonedCheckoutUrl: z.url().max(MAX_URL_LENGTH).nullable(),\n checkoutCreatedAt: z.iso.datetime().nullable(),\n })\n .strict();\n\nexport type CheckoutCreatedPayloadV2 = z.infer<\n typeof CheckoutCreatedPayloadV2Schema\n>;\n","import { z } from \"zod\";\n\nexport const CheckoutUpdatedPayloadV2Schema = z\n .object({\n checkoutToken: z.string().min(1),\n })\n .strict();\n\nexport type CheckoutUpdatedPayloadV2 = z.infer<\n typeof CheckoutUpdatedPayloadV2Schema\n>;\n","import { z } from \"zod\";\n\nexport const ShopifyCartActivityPayloadV2Schema = z\n .object({\n cartToken: z.string().min(1),\n isEmpty: z.boolean().nullable(),\n })\n .strict();\n\nexport type ShopifyCartActivityPayloadV2 = z.infer<\n typeof ShopifyCartActivityPayloadV2Schema\n>;","import { z } from \"zod\";\n\nexport const OrderCompletedPayloadV2Schema = z\n .object({\n orderId: z.string().min(1),\n checkoutToken: z.string().min(1).nullable(),\n cartToken: z.string().min(1).nullable(),\n completedAt: z.iso.datetime(),\n })\n .strict();\n\nexport type OrderCompletedPayloadV2 = z.infer<typeof OrderCompletedPayloadV2Schema>;\n","import { z } from \"zod\";\nimport {\n SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,\n SHOPIFY_RECOVERY_EVENT_TYPES_V2,\n} from \"../constants.js\";\nimport { ShopifyTenantSchema } from \"../common.schema.js\";\nimport { InternationalContextSchema } from \"../../internationalization.js\";\nimport { CheckoutCreatedPayloadV2Schema } from \"./checkout-created.schema.js\";\nimport { CheckoutUpdatedPayloadV2Schema } from \"./checkout-updated.schema.js\";\nimport { OrderCompletedPayloadV2Schema } from \"./order-completed.schema.js\";\nimport { ShopifyCartActivityPayloadV2Schema } from \"./cart-activity.schema.js\";\n\nconst ShopifyRecoveryEventBaseV2Schema = z\n .object({\n schemaVersion: z.literal(SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2),\n receiptId: z.string().min(1),\n deliveryId: z.string().min(1),\n eventId: z.string().min(1).nullable(),\n source: z.literal(\"shopify\"),\n providerTopic: z.string().min(1),\n tenant: ShopifyTenantSchema,\n occurredAt: z.iso.datetime().nullable(),\n receivedAt: z.iso.datetime(),\n traceId: z.string().min(1),\n orderingKey: z.string().min(1),\n internationalContext: InternationalContextSchema.optional(),\n })\n .strict();\n\nexport const ShopifyCheckoutCreatedEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_CREATED),\n payload: CheckoutCreatedPayloadV2Schema,\n }).strict();\n\nexport type ShopifyCheckoutCreatedEventV2 = z.infer<\n typeof ShopifyCheckoutCreatedEventV2Schema\n>;\n\nexport const ShopifyCartActivityEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.CART_ACTIVITY),\n payload: ShopifyCartActivityPayloadV2Schema,\n }).strict();\n\nexport type ShopifyCartActivityEventV2 = z.infer<\n typeof ShopifyCartActivityEventV2Schema\n>;\n\nexport const ShopifyCheckoutUpdatedEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_UPDATED),\n payload: CheckoutUpdatedPayloadV2Schema,\n }).strict();\n\nexport type ShopifyCheckoutUpdatedEventV2 = z.infer<\n typeof ShopifyCheckoutUpdatedEventV2Schema\n>;\n\nexport const ShopifyOrderCompletedEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.ORDER_COMPLETED),\n payload: OrderCompletedPayloadV2Schema,\n }).strict();\n\nexport type ShopifyOrderCompletedEventV2 = z.infer<\n typeof ShopifyOrderCompletedEventV2Schema\n>;\n\nexport const ShopifyRecoveryEventV2Schema = z.discriminatedUnion(\"eventType\", [\n ShopifyCartActivityEventV2Schema,\n ShopifyCheckoutCreatedEventV2Schema,\n ShopifyCheckoutUpdatedEventV2Schema,\n ShopifyOrderCompletedEventV2Schema,\n]);\n\nexport type ShopifyRecoveryEventV2 = z.infer<typeof ShopifyRecoveryEventV2Schema>;\nexport type ShopifyRecoveryEventTypeV2 = ShopifyRecoveryEventV2[\"eventType\"];\n\nexport function parseShopifyRecoveryEventV2(input: unknown): ShopifyRecoveryEventV2 {\n return ShopifyRecoveryEventV2Schema.parse(input);\n}\n\nexport function safeParseShopifyRecoveryEventV2(input: unknown) {\n return ShopifyRecoveryEventV2Schema.safeParse(input);\n}\n\nexport function isCheckoutCreatedEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyCheckoutCreatedEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_CREATED;\n}\n\nexport function isCartActivityEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyCartActivityEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.CART_ACTIVITY;\n}\n\nexport function isCheckoutUpdatedEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyCheckoutUpdatedEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_UPDATED;\n}\n\nexport function isOrderCompletedEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyOrderCompletedEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.ORDER_COMPLETED;\n}\n\nexport function createShopifyPendingRecoveryOrderingKey(\n shopId: string,\n checkoutToken: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyPendingRecoveryOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof checkoutToken !== \"string\" || checkoutToken.length === 0) {\n throw new Error(\n \"createShopifyPendingRecoveryOrderingKey: checkoutToken must be a non-empty string\",\n );\n }\n\n return `${shopId}:${checkoutToken}`;\n}\n\nexport function createShopifyCartActivityOrderingKey(\n shopId: string,\n cartToken: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyCartActivityOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof cartToken !== \"string\" || cartToken.length === 0) {\n throw new Error(\n \"createShopifyCartActivityOrderingKey: cartToken must be a non-empty string\",\n );\n }\n\n return `cart:${shopId.length}:${shopId}:${cartToken.length}:${cartToken}`;\n}\n\nexport function createShopifyOrderCorrelationOrderingKey(input: {\n shopId: string;\n orderId: string;\n checkoutToken: string | null;\n}): string {\n if (input.checkoutToken) {\n return createShopifyPendingRecoveryOrderingKey(input.shopId, input.checkoutToken);\n }\n\n if (typeof input.orderId !== \"string\" || input.orderId.length === 0) {\n throw new Error(\n \"createShopifyOrderCorrelationOrderingKey: orderId must be a non-empty string\",\n );\n }\n\n if (typeof input.shopId !== \"string\" || input.shopId.length === 0) {\n throw new Error(\n \"createShopifyOrderCorrelationOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n return `${input.shopId}:${input.orderId}`;\n}\n","export const SHOPIFY_WEBHOOK_QUEUE_CONTRACTS = {\n CHECKOUT_EVENTS: {\n queueName: \"checkout-events\",\n jobName: \"checkout-created\",\n },\n CHECKOUT_UPDATED_EVENTS: {\n queueName: \"checkout-events\",\n jobName: \"checkout-updated\",\n },\n CART_ACTIVITY_EVENTS: {\n queueName: \"checkout-events\",\n jobName: \"cart-activity\",\n },\n ORDER_EVENTS: {\n queueName: \"order-events\",\n jobName: \"order-completed\",\n },\n} as const;\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z","z","z"]}
|
|
1
|
+
{"version":3,"sources":["../src/shopify/constants.ts","../src/shopify/common.schema.ts","../src/shopify/v1/checkout-observed.schema.ts","../src/shopify/v1/order-completed.schema.ts","../src/shopify/v1/commerce-event.schema.ts","../src/shopify/v2/checkout-created.schema.ts","../src/shopify/v2/checkout-updated.schema.ts","../src/shopify/v2/cart-activity.schema.ts","../src/shopify/v2/order-completed.schema.ts","../src/shopify/v2/recovery-event.schema.ts","../src/shopify/queue-contracts.ts"],"sourcesContent":["export const SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1 = 1 as const;\nexport const SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2 = 2 as const;\n\n// Backward-compatible alias for existing v1 callers.\nexport const SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION =\n SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1;\n\nexport const SHOPIFY_COMMERCE_EVENT_TYPES = {\n CHECKOUT_OBSERVED: \"checkout.observed\",\n ORDER_COMPLETED: \"order.completed\",\n} as const;\n\nexport const SHOPIFY_RECOVERY_EVENT_TYPES_V2 = {\n CART_ACTIVITY: \"cart.activity\",\n CHECKOUT_CREATED: \"checkout.created\",\n CHECKOUT_UPDATED: \"checkout.updated\",\n ORDER_COMPLETED: \"order.completed\",\n} as const;\n\nexport const SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS = {\n CHECKOUT_EVENTS: \"CHECKOUT_EVENTS\",\n ORDER_EVENTS: \"ORDER_EVENTS\",\n} as const;\n","import { z } from \"zod\";\n\n/**\n * Reasonable upper bounds for externally controlled (Shopify-originated) strings.\n * These exist to keep queue messages small and predictable, not to validate business rules.\n */\nconst MAX_ID_LENGTH = 100;\nconst MAX_SHORT_TEXT_LENGTH = 320;\nconst MAX_TITLE_LENGTH = 500;\nconst MAX_URL_LENGTH = 2048;\nconst MAX_LINE_ITEMS = 250;\n\nconst decimalStringPattern = /^-?\\d+(\\.\\d+)?$/;\n\n/** Decimal amount encoded as a string; never a JS number to avoid float precision loss. */\nconst DecimalStringSchema = z\n .string()\n .min(1)\n .max(32)\n .regex(decimalStringPattern, \"must be a decimal string, e.g. \\\"12.34\\\"\");\n\nexport const ShopifyTenantSchema = z\n .object({\n shopId: z.string().min(1).max(MAX_ID_LENGTH),\n shopDomain: z\n .string()\n .min(1)\n .max(MAX_SHORT_TEXT_LENGTH)\n .toLowerCase()\n .trim(),\n })\n .strict();\n\nexport type ShopifyTenant = z.infer<typeof ShopifyTenantSchema>;\n\nexport const ShopifyCustomerReferenceSchema = z\n .object({\n shopifyCustomerId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n email: z.string().email().max(MAX_SHORT_TEXT_LENGTH).nullable(),\n phone: z.string().min(1).max(64).nullable(),\n firstName: z.string().min(1).max(MAX_TITLE_LENGTH).nullable(),\n lastName: z.string().min(1).max(MAX_TITLE_LENGTH).nullable(),\n })\n .strict();\n\nexport type ShopifyCustomerReference = z.infer<typeof ShopifyCustomerReferenceSchema>;\n\nexport const ShopifyMoneySchema = z\n .object({\n amount: DecimalStringSchema,\n currencyCode: z\n .string()\n .regex(/^[A-Z]{3}$/, \"must be an uppercase three-letter currency code\"),\n })\n .strict();\n\nexport type ShopifyMoney = z.infer<typeof ShopifyMoneySchema>;\n\n/**\n * Fields limited to what checkout recovery and customer-facing basket context require.\n * Line-item arrays are bounded (see MAX_LINE_ITEMS) to prevent unexpectedly large queue messages.\n */\nexport const ShopifyCheckoutLineItemSchema = z\n .object({\n lineItemId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n variantId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n productId: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n title: z.string().min(1).max(MAX_TITLE_LENGTH),\n variantTitle: z.string().min(1).max(MAX_TITLE_LENGTH).nullable(),\n quantity: z.number().int().positive(),\n unitPrice: DecimalStringSchema.nullable(),\n sku: z.string().min(1).max(MAX_ID_LENGTH).nullable(),\n })\n .strict();\n\nexport type ShopifyCheckoutLineItem = z.infer<typeof ShopifyCheckoutLineItemSchema>;\n\nexport const ShopifyCheckoutLineItemsSchema = z\n .array(ShopifyCheckoutLineItemSchema)\n .max(MAX_LINE_ITEMS);\n\nexport { MAX_URL_LENGTH, MAX_LINE_ITEMS };\n","import { z } from \"zod\";\nimport {\n MAX_URL_LENGTH,\n ShopifyCheckoutLineItemsSchema,\n ShopifyCustomerReferenceSchema,\n ShopifyMoneySchema,\n} from \"../common.schema.js\";\n\nexport const CheckoutObservedPayloadSchema = z\n .object({\n checkoutToken: z.string().min(1),\n cartToken: z.string().min(1).nullable(),\n checkoutUrl: z.url().max(MAX_URL_LENGTH).nullable(),\n customer: ShopifyCustomerReferenceSchema.nullable(),\n total: ShopifyMoneySchema.nullable(),\n lineItems: ShopifyCheckoutLineItemsSchema,\n checkoutCreatedAt: z.iso.datetime().nullable(),\n checkoutUpdatedAt: z.iso.datetime().nullable(),\n completedAt: z.iso.datetime().nullable(),\n })\n .strict();\n\nexport type CheckoutObservedPayload = z.infer<typeof CheckoutObservedPayloadSchema>;\n","import { z } from \"zod\";\nimport { ShopifyMoneySchema } from \"../common.schema.js\";\n\nexport const OrderCompletedPayloadSchema = z\n .object({\n orderId: z.string().min(1),\n checkoutToken: z.string().min(1).nullable(),\n shopifyCustomerId: z.string().min(1).nullable(),\n total: ShopifyMoneySchema.nullable(),\n completedAt: z.iso.datetime(),\n })\n .strict();\n\nexport type OrderCompletedPayload = z.infer<typeof OrderCompletedPayloadSchema>;\n","import { z } from \"zod\";\nimport {\n SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION,\n SHOPIFY_COMMERCE_EVENT_TYPES,\n} from \"../constants.js\";\nimport { ShopifyTenantSchema } from \"../common.schema.js\";\nimport { CheckoutObservedPayloadSchema } from \"./checkout-observed.schema.js\";\nimport { OrderCompletedPayloadSchema } from \"./order-completed.schema.js\";\n\nconst ShopifyCommerceEventBaseSchema = z.object({\n schemaVersion: z.literal(SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION),\n receiptId: z.string().min(1),\n deliveryId: z.string().min(1),\n eventId: z.string().min(1).nullable(),\n source: z.literal(\"shopify\"),\n providerTopic: z.string().min(1),\n tenant: ShopifyTenantSchema,\n occurredAt: z.iso.datetime().nullable(),\n receivedAt: z.iso.datetime(),\n traceId: z.string().min(1),\n orderingKey: z.string().min(1),\n});\n\nexport const ShopifyCheckoutObservedEventSchema = ShopifyCommerceEventBaseSchema.extend({\n eventType: z.literal(SHOPIFY_COMMERCE_EVENT_TYPES.CHECKOUT_OBSERVED),\n payload: CheckoutObservedPayloadSchema,\n}).strict();\n\nexport type ShopifyCheckoutObservedEvent = z.infer<\n typeof ShopifyCheckoutObservedEventSchema\n>;\n\nexport const ShopifyOrderCompletedEventSchema = ShopifyCommerceEventBaseSchema.extend({\n eventType: z.literal(SHOPIFY_COMMERCE_EVENT_TYPES.ORDER_COMPLETED),\n payload: OrderCompletedPayloadSchema,\n}).strict();\n\nexport type ShopifyOrderCompletedEvent = z.infer<\n typeof ShopifyOrderCompletedEventSchema\n>;\n\nexport const ShopifyCommerceEventSchema = z.discriminatedUnion(\"eventType\", [\n ShopifyCheckoutObservedEventSchema,\n ShopifyOrderCompletedEventSchema,\n]);\n\nexport type ShopifyCommerceEvent = z.infer<typeof ShopifyCommerceEventSchema>;\nexport type ShopifyCommerceEventType = ShopifyCommerceEvent[\"eventType\"];\n\nexport function parseShopifyCommerceEvent(input: unknown): ShopifyCommerceEvent {\n return ShopifyCommerceEventSchema.parse(input);\n}\n\nexport function safeParseShopifyCommerceEvent(input: unknown) {\n return ShopifyCommerceEventSchema.safeParse(input);\n}\n\nexport function isCheckoutObservedEvent(\n event: ShopifyCommerceEvent,\n): event is ShopifyCheckoutObservedEvent {\n return event.eventType === SHOPIFY_COMMERCE_EVENT_TYPES.CHECKOUT_OBSERVED;\n}\n\nexport function isOrderCompletedEvent(\n event: ShopifyCommerceEvent,\n): event is ShopifyOrderCompletedEvent {\n return event.eventType === SHOPIFY_COMMERCE_EVENT_TYPES.ORDER_COMPLETED;\n}\n\n/**\n * Stable ordering key for a shop/checkout pair.\n * Checkout and order events for the same checkout must share this key, so\n * deliveryId is intentionally excluded.\n */\nexport function createShopifyCommerceOrderingKey(\n shopId: string,\n checkoutToken: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyCommerceOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof checkoutToken !== \"string\" || checkoutToken.length === 0) {\n throw new Error(\n \"createShopifyCommerceOrderingKey: checkoutToken must be a non-empty string\",\n );\n }\n\n return `${shopId}:${checkoutToken}`;\n}\n\nexport function createShopifyOrderOrderingKey(\n shopId: string,\n orderId: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyOrderOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof orderId !== \"string\" || orderId.length === 0) {\n throw new Error(\n \"createShopifyOrderOrderingKey: orderId must be a non-empty string\",\n );\n }\n\n return `${shopId}:${orderId}`;\n}","import { z } from \"zod\";\nimport { MAX_URL_LENGTH } from \"../common.schema.js\";\n\nexport const CheckoutCreatedPayloadV2Schema = z\n .object({\n checkoutToken: z.string().min(1),\n cartToken: z.string().min(1).nullable(),\n abandonedCheckoutUrl: z.url().max(MAX_URL_LENGTH).nullable(),\n checkoutCreatedAt: z.iso.datetime().nullable(),\n })\n .strict();\n\nexport type CheckoutCreatedPayloadV2 = z.infer<\n typeof CheckoutCreatedPayloadV2Schema\n>;\n","import { z } from \"zod\";\n\nexport const CheckoutUpdatedPayloadV2Schema = z\n .object({\n checkoutToken: z.string().min(1),\n })\n .strict();\n\nexport type CheckoutUpdatedPayloadV2 = z.infer<\n typeof CheckoutUpdatedPayloadV2Schema\n>;\n","import { z } from \"zod\";\n\nexport const ShopifyCartActivityPayloadV2Schema = z\n .object({\n cartToken: z.string().min(1),\n isEmpty: z.boolean().nullable(),\n })\n .strict();\n\nexport type ShopifyCartActivityPayloadV2 = z.infer<\n typeof ShopifyCartActivityPayloadV2Schema\n>;","import { z } from \"zod\";\n\nexport const OrderCompletedPayloadV2Schema = z\n .object({\n orderId: z.string().min(1),\n checkoutToken: z.string().min(1).nullable(),\n cartToken: z.string().min(1).nullable(),\n completedAt: z.iso.datetime(),\n })\n .strict();\n\nexport type OrderCompletedPayloadV2 = z.infer<typeof OrderCompletedPayloadV2Schema>;\n","import { z } from \"zod\";\nimport {\n SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,\n SHOPIFY_RECOVERY_EVENT_TYPES_V2,\n} from \"../constants.js\";\nimport { ShopifyTenantSchema } from \"../common.schema.js\";\nimport { InternationalContextSchema } from \"../../internationalization.js\";\nimport { CheckoutCreatedPayloadV2Schema } from \"./checkout-created.schema.js\";\nimport { CheckoutUpdatedPayloadV2Schema } from \"./checkout-updated.schema.js\";\nimport { OrderCompletedPayloadV2Schema } from \"./order-completed.schema.js\";\nimport { ShopifyCartActivityPayloadV2Schema } from \"./cart-activity.schema.js\";\n\nconst ShopifyRecoveryEventBaseV2Schema = z\n .object({\n schemaVersion: z.literal(SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2),\n receiptId: z.string().min(1),\n deliveryId: z.string().min(1),\n eventId: z.string().min(1).nullable(),\n source: z.literal(\"shopify\"),\n providerTopic: z.string().min(1),\n tenant: ShopifyTenantSchema,\n occurredAt: z.iso.datetime().nullable(),\n receivedAt: z.iso.datetime(),\n traceId: z.string().min(1),\n orderingKey: z.string().min(1),\n internationalContext: InternationalContextSchema.optional(),\n })\n .strict();\n\nexport const ShopifyCheckoutCreatedEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_CREATED),\n payload: CheckoutCreatedPayloadV2Schema,\n }).strict();\n\nexport type ShopifyCheckoutCreatedEventV2 = z.infer<\n typeof ShopifyCheckoutCreatedEventV2Schema\n>;\n\nexport const ShopifyCartActivityEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.CART_ACTIVITY),\n payload: ShopifyCartActivityPayloadV2Schema,\n }).strict();\n\nexport type ShopifyCartActivityEventV2 = z.infer<\n typeof ShopifyCartActivityEventV2Schema\n>;\n\nexport const ShopifyCheckoutUpdatedEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_UPDATED),\n payload: CheckoutUpdatedPayloadV2Schema,\n }).strict();\n\nexport type ShopifyCheckoutUpdatedEventV2 = z.infer<\n typeof ShopifyCheckoutUpdatedEventV2Schema\n>;\n\nexport const ShopifyOrderCompletedEventV2Schema =\n ShopifyRecoveryEventBaseV2Schema.extend({\n eventType: z.literal(SHOPIFY_RECOVERY_EVENT_TYPES_V2.ORDER_COMPLETED),\n payload: OrderCompletedPayloadV2Schema,\n }).strict();\n\nexport type ShopifyOrderCompletedEventV2 = z.infer<\n typeof ShopifyOrderCompletedEventV2Schema\n>;\n\nexport const ShopifyRecoveryEventV2Schema = z.discriminatedUnion(\"eventType\", [\n ShopifyCartActivityEventV2Schema,\n ShopifyCheckoutCreatedEventV2Schema,\n ShopifyCheckoutUpdatedEventV2Schema,\n ShopifyOrderCompletedEventV2Schema,\n]);\n\nexport type ShopifyRecoveryEventV2 = z.infer<typeof ShopifyRecoveryEventV2Schema>;\nexport type ShopifyRecoveryEventTypeV2 = ShopifyRecoveryEventV2[\"eventType\"];\n\nexport function parseShopifyRecoveryEventV2(input: unknown): ShopifyRecoveryEventV2 {\n return ShopifyRecoveryEventV2Schema.parse(input);\n}\n\nexport function safeParseShopifyRecoveryEventV2(input: unknown) {\n return ShopifyRecoveryEventV2Schema.safeParse(input);\n}\n\nexport function isCheckoutCreatedEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyCheckoutCreatedEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_CREATED;\n}\n\nexport function isCartActivityEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyCartActivityEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.CART_ACTIVITY;\n}\n\nexport function isCheckoutUpdatedEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyCheckoutUpdatedEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.CHECKOUT_UPDATED;\n}\n\nexport function isOrderCompletedEventV2(\n event: ShopifyRecoveryEventV2,\n): event is ShopifyOrderCompletedEventV2 {\n return event.eventType === SHOPIFY_RECOVERY_EVENT_TYPES_V2.ORDER_COMPLETED;\n}\n\nexport function createShopifyPendingRecoveryOrderingKey(\n shopId: string,\n checkoutToken: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyPendingRecoveryOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof checkoutToken !== \"string\" || checkoutToken.length === 0) {\n throw new Error(\n \"createShopifyPendingRecoveryOrderingKey: checkoutToken must be a non-empty string\",\n );\n }\n\n return `${shopId}:${checkoutToken}`;\n}\n\nexport function createShopifyCartActivityOrderingKey(\n shopId: string,\n cartToken: string,\n): string {\n if (typeof shopId !== \"string\" || shopId.length === 0) {\n throw new Error(\n \"createShopifyCartActivityOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n if (typeof cartToken !== \"string\" || cartToken.length === 0) {\n throw new Error(\n \"createShopifyCartActivityOrderingKey: cartToken must be a non-empty string\",\n );\n }\n\n return `cart:${shopId.length}:${shopId}:${cartToken.length}:${cartToken}`;\n}\n\nexport function createShopifyOrderCorrelationOrderingKey(input: {\n shopId: string;\n orderId: string;\n checkoutToken: string | null;\n}): string {\n if (input.checkoutToken) {\n return createShopifyPendingRecoveryOrderingKey(input.shopId, input.checkoutToken);\n }\n\n if (typeof input.orderId !== \"string\" || input.orderId.length === 0) {\n throw new Error(\n \"createShopifyOrderCorrelationOrderingKey: orderId must be a non-empty string\",\n );\n }\n\n if (typeof input.shopId !== \"string\" || input.shopId.length === 0) {\n throw new Error(\n \"createShopifyOrderCorrelationOrderingKey: shopId must be a non-empty string\",\n );\n }\n\n return `${input.shopId}:${input.orderId}`;\n}\n","import { z } from \"zod\";\n\nexport const SHOPIFY_WEBHOOK_QUEUE_CONTRACTS = {\n CHECKOUT_EVENTS: {\n queueName: \"checkout-events\",\n jobName: \"checkout-created\",\n },\n CHECKOUT_UPDATED_EVENTS: {\n queueName: \"checkout-events\",\n jobName: \"checkout-updated\",\n },\n CART_ACTIVITY_EVENTS: {\n queueName: \"checkout-events\",\n jobName: \"cart-activity\",\n },\n ORDER_EVENTS: {\n queueName: \"order-events\",\n jobName: \"order-completed\",\n },\n SHOPIFY_DISCOUNT_SYNC: {\n queueName: \"shopify-discount-sync\",\n jobName: \"reconcile-shopify-discounts\",\n },\n} as const;\n\nexport const SHOPIFY_DISCOUNT_SYNC_REASONS = [\n \"SUBSCRIPTION_ACTIVATED\",\n \"REINSTALL_RECONCILED\",\n \"SCOPES_UPDATED\",\n \"DISCOUNT_WEBHOOK\",\n] as const;\n\nexport const SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS = [\n \"discounts/create\",\n \"discounts/update\",\n \"discounts/delete\",\n \"discounts/redeemcode_added\",\n \"discounts/redeemcode_removed\",\n] as const;\n\nexport const ShopifyDiscountSyncReasonSchema = z.enum(SHOPIFY_DISCOUNT_SYNC_REASONS);\nexport const ShopifyDiscountSyncWebhookTopicSchema = z.enum(SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS);\n\nexport const ShopifyDiscountSyncJobSchema = z\n .object({\n schemaVersion: z.literal(1),\n shopId: z.string().trim().min(1).max(128),\n shopDomain: z.string().trim().min(1).max(512),\n reason: ShopifyDiscountSyncReasonSchema,\n requestedAt: z.iso.datetime({ offset: true }),\n deliveryId: z.string().trim().min(1).nullable(),\n webhookTopic: ShopifyDiscountSyncWebhookTopicSchema.nullable(),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (value.reason === \"DISCOUNT_WEBHOOK\") {\n if (!value.deliveryId || value.deliveryId.trim().length === 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"deliveryId\"],\n message: \"deliveryId is required when reason is DISCOUNT_WEBHOOK\",\n });\n }\n\n if (value.webhookTopic === null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"webhookTopic\"],\n message: \"webhookTopic is required when reason is DISCOUNT_WEBHOOK\",\n });\n }\n } else {\n if (value.webhookTopic !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"webhookTopic\"],\n message: \"webhookTopic must be null when reason is not DISCOUNT_WEBHOOK\",\n });\n }\n }\n });\n\nexport type ShopifyDiscountSyncJob = z.infer<typeof ShopifyDiscountSyncJobSchema>;\n\nexport function parseShopifyDiscountSyncJob(input: unknown): ShopifyDiscountSyncJob {\n return ShopifyDiscountSyncJobSchema.parse(input);\n}\n\nexport function safeParseShopifyDiscountSyncJob(input: unknown) {\n return ShopifyDiscountSyncJobSchema.safeParse(input);\n}\n"],"mappings":"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","names":["z","z","z","z","z","z","z","z","z","z","z","z","z","z"]}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// src/recovery-policy.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var RECOVERY_OFFER_MODES = [
|
|
4
|
+
"NONE",
|
|
5
|
+
"FIXED",
|
|
6
|
+
"AI_BEST_APPLICABLE"
|
|
7
|
+
];
|
|
8
|
+
var RecoveryOfferModeSchema = z.enum(RECOVERY_OFFER_MODES);
|
|
9
|
+
var EffectiveRecoveryPolicySchema = z.object({
|
|
10
|
+
recoveryDelayMinutes: z.number().int().min(0).max(10080),
|
|
11
|
+
recoveryOfferMode: RecoveryOfferModeSchema,
|
|
12
|
+
fixedShopifyDiscountId: z.string().trim().nullable(),
|
|
13
|
+
followUpEnabled: z.boolean(),
|
|
14
|
+
followUpDelayMinutes: z.number().int().min(1).max(10080).nullable(),
|
|
15
|
+
source: z.enum(["MERCHANT", "ADMIN_OVERRIDE"])
|
|
16
|
+
}).strict().superRefine((value, ctx) => {
|
|
17
|
+
if (value.recoveryOfferMode === "FIXED") {
|
|
18
|
+
if (value.fixedShopifyDiscountId === null || value.fixedShopifyDiscountId.trim().length === 0) {
|
|
19
|
+
ctx.addIssue({
|
|
20
|
+
code: "custom",
|
|
21
|
+
path: ["fixedShopifyDiscountId"],
|
|
22
|
+
message: "fixedShopifyDiscountId is required when recoveryOfferMode is FIXED"
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
} else if (value.fixedShopifyDiscountId !== null) {
|
|
26
|
+
ctx.addIssue({
|
|
27
|
+
code: "custom",
|
|
28
|
+
path: ["fixedShopifyDiscountId"],
|
|
29
|
+
message: "fixedShopifyDiscountId must be null when recoveryOfferMode is not FIXED"
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
if (value.followUpEnabled) {
|
|
33
|
+
if (value.followUpDelayMinutes === null) {
|
|
34
|
+
ctx.addIssue({
|
|
35
|
+
code: "custom",
|
|
36
|
+
path: ["followUpDelayMinutes"],
|
|
37
|
+
message: "followUpDelayMinutes is required when followUpEnabled is true"
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
} else if (value.followUpDelayMinutes !== null) {
|
|
41
|
+
ctx.addIssue({
|
|
42
|
+
code: "custom",
|
|
43
|
+
path: ["followUpDelayMinutes"],
|
|
44
|
+
message: "followUpDelayMinutes must be null when followUpEnabled is false"
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
function parseEffectiveRecoveryPolicy(input) {
|
|
49
|
+
return EffectiveRecoveryPolicySchema.parse(input);
|
|
50
|
+
}
|
|
51
|
+
function safeParseEffectiveRecoveryPolicy(input) {
|
|
52
|
+
return EffectiveRecoveryPolicySchema.safeParse(input);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export {
|
|
56
|
+
RECOVERY_OFFER_MODES,
|
|
57
|
+
RecoveryOfferModeSchema,
|
|
58
|
+
EffectiveRecoveryPolicySchema,
|
|
59
|
+
parseEffectiveRecoveryPolicy,
|
|
60
|
+
safeParseEffectiveRecoveryPolicy
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=chunk-RVJPH6B7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/recovery-policy.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const RECOVERY_OFFER_MODES = [\n \"NONE\",\n \"FIXED\",\n \"AI_BEST_APPLICABLE\",\n] as const;\n\nexport const RecoveryOfferModeSchema = z.enum(RECOVERY_OFFER_MODES);\nexport type RecoveryOfferMode = z.infer<typeof RecoveryOfferModeSchema>;\n\nexport const EffectiveRecoveryPolicySchema = z\n .object({\n recoveryDelayMinutes: z.number().int().min(0).max(10080),\n recoveryOfferMode: RecoveryOfferModeSchema,\n fixedShopifyDiscountId: z.string().trim().nullable(),\n followUpEnabled: z.boolean(),\n followUpDelayMinutes: z.number().int().min(1).max(10080).nullable(),\n source: z.enum([\"MERCHANT\", \"ADMIN_OVERRIDE\"]),\n })\n .strict()\n .superRefine((value, ctx) => {\n if (value.recoveryOfferMode === \"FIXED\") {\n if (value.fixedShopifyDiscountId === null || value.fixedShopifyDiscountId.trim().length === 0) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"fixedShopifyDiscountId\"],\n message: \"fixedShopifyDiscountId is required when recoveryOfferMode is FIXED\",\n });\n }\n } else if (value.fixedShopifyDiscountId !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"fixedShopifyDiscountId\"],\n message: \"fixedShopifyDiscountId must be null when recoveryOfferMode is not FIXED\",\n });\n }\n\n if (value.followUpEnabled) {\n if (value.followUpDelayMinutes === null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"followUpDelayMinutes\"],\n message: \"followUpDelayMinutes is required when followUpEnabled is true\",\n });\n }\n } else if (value.followUpDelayMinutes !== null) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"followUpDelayMinutes\"],\n message: \"followUpDelayMinutes must be null when followUpEnabled is false\",\n });\n }\n });\n\nexport type EffectiveRecoveryPolicy = z.infer<typeof EffectiveRecoveryPolicySchema>;\n\nexport function parseEffectiveRecoveryPolicy(input: unknown): EffectiveRecoveryPolicy {\n return EffectiveRecoveryPolicySchema.parse(input);\n}\n\nexport function safeParseEffectiveRecoveryPolicy(input: unknown) {\n return EffectiveRecoveryPolicySchema.safeParse(input);\n}\n"],"mappings":";AAAA,SAAS,SAAS;AAEX,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,0BAA0B,EAAE,KAAK,oBAAoB;AAG3D,IAAM,gCAAgC,EAC1C,OAAO;AAAA,EACN,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK;AAAA,EACvD,mBAAmB;AAAA,EACnB,wBAAwB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACnD,iBAAiB,EAAE,QAAQ;AAAA,EAC3B,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,SAAS;AAAA,EAClE,QAAQ,EAAE,KAAK,CAAC,YAAY,gBAAgB,CAAC;AAC/C,CAAC,EACA,OAAO,EACP,YAAY,CAAC,OAAO,QAAQ;AAC3B,MAAI,MAAM,sBAAsB,SAAS;AACvC,QAAI,MAAM,2BAA2B,QAAQ,MAAM,uBAAuB,KAAK,EAAE,WAAW,GAAG;AAC7F,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,wBAAwB;AAAA,QAC/B,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF,WAAW,MAAM,2BAA2B,MAAM;AAChD,QAAI,SAAS;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,wBAAwB;AAAA,MAC/B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,iBAAiB;AACzB,QAAI,MAAM,yBAAyB,MAAM;AACvC,UAAI,SAAS;AAAA,QACX,MAAM;AAAA,QACN,MAAM,CAAC,sBAAsB;AAAA,QAC7B,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF,WAAW,MAAM,yBAAyB,MAAM;AAC9C,QAAI,SAAS;AAAA,MACX,MAAM;AAAA,MACN,MAAM,CAAC,sBAAsB;AAAA,MAC7B,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AACF,CAAC;AAII,SAAS,6BAA6B,OAAyC;AACpF,SAAO,8BAA8B,MAAM,KAAK;AAClD;AAEO,SAAS,iCAAiC,OAAgB;AAC/D,SAAO,8BAA8B,UAAU,KAAK;AACtD;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { CatalogueValidationOptions, CountryCode, CountryCodeSchema, CurrencyCode, CurrencyCodeSchema, IcuMessageCatalogue, IcuMessageValues, InternationalContext, InternationalContextSchema, InternationalizationRuntime, InternationalizationRuntimeOptions, LanguageSource, LanguageSourceSchema, LanguageTag, LanguageTagSchema, TimeZoneId, TimeZoneIdSchema, canonicaliseLanguageTag, createInternationalizationRuntime, mergeInternationalContext, normalizeCountryCode, normalizeCurrencyCode, normalizeTimeZone, resolveLocaleDirection, validateIcuCatalogue } from './internationalization.js';
|
|
2
2
|
export { APP_PRICING_BILLING_PERIOD_DRAIN_WINDOW_MS, ARCH007_BILLING_CONTRACT_SCHEMA_VERSION, BILLING_PLAN_KINDS, BILLING_SUBSCRIPTION_RECONCILE_JOB_NAME, BILLING_SUBSCRIPTION_RECONCILE_QUEUE_NAME, BILLING_SUBSCRIPTION_RECONCILE_SCHEMA_VERSION, BILLING_SYSTEM_MESSAGE_CODES, BILLING_USAGE_METRICS, BillingPlanKind, BillingPlanKindSchema, BillingSubscriptionReconcileJob, BillingSubscriptionReconcileJobSchema, BillingSystemMessageCode, BillingSystemMessageCodeSchema, BillingUsageMetric, BillingUsageMetricSchema, NormalizedWhatsAppStatus, NormalizedWhatsAppStatusSchema, PurchasedRecoveryCreditCounterSnapshot, ShopifyCurrentProviderContext, ShopifyProviderContextIdentityInput, ShopifyPurchaseProviderContext, WHATSAPP_PROVIDER_STATUSES, WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION, WhatsAppProviderPricingMetadata, WhatsAppProviderPricingMetadataSchema, WhatsAppProviderStatus, WhatsAppProviderStatusSchema, availablePurchasedRecoveryCredits, createBillingSubscriptionReconcileJobId, createMerchantBillingSystemSourceKey, createRecoveryIdempotencyKey, createShopifyUsageIdempotencyKey, deriveShopifyProviderContextIdentity, isSameShopifyPurchaseProviderContext, parseBillingSubscriptionReconcileJob, parseNormalizedWhatsAppStatus, safeParseBillingSubscriptionReconcileJob, safeParseNormalizedWhatsAppStatus } from './billing.js';
|
|
3
3
|
export { AuthoredSupportBodySchema, MERCHANT_COMMUNICATIONS_JOB_NAMES, MERCHANT_COMMUNICATIONS_QUEUE_NAME, MERCHANT_COMMUNICATIONS_SCHEMA_VERSION, MerchantMessageTranslationContract, MerchantMessageTranslationContractSchema, MerchantMessageTranslationStatus, MerchantMessageTranslationStatusSchema, MerchantSupportMessageContract, MerchantSupportMessageContractSchema, MerchantSupportMessageKind, MerchantSupportMessageKindSchema, MerchantSupportMessageState, MerchantSupportMessageStateSchema, MerchantTranslationBatchContract, MerchantTranslationBatchContractSchema, MerchantTranslationBatchStatus, MerchantTranslationBatchStatusSchema, MerchantTranslationDirection, MerchantTranslationDirectionSchema, MerchantTranslationReconciliationRequestContract, MerchantTranslationReconciliationRequestContractSchema, MerchantTranslationReconciliationScope, MerchantTranslationReconciliationScopeSchema, MerchantTranslationReconciliationStatus, MerchantTranslationReconciliationStatusSchema, PLATFORM_SUPPORT_LANGUAGE_TAG, TranslatedSupportBodySchema, TranslationBatchPollJob, TranslationBatchPollJobSchema, TranslationBatchResultsJob, TranslationBatchResultsJobSchema, TranslationBatchSubmitJob, TranslationBatchSubmitJobSchema, TranslationDispatchJob, TranslationDispatchJobSchema, TranslationReconcileJob, TranslationReconcileJobSchema, countUnicodeGraphemes, requiresMerchantTranslation } from './merchant-communications.js';
|
|
4
|
-
export {
|
|
4
|
+
export { EffectiveRecoveryPolicy, EffectiveRecoveryPolicySchema, RECOVERY_OFFER_MODES, RecoveryOfferMode, RecoveryOfferModeSchema, parseEffectiveRecoveryPolicy, safeParseEffectiveRecoveryPolicy } from './recovery-policy.js';
|
|
5
|
+
export { CheckoutCreatedPayloadV2, CheckoutCreatedPayloadV2Schema, CheckoutObservedPayload, CheckoutObservedPayloadSchema, CheckoutUpdatedPayloadV2, CheckoutUpdatedPayloadV2Schema, MAX_LINE_ITEMS, MAX_URL_LENGTH, OrderCompletedPayload, OrderCompletedPayloadSchema, OrderCompletedPayloadV2, OrderCompletedPayloadV2Schema, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2, SHOPIFY_COMMERCE_EVENT_TYPES, SHOPIFY_DISCOUNT_SYNC_REASONS, SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS, SHOPIFY_RECOVERY_EVENT_TYPES_V2, SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS, SHOPIFY_WEBHOOK_QUEUE_CONTRACTS, ShopifyCartActivityEventV2, ShopifyCartActivityEventV2Schema, ShopifyCartActivityPayloadV2, ShopifyCartActivityPayloadV2Schema, ShopifyCheckoutCreatedEventV2, ShopifyCheckoutCreatedEventV2Schema, ShopifyCheckoutLineItem, ShopifyCheckoutLineItemSchema, ShopifyCheckoutLineItemsSchema, ShopifyCheckoutObservedEvent, ShopifyCheckoutObservedEventSchema, ShopifyCheckoutUpdatedEventV2, ShopifyCheckoutUpdatedEventV2Schema, ShopifyCommerceEvent, ShopifyCommerceEventSchema, ShopifyCommerceEventType, ShopifyCustomerReference, ShopifyCustomerReferenceSchema, ShopifyDiscountSyncJob, ShopifyDiscountSyncJobSchema, ShopifyDiscountSyncReasonSchema, ShopifyDiscountSyncWebhookTopicSchema, ShopifyMoney, ShopifyMoneySchema, ShopifyOrderCompletedEvent, ShopifyOrderCompletedEventSchema, ShopifyOrderCompletedEventV2, ShopifyOrderCompletedEventV2Schema, ShopifyRecoveryEventTypeV2, ShopifyRecoveryEventV2, ShopifyRecoveryEventV2Schema, ShopifyTenant, ShopifyTenantSchema, createShopifyCartActivityOrderingKey, createShopifyCommerceOrderingKey, createShopifyOrderCorrelationOrderingKey, createShopifyOrderOrderingKey, createShopifyPendingRecoveryOrderingKey, isCartActivityEventV2, isCheckoutCreatedEventV2, isCheckoutObservedEvent, isCheckoutUpdatedEventV2, isOrderCompletedEvent, isOrderCompletedEventV2, parseShopifyCommerceEvent, parseShopifyDiscountSyncJob, parseShopifyRecoveryEventV2, safeParseShopifyCommerceEvent, safeParseShopifyDiscountSyncJob, safeParseShopifyRecoveryEventV2 } from './shopify/index.js';
|
|
5
6
|
import 'zod';
|
|
6
7
|
import 'intl-messageformat';
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,55 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CheckoutCreatedPayloadV2Schema,
|
|
3
|
+
CheckoutObservedPayloadSchema,
|
|
4
|
+
CheckoutUpdatedPayloadV2Schema,
|
|
5
|
+
MAX_LINE_ITEMS,
|
|
6
|
+
MAX_URL_LENGTH,
|
|
7
|
+
OrderCompletedPayloadSchema,
|
|
8
|
+
OrderCompletedPayloadV2Schema,
|
|
9
|
+
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION,
|
|
10
|
+
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1,
|
|
11
|
+
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,
|
|
12
|
+
SHOPIFY_COMMERCE_EVENT_TYPES,
|
|
13
|
+
SHOPIFY_DISCOUNT_SYNC_REASONS,
|
|
14
|
+
SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS,
|
|
15
|
+
SHOPIFY_RECOVERY_EVENT_TYPES_V2,
|
|
16
|
+
SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS,
|
|
17
|
+
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
18
|
+
ShopifyCartActivityEventV2Schema,
|
|
19
|
+
ShopifyCartActivityPayloadV2Schema,
|
|
20
|
+
ShopifyCheckoutCreatedEventV2Schema,
|
|
21
|
+
ShopifyCheckoutLineItemSchema,
|
|
22
|
+
ShopifyCheckoutLineItemsSchema,
|
|
23
|
+
ShopifyCheckoutObservedEventSchema,
|
|
24
|
+
ShopifyCheckoutUpdatedEventV2Schema,
|
|
25
|
+
ShopifyCommerceEventSchema,
|
|
26
|
+
ShopifyCustomerReferenceSchema,
|
|
27
|
+
ShopifyDiscountSyncJobSchema,
|
|
28
|
+
ShopifyDiscountSyncReasonSchema,
|
|
29
|
+
ShopifyDiscountSyncWebhookTopicSchema,
|
|
30
|
+
ShopifyMoneySchema,
|
|
31
|
+
ShopifyOrderCompletedEventSchema,
|
|
32
|
+
ShopifyOrderCompletedEventV2Schema,
|
|
33
|
+
ShopifyRecoveryEventV2Schema,
|
|
34
|
+
ShopifyTenantSchema,
|
|
35
|
+
createShopifyCartActivityOrderingKey,
|
|
36
|
+
createShopifyCommerceOrderingKey,
|
|
37
|
+
createShopifyOrderCorrelationOrderingKey,
|
|
38
|
+
createShopifyOrderOrderingKey,
|
|
39
|
+
createShopifyPendingRecoveryOrderingKey,
|
|
40
|
+
isCartActivityEventV2,
|
|
41
|
+
isCheckoutCreatedEventV2,
|
|
42
|
+
isCheckoutObservedEvent,
|
|
43
|
+
isCheckoutUpdatedEventV2,
|
|
44
|
+
isOrderCompletedEvent,
|
|
45
|
+
isOrderCompletedEventV2,
|
|
46
|
+
parseShopifyCommerceEvent,
|
|
47
|
+
parseShopifyDiscountSyncJob,
|
|
48
|
+
parseShopifyRecoveryEventV2,
|
|
49
|
+
safeParseShopifyCommerceEvent,
|
|
50
|
+
safeParseShopifyDiscountSyncJob,
|
|
51
|
+
safeParseShopifyRecoveryEventV2
|
|
52
|
+
} from "./chunk-LJSKRESH.js";
|
|
1
53
|
import {
|
|
2
54
|
APP_PRICING_BILLING_PERIOD_DRAIN_WINDOW_MS,
|
|
3
55
|
ARCH007_BILLING_CONTRACT_SCHEMA_VERSION,
|
|
@@ -28,6 +80,13 @@ import {
|
|
|
28
80
|
safeParseBillingSubscriptionReconcileJob,
|
|
29
81
|
safeParseNormalizedWhatsAppStatus
|
|
30
82
|
} from "./chunk-ANBEH6NW.js";
|
|
83
|
+
import {
|
|
84
|
+
EffectiveRecoveryPolicySchema,
|
|
85
|
+
RECOVERY_OFFER_MODES,
|
|
86
|
+
RecoveryOfferModeSchema,
|
|
87
|
+
parseEffectiveRecoveryPolicy,
|
|
88
|
+
safeParseEffectiveRecoveryPolicy
|
|
89
|
+
} from "./chunk-RVJPH6B7.js";
|
|
31
90
|
import {
|
|
32
91
|
AuthoredSupportBodySchema,
|
|
33
92
|
MERCHANT_COMMUNICATIONS_JOB_NAMES,
|
|
@@ -54,51 +113,6 @@ import {
|
|
|
54
113
|
countUnicodeGraphemes,
|
|
55
114
|
requiresMerchantTranslation
|
|
56
115
|
} from "./chunk-X7NKF3ZC.js";
|
|
57
|
-
import {
|
|
58
|
-
CheckoutCreatedPayloadV2Schema,
|
|
59
|
-
CheckoutObservedPayloadSchema,
|
|
60
|
-
CheckoutUpdatedPayloadV2Schema,
|
|
61
|
-
MAX_LINE_ITEMS,
|
|
62
|
-
MAX_URL_LENGTH,
|
|
63
|
-
OrderCompletedPayloadSchema,
|
|
64
|
-
OrderCompletedPayloadV2Schema,
|
|
65
|
-
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION,
|
|
66
|
-
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1,
|
|
67
|
-
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,
|
|
68
|
-
SHOPIFY_COMMERCE_EVENT_TYPES,
|
|
69
|
-
SHOPIFY_RECOVERY_EVENT_TYPES_V2,
|
|
70
|
-
SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS,
|
|
71
|
-
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
72
|
-
ShopifyCartActivityEventV2Schema,
|
|
73
|
-
ShopifyCartActivityPayloadV2Schema,
|
|
74
|
-
ShopifyCheckoutCreatedEventV2Schema,
|
|
75
|
-
ShopifyCheckoutLineItemSchema,
|
|
76
|
-
ShopifyCheckoutLineItemsSchema,
|
|
77
|
-
ShopifyCheckoutObservedEventSchema,
|
|
78
|
-
ShopifyCheckoutUpdatedEventV2Schema,
|
|
79
|
-
ShopifyCommerceEventSchema,
|
|
80
|
-
ShopifyCustomerReferenceSchema,
|
|
81
|
-
ShopifyMoneySchema,
|
|
82
|
-
ShopifyOrderCompletedEventSchema,
|
|
83
|
-
ShopifyOrderCompletedEventV2Schema,
|
|
84
|
-
ShopifyRecoveryEventV2Schema,
|
|
85
|
-
ShopifyTenantSchema,
|
|
86
|
-
createShopifyCartActivityOrderingKey,
|
|
87
|
-
createShopifyCommerceOrderingKey,
|
|
88
|
-
createShopifyOrderCorrelationOrderingKey,
|
|
89
|
-
createShopifyOrderOrderingKey,
|
|
90
|
-
createShopifyPendingRecoveryOrderingKey,
|
|
91
|
-
isCartActivityEventV2,
|
|
92
|
-
isCheckoutCreatedEventV2,
|
|
93
|
-
isCheckoutObservedEvent,
|
|
94
|
-
isCheckoutUpdatedEventV2,
|
|
95
|
-
isOrderCompletedEvent,
|
|
96
|
-
isOrderCompletedEventV2,
|
|
97
|
-
parseShopifyCommerceEvent,
|
|
98
|
-
parseShopifyRecoveryEventV2,
|
|
99
|
-
safeParseShopifyCommerceEvent,
|
|
100
|
-
safeParseShopifyRecoveryEventV2
|
|
101
|
-
} from "./chunk-JZVD5O5P.js";
|
|
102
116
|
import {
|
|
103
117
|
CountryCodeSchema,
|
|
104
118
|
CurrencyCodeSchema,
|
|
@@ -134,6 +148,7 @@ export {
|
|
|
134
148
|
CheckoutUpdatedPayloadV2Schema,
|
|
135
149
|
CountryCodeSchema,
|
|
136
150
|
CurrencyCodeSchema,
|
|
151
|
+
EffectiveRecoveryPolicySchema,
|
|
137
152
|
InternationalContextSchema,
|
|
138
153
|
LanguageSourceSchema,
|
|
139
154
|
LanguageTagSchema,
|
|
@@ -157,10 +172,14 @@ export {
|
|
|
157
172
|
OrderCompletedPayloadSchema,
|
|
158
173
|
OrderCompletedPayloadV2Schema,
|
|
159
174
|
PLATFORM_SUPPORT_LANGUAGE_TAG,
|
|
175
|
+
RECOVERY_OFFER_MODES,
|
|
176
|
+
RecoveryOfferModeSchema,
|
|
160
177
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION,
|
|
161
178
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1,
|
|
162
179
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,
|
|
163
180
|
SHOPIFY_COMMERCE_EVENT_TYPES,
|
|
181
|
+
SHOPIFY_DISCOUNT_SYNC_REASONS,
|
|
182
|
+
SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS,
|
|
164
183
|
SHOPIFY_RECOVERY_EVENT_TYPES_V2,
|
|
165
184
|
SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS,
|
|
166
185
|
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
@@ -173,6 +192,9 @@ export {
|
|
|
173
192
|
ShopifyCheckoutUpdatedEventV2Schema,
|
|
174
193
|
ShopifyCommerceEventSchema,
|
|
175
194
|
ShopifyCustomerReferenceSchema,
|
|
195
|
+
ShopifyDiscountSyncJobSchema,
|
|
196
|
+
ShopifyDiscountSyncReasonSchema,
|
|
197
|
+
ShopifyDiscountSyncWebhookTopicSchema,
|
|
176
198
|
ShopifyMoneySchema,
|
|
177
199
|
ShopifyOrderCompletedEventSchema,
|
|
178
200
|
ShopifyOrderCompletedEventV2Schema,
|
|
@@ -215,14 +237,18 @@ export {
|
|
|
215
237
|
normalizeCurrencyCode,
|
|
216
238
|
normalizeTimeZone,
|
|
217
239
|
parseBillingSubscriptionReconcileJob,
|
|
240
|
+
parseEffectiveRecoveryPolicy,
|
|
218
241
|
parseNormalizedWhatsAppStatus,
|
|
219
242
|
parseShopifyCommerceEvent,
|
|
243
|
+
parseShopifyDiscountSyncJob,
|
|
220
244
|
parseShopifyRecoveryEventV2,
|
|
221
245
|
requiresMerchantTranslation,
|
|
222
246
|
resolveLocaleDirection,
|
|
223
247
|
safeParseBillingSubscriptionReconcileJob,
|
|
248
|
+
safeParseEffectiveRecoveryPolicy,
|
|
224
249
|
safeParseNormalizedWhatsAppStatus,
|
|
225
250
|
safeParseShopifyCommerceEvent,
|
|
251
|
+
safeParseShopifyDiscountSyncJob,
|
|
226
252
|
safeParseShopifyRecoveryEventV2,
|
|
227
253
|
validateIcuCatalogue
|
|
228
254
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
declare const RECOVERY_OFFER_MODES: readonly ["NONE", "FIXED", "AI_BEST_APPLICABLE"];
|
|
4
|
+
declare const RecoveryOfferModeSchema: z.ZodEnum<{
|
|
5
|
+
NONE: "NONE";
|
|
6
|
+
FIXED: "FIXED";
|
|
7
|
+
AI_BEST_APPLICABLE: "AI_BEST_APPLICABLE";
|
|
8
|
+
}>;
|
|
9
|
+
type RecoveryOfferMode = z.infer<typeof RecoveryOfferModeSchema>;
|
|
10
|
+
declare const EffectiveRecoveryPolicySchema: z.ZodObject<{
|
|
11
|
+
recoveryDelayMinutes: z.ZodNumber;
|
|
12
|
+
recoveryOfferMode: z.ZodEnum<{
|
|
13
|
+
NONE: "NONE";
|
|
14
|
+
FIXED: "FIXED";
|
|
15
|
+
AI_BEST_APPLICABLE: "AI_BEST_APPLICABLE";
|
|
16
|
+
}>;
|
|
17
|
+
fixedShopifyDiscountId: z.ZodNullable<z.ZodString>;
|
|
18
|
+
followUpEnabled: z.ZodBoolean;
|
|
19
|
+
followUpDelayMinutes: z.ZodNullable<z.ZodNumber>;
|
|
20
|
+
source: z.ZodEnum<{
|
|
21
|
+
MERCHANT: "MERCHANT";
|
|
22
|
+
ADMIN_OVERRIDE: "ADMIN_OVERRIDE";
|
|
23
|
+
}>;
|
|
24
|
+
}, z.core.$strict>;
|
|
25
|
+
type EffectiveRecoveryPolicy = z.infer<typeof EffectiveRecoveryPolicySchema>;
|
|
26
|
+
declare function parseEffectiveRecoveryPolicy(input: unknown): EffectiveRecoveryPolicy;
|
|
27
|
+
declare function safeParseEffectiveRecoveryPolicy(input: unknown): z.ZodSafeParseResult<{
|
|
28
|
+
recoveryDelayMinutes: number;
|
|
29
|
+
recoveryOfferMode: "NONE" | "FIXED" | "AI_BEST_APPLICABLE";
|
|
30
|
+
fixedShopifyDiscountId: string | null;
|
|
31
|
+
followUpEnabled: boolean;
|
|
32
|
+
followUpDelayMinutes: number | null;
|
|
33
|
+
source: "MERCHANT" | "ADMIN_OVERRIDE";
|
|
34
|
+
}>;
|
|
35
|
+
|
|
36
|
+
export { type EffectiveRecoveryPolicy, EffectiveRecoveryPolicySchema, RECOVERY_OFFER_MODES, type RecoveryOfferMode, RecoveryOfferModeSchema, parseEffectiveRecoveryPolicy, safeParseEffectiveRecoveryPolicy };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EffectiveRecoveryPolicySchema,
|
|
3
|
+
RECOVERY_OFFER_MODES,
|
|
4
|
+
RecoveryOfferModeSchema,
|
|
5
|
+
parseEffectiveRecoveryPolicy,
|
|
6
|
+
safeParseEffectiveRecoveryPolicy
|
|
7
|
+
} from "./chunk-RVJPH6B7.js";
|
|
8
|
+
export {
|
|
9
|
+
EffectiveRecoveryPolicySchema,
|
|
10
|
+
RECOVERY_OFFER_MODES,
|
|
11
|
+
RecoveryOfferModeSchema,
|
|
12
|
+
parseEffectiveRecoveryPolicy,
|
|
13
|
+
safeParseEffectiveRecoveryPolicy
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=recovery-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/shopify/index.d.ts
CHANGED
|
@@ -789,6 +789,56 @@ declare const SHOPIFY_WEBHOOK_QUEUE_CONTRACTS: {
|
|
|
789
789
|
readonly queueName: "order-events";
|
|
790
790
|
readonly jobName: "order-completed";
|
|
791
791
|
};
|
|
792
|
+
readonly SHOPIFY_DISCOUNT_SYNC: {
|
|
793
|
+
readonly queueName: "shopify-discount-sync";
|
|
794
|
+
readonly jobName: "reconcile-shopify-discounts";
|
|
795
|
+
};
|
|
792
796
|
};
|
|
797
|
+
declare const SHOPIFY_DISCOUNT_SYNC_REASONS: readonly ["SUBSCRIPTION_ACTIVATED", "REINSTALL_RECONCILED", "SCOPES_UPDATED", "DISCOUNT_WEBHOOK"];
|
|
798
|
+
declare const SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS: readonly ["discounts/create", "discounts/update", "discounts/delete", "discounts/redeemcode_added", "discounts/redeemcode_removed"];
|
|
799
|
+
declare const ShopifyDiscountSyncReasonSchema: z.ZodEnum<{
|
|
800
|
+
SUBSCRIPTION_ACTIVATED: "SUBSCRIPTION_ACTIVATED";
|
|
801
|
+
REINSTALL_RECONCILED: "REINSTALL_RECONCILED";
|
|
802
|
+
SCOPES_UPDATED: "SCOPES_UPDATED";
|
|
803
|
+
DISCOUNT_WEBHOOK: "DISCOUNT_WEBHOOK";
|
|
804
|
+
}>;
|
|
805
|
+
declare const ShopifyDiscountSyncWebhookTopicSchema: z.ZodEnum<{
|
|
806
|
+
"discounts/create": "discounts/create";
|
|
807
|
+
"discounts/update": "discounts/update";
|
|
808
|
+
"discounts/delete": "discounts/delete";
|
|
809
|
+
"discounts/redeemcode_added": "discounts/redeemcode_added";
|
|
810
|
+
"discounts/redeemcode_removed": "discounts/redeemcode_removed";
|
|
811
|
+
}>;
|
|
812
|
+
declare const ShopifyDiscountSyncJobSchema: z.ZodObject<{
|
|
813
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
814
|
+
shopId: z.ZodString;
|
|
815
|
+
shopDomain: z.ZodString;
|
|
816
|
+
reason: z.ZodEnum<{
|
|
817
|
+
SUBSCRIPTION_ACTIVATED: "SUBSCRIPTION_ACTIVATED";
|
|
818
|
+
REINSTALL_RECONCILED: "REINSTALL_RECONCILED";
|
|
819
|
+
SCOPES_UPDATED: "SCOPES_UPDATED";
|
|
820
|
+
DISCOUNT_WEBHOOK: "DISCOUNT_WEBHOOK";
|
|
821
|
+
}>;
|
|
822
|
+
requestedAt: z.ZodISODateTime;
|
|
823
|
+
deliveryId: z.ZodNullable<z.ZodString>;
|
|
824
|
+
webhookTopic: z.ZodNullable<z.ZodEnum<{
|
|
825
|
+
"discounts/create": "discounts/create";
|
|
826
|
+
"discounts/update": "discounts/update";
|
|
827
|
+
"discounts/delete": "discounts/delete";
|
|
828
|
+
"discounts/redeemcode_added": "discounts/redeemcode_added";
|
|
829
|
+
"discounts/redeemcode_removed": "discounts/redeemcode_removed";
|
|
830
|
+
}>>;
|
|
831
|
+
}, z.core.$strict>;
|
|
832
|
+
type ShopifyDiscountSyncJob = z.infer<typeof ShopifyDiscountSyncJobSchema>;
|
|
833
|
+
declare function parseShopifyDiscountSyncJob(input: unknown): ShopifyDiscountSyncJob;
|
|
834
|
+
declare function safeParseShopifyDiscountSyncJob(input: unknown): z.ZodSafeParseResult<{
|
|
835
|
+
schemaVersion: 1;
|
|
836
|
+
shopId: string;
|
|
837
|
+
shopDomain: string;
|
|
838
|
+
reason: "SUBSCRIPTION_ACTIVATED" | "REINSTALL_RECONCILED" | "SCOPES_UPDATED" | "DISCOUNT_WEBHOOK";
|
|
839
|
+
requestedAt: string;
|
|
840
|
+
deliveryId: string | null;
|
|
841
|
+
webhookTopic: "discounts/create" | "discounts/update" | "discounts/delete" | "discounts/redeemcode_added" | "discounts/redeemcode_removed" | null;
|
|
842
|
+
}>;
|
|
793
843
|
|
|
794
|
-
export { type CheckoutCreatedPayloadV2, CheckoutCreatedPayloadV2Schema, type CheckoutObservedPayload, CheckoutObservedPayloadSchema, type CheckoutUpdatedPayloadV2, CheckoutUpdatedPayloadV2Schema, MAX_LINE_ITEMS, MAX_URL_LENGTH, type OrderCompletedPayload, OrderCompletedPayloadSchema, type OrderCompletedPayloadV2, OrderCompletedPayloadV2Schema, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2, SHOPIFY_COMMERCE_EVENT_TYPES, SHOPIFY_RECOVERY_EVENT_TYPES_V2, SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS, SHOPIFY_WEBHOOK_QUEUE_CONTRACTS, type ShopifyCartActivityEventV2, ShopifyCartActivityEventV2Schema, type ShopifyCartActivityPayloadV2, ShopifyCartActivityPayloadV2Schema, type ShopifyCheckoutCreatedEventV2, ShopifyCheckoutCreatedEventV2Schema, type ShopifyCheckoutLineItem, ShopifyCheckoutLineItemSchema, ShopifyCheckoutLineItemsSchema, type ShopifyCheckoutObservedEvent, ShopifyCheckoutObservedEventSchema, type ShopifyCheckoutUpdatedEventV2, ShopifyCheckoutUpdatedEventV2Schema, type ShopifyCommerceEvent, ShopifyCommerceEventSchema, type ShopifyCommerceEventType, type ShopifyCustomerReference, ShopifyCustomerReferenceSchema, type ShopifyMoney, ShopifyMoneySchema, type ShopifyOrderCompletedEvent, ShopifyOrderCompletedEventSchema, type ShopifyOrderCompletedEventV2, ShopifyOrderCompletedEventV2Schema, type ShopifyRecoveryEventTypeV2, type ShopifyRecoveryEventV2, ShopifyRecoveryEventV2Schema, type ShopifyTenant, ShopifyTenantSchema, createShopifyCartActivityOrderingKey, createShopifyCommerceOrderingKey, createShopifyOrderCorrelationOrderingKey, createShopifyOrderOrderingKey, createShopifyPendingRecoveryOrderingKey, isCartActivityEventV2, isCheckoutCreatedEventV2, isCheckoutObservedEvent, isCheckoutUpdatedEventV2, isOrderCompletedEvent, isOrderCompletedEventV2, parseShopifyCommerceEvent, parseShopifyRecoveryEventV2, safeParseShopifyCommerceEvent, safeParseShopifyRecoveryEventV2 };
|
|
844
|
+
export { type CheckoutCreatedPayloadV2, CheckoutCreatedPayloadV2Schema, type CheckoutObservedPayload, CheckoutObservedPayloadSchema, type CheckoutUpdatedPayloadV2, CheckoutUpdatedPayloadV2Schema, MAX_LINE_ITEMS, MAX_URL_LENGTH, type OrderCompletedPayload, OrderCompletedPayloadSchema, type OrderCompletedPayloadV2, OrderCompletedPayloadV2Schema, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1, SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2, SHOPIFY_COMMERCE_EVENT_TYPES, SHOPIFY_DISCOUNT_SYNC_REASONS, SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS, SHOPIFY_RECOVERY_EVENT_TYPES_V2, SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS, SHOPIFY_WEBHOOK_QUEUE_CONTRACTS, type ShopifyCartActivityEventV2, ShopifyCartActivityEventV2Schema, type ShopifyCartActivityPayloadV2, ShopifyCartActivityPayloadV2Schema, type ShopifyCheckoutCreatedEventV2, ShopifyCheckoutCreatedEventV2Schema, type ShopifyCheckoutLineItem, ShopifyCheckoutLineItemSchema, ShopifyCheckoutLineItemsSchema, type ShopifyCheckoutObservedEvent, ShopifyCheckoutObservedEventSchema, type ShopifyCheckoutUpdatedEventV2, ShopifyCheckoutUpdatedEventV2Schema, type ShopifyCommerceEvent, ShopifyCommerceEventSchema, type ShopifyCommerceEventType, type ShopifyCustomerReference, ShopifyCustomerReferenceSchema, type ShopifyDiscountSyncJob, ShopifyDiscountSyncJobSchema, ShopifyDiscountSyncReasonSchema, ShopifyDiscountSyncWebhookTopicSchema, type ShopifyMoney, ShopifyMoneySchema, type ShopifyOrderCompletedEvent, ShopifyOrderCompletedEventSchema, type ShopifyOrderCompletedEventV2, ShopifyOrderCompletedEventV2Schema, type ShopifyRecoveryEventTypeV2, type ShopifyRecoveryEventV2, ShopifyRecoveryEventV2Schema, type ShopifyTenant, ShopifyTenantSchema, createShopifyCartActivityOrderingKey, createShopifyCommerceOrderingKey, createShopifyOrderCorrelationOrderingKey, createShopifyOrderOrderingKey, createShopifyPendingRecoveryOrderingKey, isCartActivityEventV2, isCheckoutCreatedEventV2, isCheckoutObservedEvent, isCheckoutUpdatedEventV2, isOrderCompletedEvent, isOrderCompletedEventV2, parseShopifyCommerceEvent, parseShopifyDiscountSyncJob, parseShopifyRecoveryEventV2, safeParseShopifyCommerceEvent, safeParseShopifyDiscountSyncJob, safeParseShopifyRecoveryEventV2 };
|
package/dist/shopify/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import {
|
|
|
10
10
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1,
|
|
11
11
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,
|
|
12
12
|
SHOPIFY_COMMERCE_EVENT_TYPES,
|
|
13
|
+
SHOPIFY_DISCOUNT_SYNC_REASONS,
|
|
14
|
+
SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS,
|
|
13
15
|
SHOPIFY_RECOVERY_EVENT_TYPES_V2,
|
|
14
16
|
SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS,
|
|
15
17
|
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
@@ -22,6 +24,9 @@ import {
|
|
|
22
24
|
ShopifyCheckoutUpdatedEventV2Schema,
|
|
23
25
|
ShopifyCommerceEventSchema,
|
|
24
26
|
ShopifyCustomerReferenceSchema,
|
|
27
|
+
ShopifyDiscountSyncJobSchema,
|
|
28
|
+
ShopifyDiscountSyncReasonSchema,
|
|
29
|
+
ShopifyDiscountSyncWebhookTopicSchema,
|
|
25
30
|
ShopifyMoneySchema,
|
|
26
31
|
ShopifyOrderCompletedEventSchema,
|
|
27
32
|
ShopifyOrderCompletedEventV2Schema,
|
|
@@ -39,10 +44,12 @@ import {
|
|
|
39
44
|
isOrderCompletedEvent,
|
|
40
45
|
isOrderCompletedEventV2,
|
|
41
46
|
parseShopifyCommerceEvent,
|
|
47
|
+
parseShopifyDiscountSyncJob,
|
|
42
48
|
parseShopifyRecoveryEventV2,
|
|
43
49
|
safeParseShopifyCommerceEvent,
|
|
50
|
+
safeParseShopifyDiscountSyncJob,
|
|
44
51
|
safeParseShopifyRecoveryEventV2
|
|
45
|
-
} from "../chunk-
|
|
52
|
+
} from "../chunk-LJSKRESH.js";
|
|
46
53
|
import "../chunk-B6Y3QQLI.js";
|
|
47
54
|
export {
|
|
48
55
|
CheckoutCreatedPayloadV2Schema,
|
|
@@ -56,6 +63,8 @@ export {
|
|
|
56
63
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1,
|
|
57
64
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,
|
|
58
65
|
SHOPIFY_COMMERCE_EVENT_TYPES,
|
|
66
|
+
SHOPIFY_DISCOUNT_SYNC_REASONS,
|
|
67
|
+
SHOPIFY_DISCOUNT_SYNC_WEBHOOK_TOPICS,
|
|
59
68
|
SHOPIFY_RECOVERY_EVENT_TYPES_V2,
|
|
60
69
|
SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS,
|
|
61
70
|
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
@@ -68,6 +77,9 @@ export {
|
|
|
68
77
|
ShopifyCheckoutUpdatedEventV2Schema,
|
|
69
78
|
ShopifyCommerceEventSchema,
|
|
70
79
|
ShopifyCustomerReferenceSchema,
|
|
80
|
+
ShopifyDiscountSyncJobSchema,
|
|
81
|
+
ShopifyDiscountSyncReasonSchema,
|
|
82
|
+
ShopifyDiscountSyncWebhookTopicSchema,
|
|
71
83
|
ShopifyMoneySchema,
|
|
72
84
|
ShopifyOrderCompletedEventSchema,
|
|
73
85
|
ShopifyOrderCompletedEventV2Schema,
|
|
@@ -85,8 +97,10 @@ export {
|
|
|
85
97
|
isOrderCompletedEvent,
|
|
86
98
|
isOrderCompletedEventV2,
|
|
87
99
|
parseShopifyCommerceEvent,
|
|
100
|
+
parseShopifyDiscountSyncJob,
|
|
88
101
|
parseShopifyRecoveryEventV2,
|
|
89
102
|
safeParseShopifyCommerceEvent,
|
|
103
|
+
safeParseShopifyDiscountSyncJob,
|
|
90
104
|
safeParseShopifyRecoveryEventV2
|
|
91
105
|
};
|
|
92
106
|
//# sourceMappingURL=index.js.map
|
package/dist/shopify/node.d.ts
CHANGED
|
@@ -6,5 +6,11 @@ declare function createShopifyWebhookJobId(appKey: string, deliveryId: string):
|
|
|
6
6
|
declare function createShopifyCheckoutJobId(shopId: string, checkoutToken: string): string;
|
|
7
7
|
declare function createShopifyOrderJobId(shopId: string, orderGid: string): string;
|
|
8
8
|
declare function createPendingRecoveryCandidateJobId(shopId: string, checkoutToken: string): string;
|
|
9
|
+
declare function createShopifyDiscountSyncJobId(event: {
|
|
10
|
+
shopId: string;
|
|
11
|
+
reason: "SUBSCRIPTION_ACTIVATED" | "REINSTALL_RECONCILED" | "SCOPES_UPDATED" | "DISCOUNT_WEBHOOK";
|
|
12
|
+
requestedAt: string;
|
|
13
|
+
deliveryId?: string | null;
|
|
14
|
+
}): string;
|
|
9
15
|
|
|
10
|
-
export { createPendingRecoveryCandidateJobId, createShopifyCheckoutJobId, createShopifyOrderJobId, createShopifyWebhookJobId };
|
|
16
|
+
export { createPendingRecoveryCandidateJobId, createShopifyCheckoutJobId, createShopifyDiscountSyncJobId, createShopifyOrderJobId, createShopifyWebhookJobId };
|
package/dist/shopify/node.js
CHANGED
|
@@ -22,9 +22,25 @@ function createShopifyOrderJobId(shopId, orderGid) {
|
|
|
22
22
|
function createPendingRecoveryCandidateJobId(shopId, checkoutToken) {
|
|
23
23
|
return createShopifyWebhookJobDigest("pending-recovery", shopId, checkoutToken);
|
|
24
24
|
}
|
|
25
|
+
function createShopifyDiscountSyncJobId(event) {
|
|
26
|
+
if (typeof event.shopId !== "string" || event.shopId.trim().length === 0) {
|
|
27
|
+
throw new Error("createShopifyDiscountSyncJobId: shopId must be a non-empty string");
|
|
28
|
+
}
|
|
29
|
+
if (event.reason === "DISCOUNT_WEBHOOK") {
|
|
30
|
+
if (typeof event.deliveryId !== "string" || event.deliveryId.trim().length === 0) {
|
|
31
|
+
throw new Error("createShopifyDiscountSyncJobId: deliveryId is required for DISCOUNT_WEBHOOK");
|
|
32
|
+
}
|
|
33
|
+
return createShopifyWebhookJobDigest("discount-sync", event.shopId, event.deliveryId);
|
|
34
|
+
}
|
|
35
|
+
if (typeof event.requestedAt !== "string" || event.requestedAt.trim().length === 0) {
|
|
36
|
+
throw new Error("createShopifyDiscountSyncJobId: requestedAt must be a non-empty ISO datetime string");
|
|
37
|
+
}
|
|
38
|
+
return createShopifyWebhookJobDigest("discount-sync", `${event.shopId}:${event.reason}`, event.requestedAt);
|
|
39
|
+
}
|
|
25
40
|
export {
|
|
26
41
|
createPendingRecoveryCandidateJobId,
|
|
27
42
|
createShopifyCheckoutJobId,
|
|
43
|
+
createShopifyDiscountSyncJobId,
|
|
28
44
|
createShopifyOrderJobId,
|
|
29
45
|
createShopifyWebhookJobId
|
|
30
46
|
};
|
package/dist/shopify/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shopify/node.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\n\nfunction createShopifyWebhookJobDigest(prefix: string, first: string, second: string): string {\n if (typeof first !== \"string\" || first.length === 0) {\n throw new Error(`${prefix}: first input must be a non-empty string`);\n }\n\n if (typeof second !== \"string\" || second.length === 0) {\n throw new Error(`${prefix}: second input must be a non-empty string`);\n }\n\n const digest = createHash(\"sha256\").update(`${first}:${second}`).digest(\"hex\");\n return `${prefix}-${digest}`;\n}\n\n/**\n * Legacy webhook delivery job id used by earlier receipt/outbox flows.\n * Prefer the resource-scoped helpers below for current queue publication.\n */\nexport function createShopifyWebhookJobId(appKey: string, deliveryId: string): string {\n return createShopifyWebhookJobDigest(\"shopify\", appKey, deliveryId);\n}\n\nexport function createShopifyCheckoutJobId(shopId: string, checkoutToken: string): string {\n return createShopifyWebhookJobDigest(\"checkout\", shopId, checkoutToken);\n}\n\nexport function createShopifyOrderJobId(shopId: string, orderGid: string): string {\n return createShopifyWebhookJobDigest(\"order-created\", shopId, orderGid);\n}\n\nexport function createPendingRecoveryCandidateJobId(\n shopId: string,\n checkoutToken: string,\n): string {\n return createShopifyWebhookJobDigest(\"pending-recovery\", shopId, checkoutToken);\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAE3B,SAAS,8BAA8B,QAAgB,OAAe,QAAwB;AAC5F,MAAI,OAAO,UAAU,YAAY,MAAM,WAAW,GAAG;AACnD,UAAM,IAAI,MAAM,GAAG,MAAM,0CAA0C;AAAA,EACrE;AAEA,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AACrD,UAAM,IAAI,MAAM,GAAG,MAAM,2CAA2C;AAAA,EACtE;AAEA,QAAM,SAAS,WAAW,QAAQ,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,EAAE,OAAO,KAAK;AAC7E,SAAO,GAAG,MAAM,IAAI,MAAM;AAC5B;AAMO,SAAS,0BAA0B,QAAgB,YAA4B;AACpF,SAAO,8BAA8B,WAAW,QAAQ,UAAU;AACpE;AAEO,SAAS,2BAA2B,QAAgB,eAA+B;AACxF,SAAO,8BAA8B,YAAY,QAAQ,aAAa;AACxE;AAEO,SAAS,wBAAwB,QAAgB,UAA0B;AAChF,SAAO,8BAA8B,iBAAiB,QAAQ,QAAQ;AACxE;AAEO,SAAS,oCACd,QACA,eACQ;AACR,SAAO,8BAA8B,oBAAoB,QAAQ,aAAa;AAChF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/shopify/node.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\n\nfunction createShopifyWebhookJobDigest(prefix: string, first: string, second: string): string {\n if (typeof first !== \"string\" || first.length === 0) {\n throw new Error(`${prefix}: first input must be a non-empty string`);\n }\n\n if (typeof second !== \"string\" || second.length === 0) {\n throw new Error(`${prefix}: second input must be a non-empty string`);\n }\n\n const digest = createHash(\"sha256\").update(`${first}:${second}`).digest(\"hex\");\n return `${prefix}-${digest}`;\n}\n\n/**\n * Legacy webhook delivery job id used by earlier receipt/outbox flows.\n * Prefer the resource-scoped helpers below for current queue publication.\n */\nexport function createShopifyWebhookJobId(appKey: string, deliveryId: string): string {\n return createShopifyWebhookJobDigest(\"shopify\", appKey, deliveryId);\n}\n\nexport function createShopifyCheckoutJobId(shopId: string, checkoutToken: string): string {\n return createShopifyWebhookJobDigest(\"checkout\", shopId, checkoutToken);\n}\n\nexport function createShopifyOrderJobId(shopId: string, orderGid: string): string {\n return createShopifyWebhookJobDigest(\"order-created\", shopId, orderGid);\n}\n\nexport function createPendingRecoveryCandidateJobId(\n shopId: string,\n checkoutToken: string,\n): string {\n return createShopifyWebhookJobDigest(\"pending-recovery\", shopId, checkoutToken);\n}\n\nexport function createShopifyDiscountSyncJobId(event: {\n shopId: string;\n reason: \"SUBSCRIPTION_ACTIVATED\" | \"REINSTALL_RECONCILED\" | \"SCOPES_UPDATED\" | \"DISCOUNT_WEBHOOK\";\n requestedAt: string;\n deliveryId?: string | null;\n}): string {\n if (typeof event.shopId !== \"string\" || event.shopId.trim().length === 0) {\n throw new Error(\"createShopifyDiscountSyncJobId: shopId must be a non-empty string\");\n }\n\n if (event.reason === \"DISCOUNT_WEBHOOK\") {\n if (typeof event.deliveryId !== \"string\" || event.deliveryId.trim().length === 0) {\n throw new Error(\"createShopifyDiscountSyncJobId: deliveryId is required for DISCOUNT_WEBHOOK\");\n }\n return createShopifyWebhookJobDigest(\"discount-sync\", event.shopId, event.deliveryId);\n }\n\n if (typeof event.requestedAt !== \"string\" || event.requestedAt.trim().length === 0) {\n throw new Error(\"createShopifyDiscountSyncJobId: requestedAt must be a non-empty ISO datetime string\");\n }\n\n return createShopifyWebhookJobDigest(\"discount-sync\", `${event.shopId}:${event.reason}`, event.requestedAt);\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAE3B,SAAS,8BAA8B,QAAgB,OAAe,QAAwB;AAC5F,MAAI,OAAO,UAAU,YAAY,MAAM,WAAW,GAAG;AACnD,UAAM,IAAI,MAAM,GAAG,MAAM,0CAA0C;AAAA,EACrE;AAEA,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AACrD,UAAM,IAAI,MAAM,GAAG,MAAM,2CAA2C;AAAA,EACtE;AAEA,QAAM,SAAS,WAAW,QAAQ,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE,EAAE,OAAO,KAAK;AAC7E,SAAO,GAAG,MAAM,IAAI,MAAM;AAC5B;AAMO,SAAS,0BAA0B,QAAgB,YAA4B;AACpF,SAAO,8BAA8B,WAAW,QAAQ,UAAU;AACpE;AAEO,SAAS,2BAA2B,QAAgB,eAA+B;AACxF,SAAO,8BAA8B,YAAY,QAAQ,aAAa;AACxE;AAEO,SAAS,wBAAwB,QAAgB,UAA0B;AAChF,SAAO,8BAA8B,iBAAiB,QAAQ,QAAQ;AACxE;AAEO,SAAS,oCACd,QACA,eACQ;AACR,SAAO,8BAA8B,oBAAoB,QAAQ,aAAa;AAChF;AAEO,SAAS,+BAA+B,OAKpC;AACT,MAAI,OAAO,MAAM,WAAW,YAAY,MAAM,OAAO,KAAK,EAAE,WAAW,GAAG;AACxE,UAAM,IAAI,MAAM,mEAAmE;AAAA,EACrF;AAEA,MAAI,MAAM,WAAW,oBAAoB;AACvC,QAAI,OAAO,MAAM,eAAe,YAAY,MAAM,WAAW,KAAK,EAAE,WAAW,GAAG;AAChF,YAAM,IAAI,MAAM,6EAA6E;AAAA,IAC/F;AACA,WAAO,8BAA8B,iBAAiB,MAAM,QAAQ,MAAM,UAAU;AAAA,EACtF;AAEA,MAAI,OAAO,MAAM,gBAAgB,YAAY,MAAM,YAAY,KAAK,EAAE,WAAW,GAAG;AAClF,UAAM,IAAI,MAAM,qFAAqF;AAAA,EACvG;AAEA,SAAO,8BAA8B,iBAAiB,GAAG,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,WAAW;AAC5G;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modainteract/moda-interact-shared",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -20,6 +20,10 @@
|
|
|
20
20
|
"types": "./dist/billing.d.ts",
|
|
21
21
|
"import": "./dist/billing.js"
|
|
22
22
|
},
|
|
23
|
+
"./recovery-policy": {
|
|
24
|
+
"types": "./dist/recovery-policy.d.ts",
|
|
25
|
+
"import": "./dist/recovery-policy.js"
|
|
26
|
+
},
|
|
23
27
|
"./whatsapp": {
|
|
24
28
|
"types": "./dist/whatsapp.d.ts",
|
|
25
29
|
"import": "./dist/whatsapp.js"
|
|
@@ -77,6 +81,7 @@
|
|
|
77
81
|
"typecheck": "tsc --noEmit",
|
|
78
82
|
"test": "tsx --test \"src/**/*.test.ts\"",
|
|
79
83
|
"validate:billing-entrypoint": "npm run build && node scripts/validate-billing-entrypoint.mjs",
|
|
84
|
+
"validate:recovery-policy-entrypoint": "npm run build && node scripts/validate-recovery-policy-entrypoint.mjs",
|
|
80
85
|
"validate:internationalization-entrypoint": "npm run build && node scripts/validate-internationalization-entrypoint.mjs",
|
|
81
86
|
"validate:merchant-communications-node": "npm run build && node scripts/validate-merchant-communications-node.mjs",
|
|
82
87
|
"validate:testing-node": "npm run build && node scripts/validate-testing-node.mjs",
|