@intlify/message-compiler 9.13.0 → 10.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/dist/message-compiler.cjs +59 -144
- package/dist/message-compiler.d.ts +0 -22
- package/dist/message-compiler.esm-browser.js +60 -142
- package/dist/message-compiler.esm-browser.prod.js +2 -2
- package/dist/message-compiler.global.js +59 -144
- package/dist/message-compiler.global.prod.js +2 -2
- package/dist/message-compiler.mjs +60 -142
- package/dist/message-compiler.node.mjs +60 -142
- package/dist/message-compiler.prod.cjs +59 -144
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler
|
|
2
|
+
* message-compiler v10.0.0-alpha.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={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}({});
|
|
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",L=String.fromCharCode(8232),d=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]===d,a=e=>t[e]===L,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="'";function C(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(),L={currentType:13,offset:E,startLoc:i,endLoc:i,lastType:13,lastOffset:E,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},d=()=>L,{onError:C}=r;function A(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 T=e=>A(e,13);function k(e,t){return e.currentChar()===t?(e.next(),t):(s.EXPECTED_TOKEN,a(),"")}function I(e){let t="";for(;e.currentPeek()===l||e.currentPeek()===f;)t+=e.currentPeek(),e.peek();return t}function h(e){const t=I(e);return e.skipToPeek(),t}function P(e){if(e===_)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function S(e,t){const{currentType:n}=t;if(2!==n)return!1;I(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 y(e){I(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function D(e,t=!0){const n=(t=!1,r="")=>{const c=e.currentPeek();return"{"===c?t:"@"!==c&&c?"|"===c?!(r===l||r===f):c===l?(e.peek(),n(!0,l)):c!==f||(e.peek(),n(!0,f)):t},r=n();return t&&e.resetPeek(),r}function O(e,t){const n=e.currentChar();return n===_?_:t(n)?(e.next(),n):null}function m(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 O(e,m)}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||45===t}function x(e){return O(e,U)}function v(e){const t=e.charCodeAt(0);return t>=48&&t<=57}function R(e){return O(e,v)}function M(e){const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}function g(e){return O(e,M)}function X(e){let t="",n="";for(;t=R(e);)n+=t;return n}function Y(e){return e!==p&&e!==f}function K(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return w(e,t,4);case"U":return w(e,t,6);default:return s.UNKNOWN_ESCAPE_SEQUENCE,a(),""}}function w(e,t,n){k(e,t);let r="";for(let c=0;c<n;c++){const t=g(e);if(!t){s.INVALID_UNICODE_ESCAPE_SEQUENCE,a(),e.currentChar();break}r+=t}return`\\${t}${r}`}function H(e){return"{"!==e&&"}"!==e&&e!==l&&e!==f}function G(e){h(e);const t=k(e,"|");return h(e),t}function $(e,t){let n=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(s.NOT_ALLOW_NEST_PLACEHOLDER,a()),e.next(),n=A(t,2,"{"),h(e),t.braceNest++,n;case"}":return t.braceNest>0&&2===t.currentType&&(s.EMPTY_PLACEHOLDER,a()),e.next(),n=A(t,3,"}"),t.braceNest--,t.braceNest>0&&h(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),n;case"@":return t.braceNest>0&&(s.UNTERMINATED_CLOSING_BRACE,a()),n=B(e,t)||T(t),t.braceNest=0,n;default:{let r=!0,c=!0,o=!0;if(y(e))return t.braceNest>0&&(s.UNTERMINATED_CLOSING_BRACE,a()),n=A(t,1,G(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(4===t.currentType||5===t.currentType||6===t.currentType))return s.UNTERMINATED_CLOSING_BRACE,a(),t.braceNest=0,V(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;I(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t))return n=A(t,4,function(e){h(e);let t="",n="";for(;t=x(e);)n+=t;return e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),n}(e)),h(e),n;if(c=S(e,t))return n=A(t,5,function(e){h(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${X(e)}`):t+=X(e),e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),t}(e)),h(e),n;if(o=function(e,t){const{currentType:n}=t;if(2!==n)return!1;I(e);const r=e.currentPeek()===p;return e.resetPeek(),r}(e,t))return n=A(t,6,function(e){h(e),k(e,"'");let t="",n="";for(;t=O(e,Y);)n+="\\"===t?K(e):t;const r=e.currentChar();return r===f||r===_?(s.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),r===f&&(e.next(),k(e,"'")),n):(k(e,"'"),n)}(e)),h(e),n;if(!r&&!c&&!o)return n=A(t,12,function(e){h(e);let t="",n="";for(;t=O(e,H);)n+=t;return n}(e)),s.INVALID_TOKEN_IN_PLACEHOLDER,a(),n.value,h(e),n;break}}return n}function B(e,t){const{currentType:n}=t;let r=null;const c=e.currentChar();switch(7!==n&&8!==n&&11!==n&&9!==n||c!==f&&c!==l||(s.INVALID_LINKED_FORMAT,a()),c){case"@":return e.next(),r=A(t,7,"@"),t.inLinked=!0,r;case".":return h(e),e.next(),A(t,8,".");case":":return h(e),e.next(),A(t,9,":");default:return y(e)?(r=A(t,1,G(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(7!==n)return!1;I(e);const r="."===e.currentPeek();return e.resetPeek(),r}(e,t)||function(e,t){const{currentType:n}=t;if(7!==n&&11!==n)return!1;I(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(h(e),B(e,t)):function(e,t){const{currentType:n}=t;if(8!==n)return!1;I(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t)?(h(e),A(t,11,function(e){let t="",n="";for(;t=b(e);)n+=t;return n}(e))):function(e,t){const{currentType:n}=t;if(9!==n)return!1;const r=()=>{const t=e.currentPeek();return"{"===t?P(e.peek()):!("@"===t||"|"===t||":"===t||"."===t||t===l||!t)&&(t===f?(e.peek(),r()):D(e,!1))},c=r();return e.resetPeek(),c}(e,t)?(h(e),"{"===c?$(e,t)||r:A(t,10,function(e){const t=n=>{const r=e.currentChar();return"{"!==r&&"@"!==r&&"|"!==r&&"("!==r&&")"!==r&&r?r===l?n:(n+=r,e.next(),t(n)):n};return t("")}(e))):(7===n&&(s.INVALID_LINKED_FORMAT,a()),t.braceNest=0,t.inLinked=!1,V(e,t))}}function V(e,t){let n={type:13};if(t.braceNest>0)return $(e,t)||T(t);if(t.inLinked)return B(e,t)||T(t);switch(e.currentChar()){case"{":return $(e,t)||T(t);case"}":return s.UNBALANCED_CLOSING_BRACE,a(),e.next(),A(t,3,"}");case"@":return B(e,t)||T(t);default:if(y(e))return n=A(t,1,G(e)),t.braceNest=0,t.inLinked=!1,n;if(D(e))return A(t,0,function(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if(n===l||n===f)if(D(e))t+=n,e.next();else{if(y(e))break;t+=n,e.next()}else t+=n,e.next()}return t}(e))}return n}return{nextToken:function(){const{currentType:e,offset:t,startLoc:n,endLoc:r}=L;return L.lastType=e,L.lastOffset=t,L.lastStartLoc=n,L.lastEndLoc=r,L.offset=u(),L.startLoc=a(),o.currentChar()===_?A(L,13):V(o,L)},currentOffset:u,currentPosition:a,context:d}}const A="parser",T=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function k(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 I(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(T,k),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(8===r.type){const t=function(e){const t=e.nextToken(),n=e.context(),{lastOffset:r,lastStartLoc:u}=n,a=c(8,r,u);return 11!==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,h(t)),a.value=t.value||"",o(a,e.currentOffset(),e.currentPosition()),{node:a})}(e);n.modifier=t.node,r=t.nextConsumeToken||e.nextToken()}switch(9!==r.type&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),r=e.nextToken(),2===r.type&&(r=e.nextToken()),r.type){case 10:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(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 4:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),n.key=i(e,r.value||"");break;case 5:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),n.key=a(e,r.value||"");break;case 6:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(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,h(c)),n.items.push(u(e,c.value||""));break;case 5:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(a(e,c.value||""));break;case 4:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(i(e,c.value||""));break;case 6:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(l(e,c.value||""));break;case 7:{const t=E(e);n.items.push(t.node),r=t.nextConsumeToken||null;break}}}while(13!==t.currentType&&1!==t.currentType);return o(n,1===t.currentType?t.lastOffset:e.currentOffset(),1===t.currentType?t.lastEndLoc:e.currentPosition()),n}function L(e){const t=e.context(),{offset:n,startLoc:r}=t,u=f(e);return 13===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(13!==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=C(n,r({},e)),a=u.context(),i=c(0,a.offset,a.startLoc);return t&&i.loc&&(i.loc.source=n),i.body=L(u),e.onCacheKey&&(i.cacheKey=e.onCacheKey(n)),13!==a.currentType&&(s.UNEXPECTED_LEXICAL_ANALYSIS,a.lastStartLoc,n[a.offset]),o(i,u.currentOffset(),u.currentPosition()),i}}}function h(e){if(13===e.type)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function P(e,t){for(let n=0;n<e.length;n++)S(e[n],t)}function S(e,t){switch(e.type){case 1:P(e.cases,t),t.helper("plural");break;case 2:P(e.items,t);break;case 6:S(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 y(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&&S(e.body,n);const r=n.context();e.helpers=Array.from(r.helpers)}function D(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 O(e){switch(e.t=e.type,e.type){case 0:{const t=e;O(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++)O(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++)O(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;O(t.key),t.k=t.key,delete t.key,t.modifier&&(O(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 m(e,t){const{helper:n}=e;switch(t.type){case 0:!function(e,t){t.body?m(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&&(m(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&&(m(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")}(`),m(e,t.key),t.modifier?(e.push(", "),m(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=A,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=I(n).parse(e);return s?(a&&function(e){const t=e.body;2===t.type?D(t):t.cases.forEach((e=>D(e)))}(i),u&&O(i),{ast:i,code:""}):(y(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 "),m(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=I,e.createPosition=t,e.defaultOnError=function(e){throw e},e.detectHtmlTag=e=>i.test(e),e.errorMessages=u,e}({});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler
|
|
2
|
+
* message-compiler v10.0.0-alpha.1
|
|
3
3
|
* (c) 2024 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -20,23 +20,6 @@ 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
|
-
|
|
40
23
|
const CompileErrorCodes = {
|
|
41
24
|
// tokenizer error codes
|
|
42
25
|
EXPECTED_TOKEN: 1,
|
|
@@ -162,7 +145,6 @@ function createScanner(str) {
|
|
|
162
145
|
}
|
|
163
146
|
function skipToPeek() {
|
|
164
147
|
const target = _index + _peekOffset;
|
|
165
|
-
// eslint-disable-next-line no-unmodified-loop-condition
|
|
166
148
|
while (target !== _index) {
|
|
167
149
|
next();
|
|
168
150
|
}
|
|
@@ -196,11 +178,11 @@ function createTokenizer(source, options = {}) {
|
|
|
196
178
|
const _initLoc = currentPosition();
|
|
197
179
|
const _initOffset = currentOffset();
|
|
198
180
|
const _context = {
|
|
199
|
-
currentType:
|
|
181
|
+
currentType: 13 /* TokenTypes.EOF */,
|
|
200
182
|
offset: _initOffset,
|
|
201
183
|
startLoc: _initLoc,
|
|
202
184
|
endLoc: _initLoc,
|
|
203
|
-
lastType:
|
|
185
|
+
lastType: 13 /* TokenTypes.EOF */,
|
|
204
186
|
lastOffset: _initOffset,
|
|
205
187
|
lastStartLoc: _initLoc,
|
|
206
188
|
lastEndLoc: _initLoc,
|
|
@@ -235,7 +217,7 @@ function createTokenizer(source, options = {}) {
|
|
|
235
217
|
}
|
|
236
218
|
return token;
|
|
237
219
|
}
|
|
238
|
-
const getEndToken = (context) => getToken(context,
|
|
220
|
+
const getEndToken = (context) => getToken(context, 13 /* TokenTypes.EOF */);
|
|
239
221
|
function eat(scnr, ch) {
|
|
240
222
|
if (scnr.currentChar() === ch) {
|
|
241
223
|
scnr.next();
|
|
@@ -309,7 +291,7 @@ function createTokenizer(source, options = {}) {
|
|
|
309
291
|
}
|
|
310
292
|
function isLinkedDotStart(scnr, context) {
|
|
311
293
|
const { currentType } = context;
|
|
312
|
-
if (currentType !==
|
|
294
|
+
if (currentType !== 7 /* TokenTypes.LinkedAlias */) {
|
|
313
295
|
return false;
|
|
314
296
|
}
|
|
315
297
|
peekSpaces(scnr);
|
|
@@ -319,7 +301,7 @@ function createTokenizer(source, options = {}) {
|
|
|
319
301
|
}
|
|
320
302
|
function isLinkedModifierStart(scnr, context) {
|
|
321
303
|
const { currentType } = context;
|
|
322
|
-
if (currentType !==
|
|
304
|
+
if (currentType !== 8 /* TokenTypes.LinkedDot */) {
|
|
323
305
|
return false;
|
|
324
306
|
}
|
|
325
307
|
peekSpaces(scnr);
|
|
@@ -329,8 +311,8 @@ function createTokenizer(source, options = {}) {
|
|
|
329
311
|
}
|
|
330
312
|
function isLinkedDelimiterStart(scnr, context) {
|
|
331
313
|
const { currentType } = context;
|
|
332
|
-
if (!(currentType ===
|
|
333
|
-
currentType ===
|
|
314
|
+
if (!(currentType === 7 /* TokenTypes.LinkedAlias */ ||
|
|
315
|
+
currentType === 11 /* TokenTypes.LinkedModifier */)) {
|
|
334
316
|
return false;
|
|
335
317
|
}
|
|
336
318
|
peekSpaces(scnr);
|
|
@@ -340,7 +322,7 @@ function createTokenizer(source, options = {}) {
|
|
|
340
322
|
}
|
|
341
323
|
function isLinkedReferStart(scnr, context) {
|
|
342
324
|
const { currentType } = context;
|
|
343
|
-
if (currentType !==
|
|
325
|
+
if (currentType !== 9 /* TokenTypes.LinkedDelimiter */) {
|
|
344
326
|
return false;
|
|
345
327
|
}
|
|
346
328
|
const fn = () => {
|
|
@@ -349,7 +331,6 @@ function createTokenizer(source, options = {}) {
|
|
|
349
331
|
return isIdentifierStart(scnr.peek());
|
|
350
332
|
}
|
|
351
333
|
else if (ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
352
|
-
ch === "%" /* TokenChars.Modulo */ ||
|
|
353
334
|
ch === "|" /* TokenChars.Pipe */ ||
|
|
354
335
|
ch === ":" /* TokenChars.LinkedDelimiter */ ||
|
|
355
336
|
ch === "." /* TokenChars.LinkedDot */ ||
|
|
@@ -363,7 +344,7 @@ function createTokenizer(source, options = {}) {
|
|
|
363
344
|
}
|
|
364
345
|
else {
|
|
365
346
|
// other characters
|
|
366
|
-
return
|
|
347
|
+
return isTextStart(scnr, false);
|
|
367
348
|
}
|
|
368
349
|
};
|
|
369
350
|
const ret = fn();
|
|
@@ -376,41 +357,25 @@ function createTokenizer(source, options = {}) {
|
|
|
376
357
|
scnr.resetPeek();
|
|
377
358
|
return ret;
|
|
378
359
|
}
|
|
379
|
-
function detectModuloStart(scnr) {
|
|
380
|
-
const spaces = peekSpaces(scnr);
|
|
381
|
-
const ret = scnr.currentPeek() === "%" /* TokenChars.Modulo */ &&
|
|
382
|
-
scnr.peek() === "{" /* TokenChars.BraceLeft */;
|
|
383
|
-
scnr.resetPeek();
|
|
384
|
-
return {
|
|
385
|
-
isModulo: ret,
|
|
386
|
-
hasSpace: spaces.length > 0
|
|
387
|
-
};
|
|
388
|
-
}
|
|
389
360
|
function isTextStart(scnr, reset = true) {
|
|
390
|
-
const fn = (hasSpace = false, prev = ''
|
|
361
|
+
const fn = (hasSpace = false, prev = '') => {
|
|
391
362
|
const ch = scnr.currentPeek();
|
|
392
363
|
if (ch === "{" /* TokenChars.BraceLeft */) {
|
|
393
|
-
return
|
|
364
|
+
return hasSpace;
|
|
394
365
|
}
|
|
395
366
|
else if (ch === "@" /* TokenChars.LinkedAlias */ || !ch) {
|
|
396
|
-
return
|
|
397
|
-
}
|
|
398
|
-
else if (ch === "%" /* TokenChars.Modulo */) {
|
|
399
|
-
scnr.peek();
|
|
400
|
-
return fn(hasSpace, "%" /* TokenChars.Modulo */, true);
|
|
367
|
+
return hasSpace;
|
|
401
368
|
}
|
|
402
369
|
else if (ch === "|" /* TokenChars.Pipe */) {
|
|
403
|
-
return prev ===
|
|
404
|
-
? true
|
|
405
|
-
: !(prev === CHAR_SP || prev === CHAR_LF);
|
|
370
|
+
return !(prev === CHAR_SP || prev === CHAR_LF);
|
|
406
371
|
}
|
|
407
372
|
else if (ch === CHAR_SP) {
|
|
408
373
|
scnr.peek();
|
|
409
|
-
return fn(true, CHAR_SP
|
|
374
|
+
return fn(true, CHAR_SP);
|
|
410
375
|
}
|
|
411
376
|
else if (ch === CHAR_LF) {
|
|
412
377
|
scnr.peek();
|
|
413
|
-
return fn(true, CHAR_LF
|
|
378
|
+
return fn(true, CHAR_LF);
|
|
414
379
|
}
|
|
415
380
|
else {
|
|
416
381
|
return true;
|
|
@@ -480,18 +445,8 @@ function createTokenizer(source, options = {}) {
|
|
|
480
445
|
}
|
|
481
446
|
return num;
|
|
482
447
|
}
|
|
483
|
-
function readModulo(scnr) {
|
|
484
|
-
skipSpaces(scnr);
|
|
485
|
-
const ch = scnr.currentChar();
|
|
486
|
-
if (ch !== "%" /* TokenChars.Modulo */) {
|
|
487
|
-
emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
|
|
488
|
-
}
|
|
489
|
-
scnr.next();
|
|
490
|
-
return "%" /* TokenChars.Modulo */;
|
|
491
|
-
}
|
|
492
448
|
function readText(scnr) {
|
|
493
449
|
let buf = '';
|
|
494
|
-
// eslint-disable-next-line no-constant-condition
|
|
495
450
|
while (true) {
|
|
496
451
|
const ch = scnr.currentChar();
|
|
497
452
|
if (ch === "{" /* TokenChars.BraceLeft */ ||
|
|
@@ -501,15 +456,6 @@ function createTokenizer(source, options = {}) {
|
|
|
501
456
|
!ch) {
|
|
502
457
|
break;
|
|
503
458
|
}
|
|
504
|
-
else if (ch === "%" /* TokenChars.Modulo */) {
|
|
505
|
-
if (isTextStart(scnr)) {
|
|
506
|
-
buf += ch;
|
|
507
|
-
scnr.next();
|
|
508
|
-
}
|
|
509
|
-
else {
|
|
510
|
-
break;
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
459
|
else if (ch === CHAR_SP || ch === CHAR_LF) {
|
|
514
460
|
if (isTextStart(scnr)) {
|
|
515
461
|
buf += ch;
|
|
@@ -642,10 +588,9 @@ function createTokenizer(source, options = {}) {
|
|
|
642
588
|
return name;
|
|
643
589
|
}
|
|
644
590
|
function readLinkedRefer(scnr) {
|
|
645
|
-
const fn = (
|
|
591
|
+
const fn = (buf) => {
|
|
646
592
|
const ch = scnr.currentChar();
|
|
647
593
|
if (ch === "{" /* TokenChars.BraceLeft */ ||
|
|
648
|
-
ch === "%" /* TokenChars.Modulo */ ||
|
|
649
594
|
ch === "@" /* TokenChars.LinkedAlias */ ||
|
|
650
595
|
ch === "|" /* TokenChars.Pipe */ ||
|
|
651
596
|
ch === "(" /* TokenChars.ParenLeft */ ||
|
|
@@ -659,15 +604,15 @@ function createTokenizer(source, options = {}) {
|
|
|
659
604
|
else if (ch === CHAR_LF || ch === DOT) {
|
|
660
605
|
buf += ch;
|
|
661
606
|
scnr.next();
|
|
662
|
-
return fn(
|
|
607
|
+
return fn(buf);
|
|
663
608
|
}
|
|
664
609
|
else {
|
|
665
610
|
buf += ch;
|
|
666
611
|
scnr.next();
|
|
667
|
-
return fn(
|
|
612
|
+
return fn(buf);
|
|
668
613
|
}
|
|
669
614
|
};
|
|
670
|
-
return fn(
|
|
615
|
+
return fn('');
|
|
671
616
|
}
|
|
672
617
|
function readPlural(scnr) {
|
|
673
618
|
skipSpaces(scnr);
|
|
@@ -724,31 +669,31 @@ function createTokenizer(source, options = {}) {
|
|
|
724
669
|
return token;
|
|
725
670
|
}
|
|
726
671
|
if (context.braceNest > 0 &&
|
|
727
|
-
(context.currentType ===
|
|
728
|
-
context.currentType ===
|
|
729
|
-
context.currentType ===
|
|
672
|
+
(context.currentType === 4 /* TokenTypes.Named */ ||
|
|
673
|
+
context.currentType === 5 /* TokenTypes.List */ ||
|
|
674
|
+
context.currentType === 6 /* TokenTypes.Literal */)) {
|
|
730
675
|
emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
|
|
731
676
|
context.braceNest = 0;
|
|
732
677
|
return readToken(scnr, context);
|
|
733
678
|
}
|
|
734
679
|
if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {
|
|
735
|
-
token = getToken(context,
|
|
680
|
+
token = getToken(context, 4 /* TokenTypes.Named */, readNamedIdentifier(scnr));
|
|
736
681
|
skipSpaces(scnr);
|
|
737
682
|
return token;
|
|
738
683
|
}
|
|
739
684
|
if ((validListIdentifier = isListIdentifierStart(scnr, context))) {
|
|
740
|
-
token = getToken(context,
|
|
685
|
+
token = getToken(context, 5 /* TokenTypes.List */, readListIdentifier(scnr));
|
|
741
686
|
skipSpaces(scnr);
|
|
742
687
|
return token;
|
|
743
688
|
}
|
|
744
689
|
if ((validLiteral = isLiteralStart(scnr, context))) {
|
|
745
|
-
token = getToken(context,
|
|
690
|
+
token = getToken(context, 6 /* TokenTypes.Literal */, readLiteral(scnr));
|
|
746
691
|
skipSpaces(scnr);
|
|
747
692
|
return token;
|
|
748
693
|
}
|
|
749
694
|
if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
|
|
750
695
|
// TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...
|
|
751
|
-
token = getToken(context,
|
|
696
|
+
token = getToken(context, 12 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));
|
|
752
697
|
emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
|
|
753
698
|
skipSpaces(scnr);
|
|
754
699
|
return token;
|
|
@@ -763,27 +708,27 @@ function createTokenizer(source, options = {}) {
|
|
|
763
708
|
const { currentType } = context;
|
|
764
709
|
let token = null;
|
|
765
710
|
const ch = scnr.currentChar();
|
|
766
|
-
if ((currentType ===
|
|
767
|
-
currentType ===
|
|
768
|
-
currentType ===
|
|
769
|
-
currentType ===
|
|
711
|
+
if ((currentType === 7 /* TokenTypes.LinkedAlias */ ||
|
|
712
|
+
currentType === 8 /* TokenTypes.LinkedDot */ ||
|
|
713
|
+
currentType === 11 /* TokenTypes.LinkedModifier */ ||
|
|
714
|
+
currentType === 9 /* TokenTypes.LinkedDelimiter */) &&
|
|
770
715
|
(ch === CHAR_LF || ch === CHAR_SP)) {
|
|
771
716
|
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
|
|
772
717
|
}
|
|
773
718
|
switch (ch) {
|
|
774
719
|
case "@" /* TokenChars.LinkedAlias */:
|
|
775
720
|
scnr.next();
|
|
776
|
-
token = getToken(context,
|
|
721
|
+
token = getToken(context, 7 /* TokenTypes.LinkedAlias */, "@" /* TokenChars.LinkedAlias */);
|
|
777
722
|
context.inLinked = true;
|
|
778
723
|
return token;
|
|
779
724
|
case "." /* TokenChars.LinkedDot */:
|
|
780
725
|
skipSpaces(scnr);
|
|
781
726
|
scnr.next();
|
|
782
|
-
return getToken(context,
|
|
727
|
+
return getToken(context, 8 /* TokenTypes.LinkedDot */, "." /* TokenChars.LinkedDot */);
|
|
783
728
|
case ":" /* TokenChars.LinkedDelimiter */:
|
|
784
729
|
skipSpaces(scnr);
|
|
785
730
|
scnr.next();
|
|
786
|
-
return getToken(context,
|
|
731
|
+
return getToken(context, 9 /* TokenTypes.LinkedDelimiter */, ":" /* TokenChars.LinkedDelimiter */);
|
|
787
732
|
default:
|
|
788
733
|
if (isPluralStart(scnr)) {
|
|
789
734
|
token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
|
|
@@ -799,7 +744,7 @@ function createTokenizer(source, options = {}) {
|
|
|
799
744
|
}
|
|
800
745
|
if (isLinkedModifierStart(scnr, context)) {
|
|
801
746
|
skipSpaces(scnr);
|
|
802
|
-
return getToken(context,
|
|
747
|
+
return getToken(context, 11 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));
|
|
803
748
|
}
|
|
804
749
|
if (isLinkedReferStart(scnr, context)) {
|
|
805
750
|
skipSpaces(scnr);
|
|
@@ -808,10 +753,10 @@ function createTokenizer(source, options = {}) {
|
|
|
808
753
|
return readTokenInPlaceholder(scnr, context) || token;
|
|
809
754
|
}
|
|
810
755
|
else {
|
|
811
|
-
return getToken(context,
|
|
756
|
+
return getToken(context, 10 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));
|
|
812
757
|
}
|
|
813
758
|
}
|
|
814
|
-
if (currentType ===
|
|
759
|
+
if (currentType === 7 /* TokenTypes.LinkedAlias */) {
|
|
815
760
|
emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
|
|
816
761
|
}
|
|
817
762
|
context.braceNest = 0;
|
|
@@ -821,7 +766,7 @@ function createTokenizer(source, options = {}) {
|
|
|
821
766
|
}
|
|
822
767
|
// TODO: We need refactoring of token parsing ...
|
|
823
768
|
function readToken(scnr, context) {
|
|
824
|
-
let token = { type:
|
|
769
|
+
let token = { type: 13 /* TokenTypes.EOF */ };
|
|
825
770
|
if (context.braceNest > 0) {
|
|
826
771
|
return readTokenInPlaceholder(scnr, context) || getEndToken(context);
|
|
827
772
|
}
|
|
@@ -846,12 +791,6 @@ function createTokenizer(source, options = {}) {
|
|
|
846
791
|
context.inLinked = false;
|
|
847
792
|
return token;
|
|
848
793
|
}
|
|
849
|
-
const { isModulo, hasSpace } = detectModuloStart(scnr);
|
|
850
|
-
if (isModulo) {
|
|
851
|
-
return hasSpace
|
|
852
|
-
? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))
|
|
853
|
-
: getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));
|
|
854
|
-
}
|
|
855
794
|
if (isTextStart(scnr)) {
|
|
856
795
|
return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));
|
|
857
796
|
}
|
|
@@ -869,7 +808,7 @@ function createTokenizer(source, options = {}) {
|
|
|
869
808
|
_context.offset = currentOffset();
|
|
870
809
|
_context.startLoc = currentPosition();
|
|
871
810
|
if (_scnr.currentChar() === EOF) {
|
|
872
|
-
return getToken(_context,
|
|
811
|
+
return getToken(_context, 13 /* TokenTypes.EOF */);
|
|
873
812
|
}
|
|
874
813
|
return readToken(_scnr, _context);
|
|
875
814
|
}
|
|
@@ -905,7 +844,7 @@ function fromEscapeSequence(match, codePoint4, codePoint6) {
|
|
|
905
844
|
}
|
|
906
845
|
function createParser(options = {}) {
|
|
907
846
|
const location = options.location !== false;
|
|
908
|
-
const { onError
|
|
847
|
+
const { onError } = options;
|
|
909
848
|
function emitError(tokenzer, code, start, offset, ...args) {
|
|
910
849
|
const end = tokenzer.currentPosition();
|
|
911
850
|
end.offset += offset;
|
|
@@ -919,15 +858,6 @@ function createParser(options = {}) {
|
|
|
919
858
|
onError(err);
|
|
920
859
|
}
|
|
921
860
|
}
|
|
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
|
-
}
|
|
931
861
|
function startNode(type, offset, loc) {
|
|
932
862
|
const node = { type };
|
|
933
863
|
if (location) {
|
|
@@ -964,14 +894,11 @@ function createParser(options = {}) {
|
|
|
964
894
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
965
895
|
return node;
|
|
966
896
|
}
|
|
967
|
-
function parseNamed(tokenizer, key
|
|
897
|
+
function parseNamed(tokenizer, key) {
|
|
968
898
|
const context = tokenizer.context();
|
|
969
899
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
|
|
970
900
|
const node = startNode(4 /* NodeTypes.Named */, offset, loc);
|
|
971
901
|
node.key = key;
|
|
972
|
-
if (modulo === true) {
|
|
973
|
-
node.modulo = true;
|
|
974
|
-
}
|
|
975
902
|
tokenizer.nextToken(); // skip brach right
|
|
976
903
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
977
904
|
return node;
|
|
@@ -990,7 +917,7 @@ function createParser(options = {}) {
|
|
|
990
917
|
const context = tokenizer.context();
|
|
991
918
|
const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc
|
|
992
919
|
const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);
|
|
993
|
-
if (token.type !==
|
|
920
|
+
if (token.type !== 11 /* TokenTypes.LinkedModifier */) {
|
|
994
921
|
// empty modifier
|
|
995
922
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
|
|
996
923
|
node.value = '';
|
|
@@ -1021,13 +948,13 @@ function createParser(options = {}) {
|
|
|
1021
948
|
const context = tokenizer.context();
|
|
1022
949
|
const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);
|
|
1023
950
|
let token = tokenizer.nextToken();
|
|
1024
|
-
if (token.type ===
|
|
951
|
+
if (token.type === 8 /* TokenTypes.LinkedDot */) {
|
|
1025
952
|
const parsed = parseLinkedModifier(tokenizer);
|
|
1026
953
|
linkedNode.modifier = parsed.node;
|
|
1027
954
|
token = parsed.nextConsumeToken || tokenizer.nextToken();
|
|
1028
955
|
}
|
|
1029
956
|
// asset check token
|
|
1030
|
-
if (token.type !==
|
|
957
|
+
if (token.type !== 9 /* TokenTypes.LinkedDelimiter */) {
|
|
1031
958
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1032
959
|
}
|
|
1033
960
|
token = tokenizer.nextToken();
|
|
@@ -1036,25 +963,25 @@ function createParser(options = {}) {
|
|
|
1036
963
|
token = tokenizer.nextToken();
|
|
1037
964
|
}
|
|
1038
965
|
switch (token.type) {
|
|
1039
|
-
case
|
|
966
|
+
case 10 /* TokenTypes.LinkedKey */:
|
|
1040
967
|
if (token.value == null) {
|
|
1041
968
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1042
969
|
}
|
|
1043
970
|
linkedNode.key = parseLinkedKey(tokenizer, token.value || '');
|
|
1044
971
|
break;
|
|
1045
|
-
case
|
|
972
|
+
case 4 /* TokenTypes.Named */:
|
|
1046
973
|
if (token.value == null) {
|
|
1047
974
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1048
975
|
}
|
|
1049
976
|
linkedNode.key = parseNamed(tokenizer, token.value || '');
|
|
1050
977
|
break;
|
|
1051
|
-
case
|
|
978
|
+
case 5 /* TokenTypes.List */:
|
|
1052
979
|
if (token.value == null) {
|
|
1053
980
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1054
981
|
}
|
|
1055
982
|
linkedNode.key = parseList(tokenizer, token.value || '');
|
|
1056
983
|
break;
|
|
1057
|
-
case
|
|
984
|
+
case 6 /* TokenTypes.Literal */:
|
|
1058
985
|
if (token.value == null) {
|
|
1059
986
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1060
987
|
}
|
|
@@ -1091,7 +1018,6 @@ function createParser(options = {}) {
|
|
|
1091
1018
|
const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
|
|
1092
1019
|
node.items = [];
|
|
1093
1020
|
let nextToken = null;
|
|
1094
|
-
let modulo = null;
|
|
1095
1021
|
do {
|
|
1096
1022
|
const token = nextToken || tokenizer.nextToken();
|
|
1097
1023
|
nextToken = null;
|
|
@@ -1102,39 +1028,32 @@ function createParser(options = {}) {
|
|
|
1102
1028
|
}
|
|
1103
1029
|
node.items.push(parseText(tokenizer, token.value || ''));
|
|
1104
1030
|
break;
|
|
1105
|
-
case
|
|
1031
|
+
case 5 /* TokenTypes.List */:
|
|
1106
1032
|
if (token.value == null) {
|
|
1107
1033
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1108
1034
|
}
|
|
1109
1035
|
node.items.push(parseList(tokenizer, token.value || ''));
|
|
1110
1036
|
break;
|
|
1111
|
-
case 4 /* TokenTypes.
|
|
1112
|
-
modulo = true;
|
|
1113
|
-
break;
|
|
1114
|
-
case 5 /* TokenTypes.Named */:
|
|
1037
|
+
case 4 /* TokenTypes.Named */:
|
|
1115
1038
|
if (token.value == null) {
|
|
1116
1039
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1117
1040
|
}
|
|
1118
|
-
node.items.push(parseNamed(tokenizer, token.value || ''
|
|
1119
|
-
if (modulo) {
|
|
1120
|
-
emitWarn(tokenizer, CompileWarnCodes.USE_MODULO_SYNTAX, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1121
|
-
modulo = null;
|
|
1122
|
-
}
|
|
1041
|
+
node.items.push(parseNamed(tokenizer, token.value || ''));
|
|
1123
1042
|
break;
|
|
1124
|
-
case
|
|
1043
|
+
case 6 /* TokenTypes.Literal */:
|
|
1125
1044
|
if (token.value == null) {
|
|
1126
1045
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
|
|
1127
1046
|
}
|
|
1128
1047
|
node.items.push(parseLiteral(tokenizer, token.value || ''));
|
|
1129
1048
|
break;
|
|
1130
|
-
case
|
|
1049
|
+
case 7 /* TokenTypes.LinkedAlias */: {
|
|
1131
1050
|
const parsed = parseLinked(tokenizer);
|
|
1132
1051
|
node.items.push(parsed.node);
|
|
1133
1052
|
nextToken = parsed.nextConsumeToken || null;
|
|
1134
1053
|
break;
|
|
1135
1054
|
}
|
|
1136
1055
|
}
|
|
1137
|
-
} while (context.currentType !==
|
|
1056
|
+
} while (context.currentType !== 13 /* TokenTypes.EOF */ &&
|
|
1138
1057
|
context.currentType !== 1 /* TokenTypes.Pipe */);
|
|
1139
1058
|
// adjust message node loc
|
|
1140
1059
|
const endOffset = context.currentType === 1 /* TokenTypes.Pipe */
|
|
@@ -1158,7 +1077,7 @@ function createParser(options = {}) {
|
|
|
1158
1077
|
hasEmptyMessage = msg.items.length === 0;
|
|
1159
1078
|
}
|
|
1160
1079
|
node.cases.push(msg);
|
|
1161
|
-
} while (context.currentType !==
|
|
1080
|
+
} while (context.currentType !== 13 /* TokenTypes.EOF */);
|
|
1162
1081
|
if (hasEmptyMessage) {
|
|
1163
1082
|
emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
|
|
1164
1083
|
}
|
|
@@ -1169,7 +1088,7 @@ function createParser(options = {}) {
|
|
|
1169
1088
|
const context = tokenizer.context();
|
|
1170
1089
|
const { offset, startLoc } = context;
|
|
1171
1090
|
const msgNode = parseMessage(tokenizer);
|
|
1172
|
-
if (context.currentType ===
|
|
1091
|
+
if (context.currentType === 13 /* TokenTypes.EOF */) {
|
|
1173
1092
|
return msgNode;
|
|
1174
1093
|
}
|
|
1175
1094
|
else {
|
|
@@ -1188,7 +1107,7 @@ function createParser(options = {}) {
|
|
|
1188
1107
|
node.cacheKey = options.onCacheKey(source);
|
|
1189
1108
|
}
|
|
1190
1109
|
// assert whether achieved to EOF
|
|
1191
|
-
if (context.currentType !==
|
|
1110
|
+
if (context.currentType !== 13 /* TokenTypes.EOF */) {
|
|
1192
1111
|
emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');
|
|
1193
1112
|
}
|
|
1194
1113
|
endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
|
|
@@ -1197,7 +1116,7 @@ function createParser(options = {}) {
|
|
|
1197
1116
|
return { parse };
|
|
1198
1117
|
}
|
|
1199
1118
|
function getTokenCaption(token) {
|
|
1200
|
-
if (token.type ===
|
|
1119
|
+
if (token.type === 13 /* TokenTypes.EOF */) {
|
|
1201
1120
|
return 'EOF';
|
|
1202
1121
|
}
|
|
1203
1122
|
const name = (token.value || '').replace(/\r?\n/gu, '\\n');
|
|
@@ -1535,8 +1454,7 @@ function generateNode(generator, node) {
|
|
|
1535
1454
|
}
|
|
1536
1455
|
}
|
|
1537
1456
|
// generate code from AST
|
|
1538
|
-
const generate = (ast, options = {}
|
|
1539
|
-
) => {
|
|
1457
|
+
const generate = (ast, options = {}) => {
|
|
1540
1458
|
const mode = isString(options.mode) ? options.mode : 'normal';
|
|
1541
1459
|
const filename = isString(options.filename)
|
|
1542
1460
|
? options.filename
|
|
@@ -1600,4 +1518,4 @@ function baseCompile(source, options = {}) {
|
|
|
1600
1518
|
}
|
|
1601
1519
|
}
|
|
1602
1520
|
|
|
1603
|
-
export { CompileErrorCodes,
|
|
1521
|
+
export { CompileErrorCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };
|