@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.
- package/CHANGELOG.md +384 -0
- package/build/LICENSE +21 -0
- package/build/cjs/compile.js +68 -0
- package/build/cjs/compile.js.map +1 -0
- package/{esm/core.development.js → build/cjs/index.js} +46 -87
- package/build/cjs/index.js.map +1 -0
- package/build/compile.d.ts +2 -0
- package/build/compile.js +1 -0
- package/build/esm/compile.js +66 -0
- package/build/esm/compile.js.map +1 -0
- package/{esm/dev.development.js → build/esm/index.js} +33 -79
- package/build/esm/index.js.map +1 -0
- package/{esm → build/esm}/package.json +0 -0
- package/build/index.d.ts +94 -0
- package/build/index.js +1 -0
- package/package.json +16 -13
- package/cjs/context.d.ts +0 -4
- package/cjs/context.d.ts.map +0 -1
- package/cjs/core.development.js +0 -542
- package/cjs/core.development.js.map +0 -1
- package/cjs/core.production.min.js +0 -2
- package/cjs/core.production.min.js.map +0 -1
- package/cjs/dev/compile.d.ts +0 -3
- package/cjs/dev/compile.d.ts.map +0 -1
- package/cjs/dev/index.d.ts +0 -4
- package/cjs/dev/index.d.ts.map +0 -1
- package/cjs/dev/loadLocaleData.d.ts +0 -5
- package/cjs/dev/loadLocaleData.d.ts.map +0 -1
- package/cjs/dev.development.js +0 -542
- package/cjs/dev.development.js.map +0 -1
- package/cjs/dev.production.min.js +0 -2
- package/cjs/dev.production.min.js.map +0 -1
- package/cjs/essentials.d.ts +0 -4
- package/cjs/essentials.d.ts.map +0 -1
- package/cjs/eventEmitter.d.ts +0 -10
- package/cjs/eventEmitter.d.ts.map +0 -1
- package/cjs/formats.d.ts +0 -4
- package/cjs/formats.d.ts.map +0 -1
- package/cjs/i18n.d.ts +0 -63
- package/cjs/i18n.d.ts.map +0 -1
- package/cjs/index.d.ts +0 -5
- package/cjs/index.d.ts.map +0 -1
- package/esm/context.d.ts +0 -4
- package/esm/context.d.ts.map +0 -1
- package/esm/core.development.js.map +0 -1
- package/esm/core.production.min.js +0 -2
- package/esm/core.production.min.js.map +0 -1
- package/esm/dev/compile.d.ts +0 -3
- package/esm/dev/compile.d.ts.map +0 -1
- package/esm/dev/index.d.ts +0 -4
- package/esm/dev/index.d.ts.map +0 -1
- package/esm/dev/loadLocaleData.d.ts +0 -5
- package/esm/dev/loadLocaleData.d.ts.map +0 -1
- package/esm/dev.development.js.map +0 -1
- package/esm/dev.js +0 -18
- package/esm/dev.production.min.js +0 -2
- package/esm/dev.production.min.js.map +0 -1
- package/esm/essentials.d.ts +0 -4
- package/esm/essentials.d.ts.map +0 -1
- package/esm/eventEmitter.d.ts +0 -10
- package/esm/eventEmitter.d.ts.map +0 -1
- package/esm/formats.d.ts +0 -4
- package/esm/formats.d.ts.map +0 -1
- package/esm/i18n.d.ts +0 -63
- package/esm/i18n.d.ts.map +0 -1
- package/esm/index.d.ts +0 -5
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -18
- 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":"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"}
|
package/build/compile.js
ADDED
|
@@ -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
|
|
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(
|
|
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
|
|
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) ?
|
|
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=
|
|
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":";;;;;;;;;;;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,cAAc,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;;;;"}
|
|
File without changes
|
package/build/index.d.ts
ADDED
|
@@ -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.
|
|
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": "
|
|
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": ">=
|
|
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
|
-
"
|
|
43
|
-
"cjs/",
|
|
44
|
-
"esm/"
|
|
46
|
+
"build/"
|
|
45
47
|
],
|
|
46
48
|
"dependencies": {
|
|
47
49
|
"@babel/runtime": "^7.11.2",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
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
|
package/cjs/context.d.ts.map
DELETED
|
@@ -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"}
|