@modainteract/moda-interact-shared 0.6.0 → 0.6.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.
@@ -0,0 +1,340 @@
1
+ // src/internationalization.ts
2
+ import { z } from "zod";
3
+ var ISO_COUNTRY_CODE_PATTERN = /^[A-Z]{2}$/;
4
+ var ISO_CURRENCY_CODE_PATTERN = /^[A-Z]{3}$/;
5
+ var ISO_3166_ALPHA_2_CODES = /* @__PURE__ */ new Set([
6
+ "AF",
7
+ "AL",
8
+ "DZ",
9
+ "AS",
10
+ "AD",
11
+ "AO",
12
+ "AI",
13
+ "AQ",
14
+ "AG",
15
+ "AR",
16
+ "AM",
17
+ "AW",
18
+ "AU",
19
+ "AX",
20
+ "AT",
21
+ "AZ",
22
+ "BS",
23
+ "BH",
24
+ "BD",
25
+ "BB",
26
+ "BY",
27
+ "BE",
28
+ "BZ",
29
+ "BJ",
30
+ "BM",
31
+ "BT",
32
+ "BO",
33
+ "BQ",
34
+ "BA",
35
+ "BW",
36
+ "BV",
37
+ "BR",
38
+ "IO",
39
+ "BN",
40
+ "BG",
41
+ "BF",
42
+ "BI",
43
+ "CV",
44
+ "KH",
45
+ "CM",
46
+ "CA",
47
+ "KY",
48
+ "CF",
49
+ "TD",
50
+ "CL",
51
+ "CN",
52
+ "CX",
53
+ "CC",
54
+ "CO",
55
+ "KM",
56
+ "CG",
57
+ "CD",
58
+ "CK",
59
+ "CR",
60
+ "CI",
61
+ "HR",
62
+ "CU",
63
+ "CW",
64
+ "CY",
65
+ "CZ",
66
+ "DK",
67
+ "DJ",
68
+ "DM",
69
+ "DO",
70
+ "EC",
71
+ "EG",
72
+ "SV",
73
+ "GQ",
74
+ "ER",
75
+ "EE",
76
+ "SZ",
77
+ "ET",
78
+ "FK",
79
+ "FO",
80
+ "FJ",
81
+ "FI",
82
+ "FR",
83
+ "GF",
84
+ "PF",
85
+ "TF",
86
+ "GA",
87
+ "GM",
88
+ "GE",
89
+ "DE",
90
+ "GH",
91
+ "GI",
92
+ "GR",
93
+ "GL",
94
+ "GD",
95
+ "GP",
96
+ "GU",
97
+ "GT",
98
+ "GG",
99
+ "GN",
100
+ "GW",
101
+ "GY",
102
+ "HT",
103
+ "HM",
104
+ "VA",
105
+ "HN",
106
+ "HK",
107
+ "HU",
108
+ "IS",
109
+ "IN",
110
+ "ID",
111
+ "IR",
112
+ "IQ",
113
+ "IE",
114
+ "IM",
115
+ "IL",
116
+ "IT",
117
+ "JM",
118
+ "JP",
119
+ "JE",
120
+ "JO",
121
+ "KZ",
122
+ "KE",
123
+ "KI",
124
+ "KP",
125
+ "KR",
126
+ "KW",
127
+ "KG",
128
+ "LA",
129
+ "LV",
130
+ "LB",
131
+ "LS",
132
+ "LR",
133
+ "LY",
134
+ "LI",
135
+ "LT",
136
+ "LU",
137
+ "MO",
138
+ "MG",
139
+ "MW",
140
+ "MY",
141
+ "MV",
142
+ "ML",
143
+ "MT",
144
+ "MH",
145
+ "MQ",
146
+ "MR",
147
+ "MU",
148
+ "YT",
149
+ "MX",
150
+ "FM",
151
+ "MD",
152
+ "MC",
153
+ "MN",
154
+ "ME",
155
+ "MS",
156
+ "MA",
157
+ "MZ",
158
+ "MM",
159
+ "NA",
160
+ "NR",
161
+ "NP",
162
+ "NL",
163
+ "NC",
164
+ "NZ",
165
+ "NI",
166
+ "NE",
167
+ "NG",
168
+ "NU",
169
+ "NF",
170
+ "MK",
171
+ "MP",
172
+ "NO",
173
+ "OM",
174
+ "PK",
175
+ "PW",
176
+ "PS",
177
+ "PA",
178
+ "PG",
179
+ "PY",
180
+ "PE",
181
+ "PH",
182
+ "PN",
183
+ "PL",
184
+ "PT",
185
+ "PR",
186
+ "QA",
187
+ "RE",
188
+ "RO",
189
+ "RU",
190
+ "RW",
191
+ "BL",
192
+ "SH",
193
+ "KN",
194
+ "LC",
195
+ "MF",
196
+ "PM",
197
+ "VC",
198
+ "WS",
199
+ "SM",
200
+ "ST",
201
+ "SA",
202
+ "SN",
203
+ "RS",
204
+ "SC",
205
+ "SL",
206
+ "SG",
207
+ "SX",
208
+ "SK",
209
+ "SI",
210
+ "SB",
211
+ "SO",
212
+ "ZA",
213
+ "GS",
214
+ "SS",
215
+ "ES",
216
+ "LK",
217
+ "SD",
218
+ "SR",
219
+ "SJ",
220
+ "SE",
221
+ "CH",
222
+ "SY",
223
+ "TW",
224
+ "TJ",
225
+ "TZ",
226
+ "TH",
227
+ "TL",
228
+ "TG",
229
+ "TK",
230
+ "TO",
231
+ "TT",
232
+ "TN",
233
+ "TR",
234
+ "TM",
235
+ "TC",
236
+ "TV",
237
+ "UG",
238
+ "UA",
239
+ "AE",
240
+ "GB",
241
+ "US",
242
+ "UM",
243
+ "UY",
244
+ "UZ",
245
+ "VU",
246
+ "VE",
247
+ "VN",
248
+ "VG",
249
+ "VI",
250
+ "WF",
251
+ "EH",
252
+ "YE",
253
+ "ZM",
254
+ "ZW"
255
+ ]);
256
+ var supportedCurrencies = new Set(Intl.supportedValuesOf("currency"));
257
+ var LanguageSourceSchema = z.enum([
258
+ "customer-explicit",
259
+ "detected",
260
+ "shopify",
261
+ "merchant-default",
262
+ "platform-default"
263
+ ]);
264
+ function invalidValue(kind, value) {
265
+ return new TypeError(`Invalid ${kind}: ${value}`);
266
+ }
267
+ function canonicaliseLanguageTag(value) {
268
+ if (typeof value !== "string" || !value.trim()) {
269
+ throw invalidValue("BCP-47 language tag", value);
270
+ }
271
+ try {
272
+ return new Intl.Locale(value.trim()).toString();
273
+ } catch {
274
+ throw invalidValue("BCP-47 language tag", value);
275
+ }
276
+ }
277
+ function normalizeCountryCode(value) {
278
+ if (typeof value !== "string") throw invalidValue("ISO 3166-1 alpha-2 country code", value);
279
+ const code = value.trim().toUpperCase();
280
+ if (!ISO_COUNTRY_CODE_PATTERN.test(code)) {
281
+ throw invalidValue("ISO 3166-1 alpha-2 country code", value);
282
+ }
283
+ if (!ISO_3166_ALPHA_2_CODES.has(code)) {
284
+ throw invalidValue("ISO 3166-1 alpha-2 country code", value);
285
+ }
286
+ return code;
287
+ }
288
+ function normalizeCurrencyCode(value) {
289
+ if (typeof value !== "string") throw invalidValue("ISO 4217 currency code", value);
290
+ const code = value.trim().toUpperCase();
291
+ if (!ISO_CURRENCY_CODE_PATTERN.test(code) || !supportedCurrencies.has(code)) {
292
+ throw invalidValue("ISO 4217 currency code", value);
293
+ }
294
+ return code;
295
+ }
296
+ function normalizeTimeZone(value) {
297
+ if (typeof value !== "string" || !value.trim()) {
298
+ throw invalidValue("IANA time-zone identifier", value);
299
+ }
300
+ try {
301
+ return new Intl.DateTimeFormat("en", { timeZone: value.trim() }).resolvedOptions().timeZone;
302
+ } catch {
303
+ throw invalidValue("IANA time-zone identifier", value);
304
+ }
305
+ }
306
+ var LanguageTagSchema = z.string().trim().transform(canonicaliseLanguageTag);
307
+ var CountryCodeSchema = z.string().trim().transform(normalizeCountryCode);
308
+ var CurrencyCodeSchema = z.string().trim().transform(normalizeCurrencyCode);
309
+ var TimeZoneIdSchema = z.string().trim().transform(normalizeTimeZone);
310
+ var InternationalContextSchema = z.object({
311
+ languageTag: LanguageTagSchema.nullable(),
312
+ languageSource: LanguageSourceSchema.nullable(),
313
+ countryCode: CountryCodeSchema.nullable(),
314
+ currencyCode: CurrencyCodeSchema.nullable(),
315
+ timeZone: TimeZoneIdSchema.nullable()
316
+ }).strict();
317
+ function mergeInternationalContext(base, override) {
318
+ return {
319
+ languageTag: override.languageTag ?? base.languageTag,
320
+ languageSource: override.languageSource ?? base.languageSource,
321
+ countryCode: override.countryCode ?? base.countryCode,
322
+ currencyCode: override.currencyCode ?? base.currencyCode,
323
+ timeZone: override.timeZone ?? base.timeZone
324
+ };
325
+ }
326
+
327
+ export {
328
+ LanguageSourceSchema,
329
+ canonicaliseLanguageTag,
330
+ normalizeCountryCode,
331
+ normalizeCurrencyCode,
332
+ normalizeTimeZone,
333
+ LanguageTagSchema,
334
+ CountryCodeSchema,
335
+ CurrencyCodeSchema,
336
+ TimeZoneIdSchema,
337
+ InternationalContextSchema,
338
+ mergeInternationalContext
339
+ };
340
+ //# sourceMappingURL=chunk-TEA7Q3KY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internationalization.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ISO_COUNTRY_CODE_PATTERN = /^[A-Z]{2}$/;\nconst ISO_CURRENCY_CODE_PATTERN = /^[A-Z]{3}$/;\nconst ISO_3166_ALPHA_2_CODES = new Set([\n \"AF\", \"AL\", \"DZ\", \"AS\", \"AD\", \"AO\", \"AI\", \"AQ\", \"AG\", \"AR\", \"AM\", \"AW\", \"AU\", \"AX\", \"AT\", \"AZ\",\n \"BS\", \"BH\", \"BD\", \"BB\", \"BY\", \"BE\", \"BZ\", \"BJ\", \"BM\", \"BT\", \"BO\", \"BQ\", \"BA\", \"BW\", \"BV\", \"BR\", \"IO\", \"BN\", \"BG\", \"BF\", \"BI\", \"CV\", \"KH\", \"CM\", \"CA\", \"KY\", \"CF\", \"TD\", \"CL\", \"CN\", \"CX\", \"CC\", \"CO\", \"KM\", \"CG\", \"CD\", \"CK\", \"CR\", \"CI\", \"HR\", \"CU\", \"CW\", \"CY\", \"CZ\", \"DK\", \"DJ\", \"DM\", \"DO\", \"EC\", \"EG\", \"SV\", \"GQ\", \"ER\", \"EE\", \"SZ\", \"ET\", \"FK\", \"FO\", \"FJ\", \"FI\", \"FR\", \"GF\", \"PF\", \"TF\", \"GA\", \"GM\", \"GE\", \"DE\", \"GH\", \"GI\", \"GR\", \"GL\", \"GD\", \"GP\", \"GU\", \"GT\", \"GG\", \"GN\", \"GW\", \"GY\", \"HT\", \"HM\", \"VA\", \"HN\", \"HK\", \"HU\", \"IS\", \"IN\", \"ID\", \"IR\", \"IQ\", \"IE\", \"IM\", \"IL\", \"IT\", \"JM\", \"JP\", \"JE\", \"JO\", \"KZ\", \"KE\", \"KI\", \"KP\", \"KR\", \"KW\", \"KG\", \"LA\", \"LV\", \"LB\", \"LS\", \"LR\", \"LY\", \"LI\", \"LT\", \"LU\", \"MO\", \"MG\", \"MW\", \"MY\", \"MV\", \"ML\", \"MT\", \"MH\", \"MQ\", \"MR\", \"MU\", \"YT\", \"MX\", \"FM\", \"MD\", \"MC\", \"MN\", \"ME\", \"MS\", \"MA\", \"MZ\", \"MM\", \"NA\", \"NR\", \"NP\", \"NL\", \"NC\", \"NZ\", \"NI\", \"NE\", \"NG\", \"NU\", \"NF\", \"MK\", \"MP\", \"NO\", \"OM\", \"PK\", \"PW\", \"PS\", \"PA\", \"PG\", \"PY\", \"PE\", \"PH\", \"PN\", \"PL\", \"PT\", \"PR\", \"QA\", \"RE\", \"RO\", \"RU\", \"RW\", \"BL\", \"SH\", \"KN\", \"LC\", \"MF\", \"PM\", \"VC\", \"WS\", \"SM\", \"ST\", \"SA\", \"SN\", \"RS\", \"SC\", \"SL\", \"SG\", \"SX\", \"SK\", \"SI\", \"SB\", \"SO\", \"ZA\", \"GS\", \"SS\", \"ES\", \"LK\", \"SD\", \"SR\", \"SJ\", \"SE\", \"CH\", \"SY\", \"TW\", \"TJ\", \"TZ\", \"TH\", \"TL\", \"TG\", \"TK\", \"TO\", \"TT\", \"TN\", \"TR\", \"TM\", \"TC\", \"TV\", \"UG\", \"UA\", \"AE\", \"GB\", \"US\", \"UM\", \"UY\", \"UZ\", \"VU\", \"VE\", \"VN\", \"VG\", \"VI\", \"WF\", \"EH\", \"YE\", \"ZM\", \"ZW\",\n]);\nconst supportedCurrencies = new Set(Intl.supportedValuesOf(\"currency\"));\n\nexport const LanguageSourceSchema = z.enum([\n \"customer-explicit\",\n \"detected\",\n \"shopify\",\n \"merchant-default\",\n \"platform-default\",\n]);\n\nexport type LanguageSource = z.infer<typeof LanguageSourceSchema>;\n\nfunction invalidValue(kind: string, value: string): TypeError {\n return new TypeError(`Invalid ${kind}: ${value}`);\n}\n\nexport function canonicaliseLanguageTag(value: string): string {\n if (typeof value !== \"string\" || !value.trim()) {\n throw invalidValue(\"BCP-47 language tag\", value);\n }\n\n try {\n return new Intl.Locale(value.trim()).toString();\n } catch {\n throw invalidValue(\"BCP-47 language tag\", value);\n }\n}\n\nexport function normalizeCountryCode(value: string): string {\n if (typeof value !== \"string\") throw invalidValue(\"ISO 3166-1 alpha-2 country code\", value);\n const code = value.trim().toUpperCase();\n if (!ISO_COUNTRY_CODE_PATTERN.test(code)) {\n throw invalidValue(\"ISO 3166-1 alpha-2 country code\", value);\n }\n\n if (!ISO_3166_ALPHA_2_CODES.has(code)) {\n throw invalidValue(\"ISO 3166-1 alpha-2 country code\", value);\n }\n\n return code;\n}\n\nexport function normalizeCurrencyCode(value: string): string {\n if (typeof value !== \"string\") throw invalidValue(\"ISO 4217 currency code\", value);\n const code = value.trim().toUpperCase();\n if (!ISO_CURRENCY_CODE_PATTERN.test(code) || !supportedCurrencies.has(code)) {\n throw invalidValue(\"ISO 4217 currency code\", value);\n }\n return code;\n}\n\nexport function normalizeTimeZone(value: string): string {\n if (typeof value !== \"string\" || !value.trim()) {\n throw invalidValue(\"IANA time-zone identifier\", value);\n }\n\n try {\n return new Intl.DateTimeFormat(\"en\", { timeZone: value.trim() }).resolvedOptions().timeZone;\n } catch {\n throw invalidValue(\"IANA time-zone identifier\", value);\n }\n}\n\nexport const LanguageTagSchema = z.string().trim().transform(canonicaliseLanguageTag);\nexport const CountryCodeSchema = z.string().trim().transform(normalizeCountryCode);\nexport const CurrencyCodeSchema = z.string().trim().transform(normalizeCurrencyCode);\nexport const TimeZoneIdSchema = z.string().trim().transform(normalizeTimeZone);\n\nexport const InternationalContextSchema = z\n .object({\n languageTag: LanguageTagSchema.nullable(),\n languageSource: LanguageSourceSchema.nullable(),\n countryCode: CountryCodeSchema.nullable(),\n currencyCode: CurrencyCodeSchema.nullable(),\n timeZone: TimeZoneIdSchema.nullable(),\n })\n .strict();\n\nexport type LanguageTag = z.infer<typeof LanguageTagSchema>;\nexport type CountryCode = z.infer<typeof CountryCodeSchema>;\nexport type CurrencyCode = z.infer<typeof CurrencyCodeSchema>;\nexport type TimeZoneId = z.infer<typeof TimeZoneIdSchema>;\nexport type InternationalContext = z.infer<typeof InternationalContextSchema>;\n\nexport function mergeInternationalContext(\n base: InternationalContext,\n override: InternationalContext,\n): InternationalContext {\n return {\n languageTag: override.languageTag ?? base.languageTag,\n languageSource: override.languageSource ?? base.languageSource,\n countryCode: override.countryCode ?? base.countryCode,\n currencyCode: override.currencyCode ?? base.currencyCode,\n timeZone: override.timeZone ?? base.timeZone,\n };\n}"],"mappings":";AAAA,SAAS,SAAS;AAElB,IAAM,2BAA2B;AACjC,IAAM,4BAA4B;AAClC,IAAM,yBAAyB,oBAAI,IAAI;AAAA,EACrC;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAC1F;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EA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","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ export { CountryCode, CountryCodeSchema, CurrencyCode, CurrencyCodeSchema, InternationalContext, InternationalContextSchema, LanguageSource, LanguageSourceSchema, LanguageTag, LanguageTagSchema, TimeZoneId, TimeZoneIdSchema, canonicaliseLanguageTag, mergeInternationalContext, normalizeCountryCode, normalizeCurrencyCode, normalizeTimeZone } from './internationalization.js';
1
2
  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';
