@intlify/message-compiler 9.3.0-beta.24 → 9.3.0-beta.25
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 +78 -3
- package/dist/message-compiler.d.ts +14 -0
- package/dist/message-compiler.esm-browser.js +78 -3
- package/dist/message-compiler.esm-browser.prod.js +2 -2
- package/dist/message-compiler.global.js +78 -3
- package/dist/message-compiler.global.prod.js +2 -2
- package/dist/message-compiler.mjs +78 -3
- package/dist/message-compiler.node.mjs +78 -3
- package/dist/message-compiler.prod.cjs +74 -3
- package/package.json +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1229,6 +1229,78 @@ function optimizeMessageNode(message) {
|
|
|
1229
1229
|
}
|
|
1230
1230
|
}
|
|
1231
1231
|
|
|
1232
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1233
|
+
function minify(node) {
|
|
1234
|
+
node.t = node.type;
|
|
1235
|
+
switch (node.type) {
|
|
1236
|
+
case 0 /* NodeTypes.Resource */:
|
|
1237
|
+
const resource = node;
|
|
1238
|
+
minify(resource.body);
|
|
1239
|
+
resource.b = resource.body;
|
|
1240
|
+
delete resource.body;
|
|
1241
|
+
break;
|
|
1242
|
+
case 1 /* NodeTypes.Plural */:
|
|
1243
|
+
const plural = node;
|
|
1244
|
+
const cases = plural.cases;
|
|
1245
|
+
for (let i = 0; i < cases.length; i++) {
|
|
1246
|
+
minify(cases[i]);
|
|
1247
|
+
}
|
|
1248
|
+
plural.c = cases;
|
|
1249
|
+
delete plural.cases;
|
|
1250
|
+
break;
|
|
1251
|
+
case 2 /* NodeTypes.Message */:
|
|
1252
|
+
const message = node;
|
|
1253
|
+
const items = message.items;
|
|
1254
|
+
for (let i = 0; i < items.length; i++) {
|
|
1255
|
+
minify(items[i]);
|
|
1256
|
+
}
|
|
1257
|
+
message.i = items;
|
|
1258
|
+
delete message.items;
|
|
1259
|
+
if (message.static) {
|
|
1260
|
+
message.s = message.static;
|
|
1261
|
+
delete message.static;
|
|
1262
|
+
}
|
|
1263
|
+
break;
|
|
1264
|
+
case 3 /* NodeTypes.Text */:
|
|
1265
|
+
case 9 /* NodeTypes.Literal */:
|
|
1266
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1267
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1268
|
+
const valueNode = node;
|
|
1269
|
+
if (valueNode.value) {
|
|
1270
|
+
valueNode.v = valueNode.value;
|
|
1271
|
+
delete valueNode.value;
|
|
1272
|
+
}
|
|
1273
|
+
break;
|
|
1274
|
+
case 6 /* NodeTypes.Linked */:
|
|
1275
|
+
const linked = node;
|
|
1276
|
+
minify(linked.key);
|
|
1277
|
+
linked.k = linked.key;
|
|
1278
|
+
delete linked.key;
|
|
1279
|
+
if (linked.modifier) {
|
|
1280
|
+
minify(linked.modifier);
|
|
1281
|
+
linked.m = linked.modifier;
|
|
1282
|
+
delete linked.modifier;
|
|
1283
|
+
}
|
|
1284
|
+
break;
|
|
1285
|
+
case 5 /* NodeTypes.List */:
|
|
1286
|
+
const list = node;
|
|
1287
|
+
list.i = list.index;
|
|
1288
|
+
delete list.index;
|
|
1289
|
+
break;
|
|
1290
|
+
case 4 /* NodeTypes.Named */:
|
|
1291
|
+
const named = node;
|
|
1292
|
+
named.k = named.key;
|
|
1293
|
+
delete named.key;
|
|
1294
|
+
break;
|
|
1295
|
+
default:
|
|
1296
|
+
{
|
|
1297
|
+
throw new Error(`unhandled minify node type: ${node.type}`);
|
|
1298
|
+
}
|
|
1299
|
+
}
|
|
1300
|
+
delete node.type;
|
|
1301
|
+
}
|
|
1302
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1303
|
+
|
|
1232
1304
|
function createCodeGenerator(ast, options) {
|
|
1233
1305
|
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1234
1306
|
const location = options.location !== false;
|
|
@@ -1471,7 +1543,8 @@ function advancePositionWithSource(pos, source, numberOfCharacters = source.leng
|
|
|
1471
1543
|
function baseCompile(source, options = {}) {
|
|
1472
1544
|
const assignedOptions = shared.assign({}, options);
|
|
1473
1545
|
const jit = !!assignedOptions.jit;
|
|
1474
|
-
const
|
|
1546
|
+
const enalbeMinify = !!assignedOptions.minify;
|
|
1547
|
+
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1475
1548
|
// parse source codes
|
|
1476
1549
|
const parser = createParser(assignedOptions);
|
|
1477
1550
|
const ast = parser.parse(source);
|
|
@@ -1483,7 +1556,9 @@ function baseCompile(source, options = {}) {
|
|
|
1483
1556
|
}
|
|
1484
1557
|
else {
|
|
1485
1558
|
// optimize ASTs
|
|
1486
|
-
|
|
1559
|
+
enambeOptimize && optimize(ast);
|
|
1560
|
+
// minimize ASTs
|
|
1561
|
+
enalbeMinify && minify(ast);
|
|
1487
1562
|
// In JIT mode, no ast transform, no code generation.
|
|
1488
1563
|
return { ast, code: '' };
|
|
1489
1564
|
}
|
|
@@ -52,6 +52,7 @@ export declare type CompileErrorHandler = (error: CompileError) => void;
|
|
|
52
52
|
|
|
53
53
|
export declare type CompileOptions = {
|
|
54
54
|
optimize?: boolean;
|
|
55
|
+
minify?: boolean;
|
|
55
56
|
jit?: boolean;
|
|
56
57
|
} & TransformOptions & CodeGenOptions & ParserOptions & TokenizeOptions;
|
|
57
58
|
|
|
@@ -97,27 +98,33 @@ export declare type Identifier = string;
|
|
|
97
98
|
export declare interface LinkedKeyNode extends Node_2 {
|
|
98
99
|
type: NodeTypes.LinkedKey;
|
|
99
100
|
value: string;
|
|
101
|
+
/* Excluded from this release type: v */
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
export declare interface LinkedModifierNode extends Node_2 {
|
|
103
105
|
type: NodeTypes.LinkedModifier;
|
|
104
106
|
value: Identifier;
|
|
107
|
+
/* Excluded from this release type: v */
|
|
105
108
|
}
|
|
106
109
|
|
|
107
110
|
export declare interface LinkedNode extends Node_2 {
|
|
108
111
|
type: NodeTypes.Linked;
|
|
109
112
|
modifier?: LinkedModifierNode;
|
|
113
|
+
/* Excluded from this release type: m */
|
|
110
114
|
key: LinkedKeyNode | NamedNode | ListNode | LiteralNode;
|
|
115
|
+
/* Excluded from this release type: k */
|
|
111
116
|
}
|
|
112
117
|
|
|
113
118
|
export declare interface ListNode extends Node_2 {
|
|
114
119
|
type: NodeTypes.List;
|
|
115
120
|
index: number;
|
|
121
|
+
/* Excluded from this release type: i */
|
|
116
122
|
}
|
|
117
123
|
|
|
118
124
|
export declare interface LiteralNode extends Node_2 {
|
|
119
125
|
type: NodeTypes.Literal;
|
|
120
126
|
value?: string;
|
|
127
|
+
/* Excluded from this release type: v */
|
|
121
128
|
}
|
|
122
129
|
|
|
123
130
|
export declare const LOCATION_STUB: SourceLocation;
|
|
@@ -127,16 +134,20 @@ declare type MessageElementNode = TextNode | NamedNode | ListNode | LiteralNode
|
|
|
127
134
|
export declare interface MessageNode extends Node_2 {
|
|
128
135
|
type: NodeTypes.Message;
|
|
129
136
|
static?: string;
|
|
137
|
+
/* Excluded from this release type: s */
|
|
130
138
|
items: MessageElementNode[];
|
|
139
|
+
/* Excluded from this release type: i */
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
export declare interface NamedNode extends Node_2 {
|
|
134
143
|
type: NodeTypes.Named;
|
|
135
144
|
key: Identifier;
|
|
145
|
+
/* Excluded from this release type: k */
|
|
136
146
|
}
|
|
137
147
|
|
|
138
148
|
declare interface Node_2 {
|
|
139
149
|
type: NodeTypes;
|
|
150
|
+
/* Excluded from this release type: t */
|
|
140
151
|
start?: number;
|
|
141
152
|
end?: number;
|
|
142
153
|
loc?: SourceLocation;
|
|
@@ -169,6 +180,7 @@ export declare interface ParserOptions {
|
|
|
169
180
|
export declare interface PluralNode extends Node_2 {
|
|
170
181
|
type: NodeTypes.Plural;
|
|
171
182
|
cases: MessageNode[];
|
|
183
|
+
/* Excluded from this release type: c */
|
|
172
184
|
}
|
|
173
185
|
|
|
174
186
|
export declare interface Position {
|
|
@@ -180,6 +192,7 @@ export declare interface Position {
|
|
|
180
192
|
export declare interface ResourceNode extends Node_2 {
|
|
181
193
|
type: NodeTypes.Resource;
|
|
182
194
|
body: MessageNode | PluralNode;
|
|
195
|
+
/* Excluded from this release type: b */
|
|
183
196
|
cacheKey?: string;
|
|
184
197
|
helpers?: string[];
|
|
185
198
|
}
|
|
@@ -193,6 +206,7 @@ export declare interface SourceLocation {
|
|
|
193
206
|
export declare interface TextNode extends Node_2 {
|
|
194
207
|
type: NodeTypes.Text;
|
|
195
208
|
value?: string;
|
|
209
|
+
/* Excluded from this release type: v */
|
|
196
210
|
}
|
|
197
211
|
|
|
198
212
|
export declare interface TokenizeOptions {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1249,6 +1249,78 @@ function optimizeMessageNode(message) {
|
|
|
1249
1249
|
}
|
|
1250
1250
|
}
|
|
1251
1251
|
|
|
1252
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1253
|
+
function minify(node) {
|
|
1254
|
+
node.t = node.type;
|
|
1255
|
+
switch (node.type) {
|
|
1256
|
+
case 0 /* NodeTypes.Resource */:
|
|
1257
|
+
const resource = node;
|
|
1258
|
+
minify(resource.body);
|
|
1259
|
+
resource.b = resource.body;
|
|
1260
|
+
delete resource.body;
|
|
1261
|
+
break;
|
|
1262
|
+
case 1 /* NodeTypes.Plural */:
|
|
1263
|
+
const plural = node;
|
|
1264
|
+
const cases = plural.cases;
|
|
1265
|
+
for (let i = 0; i < cases.length; i++) {
|
|
1266
|
+
minify(cases[i]);
|
|
1267
|
+
}
|
|
1268
|
+
plural.c = cases;
|
|
1269
|
+
delete plural.cases;
|
|
1270
|
+
break;
|
|
1271
|
+
case 2 /* NodeTypes.Message */:
|
|
1272
|
+
const message = node;
|
|
1273
|
+
const items = message.items;
|
|
1274
|
+
for (let i = 0; i < items.length; i++) {
|
|
1275
|
+
minify(items[i]);
|
|
1276
|
+
}
|
|
1277
|
+
message.i = items;
|
|
1278
|
+
delete message.items;
|
|
1279
|
+
if (message.static) {
|
|
1280
|
+
message.s = message.static;
|
|
1281
|
+
delete message.static;
|
|
1282
|
+
}
|
|
1283
|
+
break;
|
|
1284
|
+
case 3 /* NodeTypes.Text */:
|
|
1285
|
+
case 9 /* NodeTypes.Literal */:
|
|
1286
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1287
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1288
|
+
const valueNode = node;
|
|
1289
|
+
if (valueNode.value) {
|
|
1290
|
+
valueNode.v = valueNode.value;
|
|
1291
|
+
delete valueNode.value;
|
|
1292
|
+
}
|
|
1293
|
+
break;
|
|
1294
|
+
case 6 /* NodeTypes.Linked */:
|
|
1295
|
+
const linked = node;
|
|
1296
|
+
minify(linked.key);
|
|
1297
|
+
linked.k = linked.key;
|
|
1298
|
+
delete linked.key;
|
|
1299
|
+
if (linked.modifier) {
|
|
1300
|
+
minify(linked.modifier);
|
|
1301
|
+
linked.m = linked.modifier;
|
|
1302
|
+
delete linked.modifier;
|
|
1303
|
+
}
|
|
1304
|
+
break;
|
|
1305
|
+
case 5 /* NodeTypes.List */:
|
|
1306
|
+
const list = node;
|
|
1307
|
+
list.i = list.index;
|
|
1308
|
+
delete list.index;
|
|
1309
|
+
break;
|
|
1310
|
+
case 4 /* NodeTypes.Named */:
|
|
1311
|
+
const named = node;
|
|
1312
|
+
named.k = named.key;
|
|
1313
|
+
delete named.key;
|
|
1314
|
+
break;
|
|
1315
|
+
default:
|
|
1316
|
+
{
|
|
1317
|
+
throw new Error(`unhandled minify node type: ${node.type}`);
|
|
1318
|
+
}
|
|
1319
|
+
}
|
|
1320
|
+
delete node.type;
|
|
1321
|
+
}
|
|
1322
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1323
|
+
|
|
1252
1324
|
function createCodeGenerator(ast, options) {
|
|
1253
1325
|
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1254
1326
|
const location = options.location !== false;
|
|
@@ -1435,7 +1507,8 @@ const generate = (ast, options = {} // eslint-disable-line
|
|
|
1435
1507
|
function baseCompile(source, options = {}) {
|
|
1436
1508
|
const assignedOptions = assign({}, options);
|
|
1437
1509
|
const jit = !!assignedOptions.jit;
|
|
1438
|
-
const
|
|
1510
|
+
const enalbeMinify = !!assignedOptions.minify;
|
|
1511
|
+
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1439
1512
|
// parse source codes
|
|
1440
1513
|
const parser = createParser(assignedOptions);
|
|
1441
1514
|
const ast = parser.parse(source);
|
|
@@ -1447,7 +1520,9 @@ function baseCompile(source, options = {}) {
|
|
|
1447
1520
|
}
|
|
1448
1521
|
else {
|
|
1449
1522
|
// optimize ASTs
|
|
1450
|
-
|
|
1523
|
+
enambeOptimize && optimize(ast);
|
|
1524
|
+
// minimize ASTs
|
|
1525
|
+
enalbeMinify && minify(ast);
|
|
1451
1526
|
// In JIT mode, no ast transform, no code generation.
|
|
1452
1527
|
return { ast, code: '' };
|
|
1453
1528
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
const LOCATION_STUB={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function createPosition(e,t,r){return{line:e,column:t,offset:r}}function createLocation(e,t,r){const n={start:e,end:t};return null!=r&&(n.source=r),n}const assign=Object.assign,isString=e=>"string"==typeof e;function join(e,t=""){return e.reduce(((e,r,n)=>0===n?e+r:e+t+r),"")}const CompileErrorCodes={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,__EXTEND_POINT__:15},errorMessages={[CompileErrorCodes.EXPECTED_TOKEN]:"Expected token: '{0}'",[CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[CompileErrorCodes.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[CompileErrorCodes.EMPTY_PLACEHOLDER]:"Empty placeholder",[CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[CompileErrorCodes.INVALID_LINKED_FORMAT]:"Invalid linked format",[CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'"};function createCompileError(e,t,r={}){const{domain:n,messages:o,args:s}=r,c=new SyntaxError(String(e));return c.code=e,t&&(c.location=t),c.domain=n,c}function defaultOnError(e){throw e}const RE_HTML_TAG=/<\/?[\w\s="/.':;#-\/]+>/,detectHtmlTag=e=>RE_HTML_TAG.test(e),CHAR_SP=" ",CHAR_CR="\r",CHAR_LF="\n",CHAR_LS=String.fromCharCode(8232),CHAR_PS=String.fromCharCode(8233);function createScanner(e){const t=e;let r=0,n=1,o=1,s=0;const c=e=>t[e]===CHAR_CR&&t[e+1]===CHAR_LF,a=e=>t[e]===CHAR_PS,u=e=>t[e]===CHAR_LS,i=e=>c(e)||(e=>t[e]===CHAR_LF)(e)||a(e)||u(e),l=e=>c(e)||a(e)||u(e)?CHAR_LF:t[e];function E(){return s=0,i(r)&&(n++,o=0),c(r)&&r++,r++,o++,t[r]}return{index:()=>r,line:()=>n,column:()=>o,peekOffset:()=>s,charAt:l,currentChar:()=>l(r),currentPeek:()=>l(r+s),next:E,peek:function(){return c(r+s)&&s++,s++,t[r+s]},reset:function(){r=0,n=1,o=1,s=0},resetPeek:function(e=0){s=e},skipToPeek:function(){const e=r+s;for(;e!==r;)E();s=0}}}const EOF=void 0,LITERAL_DELIMITER="'",ERROR_DOMAIN$1="tokenizer";function createTokenizer(e,t={}){const r=!1!==t.location,n=createScanner(e),o=()=>n.index(),s=()=>createPosition(n.line(),n.column(),n.index()),c=s(),a=o(),u={currentType:14,offset:a,startLoc:c,endLoc:c,lastType:14,lastOffset:a,lastStartLoc:c,lastEndLoc:c,braceNest:0,inLinked:!1,text:""},i=()=>u,{onError:l}=t;function E(e,t,n){e.endLoc=s(),e.currentType=t;const o={type:t};return r&&(o.loc=createLocation(e.startLoc,e.endLoc)),null!=n&&(o.value=n),o}const C=e=>E(e,14);function f(e,t){return e.currentChar()===t?(e.next(),t):(CompileErrorCodes.EXPECTED_TOKEN,s(),"")}function d(e){let t="";for(;e.currentPeek()===CHAR_SP||e.currentPeek()===CHAR_LF;)t+=e.currentPeek(),e.peek();return t}function p(e){const t=d(e);return e.skipToPeek(),t}function L(e){if(e===EOF)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function _(e,t){const{currentType:r}=t;if(2!==r)return!1;d(e);const n=function(e){if(e===EOF)return!1;const t=e.charCodeAt(0);return t>=48&&t<=57}("-"===e.currentPeek()?e.peek():e.currentPeek());return e.resetPeek(),n}function N(e){d(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function A(e,t=!0){const r=(t=!1,n="",o=!1)=>{const s=e.currentPeek();return"{"===s?"%"!==n&&t:"@"!==s&&s?"%"===s?(e.peek(),r(t,"%",!0)):"|"===s?!("%"!==n&&!o)||!(n===CHAR_SP||n===CHAR_LF):s===CHAR_SP?(e.peek(),r(!0,CHAR_SP,o)):s!==CHAR_LF||(e.peek(),r(!0,CHAR_LF,o)):"%"===n||t},n=r();return t&&e.resetPeek(),n}function T(e,t){const r=e.currentChar();return r===EOF?EOF:t(r)?(e.next(),r):null}function m(e){return T(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 k(e){return T(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function I(e){return T(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function S(e){let t="",r="";for(;t=k(e);)r+=t;return r}function P(e){let t="";for(;;){const r=e.currentChar();if("{"===r||"}"===r||"@"===r||"|"===r||!r)break;if("%"===r){if(!A(e))break;t+=r,e.next()}else if(r===CHAR_SP||r===CHAR_LF)if(A(e))t+=r,e.next();else{if(N(e))break;t+=r,e.next()}else t+=r,e.next()}return t}function h(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return O(e,t,4);case"U":return O(e,t,6);default:return CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE,s(),""}}function O(e,t,r){f(e,t);let n="";for(let o=0;o<r;o++){const t=I(e);if(!t){CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE,s(),e.currentChar();break}n+=t}return`\\${t}${n}`}function R(e){p(e);const t=f(e,"|");return p(e),t}function D(e,t){let r=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER,s()),e.next(),r=E(t,2,"{"),p(e),t.braceNest++,r;case"}":return t.braceNest>0&&2===t.currentType&&(CompileErrorCodes.EMPTY_PLACEHOLDER,s()),e.next(),r=E(t,3,"}"),t.braceNest--,t.braceNest>0&&p(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),r;case"@":return t.braceNest>0&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),r=y(e,t)||C(t),t.braceNest=0,r;default:let n=!0,o=!0,c=!0;if(N(e))return t.braceNest>0&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),r=E(t,1,R(e)),t.braceNest=0,t.inLinked=!1,r;if(t.braceNest>0&&(5===t.currentType||6===t.currentType||7===t.currentType))return CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s(),t.braceNest=0,g(e,t);if(n=function(e,t){const{currentType:r}=t;if(2!==r)return!1;d(e);const n=L(e.currentPeek());return e.resetPeek(),n}(e,t))return r=E(t,5,function(e){p(e);let t="",r="";for(;t=m(e);)r+=t;return e.currentChar()===EOF&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),r}(e)),p(e),r;if(o=_(e,t))return r=E(t,6,function(e){p(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${S(e)}`):t+=S(e),e.currentChar()===EOF&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),t}(e)),p(e),r;if(c=function(e,t){const{currentType:r}=t;if(2!==r)return!1;d(e);const n=e.currentPeek()===LITERAL_DELIMITER;return e.resetPeek(),n}(e,t))return r=E(t,7,function(e){p(e),f(e,"'");let t="",r="";const n=e=>e!==LITERAL_DELIMITER&&e!==CHAR_LF;for(;t=T(e,n);)r+="\\"===t?h(e):t;const o=e.currentChar();return o===CHAR_LF||o===EOF?(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,s(),o===CHAR_LF&&(e.next(),f(e,"'")),r):(f(e,"'"),r)}(e)),p(e),r;if(!n&&!o&&!c)return r=E(t,13,function(e){p(e);let t="",r="";const n=e=>"{"!==e&&"}"!==e&&e!==CHAR_SP&&e!==CHAR_LF;for(;t=T(e,n);)r+=t;return r}(e)),CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER,s(),r.value,p(e),r}return r}function y(e,t){const{currentType:r}=t;let n=null;const o=e.currentChar();switch(8!==r&&9!==r&&12!==r&&10!==r||o!==CHAR_LF&&o!==CHAR_SP||(CompileErrorCodes.INVALID_LINKED_FORMAT,s()),o){case"@":return e.next(),n=E(t,8,"@"),t.inLinked=!0,n;case".":return p(e),e.next(),E(t,9,".");case":":return p(e),e.next(),E(t,10,":");default:return N(e)?(n=E(t,1,R(e)),t.braceNest=0,t.inLinked=!1,n):function(e,t){const{currentType:r}=t;if(8!==r)return!1;d(e);const n="."===e.currentPeek();return e.resetPeek(),n}(e,t)||function(e,t){const{currentType:r}=t;if(8!==r&&12!==r)return!1;d(e);const n=":"===e.currentPeek();return e.resetPeek(),n}(e,t)?(p(e),y(e,t)):function(e,t){const{currentType:r}=t;if(9!==r)return!1;d(e);const n=L(e.currentPeek());return e.resetPeek(),n}(e,t)?(p(e),E(t,12,function(e){let t="",r="";for(;t=m(e);)r+=t;return r}(e))):function(e,t){const{currentType:r}=t;if(10!==r)return!1;const n=()=>{const t=e.currentPeek();return"{"===t?L(e.peek()):!("@"===t||"%"===t||"|"===t||":"===t||"."===t||t===CHAR_SP||!t)&&(t===CHAR_LF?(e.peek(),n()):L(t))},o=n();return e.resetPeek(),o}(e,t)?(p(e),"{"===o?D(e,t)||n:E(t,11,function(e){const t=(r=!1,n)=>{const o=e.currentChar();return"{"!==o&&"%"!==o&&"@"!==o&&"|"!==o&&o?o===CHAR_SP?n:o===CHAR_LF?(n+=o,e.next(),t(r,n)):(n+=o,e.next(),t(!0,n)):n};return t(!1,"")}(e))):(8===r&&(CompileErrorCodes.INVALID_LINKED_FORMAT,s()),t.braceNest=0,t.inLinked=!1,g(e,t))}}function g(e,t){let r={type:14};if(t.braceNest>0)return D(e,t)||C(t);if(t.inLinked)return y(e,t)||C(t);switch(e.currentChar()){case"{":return D(e,t)||C(t);case"}":return CompileErrorCodes.UNBALANCED_CLOSING_BRACE,s(),e.next(),E(t,3,"}");case"@":return y(e,t)||C(t);default:if(N(e))return r=E(t,1,R(e)),t.braceNest=0,t.inLinked=!1,r;const{isModulo:n,hasSpace:o}=function(e){const t=d(e),r="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:r,hasSpace:t.length>0}}(e);if(n)return o?E(t,0,P(e)):E(t,4,function(e){p(e);const t=e.currentChar();return"%"!==t&&(CompileErrorCodes.EXPECTED_TOKEN,s()),e.next(),"%"}(e));if(A(e))return E(t,0,P(e))}return r}return{nextToken:function(){const{currentType:e,offset:t,startLoc:r,endLoc:c}=u;return u.lastType=e,u.lastOffset=t,u.lastStartLoc=r,u.lastEndLoc=c,u.offset=o(),u.startLoc=s(),n.currentChar()===EOF?E(u,14):g(n,u)},currentOffset:o,currentPosition:s,context:i}}const ERROR_DOMAIN="parser",KNOWN_ESCAPES=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function fromEscapeSequence(e,t,r){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const e=parseInt(t||r,16);return e<=55295||e>=57344?String.fromCodePoint(e):"�"}}}function createParser(e={}){const t=!1!==e.location,{onError:r}=e;function n(e,r,n){const o={type:e};return t&&(o.start=r,o.end=r,o.loc={start:n,end:n}),o}function o(e,r,n,o){o&&(e.type=o),t&&(e.end=r,e.loc&&(e.loc.end=n))}function s(e,t){const r=e.context(),s=n(3,r.offset,r.startLoc);return s.value=t,o(s,e.currentOffset(),e.currentPosition()),s}function c(e,t){const r=e.context(),{lastOffset:s,lastStartLoc:c}=r,a=n(5,s,c);return a.index=parseInt(t,10),e.nextToken(),o(a,e.currentOffset(),e.currentPosition()),a}function a(e,t){const r=e.context(),{lastOffset:s,lastStartLoc:c}=r,a=n(4,s,c);return a.key=t,e.nextToken(),o(a,e.currentOffset(),e.currentPosition()),a}function u(e,t){const r=e.context(),{lastOffset:s,lastStartLoc:c}=r,a=n(9,s,c);return a.value=t.replace(KNOWN_ESCAPES,fromEscapeSequence),e.nextToken(),o(a,e.currentOffset(),e.currentPosition()),a}function i(e){const t=e.context(),r=n(6,t.offset,t.startLoc);let s=e.nextToken();if(9===s.type){const t=function(e){const t=e.nextToken(),r=e.context(),{lastOffset:s,lastStartLoc:c}=r,a=n(8,s,c);return 12!==t.type?(CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER,r.lastStartLoc,a.value="",o(a,s,c),{nextConsumeToken:t,node:a}):(null==t.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,r.lastStartLoc,getTokenCaption(t)),a.value=t.value||"",o(a,e.currentOffset(),e.currentPosition()),{node:a})}(e);r.modifier=t.node,s=t.nextConsumeToken||e.nextToken()}switch(10!==s.type&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),s=e.nextToken(),2===s.type&&(s=e.nextToken()),s.type){case 11:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),r.key=function(e,t){const r=e.context(),s=n(7,r.offset,r.startLoc);return s.value=t,o(s,e.currentOffset(),e.currentPosition()),s}(e,s.value||"");break;case 5:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),r.key=a(e,s.value||"");break;case 6:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),r.key=c(e,s.value||"");break;case 7:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),r.key=u(e,s.value||"");break;default:CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc;const i=e.context(),l=n(7,i.offset,i.startLoc);return l.value="",o(l,i.offset,i.startLoc),r.key=l,o(r,i.offset,i.startLoc),{nextConsumeToken:s,node:r}}return o(r,e.currentOffset(),e.currentPosition()),{node:r}}function l(e){const t=e.context(),r=n(2,1===t.currentType?e.currentOffset():t.offset,1===t.currentType?t.endLoc:t.startLoc);r.items=[];let l=null;do{const n=l||e.nextToken();switch(l=null,n.type){case 0:null==n.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(n)),r.items.push(s(e,n.value||""));break;case 6:null==n.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(n)),r.items.push(c(e,n.value||""));break;case 5:null==n.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(n)),r.items.push(a(e,n.value||""));break;case 7:null==n.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(n)),r.items.push(u(e,n.value||""));break;case 8:const o=i(e);r.items.push(o.node),l=o.nextConsumeToken||null}}while(14!==t.currentType&&1!==t.currentType);return o(r,1===t.currentType?t.lastOffset:e.currentOffset(),1===t.currentType?t.lastEndLoc:e.currentPosition()),r}function E(e){const t=e.context(),{offset:r,startLoc:s}=t,c=l(e);return 14===t.currentType?c:function(e,t,r,s){const c=e.context();let a=0===s.items.length;const u=n(1,t,r);u.cases=[],u.cases.push(s);do{const t=l(e);a||(a=0===t.items.length),u.cases.push(t)}while(14!==c.currentType);return a&&CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL,o(u,e.currentOffset(),e.currentPosition()),u}(e,r,s,c)}return{parse:function(r){const s=createTokenizer(r,assign({},e)),c=s.context(),a=n(0,c.offset,c.startLoc);return t&&a.loc&&(a.loc.source=r),a.body=E(s),e.onCacheKey&&(a.cacheKey=e.onCacheKey(r)),14!==c.currentType&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,c.lastStartLoc,r[c.offset]),o(a,s.currentOffset(),s.currentPosition()),a}}}function getTokenCaption(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 createTransformer(e,t={}){const r={ast:e,helpers:new Set};return{context:()=>r,helper:e=>(r.helpers.add(e),e)}}function traverseNodes(e,t){for(let r=0;r<e.length;r++)traverseNode(e[r],t)}function traverseNode(e,t){switch(e.type){case 1:traverseNodes(e.cases,t),t.helper("plural");break;case 2:traverseNodes(e.items,t);break;case 6:traverseNode(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 transform(e,t={}){const r=createTransformer(e);r.helper("normalize"),e.body&&traverseNode(e.body,r);const n=r.context();e.helpers=Array.from(n.helpers)}function optimize(e){const t=e.body;return 2===t.type?optimizeMessageNode(t):t.cases.forEach((e=>optimizeMessageNode(e))),e}function optimizeMessageNode(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 r=0;r<e.items.length;r++){const n=e.items[r];if(3!==n.type&&9!==n.type)break;if(null==n.value)break;t.push(n.value)}if(t.length===e.items.length){e.static=join(t);for(let t=0;t<e.items.length;t++){const r=e.items[t];3!==r.type&&9!==r.type||delete r.value}}}}function createCodeGenerator(e,t){const{sourceMap:r,filename:n,breakLineCode:o,needIndent:s}=t,c=!1!==t.location,a={filename:n,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:o,needIndent:s,indentLevel:0};c&&e.loc&&(a.source=e.loc.source);function u(e,t){a.code+=e}function i(e,t=!0){const r=t?o:"";u(s?r+" ".repeat(e):r)}return{context:()=>a,push:u,indent:function(e=!0){const t=++a.indentLevel;e&&i(t)},deindent:function(e=!0){const t=--a.indentLevel;e&&i(t)},newline:function(){i(a.indentLevel)},helper:e=>`_${e}`,needIndent:()=>a.needIndent}}function generateLinkedNode(e,t){const{helper:r}=e;e.push(`${r("linked")}(`),generateNode(e,t.key),t.modifier?(e.push(", "),generateNode(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function generateMessageNode(e,t){const{helper:r,needIndent:n}=e;e.push(`${r("normalize")}([`),e.indent(n());const o=t.items.length;for(let s=0;s<o&&(generateNode(e,t.items[s]),s!==o-1);s++)e.push(", ");e.deindent(n()),e.push("])")}function generatePluralNode(e,t){const{helper:r,needIndent:n}=e;if(t.cases.length>1){e.push(`${r("plural")}([`),e.indent(n());const o=t.cases.length;for(let r=0;r<o&&(generateNode(e,t.cases[r]),r!==o-1);r++)e.push(", ");e.deindent(n()),e.push("])")}}function generateResource(e,t){t.body?generateNode(e,t.body):e.push("null")}function generateNode(e,t){const{helper:r}=e;switch(t.type){case 0:generateResource(e,t);break;case 1:generatePluralNode(e,t);break;case 2:generateMessageNode(e,t);break;case 6:generateLinkedNode(e,t);break;case 8:case 7:case 9:case 3:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${r("interpolate")}(${r("list")}(${t.index}))`,t);break;case 4:e.push(`${r("interpolate")}(${r("named")}(${JSON.stringify(t.key)}))`,t)}}const generate=(e,t={})=>{const r=isString(t.mode)?t.mode:"normal",n=isString(t.filename)?t.filename:"message.intl",o=!!t.sourceMap,s=null!=t.breakLineCode?t.breakLineCode:"arrow"===r?";":"\n",c=t.needIndent?t.needIndent:"arrow"!==r,a=e.helpers||[],u=createCodeGenerator(e,{mode:r,filename:n,sourceMap:o,breakLineCode:s,needIndent:c});u.push("normal"===r?"function __msg__ (ctx) {":"(ctx) => {"),u.indent(c),a.length>0&&(u.push(`const { ${join(a.map((e=>`${e}: _${e}`)),", ")} } = ctx`),u.newline()),u.push("return "),generateNode(u,e),u.deindent(c),u.push("}"),delete e.helpers;const{code:i,map:l}=u.context();return{ast:e,code:i,map:l?l.toJSON():void 0}};function baseCompile(e,t={}){const r=assign({},t),n=!!r.jit,o=null==r.optimize||r.optimize,s=createParser(r).parse(e);return n?(o&&optimize(s),{ast:s,code:""}):(transform(s,r),generate(s,r))}export{CompileErrorCodes,ERROR_DOMAIN,LOCATION_STUB,baseCompile,createCompileError,createLocation,createParser,createPosition,defaultOnError,detectHtmlTag,errorMessages};
|
|
6
|
+
const LOCATION_STUB={start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}};function createPosition(e,t,n){return{line:e,column:t,offset:n}}function createLocation(e,t,n){const r={start:e,end:t};return null!=n&&(r.source=n),r}const assign=Object.assign,isString=e=>"string"==typeof e;function join(e,t=""){return e.reduce(((e,n,r)=>0===r?e+n:e+t+n),"")}const CompileErrorCodes={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,__EXTEND_POINT__:15},errorMessages={[CompileErrorCodes.EXPECTED_TOKEN]:"Expected token: '{0}'",[CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[CompileErrorCodes.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[CompileErrorCodes.EMPTY_PLACEHOLDER]:"Empty placeholder",[CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[CompileErrorCodes.INVALID_LINKED_FORMAT]:"Invalid linked format",[CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'"};function createCompileError(e,t,n={}){const{domain:r,messages:o,args:s}=n,c=new SyntaxError(String(e));return c.code=e,t&&(c.location=t),c.domain=r,c}function defaultOnError(e){throw e}const RE_HTML_TAG=/<\/?[\w\s="/.':;#-\/]+>/,detectHtmlTag=e=>RE_HTML_TAG.test(e),CHAR_SP=" ",CHAR_CR="\r",CHAR_LF="\n",CHAR_LS=String.fromCharCode(8232),CHAR_PS=String.fromCharCode(8233);function createScanner(e){const t=e;let n=0,r=1,o=1,s=0;const c=e=>t[e]===CHAR_CR&&t[e+1]===CHAR_LF,i=e=>t[e]===CHAR_PS,a=e=>t[e]===CHAR_LS,u=e=>c(e)||(e=>t[e]===CHAR_LF)(e)||i(e)||a(e),l=e=>c(e)||i(e)||a(e)?CHAR_LF:t[e];function E(){return s=0,u(n)&&(r++,o=0),c(n)&&n++,n++,o++,t[n]}return{index:()=>n,line:()=>r,column:()=>o,peekOffset:()=>s,charAt:l,currentChar:()=>l(n),currentPeek:()=>l(n+s),next:E,peek:function(){return c(n+s)&&s++,s++,t[n+s]},reset:function(){n=0,r=1,o=1,s=0},resetPeek:function(e=0){s=e},skipToPeek:function(){const e=n+s;for(;e!==n;)E();s=0}}}const EOF=void 0,LITERAL_DELIMITER="'",ERROR_DOMAIN$1="tokenizer";function createTokenizer(e,t={}){const n=!1!==t.location,r=createScanner(e),o=()=>r.index(),s=()=>createPosition(r.line(),r.column(),r.index()),c=s(),i=o(),a={currentType:14,offset:i,startLoc:c,endLoc:c,lastType:14,lastOffset:i,lastStartLoc:c,lastEndLoc:c,braceNest:0,inLinked:!1,text:""},u=()=>a,{onError:l}=t;function E(e,t,r){e.endLoc=s(),e.currentType=t;const o={type:t};return n&&(o.loc=createLocation(e.startLoc,e.endLoc)),null!=r&&(o.value=r),o}const C=e=>E(e,14);function f(e,t){return e.currentChar()===t?(e.next(),t):(CompileErrorCodes.EXPECTED_TOKEN,s(),"")}function d(e){let t="";for(;e.currentPeek()===CHAR_SP||e.currentPeek()===CHAR_LF;)t+=e.currentPeek(),e.peek();return t}function p(e){const t=d(e);return e.skipToPeek(),t}function L(e){if(e===EOF)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function _(e,t){const{currentType:n}=t;if(2!==n)return!1;d(e);const r=function(e){if(e===EOF)return!1;const t=e.charCodeAt(0);return t>=48&&t<=57}("-"===e.currentPeek()?e.peek():e.currentPeek());return e.resetPeek(),r}function N(e){d(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function A(e,t=!0){const n=(t=!1,r="",o=!1)=>{const s=e.currentPeek();return"{"===s?"%"!==r&&t:"@"!==s&&s?"%"===s?(e.peek(),n(t,"%",!0)):"|"===s?!("%"!==r&&!o)||!(r===CHAR_SP||r===CHAR_LF):s===CHAR_SP?(e.peek(),n(!0,CHAR_SP,o)):s!==CHAR_LF||(e.peek(),n(!0,CHAR_LF,o)):"%"===r||t},r=n();return t&&e.resetPeek(),r}function T(e,t){const n=e.currentChar();return n===EOF?EOF:t(n)?(e.next(),n):null}function m(e){return T(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 k(e){return T(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function I(e){return T(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function S(e){let t="",n="";for(;t=k(e);)n+=t;return n}function P(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if("%"===n){if(!A(e))break;t+=n,e.next()}else if(n===CHAR_SP||n===CHAR_LF)if(A(e))t+=n,e.next();else{if(N(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function h(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return O(e,t,4);case"U":return O(e,t,6);default:return CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE,s(),""}}function O(e,t,n){f(e,t);let r="";for(let o=0;o<n;o++){const t=I(e);if(!t){CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE,s(),e.currentChar();break}r+=t}return`\\${t}${r}`}function y(e){p(e);const t=f(e,"|");return p(e),t}function R(e,t){let n=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER,s()),e.next(),n=E(t,2,"{"),p(e),t.braceNest++,n;case"}":return t.braceNest>0&&2===t.currentType&&(CompileErrorCodes.EMPTY_PLACEHOLDER,s()),e.next(),n=E(t,3,"}"),t.braceNest--,t.braceNest>0&&p(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),n;case"@":return t.braceNest>0&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),n=D(e,t)||C(t),t.braceNest=0,n;default:let r=!0,o=!0,c=!0;if(N(e))return t.braceNest>0&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),n=E(t,1,y(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(5===t.currentType||6===t.currentType||7===t.currentType))return CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s(),t.braceNest=0,g(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;d(e);const r=L(e.currentPeek());return e.resetPeek(),r}(e,t))return n=E(t,5,function(e){p(e);let t="",n="";for(;t=m(e);)n+=t;return e.currentChar()===EOF&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),n}(e)),p(e),n;if(o=_(e,t))return n=E(t,6,function(e){p(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${S(e)}`):t+=S(e),e.currentChar()===EOF&&(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE,s()),t}(e)),p(e),n;if(c=function(e,t){const{currentType:n}=t;if(2!==n)return!1;d(e);const r=e.currentPeek()===LITERAL_DELIMITER;return e.resetPeek(),r}(e,t))return n=E(t,7,function(e){p(e),f(e,"'");let t="",n="";const r=e=>e!==LITERAL_DELIMITER&&e!==CHAR_LF;for(;t=T(e,r);)n+="\\"===t?h(e):t;const o=e.currentChar();return o===CHAR_LF||o===EOF?(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,s(),o===CHAR_LF&&(e.next(),f(e,"'")),n):(f(e,"'"),n)}(e)),p(e),n;if(!r&&!o&&!c)return n=E(t,13,function(e){p(e);let t="",n="";const r=e=>"{"!==e&&"}"!==e&&e!==CHAR_SP&&e!==CHAR_LF;for(;t=T(e,r);)n+=t;return n}(e)),CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER,s(),n.value,p(e),n}return n}function D(e,t){const{currentType:n}=t;let r=null;const o=e.currentChar();switch(8!==n&&9!==n&&12!==n&&10!==n||o!==CHAR_LF&&o!==CHAR_SP||(CompileErrorCodes.INVALID_LINKED_FORMAT,s()),o){case"@":return e.next(),r=E(t,8,"@"),t.inLinked=!0,r;case".":return p(e),e.next(),E(t,9,".");case":":return p(e),e.next(),E(t,10,":");default:return N(e)?(r=E(t,1,y(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(8!==n)return!1;d(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;d(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(p(e),D(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;d(e);const r=L(e.currentPeek());return e.resetPeek(),r}(e,t)?(p(e),E(t,12,function(e){let t="",n="";for(;t=m(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?L(e.peek()):!("@"===t||"%"===t||"|"===t||":"===t||"."===t||t===CHAR_SP||!t)&&(t===CHAR_LF?(e.peek(),r()):L(t))},o=r();return e.resetPeek(),o}(e,t)?(p(e),"{"===o?R(e,t)||r:E(t,11,function(e){const t=(n=!1,r)=>{const o=e.currentChar();return"{"!==o&&"%"!==o&&"@"!==o&&"|"!==o&&o?o===CHAR_SP?r:o===CHAR_LF?(r+=o,e.next(),t(n,r)):(r+=o,e.next(),t(!0,r)):r};return t(!1,"")}(e))):(8===n&&(CompileErrorCodes.INVALID_LINKED_FORMAT,s()),t.braceNest=0,t.inLinked=!1,g(e,t))}}function g(e,t){let n={type:14};if(t.braceNest>0)return R(e,t)||C(t);if(t.inLinked)return D(e,t)||C(t);switch(e.currentChar()){case"{":return R(e,t)||C(t);case"}":return CompileErrorCodes.UNBALANCED_CLOSING_BRACE,s(),e.next(),E(t,3,"}");case"@":return D(e,t)||C(t);default:if(N(e))return n=E(t,1,y(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:o}=function(e){const t=d(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return o?E(t,0,P(e)):E(t,4,function(e){p(e);const t=e.currentChar();return"%"!==t&&(CompileErrorCodes.EXPECTED_TOKEN,s()),e.next(),"%"}(e));if(A(e))return E(t,0,P(e))}return n}return{nextToken:function(){const{currentType:e,offset:t,startLoc:n,endLoc:c}=a;return a.lastType=e,a.lastOffset=t,a.lastStartLoc=n,a.lastEndLoc=c,a.offset=o(),a.startLoc=s(),r.currentChar()===EOF?E(a,14):g(r,a)},currentOffset:o,currentPosition:s,context:u}}const ERROR_DOMAIN="parser",KNOWN_ESCAPES=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function fromEscapeSequence(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 createParser(e={}){const t=!1!==e.location,{onError:n}=e;function r(e,n,r){const o={type:e};return t&&(o.start=n,o.end=n,o.loc={start:r,end:r}),o}function o(e,n,r,o){o&&(e.type=o),t&&(e.end=n,e.loc&&(e.loc.end=r))}function s(e,t){const n=e.context(),s=r(3,n.offset,n.startLoc);return s.value=t,o(s,e.currentOffset(),e.currentPosition()),s}function c(e,t){const n=e.context(),{lastOffset:s,lastStartLoc:c}=n,i=r(5,s,c);return i.index=parseInt(t,10),e.nextToken(),o(i,e.currentOffset(),e.currentPosition()),i}function i(e,t){const n=e.context(),{lastOffset:s,lastStartLoc:c}=n,i=r(4,s,c);return i.key=t,e.nextToken(),o(i,e.currentOffset(),e.currentPosition()),i}function a(e,t){const n=e.context(),{lastOffset:s,lastStartLoc:c}=n,i=r(9,s,c);return i.value=t.replace(KNOWN_ESCAPES,fromEscapeSequence),e.nextToken(),o(i,e.currentOffset(),e.currentPosition()),i}function u(e){const t=e.context(),n=r(6,t.offset,t.startLoc);let s=e.nextToken();if(9===s.type){const t=function(e){const t=e.nextToken(),n=e.context(),{lastOffset:s,lastStartLoc:c}=n,i=r(8,s,c);return 12!==t.type?(CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,i.value="",o(i,s,c),{nextConsumeToken:t,node:i}):(null==t.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,getTokenCaption(t)),i.value=t.value||"",o(i,e.currentOffset(),e.currentPosition()),{node:i})}(e);n.modifier=t.node,s=t.nextConsumeToken||e.nextToken()}switch(10!==s.type&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),s=e.nextToken(),2===s.type&&(s=e.nextToken()),s.type){case 11:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),n.key=function(e,t){const n=e.context(),s=r(7,n.offset,n.startLoc);return s.value=t,o(s,e.currentOffset(),e.currentPosition()),s}(e,s.value||"");break;case 5:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),n.key=i(e,s.value||"");break;case 6:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),n.key=c(e,s.value||"");break;case 7:null==s.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(s)),n.key=a(e,s.value||"");break;default:CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc;const u=e.context(),l=r(7,u.offset,u.startLoc);return l.value="",o(l,u.offset,u.startLoc),n.key=l,o(n,u.offset,u.startLoc),{nextConsumeToken:s,node:n}}return o(n,e.currentOffset(),e.currentPosition()),{node:n}}function l(e){const t=e.context(),n=r(2,1===t.currentType?e.currentOffset():t.offset,1===t.currentType?t.endLoc:t.startLoc);n.items=[];let l=null;do{const r=l||e.nextToken();switch(l=null,r.type){case 0:null==r.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(r)),n.items.push(s(e,r.value||""));break;case 6:null==r.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(r)),n.items.push(c(e,r.value||""));break;case 5:null==r.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(r)),n.items.push(i(e,r.value||""));break;case 7:null==r.value&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,getTokenCaption(r)),n.items.push(a(e,r.value||""));break;case 8:const o=u(e);n.items.push(o.node),l=o.nextConsumeToken||null}}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 E(e){const t=e.context(),{offset:n,startLoc:s}=t,c=l(e);return 14===t.currentType?c:function(e,t,n,s){const c=e.context();let i=0===s.items.length;const a=r(1,t,n);a.cases=[],a.cases.push(s);do{const t=l(e);i||(i=0===t.items.length),a.cases.push(t)}while(14!==c.currentType);return i&&CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL,o(a,e.currentOffset(),e.currentPosition()),a}(e,n,s,c)}return{parse:function(n){const s=createTokenizer(n,assign({},e)),c=s.context(),i=r(0,c.offset,c.startLoc);return t&&i.loc&&(i.loc.source=n),i.body=E(s),e.onCacheKey&&(i.cacheKey=e.onCacheKey(n)),14!==c.currentType&&(CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS,c.lastStartLoc,n[c.offset]),o(i,s.currentOffset(),s.currentPosition()),i}}}function getTokenCaption(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 createTransformer(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}function traverseNodes(e,t){for(let n=0;n<e.length;n++)traverseNode(e[n],t)}function traverseNode(e,t){switch(e.type){case 1:traverseNodes(e.cases,t),t.helper("plural");break;case 2:traverseNodes(e.items,t);break;case 6:traverseNode(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 transform(e,t={}){const n=createTransformer(e);n.helper("normalize"),e.body&&traverseNode(e.body,n);const r=n.context();e.helpers=Array.from(r.helpers)}function optimize(e){const t=e.body;return 2===t.type?optimizeMessageNode(t):t.cases.forEach((e=>optimizeMessageNode(e))),e}function optimizeMessageNode(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=join(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 minify(e){switch(e.t=e.type,e.type){case 0:const t=e;minify(t.body),t.b=t.body,delete t.body;break;case 1:const n=e,r=n.cases;for(let e=0;e<r.length;e++)minify(r[e]);n.c=r,delete n.cases;break;case 2:const o=e,s=o.items;for(let e=0;e<s.length;e++)minify(s[e]);o.i=s,delete o.items,o.static&&(o.s=o.static,delete o.static);break;case 3:case 9:case 8:case 7:const c=e;c.value&&(c.v=c.value,delete c.value);break;case 6:const i=e;minify(i.key),i.k=i.key,delete i.key,i.modifier&&(minify(i.modifier),i.m=i.modifier,delete i.modifier);break;case 5:const a=e;a.i=a.index,delete a.index;break;case 4:const u=e;u.k=u.key,delete u.key}delete e.type}function createCodeGenerator(e,t){const{sourceMap:n,filename:r,breakLineCode:o,needIndent:s}=t,c=!1!==t.location,i={filename:r,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:o,needIndent:s,indentLevel:0};c&&e.loc&&(i.source=e.loc.source);function a(e,t){i.code+=e}function u(e,t=!0){const n=t?o:"";a(s?n+" ".repeat(e):n)}return{context:()=>i,push:a,indent:function(e=!0){const t=++i.indentLevel;e&&u(t)},deindent:function(e=!0){const t=--i.indentLevel;e&&u(t)},newline:function(){u(i.indentLevel)},helper:e=>`_${e}`,needIndent:()=>i.needIndent}}function generateLinkedNode(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),generateNode(e,t.key),t.modifier?(e.push(", "),generateNode(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}function generateMessageNode(e,t){const{helper:n,needIndent:r}=e;e.push(`${n("normalize")}([`),e.indent(r());const o=t.items.length;for(let s=0;s<o&&(generateNode(e,t.items[s]),s!==o-1);s++)e.push(", ");e.deindent(r()),e.push("])")}function generatePluralNode(e,t){const{helper:n,needIndent:r}=e;if(t.cases.length>1){e.push(`${n("plural")}([`),e.indent(r());const o=t.cases.length;for(let n=0;n<o&&(generateNode(e,t.cases[n]),n!==o-1);n++)e.push(", ");e.deindent(r()),e.push("])")}}function generateResource(e,t){t.body?generateNode(e,t.body):e.push("null")}function generateNode(e,t){const{helper:n}=e;switch(t.type){case 0:generateResource(e,t);break;case 1:generatePluralNode(e,t);break;case 2:generateMessageNode(e,t);break;case 6:generateLinkedNode(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)}}const generate=(e,t={})=>{const n=isString(t.mode)?t.mode:"normal",r=isString(t.filename)?t.filename:"message.intl",o=!!t.sourceMap,s=null!=t.breakLineCode?t.breakLineCode:"arrow"===n?";":"\n",c=t.needIndent?t.needIndent:"arrow"!==n,i=e.helpers||[],a=createCodeGenerator(e,{mode:n,filename:r,sourceMap:o,breakLineCode:s,needIndent:c});a.push("normal"===n?"function __msg__ (ctx) {":"(ctx) => {"),a.indent(c),i.length>0&&(a.push(`const { ${join(i.map((e=>`${e}: _${e}`)),", ")} } = ctx`),a.newline()),a.push("return "),generateNode(a,e),a.deindent(c),a.push("}"),delete e.helpers;const{code:u,map:l}=a.context();return{ast:e,code:u,map:l?l.toJSON():void 0}};function baseCompile(e,t={}){const n=assign({},t),r=!!n.jit,o=!!n.minify,s=null==n.optimize||n.optimize,c=createParser(n).parse(e);return r?(s&&optimize(c),o&&minify(c),{ast:c,code:""}):(transform(c,n),generate(c,n))}export{CompileErrorCodes,ERROR_DOMAIN,LOCATION_STUB,baseCompile,createCompileError,createLocation,createParser,createPosition,defaultOnError,detectHtmlTag,errorMessages};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1252,6 +1252,78 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
1252
1252
|
}
|
|
1253
1253
|
}
|
|
1254
1254
|
|
|
1255
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1256
|
+
function minify(node) {
|
|
1257
|
+
node.t = node.type;
|
|
1258
|
+
switch (node.type) {
|
|
1259
|
+
case 0 /* NodeTypes.Resource */:
|
|
1260
|
+
const resource = node;
|
|
1261
|
+
minify(resource.body);
|
|
1262
|
+
resource.b = resource.body;
|
|
1263
|
+
delete resource.body;
|
|
1264
|
+
break;
|
|
1265
|
+
case 1 /* NodeTypes.Plural */:
|
|
1266
|
+
const plural = node;
|
|
1267
|
+
const cases = plural.cases;
|
|
1268
|
+
for (let i = 0; i < cases.length; i++) {
|
|
1269
|
+
minify(cases[i]);
|
|
1270
|
+
}
|
|
1271
|
+
plural.c = cases;
|
|
1272
|
+
delete plural.cases;
|
|
1273
|
+
break;
|
|
1274
|
+
case 2 /* NodeTypes.Message */:
|
|
1275
|
+
const message = node;
|
|
1276
|
+
const items = message.items;
|
|
1277
|
+
for (let i = 0; i < items.length; i++) {
|
|
1278
|
+
minify(items[i]);
|
|
1279
|
+
}
|
|
1280
|
+
message.i = items;
|
|
1281
|
+
delete message.items;
|
|
1282
|
+
if (message.static) {
|
|
1283
|
+
message.s = message.static;
|
|
1284
|
+
delete message.static;
|
|
1285
|
+
}
|
|
1286
|
+
break;
|
|
1287
|
+
case 3 /* NodeTypes.Text */:
|
|
1288
|
+
case 9 /* NodeTypes.Literal */:
|
|
1289
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1290
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1291
|
+
const valueNode = node;
|
|
1292
|
+
if (valueNode.value) {
|
|
1293
|
+
valueNode.v = valueNode.value;
|
|
1294
|
+
delete valueNode.value;
|
|
1295
|
+
}
|
|
1296
|
+
break;
|
|
1297
|
+
case 6 /* NodeTypes.Linked */:
|
|
1298
|
+
const linked = node;
|
|
1299
|
+
minify(linked.key);
|
|
1300
|
+
linked.k = linked.key;
|
|
1301
|
+
delete linked.key;
|
|
1302
|
+
if (linked.modifier) {
|
|
1303
|
+
minify(linked.modifier);
|
|
1304
|
+
linked.m = linked.modifier;
|
|
1305
|
+
delete linked.modifier;
|
|
1306
|
+
}
|
|
1307
|
+
break;
|
|
1308
|
+
case 5 /* NodeTypes.List */:
|
|
1309
|
+
const list = node;
|
|
1310
|
+
list.i = list.index;
|
|
1311
|
+
delete list.index;
|
|
1312
|
+
break;
|
|
1313
|
+
case 4 /* NodeTypes.Named */:
|
|
1314
|
+
const named = node;
|
|
1315
|
+
named.k = named.key;
|
|
1316
|
+
delete named.key;
|
|
1317
|
+
break;
|
|
1318
|
+
default:
|
|
1319
|
+
{
|
|
1320
|
+
throw new Error(`unhandled minify node type: ${node.type}`);
|
|
1321
|
+
}
|
|
1322
|
+
}
|
|
1323
|
+
delete node.type;
|
|
1324
|
+
}
|
|
1325
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1326
|
+
|
|
1255
1327
|
function createCodeGenerator(ast, options) {
|
|
1256
1328
|
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1257
1329
|
const location = options.location !== false;
|
|
@@ -1438,7 +1510,8 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
1438
1510
|
function baseCompile(source, options = {}) {
|
|
1439
1511
|
const assignedOptions = assign({}, options);
|
|
1440
1512
|
const jit = !!assignedOptions.jit;
|
|
1441
|
-
const
|
|
1513
|
+
const enalbeMinify = !!assignedOptions.minify;
|
|
1514
|
+
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1442
1515
|
// parse source codes
|
|
1443
1516
|
const parser = createParser(assignedOptions);
|
|
1444
1517
|
const ast = parser.parse(source);
|
|
@@ -1450,7 +1523,9 @@ var IntlifyMessageCompiler = (function (exports) {
|
|
|
1450
1523
|
}
|
|
1451
1524
|
else {
|
|
1452
1525
|
// optimize ASTs
|
|
1453
|
-
|
|
1526
|
+
enambeOptimize && optimize(ast);
|
|
1527
|
+
// minimize ASTs
|
|
1528
|
+
enalbeMinify && minify(ast);
|
|
1454
1529
|
// In JIT mode, no ast transform, no code generation.
|
|
1455
1530
|
return { ast, code: '' };
|
|
1456
1531
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 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,__EXTEND_POINT__:15},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}'"};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),N=String.fromCharCode(8233);function p(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]===N,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 p(){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:p,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;)p();o=0}}}const _=void 0,d="'";function C(e,r={}){const c=!1!==r.location,o=p(e),u=()=>o.index(),a=()=>t(o.line(),o.column(),o.index()),i=a(),E=u(),L={currentType:14,offset:E,startLoc:i,endLoc:i,lastType:14,lastOffset:E,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},N=()=>L,{onError:C}=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 k(e){let t="";for(;e.currentPeek()===l||e.currentPeek()===f;)t+=e.currentPeek(),e.peek();return t}function h(e){const t=k(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;k(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 O(e){k(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===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 D(e,t){const n=e.currentChar();return n===_?_:t(n)?(e.next(),n):null}function m(e){return D(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 D(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function U(e){return D(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function b(e){let t="",n="";for(;t=x(e);)n+=t;return n}function v(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===l||n===f)if(y(e))t+=n,e.next();else{if(O(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function R(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return M(e,t,4);case"U":return M(e,t,6);default:return s.UNKNOWN_ESCAPE_SEQUENCE,a(),""}}function M(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){h(e);const t=I(e,"|");return h(e),t}function g(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,"{"),h(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&&h(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(O(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,Y(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;k(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t))return n=T(t,5,function(e){h(e);let t="",n="";for(;t=m(e);)n+=t;return e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),n}(e)),h(e),n;if(c=S(e,t))return n=T(t,6,function(e){h(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${b(e)}`):t+=b(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;k(e);const r=e.currentPeek()===d;return e.resetPeek(),r}(e,t))return n=T(t,7,function(e){h(e),I(e,"'");let t="",n="";const r=e=>e!==d&&e!==f;for(;t=D(e,r);)n+="\\"===t?R(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)),h(e),n;if(!r&&!c&&!o)return n=T(t,13,function(e){h(e);let t="",n="";const r=e=>"{"!==e&&"}"!==e&&e!==l&&e!==f;for(;t=D(e,r);)n+=t;return n}(e)),s.INVALID_TOKEN_IN_PLACEHOLDER,a(),n.value,h(e),n}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 h(e),e.next(),T(t,9,".");case":":return h(e),e.next(),T(t,10,":");default:return O(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;k(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;k(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(h(e),K(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;k(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t)?(h(e),T(t,12,function(e){let t="",n="";for(;t=m(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===l||!t)&&(t===f?(e.peek(),r()):P(t))},c=r();return e.resetPeek(),c}(e,t)?(h(e),"{"===c?g(e,t)||r:T(t,11,function(e){const t=(n=!1,r)=>{const c=e.currentChar();return"{"!==c&&"%"!==c&&"@"!==c&&"|"!==c&&c?c===l?r:c===f?(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,Y(e,t))}}function Y(e,t){let n={type:14};if(t.braceNest>0)return g(e,t)||A(t);if(t.inLinked)return K(e,t)||A(t);switch(e.currentChar()){case"{":return g(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(O(e))return n=T(t,1,X(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:c}=function(e){const t=k(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return c?T(t,0,v(e)):T(t,4,function(e){h(e);const t=e.currentChar();return"%"!==t&&(s.EXPECTED_TOKEN,a()),e.next(),"%"}(e));if(y(e))return T(t,0,v(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()===_?T(L,14):Y(o,L)},currentOffset:u,currentPosition:a,context:N}}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 k(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,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(10!==r.type&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),r=e.nextToken(),2===r.type&&(r=e.nextToken()),r.type){case 11: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 5:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),n.key=i(e,r.value||"");break;case 6:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),n.key=a(e,r.value||"");break;case 7: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(),E=c(7,u.offset,u.startLoc);return E.value="",o(E,u.offset,u.startLoc),n.key=E,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 6:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(a(e,c.value||""));break;case 5:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(i(e,c.value||""));break;case 7:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(l(e,c.value||""));break;case 8:const o=E(e);n.items.push(o.node),r=o.nextConsumeToken||null}}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 L(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=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)),14!==a.currentType&&(s.UNEXPECTED_LEXICAL_ANALYSIS,a.lastStartLoc,n[a.offset]),o(i,u.currentOffset(),u.currentPosition()),i}}}function h(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 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 O(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 y(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 D(e,t){const{helper:n}=e;switch(t.type){case 0:!function(e,t){t.body?D(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&&(D(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&&(D(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")}(`),D(e,t.key),t.modifier?(e.push(", "),D(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=null==n.optimize||n.optimize,a=k(n).parse(e);return s?(u&&function(e){const t=e.body;2===t.type?y(t):t.cases.forEach((e=>y(e)))}(a),{ast:a,code:""}):(O(a,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 "),D(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}})(a,n))},e.createCompileError=a,e.createLocation=n,e.createParser=k,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={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,__EXTEND_POINT__:15},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}'"};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=" ",f="\r",E="\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]===f&&t[e+1]===E,u=e=>t[e]===d,a=e=>t[e]===L,i=e=>s(e)||(e=>t[e]===E)(e)||u(e)||a(e),l=e=>s(e)||u(e)||a(e)?E: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 p=void 0,_="'";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(),f=u(),L={currentType:14,offset:f,startLoc:i,endLoc:i,lastType:14,lastOffset:f,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},d=()=>L,{onError:C}=r;function k(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=>k(e,14);function A(e,t){return e.currentChar()===t?(e.next(),t):(s.EXPECTED_TOKEN,a(),"")}function I(e){let t="";for(;e.currentPeek()===l||e.currentPeek()===E;)t+=e.currentPeek(),e.peek();return t}function h(e){const t=I(e);return e.skipToPeek(),t}function P(e){if(e===p)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===p)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 m(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===E):o===l?(e.peek(),n(!0,l,c)):o!==E||(e.peek(),n(!0,E,c)):"%"===r||t},r=n();return t&&e.resetPeek(),r}function O(e,t){const n=e.currentChar();return n===p?p:t(n)?(e.next(),n):null}function D(e){return O(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 b(e){return O(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function x(e){return O(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function U(e){let t="",n="";for(;t=b(e);)n+=t;return n}function v(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if("%"===n){if(!m(e))break;t+=n,e.next()}else if(n===l||n===E)if(m(e))t+=n,e.next();else{if(y(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function R(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return M(e,t,4);case"U":return M(e,t,6);default:return s.UNKNOWN_ESCAPE_SEQUENCE,a(),""}}function M(e,t,n){A(e,t);let r="";for(let c=0;c<n;c++){const t=x(e);if(!t){s.INVALID_UNICODE_ESCAPE_SEQUENCE,a(),e.currentChar();break}r+=t}return`\\${t}${r}`}function g(e){h(e);const t=A(e,"|");return h(e),t}function X(e,t){let n=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(s.NOT_ALLOW_NEST_PLACEHOLDER,a()),e.next(),n=k(t,2,"{"),h(e),t.braceNest++,n;case"}":return t.braceNest>0&&2===t.currentType&&(s.EMPTY_PLACEHOLDER,a()),e.next(),n=k(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=K(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=k(t,1,g(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,Y(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=k(t,5,function(e){h(e);let t="",n="";for(;t=D(e);)n+=t;return e.currentChar()===p&&(s.UNTERMINATED_CLOSING_BRACE,a()),n}(e)),h(e),n;if(c=S(e,t))return n=k(t,6,function(e){h(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${U(e)}`):t+=U(e),e.currentChar()===p&&(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()===_;return e.resetPeek(),r}(e,t))return n=k(t,7,function(e){h(e),A(e,"'");let t="",n="";const r=e=>e!==_&&e!==E;for(;t=O(e,r);)n+="\\"===t?R(e):t;const c=e.currentChar();return c===E||c===p?(s.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),c===E&&(e.next(),A(e,"'")),n):(A(e,"'"),n)}(e)),h(e),n;if(!r&&!c&&!o)return n=k(t,13,function(e){h(e);let t="",n="";const r=e=>"{"!==e&&"}"!==e&&e!==l&&e!==E;for(;t=O(e,r);)n+=t;return n}(e)),s.INVALID_TOKEN_IN_PLACEHOLDER,a(),n.value,h(e),n}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!==E&&c!==l||(s.INVALID_LINKED_FORMAT,a()),c){case"@":return e.next(),r=k(t,8,"@"),t.inLinked=!0,r;case".":return h(e),e.next(),k(t,9,".");case":":return h(e),e.next(),k(t,10,":");default:return y(e)?(r=k(t,1,g(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(8!==n)return!1;I(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;I(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(h(e),K(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;I(e);const r=P(e.currentPeek());return e.resetPeek(),r}(e,t)?(h(e),k(t,12,function(e){let t="",n="";for(;t=D(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===l||!t)&&(t===E?(e.peek(),r()):P(t))},c=r();return e.resetPeek(),c}(e,t)?(h(e),"{"===c?X(e,t)||r:k(t,11,function(e){const t=(n=!1,r)=>{const c=e.currentChar();return"{"!==c&&"%"!==c&&"@"!==c&&"|"!==c&&c?c===l?r:c===E?(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,Y(e,t))}}function Y(e,t){let n={type:14};if(t.braceNest>0)return X(e,t)||T(t);if(t.inLinked)return K(e,t)||T(t);switch(e.currentChar()){case"{":return X(e,t)||T(t);case"}":return s.UNBALANCED_CLOSING_BRACE,a(),e.next(),k(t,3,"}");case"@":return K(e,t)||T(t);default:if(y(e))return n=k(t,1,g(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:c}=function(e){const t=I(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return c?k(t,0,v(e)):k(t,4,function(e){h(e);const t=e.currentChar();return"%"!==t&&(s.EXPECTED_TOKEN,a()),e.next(),"%"}(e));if(m(e))return k(t,0,v(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()===p?k(L,14):Y(o,L)},currentOffset:u,currentPosition:a,context:d}}const k="parser",T=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function A(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,A),e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function f(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,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(10!==r.type&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),r=e.nextToken(),2===r.type&&(r=e.nextToken()),r.type){case 11: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 5:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),n.key=i(e,r.value||"");break;case 6:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(r)),n.key=a(e,r.value||"");break;case 7: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(),f=c(7,u.offset,u.startLoc);return f.value="",o(f,u.offset,u.startLoc),n.key=f,o(n,u.offset,u.startLoc),{nextConsumeToken:r,node:n}}return o(n,e.currentOffset(),e.currentPosition()),{node:n}}function E(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 6:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(a(e,c.value||""));break;case 5:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(i(e,c.value||""));break;case 7:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,h(c)),n.items.push(l(e,c.value||""));break;case 8:const o=f(e);n.items.push(o.node),r=o.nextConsumeToken||null}}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 L(e){const t=e.context(),{offset:n,startLoc:r}=t,u=E(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=E(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=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)),14!==a.currentType&&(s.UNEXPECTED_LEXICAL_ANALYSIS,a.lastStartLoc,n[a.offset]),o(i,u.currentOffset(),u.currentPosition()),i}}}function h(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 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 m(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 n=e,r=n.cases;for(let e=0;e<r.length;e++)O(r[e]);n.c=r,delete n.cases;break;case 2:const c=e,o=c.items;for(let e=0;e<o.length;e++)O(o[e]);c.i=o,delete c.items,c.static&&(c.s=c.static,delete c.static);break;case 3:case 9:case 8:case 7:const s=e;s.value&&(s.v=s.value,delete s.value);break;case 6:const u=e;O(u.key),u.k=u.key,delete u.key,u.modifier&&(O(u.modifier),u.m=u.modifier,delete u.modifier);break;case 5:const a=e;a.i=a.index,delete a.index;break;case 4:const i=e;i.k=i.key,delete i.key}delete e.type}function D(e,t){const{helper:n}=e;switch(t.type){case 0:!function(e,t){t.body?D(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&&(D(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&&(D(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")}(`),D(e,t.key),t.modifier?(e.push(", "),D(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=k,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?m(t):t.cases.forEach((e=>m(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 "),D(l,e),l.deindent(a),l.push("}"),delete e.helpers;const{code:f,map:E}=l.context();return{ast:e,code:f,map:E?E.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 v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1227,6 +1227,78 @@ function optimizeMessageNode(message) {
|
|
|
1227
1227
|
}
|
|
1228
1228
|
}
|
|
1229
1229
|
|
|
1230
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1231
|
+
function minify(node) {
|
|
1232
|
+
node.t = node.type;
|
|
1233
|
+
switch (node.type) {
|
|
1234
|
+
case 0 /* NodeTypes.Resource */:
|
|
1235
|
+
const resource = node;
|
|
1236
|
+
minify(resource.body);
|
|
1237
|
+
resource.b = resource.body;
|
|
1238
|
+
delete resource.body;
|
|
1239
|
+
break;
|
|
1240
|
+
case 1 /* NodeTypes.Plural */:
|
|
1241
|
+
const plural = node;
|
|
1242
|
+
const cases = plural.cases;
|
|
1243
|
+
for (let i = 0; i < cases.length; i++) {
|
|
1244
|
+
minify(cases[i]);
|
|
1245
|
+
}
|
|
1246
|
+
plural.c = cases;
|
|
1247
|
+
delete plural.cases;
|
|
1248
|
+
break;
|
|
1249
|
+
case 2 /* NodeTypes.Message */:
|
|
1250
|
+
const message = node;
|
|
1251
|
+
const items = message.items;
|
|
1252
|
+
for (let i = 0; i < items.length; i++) {
|
|
1253
|
+
minify(items[i]);
|
|
1254
|
+
}
|
|
1255
|
+
message.i = items;
|
|
1256
|
+
delete message.items;
|
|
1257
|
+
if (message.static) {
|
|
1258
|
+
message.s = message.static;
|
|
1259
|
+
delete message.static;
|
|
1260
|
+
}
|
|
1261
|
+
break;
|
|
1262
|
+
case 3 /* NodeTypes.Text */:
|
|
1263
|
+
case 9 /* NodeTypes.Literal */:
|
|
1264
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1265
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1266
|
+
const valueNode = node;
|
|
1267
|
+
if (valueNode.value) {
|
|
1268
|
+
valueNode.v = valueNode.value;
|
|
1269
|
+
delete valueNode.value;
|
|
1270
|
+
}
|
|
1271
|
+
break;
|
|
1272
|
+
case 6 /* NodeTypes.Linked */:
|
|
1273
|
+
const linked = node;
|
|
1274
|
+
minify(linked.key);
|
|
1275
|
+
linked.k = linked.key;
|
|
1276
|
+
delete linked.key;
|
|
1277
|
+
if (linked.modifier) {
|
|
1278
|
+
minify(linked.modifier);
|
|
1279
|
+
linked.m = linked.modifier;
|
|
1280
|
+
delete linked.modifier;
|
|
1281
|
+
}
|
|
1282
|
+
break;
|
|
1283
|
+
case 5 /* NodeTypes.List */:
|
|
1284
|
+
const list = node;
|
|
1285
|
+
list.i = list.index;
|
|
1286
|
+
delete list.index;
|
|
1287
|
+
break;
|
|
1288
|
+
case 4 /* NodeTypes.Named */:
|
|
1289
|
+
const named = node;
|
|
1290
|
+
named.k = named.key;
|
|
1291
|
+
delete named.key;
|
|
1292
|
+
break;
|
|
1293
|
+
default:
|
|
1294
|
+
if ((process.env.NODE_ENV !== 'production')) {
|
|
1295
|
+
throw new Error(`unhandled minify node type: ${node.type}`);
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
delete node.type;
|
|
1299
|
+
}
|
|
1300
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1301
|
+
|
|
1230
1302
|
function createCodeGenerator(ast, options) {
|
|
1231
1303
|
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1232
1304
|
const location = options.location !== false;
|
|
@@ -1413,7 +1485,8 @@ const generate = (ast, options = {} // eslint-disable-line
|
|
|
1413
1485
|
function baseCompile(source, options = {}) {
|
|
1414
1486
|
const assignedOptions = assign({}, options);
|
|
1415
1487
|
const jit = !!assignedOptions.jit;
|
|
1416
|
-
const
|
|
1488
|
+
const enalbeMinify = !!assignedOptions.minify;
|
|
1489
|
+
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1417
1490
|
// parse source codes
|
|
1418
1491
|
const parser = createParser(assignedOptions);
|
|
1419
1492
|
const ast = parser.parse(source);
|
|
@@ -1425,7 +1498,9 @@ function baseCompile(source, options = {}) {
|
|
|
1425
1498
|
}
|
|
1426
1499
|
else {
|
|
1427
1500
|
// optimize ASTs
|
|
1428
|
-
|
|
1501
|
+
enambeOptimize && optimize(ast);
|
|
1502
|
+
// minimize ASTs
|
|
1503
|
+
enalbeMinify && minify(ast);
|
|
1429
1504
|
// In JIT mode, no ast transform, no code generation.
|
|
1430
1505
|
return { ast, code: '' };
|
|
1431
1506
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1228,6 +1228,78 @@ function optimizeMessageNode(message) {
|
|
|
1228
1228
|
}
|
|
1229
1229
|
}
|
|
1230
1230
|
|
|
1231
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1232
|
+
function minify(node) {
|
|
1233
|
+
node.t = node.type;
|
|
1234
|
+
switch (node.type) {
|
|
1235
|
+
case 0 /* NodeTypes.Resource */:
|
|
1236
|
+
const resource = node;
|
|
1237
|
+
minify(resource.body);
|
|
1238
|
+
resource.b = resource.body;
|
|
1239
|
+
delete resource.body;
|
|
1240
|
+
break;
|
|
1241
|
+
case 1 /* NodeTypes.Plural */:
|
|
1242
|
+
const plural = node;
|
|
1243
|
+
const cases = plural.cases;
|
|
1244
|
+
for (let i = 0; i < cases.length; i++) {
|
|
1245
|
+
minify(cases[i]);
|
|
1246
|
+
}
|
|
1247
|
+
plural.c = cases;
|
|
1248
|
+
delete plural.cases;
|
|
1249
|
+
break;
|
|
1250
|
+
case 2 /* NodeTypes.Message */:
|
|
1251
|
+
const message = node;
|
|
1252
|
+
const items = message.items;
|
|
1253
|
+
for (let i = 0; i < items.length; i++) {
|
|
1254
|
+
minify(items[i]);
|
|
1255
|
+
}
|
|
1256
|
+
message.i = items;
|
|
1257
|
+
delete message.items;
|
|
1258
|
+
if (message.static) {
|
|
1259
|
+
message.s = message.static;
|
|
1260
|
+
delete message.static;
|
|
1261
|
+
}
|
|
1262
|
+
break;
|
|
1263
|
+
case 3 /* NodeTypes.Text */:
|
|
1264
|
+
case 9 /* NodeTypes.Literal */:
|
|
1265
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1266
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1267
|
+
const valueNode = node;
|
|
1268
|
+
if (valueNode.value) {
|
|
1269
|
+
valueNode.v = valueNode.value;
|
|
1270
|
+
delete valueNode.value;
|
|
1271
|
+
}
|
|
1272
|
+
break;
|
|
1273
|
+
case 6 /* NodeTypes.Linked */:
|
|
1274
|
+
const linked = node;
|
|
1275
|
+
minify(linked.key);
|
|
1276
|
+
linked.k = linked.key;
|
|
1277
|
+
delete linked.key;
|
|
1278
|
+
if (linked.modifier) {
|
|
1279
|
+
minify(linked.modifier);
|
|
1280
|
+
linked.m = linked.modifier;
|
|
1281
|
+
delete linked.modifier;
|
|
1282
|
+
}
|
|
1283
|
+
break;
|
|
1284
|
+
case 5 /* NodeTypes.List */:
|
|
1285
|
+
const list = node;
|
|
1286
|
+
list.i = list.index;
|
|
1287
|
+
delete list.index;
|
|
1288
|
+
break;
|
|
1289
|
+
case 4 /* NodeTypes.Named */:
|
|
1290
|
+
const named = node;
|
|
1291
|
+
named.k = named.key;
|
|
1292
|
+
delete named.key;
|
|
1293
|
+
break;
|
|
1294
|
+
default:
|
|
1295
|
+
if ((process.env.NODE_ENV !== 'production')) {
|
|
1296
|
+
throw new Error(`unhandled minify node type: ${node.type}`);
|
|
1297
|
+
}
|
|
1298
|
+
}
|
|
1299
|
+
delete node.type;
|
|
1300
|
+
}
|
|
1301
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1302
|
+
|
|
1231
1303
|
function createCodeGenerator(ast, options) {
|
|
1232
1304
|
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1233
1305
|
const location = options.location !== false;
|
|
@@ -1470,7 +1542,8 @@ function advancePositionWithSource(pos, source, numberOfCharacters = source.leng
|
|
|
1470
1542
|
function baseCompile(source, options = {}) {
|
|
1471
1543
|
const assignedOptions = assign({}, options);
|
|
1472
1544
|
const jit = !!assignedOptions.jit;
|
|
1473
|
-
const
|
|
1545
|
+
const enalbeMinify = !!assignedOptions.minify;
|
|
1546
|
+
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1474
1547
|
// parse source codes
|
|
1475
1548
|
const parser = createParser(assignedOptions);
|
|
1476
1549
|
const ast = parser.parse(source);
|
|
@@ -1482,7 +1555,9 @@ function baseCompile(source, options = {}) {
|
|
|
1482
1555
|
}
|
|
1483
1556
|
else {
|
|
1484
1557
|
// optimize ASTs
|
|
1485
|
-
|
|
1558
|
+
enambeOptimize && optimize(ast);
|
|
1559
|
+
// minimize ASTs
|
|
1560
|
+
enalbeMinify && minify(ast);
|
|
1486
1561
|
// In JIT mode, no ast transform, no code generation.
|
|
1487
1562
|
return { ast, code: '' };
|
|
1488
1563
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* message-compiler v9.3.0-beta.
|
|
2
|
+
* message-compiler v9.3.0-beta.25
|
|
3
3
|
* (c) 2023 kazuya kawaguchi
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -1228,6 +1228,74 @@ function optimizeMessageNode(message) {
|
|
|
1228
1228
|
}
|
|
1229
1229
|
}
|
|
1230
1230
|
|
|
1231
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1232
|
+
function minify(node) {
|
|
1233
|
+
node.t = node.type;
|
|
1234
|
+
switch (node.type) {
|
|
1235
|
+
case 0 /* NodeTypes.Resource */:
|
|
1236
|
+
const resource = node;
|
|
1237
|
+
minify(resource.body);
|
|
1238
|
+
resource.b = resource.body;
|
|
1239
|
+
delete resource.body;
|
|
1240
|
+
break;
|
|
1241
|
+
case 1 /* NodeTypes.Plural */:
|
|
1242
|
+
const plural = node;
|
|
1243
|
+
const cases = plural.cases;
|
|
1244
|
+
for (let i = 0; i < cases.length; i++) {
|
|
1245
|
+
minify(cases[i]);
|
|
1246
|
+
}
|
|
1247
|
+
plural.c = cases;
|
|
1248
|
+
delete plural.cases;
|
|
1249
|
+
break;
|
|
1250
|
+
case 2 /* NodeTypes.Message */:
|
|
1251
|
+
const message = node;
|
|
1252
|
+
const items = message.items;
|
|
1253
|
+
for (let i = 0; i < items.length; i++) {
|
|
1254
|
+
minify(items[i]);
|
|
1255
|
+
}
|
|
1256
|
+
message.i = items;
|
|
1257
|
+
delete message.items;
|
|
1258
|
+
if (message.static) {
|
|
1259
|
+
message.s = message.static;
|
|
1260
|
+
delete message.static;
|
|
1261
|
+
}
|
|
1262
|
+
break;
|
|
1263
|
+
case 3 /* NodeTypes.Text */:
|
|
1264
|
+
case 9 /* NodeTypes.Literal */:
|
|
1265
|
+
case 8 /* NodeTypes.LinkedModifier */:
|
|
1266
|
+
case 7 /* NodeTypes.LinkedKey */:
|
|
1267
|
+
const valueNode = node;
|
|
1268
|
+
if (valueNode.value) {
|
|
1269
|
+
valueNode.v = valueNode.value;
|
|
1270
|
+
delete valueNode.value;
|
|
1271
|
+
}
|
|
1272
|
+
break;
|
|
1273
|
+
case 6 /* NodeTypes.Linked */:
|
|
1274
|
+
const linked = node;
|
|
1275
|
+
minify(linked.key);
|
|
1276
|
+
linked.k = linked.key;
|
|
1277
|
+
delete linked.key;
|
|
1278
|
+
if (linked.modifier) {
|
|
1279
|
+
minify(linked.modifier);
|
|
1280
|
+
linked.m = linked.modifier;
|
|
1281
|
+
delete linked.modifier;
|
|
1282
|
+
}
|
|
1283
|
+
break;
|
|
1284
|
+
case 5 /* NodeTypes.List */:
|
|
1285
|
+
const list = node;
|
|
1286
|
+
list.i = list.index;
|
|
1287
|
+
delete list.index;
|
|
1288
|
+
break;
|
|
1289
|
+
case 4 /* NodeTypes.Named */:
|
|
1290
|
+
const named = node;
|
|
1291
|
+
named.k = named.key;
|
|
1292
|
+
delete named.key;
|
|
1293
|
+
break;
|
|
1294
|
+
}
|
|
1295
|
+
delete node.type;
|
|
1296
|
+
}
|
|
1297
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
1298
|
+
|
|
1231
1299
|
function createCodeGenerator(ast, options) {
|
|
1232
1300
|
const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
|
|
1233
1301
|
const location = options.location !== false;
|
|
@@ -1466,7 +1534,8 @@ function advancePositionWithSource(pos, source, numberOfCharacters = source.leng
|
|
|
1466
1534
|
function baseCompile(source, options = {}) {
|
|
1467
1535
|
const assignedOptions = shared.assign({}, options);
|
|
1468
1536
|
const jit = !!assignedOptions.jit;
|
|
1469
|
-
const
|
|
1537
|
+
const enalbeMinify = !!assignedOptions.minify;
|
|
1538
|
+
const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
|
|
1470
1539
|
// parse source codes
|
|
1471
1540
|
const parser = createParser(assignedOptions);
|
|
1472
1541
|
const ast = parser.parse(source);
|
|
@@ -1478,7 +1547,9 @@ function baseCompile(source, options = {}) {
|
|
|
1478
1547
|
}
|
|
1479
1548
|
else {
|
|
1480
1549
|
// optimize ASTs
|
|
1481
|
-
|
|
1550
|
+
enambeOptimize && optimize(ast);
|
|
1551
|
+
// minimize ASTs
|
|
1552
|
+
enalbeMinify && minify(ast);
|
|
1482
1553
|
// In JIT mode, no ast transform, no code generation.
|
|
1483
1554
|
return { ast, code: '' };
|
|
1484
1555
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlify/message-compiler",
|
|
3
|
-
"version": "9.3.0-beta.
|
|
3
|
+
"version": "9.3.0-beta.25",
|
|
4
4
|
"description": "@intlify/message-compiler",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compiler",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"types": "dist/message-compiler.d.ts",
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"source-map-js": "^1.0.2",
|
|
37
|
-
"@intlify/shared": "9.3.0-beta.
|
|
37
|
+
"@intlify/shared": "9.3.0-beta.25"
|
|
38
38
|
},
|
|
39
39
|
"engines": {
|
|
40
40
|
"node": ">= 16"
|