@intlify/message-compiler 9.11.1 → 9.12.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/dist/message-compiler.cjs +91 -34
- package/dist/message-compiler.d.ts +23 -0
- package/dist/message-compiler.esm-browser.js +89 -35
- package/dist/message-compiler.esm-browser.prod.js +2 -2
- package/dist/message-compiler.global.js +91 -34
- package/dist/message-compiler.global.prod.js +2 -2
- package/dist/message-compiler.mjs +89 -35
- package/dist/message-compiler.node.mjs +89 -35
- package/dist/message-compiler.prod.cjs +91 -34
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.
|
|
2
|
+
* message-compiler v9.12.1
|
|
3
3
|
* (c) 2024 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -46,6 +46,23 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
46
46
|
return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), '');
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
const CompileWarnCodes = {
|
|
50
|
+
USE_MODULO_SYNTAX: 1,
|
|
51
|
+
__EXTEND_POINT__: 2
|
|
52
|
+
};
|
|
53
|
+
/** @internal */
|
|
54
|
+
const warnMessages = {
|
|
55
|
+
[CompileWarnCodes.USE_MODULO_SYNTAX]: `Use modulo before '{{0}}'.`
|
|
56
|
+
};
|
|
57
|
+
function createCompileWarn(code, loc, ...args) {
|
|
58
|
+
const msg = format(warnMessages[code] || '', ...(args || [])) ;
|
|
59
|
+
const message = { message: String(msg), code };
|
|
60
|
+
if (loc) {
|
|
61
|
+
message.location = loc;
|
|
62
|
+
}
|
|
63
|
+
return message;
|
|
64
|
+
}
|
|
65
|
+
|
|
49
66
|
const CompileErrorCodes = {
|
|
50
67
|
// tokenizer error codes
|
|
51
68
|
EXPECTED_TOKEN: 1,
|
|
@@ -439,33 +456,46 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
439
456
|
}
|
|
440
457
|
return null;
|
|
441
458
|
}
|
|
459
|
+
function isIdentifier(ch) {
|
|
460
|
+
const cc = ch.charCodeAt(0);
|
|
461
|
+
return ((cc >= 97 && cc <= 122) || // a-z
|
|
462
|
+
(cc >= 65 && cc <= 90) || // A-Z
|
|
463
|
+
(cc >= 48 && cc <= 57) || // 0-9
|
|
464
|
+
cc === 95 || // _
|
|
465
|
+
cc === 36 // $
|
|
466
|
+
);
|
|
467
|
+
}
|
|
442
468
|
function takeIdentifierChar(scnr) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
469
|
+
return takeChar(scnr, isIdentifier);
|
|
470
|
+
}
|
|
471
|
+
function isNamedIdentifier(ch) {
|
|
472
|
+
const cc = ch.charCodeAt(0);
|
|
473
|
+
return ((cc >= 97 && cc <= 122) || // a-z
|
|
474
|
+
(cc >= 65 && cc <= 90) || // A-Z
|
|
475
|
+
(cc >= 48 && cc <= 57) || // 0-9
|
|
476
|
+
cc === 95 || // _
|
|
477
|
+
cc === 36 || // $
|
|
478
|
+
cc === 45 // -
|
|
479
|
+
);
|
|
480
|
+
}
|
|
481
|
+
function takeNamedIdentifierChar(scnr) {
|
|
482
|
+
return takeChar(scnr, isNamedIdentifier);
|
|
483
|
+
}
|
|
484
|
+
function isDigit(ch) {
|
|
485
|
+
const cc = ch.charCodeAt(0);
|
|
486
|
+
return cc >= 48 && cc <= 57; // 0-9
|
|
453
487
|
}
|
|
454
488
|
function takeDigit(scnr) {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
return
|
|
489
|
+
return takeChar(scnr, isDigit);
|
|
490
|
+
}
|
|
491
|
+
function isHexDigit(ch) {
|
|
492
|
+
const cc = ch.charCodeAt(0);
|
|
493
|
+
return ((cc >= 48 && cc <= 57) || // 0-9
|
|
494
|
+
(cc >= 65 && cc <= 70) || // A-F
|
|
495
|
+
(cc >= 97 && cc <= 102)); // a-f
|
|
460
496
|
}
|
|
461
497
|
function takeHexDigit(scnr) {
|
|
462
|
-
|
|
463
|
-
const cc = ch.charCodeAt(0);
|
|
464
|
-
return ((cc >= 48 && cc <= 57) || // 0-9
|
|
465
|
-
(cc >= 65 && cc <= 70) || // A-F
|
|
466
|
-
(cc >= 97 && cc <= 102)); // a-f
|
|
467
|
-
};
|
|
468
|
-
return takeChar(scnr, closure);
|
|
498
|
+
return takeChar(scnr, isHexDigit);
|
|
469
499
|
}
|
|
470
500
|
function getDigits(scnr) {
|
|
471
501
|
let ch = '';
|
|
@@ -529,7 +559,7 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
529
559
|
skipSpaces(scnr);
|
|
530
560
|
let ch = '';
|
|
531
561
|
let name = '';
|
|
532
|
-
while ((ch =
|
|
562
|
+
while ((ch = takeNamedIdentifierChar(scnr))) {
|
|
533
563
|
name += ch;
|
|
534
564
|
}
|
|
535
565
|
if (scnr.currentChar() === EOF) {
|
|
@@ -552,14 +582,16 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
552
582
|
}
|
|
553
583
|
return value;
|
|
554
584
|
}
|
|
585
|
+
function isLiteral(ch) {
|
|
586
|
+
return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;
|
|
587
|
+
}
|
|
555
588
|
function readLiteral(scnr) {
|
|
556
589
|
skipSpaces(scnr);
|
|
557
590
|
// eslint-disable-next-line no-useless-escape
|
|
558
591
|
eat(scnr, `\'`);
|
|
559
592
|
let ch = '';
|
|
560
593
|
let literal = '';
|
|
561
|
-
|
|
562
|
-
while ((ch = takeChar(scnr, fn))) {
|
|
594
|
+
while ((ch = takeChar(scnr, isLiteral))) {
|
|
563
595
|
if (ch === '\\') {
|
|
564
596
|
literal += readEscapeSequence(scnr);
|
|
565
597
|
}
|
|
@@ -611,15 +643,17 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
611
643
|
}
|
|
612
644
|
return `\\${unicode}${sequence}`;
|
|
613
645
|
}
|
|
646
|
+
function isInvalidIdentifier(ch) {
|
|
647
|
+
return (ch !== "{" /* TokenChars.BraceLeft */ &&
|
|
648
|
+
ch !== "}" /* TokenChars.BraceRight */ &&
|
|
649
|
+
ch !== CHAR_SP &&
|
|
650
|
+
ch !== CHAR_LF);
|
|
651
|
+
}
|
|
614
652
|
function readInvalidIdentifier(scnr) {
|
|
615
653
|
skipSpaces(scnr);
|
|
616
654
|
let ch = '';
|
|
617
655
|
let identifiers = '';
|
|
618
|
-
|
|
619
|
-
ch !== "}" /* TokenChars.BraceRight */ &&
|
|
620
|
-
ch !== CHAR_SP &&
|
|
621
|
-
ch !== CHAR_LF;
|
|
622
|
-
while ((ch = takeChar(scnr, closure))) {
|
|
656
|
+
while ((ch = takeChar(scnr, isInvalidIdentifier))) {
|
|
623
657
|
identifiers += ch;
|
|
624
658
|
}
|
|
625
659
|
return identifiers;
|
|
@@ -896,7 +930,7 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
896
930
|
}
|
|
897
931
|
function createParser(options = {}) {
|
|
898
932
|
const location = options.location !== false;
|
|
899
|
-
const { onError } = options;
|
|
933
|
+
const { onError, onWarn } = options;
|
|
900
934
|
function emitError(tokenzer, code, start, offset, ...args) {
|
|
901
935
|
const end = tokenzer.currentPosition();
|
|
902
936
|
end.offset += offset;
|
|
@@ -910,6 +944,15 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
910
944
|
onError(err);
|
|
911
945
|
}
|
|
912
946
|
}
|
|
947
|
+
function emitWarn(tokenzer, code, start, offset, ...args) {
|
|
948
|
+
const end = tokenzer.currentPosition();
|
|
949
|
+
end.offset += offset;
|
|
950
|
+
end.column += offset;
|
|
951
|
+
if (onWarn) {
|
|
952
|
+
const loc = location ? createLocation(start, end) : null;
|
|
953
|
+
onWarn(createCompileWarn(code, loc, args));
|
|
954
|
+
}
|
|
955
|
+
}
|
|
913
956
|
function startNode(type, offset, loc) {
|
|
914
957
|
const node = { type };
|
|
915
958
|
if (location) {
|
|
@@ -946,11 +989,14 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
946
989
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
947
990
|
return node;
|
|
948
991
|
}
|
|
949
|
-
function parseNamed(tokenizer, key) {
|
|
992
|
+
function parseNamed(tokenizer, key, modulo) {
|
|
950
993
|
const context = tokenizer.context();
|
|
951
994
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
952
995
|
const node = startNode(4 /* NodeTypes.Named */, offset, loc);
|
|
953
996
|
node.key = key;
|
|
997
|
+
if (modulo === true) {
|
|
998
|
+
node.modulo = true;
|
|
999
|
+
}
|
|
954
1000
|
tokenizer.nextToken(); // skip brach right
|
|
955
1001
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
956
1002
|
return node;
|
|
@@ -1070,6 +1116,7 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
1070
1116
|
const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
|
|
1071
1117
|
node.items = [];
|
|
1072
1118
|
let nextToken = null;
|
|
1119
|
+
let modulo = null;
|
|
1073
1120
|
do {
|
|
1074
1121
|
const token = nextToken || tokenizer.nextToken();
|
|
1075
1122
|
nextToken = null;
|
|
@@ -1086,11 +1133,18 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
1086
1133
|
}
|
|
1087
1134
|
node.items.push(parseList(tokenizer, token.value || ''));
|
|
1088
1135
|
break;
|
|
1136
|
+
case 4 /* TokenTypes.Modulo */:
|
|
1137
|
+
modulo = true;
|
|
1138
|
+
break;
|
|
1089
1139
|
case 5 /* TokenTypes.Named */:
|
|
1090
1140
|
if (token.value == null) {
|
|
1091
1141
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1092
1142
|
}
|
|
1093
|
-
node.items.push(parseNamed(tokenizer, token.value || ''));
|
|
1143
|
+
node.items.push(parseNamed(tokenizer, token.value || '', !!modulo));
|
|
1144
|
+
if (modulo) {
|
|
1145
|
+
emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1146
|
+
modulo = null;
|
|
1147
|
+
}
|
|
1094
1148
|
break;
|
|
1095
1149
|
case 7 /* TokenTypes.Literal */:
|
|
1096
1150
|
if (token.value == null) {
|
|
@@ -1572,16 +1626,19 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
1572
1626
|
}
|
|
1573
1627
|
|
|
1574
1628
|
exports.CompileErrorCodes = CompileErrorCodes;
|
|
1629
|
+
exports.CompileWarnCodes = CompileWarnCodes;
|
|
1575
1630
|
exports.ERROR_DOMAIN = ERROR_DOMAIN$2;
|
|
1576
1631
|
exports.LOCATION_STUB = LOCATION_STUB;
|
|
1577
1632
|
exports.baseCompile = baseCompile;
|
|
1578
1633
|
exports.createCompileError = createCompileError;
|
|
1634
|
+
exports.createCompileWarn = createCompileWarn;
|
|
1579
1635
|
exports.createLocation = createLocation;
|
|
1580
1636
|
exports.createParser = createParser;
|
|
1581
1637
|
exports.createPosition = createPosition;
|
|
1582
1638
|
exports.defaultOnError = defaultOnError;
|
|
1583
1639
|
exports.detectHtmlTag = detectHtmlTag;
|
|
1584
1640
|
exports.errorMessages = errorMessages;
|
|
1641
|
+
exports.warnMessages = warnMessages;
|
|
1585
1642
|
|
|
1586
1643
|
return exports;
|
|
1587
1644
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.
|
|
2
|
+
* message-compiler v9.12.1
|
|
3
3
|
* (c) 2024 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
var IntlifyMessageCompiler=function(e){"use strict";function t(e,t,n){return{line:e,column:t,offset:n}}function n(e,t,n){const r={start:e,end:t};return null!=n&&(r.source=n),r}const r=Object.assign,c=e=>"string"==typeof e;function o(e,t=""){return e.reduce(((e,n,r)=>0===r?e+n:e+t+n),"")}const s={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},u={[s.EXPECTED_TOKEN]:"Expected token: '{0}'",[s.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[s.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[s.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[s.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[s.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[s.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[s.EMPTY_PLACEHOLDER]:"Empty placeholder",[s.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[s.INVALID_LINKED_FORMAT]:"Invalid linked format",[s.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[s.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[s.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[s.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[s.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[s.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function a(e,t,n={}){const{domain:r,messages:c,args:o}=n,s=new SyntaxError(String(e));return s.code=e,t&&(s.location=t),s.domain=r,s}const i=/<\/?[\w\s="/.':;#-\/]+>/,l=" ",E="\r",f="\n",d=String.fromCharCode(8232),L=String.fromCharCode(8233);function N(e){const t=e;let n=0,r=1,c=1,o=0;const s=e=>t[e]===E&&t[e+1]===f,u=e=>t[e]===L,a=e=>t[e]===d,i=e=>s(e)||(e=>t[e]===f)(e)||u(e)||a(e),l=e=>s(e)||u(e)||a(e)?f:t[e];function N(){return o=0,i(n)&&(r++,c=0),s(n)&&n++,n++,c++,t[n]}return{index:()=>n,line:()=>r,column:()=>c,peekOffset:()=>o,charAt:l,currentChar:()=>l(n),currentPeek:()=>l(n+o),next:N,peek:function(){return s(n+o)&&o++,o++,t[n+o]},reset:function(){n=0,r=1,c=1,o=0},resetPeek:function(e=0){o=e},skipToPeek:function(){const e=n+o;for(;e!==n;)N();o=0}}}const _=void 0,p=".",C="'";function k(e,r={}){const c=!1!==r.location,o=N(e),u=()=>o.index(),a=()=>t(o.line(),o.column(),o.index()),i=a(),E=u(),d={currentType:14,offset:E,startLoc:i,endLoc:i,lastType:14,lastOffset:E,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},L=()=>d,{onError:k}=r;function T(e,t,r){e.endLoc=a(),e.currentType=t;const o={type:t};return c&&(o.loc=n(e.startLoc,e.endLoc)),null!=r&&(o.value=r),o}const A=e=>T(e,14);function I(e,t){return e.currentChar()===t?(e.next(),t):(s.EXPECTED_TOKEN,a(),"")}function h(e){let t="";for(;e.currentPeek()===l||e.currentPeek()===f;)t+=e.currentPeek(),e.peek();return t}function P(e){const t=h(e);return e.skipToPeek(),t}function S(e){if(e===_)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function y(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=function(e){if(e===_)return!1;const t=e.charCodeAt(0);return t>=48&&t<=57}("-"===e.currentPeek()?e.peek():e.currentPeek());return e.resetPeek(),r}function D(e){h(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function O(e,t=!0){const n=(t=!1,r="",c=!1)=>{const o=e.currentPeek();return"{"===o?"%"!==r&&t:"@"!==o&&o?"%"===o?(e.peek(),n(t,"%",!0)):"|"===o?!("%"!==r&&!c)||!(r===l||r===f):o===l?(e.peek(),n(!0,l,c)):o!==f||(e.peek(),n(!0,f,c)):"%"===r||t},r=n();return t&&e.resetPeek(),r}function m(e,t){const n=e.currentChar();return n===_?_:t(n)?(e.next(),n):null}function b(e){return m(e,(e=>{const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||95===t||36===t}))}function x(e){return m(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function U(e){return m(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function v(e){let t="",n="";for(;t=x(e);)n+=t;return n}function R(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if("%"===n){if(!O(e))break;t+=n,e.next()}else if(n===l||n===f)if(O(e))t+=n,e.next();else{if(D(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function M(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return g(e,t,4);case"U":return g(e,t,6);default:return s.UNKNOWN_ESCAPE_SEQUENCE,a(),""}}function g(e,t,n){I(e,t);let r="";for(let c=0;c<n;c++){const t=U(e);if(!t){s.INVALID_UNICODE_ESCAPE_SEQUENCE,a(),e.currentChar();break}r+=t}return`\\${t}${r}`}function X(e){P(e);const t=I(e,"|");return P(e),t}function Y(e,t){let n=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(s.NOT_ALLOW_NEST_PLACEHOLDER,a()),e.next(),n=T(t,2,"{"),P(e),t.braceNest++,n;case"}":return t.braceNest>0&&2===t.currentType&&(s.EMPTY_PLACEHOLDER,a()),e.next(),n=T(t,3,"}"),t.braceNest--,t.braceNest>0&&P(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),n;case"@":return t.braceNest>0&&(s.UNTERMINATED_CLOSING_BRACE,a()),n=K(e,t)||A(t),t.braceNest=0,n;default:{let r=!0,c=!0,o=!0;if(D(e))return t.braceNest>0&&(s.UNTERMINATED_CLOSING_BRACE,a()),n=T(t,1,X(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(5===t.currentType||6===t.currentType||7===t.currentType))return s.UNTERMINATED_CLOSING_BRACE,a(),t.braceNest=0,w(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=S(e.currentPeek());return e.resetPeek(),r}(e,t))return n=T(t,5,function(e){P(e);let t="",n="";for(;t=b(e);)n+=t;return e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),n}(e)),P(e),n;if(c=y(e,t))return n=T(t,6,function(e){P(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${v(e)}`):t+=v(e),e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),t}(e)),P(e),n;if(o=function(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=e.currentPeek()===C;return e.resetPeek(),r}(e,t))return n=T(t,7,function(e){P(e),I(e,"'");let t="",n="";const r=e=>e!==C&&e!==f;for(;t=m(e,r);)n+="\\"===t?M(e):t;const c=e.currentChar();return c===f||c===_?(s.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),c===f&&(e.next(),I(e,"'")),n):(I(e,"'"),n)}(e)),P(e),n;if(!r&&!c&&!o)return n=T(t,13,function(e){P(e);let t="",n="";const r=e=>"{"!==e&&"}"!==e&&e!==l&&e!==f;for(;t=m(e,r);)n+=t;return n}(e)),s.INVALID_TOKEN_IN_PLACEHOLDER,a(),n.value,P(e),n;break}}return n}function K(e,t){const{currentType:n}=t;let r=null;const c=e.currentChar();switch(8!==n&&9!==n&&12!==n&&10!==n||c!==f&&c!==l||(s.INVALID_LINKED_FORMAT,a()),c){case"@":return e.next(),r=T(t,8,"@"),t.inLinked=!0,r;case".":return P(e),e.next(),T(t,9,".");case":":return P(e),e.next(),T(t,10,":");default:return D(e)?(r=T(t,1,X(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(8!==n)return!1;h(e);const r="."===e.currentPeek();return e.resetPeek(),r}(e,t)||function(e,t){const{currentType:n}=t;if(8!==n&&12!==n)return!1;h(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(P(e),K(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;h(e);const r=S(e.currentPeek());return e.resetPeek(),r}(e,t)?(P(e),T(t,12,function(e){let t="",n="";for(;t=b(e);)n+=t;return n}(e))):function(e,t){const{currentType:n}=t;if(10!==n)return!1;const r=()=>{const t=e.currentPeek();return"{"===t?S(e.peek()):!("@"===t||"%"===t||"|"===t||":"===t||"."===t||t===l||!t)&&(t===f?(e.peek(),r()):S(t))},c=r();return e.resetPeek(),c}(e,t)?(P(e),"{"===c?Y(e,t)||r:T(t,11,function(e){const t=(n=!1,r)=>{const c=e.currentChar();return"{"!==c&&"%"!==c&&"@"!==c&&"|"!==c&&"("!==c&&")"!==c&&c?c===l?r:c===f||c===p?(r+=c,e.next(),t(n,r)):(r+=c,e.next(),t(!0,r)):r};return t(!1,"")}(e))):(8===n&&(s.INVALID_LINKED_FORMAT,a()),t.braceNest=0,t.inLinked=!1,w(e,t))}}function w(e,t){let n={type:14};if(t.braceNest>0)return Y(e,t)||A(t);if(t.inLinked)return K(e,t)||A(t);switch(e.currentChar()){case"{":return Y(e,t)||A(t);case"}":return s.UNBALANCED_CLOSING_BRACE,a(),e.next(),T(t,3,"}");case"@":return K(e,t)||A(t);default:{if(D(e))return n=T(t,1,X(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:c}=function(e){const t=h(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return c?T(t,0,R(e)):T(t,4,function(e){P(e);const t=e.currentChar();return"%"!==t&&(s.EXPECTED_TOKEN,a()),e.next(),"%"}(e));if(O(e))return T(t,0,R(e));break}}return n}return{nextToken:function(){const{currentType:e,offset:t,startLoc:n,endLoc:r}=d;return d.lastType=e,d.lastOffset=t,d.lastStartLoc=n,d.lastEndLoc=r,d.offset=u(),d.startLoc=a(),o.currentChar()===_?T(d,14):w(o,d)},currentOffset:u,currentPosition:a,context:L}}const T="parser",A=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function I(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):"�"}}}function h(e={}){const t=!1!==e.location,{onError:n}=e;function c(e,n,r){const c={type:e};return t&&(c.start=n,c.end=n,c.loc={start:r,end:r}),c}function o(e,n,r,c){c&&(e.type=c),t&&(e.end=n,e.loc&&(e.loc.end=r))}function u(e,t){const n=e.context(),r=c(3,n.offset,n.startLoc);return r.value=t,o(r,e.currentOffset(),e.currentPosition()),r}function a(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:s}=n,u=c(5,r,s);return u.index=parseInt(t,10),e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function i(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:s}=n,u=c(4,r,s);return u.key=t,e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function l(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:s}=n,u=c(9,r,s);return u.value=t.replace(A,I),e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function E(e){const t=e.context(),n=c(6,t.offset,t.startLoc);let r=e.nextToken();if(9===r.type){const t=function(e){const t=e.nextToken(),n=e.context(),{lastOffset:r,lastStartLoc:u}=n,a=c(8,r,u);return 12!==t.type?(s.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,a.value="",o(a,r,u),{nextConsumeToken:t,node:a}):(null==t.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,P(t)),a.value=t.value||"",o(a,e.currentOffset(),e.currentPosition()),{node:a})}(e);n.modifier=t.node,r=t.nextConsumeToken||e.nextToken()}switch(10!==r.type&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),r=e.nextToken(),2===r.type&&(r=e.nextToken()),r.type){case 11:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=function(e,t){const n=e.context(),r=c(7,n.offset,n.startLoc);return r.value=t,o(r,e.currentOffset(),e.currentPosition()),r}(e,r.value||"");break;case 5:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=i(e,r.value||"");break;case 6:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=a(e,r.value||"");break;case 7:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=l(e,r.value||"");break;default:{s.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc;const u=e.context(),a=c(7,u.offset,u.startLoc);return a.value="",o(a,u.offset,u.startLoc),n.key=a,o(n,u.offset,u.startLoc),{nextConsumeToken:r,node:n}}}return o(n,e.currentOffset(),e.currentPosition()),{node:n}}function f(e){const t=e.context(),n=c(2,1===t.currentType?e.currentOffset():t.offset,1===t.currentType?t.endLoc:t.startLoc);n.items=[];let r=null;do{const c=r||e.nextToken();switch(r=null,c.type){case 0:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(u(e,c.value||""));break;case 6:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(a(e,c.value||""));break;case 5:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(i(e,c.value||""));break;case 7:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(l(e,c.value||""));break;case 8:{const t=E(e);n.items.push(t.node),r=t.nextConsumeToken||null;break}}}while(14!==t.currentType&&1!==t.currentType);return o(n,1===t.currentType?t.lastOffset:e.currentOffset(),1===t.currentType?t.lastEndLoc:e.currentPosition()),n}function d(e){const t=e.context(),{offset:n,startLoc:r}=t,u=f(e);return 14===t.currentType?u:function(e,t,n,r){const u=e.context();let a=0===r.items.length;const i=c(1,t,n);i.cases=[],i.cases.push(r);do{const t=f(e);a||(a=0===t.items.length),i.cases.push(t)}while(14!==u.currentType);return a&&s.MUST_HAVE_MESSAGES_IN_PLURAL,o(i,e.currentOffset(),e.currentPosition()),i}(e,n,r,u)}return{parse:function(n){const u=k(n,r({},e)),a=u.context(),i=c(0,a.offset,a.startLoc);return t&&i.loc&&(i.loc.source=n),i.body=d(u),e.onCacheKey&&(i.cacheKey=e.onCacheKey(n)),14!==a.currentType&&(s.UNEXPECTED_LEXICAL_ANALYSIS,a.lastStartLoc,n[a.offset]),o(i,u.currentOffset(),u.currentPosition()),i}}}function P(e){if(14===e.type)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function S(e,t){for(let n=0;n<e.length;n++)y(e[n],t)}function y(e,t){switch(e.type){case 1:S(e.cases,t),t.helper("plural");break;case 2:S(e.items,t);break;case 6:y(e.key,t),t.helper("linked"),t.helper("type");break;case 5:t.helper("interpolate"),t.helper("list");break;case 4:t.helper("interpolate"),t.helper("named")}}function D(e,t={}){const n=function(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}(e);n.helper("normalize"),e.body&&y(e.body,n);const r=n.context();e.helpers=Array.from(r.helpers)}function O(e){if(1===e.items.length){const t=e.items[0];3!==t.type&&9!==t.type||(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n<e.items.length;n++){const r=e.items[n];if(3!==r.type&&9!==r.type)break;if(null==r.value)break;t.push(r.value)}if(t.length===e.items.length){e.static=o(t);for(let t=0;t<e.items.length;t++){const n=e.items[t];3!==n.type&&9!==n.type||delete n.value}}}}function m(e){switch(e.t=e.type,e.type){case 0:{const t=e;m(t.body),t.b=t.body,delete t.body;break}case 1:{const t=e,n=t.cases;for(let e=0;e<n.length;e++)m(n[e]);t.c=n,delete t.cases;break}case 2:{const t=e,n=t.items;for(let e=0;e<n.length;e++)m(n[e]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{const t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{const t=e;m(t.key),t.k=t.key,delete t.key,t.modifier&&(m(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{const t=e;t.i=t.index,delete t.index;break}case 4:{const t=e;t.k=t.key,delete t.key;break}}delete e.type}function b(e,t){const{helper:n}=e;switch(t.type){case 0:!function(e,t){t.body?b(e,t.body):e.push("null")}(e,t);break;case 1:!function(e,t){const{helper:n,needIndent:r}=e;if(t.cases.length>1){e.push(`${n("plural")}([`),e.indent(r());const c=t.cases.length;for(let n=0;n<c&&(b(e,t.cases[n]),n!==c-1);n++)e.push(", ");e.deindent(r()),e.push("])")}}(e,t);break;case 2:!function(e,t){const{helper:n,needIndent:r}=e;e.push(`${n("normalize")}([`),e.indent(r());const c=t.items.length;for(let o=0;o<c&&(b(e,t.items[o]),o!==c-1);o++)e.push(", ");e.deindent(r()),e.push("])")}(e,t);break;case 6:!function(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),b(e,t.key),t.modifier?(e.push(", "),b(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}(e,t);break;case 8:case 7:case 9:case 3:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n("interpolate")}(${n("list")}(${t.index}))`,t);break;case 4:e.push(`${n("interpolate")}(${n("named")}(${JSON.stringify(t.key)}))`,t)}}return e.CompileErrorCodes=s,e.ERROR_DOMAIN=T,e.LOCATION_STUB={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}},e.baseCompile=function(e,t={}){const n=r({},t),s=!!n.jit,u=!!n.minify,a=null==n.optimize||n.optimize,i=h(n).parse(e);return s?(a&&function(e){const t=e.body;2===t.type?O(t):t.cases.forEach((e=>O(e)))}(i),u&&m(i),{ast:i,code:""}):(D(i,n),((e,t={})=>{const n=c(t.mode)?t.mode:"normal",r=c(t.filename)?t.filename:"message.intl",s=!!t.sourceMap,u=null!=t.breakLineCode?t.breakLineCode:"arrow"===n?";":"\n",a=t.needIndent?t.needIndent:"arrow"!==n,i=e.helpers||[],l=function(e,t){const{sourceMap:n,filename:r,breakLineCode:c,needIndent:o}=t,s=!1!==t.location,u={filename:r,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:c,needIndent:o,indentLevel:0};function a(e,t){u.code+=e}function i(e,t=!0){const n=t?c:"";a(o?n+" ".repeat(e):n)}return s&&e.loc&&(u.source=e.loc.source),{context:()=>u,push:a,indent:function(e=!0){const t=++u.indentLevel;e&&i(t)},deindent:function(e=!0){const t=--u.indentLevel;e&&i(t)},newline:function(){i(u.indentLevel)},helper:e=>`_${e}`,needIndent:()=>u.needIndent}}(e,{mode:n,filename:r,sourceMap:s,breakLineCode:u,needIndent:a});l.push("normal"===n?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(a),i.length>0&&(l.push(`const { ${o(i.map((e=>`${e}: _${e}`)),", ")} } = ctx`),l.newline()),l.push("return "),b(l,e),l.deindent(a),l.push("}"),delete e.helpers;const{code:E,map:f}=l.context();return{ast:e,code:E,map:f?f.toJSON():void 0}})(i,n))},e.createCompileError=a,e.createLocation=n,e.createParser=h,e.createPosition=t,e.defaultOnError=function(e){throw e},e.detectHtmlTag=e=>i.test(e),e.errorMessages=u,e}({});
|
|
6
|
+
var IntlifyMessageCompiler=function(e){"use strict";function t(e,t,n){return{line:e,column:t,offset:n}}function n(e,t,n){const r={start:e,end:t};return null!=n&&(r.source=n),r}const r=Object.assign,c=e=>"string"==typeof e;function o(e,t=""){return e.reduce(((e,n,r)=>0===r?e+n:e+t+n),"")}const s={USE_MODULO_SYNTAX:1,__EXTEND_POINT__:2},u={[s.USE_MODULO_SYNTAX]:"Use modulo before '{{0}}'."};function a(e,t,...n){const r={message:String(e),code:e};return t&&(r.location=t),r}const i={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},l={[i.EXPECTED_TOKEN]:"Expected token: '{0}'",[i.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[i.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[i.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[i.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[i.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[i.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[i.EMPTY_PLACEHOLDER]:"Empty placeholder",[i.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[i.INVALID_LINKED_FORMAT]:"Invalid linked format",[i.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[i.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[i.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[i.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[i.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[i.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function E(e,t,n={}){const{domain:r,messages:c,args:o}=n,s=new SyntaxError(String(e));return s.code=e,t&&(s.location=t),s.domain=r,s}const f=/<\/?[\w\s="/.':;#-\/]+>/,d=" ",L="\r",N="\n",_=String.fromCharCode(8232),p=String.fromCharCode(8233);function C(e){const t=e;let n=0,r=1,c=1,o=0;const s=e=>t[e]===L&&t[e+1]===N,u=e=>t[e]===p,a=e=>t[e]===_,i=e=>s(e)||(e=>t[e]===N)(e)||u(e)||a(e),l=e=>s(e)||u(e)||a(e)?N:t[e];function E(){return o=0,i(n)&&(r++,c=0),s(n)&&n++,n++,c++,t[n]}return{index:()=>n,line:()=>r,column:()=>c,peekOffset:()=>o,charAt:l,currentChar:()=>l(n),currentPeek:()=>l(n+o),next:E,peek:function(){return s(n+o)&&o++,o++,t[n+o]},reset:function(){n=0,r=1,c=1,o=0},resetPeek:function(e=0){o=e},skipToPeek:function(){const e=n+o;for(;e!==n;)E();o=0}}}const T=void 0,k=".",A="'";function I(e,r={}){const c=!1!==r.location,o=C(e),s=()=>o.index(),u=()=>t(o.line(),o.column(),o.index()),a=u(),l=s(),E={currentType:14,offset:l,startLoc:a,endLoc:a,lastType:14,lastOffset:l,lastStartLoc:a,lastEndLoc:a,braceNest:0,inLinked:!1,text:""},f=()=>E,{onError:L}=r;function _(e,t,r){e.endLoc=u(),e.currentType=t;const o={type:t};return c&&(o.loc=n(e.startLoc,e.endLoc)),null!=r&&(o.value=r),o}const p=e=>_(e,14);function I(e,t){return e.currentChar()===t?(e.next(),t):(i.EXPECTED_TOKEN,u(),"")}function h(e){let t="";for(;e.currentPeek()===d||e.currentPeek()===N;)t+=e.currentPeek(),e.peek();return t}function S(e){const t=h(e);return e.skipToPeek(),t}function P(e){if(e===T)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function O(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=function(e){if(e===T)return!1;const t=e.charCodeAt(0);return t>=48&&t<=57}("-"===e.currentPeek()?e.peek():e.currentPeek());return e.resetPeek(),r}function D(e){h(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function y(e,t=!0){const n=(t=!1,r="",c=!1)=>{const o=e.currentPeek();return"{"===o?"%"!==r&&t:"@"!==o&&o?"%"===o?(e.peek(),n(t,"%",!0)):"|"===o?!("%"!==r&&!c)||!(r===d||r===N):o===d?(e.peek(),n(!0,d,c)):o!==N||(e.peek(),n(!0,N,c)):"%"===r||t},r=n();return t&&e.resetPeek(),r}function m(e,t){const n=e.currentChar();return n===T?T:t(n)?(e.next(),n):null}function U(e){const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||95===t||36===t}function b(e){return m(e,U)}function x(e){const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||95===t||36===t||45===t}function v(e){return m(e,x)}function R(e){const t=e.charCodeAt(0);return t>=48&&t<=57}function M(e){return m(e,R)}function g(e){const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function X(e){return m(e,g)}function Y(e){let t="",n="";for(;t=M(e);)n+=t;return n}function K(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if("%"===n){if(!y(e))break;t+=n,e.next()}else if(n===d||n===N)if(y(e))t+=n,e.next();else{if(D(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function w(e){return e!==A&&e!==N}function H(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return G(e,t,4);case"U":return G(e,t,6);default:return i.UNKNOWN_ESCAPE_SEQUENCE,u(),""}}function G(e,t,n){I(e,t);let r="";for(let c=0;c<n;c++){const t=X(e);if(!t){i.INVALID_UNICODE_ESCAPE_SEQUENCE,u(),e.currentChar();break}r+=t}return`\\${t}${r}`}function $(e){return"{"!==e&&"}"!==e&&e!==d&&e!==N}function B(e){S(e);const t=I(e,"|");return S(e),t}function V(e,t){let n=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(i.NOT_ALLOW_NEST_PLACEHOLDER,u()),e.next(),n=_(t,2,"{"),S(e),t.braceNest++,n;case"}":return t.braceNest>0&&2===t.currentType&&(i.EMPTY_PLACEHOLDER,u()),e.next(),n=_(t,3,"}"),t.braceNest--,t.braceNest>0&&S(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),n;case"@":return t.braceNest>0&&(i.UNTERMINATED_CLOSING_BRACE,u()),n=F(e,t)||p(t),t.braceNest=0,n;default:{let r=!0,c=!0,o=!0;if(D(e))return t.braceNest>0&&(i.UNTERMINATED_CLOSING_BRACE,u()),n=_(t,1,B(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(5===t.currentType||6===t.currentType||7===t.currentType))return i.UNTERMINATED_CLOSING_BRACE,u(),t.braceNest=0,Q(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t))return n=_(t,5,function(e){S(e);let t="",n="";for(;t=v(e);)n+=t;return e.currentChar()===T&&(i.UNTERMINATED_CLOSING_BRACE,u()),n}(e)),S(e),n;if(c=O(e,t))return n=_(t,6,function(e){S(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${Y(e)}`):t+=Y(e),e.currentChar()===T&&(i.UNTERMINATED_CLOSING_BRACE,u()),t}(e)),S(e),n;if(o=function(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=e.currentPeek()===A;return e.resetPeek(),r}(e,t))return n=_(t,7,function(e){S(e),I(e,"'");let t="",n="";for(;t=m(e,w);)n+="\\"===t?H(e):t;const r=e.currentChar();return r===N||r===T?(i.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,u(),r===N&&(e.next(),I(e,"'")),n):(I(e,"'"),n)}(e)),S(e),n;if(!r&&!c&&!o)return n=_(t,13,function(e){S(e);let t="",n="";for(;t=m(e,$);)n+=t;return n}(e)),i.INVALID_TOKEN_IN_PLACEHOLDER,u(),n.value,S(e),n;break}}return n}function F(e,t){const{currentType:n}=t;let r=null;const c=e.currentChar();switch(8!==n&&9!==n&&12!==n&&10!==n||c!==N&&c!==d||(i.INVALID_LINKED_FORMAT,u()),c){case"@":return e.next(),r=_(t,8,"@"),t.inLinked=!0,r;case".":return S(e),e.next(),_(t,9,".");case":":return S(e),e.next(),_(t,10,":");default:return D(e)?(r=_(t,1,B(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(8!==n)return!1;h(e);const r="."===e.currentPeek();return e.resetPeek(),r}(e,t)||function(e,t){const{currentType:n}=t;if(8!==n&&12!==n)return!1;h(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(S(e),F(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;h(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t)?(S(e),_(t,12,function(e){let t="",n="";for(;t=b(e);)n+=t;return n}(e))):function(e,t){const{currentType:n}=t;if(10!==n)return!1;const r=()=>{const t=e.currentPeek();return"{"===t?P(e.peek()):!("@"===t||"%"===t||"|"===t||":"===t||"."===t||t===d||!t)&&(t===N?(e.peek(),r()):P(t))},c=r();return e.resetPeek(),c}(e,t)?(S(e),"{"===c?V(e,t)||r:_(t,11,function(e){const t=(n=!1,r)=>{const c=e.currentChar();return"{"!==c&&"%"!==c&&"@"!==c&&"|"!==c&&"("!==c&&")"!==c&&c?c===d?r:c===N||c===k?(r+=c,e.next(),t(n,r)):(r+=c,e.next(),t(!0,r)):r};return t(!1,"")}(e))):(8===n&&(i.INVALID_LINKED_FORMAT,u()),t.braceNest=0,t.inLinked=!1,Q(e,t))}}function Q(e,t){let n={type:14};if(t.braceNest>0)return V(e,t)||p(t);if(t.inLinked)return F(e,t)||p(t);switch(e.currentChar()){case"{":return V(e,t)||p(t);case"}":return i.UNBALANCED_CLOSING_BRACE,u(),e.next(),_(t,3,"}");case"@":return F(e,t)||p(t);default:{if(D(e))return n=_(t,1,B(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:c}=function(e){const t=h(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return c?_(t,0,K(e)):_(t,4,function(e){S(e);const t=e.currentChar();return"%"!==t&&(i.EXPECTED_TOKEN,u()),e.next(),"%"}(e));if(y(e))return _(t,0,K(e));break}}return n}return{nextToken:function(){const{currentType:e,offset:t,startLoc:n,endLoc:r}=E;return E.lastType=e,E.lastOffset=t,E.lastStartLoc=n,E.lastEndLoc=r,E.offset=s(),E.startLoc=u(),o.currentChar()===T?_(E,14):Q(o,E)},currentOffset:s,currentPosition:u,context:f}}const h="parser",S=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function P(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):"�"}}}function O(e={}){const t=!1!==e.location,{onError:n,onWarn:c}=e;function o(e,n,r){const c={type:e};return t&&(c.start=n,c.end=n,c.loc={start:r,end:r}),c}function u(e,n,r,c){c&&(e.type=c),t&&(e.end=n,e.loc&&(e.loc.end=r))}function a(e,t){const n=e.context(),r=o(3,n.offset,n.startLoc);return r.value=t,u(r,e.currentOffset(),e.currentPosition()),r}function l(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:c}=n,s=o(5,r,c);return s.index=parseInt(t,10),e.nextToken(),u(s,e.currentOffset(),e.currentPosition()),s}function E(e,t,n){const r=e.context(),{lastOffset:c,lastStartLoc:s}=r,a=o(4,c,s);return a.key=t,!0===n&&(a.modulo=!0),e.nextToken(),u(a,e.currentOffset(),e.currentPosition()),a}function f(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:c}=n,s=o(9,r,c);return s.value=t.replace(S,P),e.nextToken(),u(s,e.currentOffset(),e.currentPosition()),s}function d(e){const t=e.context(),n=o(6,t.offset,t.startLoc);let r=e.nextToken();if(9===r.type){const t=function(e){const t=e.nextToken(),n=e.context(),{lastOffset:r,lastStartLoc:c}=n,s=o(8,r,c);return 12!==t.type?(i.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,s.value="",u(s,r,c),{nextConsumeToken:t,node:s}):(null==t.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,D(t)),s.value=t.value||"",u(s,e.currentOffset(),e.currentPosition()),{node:s})}(e);n.modifier=t.node,r=t.nextConsumeToken||e.nextToken()}switch(10!==r.type&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(r)),r=e.nextToken(),2===r.type&&(r=e.nextToken()),r.type){case 11:null==r.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(r)),n.key=function(e,t){const n=e.context(),r=o(7,n.offset,n.startLoc);return r.value=t,u(r,e.currentOffset(),e.currentPosition()),r}(e,r.value||"");break;case 5:null==r.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(r)),n.key=E(e,r.value||"");break;case 6:null==r.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(r)),n.key=l(e,r.value||"");break;case 7:null==r.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(r)),n.key=f(e,r.value||"");break;default:{i.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc;const c=e.context(),s=o(7,c.offset,c.startLoc);return s.value="",u(s,c.offset,c.startLoc),n.key=s,u(n,c.offset,c.startLoc),{nextConsumeToken:r,node:n}}}return u(n,e.currentOffset(),e.currentPosition()),{node:n}}function L(e){const t=e.context(),n=o(2,1===t.currentType?e.currentOffset():t.offset,1===t.currentType?t.endLoc:t.startLoc);n.items=[];let r=null,c=null;do{const o=r||e.nextToken();switch(r=null,o.type){case 0:null==o.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(o)),n.items.push(a(e,o.value||""));break;case 6:null==o.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(o)),n.items.push(l(e,o.value||""));break;case 4:c=!0;break;case 5:null==o.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(o)),n.items.push(E(e,o.value||"",!!c)),c&&(s.USE_MODULO_SYNTAX,t.lastStartLoc,D(o),c=null);break;case 7:null==o.value&&(i.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,D(o)),n.items.push(f(e,o.value||""));break;case 8:{const t=d(e);n.items.push(t.node),r=t.nextConsumeToken||null;break}}}while(14!==t.currentType&&1!==t.currentType);return u(n,1===t.currentType?t.lastOffset:e.currentOffset(),1===t.currentType?t.lastEndLoc:e.currentPosition()),n}function N(e){const t=e.context(),{offset:n,startLoc:r}=t,c=L(e);return 14===t.currentType?c:function(e,t,n,r){const c=e.context();let s=0===r.items.length;const a=o(1,t,n);a.cases=[],a.cases.push(r);do{const t=L(e);s||(s=0===t.items.length),a.cases.push(t)}while(14!==c.currentType);return s&&i.MUST_HAVE_MESSAGES_IN_PLURAL,u(a,e.currentOffset(),e.currentPosition()),a}(e,n,r,c)}return{parse:function(n){const c=I(n,r({},e)),s=c.context(),a=o(0,s.offset,s.startLoc);return t&&a.loc&&(a.loc.source=n),a.body=N(c),e.onCacheKey&&(a.cacheKey=e.onCacheKey(n)),14!==s.currentType&&(i.UNEXPECTED_LEXICAL_ANALYSIS,s.lastStartLoc,n[s.offset]),u(a,c.currentOffset(),c.currentPosition()),a}}}function D(e){if(14===e.type)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function y(e,t){for(let n=0;n<e.length;n++)m(e[n],t)}function m(e,t){switch(e.type){case 1:y(e.cases,t),t.helper("plural");break;case 2:y(e.items,t);break;case 6:m(e.key,t),t.helper("linked"),t.helper("type");break;case 5:t.helper("interpolate"),t.helper("list");break;case 4:t.helper("interpolate"),t.helper("named")}}function U(e,t={}){const n=function(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}(e);n.helper("normalize"),e.body&&m(e.body,n);const r=n.context();e.helpers=Array.from(r.helpers)}function b(e){if(1===e.items.length){const t=e.items[0];3!==t.type&&9!==t.type||(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n<e.items.length;n++){const r=e.items[n];if(3!==r.type&&9!==r.type)break;if(null==r.value)break;t.push(r.value)}if(t.length===e.items.length){e.static=o(t);for(let t=0;t<e.items.length;t++){const n=e.items[t];3!==n.type&&9!==n.type||delete n.value}}}}function x(e){switch(e.t=e.type,e.type){case 0:{const t=e;x(t.body),t.b=t.body,delete t.body;break}case 1:{const t=e,n=t.cases;for(let e=0;e<n.length;e++)x(n[e]);t.c=n,delete t.cases;break}case 2:{const t=e,n=t.items;for(let e=0;e<n.length;e++)x(n[e]);t.i=n,delete t.items,t.static&&(t.s=t.static,delete t.static);break}case 3:case 9:case 8:case 7:{const t=e;t.value&&(t.v=t.value,delete t.value);break}case 6:{const t=e;x(t.key),t.k=t.key,delete t.key,t.modifier&&(x(t.modifier),t.m=t.modifier,delete t.modifier);break}case 5:{const t=e;t.i=t.index,delete t.index;break}case 4:{const t=e;t.k=t.key,delete t.key;break}}delete e.type}function v(e,t){const{helper:n}=e;switch(t.type){case 0:!function(e,t){t.body?v(e,t.body):e.push("null")}(e,t);break;case 1:!function(e,t){const{helper:n,needIndent:r}=e;if(t.cases.length>1){e.push(`${n("plural")}([`),e.indent(r());const c=t.cases.length;for(let n=0;n<c&&(v(e,t.cases[n]),n!==c-1);n++)e.push(", ");e.deindent(r()),e.push("])")}}(e,t);break;case 2:!function(e,t){const{helper:n,needIndent:r}=e;e.push(`${n("normalize")}([`),e.indent(r());const c=t.items.length;for(let o=0;o<c&&(v(e,t.items[o]),o!==c-1);o++)e.push(", ");e.deindent(r()),e.push("])")}(e,t);break;case 6:!function(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),v(e,t.key),t.modifier?(e.push(", "),v(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}(e,t);break;case 8:case 7:case 9:case 3:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n("interpolate")}(${n("list")}(${t.index}))`,t);break;case 4:e.push(`${n("interpolate")}(${n("named")}(${JSON.stringify(t.key)}))`,t)}}return e.CompileErrorCodes=i,e.CompileWarnCodes=s,e.ERROR_DOMAIN=h,e.LOCATION_STUB={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}},e.baseCompile=function(e,t={}){const n=r({},t),s=!!n.jit,u=!!n.minify,a=null==n.optimize||n.optimize,i=O(n).parse(e);return s?(a&&function(e){const t=e.body;2===t.type?b(t):t.cases.forEach((e=>b(e)))}(i),u&&x(i),{ast:i,code:""}):(U(i,n),((e,t={})=>{const n=c(t.mode)?t.mode:"normal",r=c(t.filename)?t.filename:"message.intl",s=!!t.sourceMap,u=null!=t.breakLineCode?t.breakLineCode:"arrow"===n?";":"\n",a=t.needIndent?t.needIndent:"arrow"!==n,i=e.helpers||[],l=function(e,t){const{sourceMap:n,filename:r,breakLineCode:c,needIndent:o}=t,s=!1!==t.location,u={filename:r,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:c,needIndent:o,indentLevel:0};function a(e,t){u.code+=e}function i(e,t=!0){const n=t?c:"";a(o?n+" ".repeat(e):n)}return s&&e.loc&&(u.source=e.loc.source),{context:()=>u,push:a,indent:function(e=!0){const t=++u.indentLevel;e&&i(t)},deindent:function(e=!0){const t=--u.indentLevel;e&&i(t)},newline:function(){i(u.indentLevel)},helper:e=>`_${e}`,needIndent:()=>u.needIndent}}(e,{mode:n,filename:r,sourceMap:s,breakLineCode:u,needIndent:a});l.push("normal"===n?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(a),i.length>0&&(l.push(`const { ${o(i.map((e=>`${e}: _${e}`)),", ")} } = ctx`),l.newline()),l.push("return "),v(l,e),l.deindent(a),l.push("}"),delete e.helpers;const{code:E,map:f}=l.context();return{ast:e,code:E,map:f?f.toJSON():void 0}})(i,n))},e.createCompileError=E,e.createCompileWarn=a,e.createLocation=n,e.createParser=O,e.createPosition=t,e.defaultOnError=function(e){throw e},e.detectHtmlTag=e=>f.test(e),e.errorMessages=l,e.warnMessages=u,e}({});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.
|
|
2
|
+
* message-compiler v9.12.1
|
|
3
3
|
* (c) 2024 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -20,6 +20,23 @@ function createLocation(start, end, source) {
|
|
|
20
20
|
return loc;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
const CompileWarnCodes = {
|
|
24
|
+
USE_MODULO_SYNTAX: 1,
|
|
25
|
+
__EXTEND_POINT__: 2
|
|
26
|
+
};
|
|
27
|
+
/** @internal */
|
|
28
|
+
const warnMessages = {
|
|
29
|
+
[CompileWarnCodes.USE_MODULO_SYNTAX]: `Use modulo before '{{0}}'.`
|
|
30
|
+
};
|
|
31
|
+
function createCompileWarn(code, loc, ...args) {
|
|
32
|
+
const msg = (process.env.NODE_ENV !== 'production') ? format(warnMessages[code] || '', ...(args || [])) : code;
|
|
33
|
+
const message = { message: String(msg), code };
|
|
34
|
+
if (loc) {
|
|
35
|
+
message.location = loc;
|
|
36
|
+
}
|
|
37
|
+
return message;
|
|
38
|
+
}
|
|
39
|
+
|
|
23
40
|
const CompileErrorCodes = {
|
|
24
41
|
// tokenizer error codes
|
|
25
42
|
EXPECTED_TOKEN: 1,
|
|
@@ -414,33 +431,46 @@ function createTokenizer(source, options = {}) {
|
|
|
414
431
|
}
|
|
415
432
|
return null;
|
|
416
433
|
}
|
|
434
|
+
function isIdentifier(ch) {
|
|
435
|
+
const cc = ch.charCodeAt(0);
|
|
436
|
+
return ((cc >= 97 && cc <= 122) || // a-z
|
|
437
|
+
(cc >= 65 && cc <= 90) || // A-Z
|
|
438
|
+
(cc >= 48 && cc <= 57) || // 0-9
|
|
439
|
+
cc === 95 || // _
|
|
440
|
+
cc === 36 // $
|
|
441
|
+
);
|
|
442
|
+
}
|
|
417
443
|
function takeIdentifierChar(scnr) {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
444
|
+
return takeChar(scnr, isIdentifier);
|
|
445
|
+
}
|
|
446
|
+
function isNamedIdentifier(ch) {
|
|
447
|
+
const cc = ch.charCodeAt(0);
|
|
448
|
+
return ((cc >= 97 && cc <= 122) || // a-z
|
|
449
|
+
(cc >= 65 && cc <= 90) || // A-Z
|
|
450
|
+
(cc >= 48 && cc <= 57) || // 0-9
|
|
451
|
+
cc === 95 || // _
|
|
452
|
+
cc === 36 || // $
|
|
453
|
+
cc === 45 // -
|
|
454
|
+
);
|
|
455
|
+
}
|
|
456
|
+
function takeNamedIdentifierChar(scnr) {
|
|
457
|
+
return takeChar(scnr, isNamedIdentifier);
|
|
458
|
+
}
|
|
459
|
+
function isDigit(ch) {
|
|
460
|
+
const cc = ch.charCodeAt(0);
|
|
461
|
+
return cc >= 48 && cc <= 57; // 0-9
|
|
428
462
|
}
|
|
429
463
|
function takeDigit(scnr) {
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
return
|
|
464
|
+
return takeChar(scnr, isDigit);
|
|
465
|
+
}
|
|
466
|
+
function isHexDigit(ch) {
|
|
467
|
+
const cc = ch.charCodeAt(0);
|
|
468
|
+
return ((cc >= 48 && cc <= 57) || // 0-9
|
|
469
|
+
(cc >= 65 && cc <= 70) || // A-F
|
|
470
|
+
(cc >= 97 && cc <= 102)); // a-f
|
|
435
471
|
}
|
|
436
472
|
function takeHexDigit(scnr) {
|
|
437
|
-
|
|
438
|
-
const cc = ch.charCodeAt(0);
|
|
439
|
-
return ((cc >= 48 && cc <= 57) || // 0-9
|
|
440
|
-
(cc >= 65 && cc <= 70) || // A-F
|
|
441
|
-
(cc >= 97 && cc <= 102)); // a-f
|
|
442
|
-
};
|
|
443
|
-
return takeChar(scnr, closure);
|
|
473
|
+
return takeChar(scnr, isHexDigit);
|
|
444
474
|
}
|
|
445
475
|
function getDigits(scnr) {
|
|
446
476
|
let ch = '';
|
|
@@ -504,7 +534,7 @@ function createTokenizer(source, options = {}) {
|
|
|
504
534
|
skipSpaces(scnr);
|
|
505
535
|
let ch = '';
|
|
506
536
|
let name = '';
|
|
507
|
-
while ((ch =
|
|
537
|
+
while ((ch = takeNamedIdentifierChar(scnr))) {
|
|
508
538
|
name += ch;
|
|
509
539
|
}
|
|
510
540
|
if (scnr.currentChar() === EOF) {
|
|
@@ -527,14 +557,16 @@ function createTokenizer(source, options = {}) {
|
|
|
527
557
|
}
|
|
528
558
|
return value;
|
|
529
559
|
}
|
|
560
|
+
function isLiteral(ch) {
|
|
561
|
+
return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;
|
|
562
|
+
}
|
|
530
563
|
function readLiteral(scnr) {
|
|
531
564
|
skipSpaces(scnr);
|
|
532
565
|
// eslint-disable-next-line no-useless-escape
|
|
533
566
|
eat(scnr, `\'`);
|
|
534
567
|
let ch = '';
|
|
535
568
|
let literal = '';
|
|
536
|
-
|
|
537
|
-
while ((ch = takeChar(scnr, fn))) {
|
|
569
|
+
while ((ch = takeChar(scnr, isLiteral))) {
|
|
538
570
|
if (ch === '\\') {
|
|
539
571
|
literal += readEscapeSequence(scnr);
|
|
540
572
|
}
|
|
@@ -586,15 +618,17 @@ function createTokenizer(source, options = {}) {
|
|
|
586
618
|
}
|
|
587
619
|
return `\\${unicode}${sequence}`;
|
|
588
620
|
}
|
|
621
|
+
function isInvalidIdentifier(ch) {
|
|
622
|
+
return (ch !== "{" /* TokenChars.BraceLeft */ &&
|
|
623
|
+
ch !== "}" /* TokenChars.BraceRight */ &&
|
|
624
|
+
ch !== CHAR_SP &&
|
|
625
|
+
ch !== CHAR_LF);
|
|
626
|
+
}
|
|
589
627
|
function readInvalidIdentifier(scnr) {
|
|
590
628
|
skipSpaces(scnr);
|
|
591
629
|
let ch = '';
|
|
592
630
|
let identifiers = '';
|
|
593
|
-
|
|
594
|
-
ch !== "}" /* TokenChars.BraceRight */ &&
|
|
595
|
-
ch !== CHAR_SP &&
|
|
596
|
-
ch !== CHAR_LF;
|
|
597
|
-
while ((ch = takeChar(scnr, closure))) {
|
|
631
|
+
while ((ch = takeChar(scnr, isInvalidIdentifier))) {
|
|
598
632
|
identifiers += ch;
|
|
599
633
|
}
|
|
600
634
|
return identifiers;
|
|
@@ -871,7 +905,7 @@ function fromEscapeSequence(match, codePoint4, codePoint6) {
|
|
|
871
905
|
}
|
|
872
906
|
function createParser(options = {}) {
|
|
873
907
|
const location = options.location !== false;
|
|
874
|
-
const { onError } = options;
|
|
908
|
+
const { onError, onWarn } = options;
|
|
875
909
|
function emitError(tokenzer, code, start, offset, ...args) {
|
|
876
910
|
const end = tokenzer.currentPosition();
|
|
877
911
|
end.offset += offset;
|
|
@@ -885,6 +919,15 @@ function createParser(options = {}) {
|
|
|
885
919
|
onError(err);
|
|
886
920
|
}
|
|
887
921
|
}
|
|
922
|
+
function emitWarn(tokenzer, code, start, offset, ...args) {
|
|
923
|
+
const end = tokenzer.currentPosition();
|
|
924
|
+
end.offset += offset;
|
|
925
|
+
end.column += offset;
|
|
926
|
+
if (onWarn) {
|
|
927
|
+
const loc = location ? createLocation(start, end) : null;
|
|
928
|
+
onWarn(createCompileWarn(code, loc, args));
|
|
929
|
+
}
|
|
930
|
+
}
|
|
888
931
|
function startNode(type, offset, loc) {
|
|
889
932
|
const node = { type };
|
|
890
933
|
if (location) {
|
|
@@ -921,11 +964,14 @@ function createParser(options = {}) {
|
|
|
921
964
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
922
965
|
return node;
|
|
923
966
|
}
|
|
924
|
-
function parseNamed(tokenizer, key) {
|
|
967
|
+
function parseNamed(tokenizer, key, modulo) {
|
|
925
968
|
const context = tokenizer.context();
|
|
926
969
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
927
970
|
const node = startNode(4 /* NodeTypes.Named */, offset, loc);
|
|
928
971
|
node.key = key;
|
|
972
|
+
if (modulo === true) {
|
|
973
|
+
node.modulo = true;
|
|
974
|
+
}
|
|
929
975
|
tokenizer.nextToken(); // skip brach right
|
|
930
976
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
931
977
|
return node;
|
|
@@ -1045,6 +1091,7 @@ function createParser(options = {}) {
|
|
|
1045
1091
|
const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
|
|
1046
1092
|
node.items = [];
|
|
1047
1093
|
let nextToken = null;
|
|
1094
|
+
let modulo = null;
|
|
1048
1095
|
do {
|
|
1049
1096
|
const token = nextToken || tokenizer.nextToken();
|
|
1050
1097
|
nextToken = null;
|
|
@@ -1061,11 +1108,18 @@ function createParser(options = {}) {
|
|
|
1061
1108
|
}
|
|
1062
1109
|
node.items.push(parseList(tokenizer, token.value || ''));
|
|
1063
1110
|
break;
|
|
1111
|
+
case 4 /* TokenTypes.Modulo */:
|
|
1112
|
+
modulo = true;
|
|
1113
|
+
break;
|
|
1064
1114
|
case 5 /* TokenTypes.Named */:
|
|
1065
1115
|
if (token.value == null) {
|
|
1066
1116
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1067
1117
|
}
|
|
1068
|
-
node.items.push(parseNamed(tokenizer, token.value || ''));
|
|
1118
|
+
node.items.push(parseNamed(tokenizer, token.value || '', !!modulo));
|
|
1119
|
+
if (modulo) {
|
|
1120
|
+
emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1121
|
+
modulo = null;
|
|
1122
|
+
}
|
|
1069
1123
|
break;
|
|
1070
1124
|
case 7 /* TokenTypes.Literal */:
|
|
1071
1125
|
if (token.value == null) {
|
|
@@ -1546,4 +1600,4 @@ function baseCompile(source, options = {}) {
|
|
|
1546
1600
|
}
|
|
1547
1601
|
}
|
|
1548
1602
|
|
|
1549
|
-
export { CompileErrorCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };
|
|
1603
|
+
export { CompileErrorCodes, CompileWarnCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createCompileWarn, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages, warnMessages };
|