@intlify/core-base 11.1.2 → 12.0.0-alpha.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/LICENSE +1 -1
- package/dist/core-base.d.ts +10 -4
- package/dist/core-base.esm-browser.js +196 -411
- package/dist/core-base.esm-browser.prod.js +3 -3
- package/dist/core-base.esm-bundler.js +1 -1
- package/dist/core-base.global.js +197 -412
- package/dist/core-base.global.prod.js +3 -3
- package/dist/{core-base.mjs → core-base.js} +34 -13
- package/package.json +9 -17
- package/dist/core-base.cjs +0 -1888
- package/dist/core-base.cjs.js +0 -1
- package/dist/core-base.cjs.prod.js +0 -1
- package/dist/core-base.prod.cjs +0 -1626
- package/index.js +0 -7
package/dist/core-base.global.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* core-base
|
|
3
|
-
* (c)
|
|
2
|
+
* core-base v12.0.0-alpha.1
|
|
3
|
+
* (c) 2016-present kazuya kawaguchi and contributors
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
var IntlifyCoreBase = (function (exports) {
|
|
@@ -143,6 +143,40 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
+
const isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val);
|
|
147
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
148
|
+
function deepCopy(src, des) {
|
|
149
|
+
// src and des should both be objects, and none of them can be a array
|
|
150
|
+
if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
|
|
151
|
+
throw new Error('Invalid value');
|
|
152
|
+
}
|
|
153
|
+
const stack = [{ src, des }];
|
|
154
|
+
while (stack.length) {
|
|
155
|
+
const { src, des } = stack.pop();
|
|
156
|
+
// using `Object.keys` which skips prototype properties
|
|
157
|
+
Object.keys(src).forEach(key => {
|
|
158
|
+
if (key === '__proto__') {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
// if src[key] is an object/array, set des[key]
|
|
162
|
+
// to empty object/array to prevent setting by reference
|
|
163
|
+
if (isObject(src[key]) && !isObject(des[key])) {
|
|
164
|
+
des[key] = Array.isArray(src[key]) ? [] : create();
|
|
165
|
+
}
|
|
166
|
+
if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {
|
|
167
|
+
// replace with src[key] when:
|
|
168
|
+
// src[key] or des[key] is not an object, or
|
|
169
|
+
// src[key] or des[key] is an array
|
|
170
|
+
des[key] = src[key];
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
// src[key] and des[key] are both objects, merge them
|
|
174
|
+
stack.push({ src: src[key], des: des[key] });
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
146
180
|
function createPosition(line, column, offset) {
|
|
147
181
|
return { line, column, offset };
|
|
148
182
|
}
|
|
@@ -217,9 +251,130 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
217
251
|
throw error;
|
|
218
252
|
}
|
|
219
253
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
254
|
+
const ERROR_DOMAIN$2 = 'minifier';
|
|
255
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
256
|
+
function mangle(node) {
|
|
257
|
+
node.t = node.type;
|
|
258
|
+
switch (node.type) {
|
|
259
|
+
case 0 /* NodeTypes.Resource */: {
|
|
260
|
+
const resource = node;
|
|
261
|
+
mangle(resource.body);
|
|
262
|
+
resource.b = resource.body;
|
|
263
|
+
delete resource.body;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
case 1 /* NodeTypes.Plural */: {
|
|
267
|
+
const plural = node;
|
|
268
|
+
const cases = plural.cases;
|
|
269
|
+
for (let i = 0; i < cases.length; i++) {
|
|
270
|
+
mangle(cases[i]);
|
|
271
|
+
}
|
|
272
|
+
plural.c = cases;
|
|
273
|
+
delete plural.cases;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
case 2 /* NodeTypes.Message */: {
|
|
277
|
+
const message = node;
|
|
278
|
+
const items = message.items;
|
|
279
|
+
for (let i = 0; i < items.length; i++) {
|
|
280
|
+
mangle(items[i]);
|
|
281
|
+
}
|
|
282
|
+
message.i = items;
|
|
283
|
+
delete message.items;
|
|
284
|
+
if (message.static) {
|
|
285
|
+
message.s = message.static;
|
|
286
|
+
delete message.static;
|
|
287
|
+
}
|
|
288
|
+
break;
|
|
289
|
+
}
|
|
290
|
+
case 3 /* NodeTypes.Text */:
|
|
291
|
+
case 9 /* NodeTypes.Literal */:
|
|
292
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
293
|
+
case 7 /* NodeTypes.LinkedKey */: {
|
|
294
|
+
const valueNode = node;
|
|
295
|
+
if (valueNode.value) {
|
|
296
|
+
valueNode.v = valueNode.value;
|
|
297
|
+
delete valueNode.value;
|
|
298
|
+
}
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
case 6 /* NodeTypes.Linked */: {
|
|
302
|
+
const linked = node;
|
|
303
|
+
mangle(linked.key);
|
|
304
|
+
linked.k = linked.key;
|
|
305
|
+
delete linked.key;
|
|
306
|
+
if (linked.modifier) {
|
|
307
|
+
mangle(linked.modifier);
|
|
308
|
+
linked.m = linked.modifier;
|
|
309
|
+
delete linked.modifier;
|
|
310
|
+
}
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
case 5 /* NodeTypes.List */: {
|
|
314
|
+
const list = node;
|
|
315
|
+
list.i = list.index;
|
|
316
|
+
delete list.index;
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
case 4 /* NodeTypes.Named */: {
|
|
320
|
+
const named = node;
|
|
321
|
+
named.k = named.key;
|
|
322
|
+
delete named.key;
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
default:
|
|
326
|
+
{
|
|
327
|
+
throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
|
|
328
|
+
domain: ERROR_DOMAIN$2,
|
|
329
|
+
args: [node.type]
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
delete node.type;
|
|
334
|
+
}
|
|
335
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
336
|
+
|
|
337
|
+
function optimize(ast) {
|
|
338
|
+
const body = ast.body;
|
|
339
|
+
if (body.type === 2 /* NodeTypes.Message */) {
|
|
340
|
+
optimizeMessageNode(body);
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
body.cases.forEach(c => optimizeMessageNode(c));
|
|
344
|
+
}
|
|
345
|
+
return ast;
|
|
346
|
+
}
|
|
347
|
+
function optimizeMessageNode(message) {
|
|
348
|
+
if (message.items.length === 1) {
|
|
349
|
+
const item = message.items[0];
|
|
350
|
+
if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {
|
|
351
|
+
message.static = item.value;
|
|
352
|
+
delete item.value; // optimization for size
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
const values = [];
|
|
357
|
+
for (let i = 0; i < message.items.length; i++) {
|
|
358
|
+
const item = message.items[i];
|
|
359
|
+
if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
if (item.value == null) {
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
values.push(item.value);
|
|
366
|
+
}
|
|
367
|
+
if (values.length === message.items.length) {
|
|
368
|
+
message.static = join(values);
|
|
369
|
+
for (let i = 0; i < message.items.length; i++) {
|
|
370
|
+
const item = message.items[i];
|
|
371
|
+
if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {
|
|
372
|
+
delete item.value; // optimization for size
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
223
378
|
|
|
224
379
|
const CHAR_SP = ' ';
|
|
225
380
|
const CHAR_CR = '\r';
|
|
@@ -299,7 +454,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
299
454
|
const EOF = undefined;
|
|
300
455
|
const DOT = '.';
|
|
301
456
|
const LITERAL_DELIMITER = "'";
|
|
302
|
-
const ERROR_DOMAIN$
|
|
457
|
+
const ERROR_DOMAIN$1 = 'tokenizer';
|
|
303
458
|
function createTokenizer(source, options = {}) {
|
|
304
459
|
const location = options.location !== false;
|
|
305
460
|
const _scnr = createScanner(source);
|
|
@@ -329,7 +484,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
329
484
|
if (onError) {
|
|
330
485
|
const loc = location ? createLocation(ctx.startLoc, pos) : null;
|
|
331
486
|
const err = createCompileError(code, loc, {
|
|
332
|
-
domain: ERROR_DOMAIN$
|
|
487
|
+
domain: ERROR_DOMAIN$1,
|
|
333
488
|
args
|
|
334
489
|
});
|
|
335
490
|
onError(err);
|
|
@@ -950,7 +1105,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
950
1105
|
};
|
|
951
1106
|
}
|
|
952
1107
|
|
|
953
|
-
const ERROR_DOMAIN
|
|
1108
|
+
const ERROR_DOMAIN = 'parser';
|
|
954
1109
|
// Backslash backslash, backslash quote, uHHHH, UHHHHHH.
|
|
955
1110
|
const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
|
|
956
1111
|
function fromEscapeSequence(match, codePoint4, codePoint6) {
|
|
@@ -982,7 +1137,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
982
1137
|
if (onError) {
|
|
983
1138
|
const loc = location ? createLocation(start, end) : null;
|
|
984
1139
|
const err = createCompileError(code, loc, {
|
|
985
|
-
domain: ERROR_DOMAIN
|
|
1140
|
+
domain: ERROR_DOMAIN,
|
|
986
1141
|
args
|
|
987
1142
|
});
|
|
988
1143
|
onError(err);
|
|
@@ -1250,400 +1405,9 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
1250
1405
|
return name.length > 10 ? name.slice(0, 9) + '…' : name;
|
|
1251
1406
|
}
|
|
1252
1407
|
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
ast,
|
|
1257
|
-
helpers: new Set()
|
|
1258
|
-
};
|
|
1259
|
-
const context = () => _context;
|
|
1260
|
-
const helper = (name) => {
|
|
1261
|
-
_context.helpers.add(name);
|
|
1262
|
-
return name;
|
|
1263
|
-
};
|
|
1264
|
-
return { context, helper };
|
|
1265
|
-
}
|
|
1266
|
-
function traverseNodes(nodes, transformer) {
|
|
1267
|
-
for (let i = 0; i < nodes.length; i++) {
|
|
1268
|
-
traverseNode(nodes[i], transformer);
|
|
1269
|
-
}
|
|
1270
|
-
}
|
|
1271
|
-
function traverseNode(node, transformer) {
|
|
1272
|
-
// TODO: if we need pre-hook of transform, should be implemented to here
|
|
1273
|
-
switch (node.type) {
|
|
1274
|
-
case 1 /* NodeTypes.Plural */:
|
|
1275
|
-
traverseNodes(node.cases, transformer);
|
|
1276
|
-
transformer.helper("plural" /* HelperNameMap.PLURAL */);
|
|
1277
|
-
break;
|
|
1278
|
-
case 2 /* NodeTypes.Message */:
|
|
1279
|
-
traverseNodes(node.items, transformer);
|
|
1280
|
-
break;
|
|
1281
|
-
case 6 /* NodeTypes.Linked */: {
|
|
1282
|
-
const linked = node;
|
|
1283
|
-
traverseNode(linked.key, transformer);
|
|
1284
|
-
transformer.helper("linked" /* HelperNameMap.LINKED */);
|
|
1285
|
-
transformer.helper("type" /* HelperNameMap.TYPE */);
|
|
1286
|
-
break;
|
|
1287
|
-
}
|
|
1288
|
-
case 5 /* NodeTypes.List */:
|
|
1289
|
-
transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
|
|
1290
|
-
transformer.helper("list" /* HelperNameMap.LIST */);
|
|
1291
|
-
break;
|
|
1292
|
-
case 4 /* NodeTypes.Named */:
|
|
1293
|
-
transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
|
|
1294
|
-
transformer.helper("named" /* HelperNameMap.NAMED */);
|
|
1295
|
-
break;
|
|
1296
|
-
}
|
|
1297
|
-
// TODO: if we need post-hook of transform, should be implemented to here
|
|
1298
|
-
}
|
|
1299
|
-
// transform AST
|
|
1300
|
-
function transform(ast, options = {} // eslint-disable-line
|
|
1301
|
-
) {
|
|
1302
|
-
const transformer = createTransformer(ast);
|
|
1303
|
-
transformer.helper("normalize" /* HelperNameMap.NORMALIZE */);
|
|
1304
|
-
// traverse
|
|
1305
|
-
ast.body && traverseNode(ast.body, transformer);
|
|
1306
|
-
// set meta information
|
|
1307
|
-
const context = transformer.context();
|
|
1308
|
-
ast.helpers = Array.from(context.helpers);
|
|
1309
|
-
}
|
|
1310
|
-
|
|
1311
|
-
function optimize(ast) {
|
|
1312
|
-
const body = ast.body;
|
|
1313
|
-
if (body.type === 2 /* NodeTypes.Message */) {
|
|
1314
|
-
optimizeMessageNode(body);
|
|
1315
|
-
}
|
|
1316
|
-
else {
|
|
1317
|
-
body.cases.forEach(c => optimizeMessageNode(c));
|
|
1318
|
-
}
|
|
1319
|
-
return ast;
|
|
1320
|
-
}
|
|
1321
|
-
function optimizeMessageNode(message) {
|
|
1322
|
-
if (message.items.length === 1) {
|
|
1323
|
-
const item = message.items[0];
|
|
1324
|
-
if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {
|
|
1325
|
-
message.static = item.value;
|
|
1326
|
-
delete item.value; // optimization for size
|
|
1327
|
-
}
|
|
1328
|
-
}
|
|
1329
|
-
else {
|
|
1330
|
-
const values = [];
|
|
1331
|
-
for (let i = 0; i < message.items.length; i++) {
|
|
1332
|
-
const item = message.items[i];
|
|
1333
|
-
if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) {
|
|
1334
|
-
break;
|
|
1335
|
-
}
|
|
1336
|
-
if (item.value == null) {
|
|
1337
|
-
break;
|
|
1338
|
-
}
|
|
1339
|
-
values.push(item.value);
|
|
1340
|
-
}
|
|
1341
|
-
if (values.length === message.items.length) {
|
|
1342
|
-
message.static = join(values);
|
|
1343
|
-
for (let i = 0; i < message.items.length; i++) {
|
|
1344
|
-
const item = message.items[i];
|
|
1345
|
-
if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) {
|
|
1346
|
-
delete item.value; // optimization for size
|
|
1347
|
-
}
|
|
1348
|
-
}
|
|
1349
|
-
}
|
|
1350
|
-
}
|
|
1351
|
-
}
|
|
1352
|
-
|
|
1353
|
-
const ERROR_DOMAIN$1 = 'minifier';
|
|
1354
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1355
|
-
function minify(node) {
|
|
1356
|
-
node.t = node.type;
|
|
1357
|
-
switch (node.type) {
|
|
1358
|
-
case 0 /* NodeTypes.Resource */: {
|
|
1359
|
-
const resource = node;
|
|
1360
|
-
minify(resource.body);
|
|
1361
|
-
resource.b = resource.body;
|
|
1362
|
-
delete resource.body;
|
|
1363
|
-
break;
|
|
1364
|
-
}
|
|
1365
|
-
case 1 /* NodeTypes.Plural */: {
|
|
1366
|
-
const plural = node;
|
|
1367
|
-
const cases = plural.cases;
|
|
1368
|
-
for (let i = 0; i < cases.length; i++) {
|
|
1369
|
-
minify(cases[i]);
|
|
1370
|
-
}
|
|
1371
|
-
plural.c = cases;
|
|
1372
|
-
delete plural.cases;
|
|
1373
|
-
break;
|
|
1374
|
-
}
|
|
1375
|
-
case 2 /* NodeTypes.Message */: {
|
|
1376
|
-
const message = node;
|
|
1377
|
-
const items = message.items;
|
|
1378
|
-
for (let i = 0; i < items.length; i++) {
|
|
1379
|
-
minify(items[i]);
|
|
1380
|
-
}
|
|
1381
|
-
message.i = items;
|
|
1382
|
-
delete message.items;
|
|
1383
|
-
if (message.static) {
|
|
1384
|
-
message.s = message.static;
|
|
1385
|
-
delete message.static;
|
|
1386
|
-
}
|
|
1387
|
-
break;
|
|
1388
|
-
}
|
|
1389
|
-
case 3 /* NodeTypes.Text */:
|
|
1390
|
-
case 9 /* NodeTypes.Literal */:
|
|
1391
|
-
case 8 /* NodeTypes.LinkedModifier */:
|
|
1392
|
-
case 7 /* NodeTypes.LinkedKey */: {
|
|
1393
|
-
const valueNode = node;
|
|
1394
|
-
if (valueNode.value) {
|
|
1395
|
-
valueNode.v = valueNode.value;
|
|
1396
|
-
delete valueNode.value;
|
|
1397
|
-
}
|
|
1398
|
-
break;
|
|
1399
|
-
}
|
|
1400
|
-
case 6 /* NodeTypes.Linked */: {
|
|
1401
|
-
const linked = node;
|
|
1402
|
-
minify(linked.key);
|
|
1403
|
-
linked.k = linked.key;
|
|
1404
|
-
delete linked.key;
|
|
1405
|
-
if (linked.modifier) {
|
|
1406
|
-
minify(linked.modifier);
|
|
1407
|
-
linked.m = linked.modifier;
|
|
1408
|
-
delete linked.modifier;
|
|
1409
|
-
}
|
|
1410
|
-
break;
|
|
1411
|
-
}
|
|
1412
|
-
case 5 /* NodeTypes.List */: {
|
|
1413
|
-
const list = node;
|
|
1414
|
-
list.i = list.index;
|
|
1415
|
-
delete list.index;
|
|
1416
|
-
break;
|
|
1417
|
-
}
|
|
1418
|
-
case 4 /* NodeTypes.Named */: {
|
|
1419
|
-
const named = node;
|
|
1420
|
-
named.k = named.key;
|
|
1421
|
-
delete named.key;
|
|
1422
|
-
break;
|
|
1423
|
-
}
|
|
1424
|
-
default:
|
|
1425
|
-
{
|
|
1426
|
-
throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
|
|
1427
|
-
domain: ERROR_DOMAIN$1,
|
|
1428
|
-
args: [node.type]
|
|
1429
|
-
});
|
|
1430
|
-
}
|
|
1431
|
-
}
|
|
1432
|
-
delete node.type;
|
|
1433
|
-
}
|
|
1434
|
-
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1435
|
-
|
|
1436
|
-
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
1437
|
-
/// <reference types="source-map-js" />
|
|
1438
|
-
const ERROR_DOMAIN = 'parser';
|
|
1439
|
-
function createCodeGenerator(ast, options) {
|
|
1440
|
-
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1441
|
-
const location = options.location !== false;
|
|
1442
|
-
const _context = {
|
|
1443
|
-
filename,
|
|
1444
|
-
code: '',
|
|
1445
|
-
column: 1,
|
|
1446
|
-
line: 1,
|
|
1447
|
-
offset: 0,
|
|
1448
|
-
map: undefined,
|
|
1449
|
-
breakLineCode,
|
|
1450
|
-
needIndent: _needIndent,
|
|
1451
|
-
indentLevel: 0
|
|
1452
|
-
};
|
|
1453
|
-
if (location && ast.loc) {
|
|
1454
|
-
_context.source = ast.loc.source;
|
|
1455
|
-
}
|
|
1456
|
-
const context = () => _context;
|
|
1457
|
-
function push(code, node) {
|
|
1458
|
-
_context.code += code;
|
|
1459
|
-
}
|
|
1460
|
-
function _newline(n, withBreakLine = true) {
|
|
1461
|
-
const _breakLineCode = withBreakLine ? breakLineCode : '';
|
|
1462
|
-
push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode);
|
|
1463
|
-
}
|
|
1464
|
-
function indent(withNewLine = true) {
|
|
1465
|
-
const level = ++_context.indentLevel;
|
|
1466
|
-
withNewLine && _newline(level);
|
|
1467
|
-
}
|
|
1468
|
-
function deindent(withNewLine = true) {
|
|
1469
|
-
const level = --_context.indentLevel;
|
|
1470
|
-
withNewLine && _newline(level);
|
|
1471
|
-
}
|
|
1472
|
-
function newline() {
|
|
1473
|
-
_newline(_context.indentLevel);
|
|
1474
|
-
}
|
|
1475
|
-
const helper = (key) => `_${key}`;
|
|
1476
|
-
const needIndent = () => _context.needIndent;
|
|
1477
|
-
return {
|
|
1478
|
-
context,
|
|
1479
|
-
push,
|
|
1480
|
-
indent,
|
|
1481
|
-
deindent,
|
|
1482
|
-
newline,
|
|
1483
|
-
helper,
|
|
1484
|
-
needIndent
|
|
1485
|
-
};
|
|
1486
|
-
}
|
|
1487
|
-
function generateLinkedNode(generator, node) {
|
|
1488
|
-
const { helper } = generator;
|
|
1489
|
-
generator.push(`${helper("linked" /* HelperNameMap.LINKED */)}(`);
|
|
1490
|
-
generateNode(generator, node.key);
|
|
1491
|
-
if (node.modifier) {
|
|
1492
|
-
generator.push(`, `);
|
|
1493
|
-
generateNode(generator, node.modifier);
|
|
1494
|
-
generator.push(`, _type`);
|
|
1495
|
-
}
|
|
1496
|
-
else {
|
|
1497
|
-
generator.push(`, undefined, _type`);
|
|
1498
|
-
}
|
|
1499
|
-
generator.push(`)`);
|
|
1500
|
-
}
|
|
1501
|
-
function generateMessageNode(generator, node) {
|
|
1502
|
-
const { helper, needIndent } = generator;
|
|
1503
|
-
generator.push(`${helper("normalize" /* HelperNameMap.NORMALIZE */)}([`);
|
|
1504
|
-
generator.indent(needIndent());
|
|
1505
|
-
const length = node.items.length;
|
|
1506
|
-
for (let i = 0; i < length; i++) {
|
|
1507
|
-
generateNode(generator, node.items[i]);
|
|
1508
|
-
if (i === length - 1) {
|
|
1509
|
-
break;
|
|
1510
|
-
}
|
|
1511
|
-
generator.push(', ');
|
|
1512
|
-
}
|
|
1513
|
-
generator.deindent(needIndent());
|
|
1514
|
-
generator.push('])');
|
|
1515
|
-
}
|
|
1516
|
-
function generatePluralNode(generator, node) {
|
|
1517
|
-
const { helper, needIndent } = generator;
|
|
1518
|
-
if (node.cases.length > 1) {
|
|
1519
|
-
generator.push(`${helper("plural" /* HelperNameMap.PLURAL */)}([`);
|
|
1520
|
-
generator.indent(needIndent());
|
|
1521
|
-
const length = node.cases.length;
|
|
1522
|
-
for (let i = 0; i < length; i++) {
|
|
1523
|
-
generateNode(generator, node.cases[i]);
|
|
1524
|
-
if (i === length - 1) {
|
|
1525
|
-
break;
|
|
1526
|
-
}
|
|
1527
|
-
generator.push(', ');
|
|
1528
|
-
}
|
|
1529
|
-
generator.deindent(needIndent());
|
|
1530
|
-
generator.push(`])`);
|
|
1531
|
-
}
|
|
1532
|
-
}
|
|
1533
|
-
function generateResource(generator, node) {
|
|
1534
|
-
if (node.body) {
|
|
1535
|
-
generateNode(generator, node.body);
|
|
1536
|
-
}
|
|
1537
|
-
else {
|
|
1538
|
-
generator.push('null');
|
|
1539
|
-
}
|
|
1540
|
-
}
|
|
1541
|
-
function generateNode(generator, node) {
|
|
1542
|
-
const { helper } = generator;
|
|
1543
|
-
switch (node.type) {
|
|
1544
|
-
case 0 /* NodeTypes.Resource */:
|
|
1545
|
-
generateResource(generator, node);
|
|
1546
|
-
break;
|
|
1547
|
-
case 1 /* NodeTypes.Plural */:
|
|
1548
|
-
generatePluralNode(generator, node);
|
|
1549
|
-
break;
|
|
1550
|
-
case 2 /* NodeTypes.Message */:
|
|
1551
|
-
generateMessageNode(generator, node);
|
|
1552
|
-
break;
|
|
1553
|
-
case 6 /* NodeTypes.Linked */:
|
|
1554
|
-
generateLinkedNode(generator, node);
|
|
1555
|
-
break;
|
|
1556
|
-
case 8 /* NodeTypes.LinkedModifier */:
|
|
1557
|
-
generator.push(JSON.stringify(node.value), node);
|
|
1558
|
-
break;
|
|
1559
|
-
case 7 /* NodeTypes.LinkedKey */:
|
|
1560
|
-
generator.push(JSON.stringify(node.value), node);
|
|
1561
|
-
break;
|
|
1562
|
-
case 5 /* NodeTypes.List */:
|
|
1563
|
-
generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("list" /* HelperNameMap.LIST */)}(${node.index}))`, node);
|
|
1564
|
-
break;
|
|
1565
|
-
case 4 /* NodeTypes.Named */:
|
|
1566
|
-
generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("named" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);
|
|
1567
|
-
break;
|
|
1568
|
-
case 9 /* NodeTypes.Literal */:
|
|
1569
|
-
generator.push(JSON.stringify(node.value), node);
|
|
1570
|
-
break;
|
|
1571
|
-
case 3 /* NodeTypes.Text */:
|
|
1572
|
-
generator.push(JSON.stringify(node.value), node);
|
|
1573
|
-
break;
|
|
1574
|
-
default:
|
|
1575
|
-
{
|
|
1576
|
-
throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
|
|
1577
|
-
domain: ERROR_DOMAIN,
|
|
1578
|
-
args: [node.type]
|
|
1579
|
-
});
|
|
1580
|
-
}
|
|
1581
|
-
}
|
|
1582
|
-
}
|
|
1583
|
-
// generate code from AST
|
|
1584
|
-
const generate = (ast, options = {}) => {
|
|
1585
|
-
const mode = isString(options.mode) ? options.mode : 'normal';
|
|
1586
|
-
const filename = isString(options.filename)
|
|
1587
|
-
? options.filename
|
|
1588
|
-
: 'message.intl';
|
|
1589
|
-
const sourceMap = !!options.sourceMap;
|
|
1590
|
-
// prettier-ignore
|
|
1591
|
-
const breakLineCode = options.breakLineCode != null
|
|
1592
|
-
? options.breakLineCode
|
|
1593
|
-
: mode === 'arrow'
|
|
1594
|
-
? ';'
|
|
1595
|
-
: '\n';
|
|
1596
|
-
const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow';
|
|
1597
|
-
const helpers = ast.helpers || [];
|
|
1598
|
-
const generator = createCodeGenerator(ast, {
|
|
1599
|
-
mode,
|
|
1600
|
-
filename,
|
|
1601
|
-
sourceMap,
|
|
1602
|
-
breakLineCode,
|
|
1603
|
-
needIndent
|
|
1604
|
-
});
|
|
1605
|
-
generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`);
|
|
1606
|
-
generator.indent(needIndent);
|
|
1607
|
-
if (helpers.length > 0) {
|
|
1608
|
-
generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`);
|
|
1609
|
-
generator.newline();
|
|
1610
|
-
}
|
|
1611
|
-
generator.push(`return `);
|
|
1612
|
-
generateNode(generator, ast);
|
|
1613
|
-
generator.deindent(needIndent);
|
|
1614
|
-
generator.push(`}`);
|
|
1615
|
-
delete ast.helpers;
|
|
1616
|
-
const { code, map } = generator.context();
|
|
1617
|
-
return {
|
|
1618
|
-
ast,
|
|
1619
|
-
code,
|
|
1620
|
-
map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
1621
|
-
};
|
|
1622
|
-
};
|
|
1623
|
-
|
|
1624
|
-
function baseCompile$1(source, options = {}) {
|
|
1625
|
-
const assignedOptions = assign({}, options);
|
|
1626
|
-
const jit = !!assignedOptions.jit;
|
|
1627
|
-
const enalbeMinify = !!assignedOptions.minify;
|
|
1628
|
-
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1629
|
-
// parse source codes
|
|
1630
|
-
const parser = createParser(assignedOptions);
|
|
1631
|
-
const ast = parser.parse(source);
|
|
1632
|
-
if (!jit) {
|
|
1633
|
-
// transform ASTs
|
|
1634
|
-
transform(ast, assignedOptions);
|
|
1635
|
-
// generate javascript codes
|
|
1636
|
-
return generate(ast, assignedOptions);
|
|
1637
|
-
}
|
|
1638
|
-
else {
|
|
1639
|
-
// optimize ASTs
|
|
1640
|
-
enambeOptimize && optimize(ast);
|
|
1641
|
-
// minimize ASTs
|
|
1642
|
-
enalbeMinify && minify(ast);
|
|
1643
|
-
// In JIT mode, no ast transform, no code generation.
|
|
1644
|
-
return { ast, code: '' };
|
|
1645
|
-
}
|
|
1646
|
-
}
|
|
1408
|
+
// eslint-disable-next-line no-useless-escape
|
|
1409
|
+
const RE_HTML_TAG = /<\/?[\w\s="/.':;#-\/]+>/;
|
|
1410
|
+
const detectHtmlTag = (source) => RE_HTML_TAG.test(source);
|
|
1647
1411
|
|
|
1648
1412
|
function format(ast) {
|
|
1649
1413
|
const msg = (ctx) => formatParts(ctx, ast);
|
|
@@ -1747,7 +1511,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
1747
1511
|
const PROPS_VALUE = ['v', 'value'];
|
|
1748
1512
|
function resolveValue$1(node, type) {
|
|
1749
1513
|
const resolved = resolveProps(node, PROPS_VALUE);
|
|
1750
|
-
if (resolved) {
|
|
1514
|
+
if (resolved != null) {
|
|
1751
1515
|
return resolved;
|
|
1752
1516
|
}
|
|
1753
1517
|
else {
|
|
@@ -1807,8 +1571,14 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
1807
1571
|
detectError = true;
|
|
1808
1572
|
onError(err);
|
|
1809
1573
|
};
|
|
1810
|
-
//
|
|
1811
|
-
|
|
1574
|
+
// parse source codes
|
|
1575
|
+
const parser = createParser(options);
|
|
1576
|
+
const ast = parser.parse(message);
|
|
1577
|
+
// optimize ASTs
|
|
1578
|
+
options.optimize && optimize(ast);
|
|
1579
|
+
// minimize ASTs
|
|
1580
|
+
options.mangle && mangle(ast);
|
|
1581
|
+
return { ast, detectError, code: '' };
|
|
1812
1582
|
}
|
|
1813
1583
|
/* #__NO_SIDE_EFFECTS__ */
|
|
1814
1584
|
function compile(message, context) {
|
|
@@ -1825,11 +1595,12 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
1825
1595
|
if (cached) {
|
|
1826
1596
|
return cached;
|
|
1827
1597
|
}
|
|
1828
|
-
// compile
|
|
1598
|
+
// compile message
|
|
1829
1599
|
const { ast, detectError } = baseCompile(message, {
|
|
1830
1600
|
...context,
|
|
1831
1601
|
location: true,
|
|
1832
|
-
|
|
1602
|
+
mangle: !true,
|
|
1603
|
+
optimize: !true
|
|
1833
1604
|
});
|
|
1834
1605
|
// compose message function from AST
|
|
1835
1606
|
const msg = format(ast);
|
|
@@ -1982,7 +1753,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
1982
1753
|
*
|
|
1983
1754
|
* @returns Fallback locales
|
|
1984
1755
|
*
|
|
1985
|
-
* @VueI18nSee [Fallbacking](
|
|
1756
|
+
* @VueI18nSee [Fallbacking](../../guide/essentials/fallback)
|
|
1986
1757
|
*
|
|
1987
1758
|
* @VueI18nGeneral
|
|
1988
1759
|
*/
|
|
@@ -2353,7 +2124,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
2353
2124
|
* Intlify core-base version
|
|
2354
2125
|
* @internal
|
|
2355
2126
|
*/
|
|
2356
|
-
const VERSION = '
|
|
2127
|
+
const VERSION = '12.0.0-alpha.1';
|
|
2357
2128
|
const NOT_REOSLVED = -1;
|
|
2358
2129
|
const DEFAULT_LOCALE = 'en-US';
|
|
2359
2130
|
const MISSING_RESOLVE_VALUE = '';
|
|
@@ -2539,6 +2310,20 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
2539
2310
|
return context;
|
|
2540
2311
|
}
|
|
2541
2312
|
const createResources = (locale) => ({ [locale]: create() });
|
|
2313
|
+
// TODO: API documentation, if `@intlify/core` will be documented as a separate package
|
|
2314
|
+
function getLocaleMessage(ctx, locale) {
|
|
2315
|
+
const src = ctx.messages[locale];
|
|
2316
|
+
if (src == null) {
|
|
2317
|
+
return undefined;
|
|
2318
|
+
}
|
|
2319
|
+
const dest = create();
|
|
2320
|
+
deepCopy(src, dest);
|
|
2321
|
+
return dest;
|
|
2322
|
+
}
|
|
2323
|
+
// TODO: API documentation, if `@intlify/core` will be documented as a separate package
|
|
2324
|
+
function setLocaleMessage(ctx, locale, messages) {
|
|
2325
|
+
ctx.messages[locale] = messages;
|
|
2326
|
+
}
|
|
2542
2327
|
/** @internal */
|
|
2543
2328
|
function isTranslateFallbackWarn(fallback, key) {
|
|
2544
2329
|
return fallback instanceof RegExp ? fallback.test(key) : fallback;
|
|
@@ -3469,8 +3254,6 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
3469
3254
|
|
|
3470
3255
|
exports.CORE_ERROR_CODES_EXTEND_POINT = CORE_ERROR_CODES_EXTEND_POINT;
|
|
3471
3256
|
exports.CORE_WARN_CODES_EXTEND_POINT = CORE_WARN_CODES_EXTEND_POINT;
|
|
3472
|
-
exports.CompileErrorCodes = CompileErrorCodes;
|
|
3473
|
-
exports.CoreErrorCodes = CoreErrorCodes;
|
|
3474
3257
|
exports.CoreWarnCodes = CoreWarnCodes;
|
|
3475
3258
|
exports.DATETIME_FORMAT_OPTIONS_KEYS = DATETIME_FORMAT_OPTIONS_KEYS;
|
|
3476
3259
|
exports.DEFAULT_LOCALE = DEFAULT_LOCALE;
|
|
@@ -3494,6 +3277,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
3494
3277
|
exports.getDevToolsHook = getDevToolsHook;
|
|
3495
3278
|
exports.getFallbackContext = getFallbackContext;
|
|
3496
3279
|
exports.getLocale = getLocale;
|
|
3280
|
+
exports.getLocaleMessage = getLocaleMessage;
|
|
3497
3281
|
exports.getWarnMessage = getWarnMessage;
|
|
3498
3282
|
exports.handleMissing = handleMissing;
|
|
3499
3283
|
exports.initI18nDevTools = initI18nDevTools;
|
|
@@ -3517,6 +3301,7 @@ var IntlifyCoreBase = (function (exports) {
|
|
|
3517
3301
|
exports.setAdditionalMeta = setAdditionalMeta;
|
|
3518
3302
|
exports.setDevToolsHook = setDevToolsHook;
|
|
3519
3303
|
exports.setFallbackContext = setFallbackContext;
|
|
3304
|
+
exports.setLocaleMessage = setLocaleMessage;
|
|
3520
3305
|
exports.translate = translate;
|
|
3521
3306
|
exports.translateDevTools = translateDevTools;
|
|
3522
3307
|
exports.updateFallbackLocale = updateFallbackLocale;
|