@lingui/core 3.14.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} +46 -87
  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} +33 -79
  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 -542
  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 -542
  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":";;;;;;;AAKA;AACA,SAASA,aAAT,CAAuBC,MAAvB,EAA6CC,OAA7C,EAAmF;AACjF,EAAA,IAAI,CAACD,MAAM,CAACE,MAAP,CAAc,UAACC,KAAD,EAAA;AAAA,IAAA,OAAWA,KAAK,CAACC,IAAN,KAAe,SAA1B,CAAA;AAAA,GAAd,CAAA,CAAmDC,MAAxD,EAAgE;AAC9D,IAAA,OAAOL,MAAM,CAACM,GAAP,CAAW,UAAAH,KAAK,EAAA;AAAA,MAAA,OAAIF,OAAO,CAAEE,KAAD,CAAmBI,KAApB,CAAX,CAAA;AAAA,KAAhB,CAAuDC,CAAAA,IAAvD,CAA4D,EAA5D,CAAP,CAAA;AACD,GAAA;;AAED,EAAA,OAAOR,MAAM,CAACM,GAAP,CAAiC,UAACH,KAAD,EAAW;AACjD,IAAA,IAAIA,KAAK,CAACC,IAAN,KAAe,SAAnB,EAA8B;AAC5B,MAAA,OAAOH,OAAO,CAACE,KAAK,CAACI,KAAP,CAAd,CAD4B;AAI7B,KAJD,MAIO,IAAIJ,KAAK,CAACC,IAAN,KAAe,YAAnB,EAAiC;AACtC,MAAO,OAAA,GAAP,CADsC;AAIvC,KAJM,MAIA,IAAID,KAAK,CAACC,IAAN,KAAe,UAAnB,EAA+B;AACpC,MAAA,OAAO,CAACD,KAAK,CAACM,GAAP,CAAP,CADoC;AAIrC,KAJM,MAIA,IAAIN,KAAK,CAACC,IAAN,KAAe,UAAnB,EAA+B;AAAA,MAAA,IAAA,YAAA,CAAA;;AACpC,MAAA,IAAMM,MAAM,GAAGP,KAAH,KAAA,IAAA,IAAGA,KAAH,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,YAAA,GAAGA,KAAK,CAAEQ,KAAV,MAAA,IAAA,IAAA,YAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAG,YAAe,CAAA,CAAf,CAAf,CAAA;;AAEA,MAAA,IAAID,MAAJ,EAAY;AACV,QAAA,OAAO,CAACP,KAAK,CAACM,GAAP,EAAYN,KAAK,CAACS,GAAlB,EAAuBF,MAAM,CAACH,KAAP,CAAaM,IAAb,EAAvB,CAAP,CAAA;AACD,OAFD,MAEO;AACL,QAAO,OAAA,CAACV,KAAK,CAACM,GAAP,EAAYN,KAAK,CAACS,GAAlB,CAAP,CAAA;AACD,OAAA;AACF,KAAA;;AAED,IAAA,IAAME,MAAM,GAAGX,KAAK,CAACY,YAArB,CAvBiD;;AA0BjD,IAAMC,IAAAA,WAAW,GAAG,EAApB,CAAA;AACAb,IAAAA,KAAK,CAACc,KAAN,CAAYC,OAAZ,CAAoB,UAACC,IAAD,EAAU;AAC5BH,MAAAA,WAAW,CAACG,IAAI,CAACP,GAAL,CAASQ,OAAT,CAAiB,QAAjB,EAA2B,IAA3B,CAAD,CAAX,GAAgDrB,aAAa,CAACoB,IAAI,CAACnB,MAAN,EAAcC,OAAd,CAA7D,CAAA;AACD,KAFD,CAAA,CAAA;AAIA,IAAA,OAAO,CACLE,KAAK,CAACM,GADD,EAELN,KAAK,CAACC,IAFD,EAAA,aAAA,CAAA;AAIHU,MAAAA,MAAM,EAANA,MAAAA;AAJG,KAAA,EAKAE,WALA,CAAP,CAAA,CAAA;AAQD,GAvCM,CAAP,CAAA;AAwCD;;AAGD;;;AACO,SAASK,cAAT,CACLC,OADK,EAGY;AAAA,EADjBrB,IAAAA,OACiB,GADI,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,UAACsB,CAAD,EAAA;AAAA,IAAA,OAAOA,CAAP,CAAA;AAAA,GACJ,CAAA;;AACjB,EAAI,IAAA;AACF,IAAOxB,OAAAA,aAAa,CAACyB,KAAK,CAACF,OAAD,CAAN,EAAiBrB,OAAjB,CAApB,CAAA;AACD,GAFD,CAEE,OAAOwB,CAAP,EAAU;AACVC,IAAAA,OAAO,CAACC,KAAR,CAAA,EAAA,CAAA,MAAA,CAAiBF,CAAC,CAACH,OAAnB,2BAA2CA,OAA3C,CAAA,CAAA,CAAA;AACA,IAAA,OAAOA,OAAP,CAAA;AACD,GAAA;AACF;;;;"}
