@lingui/core 3.15.0 → 3.16.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +384 -0
  2. package/build/LICENSE +21 -0
  3. package/build/cjs/compile.js +68 -0
  4. package/build/cjs/compile.js.map +1 -0
  5. package/{esm/core.development.js → build/cjs/index.js} +44 -86
  6. package/build/cjs/index.js.map +1 -0
  7. package/build/compile.d.ts +2 -0
  8. package/build/compile.js +1 -0
  9. package/build/esm/compile.js +66 -0
  10. package/build/esm/compile.js.map +1 -0
  11. package/{esm/dev.development.js → build/esm/index.js} +31 -78
  12. package/build/esm/index.js.map +1 -0
  13. package/{esm → build/esm}/package.json +0 -0
  14. package/build/index.d.ts +94 -0
  15. package/build/index.js +1 -0
  16. package/package.json +16 -13
  17. package/cjs/context.d.ts +0 -4
  18. package/cjs/context.d.ts.map +0 -1
  19. package/cjs/core.development.js +0 -543
  20. package/cjs/core.development.js.map +0 -1
  21. package/cjs/core.production.min.js +0 -2
  22. package/cjs/core.production.min.js.map +0 -1
  23. package/cjs/dev/compile.d.ts +0 -3
  24. package/cjs/dev/compile.d.ts.map +0 -1
  25. package/cjs/dev/index.d.ts +0 -4
  26. package/cjs/dev/index.d.ts.map +0 -1
  27. package/cjs/dev/loadLocaleData.d.ts +0 -5
  28. package/cjs/dev/loadLocaleData.d.ts.map +0 -1
  29. package/cjs/dev.development.js +0 -543
  30. package/cjs/dev.development.js.map +0 -1
  31. package/cjs/dev.production.min.js +0 -2
  32. package/cjs/dev.production.min.js.map +0 -1
  33. package/cjs/essentials.d.ts +0 -4
  34. package/cjs/essentials.d.ts.map +0 -1
  35. package/cjs/eventEmitter.d.ts +0 -10
  36. package/cjs/eventEmitter.d.ts.map +0 -1
  37. package/cjs/formats.d.ts +0 -4
  38. package/cjs/formats.d.ts.map +0 -1
  39. package/cjs/i18n.d.ts +0 -63
  40. package/cjs/i18n.d.ts.map +0 -1
  41. package/cjs/index.d.ts +0 -5
  42. package/cjs/index.d.ts.map +0 -1
  43. package/esm/context.d.ts +0 -4
  44. package/esm/context.d.ts.map +0 -1
  45. package/esm/core.development.js.map +0 -1
  46. package/esm/core.production.min.js +0 -2
  47. package/esm/core.production.min.js.map +0 -1
  48. package/esm/dev/compile.d.ts +0 -3
  49. package/esm/dev/compile.d.ts.map +0 -1
  50. package/esm/dev/index.d.ts +0 -4
  51. package/esm/dev/index.d.ts.map +0 -1
  52. package/esm/dev/loadLocaleData.d.ts +0 -5
  53. package/esm/dev/loadLocaleData.d.ts.map +0 -1
  54. package/esm/dev.development.js.map +0 -1
  55. package/esm/dev.js +0 -18
  56. package/esm/dev.production.min.js +0 -2
  57. package/esm/dev.production.min.js.map +0 -1
  58. package/esm/essentials.d.ts +0 -4
  59. package/esm/essentials.d.ts.map +0 -1
  60. package/esm/eventEmitter.d.ts +0 -10
  61. package/esm/eventEmitter.d.ts.map +0 -1
  62. package/esm/formats.d.ts +0 -4
  63. package/esm/formats.d.ts.map +0 -1
  64. package/esm/i18n.d.ts +0 -63
  65. package/esm/i18n.d.ts.map +0 -1
  66. package/esm/index.d.ts +0 -5
  67. package/esm/index.d.ts.map +0 -1
  68. package/esm/index.js +0 -18
  69. package/index.js +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true,\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true,\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(\n locales?: string | string[],\n options: T = {} as T,\n) {\n const localeKey = Array.isArray(locales) ? locales.sort().join('-') : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import {CompiledMessage, Formats, LocaleData, Locales, Values} from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g;\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format)\n ? formats[format] || { style: format }\n : format as any\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style('number') : {};\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(`Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`)\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message = rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message = rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) => number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) => date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(\n locale,\n locales,\n values,\n formats,\n localeData,\n )\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result)) return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type {PluralCategory} from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n context?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<string, Intl.DateTimeFormatOptions | Intl.NumberFormatOptions>\n\nexport type Values = Record<string, unknown>;\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {offset: number};\nexport type CompiledMessageToken = string | [name: string, type?: string, format?: null | string | CompiledIcuChoices];\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n context?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n context?: string\n}\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: string | ((message: string, id: string, context: string) => string)\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: string | ((message, id, context) => string)\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats, context }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n context = id.context\n id = id.id\n }\n\n const messageMissing = !context && !this.messages[id]\n const contextualMessageMissing = context && !this.messages[context][id]\n const messageUnreachable = contextualMessageMissing || messageMissing\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageUnreachable) {\n return isFunction(missing) ? missing(this._locale, id, context) : missing\n }\n\n if (messageUnreachable) {\n this.emit(\"missing\", { id, context, locale: this._locale })\n }\n\n let translation\n\n if (context && !contextualMessageMissing) {\n // context is like a subdirectory of other keys\n translation = this.messages[context][id] || message || id\n } else {\n translation = this.messages[id] || message || id\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export {\n setupI18n,\n I18n,\n} from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","event","listener","_hasEvent","_events","push","removeListener","index","indexOf","splice","args","apply","I18n","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","assign","localeOrAllData","_loadLocaleData","emit","localeOrMessages","_load","process","env","NODE_ENV","warn","_locale","_locales","id","messageMissing","contextualMessageMissing","messageUnreachable","compileMessage","setupI18n","i18n"],"mappings":";;;;;;;;;;;;;AAAO,IAAMA,QAAQ,GAAG,SAAXA,QAAW,CAACC,CAAD,EAAA;AAAA,EAAoB,OAAA,OAAOA,CAAP,KAAa,QAAjC,CAAA;AAAA,CAAjB,CAAA;AACA,IAAMC,UAAU,GAAG,SAAbA,UAAa,CAACC,CAAD,EAAA;AAAA,EAAsB,OAAA,OAAOA,CAAP,KAAa,UAAnC,CAAA;AAAA,CAAnB;;ACEP;AACA,IAAMC,aAAa,GAAG,IAAIC,GAAJ,EAAtB,CAAA;AACA,IAAMC,WAAW,GAAG,IAAID,GAAJ,EAApB,CAAA;AAEO,SAASE,IAAT,CACLC,OADK,EAI6B;AAAA,EAFlCC,IAAAA,MAEkC,uEAFG,EAEH,CAAA;AAAA,EADlCC,IAAAA,OACkC,uEADf,IACe,CAAA;AAClC,EAAO,OAAA,UAACC,KAAD,EAAW;AAChB,IAAIX,IAAAA,QAAQ,CAACW,KAAD,CAAZ,EAAqBA,KAAK,GAAG,IAAIC,IAAJ,CAASD,KAAT,CAAR,CAAA;;AACrB,IAAA,IAAID,OAAJ,EAAa;AACX,MAAA,IAAMG,GAAG,GAAGC,QAAQ,CAA6BN,OAA7B,EAAsCC,MAAtC,CAApB,CAAA;AACA,MAAA,IAAMM,eAAe,GAAGT,WAAW,CAACU,GAAZ,CAAgBH,GAAhB,CAAxB,CAAA;;AACA,MAAA,IAAIE,eAAJ,EAAqB;AACnB,QAAA,OAAOA,eAAe,CAACN,MAAhB,CAAuBE,KAAvB,CAAP,CAAA;AACD,OAAA;;AAED,MAAMM,IAAAA,UAAS,GAAG,IAAIC,IAAI,CAACC,cAAT,CAAwBX,OAAxB,EAAiCC,MAAjC,CAAlB,CAAA;;AACAH,MAAAA,WAAW,CAACc,GAAZ,CAAgBP,GAAhB,EAAqBI,UAArB,CAAA,CAAA;AACA,MAAA,OAAOA,UAAS,CAACR,MAAV,CAAiBE,KAAjB,CAAP,CAAA;AACD,KAAA;;AAED,IAAMM,IAAAA,SAAS,GAAG,IAAIC,IAAI,CAACC,cAAT,CAAwBX,OAAxB,EAAiCC,MAAjC,CAAlB,CAAA;AACA,IAAA,OAAOQ,SAAS,CAACR,MAAV,CAAiBE,KAAjB,CAAP,CAAA;AACD,GAhBD,CAAA;AAiBD,CAAA;AAEM,SAASU,MAAT,CACLb,OADK,EAIsB;AAAA,EAF3BC,IAAAA,MAE2B,uEAFQ,EAER,CAAA;AAAA,EAD3BC,IAAAA,OAC2B,uEADR,IACQ,CAAA;AAC3B,EAAO,OAAA,UAACC,KAAD,EAAW;AAChB,IAAA,IAAID,OAAJ,EAAa;AACX,MAAA,IAAMG,GAAG,GAAGC,QAAQ,CAA2BN,OAA3B,EAAoCC,MAApC,CAApB,CAAA;AACA,MAAA,IAAMM,eAAe,GAAGX,aAAa,CAACY,GAAd,CAAkBH,GAAlB,CAAxB,CAAA;;AACA,MAAA,IAAIE,eAAJ,EAAqB;AACnB,QAAA,OAAOA,eAAe,CAACN,MAAhB,CAAuBE,KAAvB,CAAP,CAAA;AACD,OAAA;;AAED,MAAMM,IAAAA,WAAS,GAAG,IAAIC,IAAI,CAACI,YAAT,CAAsBd,OAAtB,EAA+BC,MAA/B,CAAlB,CAAA;;AACAL,MAAAA,aAAa,CAACgB,GAAd,CAAkBP,GAAlB,EAAuBI,WAAvB,CAAA,CAAA;AACA,MAAA,OAAOA,WAAS,CAACR,MAAV,CAAiBE,KAAjB,CAAP,CAAA;AACD,KAAA;;AAED,IAAMM,IAAAA,SAAS,GAAG,IAAIC,IAAI,CAACI,YAAT,CAAsBd,OAAtB,EAA+BC,MAA/B,CAAlB,CAAA;AACA,IAAA,OAAOQ,SAAS,CAACR,MAAV,CAAiBE,KAAjB,CAAP,CAAA;AACD,GAfD,CAAA;AAgBD,CAAA;AAED;;AACA,SAASG,QAAT,CACEN,OADF,EAGE;AAAA,EADAe,IAAAA,OACA,uEADa,EACb,CAAA;AACA,EAAA,IAAMC,SAAS,GAAGC,KAAK,CAACC,OAAN,CAAclB,OAAd,CAAA,GAAyBA,OAAO,CAACmB,IAAR,EAAeC,CAAAA,IAAf,CAAoB,GAApB,CAAzB,GAAoDpB,OAAtE,CAAA;AACA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAUgB,SAAV,EAAuBK,GAAAA,CAAAA,CAAAA,MAAAA,CAAAA,IAAI,CAACC,SAAL,CAAeP,OAAf,CAAvB,CAAA,CAAA;AACD;;;;;;;;ACzDM,IAAMQ,aAAa,GAAG,sCAAtB,CAAA;;AAEP,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CACrBC,MADqB,EAErBzB,OAFqB,EAKlB;AAAA,EAAA,IAFH0B,UAEG,GAFsB,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA;AAAEC,IAAAA,OAAO,EAAEC,SAAAA;AAAX,GAEtB,CAAA;AAAA,EADHC,IAAAA,OACG,uEADgB,EAChB,CAAA;AACH7B,EAAAA,OAAO,GAAGA,OAAO,IAAIyB,MAArB,CAAA;AADG,EAAA,IAEKE,OAFL,GAEiBD,UAFjB,CAEKC,OAFL,CAAA;;AAGH,EAAA,IAAMG,KAAK,GAAG,SAARA,KAAQ,CAAI7B,MAAJ,EAAA;AAAA,IACZT,OAAAA,QAAQ,CAACS,MAAD,CAAR,GACI4B,OAAO,CAAC5B,MAAD,CAAP,IAAmB;AAAE6B,MAAAA,KAAK,EAAE7B,MAAAA;AAAT,KADvB,GAEIA,MAHQ,CAAA;AAAA,GAAd,CAAA;;AAIA,EAAM8B,IAAAA,iBAAiB,GAAG,SAApBA,iBAAoB,CAAC5B,KAAD,EAAgB6B,OAAhB,EAA4B;AACpD,IAAO,OAAA,UAACC,GAAD,EAAS;AACd,MAAA,IAAMC,GAAG,GAAGxC,UAAU,CAACsC,OAAD,CAAV,GAAsBA,OAAO,CAACC,GAAD,CAA7B,GAAqCD,OAAjD,CAAA;AACA,MAAA,IAAMG,IAAI,GAAGlB,KAAK,CAACC,OAAN,CAAcgB,GAAd,CAAA,GAAqBA,GAArB,GAA2B,CAACA,GAAD,CAAxC,CAAA;AACA,MAAA,IAAME,YAAY,GAAGC,MAAM,CAACC,IAAP,CAAYT,OAAZ,CAAqBU,CAAAA,MAArB,GAA8BT,KAAK,CAAC,QAAD,CAAnC,GAAgD,EAArE,CAAA;;AACA,MAAMU,IAAAA,QAAQ,GAAG3B,MAAM,CAACb,OAAD,EAAUoC,YAAV,CAAN,CAA8BjC,KAA9B,CAAjB,CAAA;;AACA,MAAA,OAAOgC,IAAI,CAACM,GAAL,CAAS,UAACC,CAAD,EAAA;AAAA,QAAA,OAAQlD,QAAQ,CAACkD,CAAD,CAAR,GAAcA,CAAC,CAACC,OAAF,CAAU,GAAV,EAAeH,QAAf,CAAd,GAAyCE,CAAjD,CAAA;AAAA,OAAT,CAAP,CAAA;AACD,KAND,CAAA;AAOD,GARD,CAAA;;AAUA,EAAI,IAAA,CAACf,OAAL,EAAc;AACZiB,IAAAA,OAAO,CAACC,KAAR,CAAA,qBAAA,CAAA,MAAA,CAAoCpB,MAApC,EAAA,4HAAA,CAAA,CAAA,CAAA;AACD,GAAA;;AAED,EAAO,OAAA;AACLqB,IAAAA,MAAM,EAAE,SAAC3C,MAAAA,CAAAA,KAAD,EAA6C,IAAA,EAAA;AAAA,MAAA,IAAA,WAAA,GAAA,IAAA,CAA3B4C,MAA2B;AAAA,UAA3BA,MAA2B,4BAAlB,CAAkB,GAAA,WAAA;AAAA,UAAZC,KAAY,GAAA,wBAAA,CAAA,IAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;AACnD,MAAMhB,IAAAA,OAAO,GAAGgB,KAAK,CAAC7C,KAAD,CAAL,IAAgB6C,KAAK,CAACrB,OAAD,KAAA,IAAA,IAACA,OAAD,KAACA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAGxB,KAAK,GAAG4C,MAAX,CAAR,CAArB,IAAoDC,KAAK,CAACC,KAA1E,CAAA;AAEA,MAAA,OAAOlB,iBAAiB,CAAC5B,KAAK,GAAG4C,MAAT,EAAiBf,OAAjB,CAAxB,CAAA;AACD,KALI;AAOLkB,IAAAA,aAAa,EAAE,SAAC/C,aAAAA,CAAAA,KAAD,EAA6C,KAAA,EAAA;AAAA,MAAA,IAAA,YAAA,GAAA,KAAA,CAA3B4C,MAA2B;AAAA,UAA3BA,MAA2B,6BAAlB,CAAkB,GAAA,YAAA;AAAA,UAAZC,KAAY,GAAA,wBAAA,CAAA,KAAA,EAAA,CAAA,QAAA,CAAA,CAAA,CAAA;;AAC1D,MAAMhB,IAAAA,OAAO,GAAGgB,KAAK,CAAC7C,KAAD,CAAL,IAAgB6C,KAAK,CAACrB,OAAD,KAACA,IAAAA,IAAAA,OAAD,uBAACA,OAAO,CAAGxB,KAAK,GAAG4C,MAAX,EAAmB,IAAnB,CAAR,CAArB,IAA0DC,KAAK,CAACC,KAAhF,CAAA;AACA,MAAA,OAAOlB,iBAAiB,CAAC5B,KAAK,GAAG4C,MAAT,EAAiBf,OAAjB,CAAxB,CAAA;AACD,KAVI;AAYLmB,IAAAA,MAAM,EAAE,SAAChD,MAAAA,CAAAA,KAAD,EAAgB6C,KAAhB,EAAA;AAAA,MAAA,OAA0BA,KAAK,CAAC7C,KAAD,CAAL,IAAgB6C,KAAK,CAACC,KAAhD,CAAA;AAAA,KAZH;AAcLpC,IAAAA,MAAM,EAAE,SAACV,QAAAA,CAAAA,KAAD,EAAgBF,MAAhB,EAAA;AAAA,MAA8DY,OAAAA,MAAM,CAACb,OAAD,EAAU8B,KAAK,CAAC7B,MAAD,CAAf,CAAN,CAA+BE,KAA/B,CAA9D,CAAA;AAAA,KAdH;AAgBLJ,IAAAA,IAAI,EAAE,SAACI,MAAAA,CAAAA,KAAD,EAAgBF,MAAhB,EAAA;AAAA,MAAgEF,OAAAA,IAAI,CAACC,OAAD,EAAU8B,KAAK,CAAC7B,MAAD,CAAf,CAAJ,CAA6BE,KAA7B,CAAhE,CAAA;AAAA,KAhBD;AAkBLyB,IAAAA,SAAS,EAAE,SAAAA,WAAA,CAACzB,KAAD,EAAA;AAAA,MAAA,OAAoBA,KAApB,CAAA;AAAA,KAAA;AAlBN,GAAP,CAAA;AAoBD,CA9CD;;AAkDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASiD,OAAT,CACE3B,MADF,EAEEzB,OAFF,EAGEqD,MAHF,EAIExB,OAJF,EAKEH,UALF,EAME;AACA,EAAM4B,IAAAA,UAAU,GAAG9B,cAAc,CAACC,MAAD,EAASzB,OAAT,EAAkB0B,UAAlB,EAA8BG,OAA9B,CAAjC,CAAA;;AAEA,EAAMI,IAAAA,GAAG,GAAG,SAANA,GAAM,CAACsB,IAAD,EAAeC,IAAf,EAA6BvD,MAA7B,EAAqD;AAC/D,IAAA,IAAME,KAAK,GAAGkD,MAAM,CAACE,IAAD,CAApB,CAAA;AACA,IAAME,IAAAA,SAAS,GAAGH,UAAU,CAACE,IAAD,CAAV,CAAiBrD,KAAjB,EAAwBF,MAAxB,CAAlB,CAAA;AACA,IAAA,IAAM+B,OAAO,GAAGtC,UAAU,CAAC+D,SAAD,CAAV,GAAwBA,SAAS,CAACxB,GAAD,CAAjC,GAAyCwB,SAAzD,CAAA;AACA,IAAA,OAAOxC,KAAK,CAACC,OAAN,CAAcc,OAAd,CAAA,GAAyBA,OAAO,CAACZ,IAAR,CAAa,EAAb,CAAzB,GAA4CY,OAAnD,CAAA;AACD,GALD,CAAA;;AAOA,EAAA,OAAOC,GAAP,CAAA;AACD,CAAA;;AAEM,SAASyB,WAAT,CACLC,WADK,EAELlC,MAFK,EAGLzB,OAHK,EAIL0B,UAJK,EAKL;AACA,EAAO,OAAA,UAAC2B,MAAD,EAAmD;AAAA,IAAlCxB,IAAAA,OAAkC,uEAAf,EAAe,CAAA;AACxD,IAAA,IAAMI,GAAG,GAAGmB,OAAO,CACjB3B,MADiB,EAEjBzB,OAFiB,EAGjBqD,MAHiB,EAIjBxB,OAJiB,EAKjBH,UALiB,CAAnB,CAAA;;AAQA,IAAA,IAAMkC,aAAa,GAAG,SAAhBA,aAAgB,CAAC5B,OAAD,EAAsC;AAC1D,MAAI,IAAA,CAACf,KAAK,CAACC,OAAN,CAAcc,OAAd,CAAL,EAA6B,OAAOA,OAAP,CAAA;AAE7B,MAAOA,OAAAA,OAAO,CAAC6B,MAAR,CAAuB,UAAC7B,OAAD,EAAU8B,KAAV,EAAoB;AAChD,QAAItE,IAAAA,QAAQ,CAACsE,KAAD,CAAZ,EAAqB,OAAO9B,OAAO,GAAG8B,KAAjB,CAAA;;AAD2B,QAAA,IAAA,MAAA,GAAA,cAAA,CAGnBA,KAHmB,EAAA,CAAA,CAAA;AAAA,YAGzCP,IAHyC,GAAA,MAAA,CAAA,CAAA,CAAA;AAAA,YAGnCC,IAHmC,GAAA,MAAA,CAAA,CAAA,CAAA;AAAA,YAG7BvD,MAH6B,GAAA,MAAA,CAAA,CAAA,CAAA,CAAA;;AAKhD,QAAI8D,IAAAA,kBAAkB,GAAG,EAAzB,CAAA;;AACA,QAAI9D,IAAAA,MAAM,IAAI,IAAV,IAAkB,CAACT,QAAQ,CAACS,MAAD,CAA/B,EAAyC;AACvCoC,UAAAA,MAAM,CAACC,IAAP,CAAYrC,MAAZ,EAAoB+D,OAApB,CAA4B,UAAC3D,GAAD,EAAS;AACnC0D,YAAAA,kBAAkB,CAAC1D,GAAD,CAAlB,GAA0BuD,aAAa,CAAC3D,MAAM,CAACI,GAAD,CAAP,CAAvC,CAAA;AACD,WAFD,CAAA,CAAA;AAGD,SAJD,MAIO;AACL0D,UAAAA,kBAAkB,GAAG9D,MAArB,CAAA;AACD,SAAA;;AAED,QAAME,IAAAA,KAAK,GAAG8B,GAAG,CAACsB,IAAD,EAAOC,IAAP,EAAaO,kBAAb,CAAjB,CAAA;AACA,QAAA,IAAI5D,KAAK,IAAI,IAAb,EAAmB,OAAO6B,OAAP,CAAA;AAEnB,QAAOA,OAAAA,OAAO,GAAG7B,KAAjB,CAAA;AACD,OAlBM,EAkBJ,EAlBI,CAAP,CAAA;AAmBD,KAtBD,CAAA;;AAwBA,IAAA,IAAM8D,MAAM,GAAGL,aAAa,CAACD,WAAD,CAA5B,CAAA;AACA,IAAInE,IAAAA,QAAQ,CAACyE,MAAD,CAAR,IAAoB1C,aAAa,CAAC2C,IAAd,CAAmBD,MAAnB,CAAxB,EAAoD,OAAO5C,IAAI,CAAC8C,KAAL,aAAeF,MAAM,CAACG,IAAP,EAAf,EAAP,IAAA,CAAA,CAAA,CAAA;AACpD,IAAI5E,IAAAA,QAAQ,CAACyE,MAAD,CAAZ,EAAsB,OAAOA,MAAM,CAACG,IAAP,EAAP,CAAA;AACtB,IAAA,OAAOH,MAAP,CAAA;AACD,GArCD,CAAA;AAsCD;;AClID,IAAaI,YAAb,gBAAA,YAAA;AAAA,EAAA,SAAA,YAAA,GAAA;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,YAAA,CAAA,CAAA;;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAKM,EALN,CAAA,CAAA;AAAA,GAAA;;AAAA,EAAA,YAAA,CAAA,YAAA,EAAA,CAAA;AAAA,IAAA,GAAA,EAAA,IAAA;AAAA,IAOKC,KAAAA,EAAAA,SAAAA,EAAAA,CAAAA,KAPL,EAO0BC,QAP1B,EAOsE;AAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;AAClE,MAAA,IAAI,CAAC,IAAA,CAAKC,SAAL,CAAeF,KAAf,CAAL,EAA4B,IAAA,CAAKG,OAAL,CAAaH,KAAb,CAAA,GAAsB,EAAtB,CAAA;;AAE5B,MAAA,IAAA,CAAKG,OAAL,CAAaH,KAAb,CAAoBI,CAAAA,IAApB,CAAyBH,QAAzB,CAAA,CAAA;;AACA,MAAO,OAAA,YAAA;AAAA,QAAA,OAAM,KAAI,CAACI,cAAL,CAAoBL,KAApB,EAA2BC,QAA3B,CAAN,CAAA;AAAA,OAAP,CAAA;AACD,KAAA;AAZH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,gBAAA;AAAA,IAciBD,KAAAA,EAAAA,SAAAA,cAAAA,CAAAA,KAdjB,EAcsCC,QAdtC,EAc4E;AACxE,MAAA,IAAI,CAAC,IAAKC,CAAAA,SAAL,CAAeF,KAAf,CAAL,EAA4B,OAAA;;AAE5B,MAAMM,IAAAA,KAAK,GAAG,IAAA,CAAKH,OAAL,CAAaH,KAAb,CAAoBO,CAAAA,OAApB,CAA4BN,QAA5B,CAAd,CAAA;;AACA,MAAA,IAAI,CAACK,KAAL,EAAY,IAAA,CAAKH,OAAL,CAAaH,KAAb,CAAA,CAAoBQ,MAApB,CAA2BF,KAA3B,EAAkC,CAAlC,CAAA,CAAA;AACb,KAAA;AAnBH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,MAAA;AAAA,IAAA,KAAA,EAAA,SAAA,IAAA,CAqBON,KArBP,EAqB6E;AAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;AAAA,MAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAA9CS,IAA8C,GAAA,IAAA,KAAA,CAAA,IAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;AAA9CA,QAAAA,IAA8C,CAAA,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,OAAA;;AACzE,MAAA,IAAI,CAAC,IAAKP,CAAAA,SAAL,CAAeF,KAAf,CAAL,EAA4B,OAAA;;AAE5B,MAAA,IAAA,CAAKG,OAAL,CAAaH,KAAb,EAAoB7B,GAApB,CAAwB,UAAC8B,QAAD,EAAA;AAAA,QAAA,OAAcA,QAAQ,CAACS,KAAT,CAAe,MAAf,EAAqBD,IAArB,CAAd,CAAA;AAAA,OAAxB,CAAA,CAAA;AACD,KAAA;AAzBH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,WAAA;AAAA,IAAA,KAAA,EAAA,SAAA,SAAA,CA2BoBT,KA3BpB,EA2ByC;AACrC,MAAOrD,OAAAA,KAAK,CAACC,OAAN,CAAc,KAAKuD,OAAL,CAAaH,KAAb,CAAd,CAAP,CAAA;AACD,KAAA;AA7BH,GAAA,CAAA,CAAA,CAAA;;AAAA,EAAA,OAAA,YAAA,CAAA;AAAA,CAAA,EAAA;;;;;AC6DA,IAAaW,IAAb,gBAAA,UAAA,aAAA,EAAA;AAAA,EAAA,SAAA,CAAA,IAAA,EAAA,aAAA,CAAA,CAAA;;AAAA,EAAA,IAAA,MAAA,GAAA,YAAA,CAAA,IAAA,CAAA,CAAA;;AAOE,EAAA,SAAA,IAAA,CAAYC,MAAZ,EAAoC;AAAA,IAAA,IAAA,KAAA,CAAA;;AAAA,IAAA,eAAA,CAAA,IAAA,EAAA,IAAA,CAAA,CAAA;;AAClC,IAAA,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,CAAA,CAAA;;AADkC,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,eAAA,CAAA,sBAAA,CAAA,KAAA,CAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAGlC,IAAKC,KAAAA,CAAAA,SAAL,GAAiB,EAAjB,CAAA;AACA,IAAKC,KAAAA,CAAAA,WAAL,GAAmB,EAAnB,CAAA;AAEA,IAAIF,IAAAA,MAAM,CAACG,OAAP,IAAkB,IAAtB,EAA4B,KAAA,CAAKC,QAAL,GAAgBJ,MAAM,CAACG,OAAvB,CAAA;AAC5B,IAAIH,IAAAA,MAAM,CAACK,QAAP,IAAmB,IAAvB,EAA6B,KAAA,CAAKC,IAAL,CAAUN,MAAM,CAACK,QAAjB,CAAA,CAAA;AAC7B,IAAIL,IAAAA,MAAM,CAACxD,UAAP,IAAqB,IAAzB,EAA+B,KAAA,CAAK+D,cAAL,CAAoBP,MAAM,CAACxD,UAA3B,CAAA,CAAA;;AAC/B,IAAIwD,IAAAA,MAAM,CAACzD,MAAP,IAAiB,IAAjB,IAAyByD,MAAM,CAAClF,OAAP,IAAkB,IAA/C,EAAqD;AACnD,MAAK0F,KAAAA,CAAAA,QAAL,CAAcR,MAAM,CAACzD,MAArB,EAA6ByD,MAAM,CAAClF,OAApC,CAAA,CAAA;AACD,KAAA;;AAXiC,IAAA,OAAA,KAAA,CAAA;AAYnC,GAAA;;AAnBH,EAAA,YAAA,CAAA,IAAA,EAAA,CAAA;AAAA,IAAA,GAAA,EAAA,iBAAA;AAAA,IAqC0ByB,KAAAA,EAAAA,SAAAA,eAAAA,CAAAA,MArC1B,EAqC0CC,UArC1C,EAqCkE;AAC9D,MAAA,IAAI,KAAK0D,WAAL,CAAiB3D,MAAjB,CAAA,IAA4B,IAAhC,EAAsC;AACpC,QAAA,IAAA,CAAK2D,WAAL,CAAiB3D,MAAjB,CAAA,GAA2BC,UAA3B,CAAA;AACD,OAFD,MAEO;AACLW,QAAAA,MAAM,CAACsD,MAAP,CAAc,IAAA,CAAKP,WAAL,CAAiB3D,MAAjB,CAAd,EAAwCC,UAAxC,CAAA,CAAA;AACD,OAAA;AACF,KAAA;AA3CH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,gBAAA;AAAA,IAgDiBkE,KAAAA,EAAAA,SAAAA,cAAAA,CAAAA,eAhDjB,EAgDkClE,UAhDlC,EAgD+C;AAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;AAC3C,MAAIA,IAAAA,UAAU,IAAI,IAAlB,EAAwB;AACtB;AACA;AACA,QAAA,IAAA,CAAKmE,eAAL,CAAqBD,eAArB,EAAsClE,UAAtC,CAAA,CAAA;AACD,OAJD,MAIO;AACL;AACA;AACAW,QAAAA,MAAM,CAACC,IAAP,CAAYsD,eAAZ,CAA6B5B,CAAAA,OAA7B,CAAqC,UAACvC,MAAD,EAAA;AAAA,UACnC,OAAA,MAAI,CAACoE,eAAL,CAAqBpE,MAArB,EAA6BmE,eAAe,CAACnE,MAAD,CAA5C,CADmC,CAAA;AAAA,SAArC,CAAA,CAAA;AAGD,OAAA;;AAED,MAAKqE,IAAAA,CAAAA,IAAL,CAAU,QAAV,CAAA,CAAA;AACD,KAAA;AA9DH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,OAAA;AAAA,IAgEgBrE,KAAAA,EAAAA,SAAAA,KAAAA,CAAAA,MAhEhB,EAgEgC8D,QAhEhC,EAgEoD;AAChD,MAAA,IAAI,KAAKJ,SAAL,CAAe1D,MAAf,CAAA,IAA0B,IAA9B,EAAoC;AAClC,QAAA,IAAA,CAAK0D,SAAL,CAAe1D,MAAf,CAAA,GAAyB8D,QAAzB,CAAA;AACD,OAFD,MAEO;AACLlD,QAAAA,MAAM,CAACsD,MAAP,CAAc,IAAA,CAAKR,SAAL,CAAe1D,MAAf,CAAd,EAAsC8D,QAAtC,CAAA,CAAA;AACD,OAAA;AACF,KAAA;AAtEH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,MAAA;AAAA,IA2EOQ,KAAAA,EAAAA,SAAAA,IAAAA,CAAAA,gBA3EP,EA2EyBR,QA3EzB,EA2EoC;AAAA,MAAA,IAAA,MAAA,GAAA,IAAA,CAAA;;AAChC,MAAIA,IAAAA,QAAQ,IAAI,IAAhB,EAAsB;AACpB;AACA;AACA,QAAA,IAAA,CAAKS,KAAL,CAAWD,gBAAX,EAA6BR,QAA7B,CAAA,CAAA;AACD,OAJD,MAIO;AACL;AACA;AACAlD,QAAAA,MAAM,CAACC,IAAP,CAAYyD,gBAAZ,CAA8B/B,CAAAA,OAA9B,CAAsC,UAACvC,MAAD,EAAA;AAAA,UACpC,OAAA,MAAI,CAACuE,KAAL,CAAWvE,MAAX,EAAmBsE,gBAAgB,CAACtE,MAAD,CAAnC,CADoC,CAAA;AAAA,SAAtC,CAAA,CAAA;AAGD,OAAA;;AAED,MAAKqE,IAAAA,CAAAA,IAAL,CAAU,QAAV,CAAA,CAAA;AACD,KAAA;AAzFH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,UAAA;AAAA,IA2FWrE,KAAAA,EAAAA,SAAAA,QAAAA,CAAAA,MA3FX,EA2F2BzB,OA3F3B,EA2F8C;AAC1C,MAAA,IAAIiG,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzC,QAAA,IAAI,CAAC,IAAKhB,CAAAA,SAAL,CAAe1D,MAAf,CAAL,EAA6B;AAC3BmB,UAAAA,OAAO,CAACwD,IAAR,CAAA,wBAAA,CAAA,MAAA,CAAqC3E,MAArC,EAAA,gBAAA,CAAA,CAAA,CAAA;AACD,SAAA;;AAED,QAAA,IAAI,CAAC,IAAK2D,CAAAA,WAAL,CAAiB3D,MAAjB,CAAL,EAA+B;AAC7BmB,UAAAA,OAAO,CAACwD,IAAR,CAAA,2BAAA,CAAA,MAAA,CAC6B3E,MAD7B,EAAA,8CAAA,CAAA,CAAA,CAAA;AAGD,SAAA;AACF,OAAA;;AAED,MAAK4E,IAAAA,CAAAA,OAAL,GAAe5E,MAAf,CAAA;AACA,MAAK6E,IAAAA,CAAAA,QAAL,GAAgBtG,OAAhB,CAAA;AACA,MAAK8F,IAAAA,CAAAA,IAAL,CAAU,QAAV,CAAA,CAAA;AACD,KA3GH;;AAAA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,GAAA;AAAA,IAAA,KAAA,EAAA,SAAA,CAAA,CA+GIS,EA/GJ,EAkHI;AAAA,MAFAlD,IAAAA,MAEA,uEAF6B,EAE7B,CAAA;;AAAA,MAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAD4D,EAC5D;AAAA,UADErB,OACF,QADEA,OACF;AAAA,UADWH,OACX,QADWA,OACX;AAAA,UADoBuB,OACpB,QADoBA,OACpB,CAAA;;AACA,MAAA,IAAI,CAAC5D,QAAQ,CAAC+G,EAAD,CAAb,EAAmB;AACjBlD,QAAAA,MAAM,GAAGkD,EAAE,CAAClD,MAAH,IAAaA,MAAtB,CAAA;AACArB,QAAAA,OAAO,GAAGuE,EAAE,CAACvE,OAAb,CAAA;AACAoB,QAAAA,OAAO,GAAGmD,EAAE,CAACnD,OAAb,CAAA;AACAmD,QAAAA,EAAE,GAAGA,EAAE,CAACA,EAAR,CAAA;AACD,OAAA;;AAED,MAAMC,IAAAA,cAAc,GAAG,CAACpD,OAAD,IAAY,CAAC,IAAKmC,CAAAA,QAAL,CAAcgB,EAAd,CAApC,CAAA;AACA,MAAME,IAAAA,wBAAwB,GAAGrD,OAAO,IAAI,CAAC,IAAKmC,CAAAA,QAAL,CAAcnC,OAAd,CAAuBmD,CAAAA,EAAvB,CAA7C,CAAA;AACA,MAAA,IAAMG,kBAAkB,GAAGD,wBAAwB,IAAID,cAAvD,CAVA;;AAaA,MAAMnB,IAAAA,OAAO,GAAG,IAAA,CAAKC,QAArB,CAAA;;AACA,MAAID,IAAAA,OAAO,IAAIqB,kBAAf,EAAmC;AACjC,QAAA,OAAOhH,UAAU,CAAC2F,OAAD,CAAV,GAAsBA,OAAO,CAAC,IAAKgB,CAAAA,OAAN,EAAeE,EAAf,EAAmBnD,OAAnB,CAA7B,GAA2DiC,OAAlE,CAAA;AACD,OAAA;;AAED,MAAA,IAAIqB,kBAAJ,EAAwB;AACtB,QAAKZ,IAAAA,CAAAA,IAAL,CAAU,SAAV,EAAqB;AAAES,UAAAA,EAAE,EAAFA,EAAF;AAAMnD,UAAAA,OAAO,EAAPA,OAAN;AAAe3B,UAAAA,MAAM,EAAE,IAAK4E,CAAAA,OAAAA;AAA5B,SAArB,CAAA,CAAA;AACD,OAAA;;AAED,MAAA,IAAI1C,WAAJ,CAAA;;AAEA,MAAA,IAAIP,OAAO,IAAI,CAACqD,wBAAhB,EAA0C;AACxC;AACA9C,QAAAA,WAAW,GAAG,IAAA,CAAK4B,QAAL,CAAcnC,OAAd,CAAA,CAAuBmD,EAAvB,CAAA,IAA8BvE,OAA9B,IAAyCuE,EAAvD,CAAA;AACD,OAHD,MAGO;AACL5C,QAAAA,WAAW,GAAG,IAAK4B,CAAAA,QAAL,CAAcgB,EAAd,CAAA,IAAqBvE,OAArB,IAAgCuE,EAA9C,CAAA;AACD,OAAA;;AAED,MAAA,IAAIN,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzCxC,QAAAA,WAAW,GAAGnE,QAAQ,CAACmE,WAAD,CAAR,GACVgD,sBAAc,CAAChD,WAAD,CADJ,GAEVA,WAFJ,CAAA;AAGD,OAnCD;;;AAsCA,MAAA,IAAInE,QAAQ,CAACmE,WAAD,CAAR,IAAyBpC,aAAa,CAAC2C,IAAd,CAAmBP,WAAnB,CAA7B,EACE,OAAOtC,IAAI,CAAC8C,KAAL,CAAA,IAAA,CAAA,MAAA,CAAeR,WAAf,EAAP,IAAA,CAAA,CAAA,CAAA;AACF,MAAA,IAAInE,QAAQ,CAACmE,WAAD,CAAZ,EAA2B,OAAOA,WAAP,CAAA;AAE3B,MAAA,OAAOD,WAAW,CAChBC,WADgB,EAEhB,IAAA,CAAK0C,OAFW,EAGhB,IAAA,CAAKC,QAHW,EAIhB,KAAK5E,UAJW,CAAX,CAKL2B,MALK,EAKGxB,OALH,CAAP,CAAA;AAMD,KAAA;AAlKH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,MAAA;AAAA,IAoKO1B,KAAAA,EAAAA,SAAAA,MAAAA,CAAAA,KApKP,EAoK6BF,MApK7B,EAoK0E;AACtE,MAAA,OAAOF,IAAI,CAAC,IAAKuG,CAAAA,QAAL,IAAiB,IAAA,CAAKD,OAAvB,EAAgCpG,MAAhC,CAAJ,CAA4CE,KAA5C,CAAP,CAAA;AACD,KAAA;AAtKH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;AAAA,IAwKSA,KAAAA,EAAAA,SAAAA,QAAAA,CAAAA,KAxKT,EAwKwBF,MAxKxB,EAwKmE;AAC/D,MAAA,OAAOY,MAAM,CAAC,IAAKyF,CAAAA,QAAL,IAAiB,IAAA,CAAKD,OAAvB,EAAgCpG,MAAhC,CAAN,CAA8CE,KAA9C,CAAP,CAAA;AACD,KAAA;AA1KH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;AAAA,IAqBe,GAAA,EAAA,SAAA,GAAA,GAAA;AACX,MAAA,OAAO,KAAKkG,OAAZ,CAAA;AACD,KAAA;AAvBH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,SAAA;AAAA,IAyBgB,GAAA,EAAA,SAAA,GAAA,GAAA;AACZ,MAAA,OAAO,KAAKC,QAAZ,CAAA;AACD,KAAA;AA3BH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,UAAA;AAAA,IA6B2B,GAAA,EAAA,SAAA,GAAA,GAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AACvB,MAAA,OAAA,CAAA,qBAAA,GAAO,KAAKnB,SAAL,CAAe,KAAKkB,OAApB,CAAP,yEAAuC,EAAvC,CAAA;AACD,KAAA;AA/BH,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,YAAA;AAAA,IAiC+B,GAAA,EAAA,SAAA,GAAA,GAAA;AAAA,MAAA,IAAA,qBAAA,CAAA;;AAC3B,MAAA,OAAA,CAAA,qBAAA,GAAO,KAAKjB,WAAL,CAAiB,KAAKiB,OAAtB,CAAP,yEAAyC,EAAzC,CAAA;AACD,KAAA;AAnCH,GAAA,CAAA,CAAA,CAAA;;AAAA,EAAA,OAAA,IAAA,CAAA;AAAA,CAAA,CAA0BhC,YAA1B,EAAA;;AA6KA,SAASuC,SAAT,GAAsD;AAAA,EAAnC1B,IAAAA,MAAmC,uEAAV,EAAU,CAAA;AACpD,EAAA,OAAO,IAAID,IAAJ,CAASC,MAAT,CAAP,CAAA;AACD;;AC3NY2B,IAAAA,IAAI,GAAGD,SAAS;;;;;;;"}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -0,0 +1 @@
