@modainteract/moda-interact-shared 0.7.4 → 0.9.0
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/billing.d.ts
CHANGED
|
@@ -8,11 +8,12 @@ declare const BillingPlanKindSchema: z.ZodEnum<{
|
|
|
8
8
|
PAID_METERED: "PAID_METERED";
|
|
9
9
|
}>;
|
|
10
10
|
type BillingPlanKind = z.infer<typeof BillingPlanKindSchema>;
|
|
11
|
-
declare const BILLING_USAGE_METRICS: readonly ["RECOVERY_CONVERSATION", "OUTBOUND_AUTOMATED_MESSAGE", "DELIVERED_WHATSAPP_MESSAGE"];
|
|
11
|
+
declare const BILLING_USAGE_METRICS: readonly ["RECOVERY_CONVERSATION", "OUTBOUND_AUTOMATED_MESSAGE", "DELIVERED_WHATSAPP_MESSAGE", "RECOVERY_CREDIT_PACK_PURCHASE"];
|
|
12
12
|
declare const BillingUsageMetricSchema: z.ZodEnum<{
|
|
13
13
|
RECOVERY_CONVERSATION: "RECOVERY_CONVERSATION";
|
|
14
14
|
OUTBOUND_AUTOMATED_MESSAGE: "OUTBOUND_AUTOMATED_MESSAGE";
|
|
15
15
|
DELIVERED_WHATSAPP_MESSAGE: "DELIVERED_WHATSAPP_MESSAGE";
|
|
16
|
+
RECOVERY_CREDIT_PACK_PURCHASE: "RECOVERY_CREDIT_PACK_PURCHASE";
|
|
16
17
|
}>;
|
|
17
18
|
type BillingUsageMetric = z.infer<typeof BillingUsageMetricSchema>;
|
|
18
19
|
declare const BILLING_SYSTEM_MESSAGE_CODES: {
|
|
@@ -22,6 +23,13 @@ declare const BILLING_SYSTEM_MESSAGE_CODES: {
|
|
|
22
23
|
readonly PLAN_DOWNGRADE_SCHEDULED: "BILLING_PLAN_DOWNGRADE_SCHEDULED";
|
|
23
24
|
readonly SUBSCRIPTION_ENDED: "BILLING_SUBSCRIPTION_ENDED";
|
|
24
25
|
readonly SAFETY_LIMIT_REACHED: "BILLING_SAFETY_LIMIT_REACHED";
|
|
26
|
+
readonly PLAN_CHANGE_ACTION_REQUIRED: "BILLING_PLAN_CHANGE_ACTION_REQUIRED";
|
|
27
|
+
readonly CANCELLATION_REQUEST_RECEIVED: "BILLING_CANCELLATION_REQUEST_RECEIVED";
|
|
28
|
+
readonly CANCELLATION_COMPLETED: "BILLING_CANCELLATION_COMPLETED";
|
|
29
|
+
readonly CANCELLATION_REJECTED: "BILLING_CANCELLATION_REJECTED";
|
|
30
|
+
readonly REFUND_REQUEST_RECEIVED: "BILLING_REFUND_REQUEST_RECEIVED";
|
|
31
|
+
readonly REFUND_COMPLETED: "BILLING_REFUND_COMPLETED";
|
|
32
|
+
readonly REFUND_REJECTED: "BILLING_REFUND_REJECTED";
|
|
25
33
|
};
|
|
26
34
|
declare const BillingSystemMessageCodeSchema: z.ZodEnum<{
|
|
27
35
|
BILLING_FREE_ALLOWANCE_WARNING: "BILLING_FREE_ALLOWANCE_WARNING";
|
|
@@ -30,8 +38,57 @@ declare const BillingSystemMessageCodeSchema: z.ZodEnum<{
|
|
|
30
38
|
BILLING_PLAN_DOWNGRADE_SCHEDULED: "BILLING_PLAN_DOWNGRADE_SCHEDULED";
|
|
31
39
|
BILLING_SUBSCRIPTION_ENDED: "BILLING_SUBSCRIPTION_ENDED";
|
|
32
40
|
BILLING_SAFETY_LIMIT_REACHED: "BILLING_SAFETY_LIMIT_REACHED";
|
|
41
|
+
BILLING_PLAN_CHANGE_ACTION_REQUIRED: "BILLING_PLAN_CHANGE_ACTION_REQUIRED";
|
|
42
|
+
BILLING_CANCELLATION_REQUEST_RECEIVED: "BILLING_CANCELLATION_REQUEST_RECEIVED";
|
|
43
|
+
BILLING_CANCELLATION_COMPLETED: "BILLING_CANCELLATION_COMPLETED";
|
|
44
|
+
BILLING_CANCELLATION_REJECTED: "BILLING_CANCELLATION_REJECTED";
|
|
45
|
+
BILLING_REFUND_REQUEST_RECEIVED: "BILLING_REFUND_REQUEST_RECEIVED";
|
|
46
|
+
BILLING_REFUND_COMPLETED: "BILLING_REFUND_COMPLETED";
|
|
47
|
+
BILLING_REFUND_REJECTED: "BILLING_REFUND_REJECTED";
|
|
33
48
|
}>;
|
|
34
49
|
type BillingSystemMessageCode = z.infer<typeof BillingSystemMessageCodeSchema>;
|
|
50
|
+
declare const SUBSCRIPTION_CANCELLATION_MODES: readonly ["END_OF_CYCLE", "IMMEDIATE_NO_PRORATION", "IMMEDIATE_PRORATED", "IMMEDIATE_SKIP_FINAL_USAGE"];
|
|
51
|
+
declare const SubscriptionCancellationModeSchema: z.ZodEnum<{
|
|
52
|
+
END_OF_CYCLE: "END_OF_CYCLE";
|
|
53
|
+
IMMEDIATE_NO_PRORATION: "IMMEDIATE_NO_PRORATION";
|
|
54
|
+
IMMEDIATE_PRORATED: "IMMEDIATE_PRORATED";
|
|
55
|
+
IMMEDIATE_SKIP_FINAL_USAGE: "IMMEDIATE_SKIP_FINAL_USAGE";
|
|
56
|
+
}>;
|
|
57
|
+
type SubscriptionCancellationMode = z.infer<typeof SubscriptionCancellationModeSchema>;
|
|
58
|
+
type ShopifySubscriptionCancellationArgs = Readonly<{
|
|
59
|
+
deferCancellation: boolean;
|
|
60
|
+
prorate: boolean;
|
|
61
|
+
skipFinalUsageCharge: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
declare const SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS: {
|
|
64
|
+
readonly END_OF_CYCLE: {
|
|
65
|
+
readonly deferCancellation: true;
|
|
66
|
+
readonly prorate: false;
|
|
67
|
+
readonly skipFinalUsageCharge: false;
|
|
68
|
+
};
|
|
69
|
+
readonly IMMEDIATE_NO_PRORATION: {
|
|
70
|
+
readonly deferCancellation: false;
|
|
71
|
+
readonly prorate: false;
|
|
72
|
+
readonly skipFinalUsageCharge: false;
|
|
73
|
+
};
|
|
74
|
+
readonly IMMEDIATE_PRORATED: {
|
|
75
|
+
readonly deferCancellation: false;
|
|
76
|
+
readonly prorate: true;
|
|
77
|
+
readonly skipFinalUsageCharge: false;
|
|
78
|
+
};
|
|
79
|
+
readonly IMMEDIATE_SKIP_FINAL_USAGE: {
|
|
80
|
+
readonly deferCancellation: false;
|
|
81
|
+
readonly prorate: false;
|
|
82
|
+
readonly skipFinalUsageCharge: true;
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
type PurchasedRecoveryCreditCounterSnapshot = Readonly<{
|
|
86
|
+
grantedQuantity: number;
|
|
87
|
+
committedQuantity: number;
|
|
88
|
+
reservedQuantity: number;
|
|
89
|
+
refundingQuantity: number;
|
|
90
|
+
}>;
|
|
91
|
+
declare function availablePurchasedRecoveryCredits(counter: PurchasedRecoveryCreditCounterSnapshot): number;
|
|
35
92
|
declare const WHATSAPP_PROVIDER_STATUSES: readonly ["SENT", "DELIVERED", "READ", "FAILED"];
|
|
36
93
|
declare const WhatsAppProviderStatusSchema: z.ZodEnum<{
|
|
37
94
|
SENT: "SENT";
|
|
@@ -83,4 +140,4 @@ declare function createMerchantBillingSystemSourceKey(shopId: string, code: Bill
|
|
|
83
140
|
declare function createRecoveryIdempotencyKey(shopId: string, recoveryId: string): string;
|
|
84
141
|
declare function createShopifyUsageIdempotencyKey(shopId: string, usageEventId: string): string;
|
|
85
142
|
|
|
86
|
-
export { ARCH007_BILLING_CONTRACT_SCHEMA_VERSION, BILLING_PLAN_KINDS, BILLING_SYSTEM_MESSAGE_CODES, BILLING_USAGE_METRICS, type BillingPlanKind, BillingPlanKindSchema, type BillingSystemMessageCode, BillingSystemMessageCodeSchema, type BillingUsageMetric, BillingUsageMetricSchema, type NormalizedWhatsAppStatus, NormalizedWhatsAppStatusSchema, WHATSAPP_PROVIDER_STATUSES, WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION, type WhatsAppProviderPricingMetadata, WhatsAppProviderPricingMetadataSchema, type WhatsAppProviderStatus, WhatsAppProviderStatusSchema, createMerchantBillingSystemSourceKey, createRecoveryIdempotencyKey, createShopifyUsageIdempotencyKey, parseNormalizedWhatsAppStatus, safeParseNormalizedWhatsAppStatus };
|
|
143
|
+
export { ARCH007_BILLING_CONTRACT_SCHEMA_VERSION, BILLING_PLAN_KINDS, BILLING_SYSTEM_MESSAGE_CODES, BILLING_USAGE_METRICS, type BillingPlanKind, BillingPlanKindSchema, type BillingSystemMessageCode, BillingSystemMessageCodeSchema, type BillingUsageMetric, BillingUsageMetricSchema, type NormalizedWhatsAppStatus, NormalizedWhatsAppStatusSchema, type PurchasedRecoveryCreditCounterSnapshot, SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS, SUBSCRIPTION_CANCELLATION_MODES, type ShopifySubscriptionCancellationArgs, type SubscriptionCancellationMode, SubscriptionCancellationModeSchema, WHATSAPP_PROVIDER_STATUSES, WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION, type WhatsAppProviderPricingMetadata, WhatsAppProviderPricingMetadataSchema, type WhatsAppProviderStatus, WhatsAppProviderStatusSchema, availablePurchasedRecoveryCredits, createMerchantBillingSystemSourceKey, createRecoveryIdempotencyKey, createShopifyUsageIdempotencyKey, parseNormalizedWhatsAppStatus, safeParseNormalizedWhatsAppStatus };
|
package/dist/billing.js
CHANGED
|
@@ -7,16 +7,20 @@ import {
|
|
|
7
7
|
BillingSystemMessageCodeSchema,
|
|
8
8
|
BillingUsageMetricSchema,
|
|
9
9
|
NormalizedWhatsAppStatusSchema,
|
|
10
|
+
SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS,
|
|
11
|
+
SUBSCRIPTION_CANCELLATION_MODES,
|
|
12
|
+
SubscriptionCancellationModeSchema,
|
|
10
13
|
WHATSAPP_PROVIDER_STATUSES,
|
|
11
14
|
WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION,
|
|
12
15
|
WhatsAppProviderPricingMetadataSchema,
|
|
13
16
|
WhatsAppProviderStatusSchema,
|
|
17
|
+
availablePurchasedRecoveryCredits,
|
|
14
18
|
createMerchantBillingSystemSourceKey,
|
|
15
19
|
createRecoveryIdempotencyKey,
|
|
16
20
|
createShopifyUsageIdempotencyKey,
|
|
17
21
|
parseNormalizedWhatsAppStatus,
|
|
18
22
|
safeParseNormalizedWhatsAppStatus
|
|
19
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-YDKVCS3T.js";
|
|
20
24
|
export {
|
|
21
25
|
ARCH007_BILLING_CONTRACT_SCHEMA_VERSION,
|
|
22
26
|
BILLING_PLAN_KINDS,
|
|
@@ -26,10 +30,14 @@ export {
|
|
|
26
30
|
BillingSystemMessageCodeSchema,
|
|
27
31
|
BillingUsageMetricSchema,
|
|
28
32
|
NormalizedWhatsAppStatusSchema,
|
|
33
|
+
SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS,
|
|
34
|
+
SUBSCRIPTION_CANCELLATION_MODES,
|
|
35
|
+
SubscriptionCancellationModeSchema,
|
|
29
36
|
WHATSAPP_PROVIDER_STATUSES,
|
|
30
37
|
WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION,
|
|
31
38
|
WhatsAppProviderPricingMetadataSchema,
|
|
32
39
|
WhatsAppProviderStatusSchema,
|
|
40
|
+
availablePurchasedRecoveryCredits,
|
|
33
41
|
createMerchantBillingSystemSourceKey,
|
|
34
42
|
createRecoveryIdempotencyKey,
|
|
35
43
|
createShopifyUsageIdempotencyKey,
|
|
@@ -7,7 +7,8 @@ var BillingPlanKindSchema = z.enum(BILLING_PLAN_KINDS);
|
|
|
7
7
|
var BILLING_USAGE_METRICS = [
|
|
8
8
|
"RECOVERY_CONVERSATION",
|
|
9
9
|
"OUTBOUND_AUTOMATED_MESSAGE",
|
|
10
|
-
"DELIVERED_WHATSAPP_MESSAGE"
|
|
10
|
+
"DELIVERED_WHATSAPP_MESSAGE",
|
|
11
|
+
"RECOVERY_CREDIT_PACK_PURCHASE"
|
|
11
12
|
];
|
|
12
13
|
var BillingUsageMetricSchema = z.enum(BILLING_USAGE_METRICS);
|
|
13
14
|
var BILLING_SYSTEM_MESSAGE_CODES = {
|
|
@@ -16,7 +17,14 @@ var BILLING_SYSTEM_MESSAGE_CODES = {
|
|
|
16
17
|
PLAN_UPGRADED: "BILLING_PLAN_UPGRADED",
|
|
17
18
|
PLAN_DOWNGRADE_SCHEDULED: "BILLING_PLAN_DOWNGRADE_SCHEDULED",
|
|
18
19
|
SUBSCRIPTION_ENDED: "BILLING_SUBSCRIPTION_ENDED",
|
|
19
|
-
SAFETY_LIMIT_REACHED: "BILLING_SAFETY_LIMIT_REACHED"
|
|
20
|
+
SAFETY_LIMIT_REACHED: "BILLING_SAFETY_LIMIT_REACHED",
|
|
21
|
+
PLAN_CHANGE_ACTION_REQUIRED: "BILLING_PLAN_CHANGE_ACTION_REQUIRED",
|
|
22
|
+
CANCELLATION_REQUEST_RECEIVED: "BILLING_CANCELLATION_REQUEST_RECEIVED",
|
|
23
|
+
CANCELLATION_COMPLETED: "BILLING_CANCELLATION_COMPLETED",
|
|
24
|
+
CANCELLATION_REJECTED: "BILLING_CANCELLATION_REJECTED",
|
|
25
|
+
REFUND_REQUEST_RECEIVED: "BILLING_REFUND_REQUEST_RECEIVED",
|
|
26
|
+
REFUND_COMPLETED: "BILLING_REFUND_COMPLETED",
|
|
27
|
+
REFUND_REJECTED: "BILLING_REFUND_REJECTED"
|
|
20
28
|
};
|
|
21
29
|
var BILLING_SYSTEM_MESSAGE_CODE_VALUES = [
|
|
22
30
|
BILLING_SYSTEM_MESSAGE_CODES.FREE_ALLOWANCE_WARNING,
|
|
@@ -24,9 +32,56 @@ var BILLING_SYSTEM_MESSAGE_CODE_VALUES = [
|
|
|
24
32
|
BILLING_SYSTEM_MESSAGE_CODES.PLAN_UPGRADED,
|
|
25
33
|
BILLING_SYSTEM_MESSAGE_CODES.PLAN_DOWNGRADE_SCHEDULED,
|
|
26
34
|
BILLING_SYSTEM_MESSAGE_CODES.SUBSCRIPTION_ENDED,
|
|
27
|
-
BILLING_SYSTEM_MESSAGE_CODES.SAFETY_LIMIT_REACHED
|
|
35
|
+
BILLING_SYSTEM_MESSAGE_CODES.SAFETY_LIMIT_REACHED,
|
|
36
|
+
BILLING_SYSTEM_MESSAGE_CODES.PLAN_CHANGE_ACTION_REQUIRED,
|
|
37
|
+
BILLING_SYSTEM_MESSAGE_CODES.CANCELLATION_REQUEST_RECEIVED,
|
|
38
|
+
BILLING_SYSTEM_MESSAGE_CODES.CANCELLATION_COMPLETED,
|
|
39
|
+
BILLING_SYSTEM_MESSAGE_CODES.CANCELLATION_REJECTED,
|
|
40
|
+
BILLING_SYSTEM_MESSAGE_CODES.REFUND_REQUEST_RECEIVED,
|
|
41
|
+
BILLING_SYSTEM_MESSAGE_CODES.REFUND_COMPLETED,
|
|
42
|
+
BILLING_SYSTEM_MESSAGE_CODES.REFUND_REJECTED
|
|
28
43
|
];
|
|
29
44
|
var BillingSystemMessageCodeSchema = z.enum(BILLING_SYSTEM_MESSAGE_CODE_VALUES);
|
|
45
|
+
var SUBSCRIPTION_CANCELLATION_MODES = [
|
|
46
|
+
"END_OF_CYCLE",
|
|
47
|
+
"IMMEDIATE_NO_PRORATION",
|
|
48
|
+
"IMMEDIATE_PRORATED",
|
|
49
|
+
"IMMEDIATE_SKIP_FINAL_USAGE"
|
|
50
|
+
];
|
|
51
|
+
var SubscriptionCancellationModeSchema = z.enum(SUBSCRIPTION_CANCELLATION_MODES);
|
|
52
|
+
var SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS = {
|
|
53
|
+
END_OF_CYCLE: {
|
|
54
|
+
deferCancellation: true,
|
|
55
|
+
prorate: false,
|
|
56
|
+
skipFinalUsageCharge: false
|
|
57
|
+
},
|
|
58
|
+
IMMEDIATE_NO_PRORATION: {
|
|
59
|
+
deferCancellation: false,
|
|
60
|
+
prorate: false,
|
|
61
|
+
skipFinalUsageCharge: false
|
|
62
|
+
},
|
|
63
|
+
IMMEDIATE_PRORATED: {
|
|
64
|
+
deferCancellation: false,
|
|
65
|
+
prorate: true,
|
|
66
|
+
skipFinalUsageCharge: false
|
|
67
|
+
},
|
|
68
|
+
IMMEDIATE_SKIP_FINAL_USAGE: {
|
|
69
|
+
deferCancellation: false,
|
|
70
|
+
prorate: false,
|
|
71
|
+
skipFinalUsageCharge: true
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
function availablePurchasedRecoveryCredits(counter) {
|
|
75
|
+
for (const [name, value] of Object.entries(counter)) {
|
|
76
|
+
if (!Number.isInteger(value) || value < 0) {
|
|
77
|
+
throw new Error(`${name} must be a non-negative integer`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return Math.max(
|
|
81
|
+
counter.grantedQuantity - counter.committedQuantity - counter.reservedQuantity - counter.refundingQuantity,
|
|
82
|
+
0
|
|
83
|
+
);
|
|
84
|
+
}
|
|
30
85
|
var WHATSAPP_PROVIDER_STATUSES = [
|
|
31
86
|
"SENT",
|
|
32
87
|
"DELIVERED",
|
|
@@ -104,6 +159,10 @@ export {
|
|
|
104
159
|
BillingUsageMetricSchema,
|
|
105
160
|
BILLING_SYSTEM_MESSAGE_CODES,
|
|
106
161
|
BillingSystemMessageCodeSchema,
|
|
162
|
+
SUBSCRIPTION_CANCELLATION_MODES,
|
|
163
|
+
SubscriptionCancellationModeSchema,
|
|
164
|
+
SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS,
|
|
165
|
+
availablePurchasedRecoveryCredits,
|
|
107
166
|
WHATSAPP_PROVIDER_STATUSES,
|
|
108
167
|
WhatsAppProviderStatusSchema,
|
|
109
168
|
WhatsAppProviderPricingMetadataSchema,
|
|
@@ -114,4 +173,4 @@ export {
|
|
|
114
173
|
createRecoveryIdempotencyKey,
|
|
115
174
|
createShopifyUsageIdempotencyKey
|
|
116
175
|
};
|
|
117
|
-
//# sourceMappingURL=chunk-
|
|
176
|
+
//# sourceMappingURL=chunk-YDKVCS3T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/billing.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const ARCH007_BILLING_CONTRACT_SCHEMA_VERSION = 1 as const;\nexport const WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION = 2 as const;\n\nexport const BILLING_PLAN_KINDS = [\"FREE\", \"PAID_METERED\"] as const;\nexport const BillingPlanKindSchema = z.enum(BILLING_PLAN_KINDS);\nexport type BillingPlanKind = z.infer<typeof BillingPlanKindSchema>;\n\nexport const BILLING_USAGE_METRICS = [\n \"RECOVERY_CONVERSATION\",\n \"OUTBOUND_AUTOMATED_MESSAGE\",\n \"DELIVERED_WHATSAPP_MESSAGE\",\n \"RECOVERY_CREDIT_PACK_PURCHASE\",\n] as const;\nexport const BillingUsageMetricSchema = z.enum(BILLING_USAGE_METRICS);\nexport type BillingUsageMetric = z.infer<typeof BillingUsageMetricSchema>;\n\nexport const BILLING_SYSTEM_MESSAGE_CODES = {\n FREE_ALLOWANCE_WARNING: \"BILLING_FREE_ALLOWANCE_WARNING\",\n FREE_ALLOWANCE_EXHAUSTED: \"BILLING_FREE_ALLOWANCE_EXHAUSTED\",\n PLAN_UPGRADED: \"BILLING_PLAN_UPGRADED\",\n PLAN_DOWNGRADE_SCHEDULED: \"BILLING_PLAN_DOWNGRADE_SCHEDULED\",\n SUBSCRIPTION_ENDED: \"BILLING_SUBSCRIPTION_ENDED\",\n SAFETY_LIMIT_REACHED: \"BILLING_SAFETY_LIMIT_REACHED\",\n PLAN_CHANGE_ACTION_REQUIRED: \"BILLING_PLAN_CHANGE_ACTION_REQUIRED\",\n CANCELLATION_REQUEST_RECEIVED: \"BILLING_CANCELLATION_REQUEST_RECEIVED\",\n CANCELLATION_COMPLETED: \"BILLING_CANCELLATION_COMPLETED\",\n CANCELLATION_REJECTED: \"BILLING_CANCELLATION_REJECTED\",\n REFUND_REQUEST_RECEIVED: \"BILLING_REFUND_REQUEST_RECEIVED\",\n REFUND_COMPLETED: \"BILLING_REFUND_COMPLETED\",\n REFUND_REJECTED: \"BILLING_REFUND_REJECTED\",\n} as const;\n\nconst BILLING_SYSTEM_MESSAGE_CODE_VALUES = [\n BILLING_SYSTEM_MESSAGE_CODES.FREE_ALLOWANCE_WARNING,\n BILLING_SYSTEM_MESSAGE_CODES.FREE_ALLOWANCE_EXHAUSTED,\n BILLING_SYSTEM_MESSAGE_CODES.PLAN_UPGRADED,\n BILLING_SYSTEM_MESSAGE_CODES.PLAN_DOWNGRADE_SCHEDULED,\n BILLING_SYSTEM_MESSAGE_CODES.SUBSCRIPTION_ENDED,\n BILLING_SYSTEM_MESSAGE_CODES.SAFETY_LIMIT_REACHED,\n BILLING_SYSTEM_MESSAGE_CODES.PLAN_CHANGE_ACTION_REQUIRED,\n BILLING_SYSTEM_MESSAGE_CODES.CANCELLATION_REQUEST_RECEIVED,\n BILLING_SYSTEM_MESSAGE_CODES.CANCELLATION_COMPLETED,\n BILLING_SYSTEM_MESSAGE_CODES.CANCELLATION_REJECTED,\n BILLING_SYSTEM_MESSAGE_CODES.REFUND_REQUEST_RECEIVED,\n BILLING_SYSTEM_MESSAGE_CODES.REFUND_COMPLETED,\n BILLING_SYSTEM_MESSAGE_CODES.REFUND_REJECTED,\n] as const;\n\nexport const BillingSystemMessageCodeSchema = z.enum(BILLING_SYSTEM_MESSAGE_CODE_VALUES);\nexport type BillingSystemMessageCode = z.infer<typeof BillingSystemMessageCodeSchema>;\n\nexport const SUBSCRIPTION_CANCELLATION_MODES = [\n \"END_OF_CYCLE\",\n \"IMMEDIATE_NO_PRORATION\",\n \"IMMEDIATE_PRORATED\",\n \"IMMEDIATE_SKIP_FINAL_USAGE\",\n] as const;\n\nexport const SubscriptionCancellationModeSchema = z.enum(SUBSCRIPTION_CANCELLATION_MODES);\nexport type SubscriptionCancellationMode = z.infer<typeof SubscriptionCancellationModeSchema>;\n\nexport type ShopifySubscriptionCancellationArgs = Readonly<{\n deferCancellation: boolean;\n prorate: boolean;\n skipFinalUsageCharge: boolean;\n}>;\n\nexport const SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS = {\n END_OF_CYCLE: {\n deferCancellation: true,\n prorate: false,\n skipFinalUsageCharge: false,\n },\n IMMEDIATE_NO_PRORATION: {\n deferCancellation: false,\n prorate: false,\n skipFinalUsageCharge: false,\n },\n IMMEDIATE_PRORATED: {\n deferCancellation: false,\n prorate: true,\n skipFinalUsageCharge: false,\n },\n IMMEDIATE_SKIP_FINAL_USAGE: {\n deferCancellation: false,\n prorate: false,\n skipFinalUsageCharge: true,\n },\n} as const satisfies Readonly<\n Record<SubscriptionCancellationMode, ShopifySubscriptionCancellationArgs>\n>;\n\nexport type PurchasedRecoveryCreditCounterSnapshot = Readonly<{\n grantedQuantity: number;\n committedQuantity: number;\n reservedQuantity: number;\n refundingQuantity: number;\n}>;\n\nexport function availablePurchasedRecoveryCredits(\n counter: PurchasedRecoveryCreditCounterSnapshot,\n): number {\n for (const [name, value] of Object.entries(counter)) {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(`${name} must be a non-negative integer`);\n }\n }\n\n return Math.max(\n counter.grantedQuantity\n - counter.committedQuantity\n - counter.reservedQuantity\n - counter.refundingQuantity,\n 0,\n );\n}\n\nexport const WHATSAPP_PROVIDER_STATUSES = [\n \"SENT\",\n \"DELIVERED\",\n \"READ\",\n \"FAILED\",\n] as const;\nexport const WhatsAppProviderStatusSchema = z.enum(WHATSAPP_PROVIDER_STATUSES);\nexport type WhatsAppProviderStatus = z.infer<typeof WhatsAppProviderStatusSchema>;\n\nconst MAX_ID_LENGTH = 128;\nconst MAX_SHORT_TEXT_LENGTH = 128;\n\nexport const WhatsAppProviderPricingMetadataSchema = z\n .object({\n billable: z.boolean().optional(),\n category: z.string().trim().min(1).max(MAX_SHORT_TEXT_LENGTH).optional(),\n model: z.string().trim().min(1).max(MAX_SHORT_TEXT_LENGTH).optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, \"pricing metadata must not be empty\");\n\nexport type WhatsAppProviderPricingMetadata = z.infer<\n typeof WhatsAppProviderPricingMetadataSchema\n>;\n\nexport const NormalizedWhatsAppStatusSchema = z\n .object({\n schemaVersion: z.literal(WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION),\n providerAccountId: z.string().trim().min(1).max(MAX_ID_LENGTH),\n providerPhoneNumberId: z.string().trim().min(1).max(MAX_ID_LENGTH),\n providerMessageId: z.string().trim().min(1).max(MAX_ID_LENGTH),\n status: WhatsAppProviderStatusSchema,\n occurredAt: z.iso.datetime({ offset: true }),\n pricing: WhatsAppProviderPricingMetadataSchema.optional(),\n })\n .strict();\n\nexport type NormalizedWhatsAppStatus = z.infer<typeof NormalizedWhatsAppStatusSchema>;\n\nexport function parseNormalizedWhatsAppStatus(input: unknown): NormalizedWhatsAppStatus {\n return NormalizedWhatsAppStatusSchema.parse(input);\n}\n\nexport function safeParseNormalizedWhatsAppStatus(input: unknown) {\n return NormalizedWhatsAppStatusSchema.safeParse(input);\n}\n\nfunction assertKeyPart(name: string, value: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`${name} must be a non-empty string`);\n }\n}\n\nfunction fnv1a64(value: string): string {\n let hash = 0xcbf29ce484222325n;\n for (const character of value) {\n hash ^= BigInt(character.codePointAt(0) ?? 0);\n hash = BigInt.asUintN(64, hash * 0x100000001b3n);\n }\n return hash.toString(16).padStart(16, \"0\");\n}\n\nfunction boundedKey(prefix: string, parts: string[], maxLength: number): string {\n const canonical = parts.map((part) => part.trim()).join(\":\");\n const readable = `${prefix}:${canonical}`;\n if (readable.length <= maxLength) return readable;\n return `${prefix}:h${fnv1a64(canonical)}`;\n}\n\nexport function createMerchantBillingSystemSourceKey(\n shopId: string,\n code: BillingSystemMessageCode,\n eventIdentity: string,\n version = 1,\n): string {\n assertKeyPart(\"shopId\", shopId);\n assertKeyPart(\"code\", code);\n assertKeyPart(\"eventIdentity\", eventIdentity);\n if (!Number.isInteger(version) || version < 1) {\n throw new Error(\"version must be a positive integer\");\n }\n return boundedKey(\"billing-system\", [shopId, code, eventIdentity, String(version)], 255);\n}\n\nexport function createRecoveryIdempotencyKey(shopId: string, recoveryId: string): string {\n assertKeyPart(\"shopId\", shopId);\n assertKeyPart(\"recoveryId\", recoveryId);\n return boundedKey(\"recovery\", [shopId, recoveryId], 255);\n}\n\nexport function createShopifyUsageIdempotencyKey(\n shopId: string,\n usageEventId: string,\n): string {\n assertKeyPart(\"shopId\", shopId);\n assertKeyPart(\"usageEventId\", usageEventId);\n return boundedKey(\"shopify\", [shopId, usageEventId], 64);\n}"],"mappings":"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","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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
|
-
export { ARCH007_BILLING_CONTRACT_SCHEMA_VERSION, BILLING_PLAN_KINDS, BILLING_SYSTEM_MESSAGE_CODES, BILLING_USAGE_METRICS, BillingPlanKind, BillingPlanKindSchema, BillingSystemMessageCode, BillingSystemMessageCodeSchema, BillingUsageMetric, BillingUsageMetricSchema, NormalizedWhatsAppStatus, NormalizedWhatsAppStatusSchema, WHATSAPP_PROVIDER_STATUSES, WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION, WhatsAppProviderPricingMetadata, WhatsAppProviderPricingMetadataSchema, WhatsAppProviderStatus, WhatsAppProviderStatusSchema, createMerchantBillingSystemSourceKey, createRecoveryIdempotencyKey, createShopifyUsageIdempotencyKey, parseNormalizedWhatsAppStatus, safeParseNormalizedWhatsAppStatus } from './billing.js';
|
|
2
|
+
export { ARCH007_BILLING_CONTRACT_SCHEMA_VERSION, BILLING_PLAN_KINDS, BILLING_SYSTEM_MESSAGE_CODES, BILLING_USAGE_METRICS, BillingPlanKind, BillingPlanKindSchema, BillingSystemMessageCode, BillingSystemMessageCodeSchema, BillingUsageMetric, BillingUsageMetricSchema, NormalizedWhatsAppStatus, NormalizedWhatsAppStatusSchema, PurchasedRecoveryCreditCounterSnapshot, SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS, SUBSCRIPTION_CANCELLATION_MODES, ShopifySubscriptionCancellationArgs, SubscriptionCancellationMode, SubscriptionCancellationModeSchema, WHATSAPP_PROVIDER_STATUSES, WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION, WhatsAppProviderPricingMetadata, WhatsAppProviderPricingMetadataSchema, WhatsAppProviderStatus, WhatsAppProviderStatusSchema, availablePurchasedRecoveryCredits, createMerchantBillingSystemSourceKey, createRecoveryIdempotencyKey, createShopifyUsageIdempotencyKey, parseNormalizedWhatsAppStatus, 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
4
|
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_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, ShopifyMoney, ShopifyMoneySchema, ShopifyOrderCompletedEvent, ShopifyOrderCompletedEventSchema, ShopifyOrderCompletedEventV2, ShopifyOrderCompletedEventV2Schema, ShopifyRecoveryEventTypeV2, ShopifyRecoveryEventV2, ShopifyRecoveryEventV2Schema, ShopifyTenant, ShopifyTenantSchema, createShopifyCartActivityOrderingKey, createShopifyCommerceOrderingKey, createShopifyOrderCorrelationOrderingKey, createShopifyOrderOrderingKey, createShopifyPendingRecoveryOrderingKey, isCartActivityEventV2, isCheckoutCreatedEventV2, isCheckoutObservedEvent, isCheckoutUpdatedEventV2, isOrderCompletedEvent, isOrderCompletedEventV2, parseShopifyCommerceEvent, parseShopifyRecoveryEventV2, safeParseShopifyCommerceEvent, safeParseShopifyRecoveryEventV2 } from './shopify/index.js';
|
|
5
5
|
import 'zod';
|
package/dist/index.js
CHANGED
|
@@ -7,16 +7,20 @@ import {
|
|
|
7
7
|
BillingSystemMessageCodeSchema,
|
|
8
8
|
BillingUsageMetricSchema,
|
|
9
9
|
NormalizedWhatsAppStatusSchema,
|
|
10
|
+
SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS,
|
|
11
|
+
SUBSCRIPTION_CANCELLATION_MODES,
|
|
12
|
+
SubscriptionCancellationModeSchema,
|
|
10
13
|
WHATSAPP_PROVIDER_STATUSES,
|
|
11
14
|
WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION,
|
|
12
15
|
WhatsAppProviderPricingMetadataSchema,
|
|
13
16
|
WhatsAppProviderStatusSchema,
|
|
17
|
+
availablePurchasedRecoveryCredits,
|
|
14
18
|
createMerchantBillingSystemSourceKey,
|
|
15
19
|
createRecoveryIdempotencyKey,
|
|
16
20
|
createShopifyUsageIdempotencyKey,
|
|
17
21
|
parseNormalizedWhatsAppStatus,
|
|
18
22
|
safeParseNormalizedWhatsAppStatus
|
|
19
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-YDKVCS3T.js";
|
|
20
24
|
import {
|
|
21
25
|
AuthoredSupportBodySchema,
|
|
22
26
|
MERCHANT_COMMUNICATIONS_JOB_NAMES,
|
|
@@ -146,8 +150,10 @@ export {
|
|
|
146
150
|
SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V2,
|
|
147
151
|
SHOPIFY_COMMERCE_EVENT_TYPES,
|
|
148
152
|
SHOPIFY_RECOVERY_EVENT_TYPES_V2,
|
|
153
|
+
SHOPIFY_SUBSCRIPTION_CANCELLATION_ARGS,
|
|
149
154
|
SHOPIFY_WEBHOOK_OUTBOX_DESTINATIONS,
|
|
150
155
|
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS,
|
|
156
|
+
SUBSCRIPTION_CANCELLATION_MODES,
|
|
151
157
|
ShopifyCartActivityEventV2Schema,
|
|
152
158
|
ShopifyCartActivityPayloadV2Schema,
|
|
153
159
|
ShopifyCheckoutCreatedEventV2Schema,
|
|
@@ -162,6 +168,7 @@ export {
|
|
|
162
168
|
ShopifyOrderCompletedEventV2Schema,
|
|
163
169
|
ShopifyRecoveryEventV2Schema,
|
|
164
170
|
ShopifyTenantSchema,
|
|
171
|
+
SubscriptionCancellationModeSchema,
|
|
165
172
|
TimeZoneIdSchema,
|
|
166
173
|
TranslatedSupportBodySchema,
|
|
167
174
|
TranslationBatchPollJobSchema,
|
|
@@ -173,6 +180,7 @@ export {
|
|
|
173
180
|
WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION,
|
|
174
181
|
WhatsAppProviderPricingMetadataSchema,
|
|
175
182
|
WhatsAppProviderStatusSchema,
|
|
183
|
+
availablePurchasedRecoveryCredits,
|
|
176
184
|
canonicaliseLanguageTag,
|
|
177
185
|
countUnicodeGraphemes,
|
|
178
186
|
createInternationalizationRuntime,
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/billing.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const ARCH007_BILLING_CONTRACT_SCHEMA_VERSION = 1 as const;\nexport const WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION = 2 as const;\n\nexport const BILLING_PLAN_KINDS = [\"FREE\", \"PAID_METERED\"] as const;\nexport const BillingPlanKindSchema = z.enum(BILLING_PLAN_KINDS);\nexport type BillingPlanKind = z.infer<typeof BillingPlanKindSchema>;\n\nexport const BILLING_USAGE_METRICS = [\n \"RECOVERY_CONVERSATION\",\n \"OUTBOUND_AUTOMATED_MESSAGE\",\n \"DELIVERED_WHATSAPP_MESSAGE\",\n] as const;\nexport const BillingUsageMetricSchema = z.enum(BILLING_USAGE_METRICS);\nexport type BillingUsageMetric = z.infer<typeof BillingUsageMetricSchema>;\n\nexport const BILLING_SYSTEM_MESSAGE_CODES = {\n FREE_ALLOWANCE_WARNING: \"BILLING_FREE_ALLOWANCE_WARNING\",\n FREE_ALLOWANCE_EXHAUSTED: \"BILLING_FREE_ALLOWANCE_EXHAUSTED\",\n PLAN_UPGRADED: \"BILLING_PLAN_UPGRADED\",\n PLAN_DOWNGRADE_SCHEDULED: \"BILLING_PLAN_DOWNGRADE_SCHEDULED\",\n SUBSCRIPTION_ENDED: \"BILLING_SUBSCRIPTION_ENDED\",\n SAFETY_LIMIT_REACHED: \"BILLING_SAFETY_LIMIT_REACHED\",\n} as const;\n\nconst BILLING_SYSTEM_MESSAGE_CODE_VALUES = [\n BILLING_SYSTEM_MESSAGE_CODES.FREE_ALLOWANCE_WARNING,\n BILLING_SYSTEM_MESSAGE_CODES.FREE_ALLOWANCE_EXHAUSTED,\n BILLING_SYSTEM_MESSAGE_CODES.PLAN_UPGRADED,\n BILLING_SYSTEM_MESSAGE_CODES.PLAN_DOWNGRADE_SCHEDULED,\n BILLING_SYSTEM_MESSAGE_CODES.SUBSCRIPTION_ENDED,\n BILLING_SYSTEM_MESSAGE_CODES.SAFETY_LIMIT_REACHED,\n] as const;\n\nexport const BillingSystemMessageCodeSchema = z.enum(BILLING_SYSTEM_MESSAGE_CODE_VALUES);\nexport type BillingSystemMessageCode = z.infer<typeof BillingSystemMessageCodeSchema>;\n\nexport const WHATSAPP_PROVIDER_STATUSES = [\n \"SENT\",\n \"DELIVERED\",\n \"READ\",\n \"FAILED\",\n] as const;\nexport const WhatsAppProviderStatusSchema = z.enum(WHATSAPP_PROVIDER_STATUSES);\nexport type WhatsAppProviderStatus = z.infer<typeof WhatsAppProviderStatusSchema>;\n\nconst MAX_ID_LENGTH = 128;\nconst MAX_SHORT_TEXT_LENGTH = 128;\n\nexport const WhatsAppProviderPricingMetadataSchema = z\n .object({\n billable: z.boolean().optional(),\n category: z.string().trim().min(1).max(MAX_SHORT_TEXT_LENGTH).optional(),\n model: z.string().trim().min(1).max(MAX_SHORT_TEXT_LENGTH).optional(),\n })\n .strict()\n .refine((value) => Object.keys(value).length > 0, \"pricing metadata must not be empty\");\n\nexport type WhatsAppProviderPricingMetadata = z.infer<\n typeof WhatsAppProviderPricingMetadataSchema\n>;\n\nexport const NormalizedWhatsAppStatusSchema = z\n .object({\n schemaVersion: z.literal(WHATSAPP_PROVIDER_STATUS_SCHEMA_VERSION),\n providerAccountId: z.string().trim().min(1).max(MAX_ID_LENGTH),\n providerPhoneNumberId: z.string().trim().min(1).max(MAX_ID_LENGTH),\n providerMessageId: z.string().trim().min(1).max(MAX_ID_LENGTH),\n status: WhatsAppProviderStatusSchema,\n occurredAt: z.iso.datetime({ offset: true }),\n pricing: WhatsAppProviderPricingMetadataSchema.optional(),\n })\n .strict();\n\nexport type NormalizedWhatsAppStatus = z.infer<typeof NormalizedWhatsAppStatusSchema>;\n\nexport function parseNormalizedWhatsAppStatus(input: unknown): NormalizedWhatsAppStatus {\n return NormalizedWhatsAppStatusSchema.parse(input);\n}\n\nexport function safeParseNormalizedWhatsAppStatus(input: unknown) {\n return NormalizedWhatsAppStatusSchema.safeParse(input);\n}\n\nfunction assertKeyPart(name: string, value: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new Error(`${name} must be a non-empty string`);\n }\n}\n\nfunction fnv1a64(value: string): string {\n let hash = 0xcbf29ce484222325n;\n for (const character of value) {\n hash ^= BigInt(character.codePointAt(0) ?? 0);\n hash = BigInt.asUintN(64, hash * 0x100000001b3n);\n }\n return hash.toString(16).padStart(16, \"0\");\n}\n\nfunction boundedKey(prefix: string, parts: string[], maxLength: number): string {\n const canonical = parts.map((part) => part.trim()).join(\":\");\n const readable = `${prefix}:${canonical}`;\n if (readable.length <= maxLength) return readable;\n return `${prefix}:h${fnv1a64(canonical)}`;\n}\n\nexport function createMerchantBillingSystemSourceKey(\n shopId: string,\n code: BillingSystemMessageCode,\n eventIdentity: string,\n version = 1,\n): string {\n assertKeyPart(\"shopId\", shopId);\n assertKeyPart(\"code\", code);\n assertKeyPart(\"eventIdentity\", eventIdentity);\n if (!Number.isInteger(version) || version < 1) {\n throw new Error(\"version must be a positive integer\");\n }\n return boundedKey(\"billing-system\", [shopId, code, eventIdentity, String(version)], 255);\n}\n\nexport function createRecoveryIdempotencyKey(shopId: string, recoveryId: string): string {\n assertKeyPart(\"shopId\", shopId);\n assertKeyPart(\"recoveryId\", recoveryId);\n return boundedKey(\"recovery\", [shopId, recoveryId], 255);\n}\n\nexport function createShopifyUsageIdempotencyKey(\n shopId: string,\n usageEventId: string,\n): string {\n assertKeyPart(\"shopId\", shopId);\n assertKeyPart(\"usageEventId\", usageEventId);\n return boundedKey(\"shopify\", [shopId, usageEventId], 64);\n}"],"mappings":"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","names":[]}
|