@@ -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) {
@@ -99,8 +99,9 @@ var defaultFormats = function defaultFormats(locale, locales) {
99
99
  return function (ctx) {
100
100
  var msg = isFunction(message) ? message(ctx) : message;
101
101
  var norm = Array.isArray(msg) ? msg : [msg];
102
+ var numberFormat = Object.keys(formats).length ? style('number') : {};
102
103
 
103
- var valueStr = number(locales)(value);
104
+ var valueStr = number(locales, numberFormat)(value);
104
105
 
105
106
  return norm.map(function (m) {
106
107
  return isString(m) ? m.replace("#", valueStr) : m;
@@ -144,25 +145,20 @@ var defaultFormats = function defaultFormats(locale, locales) {
144
145
  };
145
146
  }; // Params -> CTX
146
147
 
147
- /**
148
- * Creates a context object, which formats ICU MessageFormat arguments based on
149
- * argument type.
150
- *
151
- * @param locale - Locale of message
152
- * @param locales - Locales to be used when formatting the numbers or dates
153
- * @param values - Parameters for variable interpolation
154
- * @param localeData - Locale data (e.g: plurals)
155
- * @param formats - Custom format styles
156
- * @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)}
157
158
  */
158
159
 
159
160
 
160
- function context(_ref3) {
161
- var locale = _ref3.locale,
162
- locales = _ref3.locales,
163
- values = _ref3.values,
164
- formats = _ref3.formats,
165
- localeData = _ref3.localeData;
161
+ function context(locale, locales, values, formats, localeData) {
166
162
  var formatters = defaultFormats(locale, locales, localeData, formats);
167
163
 
168
164
  var ctx = function ctx(name, type, format) {
@@ -178,13 +174,7 @@ function context(_ref3) {
178
174
  function interpolate(translation, locale, locales, localeData) {
179
175
  return function (values) {
180
176
  var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
181
- var ctx = context({
182
- locale: locale,
183
- locales: locales,
184
- localeData: localeData,
185
- formats: formats,
186
- values: values
187
- });
177
+ var ctx = context(locale, locales, values, formats, localeData);
188
178
 
189
179
  var formatMessage = function formatMessage(message) {
190
180
  if (!Array.isArray(message)) return message;
@@ -219,58 +209,11 @@ function interpolate(translation, locale, locales, localeData) {
219
209
  };
220
210
  }
221
211
 
222
- 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; }
223
-
224
- 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; }
225
-
226
- function processTokens(tokens) {
227
- if (!tokens.filter(function (token) {
228
- return !isString(token);
229
- }).length) {
230
- return tokens.join("");
231
- }
232
-
233
- return tokens.map(function (token) {
234
- if (isString(token)) {
235
- return token; // # in plural case
236
- } else if (token.type === "octothorpe") {
237
- return "#"; // simple argument
238
- } else if (token.type === "argument") {
239
- return [token.arg]; // argument with custom format (date, number)
240
- } else if (token.type === "function") {
241
- var _param = token.param && token.param.tokens[0];
242
-
243
- var param = typeof _param === "string" ? _param.trim() : _param;
244
- return [token.arg, token.key, param].filter(Boolean);
245
- }
246
-
247
- var offset = token.offset ? parseInt(token.offset) : undefined; // complex argument with cases
248
-
249
- var formatProps = {};
250
- token.cases.forEach(function (item) {
251
- formatProps[item.key] = processTokens(item.tokens);
252
- });
253
- return [token.arg, token.type, _objectSpread({
254
- offset: offset
255
- }, formatProps)];
256
- });
257
- } // Message -> (Params -> String)
258
-
259
-
260
- function compile(message) {
261
- try {
262
- return processTokens(parse(message));
263
- } catch (e) {
264
- console.error("Message cannot be parsed due to syntax errors: ".concat(message));
265
- return message;
266
- }
267
- }
268
-
269
212
  var EventEmitter = /*#__PURE__*/function () {
270
213
  function EventEmitter() {
271
214
  _classCallCheck(this, EventEmitter);
272
215
 
273
- this._events = {};
216
+ _defineProperty(this, "_events", {});
274
217
  }
275
218
 
276
219
  _createClass(EventEmitter, [{
@@ -334,6 +277,17 @@ var I18n = /*#__PURE__*/function (_EventEmitter) {
334
277
  _classCallCheck(this, I18n);
335
278
 
336
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
+
337
291
  _this._messages = {};
338
292
  _this._localeData = {};
339
293
  if (params.missing != null) _this._missing = params.missing;
@@ -406,7 +360,7 @@ var I18n = /*#__PURE__*/function (_EventEmitter) {
406
360
  }, {
407
361
  key: "activate",
408
362
  value: function activate(locale, locales) {
409
- {
363
+ if (process.env.NODE_ENV !== "production") {
410
364
  if (!this._messages[locale]) {
411
365
  console.warn("Messages for locale \"".concat(locale, "\" not loaded."));
412
366
  }
@@ -465,8 +419,8 @@ var I18n = /*#__PURE__*/function (_EventEmitter) {
465
419
  translation = this.messages[id] || message || id;
466
420
  }
467
421
 
468
- {
469
- translation = isString(translation) ? compile(translation) : translation;
422
+ if (process.env.NODE_ENV !== "production") {
423
+ translation = isString(translation) ? compileMessage(translation) : translation;
470
424
  } // hack for parsing unicode values inside a string to get parsed in react native environments
471
425
 
472
426
 
@@ -521,4 +475,4 @@ function setupI18n() {
521
475
  var i18n = setupI18n();
522
476
 
523
477
  export { I18n, formats, i18n, setupI18n };
524
- //# 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.14.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;AAuEpE,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"}