1
+ module.exports = require("./cjs/compile.js")
@@ -0,0 +1,66 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { parse } from '@messageformat/parser';
3
+
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
5
+
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
7
+
8
+ // [Tokens] -> (CTX -> String)
9
+ function processTokens(tokens, mapText) {
10
+ if (!tokens.filter(function (token) {
11
+ return token.type !== "content";
12
+ }).length) {
13
+ return tokens.map(function (token) {
14
+ return mapText(token.value);
15
+ }).join("");
16
+ }
17
+
18
+ return tokens.map(function (token) {
19
+ if (token.type === 'content') {
20
+ return mapText(token.value); // # in plural case
21
+ } else if (token.type === "octothorpe") {
22
+ return "#"; // simple argument
23
+ } else if (token.type === "argument") {
24
+ return [token.arg]; // argument with custom format (date, number)
25
+ } else if (token.type === "function") {
26
+ var _token$param;
27
+
28
+ var _param = token === null || token === void 0 ? void 0 : (_token$param = token.param) === null || _token$param === void 0 ? void 0 : _token$param[0];
29
+
30
+ if (_param) {
31
+ return [token.arg, token.key, _param.value.trim()];
32
+ } else {
33
+ return [token.arg, token.key];
34
+ }
35
+ }
36
+
37
+ var offset = token.pluralOffset; // complex argument with cases
38
+
39
+ var formatProps = {};
40
+ token.cases.forEach(function (item) {
41
+ formatProps[item.key.replace(/^=(.)+/, "$1")] = processTokens(item.tokens, mapText);
42
+ });
43
+ return [token.arg, token.type, _objectSpread({
44
+ offset: offset
45
+ }, formatProps)];
46
+ });
47
+ } // Message -> (Params -> String)
48
+
49
+ /** @internal */
50
+
51
+
52
+ function compileMessage(message) {
53
+ var mapText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (v) {
54
+ return v;
55
+ };
56
+
57
+ try {
58
+ return processTokens(parse(message), mapText);
59
+ } catch (e) {
60
+ console.error("".concat(e.message, " \n\nMessage: ").concat(message));
61
+ return message;
62
+ }
63
+ }
64
+
65
+ export { compileMessage };
66
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sources":["../../src/compile/compileMessage.ts"],"sourcesContent":["import {Content, parse, Token} from \"@messageformat/parser\"\nimport {CompiledMessage, CompiledMessageToken} from \"../i18n\"\n\ntype MapTextFn = (value: string) => string;\n\n// [Tokens] -> (CTX -> String)\nfunction processTokens(tokens: Array<Token>, mapText?: MapTextFn): CompiledMessage {\n if (!tokens.filter((token) => token.type !== \"content\").length) {\n return tokens.map(token => mapText((token as Content).value)).join(\"\")\n }\n\n return tokens.map<CompiledMessageToken>((token) => {\n if (token.type === 'content') {\n return mapText(token.value)\n\n // # in plural case\n } else if (token.type === \"octothorpe\") {\n return \"#\"\n\n // simple argument\n } else if (token.type === \"argument\") {\n return [token.arg]\n\n // argument with custom format (date, number)\n } else if (token.type === \"function\") {\n const _param = token?.param?.[0] as Content\n\n if (_param) {\n return [token.arg, token.key, _param.value.trim()]\n } else {\n return [token.arg, token.key]\n }\n }\n\n const offset = token.pluralOffset\n\n // complex argument with cases\n const formatProps = {}\n token.cases.forEach((item) => {\n formatProps[item.key.replace(/^=(.)+/, \"$1\")] = processTokens(item.tokens, mapText)\n })\n\n return [\n token.arg,\n token.type,\n {\n offset,\n ...formatProps,\n } as any,\n ] as CompiledMessageToken\n })\n}\n\n// Message -> (Params -> String)\n/** @internal */\nexport function compileMessage(\n message: string,\n mapText: MapTextFn = (v) => v,\n): CompiledMessage {\n try {\n return processTokens(parse(message), mapText)\n } catch (e) {\n console.error(`${e.message} \\n\\nMessage: ${message}`)\n return message\n }\n}\n"],"names":["processTokens","tokens","mapText","filter","token","type","length","map","value","join","arg","_param","param","key","trim","offset","pluralOffset","formatProps","cases","forEach","item","replace","compileMessage","message","v","parse","e","console","error"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
+ import _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';
3
4
  import _inherits from '@babel/runtime/helpers/inherits';
4
5
  import _possibleConstructorReturn from '@babel/runtime/helpers/possibleConstructorReturn';
5
6
  import _getPrototypeOf from '@babel/runtime/helpers/getPrototypeOf';
7
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
6
8
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
9
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
8
- import _defineProperty from '@babel/runtime/helpers/defineProperty';
9
- import { parse } from 'messageformat-parser';
10
+ import { compileMessage } from '@lingui/core/compile';
10
11
 
11
12
  var isString = function isString(s) {
12
13
  return typeof s === "string";
@@ -16,7 +17,6 @@ var isFunction = function isFunction(f) {
16
17
  };
17
18
 
18
19
  /** Memoized cache */
19
-
20
20
  var numberFormats = new Map();
21
21
  var dateFormats = new Map();
22
22
  function date(locales) {
@@ -145,25 +145,20 @@ var defaultFormats = function defaultFormats(locale, locales) {
145
145
  };
146
146
  }; // Params -> CTX
147
147
 
148
- /**
149
- * Creates a context object, which formats ICU MessageFormat arguments based on
150
- * argument type.
151
- *
152
- * @param locale - Locale of message
153
- * @param locales - Locales to be used when formatting the numbers or dates
154
- * @param values - Parameters for variable interpolation
155
- * @param localeData - Locale data (e.g: plurals)
156
- * @param formats - Custom format styles
157
- * @returns {function(string, string, any)}
148
+ /**
149
+ * Creates a context object, which formats ICU MessageFormat arguments based on
150
+ * argument type.
151
+ *
152
+ * @param locale - Locale of message
153
+ * @param locales - Locales to be used when formatting the numbers or dates
154
+ * @param values - Parameters for variable interpolation
155
+ * @param localeData - Locale data (e.g: plurals)
156
+ * @param formats - Custom format styles
157
+ * @returns {function(string, string, any)}
158
158
  */
159
159
 
160
160
 
161
- function context(_ref3) {
162
- var locale = _ref3.locale,
163
- locales = _ref3.locales,
164
- values = _ref3.values,
165
- formats = _ref3.formats,
166
- localeData = _ref3.localeData;
161
+ function context(locale, locales, values, formats, localeData) {
167
162
  var formatters = defaultFormats(locale, locales, localeData, formats);
168
163
 
169
164
  var ctx = function ctx(name, type, format) {
@@ -179,13 +174,7 @@ function context(_ref3) {
179
174
  function interpolate(translation, locale, locales, localeData) {
180
175
  return function (values) {
181
176
  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
182
- var ctx = context({
183
- locale: locale,
184
- locales: locales,
185
- localeData: localeData,
186
- formats: formats,
187
- values: values
188
- });
177
+ var ctx = context(locale, locales, values, formats, localeData);
189
178
 
190
179
  var formatMessage = function formatMessage(message) {
191
180
  if (!Array.isArray(message)) return message;
@@ -220,58 +209,11 @@ function interpolate(translation, locale, locales, localeData) {
220
209
  };
221
210
  }
222
211
 
223
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
224
-
225
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
226
-
227
- function processTokens(tokens) {
228
- if (!tokens.filter(function (token) {
229
- return !isString(token);
230
- }).length) {
231
- return tokens.join("");
232
- }
233
-
234
- return tokens.map(function (token) {
235
- if (isString(token)) {
236
- return token; // # in plural case
237
- } else if (token.type === "octothorpe") {
238
- return "#"; // simple argument
239
- } else if (token.type === "argument") {
240
- return [token.arg]; // argument with custom format (date, number)
241
- } else if (token.type === "function") {
242
- var _param = token.param && token.param.tokens[0];
243
-
244
- var param = typeof _param === "string" ? _param.trim() : _param;
245
- return [token.arg, token.key, param].filter(Boolean);
246
- }
247
-
248
- var offset = token.offset ? parseInt(token.offset) : undefined; // complex argument with cases
249
-
250
- var formatProps = {};
251
- token.cases.forEach(function (item) {
252
- formatProps[item.key] = processTokens(item.tokens);
253
- });
254
- return [token.arg, token.type, _objectSpread({
255
- offset: offset
256
- }, formatProps)];
257
- });
258
- } // Message -> (Params -> String)
259
-
260
-
261
- function compile(message) {
262
- try {
263
- return processTokens(parse(message));
264
- } catch (e) {
265
- console.error("Message cannot be parsed due to syntax errors: ".concat(message));
266
- return message;
267
- }
268
- }
269
-
270
212
  var EventEmitter = /*#__PURE__*/function () {
271
213
  function EventEmitter() {
272
214
  _classCallCheck(this, EventEmitter);
273
215
 
274
- this._events = {};
216
+ _defineProperty(this, "_events", {});
275
217
  }
276
218
 
277
219
  _createClass(EventEmitter, [{
@@ -335,6 +277,17 @@ var I18n = /*#__PURE__*/function (_EventEmitter) {
335
277
  _classCallCheck(this, I18n);
336
278
 
337
279
  _this = _super.call(this);
280
+
281
+ _defineProperty(_assertThisInitialized(_this), "_locale", void 0);
282
+
283
+ _defineProperty(_assertThisInitialized(_this), "_locales", void 0);
284
+
285
+ _defineProperty(_assertThisInitialized(_this), "_localeData", void 0);
286
+
287
+ _defineProperty(_assertThisInitialized(_this), "_messages", void 0);
288
+
289
+ _defineProperty(_assertThisInitialized(_this), "_missing", void 0);
290
+
338
291
  _this._messages = {};
339
292
  _this._localeData = {};
340
293
  if (params.missing != null) _this._missing = params.missing;
@@ -407,7 +360,7 @@ var I18n = /*#__PURE__*/function (_EventEmitter) {
407
360
  }, {
408
361
  key: "activate",
409
362
  value: function activate(locale, locales) {
410
- {
363
+ if (process.env.NODE_ENV !== "production") {
411
364
  if (!this._messages[locale]) {
412
365
  console.warn("Messages for locale \"".concat(locale, "\" not loaded."));
413
366
  }
@@ -466,8 +419,8 @@ var I18n = /*#__PURE__*/function (_EventEmitter) {
466
419
  translation = this.messages[id] || message || id;
467
420
  }
468
421
 
469
- {
470
- translation = isString(translation) ? compile(translation) : translation;
422
+ if (process.env.NODE_ENV !== "production") {
423
+ translation = isString(translation) ? compileMessage(translation) : translation;
471
424
  } // hack for parsing unicode values inside a string to get parsed in react native environments
472
425
 
473
426
 
@@ -522,4 +475,4 @@ function setupI18n() {
522
475
  var i18n = setupI18n();
523
476
 
524
477
  export { I18n, formats, i18n, setupI18n };
525
- //# sourceMappingURL=dev.development.js.map
478
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../src/essentials.ts","../../src/formats.ts","../../src/context.ts","../../src/eventEmitter.ts","../../src/i18n.ts","../../src/index.ts"],"sourcesContent":["export const isString = (s): s is string => typeof s === \"string\"\nexport const isFunction = (f): f is Function => typeof f === \"function\"\nexport function isEmpty(obj) {\n // null and undefined are \"empty\"\n if (obj === null || obj === undefined) return true\n\n if (obj.length > 0) return false\n if (obj.length === 0) return true\n\n return !Object.getOwnPropertyNames(obj).length\n}\n","import { isString } from \"./essentials\"\nimport { Locales } from \"./i18n\"\n\n/** Memoized cache */\nconst numberFormats = new Map<string, Intl.NumberFormat>()\nconst dateFormats = new Map<string, Intl.DateTimeFormat>()\n\nexport function date(\n locales: Locales,\n format: Intl.DateTimeFormatOptions = {},\n memoize: boolean = true,\n): (value: string | Date) => string {\n return (value) => {\n if (isString(value)) value = new Date(value)\n if (memoize) {\n const key = cacheKey<Intl.DateTimeFormatOptions>(locales, format)\n const cachedFormatter = dateFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n dateFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.DateTimeFormat(locales, format)\n return formatter.format(value)\n }\n}\n\nexport function number(\n locales: Locales,\n format: Intl.NumberFormatOptions = {},\n memoize: boolean = true,\n): (value: number) => string {\n return (value) => {\n if (memoize) {\n const key = cacheKey<Intl.NumberFormatOptions>(locales, format)\n const cachedFormatter = numberFormats.get(key)\n if (cachedFormatter) {\n return cachedFormatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n numberFormats.set(key, formatter)\n return formatter.format(value)\n }\n\n const formatter = new Intl.NumberFormat(locales, format)\n return formatter.format(value)\n }\n}\n\n/** Memoize helpers */\nfunction cacheKey<T>(\n locales?: string | string[],\n options: T = {} as T,\n) {\n const localeKey = Array.isArray(locales) ? locales.sort().join('-') : locales\n return `${localeKey}-${JSON.stringify(options)}`\n}\n","import {CompiledMessage, Formats, LocaleData, Locales, Values} from \"./i18n\"\nimport { date, number } from \"./formats\"\nimport { isString, isFunction } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g;\n\nconst defaultFormats = (\n locale: string,\n locales: Locales,\n localeData: LocaleData = { plurals: undefined },\n formats: Formats = {}\n) => {\n locales = locales || locale\n const { plurals } = localeData\n const style = <T>(format: string | T): T =>\n isString(format)\n ? formats[format] || { style: format }\n : format as any\n const replaceOctothorpe = (value: number, message) => {\n return (ctx) => {\n const msg = isFunction(message) ? message(ctx) : message\n const norm = Array.isArray(msg) ? msg : [msg]\n const numberFormat = Object.keys(formats).length ? style('number') : {};\n const valueStr = number(locales, numberFormat)(value)\n return norm.map((m) => (isString(m) ? m.replace(\"#\", valueStr) : m))\n }\n }\n\n if (!plurals) {\n console.error(`Plurals for locale ${locale} aren't loaded. Use i18n.loadLocaleData method to load plurals for specific locale. Using other plural rule as a fallback.`)\n }\n\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message = rules[value] || rules[plurals?.(value - offset)] || rules.other\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, { offset = 0, ...rules }) => {\n const message = rules[value] || rules[plurals?.(value - offset, true)] || rules.other\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (value: number, format: string | Intl.NumberFormatOptions) => number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) => date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\n }\n}\n\n\n// Params -> CTX\n/**\n * Creates a context object, which formats ICU MessageFormat arguments based on\n * argument type.\n *\n * @param locale - Locale of message\n * @param locales - Locales to be used when formatting the numbers or dates\n * @param values - Parameters for variable interpolation\n * @param localeData - Locale data (e.g: plurals)\n * @param formats - Custom format styles\n * @returns {function(string, string, any)}\n */\nfunction context(\n locale: string,\n locales: Locales,\n values: Values,\n formats: Formats,\n localeData: LocaleData\n) {\n const formatters = defaultFormats(locale, locales, localeData, formats)\n\n const ctx = (name: string, type: string, format: any): string => {\n const value = values[name]\n const formatted = formatters[type](value, format)\n const message = isFunction(formatted) ? formatted(ctx) : formatted\n return Array.isArray(message) ? message.join(\"\") : message\n }\n\n return ctx\n}\n\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales,\n localeData: LocaleData\n) {\n return (values: Values, formats: Formats = {}): string => {\n const ctx = context(\n locale,\n locales,\n values,\n formats,\n localeData,\n )\n\n const formatMessage = (message: CompiledMessage): string => {\n if (!Array.isArray(message)) return message\n\n return message.reduce<string>((message, token) => {\n if (isString(token)) return message + token\n\n const [name, type, format] = token\n\n let interpolatedFormat = {}\n if (format != null && !isString(format)) {\n Object.keys(format).forEach((key) => {\n interpolatedFormat[key] = formatMessage(format[key])\n })\n } else {\n interpolatedFormat = format\n }\n\n const value = ctx(name, type, interpolatedFormat)\n if (value == null) return message\n\n return message + value\n }, \"\")\n }\n\n const result = formatMessage(translation)\n if (isString(result) && UNICODE_REGEX.test(result)) return JSON.parse(`\"${result.trim()}\"`)\n if (isString(result)) return result.trim()\n return result\n }\n}\n","export class EventEmitter<\n Events extends { [name: string]: (...args: any[]) => any }\n> {\n private readonly _events: {\n [name in keyof Events]?: Array<Events[name]>\n } = {}\n\n on(event: keyof Events, listener: Events[typeof event]): () => void {\n if (!this._hasEvent(event)) this._events[event] = []\n\n this._events[event].push(listener)\n return () => this.removeListener(event, listener)\n }\n\n removeListener(event: keyof Events, listener: Events[typeof event]): void {\n if (!this._hasEvent(event)) return\n\n const index = this._events[event].indexOf(listener)\n if (~index) this._events[event].splice(index, 1)\n }\n\n emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void {\n if (!this._hasEvent(event)) return\n\n this._events[event].map((listener) => listener.apply(this, args))\n }\n\n private _hasEvent(event: keyof Events) {\n return Array.isArray(this._events[event])\n }\n}\n","import { interpolate, UNICODE_REGEX } from \"./context\"\nimport { isString, isFunction } from \"./essentials\"\nimport { date, number } from \"./formats\"\nimport { compileMessage } from \"@lingui/core/compile\"\nimport { EventEmitter } from \"./eventEmitter\"\nimport type {PluralCategory} from \"make-plural\"\n\nexport type MessageOptions = {\n message?: string\n context?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<string, Intl.DateTimeFormatOptions | Intl.NumberFormatOptions>\n\nexport type Values = Record<string, unknown>;\n\nexport type LocaleData = {\n plurals?: (n: number, ordinal?: boolean) => PluralCategory\n}\n\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {offset: number};\nexport type CompiledMessageToken = string | [name: string, type?: string, format?: null | string | CompiledIcuChoices];\n\nexport type CompiledMessage = string | CompiledMessageToken[]\n\nexport type Messages = Record<string, CompiledMessage>\n\nexport type AllMessages = Record<Locale, Messages>\n\nexport type MessageDescriptor = {\n id?: string\n comment?: string\n message?: string\n context?: string\n values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n context?: string\n}\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: string | ((message: string, id: string, context: string) => string)\n}\n\ntype Events = {\n change: () => void\n missing: (event: MissingMessageEvent) => void\n}\n\nexport class I18n extends EventEmitter<Events> {\n private _locale: Locale\n private _locales: Locales\n private _localeData: AllLocaleData\n private _messages: AllMessages\n private _missing: string | ((message, id, context) => string)\n\n constructor(params: setupI18nProps) {\n super()\n\n this._messages = {}\n this._localeData = {}\n\n if (params.missing != null) this._missing = params.missing\n if (params.messages != null) this.load(params.messages)\n if (params.localeData != null) this.loadLocaleData(params.localeData)\n if (params.locale != null || params.locales != null) {\n this.activate(params.locale, params.locales)\n }\n }\n\n get locale() {\n return this._locale\n }\n\n get locales() {\n return this._locales\n }\n\n get messages(): Messages {\n return this._messages[this._locale] ?? {}\n }\n\n get localeData(): LocaleData {\n return this._localeData[this._locale] ?? {}\n }\n\n private _loadLocaleData(locale: Locale, localeData: LocaleData) {\n if (this._localeData[locale] == null) {\n this._localeData[locale] = localeData\n } else {\n Object.assign(this._localeData[locale], localeData)\n }\n }\n\n public loadLocaleData(allLocaleData: AllLocaleData): void\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n\n loadLocaleData(localeOrAllData, localeData?) {\n if (localeData != null) {\n // loadLocaleData('en', enLocaleData)\n // Loading locale data for a single locale.\n this._loadLocaleData(localeOrAllData, localeData)\n } else {\n // loadLocaleData(allLocaleData)\n // Loading all locale data at once.\n Object.keys(localeOrAllData).forEach((locale) =>\n this._loadLocaleData(locale, localeOrAllData[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n private _load(locale: Locale, messages: Messages) {\n if (this._messages[locale] == null) {\n this._messages[locale] = messages\n } else {\n Object.assign(this._messages[locale], messages)\n }\n }\n\n public load(allMessages: AllMessages): void\n public load(locale: Locale, messages: Messages): void\n\n load(localeOrMessages, messages?) {\n if (messages != null) {\n // load('en', catalog)\n // Loading a catalog for a single locale.\n this._load(localeOrMessages, messages)\n } else {\n // load(catalogs)\n // Loading several locales at once.\n Object.keys(localeOrMessages).forEach((locale) =>\n this._load(locale, localeOrMessages[locale])\n )\n }\n\n this.emit(\"change\")\n }\n\n activate(locale: Locale, locales?: Locales) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!this._messages[locale]) {\n console.warn(`Messages for locale \"${locale}\" not loaded.`)\n }\n\n if (!this._localeData[locale]) {\n console.warn(\n `Locale data for locale \"${locale}\" not loaded. Plurals won't work correctly.`\n )\n }\n }\n\n this._locale = locale\n this._locales = locales\n this.emit(\"change\")\n }\n\n // method for translation and formatting\n _(\n id: MessageDescriptor | string,\n values: Values | undefined = {},\n { message, formats, context }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n context = id.context\n id = id.id\n }\n\n const messageMissing = !context && !this.messages[id]\n const contextualMessageMissing = context && !this.messages[context][id]\n const messageUnreachable = contextualMessageMissing || messageMissing\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageUnreachable) {\n return isFunction(missing) ? missing(this._locale, id, context) : missing\n }\n\n if (messageUnreachable) {\n this.emit(\"missing\", { id, context, locale: this._locale })\n }\n\n let translation\n\n if (context && !contextualMessageMissing) {\n // context is like a subdirectory of other keys\n translation = this.messages[context][id] || message || id\n } else {\n translation = this.messages[id] || message || id\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n translation = isString(translation)\n ? compileMessage(translation)\n : translation\n }\n\n // hack for parsing unicode values inside a string to get parsed in react native environments\n if (isString(translation) && UNICODE_REGEX.test(translation))\n return JSON.parse(`\"${translation}\"`) as string\n if (isString(translation)) return translation\n\n return interpolate(\n translation,\n this._locale,\n this._locales,\n this.localeData\n )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, format)(value)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, format)(value)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export {\n setupI18n,\n I18n,\n} from \"./i18n\"\n\nexport type {\n AllMessages,\n MessageDescriptor,\n Messages,\n AllLocaleData,\n LocaleData,\n Locale,\n Locales,\n} from \"./i18n\"\n\n// Default i18n object\nimport { setupI18n } from \"./i18n\"\nexport const i18n = setupI18n()\n\nimport * as formats from \"./formats\"\nexport { formats }\n"],"names":["isString","s","isFunction","f","numberFormats","Map","dateFormats","date","locales","format","memoize","value","Date","key","cacheKey","cachedFormatter","get","formatter","Intl","DateTimeFormat","set","number","NumberFormat","options","localeKey","Array","isArray","sort","join","JSON","stringify","UNICODE_REGEX","defaultFormats","locale","localeData","plurals","undefined","formats","style","replaceOctothorpe","message","ctx","msg","norm","numberFormat","Object","keys","length","valueStr","map","m","replace","console","error","plural","offset","rules","other","selectordinal","select","context","values","formatters","name","type","formatted","interpolate","translation","formatMessage","reduce","token","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","event","listener","_hasEvent","_events","push","removeListener","index","indexOf","splice","args","apply","I18n","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","assign","localeOrAllData","_loadLocaleData","emit","localeOrMessages","_load","process","env","NODE_ENV","warn","_locale","_locales","id","messageMissing","contextualMessageMissing","messageUnreachable","compileMessage","setupI18n","i18n"],"mappings":"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"}
File without changes
@@ -0,0 +1,94 @@
1
+ import { PluralCategory } from 'make-plural';
2
+
3
+ declare class EventEmitter<Events extends {
4
+ [name: string]: (...args: any[]) => any;
5
+ }> {
6
+ private readonly _events;
7
+ on(event: keyof Events, listener: Events[typeof event]): () => void;
8
+ removeListener(event: keyof Events, listener: Events[typeof event]): void;
9
+ emit(event: keyof Events, ...args: Parameters<Events[typeof event]>): void;
10
+ private _hasEvent;
11
+ }
12
+
13
+ declare type MessageOptions = {
14
+ message?: string;
15
+ context?: string;
16
+ formats?: Formats;
17
+ };
18
+ declare type Locale = string;
19
+ declare type Locales = Locale | Locale[];
20
+ declare type Formats = Record<string, Intl.DateTimeFormatOptions | Intl.NumberFormatOptions>;
21
+ declare type Values = Record<string, unknown>;
22
+ declare type LocaleData = {
23
+ plurals?: (n: number, ordinal?: boolean) => PluralCategory;
24
+ };
25
+ declare type AllLocaleData = Record<Locale, LocaleData>;
26
+ declare type CompiledIcuChoices = Record<string, CompiledMessage> & {
27
+ offset: number;
28
+ };
29
+ declare type CompiledMessageToken = string | [name: string, type?: string, format?: null | string | CompiledIcuChoices];
30
+ declare type CompiledMessage = string | CompiledMessageToken[];
31
+ declare type Messages = Record<string, CompiledMessage>;
32
+ declare type AllMessages = Record<Locale, Messages>;
33
+ declare type MessageDescriptor = {
34
+ id?: string;
35
+ comment?: string;
36
+ message?: string;
37
+ context?: string;
38
+ values?: Record<string, unknown>;
39
+ };
40
+ declare type MissingMessageEvent = {
41
+ locale: Locale;
42
+ id: string;
43
+ context?: string;
44
+ };
45
+ declare type setupI18nProps = {
46
+ locale?: Locale;
47
+ locales?: Locales;
48
+ messages?: AllMessages;
49
+ localeData?: AllLocaleData;
50
+ missing?: string | ((message: string, id: string, context: string) => string);
51
+ };
52
+ declare type Events = {
53
+ change: () => void;
54
+ missing: (event: MissingMessageEvent) => void;
55
+ };
56
+ declare class I18n extends EventEmitter<Events> {
57
+ private _locale;
58
+ private _locales;
59
+ private _localeData;
60
+ private _messages;
61
+ private _missing;
62
+ constructor(params: setupI18nProps);
63
+ get locale(): string;
64
+ get locales(): Locales;
65
+ get messages(): Messages;
66
+ get localeData(): LocaleData;
67
+ private _loadLocaleData;
68
+ loadLocaleData(allLocaleData: AllLocaleData): void;
69
+ loadLocaleData(locale: Locale, localeData: LocaleData): void;
70
+ private _load;
71
+ load(allMessages: AllMessages): void;
72
+ load(locale: Locale, messages: Messages): void;
73
+ activate(locale: Locale, locales?: Locales): void;
74
+ _(id: MessageDescriptor | string, values?: Values | undefined, { message, formats, context }?: MessageOptions | undefined): string;
75
+ date(value: string | Date, format?: Intl.DateTimeFormatOptions): string;
76
+ number(value: number, format?: Intl.NumberFormatOptions): string;
77
+ }
78
+ declare function setupI18n(params?: setupI18nProps): I18n;
79
+
80
+ declare function date(locales: Locales, format?: Intl.DateTimeFormatOptions, memoize?: boolean): (value: string | Date) => string;
81
+ declare function number(locales: Locales, format?: Intl.NumberFormatOptions, memoize?: boolean): (value: number) => string;
82
+
83
+ declare const formats_date: typeof date;
84
+ declare const formats_number: typeof number;
85
+ declare namespace formats {
86
+ export {
87
+ formats_date as date,
88
+ formats_number as number,
89
+ };
90
+ }
91
+
92
+ declare const i18n: I18n;
93
+
94
+ export { AllLocaleData, AllMessages, I18n, Locale, LocaleData, Locales, MessageDescriptor, Messages, formats, i18n, setupI18n };
package/build/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require("./cjs/index.js")
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@lingui/core",
3
- "version": "3.15.0",
3
+ "version": "3.16.0",
4
4
  "sideEffects": false,
5
5
  "description": "I18n tools for javascript",
6
- "main": "index.js",
7
- "module": "esm/index.js",
8
- "types": "cjs/index.d.ts",
6
+ "main": "./build/cjs/index.js",
7
+ "module": "./build/esm/index.js",
8
+ "types": "./build/index.d.ts",
9
9
  "author": {
10
10
  "name": "Tomáš Ehrlich",
11
11
  "email": "tomas.ehrlich@gmail.com"
@@ -27,25 +27,28 @@
27
27
  "url": "https://github.com/lingui/js-lingui/issues"
28
28
  },
29
29
  "engines": {
30
- "node": ">=10.0.0"
30
+ "node": ">=14.0.0"
31
31
  },
32
32
  "exports": {
33
33
  ".": {
34
- "require": "./index.js",
35
- "import": "./esm/index.js"
34
+ "require": "./build/cjs/index.js",
35
+ "import": "./build/esm/index.js"
36
+ },
37
+ "./compile": {
38
+ "require": "./build/cjs/compile.js",
39
+ "import": "./build/esm/compile.js"
36
40
  },
37
41
  "./package.json": "./package.json"
38
42
  },
39
43
  "files": [
40
44
  "LICENSE",
41
45
  "README.md",
42
- "index.js",
43
- "cjs/",
44
- "esm/"
46
+ "build/"
45
47
  ],
46
48
  "dependencies": {
47
49
  "@babel/runtime": "^7.11.2",
48
- "make-plural": "^6.2.2",
49
- "messageformat-parser": "^4.1.3"
50
- }
50
+ "@messageformat/parser": "^5.0.0",
51
+ "make-plural": "^6.2.2"
52
+ },
53
+ "gitHead": "e8c1f518b988f45f3f6da84333550b215dcde94b"
51
54
  }
package/cjs/context.d.ts DELETED
@@ -1,4 +0,0 @@
1
- import { CompiledMessage, Locales } from "./i18n";
2
- export declare const UNICODE_REGEX: RegExp;
3
- export declare function interpolate(translation: CompiledMessage, locale: string, locales: Locales, localeData: Object): (values: Object, formats?: Object) => string;
4
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["packages/core/src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAIjD,eAAO,MAAM,aAAa,QAAyC,CAAC;AAwEpE,wBAAgB,WAAW,CACzB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,YAEF,MAAM,YAAW,MAAM,KAAQ,MAAM,CAsCtD"}