2
3
  import 'zod';
package/dist/index.js CHANGED
@@ -1,3 +1,16 @@
1
+ import {
2
+ CountryCodeSchema,
3
+ CurrencyCodeSchema,
4
+ InternationalContextSchema,
5
+ LanguageSourceSchema,
6
+ LanguageTagSchema,
7
+ TimeZoneIdSchema,
8
+ canonicaliseLanguageTag,
9
+ mergeInternationalContext,
10
+ normalizeCountryCode,
11
+ normalizeCurrencyCode,
12
+ normalizeTimeZone
13
+ } from "./chunk-TEA7Q3KY.js";
1
14
  import {
2
15
  CheckoutCreatedPayloadV2Schema,
3
16
  CheckoutObservedPayloadSchema,
@@ -47,6 +60,11 @@ export {
47
60
  CheckoutCreatedPayloadV2Schema,
48
61
  CheckoutObservedPayloadSchema,
49
62
  CheckoutUpdatedPayloadV2Schema,
63
+ CountryCodeSchema,
64
+ CurrencyCodeSchema,
65
+ InternationalContextSchema,
66
+ LanguageSourceSchema,
67
+ LanguageTagSchema,
50
68
  MAX_LINE_ITEMS,
51
69
  MAX_URL_LENGTH,
52
70
  OrderCompletedPayloadSchema,
@@ -72,6 +90,8 @@ export {
72
90
  ShopifyOrderCompletedEventV2Schema,
73
91
  ShopifyRecoveryEventV2Schema,
74
92
  ShopifyTenantSchema,
93
+ TimeZoneIdSchema,
94
+ canonicaliseLanguageTag,
75
95
  createShopifyCartActivityOrderingKey,
76
96
  createShopifyCommerceOrderingKey,
77
97
  createShopifyOrderCorrelationOrderingKey,
@@ -83,6 +103,10 @@ export {
83
103
  isCheckoutUpdatedEventV2,
84
104
  isOrderCompletedEvent,
85
105
  isOrderCompletedEventV2,
106
+ mergeInternationalContext,
107
+ normalizeCountryCode,
108
+ normalizeCurrencyCode,
109
+ normalizeTimeZone,
86
110
  parseShopifyCommerceEvent,
87
111
  parseShopifyRecoveryEventV2,
88
112
  safeParseShopifyCommerceEvent,
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const LanguageSourceSchema: z.ZodEnum<{
4
+ "customer-explicit": "customer-explicit";
5
+ detected: "detected";
6
+ shopify: "shopify";
7
+ "merchant-default": "merchant-default";
8
+ "platform-default": "platform-default";
9
+ }>;
10
+ type LanguageSource = z.infer<typeof LanguageSourceSchema>;
11
+ declare function canonicaliseLanguageTag(value: string): string;
12
+ declare function normalizeCountryCode(value: string): string;
13
+ declare function normalizeCurrencyCode(value: string): string;
14
+ declare function normalizeTimeZone(value: string): string;
15
+ declare const LanguageTagSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
16
+ declare const CountryCodeSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
17
+ declare const CurrencyCodeSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
18
+ declare const TimeZoneIdSchema: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
19
+ declare const InternationalContextSchema: z.ZodObject<{
20
+ languageTag: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
21
+ languageSource: z.ZodNullable<z.ZodEnum<{
22
+ "customer-explicit": "customer-explicit";
23
+ detected: "detected";
24
+ shopify: "shopify";
25
+ "merchant-default": "merchant-default";
26
+ "platform-default": "platform-default";
27
+ }>>;
28
+ countryCode: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
29
+ currencyCode: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
30
+ timeZone: z.ZodNullable<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
31
+ }, z.core.$strict>;
32
+ type LanguageTag = z.infer<typeof LanguageTagSchema>;
33
+ type CountryCode = z.infer<typeof CountryCodeSchema>;
34
+ type CurrencyCode = z.infer<typeof CurrencyCodeSchema>;
35
+ type TimeZoneId = z.infer<typeof TimeZoneIdSchema>;
36
+ type InternationalContext = z.infer<typeof InternationalContextSchema>;
37
+ declare function mergeInternationalContext(base: InternationalContext, override: InternationalContext): InternationalContext;
38
+
39
+ export { type CountryCode, CountryCodeSchema, type CurrencyCode, CurrencyCodeSchema, type InternationalContext, InternationalContextSchema, type LanguageSource, LanguageSourceSchema, type LanguageTag, LanguageTagSchema, type TimeZoneId, TimeZoneIdSchema, canonicaliseLanguageTag, mergeInternationalContext, normalizeCountryCode, normalizeCurrencyCode, normalizeTimeZone };
@@ -0,0 +1,27 @@
1
+ import {
2
+ CountryCodeSchema,
3
+ CurrencyCodeSchema,
4
+ InternationalContextSchema,
5
+ LanguageSourceSchema,
6
+ LanguageTagSchema,
7
+ TimeZoneIdSchema,
8
+ canonicaliseLanguageTag,
9
+ mergeInternationalContext,
10
+ normalizeCountryCode,
11
+ normalizeCurrencyCode,
12
+ normalizeTimeZone
13
+ } from "./chunk-TEA7Q3KY.js";
14
+ export {
15
+ CountryCodeSchema,
16
+ CurrencyCodeSchema,
17
+ InternationalContextSchema,
18
+ LanguageSourceSchema,
19
+ LanguageTagSchema,
20
+ TimeZoneIdSchema,
21
+ canonicaliseLanguageTag,
22
+ mergeInternationalContext,
23
+ normalizeCountryCode,
24
+ normalizeCurrencyCode,
25
+ normalizeTimeZone
26
+ };
27
+ //# sourceMappingURL=internationalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modainteract/moda-interact-shared",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,6 +12,10 @@
12
12
  "types": "./dist/index.d.ts",
13
13
  "import": "./dist/index.js"
14
14
  },
15
+ "./internationalization": {
16
+ "types": "./dist/internationalization.d.ts",
17
+ "import": "./dist/internationalization.js"
18
+ },
15
19
  "./shopify": {
16
20
  "types": "./dist/shopify/index.d.ts",
17
21
  "import": "./dist/shopify/index.js"