@modainteract/moda-interact-shared 0.6.2 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-TEA7Q3KY.js → chunk-B6Y3QQLI.js} +123 -2
- package/dist/chunk-B6Y3QQLI.js.map +1 -0
- package/dist/{chunk-NITMQG6P.js → chunk-JZVD5O5P.js} +2 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.js +10 -4
- package/dist/internationalization.d.ts +28 -1
- package/dist/internationalization.js +9 -3
- package/dist/shopify/index.js +2 -2
- package/package.json +3 -1
- package/dist/chunk-TEA7Q3KY.js.map +0 -1
- /package/dist/{chunk-NITMQG6P.js.map → chunk-JZVD5O5P.js.map} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// src/internationalization.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { IntlMessageFormat } from "intl-messageformat";
|
|
3
4
|
var ISO_COUNTRY_CODE_PATTERN = /^[A-Z]{2}$/;
|
|
4
5
|
var ISO_CURRENCY_CODE_PATTERN = /^[A-Z]{3}$/;
|
|
5
6
|
var ISO_3166_ALPHA_2_CODES = /* @__PURE__ */ new Set([
|
|
@@ -323,6 +324,123 @@ function mergeInternationalContext(base, override) {
|
|
|
323
324
|
timeZone: override.timeZone ?? base.timeZone
|
|
324
325
|
};
|
|
325
326
|
}
|
|
327
|
+
var DEFAULT_ICU_CACHE_SIZE = 256;
|
|
328
|
+
function assertPositiveInteger(value, name) {
|
|
329
|
+
if (!Number.isInteger(value) || value < 1) {
|
|
330
|
+
throw new RangeError(`${name} must be a positive integer`);
|
|
331
|
+
}
|
|
332
|
+
return value;
|
|
333
|
+
}
|
|
334
|
+
var BoundedMessageCache = class extends Map {
|
|
335
|
+
constructor(maxSize) {
|
|
336
|
+
super();
|
|
337
|
+
this.maxSize = maxSize;
|
|
338
|
+
}
|
|
339
|
+
maxSize;
|
|
340
|
+
get(key) {
|
|
341
|
+
const value = super.get(key);
|
|
342
|
+
if (value) {
|
|
343
|
+
super.delete(key);
|
|
344
|
+
super.set(key, value);
|
|
345
|
+
}
|
|
346
|
+
return value;
|
|
347
|
+
}
|
|
348
|
+
set(key, value) {
|
|
349
|
+
super.delete(key);
|
|
350
|
+
super.set(key, value);
|
|
351
|
+
while (this.size > this.maxSize) this.delete(this.keys().next().value);
|
|
352
|
+
return this;
|
|
353
|
+
}
|
|
354
|
+
};
|
|
355
|
+
function createMessageCache(maxSize) {
|
|
356
|
+
return new BoundedMessageCache(maxSize);
|
|
357
|
+
}
|
|
358
|
+
function resolveLocaleDirection(locale) {
|
|
359
|
+
const canonicalLocale = canonicaliseLanguageTag(locale);
|
|
360
|
+
const localeWithTextInfo = new Intl.Locale(canonicalLocale);
|
|
361
|
+
const direction = localeWithTextInfo.getTextInfo?.()?.direction ?? localeWithTextInfo.textInfo?.direction;
|
|
362
|
+
if (direction === "rtl") return "rtl";
|
|
363
|
+
if (direction === "ltr") return "ltr";
|
|
364
|
+
const rtlLanguageOrScript = /^(ar|fa|he|ur)(?:-|$)|-(?:Arab|Hebr|Nkoo|Adlm)(?:-|$)/i;
|
|
365
|
+
return rtlLanguageOrScript.test(canonicalLocale) ? "rtl" : "ltr";
|
|
366
|
+
}
|
|
367
|
+
function validateIcuCatalogue(catalogue, requiredKeys, options = {}) {
|
|
368
|
+
const locale = options.locale ? canonicaliseLanguageTag(options.locale) : "en";
|
|
369
|
+
const missingKeys = requiredKeys.filter((key) => typeof catalogue[key] !== "string");
|
|
370
|
+
if (missingKeys.length > 0) {
|
|
371
|
+
throw new Error(`Catalogue is missing required keys: ${missingKeys.join(", ")}`);
|
|
372
|
+
}
|
|
373
|
+
for (const key of requiredKeys) {
|
|
374
|
+
try {
|
|
375
|
+
new IntlMessageFormat(catalogue[key], locale);
|
|
376
|
+
} catch (error) {
|
|
377
|
+
throw new Error(`Invalid ICU message for key ${key}: ${error instanceof Error ? error.message : String(error)}`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
function createInternationalizationRuntime({
|
|
382
|
+
locale,
|
|
383
|
+
catalogue,
|
|
384
|
+
fallbackCatalogue,
|
|
385
|
+
timeZone,
|
|
386
|
+
cacheSize = DEFAULT_ICU_CACHE_SIZE
|
|
387
|
+
}) {
|
|
388
|
+
const resolvedLocale = canonicaliseLanguageTag(locale);
|
|
389
|
+
const resolvedTimeZone = timeZone === void 0 ? void 0 : normalizeTimeZone(timeZone);
|
|
390
|
+
const maxCacheSize = assertPositiveInteger(cacheSize, "cacheSize");
|
|
391
|
+
const messageCache = createMessageCache(maxCacheSize);
|
|
392
|
+
const compile = (message) => {
|
|
393
|
+
const cached = messageCache.get(message);
|
|
394
|
+
if (cached) {
|
|
395
|
+
messageCache.delete(message);
|
|
396
|
+
messageCache.set(message, cached);
|
|
397
|
+
return cached;
|
|
398
|
+
}
|
|
399
|
+
const compiled = new IntlMessageFormat(message, resolvedLocale);
|
|
400
|
+
messageCache.set(message, compiled);
|
|
401
|
+
return compiled;
|
|
402
|
+
};
|
|
403
|
+
const formatMessage = (message, values = {}) => {
|
|
404
|
+
const formatted = compile(message).format(values);
|
|
405
|
+
return Array.isArray(formatted) ? formatted.join("") : String(formatted);
|
|
406
|
+
};
|
|
407
|
+
const t = (key, values = {}) => {
|
|
408
|
+
const message = catalogue[key] ?? fallbackCatalogue?.[key];
|
|
409
|
+
if (message === void 0) throw new Error(`Missing ICU catalogue key: ${key}`);
|
|
410
|
+
return formatMessage(message, values);
|
|
411
|
+
};
|
|
412
|
+
const formatNumber = (value, options = {}) => new Intl.NumberFormat(resolvedLocale, options).format(value);
|
|
413
|
+
const formatPercent = (value, options = {}) => {
|
|
414
|
+
const { style: _style, ...presentationOptions } = options;
|
|
415
|
+
return formatNumber(value, { ...presentationOptions, style: "percent" });
|
|
416
|
+
};
|
|
417
|
+
const formatDateTime = (value, options = {}) => {
|
|
418
|
+
const { timeZone: optionTimeZone, ...presentationOptions } = options;
|
|
419
|
+
return new Intl.DateTimeFormat(resolvedLocale, {
|
|
420
|
+
...presentationOptions,
|
|
421
|
+
timeZone: resolvedTimeZone ?? optionTimeZone
|
|
422
|
+
}).format(new Date(value));
|
|
423
|
+
};
|
|
424
|
+
const formatMoney = (value, currencyCode, options = {}) => {
|
|
425
|
+
const { style: _style, currency: _currency, ...presentationOptions } = options;
|
|
426
|
+
return formatNumber(value, {
|
|
427
|
+
...presentationOptions,
|
|
428
|
+
style: "currency",
|
|
429
|
+
currency: normalizeCurrencyCode(currencyCode)
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
return {
|
|
433
|
+
locale: resolvedLocale,
|
|
434
|
+
timeZone: resolvedTimeZone,
|
|
435
|
+
direction: resolveLocaleDirection(resolvedLocale),
|
|
436
|
+
formatMessage,
|
|
437
|
+
t,
|
|
438
|
+
formatNumber,
|
|
439
|
+
formatPercent,
|
|
440
|
+
formatDateTime,
|
|
441
|
+
formatMoney
|
|
442
|
+
};
|
|
443
|
+
}
|
|
326
444
|
|
|
327
445
|
export {
|
|
328
446
|
LanguageSourceSchema,
|
|
@@ -335,6 +453,9 @@ export {
|
|
|
335
453
|
CurrencyCodeSchema,
|
|
336
454
|
TimeZoneIdSchema,
|
|
337
455
|
InternationalContextSchema,
|
|
338
|
-
mergeInternationalContext
|
|
456
|
+
mergeInternationalContext,
|
|
457
|
+
resolveLocaleDirection,
|
|
458
|
+
validateIcuCatalogue,
|
|
459
|
+
createInternationalizationRuntime
|
|
339
460
|
};
|
|
340
|
-
//# sourceMappingURL=chunk-
|
|
461
|
+
//# sourceMappingURL=chunk-B6Y3QQLI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internationalization.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { IntlMessageFormat, type PrimitiveType } from \"intl-messageformat\";\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}\n\nexport type IcuMessageCatalogue = Readonly<Record<string, string>>;\nexport type IcuMessageValues = Record<string, PrimitiveType | Date | null | undefined>;\n\nexport interface CatalogueValidationOptions {\n locale?: string;\n}\n\nexport interface InternationalizationRuntimeOptions {\n locale: string;\n catalogue: IcuMessageCatalogue;\n fallbackCatalogue?: IcuMessageCatalogue;\n timeZone?: string;\n cacheSize?: number;\n}\n\nexport interface InternationalizationRuntime {\n locale: string;\n timeZone?: string;\n direction: \"ltr\" | \"rtl\";\n formatMessage(message: string, values?: IcuMessageValues): string;\n t(key: string, values?: IcuMessageValues): string;\n formatNumber(value: number, options?: Intl.NumberFormatOptions): string;\n formatPercent(value: number, options?: Intl.NumberFormatOptions): string;\n formatDateTime(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;\n formatMoney(value: number, currencyCode: string, options?: Intl.NumberFormatOptions): string;\n}\n\nconst DEFAULT_ICU_CACHE_SIZE = 256;\n\nfunction assertPositiveInteger(value: number, name: string): number {\n if (!Number.isInteger(value) || value < 1) {\n throw new RangeError(`${name} must be a positive integer`);\n }\n return value;\n}\n\nclass BoundedMessageCache extends Map<string, IntlMessageFormat> {\n constructor(private readonly maxSize: number) {\n super();\n }\n\n override get(key: string): IntlMessageFormat | undefined {\n const value = super.get(key);\n if (value) {\n super.delete(key);\n super.set(key, value);\n }\n return value;\n }\n\n override set(key: string, value: IntlMessageFormat): this {\n super.delete(key);\n super.set(key, value);\n while (this.size > this.maxSize) this.delete(this.keys().next().value as string);\n return this;\n }\n}\n\nfunction createMessageCache(maxSize: number): BoundedMessageCache {\n return new BoundedMessageCache(maxSize);\n}\n\nexport function resolveLocaleDirection(locale: string): \"ltr\" | \"rtl\" {\n const canonicalLocale = canonicaliseLanguageTag(locale);\n const localeWithTextInfo = new Intl.Locale(canonicalLocale) as Intl.Locale & {\n getTextInfo?: () => { direction?: \"ltr\" | \"rtl\" };\n textInfo?: { direction?: \"ltr\" | \"rtl\" };\n };\n const direction = localeWithTextInfo.getTextInfo?.()?.direction ?? localeWithTextInfo.textInfo?.direction;\n if (direction === \"rtl\") return \"rtl\";\n if (direction === \"ltr\") return \"ltr\";\n\n const rtlLanguageOrScript = /^(ar|fa|he|ur)(?:-|$)|-(?:Arab|Hebr|Nkoo|Adlm)(?:-|$)/i;\n return rtlLanguageOrScript.test(canonicalLocale) ? \"rtl\" : \"ltr\";\n}\n\nexport function validateIcuCatalogue(\n catalogue: IcuMessageCatalogue,\n requiredKeys: readonly string[],\n options: CatalogueValidationOptions = {},\n): void {\n const locale = options.locale ? canonicaliseLanguageTag(options.locale) : \"en\";\n const missingKeys = requiredKeys.filter((key) => typeof catalogue[key] !== \"string\");\n if (missingKeys.length > 0) {\n throw new Error(`Catalogue is missing required keys: ${missingKeys.join(\", \")}`);\n }\n\n for (const key of requiredKeys) {\n try {\n new IntlMessageFormat(catalogue[key], locale);\n } catch (error) {\n throw new Error(`Invalid ICU message for key ${key}: ${error instanceof Error ? error.message : String(error)}`);\n }\n }\n}\n\nexport function createInternationalizationRuntime({\n locale,\n catalogue,\n fallbackCatalogue,\n timeZone,\n cacheSize = DEFAULT_ICU_CACHE_SIZE,\n}: InternationalizationRuntimeOptions): InternationalizationRuntime {\n const resolvedLocale = canonicaliseLanguageTag(locale);\n const resolvedTimeZone = timeZone === undefined ? undefined : normalizeTimeZone(timeZone);\n const maxCacheSize = assertPositiveInteger(cacheSize, \"cacheSize\");\n const messageCache = createMessageCache(maxCacheSize);\n\n const compile = (message: string): IntlMessageFormat => {\n const cached = messageCache.get(message);\n if (cached) {\n messageCache.delete(message);\n messageCache.set(message, cached);\n return cached;\n }\n const compiled = new IntlMessageFormat(message, resolvedLocale);\n messageCache.set(message, compiled);\n return compiled;\n };\n\n const formatMessage = (message: string, values: IcuMessageValues = {}): string => {\n const formatted = compile(message).format(values);\n return Array.isArray(formatted) ? formatted.join(\"\") : String(formatted);\n };\n\n const t = (key: string, values: IcuMessageValues = {}): string => {\n const message = catalogue[key] ?? fallbackCatalogue?.[key];\n if (message === undefined) throw new Error(`Missing ICU catalogue key: ${key}`);\n return formatMessage(message, values);\n };\n\n const formatNumber = (value: number, options: Intl.NumberFormatOptions = {}): string =>\n new Intl.NumberFormat(resolvedLocale, options).format(value);\n\n const formatPercent = (value: number, options: Intl.NumberFormatOptions = {}): string => {\n const { style: _style, ...presentationOptions } = options;\n return formatNumber(value, { ...presentationOptions, style: \"percent\" });\n };\n\n const formatDateTime = (value: Date | string | number, options: Intl.DateTimeFormatOptions = {}): string => {\n const { timeZone: optionTimeZone, ...presentationOptions } = options;\n return new Intl.DateTimeFormat(resolvedLocale, {\n ...presentationOptions,\n timeZone: resolvedTimeZone ?? optionTimeZone,\n }).format(new Date(value));\n };\n\n const formatMoney = (value: number, currencyCode: string, options: Intl.NumberFormatOptions = {}): string => {\n const { style: _style, currency: _currency, ...presentationOptions } = options;\n return formatNumber(value, {\n ...presentationOptions,\n style: \"currency\",\n currency: normalizeCurrencyCode(currencyCode),\n });\n };\n\n return {\n locale: resolvedLocale,\n timeZone: resolvedTimeZone,\n direction: resolveLocaleDirection(resolvedLocale),\n formatMessage,\n t,\n formatNumber,\n formatPercent,\n formatDateTime,\n formatMoney,\n };\n}"],"mappings":";AAAA,SAAS,SAAS;AAClB,SAAS,yBAA6C;AAEtD,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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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
InternationalContextSchema
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-B6Y3QQLI.js";
|
|
4
4
|
|
|
5
5
|
// src/shopify/constants.ts
|
|
6
6
|
var SHOPIFY_COMMERCE_EVENT_SCHEMA_VERSION_V1 = 1;
|
|
@@ -342,4 +342,4 @@ export {
|
|
|
342
342
|
createShopifyOrderCorrelationOrderingKey,
|
|
343
343
|
SHOPIFY_WEBHOOK_QUEUE_CONTRACTS
|
|
344
344
|
};
|
|
345
|
-
//# sourceMappingURL=chunk-
|
|
345
|
+
//# sourceMappingURL=chunk-JZVD5O5P.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { CountryCode, CountryCodeSchema, CurrencyCode, CurrencyCodeSchema, InternationalContext, InternationalContextSchema, LanguageSource, LanguageSourceSchema, LanguageTag, LanguageTagSchema, TimeZoneId, TimeZoneIdSchema, canonicaliseLanguageTag, mergeInternationalContext, normalizeCountryCode, normalizeCurrencyCode, normalizeTimeZone } from './internationalization.js';
|
|
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 { 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';
|
|
3
3
|
import 'zod';
|
|
4
|
+
import 'intl-messageformat';
|
package/dist/index.js
CHANGED
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
parseShopifyRecoveryEventV2,
|
|
43
43
|
safeParseShopifyCommerceEvent,
|
|
44
44
|
safeParseShopifyRecoveryEventV2
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-JZVD5O5P.js";
|
|
46
46
|
import {
|
|
47
47
|
CountryCodeSchema,
|
|
48
48
|
CurrencyCodeSchema,
|
|
@@ -51,11 +51,14 @@ import {
|
|
|
51
51
|
LanguageTagSchema,
|
|
52
52
|
TimeZoneIdSchema,
|
|
53
53
|
canonicaliseLanguageTag,
|
|
54
|
+
createInternationalizationRuntime,
|
|
54
55
|
mergeInternationalContext,
|
|
55
56
|
normalizeCountryCode,
|
|
56
57
|
normalizeCurrencyCode,
|
|
57
|
-
normalizeTimeZone
|
|
58
|
-
|
|
58
|
+
normalizeTimeZone,
|
|
59
|
+
resolveLocaleDirection,
|
|
60
|
+
validateIcuCatalogue
|
|
61
|
+
} from "./chunk-B6Y3QQLI.js";
|
|
59
62
|
export {
|
|
60
63
|
CheckoutCreatedPayloadV2Schema,
|
|
61
64
|
CheckoutObservedPayloadSchema,
|
|
@@ -92,6 +95,7 @@ export {
|
|
|
92
95
|
ShopifyTenantSchema,
|
|
93
96
|
TimeZoneIdSchema,
|
|
94
97
|
canonicaliseLanguageTag,
|
|
98
|
+
createInternationalizationRuntime,
|
|
95
99
|
createShopifyCartActivityOrderingKey,
|
|
96
100
|
createShopifyCommerceOrderingKey,
|
|
97
101
|
createShopifyOrderCorrelationOrderingKey,
|
|
@@ -109,7 +113,9 @@ export {
|
|
|
109
113
|
normalizeTimeZone,
|
|
110
114
|
parseShopifyCommerceEvent,
|
|
111
115
|
parseShopifyRecoveryEventV2,
|
|
116
|
+
resolveLocaleDirection,
|
|
112
117
|
safeParseShopifyCommerceEvent,
|
|
113
|
-
safeParseShopifyRecoveryEventV2
|
|
118
|
+
safeParseShopifyRecoveryEventV2,
|
|
119
|
+
validateIcuCatalogue
|
|
114
120
|
};
|
|
115
121
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { PrimitiveType } from 'intl-messageformat';
|
|
2
3
|
|
|
3
4
|
declare const LanguageSourceSchema: z.ZodEnum<{
|
|
4
5
|
"customer-explicit": "customer-explicit";
|
|
@@ -35,5 +36,31 @@ type CurrencyCode = z.infer<typeof CurrencyCodeSchema>;
|
|
|
35
36
|
type TimeZoneId = z.infer<typeof TimeZoneIdSchema>;
|
|
36
37
|
type InternationalContext = z.infer<typeof InternationalContextSchema>;
|
|
37
38
|
declare function mergeInternationalContext(base: InternationalContext, override: InternationalContext): InternationalContext;
|
|
39
|
+
type IcuMessageCatalogue = Readonly<Record<string, string>>;
|
|
40
|
+
type IcuMessageValues = Record<string, PrimitiveType | Date | null | undefined>;
|
|
41
|
+
interface CatalogueValidationOptions {
|
|
42
|
+
locale?: string;
|
|
43
|
+
}
|
|
44
|
+
interface InternationalizationRuntimeOptions {
|
|
45
|
+
locale: string;
|
|
46
|
+
catalogue: IcuMessageCatalogue;
|
|
47
|
+
fallbackCatalogue?: IcuMessageCatalogue;
|
|
48
|
+
timeZone?: string;
|
|
49
|
+
cacheSize?: number;
|
|
50
|
+
}
|
|
51
|
+
interface InternationalizationRuntime {
|
|
52
|
+
locale: string;
|
|
53
|
+
timeZone?: string;
|
|
54
|
+
direction: "ltr" | "rtl";
|
|
55
|
+
formatMessage(message: string, values?: IcuMessageValues): string;
|
|
56
|
+
t(key: string, values?: IcuMessageValues): string;
|
|
57
|
+
formatNumber(value: number, options?: Intl.NumberFormatOptions): string;
|
|
58
|
+
formatPercent(value: number, options?: Intl.NumberFormatOptions): string;
|
|
59
|
+
formatDateTime(value: Date | string | number, options?: Intl.DateTimeFormatOptions): string;
|
|
60
|
+
formatMoney(value: number, currencyCode: string, options?: Intl.NumberFormatOptions): string;
|
|
61
|
+
}
|
|
62
|
+
declare function resolveLocaleDirection(locale: string): "ltr" | "rtl";
|
|
63
|
+
declare function validateIcuCatalogue(catalogue: IcuMessageCatalogue, requiredKeys: readonly string[], options?: CatalogueValidationOptions): void;
|
|
64
|
+
declare function createInternationalizationRuntime({ locale, catalogue, fallbackCatalogue, timeZone, cacheSize, }: InternationalizationRuntimeOptions): InternationalizationRuntime;
|
|
38
65
|
|
|
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 };
|
|
66
|
+
export { type CatalogueValidationOptions, type CountryCode, CountryCodeSchema, type CurrencyCode, CurrencyCodeSchema, type IcuMessageCatalogue, type IcuMessageValues, type InternationalContext, InternationalContextSchema, type InternationalizationRuntime, type InternationalizationRuntimeOptions, type LanguageSource, LanguageSourceSchema, type LanguageTag, LanguageTagSchema, type TimeZoneId, TimeZoneIdSchema, canonicaliseLanguageTag, createInternationalizationRuntime, mergeInternationalContext, normalizeCountryCode, normalizeCurrencyCode, normalizeTimeZone, resolveLocaleDirection, validateIcuCatalogue };
|
|
@@ -6,11 +6,14 @@ import {
|
|
|
6
6
|
LanguageTagSchema,
|
|
7
7
|
TimeZoneIdSchema,
|
|
8
8
|
canonicaliseLanguageTag,
|
|
9
|
+
createInternationalizationRuntime,
|
|
9
10
|
mergeInternationalContext,
|
|
10
11
|
normalizeCountryCode,
|
|
11
12
|
normalizeCurrencyCode,
|
|
12
|
-
normalizeTimeZone
|
|
13
|
-
|
|
13
|
+
normalizeTimeZone,
|
|
14
|
+
resolveLocaleDirection,
|
|
15
|
+
validateIcuCatalogue
|
|
16
|
+
} from "./chunk-B6Y3QQLI.js";
|
|
14
17
|
export {
|
|
15
18
|
CountryCodeSchema,
|
|
16
19
|
CurrencyCodeSchema,
|
|
@@ -19,9 +22,12 @@ export {
|
|
|
19
22
|
LanguageTagSchema,
|
|
20
23
|
TimeZoneIdSchema,
|
|
21
24
|
canonicaliseLanguageTag,
|
|
25
|
+
createInternationalizationRuntime,
|
|
22
26
|
mergeInternationalContext,
|
|
23
27
|
normalizeCountryCode,
|
|
24
28
|
normalizeCurrencyCode,
|
|
25
|
-
normalizeTimeZone
|
|
29
|
+
normalizeTimeZone,
|
|
30
|
+
resolveLocaleDirection,
|
|
31
|
+
validateIcuCatalogue
|
|
26
32
|
};
|
|
27
33
|
//# sourceMappingURL=internationalization.js.map
|
package/dist/shopify/index.js
CHANGED
|
@@ -42,8 +42,8 @@ import {
|
|
|
42
42
|
parseShopifyRecoveryEventV2,
|
|
43
43
|
safeParseShopifyCommerceEvent,
|
|
44
44
|
safeParseShopifyRecoveryEventV2
|
|
45
|
-
} from "../chunk-
|
|
46
|
-
import "../chunk-
|
|
45
|
+
} from "../chunk-JZVD5O5P.js";
|
|
46
|
+
import "../chunk-B6Y3QQLI.js";
|
|
47
47
|
export {
|
|
48
48
|
CheckoutCreatedPayloadV2Schema,
|
|
49
49
|
CheckoutObservedPayloadSchema,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modainteract/moda-interact-shared",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -56,6 +56,7 @@
|
|
|
56
56
|
"build": "tsup",
|
|
57
57
|
"typecheck": "tsc --noEmit",
|
|
58
58
|
"test": "tsx --test \"src/**/*.test.ts\"",
|
|
59
|
+
"validate:internationalization-entrypoint": "npm run build && node scripts/validate-internationalization-entrypoint.mjs",
|
|
59
60
|
"prepack": "npm run build"
|
|
60
61
|
},
|
|
61
62
|
"dependencies": {
|
|
@@ -74,6 +75,7 @@
|
|
|
74
75
|
"@opentelemetry/sdk-trace-base": "^2.10.0",
|
|
75
76
|
"@prisma/instrumentation": "^6.19.3",
|
|
76
77
|
"bullmq-otel": "^2.0.1",
|
|
78
|
+
"intl-messageformat": "^10.7.18",
|
|
77
79
|
"winston": "3.19.0",
|
|
78
80
|
"winston-loki": "6.1.7",
|
|
79
81
|
"zod": "^4.0.0"
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|
|
File without changes
|