@intlify/core-base 11.1.2 → 12.0.0-alpha.2

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.
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * core-base v11.1.2
3
- * (c) 2025 kazuya kawaguchi
2
+ * core-base v12.0.0-alpha.2
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
- // eslint-disable-next-line no-useless-escape
221
- const RE_HTML_TAG = /<\/?[\w\s="/.':;#-\/]+>/;
222
- const detectHtmlTag = (source) => RE_HTML_TAG.test(source);
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$3 = 'tokenizer';
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$3,
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$2 = 'parser';
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$2,
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
- function createTransformer(ast, options = {} // eslint-disable-line
1254
- ) {
1255
- const _context = {
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
- // compile with mesasge-compiler
1811
- return { ...baseCompile$1(message, options), detectError };
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 with JIT mode
1598
+ // compile message
1829
1599
  const { ast, detectError } = baseCompile(message, {
1830
1600
  ...context,
1831
1601
  location: true,
1832
- jit: true
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](../guide/essentials/fallback)
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 = '11.1.2';
2127
+ const VERSION = '12.0.0-alpha.2';
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;