@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.
- package/build/cjs/index.js +91 -122
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +91 -122
- package/build/esm/index.js.map +1 -1
- package/build/index.d.ts +29 -10
- package/package.json +7 -5
- package/CHANGELOG.md +0 -422
package/build/cjs/index.js
CHANGED
|
@@ -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
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
|
31
|
-
let format = arguments.length >
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
64
|
-
let
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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,
|
|
89
|
-
|
|
90
|
-
offset = 0
|
|
91
|
-
|
|
92
|
-
|
|
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,
|
|
97
|
-
|
|
98
|
-
offset = 0
|
|
99
|
-
|
|
100
|
-
|
|
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))
|
|
106
|
-
date: (value, format) => date(locales, style(format))
|
|
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
|
-
*
|
|
114
|
-
*
|
|
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
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
|
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 =
|
|
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 = !
|
|
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 &&
|
|
283
|
-
return isFunction(missing) ? missing(this._locale, id
|
|
258
|
+
if (missing && messageMissing) {
|
|
259
|
+
return isFunction(missing) ? missing(this._locale, id) : missing;
|
|
284
260
|
}
|
|
285
|
-
if (
|
|
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
|
|
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)
|
|
278
|
+
return date(this._locales || this._locale, value, format);
|
|
310
279
|
}
|
|
311
280
|
number(value, format) {
|
|
312
|
-
return number(this._locales || this._locale, format)
|
|
281
|
+
return number(this._locales || this._locale, value, format);
|
|
313
282
|
}
|
|
314
283
|
}
|
|
315
284
|
function setupI18n() {
|
package/build/cjs/index.js.map
CHANGED
|
@@ -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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"}
|