@lingui/core 4.0.0-next.2 → 4.0.0-next.4
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/compile.js +1 -1
- package/dist/compile.cjs +53 -0
- package/dist/compile.mjs +51 -0
- package/{build/cjs/index.js → dist/index.cjs} +103 -108
- package/{build → dist}/index.d.ts +9 -0
- package/{build/esm/index.js → dist/index.mjs} +102 -107
- package/package.json +20 -15
- package/build/LICENSE +0 -21
- package/build/cjs/compile.js +0 -59
- package/build/cjs/compile.js.map +0 -1
- package/build/cjs/index.js.map +0 -1
- package/build/esm/compile.js +0 -57
- package/build/esm/compile.js.map +0 -1
- package/build/esm/index.js.map +0 -1
- package/build/esm/package.json +0 -3
- /package/{build → dist}/compile.d.ts +0 -0
package/compile.js
CHANGED
package/dist/compile.cjs
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const parser = require('@messageformat/parser');
|
|
4
|
+
|
|
5
|
+
function processTokens(tokens, mapText) {
|
|
6
|
+
if (!tokens.filter((token) => token.type !== "content").length) {
|
|
7
|
+
return tokens.map((token) => mapText(token.value)).join("");
|
|
8
|
+
}
|
|
9
|
+
return tokens.map((token) => {
|
|
10
|
+
if (token.type === "content") {
|
|
11
|
+
return mapText(token.value);
|
|
12
|
+
} else if (token.type === "octothorpe") {
|
|
13
|
+
return "#";
|
|
14
|
+
} else if (token.type === "argument") {
|
|
15
|
+
return [token.arg];
|
|
16
|
+
} else if (token.type === "function") {
|
|
17
|
+
const _param = token?.param?.[0];
|
|
18
|
+
if (_param) {
|
|
19
|
+
return [token.arg, token.key, _param.value.trim()];
|
|
20
|
+
} else {
|
|
21
|
+
return [token.arg, token.key];
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const offset = token.pluralOffset;
|
|
25
|
+
const formatProps = {};
|
|
26
|
+
token.cases.forEach((item) => {
|
|
27
|
+
formatProps[item.key.replace(/^=(.)+/, "$1")] = processTokens(
|
|
28
|
+
item.tokens,
|
|
29
|
+
mapText
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
return [
|
|
33
|
+
token.arg,
|
|
34
|
+
token.type,
|
|
35
|
+
{
|
|
36
|
+
offset,
|
|
37
|
+
...formatProps
|
|
38
|
+
}
|
|
39
|
+
];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function compileMessage(message, mapText = (v) => v) {
|
|
43
|
+
try {
|
|
44
|
+
return processTokens(parser.parse(message), mapText);
|
|
45
|
+
} catch (e) {
|
|
46
|
+
console.error(`${e.message}
|
|
47
|
+
|
|
48
|
+
Message: ${message}`);
|
|
49
|
+
return message;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
exports.compileMessage = compileMessage;
|
package/dist/compile.mjs
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { parse } from '@messageformat/parser';
|
|
2
|
+
|
|
3
|
+
function processTokens(tokens, mapText) {
|
|
4
|
+
if (!tokens.filter((token) => token.type !== "content").length) {
|
|
5
|
+
return tokens.map((token) => mapText(token.value)).join("");
|
|
6
|
+
}
|
|
7
|
+
return tokens.map((token) => {
|
|
8
|
+
if (token.type === "content") {
|
|
9
|
+
return mapText(token.value);
|
|
10
|
+
} else if (token.type === "octothorpe") {
|
|
11
|
+
return "#";
|
|
12
|
+
} else if (token.type === "argument") {
|
|
13
|
+
return [token.arg];
|
|
14
|
+
} else if (token.type === "function") {
|
|
15
|
+
const _param = token?.param?.[0];
|
|
16
|
+
if (_param) {
|
|
17
|
+
return [token.arg, token.key, _param.value.trim()];
|
|
18
|
+
} else {
|
|
19
|
+
return [token.arg, token.key];
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const offset = token.pluralOffset;
|
|
23
|
+
const formatProps = {};
|
|
24
|
+
token.cases.forEach((item) => {
|
|
25
|
+
formatProps[item.key.replace(/^=(.)+/, "$1")] = processTokens(
|
|
26
|
+
item.tokens,
|
|
27
|
+
mapText
|
|
28
|
+
);
|
|
29
|
+
});
|
|
30
|
+
return [
|
|
31
|
+
token.arg,
|
|
32
|
+
token.type,
|
|
33
|
+
{
|
|
34
|
+
offset,
|
|
35
|
+
...formatProps
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function compileMessage(message, mapText = (v) => v) {
|
|
41
|
+
try {
|
|
42
|
+
return processTokens(parse(message), mapText);
|
|
43
|
+
} catch (e) {
|
|
44
|
+
console.error(`${e.message}
|
|
45
|
+
|
|
46
|
+
Message: ${message}`);
|
|
47
|
+
return message;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export { compileMessage };
|
|
@@ -1,39 +1,40 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const compile = require('@lingui/core/compile');
|
|
4
4
|
|
|
5
|
-
const isString = s => typeof s === "string";
|
|
6
|
-
const isFunction = f => typeof f === "function";
|
|
5
|
+
const isString = (s) => typeof s === "string";
|
|
6
|
+
const isFunction = (f) => typeof f === "function";
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
const cache = new Map();
|
|
8
|
+
const cache = /* @__PURE__ */ new Map();
|
|
10
9
|
function normalizeLocales(locales) {
|
|
11
10
|
const out = Array.isArray(locales) ? locales : [locales];
|
|
12
11
|
return [...out, "en"];
|
|
13
12
|
}
|
|
14
|
-
function date(locales, value) {
|
|
15
|
-
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
13
|
+
function date(locales, value, format = {}) {
|
|
16
14
|
const _locales = normalizeLocales(locales);
|
|
17
|
-
const formatter = getMemoized(
|
|
15
|
+
const formatter = getMemoized(
|
|
16
|
+
() => cacheKey("date", _locales, format),
|
|
17
|
+
() => new Intl.DateTimeFormat(_locales, format)
|
|
18
|
+
);
|
|
18
19
|
return formatter.format(isString(value) ? new Date(value) : value);
|
|
19
20
|
}
|
|
20
|
-
function number(locales, value) {
|
|
21
|
-
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
21
|
+
function number(locales, value, format = {}) {
|
|
22
22
|
const _locales = normalizeLocales(locales);
|
|
23
|
-
const formatter = getMemoized(
|
|
23
|
+
const formatter = getMemoized(
|
|
24
|
+
() => cacheKey("number", _locales, format),
|
|
25
|
+
() => new Intl.NumberFormat(_locales, format)
|
|
26
|
+
);
|
|
24
27
|
return formatter.format(value);
|
|
25
28
|
}
|
|
26
|
-
function plural(locales, ordinal, value,
|
|
27
|
-
let {
|
|
28
|
-
offset = 0,
|
|
29
|
-
...rules
|
|
30
|
-
} = _ref;
|
|
29
|
+
function plural(locales, ordinal, value, { offset = 0, ...rules }) {
|
|
31
30
|
const _locales = normalizeLocales(locales);
|
|
32
|
-
const plurals = ordinal ? getMemoized(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const plurals = ordinal ? getMemoized(
|
|
32
|
+
() => cacheKey("plural-ordinal", _locales, {}),
|
|
33
|
+
() => new Intl.PluralRules(_locales, { type: "ordinal" })
|
|
34
|
+
) : getMemoized(
|
|
35
|
+
() => cacheKey("plural-cardinal", _locales, {}),
|
|
36
|
+
() => new Intl.PluralRules(_locales, { type: "cardinal" })
|
|
37
|
+
);
|
|
37
38
|
return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other;
|
|
38
39
|
}
|
|
39
40
|
function getMemoized(getKey, construct) {
|
|
@@ -45,26 +46,22 @@ function getMemoized(getKey, construct) {
|
|
|
45
46
|
}
|
|
46
47
|
return formatter;
|
|
47
48
|
}
|
|
48
|
-
function cacheKey(type, locales) {
|
|
49
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
49
|
+
function cacheKey(type, locales, options = {}) {
|
|
50
50
|
const localeKey = [...locales].sort().join("-");
|
|
51
51
|
return `${type}-${localeKey}-${JSON.stringify(options)}`;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
const formats = {
|
|
55
55
|
__proto__: null,
|
|
56
56
|
date: date,
|
|
57
57
|
number: number,
|
|
58
58
|
plural: plural
|
|
59
|
-
}
|
|
59
|
+
};
|
|
60
60
|
|
|
61
61
|
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
|
|
62
|
-
const getDefaultFormats =
|
|
63
|
-
let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
62
|
+
const getDefaultFormats = (locale, locales, formats = {}) => {
|
|
64
63
|
locales = locales || locale;
|
|
65
|
-
const style = format => isString(format) ? formats[format] || {
|
|
66
|
-
style: format
|
|
67
|
-
} : format;
|
|
64
|
+
const style = (format) => isString(format) ? formats[format] || { style: format } : format;
|
|
68
65
|
const replaceOctothorpe = (value, message) => {
|
|
69
66
|
const numberFormat = Object.keys(formats).length ? style("number") : {};
|
|
70
67
|
const valueStr = number(locales, value, numberFormat);
|
|
@@ -72,82 +69,75 @@ const getDefaultFormats = function (locale, locales) {
|
|
|
72
69
|
};
|
|
73
70
|
return {
|
|
74
71
|
plural: (value, cases) => {
|
|
75
|
-
const {
|
|
76
|
-
offset = 0
|
|
77
|
-
} = cases;
|
|
72
|
+
const { offset = 0 } = cases;
|
|
78
73
|
const message = plural(locales, false, value, cases);
|
|
79
74
|
return replaceOctothorpe(value - offset, message);
|
|
80
75
|
},
|
|
81
76
|
selectordinal: (value, cases) => {
|
|
82
|
-
const {
|
|
83
|
-
offset = 0
|
|
84
|
-
} = cases;
|
|
77
|
+
const { offset = 0 } = cases;
|
|
85
78
|
const message = plural(locales, true, value, cases);
|
|
86
79
|
return replaceOctothorpe(value - offset, message);
|
|
87
80
|
},
|
|
88
81
|
select: (value, rules) => rules[value] || rules.other,
|
|
89
82
|
number: (value, format) => number(locales, value, style(format)),
|
|
90
83
|
date: (value, format) => date(locales, value, style(format)),
|
|
91
|
-
undefined: value => value
|
|
84
|
+
undefined: (value) => value
|
|
92
85
|
};
|
|
93
86
|
};
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* @param translation compiled message
|
|
97
|
-
* @param locale Locale of message
|
|
98
|
-
* @param locales Locales to be used when formatting the numbers or dates
|
|
99
|
-
*/
|
|
100
87
|
function interpolate(translation, locale, locales) {
|
|
101
|
-
|
|
102
|
-
* @param values - Parameters for variable interpolation
|
|
103
|
-
* @param formats - Custom format styles
|
|
104
|
-
*/
|
|
105
|
-
return function (values) {
|
|
106
|
-
let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
88
|
+
return (values, formats = {}) => {
|
|
107
89
|
const formatters = getDefaultFormats(locale, locales, formats);
|
|
108
|
-
const formatMessage = message => {
|
|
109
|
-
if (!Array.isArray(message))
|
|
110
|
-
|
|
111
|
-
|
|
90
|
+
const formatMessage = (message) => {
|
|
91
|
+
if (!Array.isArray(message))
|
|
92
|
+
return message;
|
|
93
|
+
return message.reduce((message2, token) => {
|
|
94
|
+
if (isString(token))
|
|
95
|
+
return message2 + token;
|
|
112
96
|
const [name, type, format] = token;
|
|
113
97
|
let interpolatedFormat = {};
|
|
114
98
|
if (format != null && !isString(format)) {
|
|
115
|
-
Object.keys(format).forEach(key => {
|
|
99
|
+
Object.keys(format).forEach((key) => {
|
|
116
100
|
interpolatedFormat[key] = formatMessage(format[key]);
|
|
117
101
|
});
|
|
118
102
|
} else {
|
|
119
103
|
interpolatedFormat = format;
|
|
120
104
|
}
|
|
121
105
|
const value = formatters[type](values[name], interpolatedFormat);
|
|
122
|
-
if (value == null)
|
|
123
|
-
|
|
106
|
+
if (value == null)
|
|
107
|
+
return message2;
|
|
108
|
+
return message2 + value;
|
|
124
109
|
}, "");
|
|
125
110
|
};
|
|
126
111
|
const result = formatMessage(translation);
|
|
127
|
-
if (isString(result) && UNICODE_REGEX.test(result))
|
|
128
|
-
|
|
112
|
+
if (isString(result) && UNICODE_REGEX.test(result))
|
|
113
|
+
return JSON.parse(`"${result.trim()}"`);
|
|
114
|
+
if (isString(result))
|
|
115
|
+
return result.trim();
|
|
129
116
|
return result;
|
|
130
117
|
};
|
|
131
118
|
}
|
|
132
119
|
|
|
133
120
|
class EventEmitter {
|
|
134
|
-
|
|
121
|
+
constructor() {
|
|
122
|
+
this._events = {};
|
|
123
|
+
}
|
|
135
124
|
on(event, listener) {
|
|
136
|
-
if (!this._hasEvent(event))
|
|
125
|
+
if (!this._hasEvent(event))
|
|
126
|
+
this._events[event] = [];
|
|
137
127
|
this._events[event].push(listener);
|
|
138
128
|
return () => this.removeListener(event, listener);
|
|
139
129
|
}
|
|
140
130
|
removeListener(event, listener) {
|
|
141
|
-
if (!this._hasEvent(event))
|
|
131
|
+
if (!this._hasEvent(event))
|
|
132
|
+
return;
|
|
142
133
|
const index = this._events[event].indexOf(listener);
|
|
143
|
-
if (~index)
|
|
134
|
+
if (~index)
|
|
135
|
+
this._events[event].splice(index, 1);
|
|
144
136
|
}
|
|
145
|
-
emit(event) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if (!this._hasEvent(event)) return;
|
|
150
|
-
this._events[event].map(listener => listener.apply(this, args));
|
|
137
|
+
emit(event, ...args) {
|
|
138
|
+
if (!this._hasEvent(event))
|
|
139
|
+
return;
|
|
140
|
+
this._events[event].map((listener) => listener.apply(this, args));
|
|
151
141
|
}
|
|
152
142
|
_hasEvent(event) {
|
|
153
143
|
return Array.isArray(this._events[event]);
|
|
@@ -159,9 +149,12 @@ class I18n extends EventEmitter {
|
|
|
159
149
|
super();
|
|
160
150
|
this._messages = {};
|
|
161
151
|
this._localeData = {};
|
|
162
|
-
if (params.missing != null)
|
|
163
|
-
|
|
164
|
-
if (params.
|
|
152
|
+
if (params.missing != null)
|
|
153
|
+
this._missing = params.missing;
|
|
154
|
+
if (params.messages != null)
|
|
155
|
+
this.load(params.messages);
|
|
156
|
+
if (params.localeData != null)
|
|
157
|
+
this.loadLocaleData(params.localeData);
|
|
165
158
|
if (params.locale != null || params.locales != null) {
|
|
166
159
|
this.activate(params.locale, params.locales);
|
|
167
160
|
}
|
|
@@ -175,7 +168,6 @@ class I18n extends EventEmitter {
|
|
|
175
168
|
get messages() {
|
|
176
169
|
return this._messages[this._locale] ?? {};
|
|
177
170
|
}
|
|
178
|
-
|
|
179
171
|
/**
|
|
180
172
|
* @deprecated this has no effect. Please remove this from the code. Introduced in v4
|
|
181
173
|
*/
|
|
@@ -189,23 +181,16 @@ class I18n extends EventEmitter {
|
|
|
189
181
|
Object.assign(this._localeData[locale], localeData);
|
|
190
182
|
}
|
|
191
183
|
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
195
|
-
*/
|
|
196
|
-
|
|
197
184
|
/**
|
|
198
185
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
199
186
|
*/
|
|
200
187
|
loadLocaleData(localeOrAllData, localeData) {
|
|
201
188
|
if (localeData != null) {
|
|
202
|
-
// loadLocaleData('en', enLocaleData)
|
|
203
|
-
// Loading locale data for a single locale.
|
|
204
189
|
this._loadLocaleData(localeOrAllData, localeData);
|
|
205
190
|
} else {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
191
|
+
Object.keys(localeOrAllData).forEach(
|
|
192
|
+
(locale) => this._loadLocaleData(locale, localeOrAllData[locale])
|
|
193
|
+
);
|
|
209
194
|
}
|
|
210
195
|
this.emit("change");
|
|
211
196
|
}
|
|
@@ -218,16 +203,35 @@ class I18n extends EventEmitter {
|
|
|
218
203
|
}
|
|
219
204
|
load(localeOrMessages, messages) {
|
|
220
205
|
if (messages != null) {
|
|
221
|
-
// load('en', catalog)
|
|
222
|
-
// Loading a catalog for a single locale.
|
|
223
206
|
this._load(localeOrMessages, messages);
|
|
224
207
|
} else {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
208
|
+
Object.keys(localeOrMessages).forEach(
|
|
209
|
+
(locale) => this._load(locale, localeOrMessages[locale])
|
|
210
|
+
);
|
|
228
211
|
}
|
|
229
212
|
this.emit("change");
|
|
230
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* @param locales one locale or array of locales.
|
|
216
|
+
* If array of locales is passed they would be used as fallback
|
|
217
|
+
* locales for date and number formatting
|
|
218
|
+
* @param messages compiled message catalog
|
|
219
|
+
* @param notify Should emit `change` event for all subscribers.
|
|
220
|
+
* This is useful for integration with frameworks as NextJS to avoid race-conditions during initialization.
|
|
221
|
+
*/
|
|
222
|
+
loadAndActivate(locales, messages, notify = true) {
|
|
223
|
+
if (Array.isArray(locales)) {
|
|
224
|
+
this._locale = locales[0];
|
|
225
|
+
this._locales = locales;
|
|
226
|
+
} else {
|
|
227
|
+
this._locale = locales;
|
|
228
|
+
this._locales = null;
|
|
229
|
+
}
|
|
230
|
+
this._messages[this._locale] = messages;
|
|
231
|
+
if (notify) {
|
|
232
|
+
this.emit("change");
|
|
233
|
+
}
|
|
234
|
+
}
|
|
231
235
|
activate(locale, locales) {
|
|
232
236
|
if (process.env.NODE_ENV !== "production") {
|
|
233
237
|
if (!this._messages[locale]) {
|
|
@@ -238,41 +242,34 @@ class I18n extends EventEmitter {
|
|
|
238
242
|
this._locales = locales;
|
|
239
243
|
this.emit("change");
|
|
240
244
|
}
|
|
241
|
-
|
|
242
245
|
// method for translation and formatting
|
|
243
|
-
_(id) {
|
|
244
|
-
let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
245
|
-
let {
|
|
246
|
-
message,
|
|
247
|
-
formats
|
|
248
|
-
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
246
|
+
_(id, values = {}, { message, formats } = {}) {
|
|
249
247
|
if (!isString(id)) {
|
|
250
248
|
values = id.values || values;
|
|
251
249
|
message = id.message;
|
|
252
250
|
id = id.id;
|
|
253
251
|
}
|
|
254
252
|
const messageMissing = !this.messages[id];
|
|
255
|
-
|
|
256
|
-
// replace missing messages with custom message for debugging
|
|
257
253
|
const missing = this._missing;
|
|
258
254
|
if (missing && messageMissing) {
|
|
259
255
|
return isFunction(missing) ? missing(this._locale, id) : missing;
|
|
260
256
|
}
|
|
261
257
|
if (messageMissing) {
|
|
262
|
-
this.emit("missing", {
|
|
263
|
-
id,
|
|
264
|
-
locale: this._locale
|
|
265
|
-
});
|
|
258
|
+
this.emit("missing", { id, locale: this._locale });
|
|
266
259
|
}
|
|
267
260
|
let translation = this.messages[id] || message || id;
|
|
268
261
|
if (process.env.NODE_ENV !== "production") {
|
|
269
262
|
translation = isString(translation) ? compile.compileMessage(translation) : translation;
|
|
270
263
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
if (isString(translation)
|
|
274
|
-
|
|
275
|
-
return interpolate(
|
|
264
|
+
if (isString(translation) && UNICODE_REGEX.test(translation))
|
|
265
|
+
return JSON.parse(`"${translation}"`);
|
|
266
|
+
if (isString(translation))
|
|
267
|
+
return translation;
|
|
268
|
+
return interpolate(
|
|
269
|
+
translation,
|
|
270
|
+
this._locale,
|
|
271
|
+
this._locales
|
|
272
|
+
)(values, formats);
|
|
276
273
|
}
|
|
277
274
|
date(value, format) {
|
|
278
275
|
return date(this._locales || this._locale, value, format);
|
|
@@ -281,8 +278,7 @@ class I18n extends EventEmitter {
|
|
|
281
278
|
return number(this._locales || this._locale, value, format);
|
|
282
279
|
}
|
|
283
280
|
}
|
|
284
|
-
function setupI18n() {
|
|
285
|
-
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
281
|
+
function setupI18n(params = {}) {
|
|
286
282
|
return new I18n(params);
|
|
287
283
|
}
|
|
288
284
|
|
|
@@ -292,4 +288,3 @@ exports.I18n = I18n;
|
|
|
292
288
|
exports.formats = formats;
|
|
293
289
|
exports.i18n = i18n;
|
|
294
290
|
exports.setupI18n = setupI18n;
|
|
295
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -84,6 +84,15 @@ declare class I18n extends EventEmitter<Events> {
|
|
|
84
84
|
private _load;
|
|
85
85
|
load(allMessages: AllMessages): void;
|
|
86
86
|
load(locale: Locale, messages: Messages): void;
|
|
87
|
+
/**
|
|
88
|
+
* @param locales one locale or array of locales.
|
|
89
|
+
* If array of locales is passed they would be used as fallback
|
|
90
|
+
* locales for date and number formatting
|
|
91
|
+
* @param messages compiled message catalog
|
|
92
|
+
* @param notify Should emit `change` event for all subscribers.
|
|
93
|
+
* This is useful for integration with frameworks as NextJS to avoid race-conditions during initialization.
|
|
94
|
+
*/
|
|
95
|
+
loadAndActivate(locales: Locale | Locales, messages: Messages, notify?: boolean): void;
|
|
87
96
|
activate(locale: Locale, locales?: Locales): void;
|
|
88
97
|
_(id: MessageDescriptor | string, values?: Values | undefined, { message, formats }?: MessageOptions | undefined): string;
|
|
89
98
|
date(value: string | Date, format?: Intl.DateTimeFormatOptions): string;
|
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
import { compileMessage } from '@lingui/core/compile';
|
|
2
2
|
|
|
3
|
-
const isString = s => typeof s === "string";
|
|
4
|
-
const isFunction = f => typeof f === "function";
|
|
3
|
+
const isString = (s) => typeof s === "string";
|
|
4
|
+
const isFunction = (f) => typeof f === "function";
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
const cache = new Map();
|
|
6
|
+
const cache = /* @__PURE__ */ new Map();
|
|
8
7
|
function normalizeLocales(locales) {
|
|
9
8
|
const out = Array.isArray(locales) ? locales : [locales];
|
|
10
9
|
return [...out, "en"];
|
|
11
10
|
}
|
|
12
|
-
function date(locales, value) {
|
|
13
|
-
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
11
|
+
function date(locales, value, format = {}) {
|
|
14
12
|
const _locales = normalizeLocales(locales);
|
|
15
|
-
const formatter = getMemoized(
|
|
13
|
+
const formatter = getMemoized(
|
|
14
|
+
() => cacheKey("date", _locales, format),
|
|
15
|
+
() => new Intl.DateTimeFormat(_locales, format)
|
|
16
|
+
);
|
|
16
17
|
return formatter.format(isString(value) ? new Date(value) : value);
|
|
17
18
|
}
|
|
18
|
-
function number(locales, value) {
|
|
19
|
-
let format = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
19
|
+
function number(locales, value, format = {}) {
|
|
20
20
|
const _locales = normalizeLocales(locales);
|
|
21
|
-
const formatter = getMemoized(
|
|
21
|
+
const formatter = getMemoized(
|
|
22
|
+
() => cacheKey("number", _locales, format),
|
|
23
|
+
() => new Intl.NumberFormat(_locales, format)
|
|
24
|
+
);
|
|
22
25
|
return formatter.format(value);
|
|
23
26
|
}
|
|
24
|
-
function plural(locales, ordinal, value,
|
|
25
|
-
let {
|
|
26
|
-
offset = 0,
|
|
27
|
-
...rules
|
|
28
|
-
} = _ref;
|
|
27
|
+
function plural(locales, ordinal, value, { offset = 0, ...rules }) {
|
|
29
28
|
const _locales = normalizeLocales(locales);
|
|
30
|
-
const plurals = ordinal ? getMemoized(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
const plurals = ordinal ? getMemoized(
|
|
30
|
+
() => cacheKey("plural-ordinal", _locales, {}),
|
|
31
|
+
() => new Intl.PluralRules(_locales, { type: "ordinal" })
|
|
32
|
+
) : getMemoized(
|
|
33
|
+
() => cacheKey("plural-cardinal", _locales, {}),
|
|
34
|
+
() => new Intl.PluralRules(_locales, { type: "cardinal" })
|
|
35
|
+
);
|
|
35
36
|
return rules[value] ?? rules[plurals.select(value - offset)] ?? rules.other;
|
|
36
37
|
}
|
|
37
38
|
function getMemoized(getKey, construct) {
|
|
@@ -43,26 +44,22 @@ function getMemoized(getKey, construct) {
|
|
|
43
44
|
}
|
|
44
45
|
return formatter;
|
|
45
46
|
}
|
|
46
|
-
function cacheKey(type, locales) {
|
|
47
|
-
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
47
|
+
function cacheKey(type, locales, options = {}) {
|
|
48
48
|
const localeKey = [...locales].sort().join("-");
|
|
49
49
|
return `${type}-${localeKey}-${JSON.stringify(options)}`;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
const formats = {
|
|
53
53
|
__proto__: null,
|
|
54
54
|
date: date,
|
|
55
55
|
number: number,
|
|
56
56
|
plural: plural
|
|
57
|
-
}
|
|
57
|
+
};
|
|
58
58
|
|
|
59
59
|
const UNICODE_REGEX = /\\u[a-fA-F0-9]{4}|\\x[a-fA-F0-9]{2}/g;
|
|
60
|
-
const getDefaultFormats =
|
|
61
|
-
let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
60
|
+
const getDefaultFormats = (locale, locales, formats = {}) => {
|
|
62
61
|
locales = locales || locale;
|
|
63
|
-
const style = format => isString(format) ? formats[format] || {
|
|
64
|
-
style: format
|
|
65
|
-
} : format;
|
|
62
|
+
const style = (format) => isString(format) ? formats[format] || { style: format } : format;
|
|
66
63
|
const replaceOctothorpe = (value, message) => {
|
|
67
64
|
const numberFormat = Object.keys(formats).length ? style("number") : {};
|
|
68
65
|
const valueStr = number(locales, value, numberFormat);
|
|
@@ -70,82 +67,75 @@ const getDefaultFormats = function (locale, locales) {
|
|
|
70
67
|
};
|
|
71
68
|
return {
|
|
72
69
|
plural: (value, cases) => {
|
|
73
|
-
const {
|
|
74
|
-
offset = 0
|
|
75
|
-
} = cases;
|
|
70
|
+
const { offset = 0 } = cases;
|
|
76
71
|
const message = plural(locales, false, value, cases);
|
|
77
72
|
return replaceOctothorpe(value - offset, message);
|
|
78
73
|
},
|
|
79
74
|
selectordinal: (value, cases) => {
|
|
80
|
-
const {
|
|
81
|
-
offset = 0
|
|
82
|
-
} = cases;
|
|
75
|
+
const { offset = 0 } = cases;
|
|
83
76
|
const message = plural(locales, true, value, cases);
|
|
84
77
|
return replaceOctothorpe(value - offset, message);
|
|
85
78
|
},
|
|
86
79
|
select: (value, rules) => rules[value] || rules.other,
|
|
87
80
|
number: (value, format) => number(locales, value, style(format)),
|
|
88
81
|
date: (value, format) => date(locales, value, style(format)),
|
|
89
|
-
undefined: value => value
|
|
82
|
+
undefined: (value) => value
|
|
90
83
|
};
|
|
91
84
|
};
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* @param translation compiled message
|
|
95
|
-
* @param locale Locale of message
|
|
96
|
-
* @param locales Locales to be used when formatting the numbers or dates
|
|
97
|
-
*/
|
|
98
85
|
function interpolate(translation, locale, locales) {
|
|
99
|
-
|
|
100
|
-
* @param values - Parameters for variable interpolation
|
|
101
|
-
* @param formats - Custom format styles
|
|
102
|
-
*/
|
|
103
|
-
return function (values) {
|
|
104
|
-
let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
86
|
+
return (values, formats = {}) => {
|
|
105
87
|
const formatters = getDefaultFormats(locale, locales, formats);
|
|
106
|
-
const formatMessage = message => {
|
|
107
|
-
if (!Array.isArray(message))
|
|
108
|
-
|
|
109
|
-
|
|
88
|
+
const formatMessage = (message) => {
|
|
89
|
+
if (!Array.isArray(message))
|
|
90
|
+
return message;
|
|
91
|
+
return message.reduce((message2, token) => {
|
|
92
|
+
if (isString(token))
|
|
93
|
+
return message2 + token;
|
|
110
94
|
const [name, type, format] = token;
|
|
111
95
|
let interpolatedFormat = {};
|
|
112
96
|
if (format != null && !isString(format)) {
|
|
113
|
-
Object.keys(format).forEach(key => {
|
|
97
|
+
Object.keys(format).forEach((key) => {
|
|
114
98
|
interpolatedFormat[key] = formatMessage(format[key]);
|
|
115
99
|
});
|
|
116
100
|
} else {
|
|
117
101
|
interpolatedFormat = format;
|
|
118
102
|
}
|
|
119
103
|
const value = formatters[type](values[name], interpolatedFormat);
|
|
120
|
-
if (value == null)
|
|
121
|
-
|
|
104
|
+
if (value == null)
|
|
105
|
+
return message2;
|
|
106
|
+
return message2 + value;
|
|
122
107
|
}, "");
|
|
123
108
|
};
|
|
124
109
|
const result = formatMessage(translation);
|
|
125
|
-
if (isString(result) && UNICODE_REGEX.test(result))
|
|
126
|
-
|
|
110
|
+
if (isString(result) && UNICODE_REGEX.test(result))
|
|
111
|
+
return JSON.parse(`"${result.trim()}"`);
|
|
112
|
+
if (isString(result))
|
|
113
|
+
return result.trim();
|
|
127
114
|
return result;
|
|
128
115
|
};
|
|
129
116
|
}
|
|
130
117
|
|
|
131
118
|
class EventEmitter {
|
|
132
|
-
|
|
119
|
+
constructor() {
|
|
120
|
+
this._events = {};
|
|
121
|
+
}
|
|
133
122
|
on(event, listener) {
|
|
134
|
-
if (!this._hasEvent(event))
|
|
123
|
+
if (!this._hasEvent(event))
|
|
124
|
+
this._events[event] = [];
|
|
135
125
|
this._events[event].push(listener);
|
|
136
126
|
return () => this.removeListener(event, listener);
|
|
137
127
|
}
|
|
138
128
|
removeListener(event, listener) {
|
|
139
|
-
if (!this._hasEvent(event))
|
|
129
|
+
if (!this._hasEvent(event))
|
|
130
|
+
return;
|
|
140
131
|
const index = this._events[event].indexOf(listener);
|
|
141
|
-
if (~index)
|
|
132
|
+
if (~index)
|
|
133
|
+
this._events[event].splice(index, 1);
|
|
142
134
|
}
|
|
143
|
-
emit(event) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
if (!this._hasEvent(event)) return;
|
|
148
|
-
this._events[event].map(listener => listener.apply(this, args));
|
|
135
|
+
emit(event, ...args) {
|
|
136
|
+
if (!this._hasEvent(event))
|
|
137
|
+
return;
|
|
138
|
+
this._events[event].map((listener) => listener.apply(this, args));
|
|
149
139
|
}
|
|
150
140
|
_hasEvent(event) {
|
|
151
141
|
return Array.isArray(this._events[event]);
|
|
@@ -157,9 +147,12 @@ class I18n extends EventEmitter {
|
|
|
157
147
|
super();
|
|
158
148
|
this._messages = {};
|
|
159
149
|
this._localeData = {};
|
|
160
|
-
if (params.missing != null)
|
|
161
|
-
|
|
162
|
-
if (params.
|
|
150
|
+
if (params.missing != null)
|
|
151
|
+
this._missing = params.missing;
|
|
152
|
+
if (params.messages != null)
|
|
153
|
+
this.load(params.messages);
|
|
154
|
+
if (params.localeData != null)
|
|
155
|
+
this.loadLocaleData(params.localeData);
|
|
163
156
|
if (params.locale != null || params.locales != null) {
|
|
164
157
|
this.activate(params.locale, params.locales);
|
|
165
158
|
}
|
|
@@ -173,7 +166,6 @@ class I18n extends EventEmitter {
|
|
|
173
166
|
get messages() {
|
|
174
167
|
return this._messages[this._locale] ?? {};
|
|
175
168
|
}
|
|
176
|
-
|
|
177
169
|
/**
|
|
178
170
|
* @deprecated this has no effect. Please remove this from the code. Introduced in v4
|
|
179
171
|
*/
|
|
@@ -187,23 +179,16 @@ class I18n extends EventEmitter {
|
|
|
187
179
|
Object.assign(this._localeData[locale], localeData);
|
|
188
180
|
}
|
|
189
181
|
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
193
|
-
*/
|
|
194
|
-
|
|
195
182
|
/**
|
|
196
183
|
* @deprecated Plurals automatically used from Intl.PluralRules you can safely remove this call. Introduced in v4
|
|
197
184
|
*/
|
|
198
185
|
loadLocaleData(localeOrAllData, localeData) {
|
|
199
186
|
if (localeData != null) {
|
|
200
|
-
// loadLocaleData('en', enLocaleData)
|
|
201
|
-
// Loading locale data for a single locale.
|
|
202
187
|
this._loadLocaleData(localeOrAllData, localeData);
|
|
203
188
|
} else {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
189
|
+
Object.keys(localeOrAllData).forEach(
|
|
190
|
+
(locale) => this._loadLocaleData(locale, localeOrAllData[locale])
|
|
191
|
+
);
|
|
207
192
|
}
|
|
208
193
|
this.emit("change");
|
|
209
194
|
}
|
|
@@ -216,16 +201,35 @@ class I18n extends EventEmitter {
|
|
|
216
201
|
}
|
|
217
202
|
load(localeOrMessages, messages) {
|
|
218
203
|
if (messages != null) {
|
|
219
|
-
// load('en', catalog)
|
|
220
|
-
// Loading a catalog for a single locale.
|
|
221
204
|
this._load(localeOrMessages, messages);
|
|
222
205
|
} else {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
206
|
+
Object.keys(localeOrMessages).forEach(
|
|
207
|
+
(locale) => this._load(locale, localeOrMessages[locale])
|
|
208
|
+
);
|
|
226
209
|
}
|
|
227
210
|
this.emit("change");
|
|
228
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* @param locales one locale or array of locales.
|
|
214
|
+
* If array of locales is passed they would be used as fallback
|
|
215
|
+
* locales for date and number formatting
|
|
216
|
+
* @param messages compiled message catalog
|
|
217
|
+
* @param notify Should emit `change` event for all subscribers.
|
|
218
|
+
* This is useful for integration with frameworks as NextJS to avoid race-conditions during initialization.
|
|
219
|
+
*/
|
|
220
|
+
loadAndActivate(locales, messages, notify = true) {
|
|
221
|
+
if (Array.isArray(locales)) {
|
|
222
|
+
this._locale = locales[0];
|
|
223
|
+
this._locales = locales;
|
|
224
|
+
} else {
|
|
225
|
+
this._locale = locales;
|
|
226
|
+
this._locales = null;
|
|
227
|
+
}
|
|
228
|
+
this._messages[this._locale] = messages;
|
|
229
|
+
if (notify) {
|
|
230
|
+
this.emit("change");
|
|
231
|
+
}
|
|
232
|
+
}
|
|
229
233
|
activate(locale, locales) {
|
|
230
234
|
if (process.env.NODE_ENV !== "production") {
|
|
231
235
|
if (!this._messages[locale]) {
|
|
@@ -236,41 +240,34 @@ class I18n extends EventEmitter {
|
|
|
236
240
|
this._locales = locales;
|
|
237
241
|
this.emit("change");
|
|
238
242
|
}
|
|
239
|
-
|
|
240
243
|
// method for translation and formatting
|
|
241
|
-
_(id) {
|
|
242
|
-
let values = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
243
|
-
let {
|
|
244
|
-
message,
|
|
245
|
-
formats
|
|
246
|
-
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
244
|
+
_(id, values = {}, { message, formats } = {}) {
|
|
247
245
|
if (!isString(id)) {
|
|
248
246
|
values = id.values || values;
|
|
249
247
|
message = id.message;
|
|
250
248
|
id = id.id;
|
|
251
249
|
}
|
|
252
250
|
const messageMissing = !this.messages[id];
|
|
253
|
-
|
|
254
|
-
// replace missing messages with custom message for debugging
|
|
255
251
|
const missing = this._missing;
|
|
256
252
|
if (missing && messageMissing) {
|
|
257
253
|
return isFunction(missing) ? missing(this._locale, id) : missing;
|
|
258
254
|
}
|
|
259
255
|
if (messageMissing) {
|
|
260
|
-
this.emit("missing", {
|
|
261
|
-
id,
|
|
262
|
-
locale: this._locale
|
|
263
|
-
});
|
|
256
|
+
this.emit("missing", { id, locale: this._locale });
|
|
264
257
|
}
|
|
265
258
|
let translation = this.messages[id] || message || id;
|
|
266
259
|
if (process.env.NODE_ENV !== "production") {
|
|
267
260
|
translation = isString(translation) ? compileMessage(translation) : translation;
|
|
268
261
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
if (isString(translation)
|
|
272
|
-
|
|
273
|
-
return interpolate(
|
|
262
|
+
if (isString(translation) && UNICODE_REGEX.test(translation))
|
|
263
|
+
return JSON.parse(`"${translation}"`);
|
|
264
|
+
if (isString(translation))
|
|
265
|
+
return translation;
|
|
266
|
+
return interpolate(
|
|
267
|
+
translation,
|
|
268
|
+
this._locale,
|
|
269
|
+
this._locales
|
|
270
|
+
)(values, formats);
|
|
274
271
|
}
|
|
275
272
|
date(value, format) {
|
|
276
273
|
return date(this._locales || this._locale, value, format);
|
|
@@ -279,12 +276,10 @@ class I18n extends EventEmitter {
|
|
|
279
276
|
return number(this._locales || this._locale, value, format);
|
|
280
277
|
}
|
|
281
278
|
}
|
|
282
|
-
function setupI18n() {
|
|
283
|
-
let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
279
|
+
function setupI18n(params = {}) {
|
|
284
280
|
return new I18n(params);
|
|
285
281
|
}
|
|
286
282
|
|
|
287
283
|
const i18n = setupI18n();
|
|
288
284
|
|
|
289
285
|
export { I18n, formats, i18n, setupI18n };
|
|
290
|
-
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingui/core",
|
|
3
|
-
"version": "4.0.0-next.
|
|
3
|
+
"version": "4.0.0-next.4",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"description": "I18n tools for javascript",
|
|
6
|
-
"main": "./
|
|
7
|
-
"module": "./
|
|
8
|
-
"types": "./
|
|
6
|
+
"main": "./dist/index.cjs",
|
|
7
|
+
"module": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
9
|
"author": {
|
|
10
10
|
"name": "Tomáš Ehrlich",
|
|
11
11
|
"email": "tomas.ehrlich@gmail.com"
|
|
@@ -19,6 +19,10 @@
|
|
|
19
19
|
"localization",
|
|
20
20
|
"translation"
|
|
21
21
|
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "unbuild",
|
|
24
|
+
"stub": "unbuild --stub"
|
|
25
|
+
},
|
|
22
26
|
"repository": {
|
|
23
27
|
"type": "git",
|
|
24
28
|
"url": "https://github.com/lingui/js-lingui.git"
|
|
@@ -32,22 +36,22 @@
|
|
|
32
36
|
"exports": {
|
|
33
37
|
".": {
|
|
34
38
|
"require": {
|
|
35
|
-
"types": "./
|
|
36
|
-
"default": "./
|
|
39
|
+
"types": "./dist/index.d.ts",
|
|
40
|
+
"default": "./dist/index.cjs"
|
|
37
41
|
},
|
|
38
42
|
"import": {
|
|
39
|
-
"types": "./
|
|
40
|
-
"default": "./
|
|
43
|
+
"types": "./dist/index.d.ts",
|
|
44
|
+
"default": "./dist/index.mjs"
|
|
41
45
|
}
|
|
42
46
|
},
|
|
43
47
|
"./compile": {
|
|
44
48
|
"require": {
|
|
45
|
-
"types": "./
|
|
46
|
-
"default": "./
|
|
49
|
+
"types": "./dist/compile.d.ts",
|
|
50
|
+
"default": "./dist/compile.cjs"
|
|
47
51
|
},
|
|
48
52
|
"import": {
|
|
49
|
-
"types": "./
|
|
50
|
-
"default": "./
|
|
53
|
+
"types": "./dist/compile.d.ts",
|
|
54
|
+
"default": "./dist/compile.mjs"
|
|
51
55
|
}
|
|
52
56
|
},
|
|
53
57
|
"./package.json": "./package.json"
|
|
@@ -55,7 +59,7 @@
|
|
|
55
59
|
"files": [
|
|
56
60
|
"LICENSE",
|
|
57
61
|
"README.md",
|
|
58
|
-
"
|
|
62
|
+
"dist/",
|
|
59
63
|
"compile.js"
|
|
60
64
|
],
|
|
61
65
|
"dependencies": {
|
|
@@ -63,7 +67,8 @@
|
|
|
63
67
|
"@messageformat/parser": "^5.0.0"
|
|
64
68
|
},
|
|
65
69
|
"devDependencies": {
|
|
66
|
-
"@lingui/jest-mocks": "^3.0.3"
|
|
70
|
+
"@lingui/jest-mocks": "^3.0.3",
|
|
71
|
+
"unbuild": "^1.1.2"
|
|
67
72
|
},
|
|
68
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "3b999e35d26e67dec7cf0591f794be782e11022c"
|
|
69
74
|
}
|
package/build/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
The MIT License (MIT)
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2017-2022 Tomáš Ehrlich, (c) 2022-2023 Crowdin.
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in
|
|
13
|
-
all copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
-
THE SOFTWARE.
|
package/build/cjs/compile.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var parser = require('@messageformat/parser');
|
|
4
|
-
|
|
5
|
-
// [Tokens] -> (CTX -> String)
|
|
6
|
-
function processTokens(tokens, mapText) {
|
|
7
|
-
if (!tokens.filter(token => token.type !== "content").length) {
|
|
8
|
-
return tokens.map(token => mapText(token.value)).join("");
|
|
9
|
-
}
|
|
10
|
-
return tokens.map(token => {
|
|
11
|
-
if (token.type === "content") {
|
|
12
|
-
return mapText(token.value);
|
|
13
|
-
|
|
14
|
-
// # in plural case
|
|
15
|
-
} else if (token.type === "octothorpe") {
|
|
16
|
-
return "#";
|
|
17
|
-
|
|
18
|
-
// simple argument
|
|
19
|
-
} else if (token.type === "argument") {
|
|
20
|
-
return [token.arg];
|
|
21
|
-
|
|
22
|
-
// argument with custom format (date, number)
|
|
23
|
-
} else if (token.type === "function") {
|
|
24
|
-
var _token$param;
|
|
25
|
-
const _param = token === null || token === void 0 ? void 0 : (_token$param = token.param) === null || _token$param === void 0 ? void 0 : _token$param[0];
|
|
26
|
-
if (_param) {
|
|
27
|
-
return [token.arg, token.key, _param.value.trim()];
|
|
28
|
-
} else {
|
|
29
|
-
return [token.arg, token.key];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
const offset = token.pluralOffset;
|
|
33
|
-
|
|
34
|
-
// complex argument with cases
|
|
35
|
-
const formatProps = {};
|
|
36
|
-
token.cases.forEach(item => {
|
|
37
|
-
formatProps[item.key.replace(/^=(.)+/, "$1")] = processTokens(item.tokens, mapText);
|
|
38
|
-
});
|
|
39
|
-
return [token.arg, token.type, {
|
|
40
|
-
offset,
|
|
41
|
-
...formatProps
|
|
42
|
-
}];
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Message -> (Params -> String)
|
|
47
|
-
/** @internal */
|
|
48
|
-
function compileMessage(message) {
|
|
49
|
-
let mapText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : v => v;
|
|
50
|
-
try {
|
|
51
|
-
return processTokens(parser.parse(message), mapText);
|
|
52
|
-
} catch (e) {
|
|
53
|
-
console.error(`${e.message} \n\nMessage: ${message}`);
|
|
54
|
-
return message;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
exports.compileMessage = compileMessage;
|
|
59
|
-
//# sourceMappingURL=compile.js.map
|
package/build/cjs/compile.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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(\n tokens: Array<Token>,\n mapText?: MapTextFn\n): 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(\n item.tokens,\n mapText\n )\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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"}
|
package/build/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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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"}
|
package/build/esm/compile.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { parse } from '@messageformat/parser';
|
|
2
|
-
|
|
3
|
-
// [Tokens] -> (CTX -> String)
|
|
4
|
-
function processTokens(tokens, mapText) {
|
|
5
|
-
if (!tokens.filter(token => token.type !== "content").length) {
|
|
6
|
-
return tokens.map(token => mapText(token.value)).join("");
|
|
7
|
-
}
|
|
8
|
-
return tokens.map(token => {
|
|
9
|
-
if (token.type === "content") {
|
|
10
|
-
return mapText(token.value);
|
|
11
|
-
|
|
12
|
-
// # in plural case
|
|
13
|
-
} else if (token.type === "octothorpe") {
|
|
14
|
-
return "#";
|
|
15
|
-
|
|
16
|
-
// simple argument
|
|
17
|
-
} else if (token.type === "argument") {
|
|
18
|
-
return [token.arg];
|
|
19
|
-
|
|
20
|
-
// argument with custom format (date, number)
|
|
21
|
-
} else if (token.type === "function") {
|
|
22
|
-
var _token$param;
|
|
23
|
-
const _param = token === null || token === void 0 ? void 0 : (_token$param = token.param) === null || _token$param === void 0 ? void 0 : _token$param[0];
|
|
24
|
-
if (_param) {
|
|
25
|
-
return [token.arg, token.key, _param.value.trim()];
|
|
26
|
-
} else {
|
|
27
|
-
return [token.arg, token.key];
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
const offset = token.pluralOffset;
|
|
31
|
-
|
|
32
|
-
// complex argument with cases
|
|
33
|
-
const formatProps = {};
|
|
34
|
-
token.cases.forEach(item => {
|
|
35
|
-
formatProps[item.key.replace(/^=(.)+/, "$1")] = processTokens(item.tokens, mapText);
|
|
36
|
-
});
|
|
37
|
-
return [token.arg, token.type, {
|
|
38
|
-
offset,
|
|
39
|
-
...formatProps
|
|
40
|
-
}];
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Message -> (Params -> String)
|
|
45
|
-
/** @internal */
|
|
46
|
-
function compileMessage(message) {
|
|
47
|
-
let mapText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : v => v;
|
|
48
|
-
try {
|
|
49
|
-
return processTokens(parse(message), mapText);
|
|
50
|
-
} catch (e) {
|
|
51
|
-
console.error(`${e.message} \n\nMessage: ${message}`);
|
|
52
|
-
return message;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export { compileMessage };
|
|
57
|
-
//# sourceMappingURL=compile.js.map
|
package/build/esm/compile.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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(\n tokens: Array<Token>,\n mapText?: MapTextFn\n): 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(\n item.tokens,\n mapText\n )\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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"}
|
package/build/esm/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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":";;AAAO,MAAMA,QAAQ,GAAIC,CAAC,IAAkB,OAAOA,CAAC,KAAK,QAAQ,CAAA;AAC1D,MAAMC,UAAU,GAAIC,CAAC,IAAoB,OAAOA,CAAC,KAAK,UAAU;;ACEvE;AACA,MAAMC,KAAK,GAAG,IAAIC,GAAG,EAAmB,CAAA;AAExC,SAASC,gBAAgB,CAACC,OAAgB,EAAY;AACpD,EAAA,MAAMC,GAAG,GAAGC,KAAK,CAACC,OAAO,CAACH,OAAO,CAAC,GAAGA,OAAO,GAAG,CAACA,OAAO,CAAC,CAAA;AACxD,EAAA,OAAO,CAAC,GAAGC,GAAG,EAAE,IAAI,CAAC,CAAA;AACvB,CAAA;AAEO,SAASG,IAAI,CAClBJ,OAAgB,EAChBK,KAAoB,EAEZ;EAAA,IADRC,MAAkC,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;AAEvC,EAAA,MAAMC,QAAQ,GAAGR,gBAAgB,CAACC,OAAO,CAAC,CAAA;EAE1C,MAAMQ,SAAS,GAAGC,WAAW,CAC3B,MAAMC,QAAQ,CAAC,MAAM,EAAEH,QAAQ,EAAED,MAAM,CAAC,EACxC,MAAM,IAAIK,IAAI,CAACC,cAAc,CAACL,QAAQ,EAAED,MAAM,CAAC,CAChD,CAAA;AAED,EAAA,OAAOE,SAAS,CAACF,MAAM,CAACb,QAAQ,CAACY,KAAK,CAAC,GAAG,IAAIQ,IAAI,CAACR,KAAK,CAAC,GAAGA,KAAK,CAAC,CAAA;AACpE,CAAA;AAEO,SAASS,MAAM,CACpBd,OAAgB,EAChBK,KAAa,EAEL;EAAA,IADRC,MAAgC,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;AAErC,EAAA,MAAMC,QAAQ,GAAGR,gBAAgB,CAACC,OAAO,CAAC,CAAA;EAE1C,MAAMQ,SAAS,GAAGC,WAAW,CAC3B,MAAMC,QAAQ,CAAC,QAAQ,EAAEH,QAAQ,EAAED,MAAM,CAAC,EAC1C,MAAM,IAAIK,IAAI,CAACI,YAAY,CAACR,QAAQ,EAAED,MAAM,CAAC,CAC9C,CAAA;AAED,EAAA,OAAOE,SAAS,CAACF,MAAM,CAACD,KAAK,CAAC,CAAA;AAChC,CAAA;AAEO,SAASW,MAAM,CACpBhB,OAAgB,EAChBiB,OAAgB,EAChBZ,KAAa,EAEL,IAAA,EAAA;EAAA,IADR;AAAEa,IAAAA,MAAM,GAAG,CAAC;IAAE,GAAGC,KAAAA;GAAO,GAAA,IAAA,CAAA;AAExB,EAAA,MAAMZ,QAAQ,GAAGR,gBAAgB,CAACC,OAAO,CAAC,CAAA;EAE1C,MAAMoB,OAAO,GAAGH,OAAO,GACnBR,WAAW,CACT,MAAMC,QAAQ,CAAC,gBAAgB,EAAEH,QAAQ,EAAE,EAAE,CAAC,EAC9C,MAAM,IAAII,IAAI,CAACU,WAAW,CAACd,QAAQ,EAAE;AAAEe,IAAAA,IAAI,EAAE,SAAA;GAAW,CAAC,CAC1D,GACDb,WAAW,CACT,MAAMC,QAAQ,CAAC,iBAAiB,EAAEH,QAAQ,EAAE,EAAE,CAAC,EAC/C,MAAM,IAAII,IAAI,CAACU,WAAW,CAACd,QAAQ,EAAE;AAAEe,IAAAA,IAAI,EAAE,UAAA;AAAW,GAAC,CAAC,CAC3D,CAAA;AAEL,EAAA,OAAOH,KAAK,CAACd,KAAK,CAAC,IAAIc,KAAK,CAACC,OAAO,CAACG,MAAM,CAAClB,KAAK,GAAGa,MAAM,CAAC,CAAC,IAAIC,KAAK,CAACK,KAAK,CAAA;AAC7E,CAAA;AAEA,SAASf,WAAW,CAAIgB,MAAoB,EAAEC,SAAkB,EAAE;EAChE,MAAMC,GAAG,GAAGF,MAAM,EAAE,CAAA;AAEpB,EAAA,IAAIjB,SAAS,GAAGX,KAAK,CAAC+B,GAAG,CAACD,GAAG,CAAM,CAAA;EAEnC,IAAI,CAACnB,SAAS,EAAE;IACdA,SAAS,GAAGkB,SAAS,EAAE,CAAA;AACvB7B,IAAAA,KAAK,CAACgC,GAAG,CAACF,GAAG,EAAEnB,SAAS,CAAC,CAAA;AAC3B,GAAA;AAEA,EAAA,OAAOA,SAAS,CAAA;AAClB,CAAA;AAEA,SAASE,QAAQ,CACfY,IAAY,EACZtB,OAA2B,EAE3B;EAAA,IADA8B,OAAgB,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;AAErB,EAAA,MAAMC,SAAS,GAAG,CAAC,GAAG/B,OAAO,CAAC,CAACgC,IAAI,EAAE,CAACC,IAAI,CAAC,GAAG,CAAC,CAAA;EAC/C,OAAQ,CAAA,EAAEX,IAAK,CAAA,CAAA,EAAGS,SAAU,CAAA,CAAA,EAAGG,IAAI,CAACC,SAAS,CAACL,OAAO,CAAE,CAAC,CAAA,CAAA;AAC1D;;;;;;;;;AC9EO,MAAMM,aAAa,GAAG,sCAAsC,CAAA;AAEnE,MAAMC,iBAAiB,GAAG,UACxBC,MAAc,EACdtC,OAAgB,EAEb;EAAA,IADHuC,OAAgB,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;EAErBvC,OAAO,GAAGA,OAAO,IAAIsC,MAAM,CAAA;AAC3B,EAAA,MAAME,KAAK,GAAOlC,MAAkB,IAClCb,QAAQ,CAACa,MAAM,CAAC,GAAGiC,OAAO,CAACjC,MAAM,CAAC,IAAI;AAAEkC,IAAAA,KAAK,EAAElC,MAAAA;AAAO,GAAC,GAAIA,MAAc,CAAA;AAE3E,EAAA,MAAMmC,iBAAiB,GAAG,CAACpC,KAAa,EAAEqC,OAAe,KAAa;AACpE,IAAA,MAAMC,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACN,OAAO,CAAC,CAACO,MAAM,GAAGN,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;IACvE,MAAMO,QAAQ,GAAGjC,MAAM,CAACd,OAAO,EAAEK,KAAK,EAAEsC,YAAY,CAAC,CAAA;AACrD,IAAA,OAAOD,OAAO,CAACM,OAAO,CAAC,GAAG,EAAED,QAAQ,CAAC,CAAA;GACtC,CAAA;EAED,OAAO;AACL/B,IAAAA,MAAM,EAAE,CAACX,KAAa,EAAE4C,KAAK,KAAK;MAChC,MAAM;AAAE/B,QAAAA,MAAM,GAAG,CAAA;AAAE,OAAC,GAAG+B,KAAK,CAAA;MAC5B,MAAMP,OAAO,GAAG1B,MAAM,CAAChB,OAAO,EAAE,KAAK,EAAEK,KAAK,EAAE4C,KAAK,CAAC,CAAA;AAEpD,MAAA,OAAOR,iBAAiB,CAACpC,KAAK,GAAGa,MAAM,EAAEwB,OAAO,CAAC,CAAA;KAClD;AAEDQ,IAAAA,aAAa,EAAE,CAAC7C,KAAa,EAAE4C,KAAK,KAAK;MACvC,MAAM;AAAE/B,QAAAA,MAAM,GAAG,CAAA;AAAE,OAAC,GAAG+B,KAAK,CAAA;MAC5B,MAAMP,OAAO,GAAG1B,MAAM,CAAChB,OAAO,EAAE,IAAI,EAAEK,KAAK,EAAE4C,KAAK,CAAC,CAAA;AAEnD,MAAA,OAAOR,iBAAiB,CAACpC,KAAK,GAAGa,MAAM,EAAEwB,OAAO,CAAC,CAAA;KAClD;AAEDnB,IAAAA,MAAM,EAAE,CAAClB,KAAa,EAAEc,KAAK,KAAKA,KAAK,CAACd,KAAK,CAAC,IAAIc,KAAK,CAACK,KAAK;AAE7DV,IAAAA,MAAM,EAAE,CACNT,KAAa,EACbC,MAAyC,KAC9BQ,MAAM,CAACd,OAAO,EAAEK,KAAK,EAAEmC,KAAK,CAAClC,MAAM,CAAC,CAAC;AAElDF,IAAAA,IAAI,EAAE,CACJC,KAAa,EACbC,MAA2C,KAChCF,IAAI,CAACJ,OAAO,EAAEK,KAAK,EAAEmC,KAAK,CAAClC,MAAM,CAAC,CAAC;IAEhD6C,SAAS,EAAG9C,KAAc,IAAKA,KAAAA;GAChC,CAAA;AACH,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACO,SAAS+C,WAAW,CACzBC,WAA4B,EAC5Bf,MAAc,EACdtC,OAAgB,EAChB;AACA;AACF;AACA;AACA;EACE,OAAO,UAACsD,MAAc,EAAoC;IAAA,IAAlCf,OAAgB,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;IAC3C,MAAMgB,UAAU,GAAGlB,iBAAiB,CAACC,MAAM,EAAEtC,OAAO,EAAEuC,OAAO,CAAC,CAAA;IAE9D,MAAMiB,aAAa,GAAId,OAAwB,IAAa;MAC1D,IAAI,CAACxC,KAAK,CAACC,OAAO,CAACuC,OAAO,CAAC,EAAE,OAAOA,OAAO,CAAA;MAE3C,OAAOA,OAAO,CAACe,MAAM,CAAS,CAACf,OAAO,EAAEgB,KAAK,KAAK;QAChD,IAAIjE,QAAQ,CAACiE,KAAK,CAAC,EAAE,OAAOhB,OAAO,GAAGgB,KAAK,CAAA;QAE3C,MAAM,CAACC,IAAI,EAAErC,IAAI,EAAEhB,MAAM,CAAC,GAAGoD,KAAK,CAAA;QAElC,IAAIE,kBAAkB,GAAG,EAAE,CAAA;QAC3B,IAAItD,MAAM,IAAI,IAAI,IAAI,CAACb,QAAQ,CAACa,MAAM,CAAC,EAAE;UACvCsC,MAAM,CAACC,IAAI,CAACvC,MAAM,CAAC,CAACuD,OAAO,CAAElC,GAAG,IAAK;YACnCiC,kBAAkB,CAACjC,GAAG,CAAC,GAAG6B,aAAa,CAAClD,MAAM,CAACqB,GAAG,CAAC,CAAC,CAAA;AACtD,WAAC,CAAC,CAAA;AACJ,SAAC,MAAM;AACLiC,UAAAA,kBAAkB,GAAGtD,MAAM,CAAA;AAC7B,SAAA;AAEA,QAAA,MAAMD,KAAK,GAAGkD,UAAU,CAACjC,IAAI,CAAC,CAACgC,MAAM,CAACK,IAAI,CAAC,EAAEC,kBAAkB,CAAC,CAAA;AAChE,QAAA,IAAIvD,KAAK,IAAI,IAAI,EAAE,OAAOqC,OAAO,CAAA;QAEjC,OAAOA,OAAO,GAAGrC,KAAK,CAAA;OACvB,EAAE,EAAE,CAAC,CAAA;KACP,CAAA;AAED,IAAA,MAAMyD,MAAM,GAAGN,aAAa,CAACH,WAAW,CAAC,CAAA;IACzC,IAAI5D,QAAQ,CAACqE,MAAM,CAAC,IAAI1B,aAAa,CAAC2B,IAAI,CAACD,MAAM,CAAC,EAChD,OAAO5B,IAAI,CAAC8B,KAAK,CAAE,CAAA,CAAA,EAAGF,MAAM,CAACG,IAAI,EAAG,CAAA,CAAA,CAAE,CAAC,CAAA;IACzC,IAAIxE,QAAQ,CAACqE,MAAM,CAAC,EAAE,OAAOA,MAAM,CAACG,IAAI,EAAE,CAAA;AAC1C,IAAA,OAAOH,MAAM,CAAA;GACd,CAAA;AACH;;ACnGO,MAAMI,YAAY,CAEvB;EACiBC,OAAO,GAEpB,EAAE,CAAA;AAENC,EAAAA,EAAE,CAACC,KAAmB,EAAEC,QAA8B,EAAc;AAClE,IAAA,IAAI,CAAC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC,EAAE,IAAI,CAACF,OAAO,CAACE,KAAK,CAAC,GAAG,EAAE,CAAA;IAEpD,IAAI,CAACF,OAAO,CAACE,KAAK,CAAC,CAACG,IAAI,CAACF,QAAQ,CAAC,CAAA;IAClC,OAAO,MAAM,IAAI,CAACG,cAAc,CAACJ,KAAK,EAAEC,QAAQ,CAAC,CAAA;AACnD,GAAA;AAEAG,EAAAA,cAAc,CAACJ,KAAmB,EAAEC,QAA8B,EAAQ;AACxE,IAAA,IAAI,CAAC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC,EAAE,OAAA;AAE5B,IAAA,MAAMK,KAAK,GAAG,IAAI,CAACP,OAAO,CAACE,KAAK,CAAC,CAACM,OAAO,CAACL,QAAQ,CAAC,CAAA;AACnD,IAAA,IAAI,CAACI,KAAK,EAAE,IAAI,CAACP,OAAO,CAACE,KAAK,CAAC,CAACO,MAAM,CAACF,KAAK,EAAE,CAAC,CAAC,CAAA;AAClD,GAAA;EAEAG,IAAI,CAACR,KAAmB,EAAmD;AAAA,IAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAA9CS,IAAI,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;MAAJA,IAAI,CAAA,IAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,KAAA;AAC/B,IAAA,IAAI,CAAC,IAAI,CAACP,SAAS,CAACF,KAAK,CAAC,EAAE,OAAA;AAE5B,IAAA,IAAI,CAACF,OAAO,CAACE,KAAK,CAAC,CAACU,GAAG,CAAET,QAAQ,IAAKA,QAAQ,CAACU,KAAK,CAAC,IAAI,EAAEF,IAAI,CAAC,CAAC,CAAA;AACnE,GAAA;EAEQP,SAAS,CAACF,KAAmB,EAAE;IACrC,OAAOnE,KAAK,CAACC,OAAO,CAAC,IAAI,CAACgE,OAAO,CAACE,KAAK,CAAC,CAAC,CAAA;AAC3C,GAAA;AACF;;ACgDO,MAAMY,IAAI,SAASf,YAAY,CAAS;EAO7CgB,WAAW,CAACC,MAAsB,EAAE;AAClC,IAAA,KAAK,EAAE,CAAA;AAEP,IAAA,IAAI,CAACC,SAAS,GAAG,EAAE,CAAA;AACnB,IAAA,IAAI,CAACC,WAAW,GAAG,EAAE,CAAA;AAErB,IAAA,IAAIF,MAAM,CAACG,OAAO,IAAI,IAAI,EAAE,IAAI,CAACC,QAAQ,GAAGJ,MAAM,CAACG,OAAO,CAAA;AAC1D,IAAA,IAAIH,MAAM,CAACK,QAAQ,IAAI,IAAI,EAAE,IAAI,CAACC,IAAI,CAACN,MAAM,CAACK,QAAQ,CAAC,CAAA;AACvD,IAAA,IAAIL,MAAM,CAACO,UAAU,IAAI,IAAI,EAAE,IAAI,CAACC,cAAc,CAACR,MAAM,CAACO,UAAU,CAAC,CAAA;IACrE,IAAIP,MAAM,CAAC7C,MAAM,IAAI,IAAI,IAAI6C,MAAM,CAACnF,OAAO,IAAI,IAAI,EAAE;MACnD,IAAI,CAAC4F,QAAQ,CAACT,MAAM,CAAC7C,MAAM,EAAE6C,MAAM,CAACnF,OAAO,CAAC,CAAA;AAC9C,KAAA;AACF,GAAA;AAEA,EAAA,IAAIsC,MAAM,GAAG;IACX,OAAO,IAAI,CAACuD,OAAO,CAAA;AACrB,GAAA;AAEA,EAAA,IAAI7F,OAAO,GAAG;IACZ,OAAO,IAAI,CAACO,QAAQ,CAAA;AACtB,GAAA;AAEA,EAAA,IAAIiF,QAAQ,GAAa;IACvB,OAAO,IAAI,CAACJ,SAAS,CAAC,IAAI,CAACS,OAAO,CAAC,IAAI,EAAE,CAAA;AAC3C,GAAA;;AAEA;AACF;AACA;AACE,EAAA,IAAIH,UAAU,GAAe;IAC3B,OAAO,IAAI,CAACL,WAAW,CAAC,IAAI,CAACQ,OAAO,CAAC,IAAI,EAAE,CAAA;AAC7C,GAAA;AAEQC,EAAAA,eAAe,CAACxD,MAAc,EAAEoD,UAAsB,EAAE;IAC9D,IAAI,IAAI,CAACL,WAAW,CAAC/C,MAAM,CAAC,IAAI,IAAI,EAAE;AACpC,MAAA,IAAI,CAAC+C,WAAW,CAAC/C,MAAM,CAAC,GAAGoD,UAAU,CAAA;AACvC,KAAC,MAAM;MACL9C,MAAM,CAACmD,MAAM,CAAC,IAAI,CAACV,WAAW,CAAC/C,MAAM,CAAC,EAAEoD,UAAU,CAAC,CAAA;AACrD,KAAA;AACF,GAAA;;AAEA;AACF;AACA;;AAME;AACF;AACA;AACEC,EAAAA,cAAc,CAACK,eAAe,EAAEN,UAAW,EAAE;IAC3C,IAAIA,UAAU,IAAI,IAAI,EAAE;AACtB;AACA;AACA,MAAA,IAAI,CAACI,eAAe,CAACE,eAAe,EAAEN,UAAU,CAAC,CAAA;AACnD,KAAC,MAAM;AACL;AACA;MACA9C,MAAM,CAACC,IAAI,CAACmD,eAAe,CAAC,CAACnC,OAAO,CAAEvB,MAAM,IAC1C,IAAI,CAACwD,eAAe,CAACxD,MAAM,EAAE0D,eAAe,CAAC1D,MAAM,CAAC,CAAC,CACtD,CAAA;AACH,KAAA;AAEA,IAAA,IAAI,CAACuC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACrB,GAAA;AAEQoB,EAAAA,KAAK,CAAC3D,MAAc,EAAEkD,QAAkB,EAAE;IAChD,IAAI,IAAI,CAACJ,SAAS,CAAC9C,MAAM,CAAC,IAAI,IAAI,EAAE;AAClC,MAAA,IAAI,CAAC8C,SAAS,CAAC9C,MAAM,CAAC,GAAGkD,QAAQ,CAAA;AACnC,KAAC,MAAM;MACL5C,MAAM,CAACmD,MAAM,CAAC,IAAI,CAACX,SAAS,CAAC9C,MAAM,CAAC,EAAEkD,QAAQ,CAAC,CAAA;AACjD,KAAA;AACF,GAAA;AAKAC,EAAAA,IAAI,CAACS,gBAAgB,EAAEV,QAAS,EAAE;IAChC,IAAIA,QAAQ,IAAI,IAAI,EAAE;AACpB;AACA;AACA,MAAA,IAAI,CAACS,KAAK,CAACC,gBAAgB,EAAEV,QAAQ,CAAC,CAAA;AACxC,KAAC,MAAM;AACL;AACA;MACA5C,MAAM,CAACC,IAAI,CAACqD,gBAAgB,CAAC,CAACrC,OAAO,CAAEvB,MAAM,IAC3C,IAAI,CAAC2D,KAAK,CAAC3D,MAAM,EAAE4D,gBAAgB,CAAC5D,MAAM,CAAC,CAAC,CAC7C,CAAA;AACH,KAAA;AAEA,IAAA,IAAI,CAACuC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACrB,GAAA;AAEAe,EAAAA,QAAQ,CAACtD,MAAc,EAAEtC,OAAiB,EAAE;AAC1C,IAAA,IAAImG,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;AACzC,MAAA,IAAI,CAAC,IAAI,CAACjB,SAAS,CAAC9C,MAAM,CAAC,EAAE;AAC3BgE,QAAAA,OAAO,CAACC,IAAI,CAAE,CAAuBjE,qBAAAA,EAAAA,MAAO,eAAc,CAAC,CAAA;AAC7D,OAAA;AACF,KAAA;IAEA,IAAI,CAACuD,OAAO,GAAGvD,MAAM,CAAA;IACrB,IAAI,CAAC/B,QAAQ,GAAGP,OAAO,CAAA;AACvB,IAAA,IAAI,CAAC6E,IAAI,CAAC,QAAQ,CAAC,CAAA;AACrB,GAAA;;AAEA;EACA2B,CAAC,CACCC,EAA8B,EAG9B;IAAA,IAFAnD,MAA0B,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;IAAA,IAC/B;MAAEZ,OAAO;AAAEH,MAAAA,OAAAA;KAAqC,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;AAErD,IAAA,IAAI,CAAC9C,QAAQ,CAACgH,EAAE,CAAC,EAAE;AACjBnD,MAAAA,MAAM,GAAGmD,EAAE,CAACnD,MAAM,IAAIA,MAAM,CAAA;MAC5BZ,OAAO,GAAG+D,EAAE,CAAC/D,OAAO,CAAA;MACpB+D,EAAE,GAAGA,EAAE,CAACA,EAAE,CAAA;AACZ,KAAA;IAEA,MAAMC,cAAc,GAAG,CAAC,IAAI,CAAClB,QAAQ,CAACiB,EAAE,CAAC,CAAA;;AAEzC;AACA,IAAA,MAAMnB,OAAO,GAAG,IAAI,CAACC,QAAQ,CAAA;IAC7B,IAAID,OAAO,IAAIoB,cAAc,EAAE;AAC7B,MAAA,OAAO/G,UAAU,CAAC2F,OAAO,CAAC,GAAGA,OAAO,CAAC,IAAI,CAACO,OAAO,EAAEY,EAAE,CAAC,GAAGnB,OAAO,CAAA;AAClE,KAAA;AAEA,IAAA,IAAIoB,cAAc,EAAE;AAClB,MAAA,IAAI,CAAC7B,IAAI,CAAC,SAAS,EAAE;QAAE4B,EAAE;QAAEnE,MAAM,EAAE,IAAI,CAACuD,OAAAA;AAAQ,OAAC,CAAC,CAAA;AACpD,KAAA;IAEA,IAAIxC,WAAW,GAAG,IAAI,CAACmC,QAAQ,CAACiB,EAAE,CAAC,IAAI/D,OAAO,IAAI+D,EAAE,CAAA;AAEpD,IAAA,IAAIN,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzChD,WAAW,GAAG5D,QAAQ,CAAC4D,WAAW,CAAC,GAC/BsD,cAAc,CAACtD,WAAW,CAAC,GAC3BA,WAAW,CAAA;AACjB,KAAA;;AAEA;IACA,IAAI5D,QAAQ,CAAC4D,WAAW,CAAC,IAAIjB,aAAa,CAAC2B,IAAI,CAACV,WAAW,CAAC,EAC1D,OAAOnB,IAAI,CAAC8B,KAAK,CAAE,CAAGX,CAAAA,EAAAA,WAAY,GAAE,CAAC,CAAA;AACvC,IAAA,IAAI5D,QAAQ,CAAC4D,WAAW,CAAC,EAAE,OAAOA,WAAW,CAAA;AAE7C,IAAA,OAAOD,WAAW,CAChBC,WAAW,EACX,IAAI,CAACwC,OAAO,EACZ,IAAI,CAACtF,QAAQ,CACd,CAAC+C,MAAM,EAAEf,OAAO,CAAC,CAAA;AACpB,GAAA;AAEAnC,EAAAA,IAAI,CAACC,KAAoB,EAAEC,MAAmC,EAAU;AACtE,IAAA,OAAOF,IAAI,CAAC,IAAI,CAACG,QAAQ,IAAI,IAAI,CAACsF,OAAO,EAAExF,KAAK,EAAEC,MAAM,CAAC,CAAA;AAC3D,GAAA;AAEAQ,EAAAA,MAAM,CAACT,KAAa,EAAEC,MAAiC,EAAU;AAC/D,IAAA,OAAOQ,MAAM,CAAC,IAAI,CAACP,QAAQ,IAAI,IAAI,CAACsF,OAAO,EAAExF,KAAK,EAAEC,MAAM,CAAC,CAAA;AAC7D,GAAA;AACF,CAAA;AAEA,SAASsG,SAAS,GAAoC;EAAA,IAAnCzB,MAAsB,GAAG,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,EAAE,CAAA;AAC5C,EAAA,OAAO,IAAIF,IAAI,CAACE,MAAM,CAAC,CAAA;AACzB;;ACzOa0B,MAAAA,IAAI,GAAGD,SAAS;;;;"}
|
package/build/esm/package.json
DELETED
|
File without changes
|