@lingui/core 3.17.2 → 4.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,134 +6,105 @@ const isString = s => typeof s === "string";
6
6
  const isFunction = f => typeof f === "function";
7
7
 
8
8
  /** Memoized cache */
9
- const numberFormats = new Map();
10
- const dateFormats = new Map();
11
- function date(locales) {
12
- let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13
- let memoize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
14
- return value => {
15
- if (isString(value)) value = new Date(value);
16
- if (memoize) {
17
- const key = cacheKey(locales, format);
18
- const cachedFormatter = dateFormats.get(key);
19
- if (cachedFormatter) {
20
- return cachedFormatter.format(value);
21
- }
22
- const formatter = new Intl.DateTimeFormat(locales, format);
23
- dateFormats.set(key, formatter);
24
- return formatter.format(value);
25
- }
26
- const formatter = new Intl.DateTimeFormat(locales, format);
27
- return formatter.format(value);
28
- };
9
+ const cache = new Map();
10
+ function normalizeLocales(locales) {
11
+ const out = Array.isArray(locales) ? locales : [locales];
12
+ return [...out, "en"];
29
13
  }
30
- function number(locales) {
31
- let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
32
- let memoize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
33
- return value => {
34
- if (memoize) {
35
- const key = cacheKey(locales, format);
36
- const cachedFormatter = numberFormats.get(key);
37
- if (cachedFormatter) {
38
- return cachedFormatter.format(value);
39
- }
40
- const formatter = new Intl.NumberFormat(locales, format);
41
- numberFormats.set(key, formatter);
42
- return formatter.format(value);
43
- }
44
- const formatter = new Intl.NumberFormat(locales, format);
45
- return formatter.format(value);
46
- };
14
+ function date(locales, value) {
15
+ let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
16
+ const _locales = normalizeLocales(locales);
17
+ const formatter = getMemoized(() => cacheKey("date", _locales, format), () => new Intl.DateTimeFormat(_locales, format));
18
+ return formatter.format(isString(value) ? new Date(value) : value);
47
19
  }
48
-
49
- /** Memoize helpers */
50
- function cacheKey(locales) {
51
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
52
- const localeKey = Array.isArray(locales) ? locales.sort().join("-") : locales;
53
- return `${localeKey}-${JSON.stringify(options)}`;
20
+ function number(locales, value) {
21
+ let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
22
+ const _locales = normalizeLocales(locales);
23
+ const formatter = getMemoized(() => cacheKey("number", _locales, format), () => new Intl.NumberFormat(_locales, format));
24
+ return formatter.format(value);
25
+ }
26
+ function plural(locales, ordinal, value, _ref) {
27
+ let {
28
+ offset = 0,
29
+ ...rules
30
+ } = _ref;
31
+ const _locales = normalizeLocales(locales);
32
+ const plurals = ordinal ? getMemoized(() => cacheKey("plural-ordinal", _locales, {}), () => new Intl.PluralRules(_locales, {
33
+ type: "ordinal"
34
+ })) : getMemoized(() => cacheKey("plural-cardinal", _locales, {}), () => new Intl.PluralRules(_locales, {
35
+ type: "cardinal"
36
+ }));
37
+ return rules[value] || rules[plurals.select(value - offset)] || rules.other;
38
+ }
39
+ function getMemoized(getKey, construct) {
40
+ const key = getKey();
41
+ let formatter = cache.get(key);
42
+ if (!formatter) {
43
+ formatter = construct();
44
+ cache.set(key, formatter);
45
+ }
46
+ return formatter;
47
+ }
48
+ function cacheKey(type, locales) {
49
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
50
+ const localeKey = [...locales].sort().join("-");
51
+ return `${type}-${localeKey}-${JSON.stringify(options)}`;
54
52
  }
55
53
 
56
54
  var formats = /*#__PURE__*/Object.freeze({
57
55
  __proto__: null,
58
56
  date: date,
59
- number: number
57
+ number: number,
58
+ plural: plural
60
59
  });
61
60
 
62
61
  const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
63
- const defaultFormats = function (locale, locales) {
64
- let localeData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
65
- plurals: undefined
66
- };
67
- let formats = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
62
+ const getDefaultFormats = function (locale, locales) {
63
+ let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
68
64
  locales = locales || locale;
69
- const {
70
- plurals
71
- } = localeData;
72
65
  const style = format => isString(format) ? formats[format] || {
73
66
  style: format
74
67
  } : format;
75
68
  const replaceOctothorpe = (value, message) => {
76
- return ctx => {
77
- const msg = isFunction(message) ? message(ctx) : message;
78
- const norm = Array.isArray(msg) ? msg : [msg];
79
- const numberFormat = Object.keys(formats).length ? style("number") : {};
80
- const valueStr = number(locales, numberFormat)(value);
81
- return norm.map(m => isString(m) ? m.replace("#", valueStr) : m);
82
- };
69
+ const numberFormat = Object.keys(formats).length ? style("number") : {};
70
+ const valueStr = number(locales, value, numberFormat);
71
+ return message.replace("#", valueStr);
83
72
  };
84
- if (!plurals) {
85
- 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.`);
86
- }
87
73
  return {
88
- plural: (value, _ref) => {
89
- let {
90
- offset = 0,
91
- ...rules
92
- } = _ref;
93
- const message = rules[value] || rules[plurals === null || plurals === void 0 ? void 0 : plurals(value - offset)] || rules.other;
74
+ plural: (value, cases) => {
75
+ const {
76
+ offset = 0
77
+ } = cases;
78
+ const message = plural(locales, false, value, cases);
94
79
  return replaceOctothorpe(value - offset, message);
95
80
  },
96
- selectordinal: (value, _ref2) => {
97
- let {
98
- offset = 0,
99
- ...rules
100
- } = _ref2;
101
- const message = rules[value] || rules[plurals === null || plurals === void 0 ? void 0 : plurals(value - offset, true)] || rules.other;
81
+ selectordinal: (value, cases) => {
82
+ const {
83
+ offset = 0
84
+ } = cases;
85
+ const message = plural(locales, true, value, cases);
102
86
  return replaceOctothorpe(value - offset, message);
103
87
  },
104
88
  select: (value, rules) => rules[value] || rules.other,
105
- number: (value, format) => number(locales, style(format))(value),
106
- date: (value, format) => date(locales, style(format))(value),
89
+ number: (value, format) => number(locales, value, style(format)),
90
+ date: (value, format) => date(locales, value, style(format)),
107
91
  undefined: value => value
108
92
  };
109
93
  };
110
94
 
111
- // Params -> CTX
112
95
  /**
113
- * Creates a context object, which formats ICU MessageFormat arguments based on
114
- * argument type.
115
- *
116
- * @param locale - Locale of message
117
- * @param locales - Locales to be used when formatting the numbers or dates
118
- * @param values - Parameters for variable interpolation
119
- * @param localeData - Locale data (e.g: plurals)
120
- * @param formats - Custom format styles
121
- * @returns {function(string, string, any)}
96
+ * @param translation compiled message
97
+ * @param locale Locale of message
98
+ * @param locales Locales to be used when formatting the numbers or dates
122
99
  */
123
- function context(locale, locales, values, formats, localeData) {
124
- const formatters = defaultFormats(locale, locales, localeData, formats);
125
- const ctx = (name, type, format) => {
126
- const value = values[name];
127
- const formatted = formatters[type](value, format);
128
- const message = isFunction(formatted) ? formatted(ctx) : formatted;
129
- return Array.isArray(message) ? message.join("") : message;
130
- };
131
- return ctx;
132
- }
133
- function interpolate(translation, locale, locales, localeData) {
100
+ function interpolate(translation, locale, locales) {
101
+ /**
102
+ * @param values - Parameters for variable interpolation
103
+ * @param formats - Custom format styles
104
+ */
134
105
  return function (values) {
135
106
  let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
136
- const ctx = context(locale, locales, values, formats, localeData);
107
+ const formatters = getDefaultFormats(locale, locales, formats);
137
108
  const formatMessage = message => {
138
109
  if (!Array.isArray(message)) return message;
139
110
  return message.reduce((message, token) => {
@@ -147,7 +118,7 @@ function interpolate(translation, locale, locales, localeData) {
147
118
  } else {
148
119
  interpolatedFormat = format;
149
120
  }
150
- const value = ctx(name, type, interpolatedFormat);
121
+ const value = formatters[type](values[name], interpolatedFormat);
151
122
  if (value == null) return message;
152
123
  return message + value;
153
124
  }, "");
@@ -204,6 +175,10 @@ class I18n extends EventEmitter {
204
175
  get messages() {
205
176
  return this._messages[this._locale] ?? {};
206
177
  }
178
+
179
+ /**
180
+ * @deprecated this has no effect. Please remove this from the code. Introduced in v4
181
+ */
207
182
  get localeData() {
208
183
  return this._localeData[this._locale] ?? {};
209
184
  }
@@ -214,6 +189,14 @@ class I18n extends EventEmitter {
214
189
  Object.assign(this._localeData[locale], localeData);
215
190
  }
216
191
  }
192
+
193
+ /**
194
+ * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
195
+ */
196
+
197
+ /**
198
+ * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
199
+ */
217
200
  loadLocaleData(localeOrAllData, localeData) {
218
201
  if (localeData != null) {
219
202
  // loadLocaleData('en', enLocaleData)
@@ -250,9 +233,6 @@ class I18n extends EventEmitter {
250
233
  if (!this._messages[locale]) {
251
234
  console.warn(`Messages for locale "${locale}" not loaded.`);
252
235
  }
253
- if (!this._localeData[locale]) {
254
- console.warn(`Locale data for locale "${locale}" not loaded. Plurals won't work correctly.`);
255
- }
256
236
  }
257
237
  this._locale = locale;
258
238
  this._locales = locales;
@@ -264,38 +244,27 @@ class I18n extends EventEmitter {
264
244
  let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
265
245
  let {
266
246
  message,
267
- formats,
268
- context
247
+ formats
269
248
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
270
249
  if (!isString(id)) {
271
250
  values = id.values || values;
272
251
  message = id.message;
273
- context = id.context;
274
252
  id = id.id;
275
253
  }
276
- const messageMissing = !context && !this.messages[id];
277
- const contextualMessageMissing = context && !this.messages[context][id];
278
- const messageUnreachable = contextualMessageMissing || messageMissing;
254
+ const messageMissing = !this.messages[id];
279
255
 
280
256
  // replace missing messages with custom message for debugging
281
257
  const missing = this._missing;
282
- if (missing && messageUnreachable) {
283
- return isFunction(missing) ? missing(this._locale, id, context) : missing;
258
+ if (missing && messageMissing) {
259
+ return isFunction(missing) ? missing(this._locale, id) : missing;
284
260
  }
285
- if (messageUnreachable) {
261
+ if (messageMissing) {
286
262
  this.emit("missing", {
287
263
  id,
288
- context,
289
264
  locale: this._locale
290
265
  });
291
266
  }
292
- let translation;
293
- if (context && !contextualMessageMissing) {
294
- // context is like a subdirectory of other keys
295
- translation = this.messages[context][id] || message || id;
296
- } else {
297
- translation = this.messages[id] || message || id;
298
- }
267
+ let translation = this.messages[id] || message || id;
299
268
  if (process.env.NODE_ENV !== "production") {
300
269
  translation = isString(translation) ? compile.compileMessage(translation) : translation;
301
270
  }
@@ -303,13 +272,13 @@ class I18n extends EventEmitter {
303
272
  // hack for parsing unicode values inside a string to get parsed in react native environments
304
273
  if (isString(translation) && UNICODE_REGEX.test(translation)) return JSON.parse(`"${translation}"`);
305
274
  if (isString(translation)) return translation;
306
- return interpolate(translation, this._locale, this._locales, this.localeData)(values, formats);
275
+ return interpolate(translation, this._locale, this._locales)(values, formats);
307
276
  }
308
277
  date(value, format) {
309
- return date(this._locales || this._locale, format)(value);
278
+ return date(this._locales || this._locale, value, format);
310
279
  }
311
280
  number(value, format) {
312
- return number(this._locales || this._locale, format)(value);
281
+ return number(this._locales || this._locale, value, format);
313
282
  }
314
283
  }
315
284
  function setupI18n() {
@@ -1 +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>(locales?: string | string[], options: T = {} as T) {\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) ? formats[format] || { style: format } : (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(\n `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\n return {\n plural: (value: number, { offset = 0, ...rules }) => {\n const message =\n 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 =\n 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) =>\n number(locales, style(format))(value),\n\n date: (value: string, format: string | Intl.DateTimeFormatOptions) =>\n date(locales, style(format))(value),\n\n undefined: (value: unknown) => value,\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(locale, locales, values, formats, localeData)\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))\n 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<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\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> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [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 MissingHandler =\n | string\n | ((locale: string, id: string, context: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n localeData?: AllLocaleData\n missing?: MissingHandler\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: MissingHandler\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 { setupI18n, I18n } 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","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","loadLocaleData","activate","_locale","_locales","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","warn","_","id","messageMissing","contextualMessageMissing","messageUnreachable","compileMessage","setupI18n","i18n"],"mappings":"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"}
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 cache = new Map<string, unknown>()\n\nfunction normalizeLocales(locales: Locales): string[] {\n const out = Array.isArray(locales) ? locales : [locales]\n return [...out, \"en\"]\n}\n\nexport function date(\n locales: Locales,\n value: string | Date,\n format: Intl.DateTimeFormatOptions = {}\n): string {\n const _locales = normalizeLocales(locales)\n\n const formatter = getMemoized(\n () => cacheKey(\"date\", _locales, format),\n () => new Intl.DateTimeFormat(_locales, format)\n )\n\n return formatter.format(isString(value) ? new Date(value) : value)\n}\n\nexport function number(\n locales: Locales,\n value: number,\n format: Intl.NumberFormatOptions = {}\n): string {\n const _locales = normalizeLocales(locales)\n\n const formatter = getMemoized(\n () => cacheKey(\"number\", _locales, format),\n () => new Intl.NumberFormat(_locales, format)\n )\n\n return formatter.format(value)\n}\n\nexport function plural(\n locales: Locales,\n ordinal: boolean,\n value: number,\n { offset = 0, ...rules }\n): string {\n const _locales = normalizeLocales(locales)\n\n const plurals = ordinal\n ? getMemoized(\n () => cacheKey(\"plural-ordinal\", _locales, {}),\n () => new Intl.PluralRules(_locales, { type: \"ordinal\" })\n )\n : getMemoized(\n () => cacheKey(\"plural-cardinal\", _locales, {}),\n () => new Intl.PluralRules(_locales, { type: \"cardinal\" })\n )\n\n return rules[value] || rules[plurals.select(value - offset)] || rules.other\n}\n\nfunction getMemoized<T>(getKey: () => string, construct: () => T) {\n const key = getKey()\n\n let formatter = cache.get(key) as T\n\n if (!formatter) {\n formatter = construct()\n cache.set(key, formatter)\n }\n\n return formatter\n}\n\nfunction cacheKey(\n type: string,\n locales?: readonly string[],\n options: unknown = {}\n) {\n const localeKey = [...locales].sort().join(\"-\")\n return `${type}-${localeKey}-${JSON.stringify(options)}`\n}\n","import { CompiledMessage, Formats, Locales, Values } from \"./i18n\"\nimport { date, number, plural } from \"./formats\"\nimport { isString } from \"./essentials\"\n\nexport const UNICODE_REGEX = /\\\\u[a-fA-F0-9]{4}|\\\\x[a-fA-F0-9]{2}/g\n\nconst getDefaultFormats = (\n locale: string,\n locales: Locales,\n formats: Formats = {}\n) => {\n locales = locales || locale\n const style = <T>(format: string | T): T =>\n isString(format) ? formats[format] || { style: format } : (format as any)\n\n const replaceOctothorpe = (value: number, message: string): string => {\n const numberFormat = Object.keys(formats).length ? style(\"number\") : {}\n const valueStr = number(locales, value, numberFormat)\n return message.replace(\"#\", valueStr)\n }\n\n return {\n plural: (value: number, cases) => {\n const { offset = 0 } = cases\n const message = plural(locales, false, value, cases)\n\n return replaceOctothorpe(value - offset, message)\n },\n\n selectordinal: (value: number, cases) => {\n const { offset = 0 } = cases\n const message = plural(locales, true, value, cases)\n\n return replaceOctothorpe(value - offset, message)\n },\n\n select: (value: string, rules) => rules[value] || rules.other,\n\n number: (\n value: number,\n format: string | Intl.NumberFormatOptions\n ): string => number(locales, value, style(format)),\n\n date: (\n value: string,\n format: string | Intl.DateTimeFormatOptions\n ): string => date(locales, value, style(format)),\n\n undefined: (value: unknown) => value,\n }\n}\n\n/**\n * @param translation compiled message\n * @param locale Locale of message\n * @param locales Locales to be used when formatting the numbers or dates\n */\nexport function interpolate(\n translation: CompiledMessage,\n locale: string,\n locales: Locales\n) {\n /**\n * @param values - Parameters for variable interpolation\n * @param formats - Custom format styles\n */\n return (values: Values, formats: Formats = {}): string => {\n const formatters = getDefaultFormats(locale, locales, formats)\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 = formatters[type](values[name], 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))\n 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\"\n\nexport type MessageOptions = {\n message?: string\n formats?: Formats\n}\n\nexport type Locale = string\nexport type Locales = Locale | Locale[]\nexport type Formats = Record<\n string,\n Intl.DateTimeFormatOptions | Intl.NumberFormatOptions\n>\n\nexport type Values = Record<string, unknown>\n\n/**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\nexport type LocaleData = {\n plurals?: (\n n: number,\n ordinal?: boolean\n ) => ReturnType<Intl.PluralRules[\"select\"]>\n}\n\n/**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\nexport type AllLocaleData = Record<Locale, LocaleData>\n\nexport type CompiledIcuChoices = Record<string, CompiledMessage> & {\n offset: number\n}\nexport type CompiledMessageToken =\n | string\n | [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 values?: Record<string, unknown>\n}\n\nexport type MissingMessageEvent = {\n locale: Locale\n id: string\n}\n\ntype MissingHandler = string | ((locale: string, id: string) => string)\n\ntype setupI18nProps = {\n locale?: Locale\n locales?: Locales\n messages?: AllMessages\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n localeData?: AllLocaleData\n missing?: MissingHandler\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: MissingHandler\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 /**\n * @deprecated this has no effect. Please remove this from the code. Introduced in v4\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 /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n public loadLocaleData(allLocaleData: AllLocaleData): void\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\n */\n public loadLocaleData(locale: Locale, localeData: LocaleData): void\n /**\n * @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4\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\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 }: MessageOptions | undefined = {}\n ) {\n if (!isString(id)) {\n values = id.values || values\n message = id.message\n id = id.id\n }\n\n const messageMissing = !this.messages[id]\n\n // replace missing messages with custom message for debugging\n const missing = this._missing\n if (missing && messageMissing) {\n return isFunction(missing) ? missing(this._locale, id) : missing\n }\n\n if (messageMissing) {\n this.emit(\"missing\", { id, locale: this._locale })\n }\n\n let translation = this.messages[id] || message || id\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 )(values, formats)\n }\n\n date(value: string | Date, format?: Intl.DateTimeFormatOptions): string {\n return date(this._locales || this._locale, value, format)\n }\n\n number(value: number, format?: Intl.NumberFormatOptions): string {\n return number(this._locales || this._locale, value, format)\n }\n}\n\nfunction setupI18n(params: setupI18nProps = {}): I18n {\n return new I18n(params)\n}\n\nexport { setupI18n }\n","export { setupI18n, I18n } 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","cache","Map","normalizeLocales","locales","out","Array","isArray","date","value","format","_locales","formatter","getMemoized","cacheKey","Intl","DateTimeFormat","Date","number","NumberFormat","plural","ordinal","offset","rules","plurals","PluralRules","type","select","other","getKey","construct","key","get","set","options","localeKey","sort","join","JSON","stringify","UNICODE_REGEX","getDefaultFormats","locale","formats","style","replaceOctothorpe","message","numberFormat","Object","keys","length","valueStr","replace","cases","selectordinal","undefined","interpolate","translation","values","formatters","formatMessage","reduce","token","name","interpolatedFormat","forEach","result","test","parse","trim","EventEmitter","_events","on","event","listener","_hasEvent","push","removeListener","index","indexOf","splice","emit","args","map","apply","I18n","constructor","params","_messages","_localeData","missing","_missing","messages","load","localeData","loadLocaleData","activate","_locale","_loadLocaleData","assign","localeOrAllData","_load","localeOrMessages","process","env","NODE_ENV","console","warn","_","id","messageMissing","compileMessage","setupI18n","i18n"],"mappings":"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"}