@intlify/message-compiler 9.3.0-beta.25 → 9.3.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * message-compiler v9.3.0-beta.25
2
+ * message-compiler v9.3.0-beta.27
3
3
  * (c) 2023 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -40,10 +40,14 @@ const CompileErrorCodes = {
40
40
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
41
41
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
42
42
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
43
+ // generator error codes
44
+ UNHANDLED_CODEGEN_NODE_TYPE: 15,
45
+ // minifier error codes
46
+ UNHANDLED_MINIFIER_NODE_TYPE: 16,
43
47
  // Special value for higher-order compilers to pick up the last code
44
48
  // to avoid collision of error codes. This should always be kept as the last
45
49
  // item.
46
- __EXTEND_POINT__: 15
50
+ __EXTEND_POINT__: 17
47
51
  };
48
52
  /** @internal */
49
53
  const errorMessages = {
@@ -62,7 +66,11 @@ const errorMessages = {
62
66
  [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
63
67
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
64
68
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
65
- [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`
69
+ [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
70
+ // generator error messages
71
+ [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
72
+ // minimizer error messages
73
+ [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
66
74
  };
67
75
  function createCompileError(code, loc, options = {}) {
68
76
  const { domain, messages, args } = options;
@@ -161,8 +169,9 @@ function createScanner(str) {
161
169
  }
162
170
 
163
171
  const EOF = undefined;
172
+ const DOT = '.';
164
173
  const LITERAL_DELIMITER = "'";
165
- const ERROR_DOMAIN$1 = 'tokenizer';
174
+ const ERROR_DOMAIN$3 = 'tokenizer';
166
175
  function createTokenizer(source, options = {}) {
167
176
  const location = options.location !== false;
168
177
  const _scnr = createScanner(source);
@@ -192,7 +201,7 @@ function createTokenizer(source, options = {}) {
192
201
  if (onError) {
193
202
  const loc = location ? createLocation(ctx.startLoc, pos) : null;
194
203
  const err = createCompileError(code, loc, {
195
- domain: ERROR_DOMAIN$1,
204
+ domain: ERROR_DOMAIN$3,
196
205
  args
197
206
  });
198
207
  onError(err);
@@ -608,11 +617,14 @@ function createTokenizer(source, options = {}) {
608
617
  else if (ch === CHAR_SP) {
609
618
  return buf;
610
619
  }
611
- else if (ch === CHAR_LF) {
620
+ else if (ch === CHAR_LF || ch === DOT) {
612
621
  buf += ch;
613
622
  scnr.next();
614
623
  return fn(detect, buf);
615
624
  }
625
+ else if (!isIdentifierStart(ch)) {
626
+ return buf;
627
+ }
616
628
  else {
617
629
  buf += ch;
618
630
  scnr.next();
@@ -831,7 +843,7 @@ function createTokenizer(source, options = {}) {
831
843
  };
832
844
  }
833
845
 
834
- const ERROR_DOMAIN = 'parser';
846
+ const ERROR_DOMAIN$2 = 'parser';
835
847
  // Backslash backslash, backslash quote, uHHHH, UHHHHHH.
836
848
  const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
837
849
  function fromEscapeSequence(match, codePoint4, codePoint6) {
@@ -861,7 +873,7 @@ function createParser(options = {}) {
861
873
  if (onError) {
862
874
  const loc = location ? createLocation(start, end) : null;
863
875
  const err = createCompileError(code, loc, {
864
- domain: ERROR_DOMAIN,
876
+ domain: ERROR_DOMAIN$2,
865
877
  args
866
878
  });
867
879
  onError(err);
@@ -1229,6 +1241,7 @@ function optimizeMessageNode(message) {
1229
1241
  }
1230
1242
  }
1231
1243
 
1244
+ const ERROR_DOMAIN$1 = 'minifier';
1232
1245
  /* eslint-disable @typescript-eslint/no-explicit-any */
1233
1246
  function minify(node) {
1234
1247
  node.t = node.type;
@@ -1294,13 +1307,17 @@ function minify(node) {
1294
1307
  break;
1295
1308
  default:
1296
1309
  {
1297
- throw new Error(`unhandled minify node type: ${node.type}`);
1310
+ throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
1311
+ domain: ERROR_DOMAIN$1,
1312
+ args: [node.type]
1313
+ });
1298
1314
  }
1299
1315
  }
1300
1316
  delete node.type;
1301
1317
  }
1302
1318
  /* eslint-enable @typescript-eslint/no-explicit-any */
1303
1319
 
1320
+ const ERROR_DOMAIN = 'parser';
1304
1321
  function createCodeGenerator(ast, options) {
1305
1322
  const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
1306
1323
  const location = options.location !== false;
@@ -1462,7 +1479,10 @@ function generateNode(generator, node) {
1462
1479
  break;
1463
1480
  default:
1464
1481
  {
1465
- throw new Error(`unhandled codegen node type: ${node.type}`);
1482
+ throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
1483
+ domain: ERROR_DOMAIN,
1484
+ args: [node.type]
1485
+ });
1466
1486
  }
1467
1487
  }
1468
1488
  }
@@ -1565,7 +1585,7 @@ function baseCompile(source, options = {}) {
1565
1585
  }
1566
1586
 
1567
1587
  exports.CompileErrorCodes = CompileErrorCodes;
1568
- exports.ERROR_DOMAIN = ERROR_DOMAIN;
1588
+ exports.ERROR_DOMAIN = ERROR_DOMAIN$2;
1569
1589
  exports.LOCATION_STUB = LOCATION_STUB;
1570
1590
  exports.baseCompile = baseCompile;
1571
1591
  exports.createCompileError = createCompileError;
@@ -1,3 +1,4 @@
1
+ import type { BaseError } from '@intlify/shared';
1
2
  import type { RawSourceMap } from 'source-map-js';
2
3
 
3
4
  export declare function baseCompile(source: string, options?: CompileOptions): CompilerResult;
@@ -20,10 +21,9 @@ declare interface CodeGenResult {
20
21
  map?: RawSourceMap;
21
22
  }
22
23
 
23
- export declare type CompileDomain = 'tokenizer' | 'parser' | 'generator' | 'transformer' | 'compiler';
24
+ export declare type CompileDomain = 'tokenizer' | 'parser' | 'generator' | 'transformer' | 'optimizer' | 'minifier';
24
25
 
25
- export declare interface CompileError extends SyntaxError {
26
- code: number;
26
+ export declare interface CompileError extends BaseError, SyntaxError {
27
27
  domain?: CompileDomain;
28
28
  location?: SourceLocation;
29
29
  }
@@ -43,13 +43,23 @@ export declare const CompileErrorCodes: {
43
43
  readonly UNEXPECTED_EMPTY_LINKED_MODIFIER: 12;
44
44
  readonly UNEXPECTED_EMPTY_LINKED_KEY: 13;
45
45
  readonly UNEXPECTED_LEXICAL_ANALYSIS: 14;
46
- readonly __EXTEND_POINT__: 15;
46
+ readonly UNHANDLED_CODEGEN_NODE_TYPE: 15;
47
+ readonly UNHANDLED_MINIFIER_NODE_TYPE: 16;
48
+ readonly __EXTEND_POINT__: 17;
47
49
  };
48
50
 
49
51
  export declare type CompileErrorCodes = (typeof CompileErrorCodes)[keyof typeof CompileErrorCodes];
50
52
 
51
53
  export declare type CompileErrorHandler = (error: CompileError) => void;
52
54
 
55
+ export declare interface CompileErrorOptions {
56
+ domain?: CompileDomain;
57
+ messages?: {
58
+ [code: number]: string;
59
+ };
60
+ args?: unknown[];
61
+ }
62
+
53
63
  export declare type CompileOptions = {
54
64
  optimize?: boolean;
55
65
  minify?: boolean;
@@ -58,15 +68,7 @@ export declare type CompileOptions = {
58
68
 
59
69
  export declare type CompilerResult = CodeGenResult;
60
70
 
61
- export declare function createCompileError<T extends number>(code: T, loc: SourceLocation | null, options?: CreateCompileErrorOptions): CompileError;
62
-
63
- export declare interface CreateCompileErrorOptions {
64
- domain?: CompileDomain;
65
- messages?: {
66
- [code: number]: string;
67
- };
68
- args?: unknown[];
69
- }
71
+ export declare function createCompileError<T extends number>(code: T, loc: SourceLocation | null, options?: CompileErrorOptions): CompileError;
70
72
 
71
73
  export declare function createLocation(start: Position, end: Position, source?: string): SourceLocation;
72
74
 
@@ -90,7 +92,8 @@ export declare const enum HelperNameMap {
90
92
  MESSAGE = "message",
91
93
  TYPE = "type",
92
94
  INTERPOLATE = "interpolate",
93
- NORMALIZE = "normalize"
95
+ NORMALIZE = "normalize",
96
+ VALUES = "values"
94
97
  }
95
98
 
96
99
  export declare type Identifier = string;
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * message-compiler v9.3.0-beta.25
2
+ * message-compiler v9.3.0-beta.27
3
3
  * (c) 2023 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -60,10 +60,14 @@ const CompileErrorCodes = {
60
60
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
61
61
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
62
62
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
63
+ // generator error codes
64
+ UNHANDLED_CODEGEN_NODE_TYPE: 15,
65
+ // minifier error codes
66
+ UNHANDLED_MINIFIER_NODE_TYPE: 16,
63
67
  // Special value for higher-order compilers to pick up the last code
64
68
  // to avoid collision of error codes. This should always be kept as the last
65
69
  // item.
66
- __EXTEND_POINT__: 15
70
+ __EXTEND_POINT__: 17
67
71
  };
68
72
  /** @internal */
69
73
  const errorMessages = {
@@ -82,7 +86,11 @@ const errorMessages = {
82
86
  [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
83
87
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
84
88
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
85
- [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`
89
+ [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
90
+ // generator error messages
91
+ [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
92
+ // minimizer error messages
93
+ [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
86
94
  };
87
95
  function createCompileError(code, loc, options = {}) {
88
96
  const { domain, messages, args } = options;
@@ -181,8 +189,9 @@ function createScanner(str) {
181
189
  }
182
190
 
183
191
  const EOF = undefined;
192
+ const DOT = '.';
184
193
  const LITERAL_DELIMITER = "'";
185
- const ERROR_DOMAIN$1 = 'tokenizer';
194
+ const ERROR_DOMAIN$3 = 'tokenizer';
186
195
  function createTokenizer(source, options = {}) {
187
196
  const location = options.location !== false;
188
197
  const _scnr = createScanner(source);
@@ -212,7 +221,7 @@ function createTokenizer(source, options = {}) {
212
221
  if (onError) {
213
222
  const loc = location ? createLocation(ctx.startLoc, pos) : null;
214
223
  const err = createCompileError(code, loc, {
215
- domain: ERROR_DOMAIN$1,
224
+ domain: ERROR_DOMAIN$3,
216
225
  args
217
226
  });
218
227
  onError(err);
@@ -628,11 +637,14 @@ function createTokenizer(source, options = {}) {
628
637
  else if (ch === CHAR_SP) {
629
638
  return buf;
630
639
  }
631
- else if (ch === CHAR_LF) {
640
+ else if (ch === CHAR_LF || ch === DOT) {
632
641
  buf += ch;
633
642
  scnr.next();
634
643
  return fn(detect, buf);
635
644
  }
645
+ else if (!isIdentifierStart(ch)) {
646
+ return buf;
647
+ }
636
648
  else {
637
649
  buf += ch;
638
650
  scnr.next();
@@ -851,7 +863,7 @@ function createTokenizer(source, options = {}) {
851
863
  };
852
864
  }
853
865
 
854
- const ERROR_DOMAIN = 'parser';
866
+ const ERROR_DOMAIN$2 = 'parser';
855
867
  // Backslash backslash, backslash quote, uHHHH, UHHHHHH.
856
868
  const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
857
869
  function fromEscapeSequence(match, codePoint4, codePoint6) {
@@ -881,7 +893,7 @@ function createParser(options = {}) {
881
893
  if (onError) {
882
894
  const loc = location ? createLocation(start, end) : null;
883
895
  const err = createCompileError(code, loc, {
884
- domain: ERROR_DOMAIN,
896
+ domain: ERROR_DOMAIN$2,
885
897
  args
886
898
  });
887
899
  onError(err);
@@ -1249,6 +1261,7 @@ function optimizeMessageNode(message) {
1249
1261
  }
1250
1262
  }
1251
1263
 
1264
+ const ERROR_DOMAIN$1 = 'minifier';
1252
1265
  /* eslint-disable @typescript-eslint/no-explicit-any */
1253
1266
  function minify(node) {
1254
1267
  node.t = node.type;
@@ -1314,13 +1327,17 @@ function minify(node) {
1314
1327
  break;
1315
1328
  default:
1316
1329
  {
1317
- throw new Error(`unhandled minify node type: ${node.type}`);
1330
+ throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
1331
+ domain: ERROR_DOMAIN$1,
1332
+ args: [node.type]
1333
+ });
1318
1334
  }
1319
1335
  }
1320
1336
  delete node.type;
1321
1337
  }
1322
1338
  /* eslint-enable @typescript-eslint/no-explicit-any */
1323
1339
 
1340
+ const ERROR_DOMAIN = 'parser';
1324
1341
  function createCodeGenerator(ast, options) {
1325
1342
  const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
1326
1343
  const location = options.location !== false;
@@ -1458,7 +1475,10 @@ function generateNode(generator, node) {
1458
1475
  break;
1459
1476
  default:
1460
1477
  {
1461
- throw new Error(`unhandled codegen node type: ${node.type}`);
1478
+ throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
1479
+ domain: ERROR_DOMAIN,
1480
+ args: [node.type]
1481
+ });
1462
1482
  }
1463
1483
  }
1464
1484
  }
@@ -1528,4 +1548,4 @@ function baseCompile(source, options = {}) {
1528
1548
  }
1529
1549
  }
1530
1550
 
1531
- export { CompileErrorCodes, ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };
1551
+ export { CompileErrorCodes, ERROR_DOMAIN$2 as ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * message-compiler v9.3.0-beta.25
2
+ * message-compiler v9.3.0-beta.27
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,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};
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,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},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}'",[CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{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,DOT=".",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 D(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=R(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 R(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),R(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?D(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||o===DOT?(r+=o,e.next(),t(n,r)):L(o)?(r+=o,e.next(),t(!0,r)):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 D(e,t)||C(t);if(t.inLinked)return R(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 R(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.25
2
+ * message-compiler v9.3.0-beta.27
3
3
  * (c) 2023 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -63,10 +63,14 @@ var IntlifyMessageCompiler = (function (exports) {
63
63
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
64
64
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
65
65
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
66
+ // generator error codes
67
+ UNHANDLED_CODEGEN_NODE_TYPE: 15,
68
+ // minifier error codes
69
+ UNHANDLED_MINIFIER_NODE_TYPE: 16,
66
70
  // Special value for higher-order compilers to pick up the last code
67
71
  // to avoid collision of error codes. This should always be kept as the last
68
72
  // item.
69
- __EXTEND_POINT__: 15
73
+ __EXTEND_POINT__: 17
70
74
  };
71
75
  /** @internal */
72
76
  const errorMessages = {
@@ -85,7 +89,11 @@ var IntlifyMessageCompiler = (function (exports) {
85
89
  [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
86
90
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
87
91
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
88
- [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`
92
+ [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
93
+ // generator error messages
94
+ [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
95
+ // minimizer error messages
96
+ [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
89
97
  };
90
98
  function createCompileError(code, loc, options = {}) {
91
99
  const { domain, messages, args } = options;
@@ -184,8 +192,9 @@ var IntlifyMessageCompiler = (function (exports) {
184
192
  }
185
193
 
186
194
  const EOF = undefined;
195
+ const DOT = '.';
187
196
  const LITERAL_DELIMITER = "'";
188
- const ERROR_DOMAIN$1 = 'tokenizer';
197
+ const ERROR_DOMAIN$3 = 'tokenizer';
189
198
  function createTokenizer(source, options = {}) {
190
199
  const location = options.location !== false;
191
200
  const _scnr = createScanner(source);
@@ -215,7 +224,7 @@ var IntlifyMessageCompiler = (function (exports) {
215
224
  if (onError) {
216
225
  const loc = location ? createLocation(ctx.startLoc, pos) : null;
217
226
  const err = createCompileError(code, loc, {
218
- domain: ERROR_DOMAIN$1,
227
+ domain: ERROR_DOMAIN$3,
219
228
  args
220
229
  });
221
230
  onError(err);
@@ -631,11 +640,14 @@ var IntlifyMessageCompiler = (function (exports) {
631
640
  else if (ch === CHAR_SP) {
632
641
  return buf;
633
642
  }
634
- else if (ch === CHAR_LF) {
643
+ else if (ch === CHAR_LF || ch === DOT) {
635
644
  buf += ch;
636
645
  scnr.next();
637
646
  return fn(detect, buf);
638
647
  }
648
+ else if (!isIdentifierStart(ch)) {
649
+ return buf;
650
+ }
639
651
  else {
640
652
  buf += ch;
641
653
  scnr.next();
@@ -854,7 +866,7 @@ var IntlifyMessageCompiler = (function (exports) {
854
866
  };
855
867
  }
856
868
 
857
- const ERROR_DOMAIN = 'parser';
869
+ const ERROR_DOMAIN$2 = 'parser';
858
870
  // Backslash backslash, backslash quote, uHHHH, UHHHHHH.
859
871
  const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
860
872
  function fromEscapeSequence(match, codePoint4, codePoint6) {
@@ -884,7 +896,7 @@ var IntlifyMessageCompiler = (function (exports) {
884
896
  if (onError) {
885
897
  const loc = location ? createLocation(start, end) : null;
886
898
  const err = createCompileError(code, loc, {
887
- domain: ERROR_DOMAIN,
899
+ domain: ERROR_DOMAIN$2,
888
900
  args
889
901
  });
890
902
  onError(err);
@@ -1252,6 +1264,7 @@ var IntlifyMessageCompiler = (function (exports) {
1252
1264
  }
1253
1265
  }
1254
1266
 
1267
+ const ERROR_DOMAIN$1 = 'minifier';
1255
1268
  /* eslint-disable @typescript-eslint/no-explicit-any */
1256
1269
  function minify(node) {
1257
1270
  node.t = node.type;
@@ -1317,13 +1330,17 @@ var IntlifyMessageCompiler = (function (exports) {
1317
1330
  break;
1318
1331
  default:
1319
1332
  {
1320
- throw new Error(`unhandled minify node type: ${node.type}`);
1333
+ throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
1334
+ domain: ERROR_DOMAIN$1,
1335
+ args: [node.type]
1336
+ });
1321
1337
  }
1322
1338
  }
1323
1339
  delete node.type;
1324
1340
  }
1325
1341
  /* eslint-enable @typescript-eslint/no-explicit-any */
1326
1342
 
1343
+ const ERROR_DOMAIN = 'parser';
1327
1344
  function createCodeGenerator(ast, options) {
1328
1345
  const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
1329
1346
  const location = options.location !== false;
@@ -1461,7 +1478,10 @@ var IntlifyMessageCompiler = (function (exports) {
1461
1478
  break;
1462
1479
  default:
1463
1480
  {
1464
- throw new Error(`unhandled codegen node type: ${node.type}`);
1481
+ throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
1482
+ domain: ERROR_DOMAIN,
1483
+ args: [node.type]
1484
+ });
1465
1485
  }
1466
1486
  }
1467
1487
  }
@@ -1532,7 +1552,7 @@ var IntlifyMessageCompiler = (function (exports) {
1532
1552
  }
1533
1553
 
1534
1554
  exports.CompileErrorCodes = CompileErrorCodes;
1535
- exports.ERROR_DOMAIN = ERROR_DOMAIN;
1555
+ exports.ERROR_DOMAIN = ERROR_DOMAIN$2;
1536
1556
  exports.LOCATION_STUB = LOCATION_STUB;
1537
1557
  exports.baseCompile = baseCompile;
1538
1558
  exports.createCompileError = createCompileError;
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * message-compiler v9.3.0-beta.25
2
+ * message-compiler v9.3.0-beta.27
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=" ",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}({});
6
+ var IntlifyMessageCompiler=function(e){"use strict";function t(e,t,n){return{line:e,column:t,offset:n}}function n(e,t,n){const r={start:e,end:t};return null!=n&&(r.source=n),r}const r=Object.assign,c=e=>"string"==typeof e;function o(e,t=""){return e.reduce(((e,n,r)=>0===r?e+n:e+t+n),"")}const s={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17},u={[s.EXPECTED_TOKEN]:"Expected token: '{0}'",[s.INVALID_TOKEN_IN_PLACEHOLDER]:"Invalid token in placeholder: '{0}'",[s.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]:"Unterminated single quote in placeholder",[s.UNKNOWN_ESCAPE_SEQUENCE]:"Unknown escape sequence: \\{0}",[s.INVALID_UNICODE_ESCAPE_SEQUENCE]:"Invalid unicode escape sequence: {0}",[s.UNBALANCED_CLOSING_BRACE]:"Unbalanced closing brace",[s.UNTERMINATED_CLOSING_BRACE]:"Unterminated closing brace",[s.EMPTY_PLACEHOLDER]:"Empty placeholder",[s.NOT_ALLOW_NEST_PLACEHOLDER]:"Not allowed nest placeholder",[s.INVALID_LINKED_FORMAT]:"Invalid linked format",[s.MUST_HAVE_MESSAGES_IN_PLURAL]:"Plural must have messages",[s.UNEXPECTED_EMPTY_LINKED_MODIFIER]:"Unexpected empty linked modifier",[s.UNEXPECTED_EMPTY_LINKED_KEY]:"Unexpected empty linked key",[s.UNEXPECTED_LEXICAL_ANALYSIS]:"Unexpected lexical analysis in token: '{0}'",[s.UNHANDLED_CODEGEN_NODE_TYPE]:"unhandled codegen node type: '{0}'",[s.UNHANDLED_MINIFIER_NODE_TYPE]:"unhandled mimifier node type: '{0}'"};function a(e,t,n={}){const{domain:r,messages:c,args:o}=n,s=new SyntaxError(String(e));return s.code=e,t&&(s.location=t),s.domain=r,s}const i=/<\/?[\w\s="/.':;#-\/]+>/,l=" ",E="\r",f="\n",d=String.fromCharCode(8232),L=String.fromCharCode(8233);function N(e){const t=e;let n=0,r=1,c=1,o=0;const s=e=>t[e]===E&&t[e+1]===f,u=e=>t[e]===L,a=e=>t[e]===d,i=e=>s(e)||(e=>t[e]===f)(e)||u(e)||a(e),l=e=>s(e)||u(e)||a(e)?f:t[e];function N(){return o=0,i(n)&&(r++,c=0),s(n)&&n++,n++,c++,t[n]}return{index:()=>n,line:()=>r,column:()=>c,peekOffset:()=>o,charAt:l,currentChar:()=>l(n),currentPeek:()=>l(n+o),next:N,peek:function(){return s(n+o)&&o++,o++,t[n+o]},reset:function(){n=0,r=1,c=1,o=0},resetPeek:function(e=0){o=e},skipToPeek:function(){const e=n+o;for(;e!==n;)N();o=0}}}const _=void 0,p=".",C="'";function T(e,r={}){const c=!1!==r.location,o=N(e),u=()=>o.index(),a=()=>t(o.line(),o.column(),o.index()),i=a(),E=u(),d={currentType:14,offset:E,startLoc:i,endLoc:i,lastType:14,lastOffset:E,lastStartLoc:i,lastEndLoc:i,braceNest:0,inLinked:!1,text:""},L=()=>d,{onError:T}=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 A=e=>k(e,14);function I(e,t){return e.currentChar()===t?(e.next(),t):(s.EXPECTED_TOKEN,a(),"")}function h(e){let t="";for(;e.currentPeek()===l||e.currentPeek()===f;)t+=e.currentPeek(),e.peek();return t}function P(e){const t=h(e);return e.skipToPeek(),t}function S(e){if(e===_)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function y(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=function(e){if(e===_)return!1;const t=e.charCodeAt(0);return t>=48&&t<=57}("-"===e.currentPeek()?e.peek():e.currentPeek());return e.resetPeek(),r}function D(e){h(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function O(e,t=!0){const n=(t=!1,r="",c=!1)=>{const o=e.currentPeek();return"{"===o?"%"!==r&&t:"@"!==o&&o?"%"===o?(e.peek(),n(t,"%",!0)):"|"===o?!("%"!==r&&!c)||!(r===l||r===f):o===l?(e.peek(),n(!0,l,c)):o!==f||(e.peek(),n(!0,f,c)):"%"===r||t},r=n();return t&&e.resetPeek(),r}function m(e,t){const n=e.currentChar();return n===_?_:t(n)?(e.next(),n):null}function b(e){return m(e,(e=>{const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||95===t||36===t}))}function x(e){return m(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function U(e){return m(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function v(e){let t="",n="";for(;t=x(e);)n+=t;return n}function R(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if("%"===n){if(!O(e))break;t+=n,e.next()}else if(n===l||n===f)if(O(e))t+=n,e.next();else{if(D(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function M(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return g(e,t,4);case"U":return g(e,t,6);default:return s.UNKNOWN_ESCAPE_SEQUENCE,a(),""}}function g(e,t,n){I(e,t);let r="";for(let c=0;c<n;c++){const t=U(e);if(!t){s.INVALID_UNICODE_ESCAPE_SEQUENCE,a(),e.currentChar();break}r+=t}return`\\${t}${r}`}function X(e){P(e);const t=I(e,"|");return P(e),t}function Y(e,t){let n=null;switch(e.currentChar()){case"{":return t.braceNest>=1&&(s.NOT_ALLOW_NEST_PLACEHOLDER,a()),e.next(),n=k(t,2,"{"),P(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&&P(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),n;case"@":return t.braceNest>0&&(s.UNTERMINATED_CLOSING_BRACE,a()),n=K(e,t)||A(t),t.braceNest=0,n;default:let r=!0,c=!0,o=!0;if(D(e))return t.braceNest>0&&(s.UNTERMINATED_CLOSING_BRACE,a()),n=k(t,1,X(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(5===t.currentType||6===t.currentType||7===t.currentType))return s.UNTERMINATED_CLOSING_BRACE,a(),t.braceNest=0,w(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=S(e.currentPeek());return e.resetPeek(),r}(e,t))return n=k(t,5,function(e){P(e);let t="",n="";for(;t=b(e);)n+=t;return e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),n}(e)),P(e),n;if(c=y(e,t))return n=k(t,6,function(e){P(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${v(e)}`):t+=v(e),e.currentChar()===_&&(s.UNTERMINATED_CLOSING_BRACE,a()),t}(e)),P(e),n;if(o=function(e,t){const{currentType:n}=t;if(2!==n)return!1;h(e);const r=e.currentPeek()===C;return e.resetPeek(),r}(e,t))return n=k(t,7,function(e){P(e),I(e,"'");let t="",n="";const r=e=>e!==C&&e!==f;for(;t=m(e,r);)n+="\\"===t?M(e):t;const c=e.currentChar();return c===f||c===_?(s.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,a(),c===f&&(e.next(),I(e,"'")),n):(I(e,"'"),n)}(e)),P(e),n;if(!r&&!c&&!o)return n=k(t,13,function(e){P(e);let t="",n="";const r=e=>"{"!==e&&"}"!==e&&e!==l&&e!==f;for(;t=m(e,r);)n+=t;return n}(e)),s.INVALID_TOKEN_IN_PLACEHOLDER,a(),n.value,P(e),n}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=k(t,8,"@"),t.inLinked=!0,r;case".":return P(e),e.next(),k(t,9,".");case":":return P(e),e.next(),k(t,10,":");default:return D(e)?(r=k(t,1,X(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(8!==n)return!1;h(e);const r="."===e.currentPeek();return e.resetPeek(),r}(e,t)||function(e,t){const{currentType:n}=t;if(8!==n&&12!==n)return!1;h(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(P(e),K(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;h(e);const r=S(e.currentPeek());return e.resetPeek(),r}(e,t)?(P(e),k(t,12,function(e){let t="",n="";for(;t=b(e);)n+=t;return n}(e))):function(e,t){const{currentType:n}=t;if(10!==n)return!1;const r=()=>{const t=e.currentPeek();return"{"===t?S(e.peek()):!("@"===t||"%"===t||"|"===t||":"===t||"."===t||t===l||!t)&&(t===f?(e.peek(),r()):S(t))},c=r();return e.resetPeek(),c}(e,t)?(P(e),"{"===c?Y(e,t)||r:k(t,11,function(e){const t=(n=!1,r)=>{const c=e.currentChar();return"{"!==c&&"%"!==c&&"@"!==c&&"|"!==c&&c?c===l?r:c===f||c===p?(r+=c,e.next(),t(n,r)):S(c)?(r+=c,e.next(),t(!0,r)):r:r};return t(!1,"")}(e))):(8===n&&(s.INVALID_LINKED_FORMAT,a()),t.braceNest=0,t.inLinked=!1,w(e,t))}}function w(e,t){let n={type:14};if(t.braceNest>0)return Y(e,t)||A(t);if(t.inLinked)return K(e,t)||A(t);switch(e.currentChar()){case"{":return Y(e,t)||A(t);case"}":return s.UNBALANCED_CLOSING_BRACE,a(),e.next(),k(t,3,"}");case"@":return K(e,t)||A(t);default:if(D(e))return n=k(t,1,X(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:c}=function(e){const t=h(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return c?k(t,0,R(e)):k(t,4,function(e){P(e);const t=e.currentChar();return"%"!==t&&(s.EXPECTED_TOKEN,a()),e.next(),"%"}(e));if(O(e))return k(t,0,R(e))}return n}return{nextToken:function(){const{currentType:e,offset:t,startLoc:n,endLoc:r}=d;return d.lastType=e,d.lastOffset=t,d.lastStartLoc=n,d.lastEndLoc=r,d.offset=u(),d.startLoc=a(),o.currentChar()===_?k(d,14):w(o,d)},currentOffset:u,currentPosition:a,context:L}}const k="parser",A=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function I(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):"�"}}}function h(e={}){const t=!1!==e.location,{onError:n}=e;function c(e,n,r){const c={type:e};return t&&(c.start=n,c.end=n,c.loc={start:r,end:r}),c}function o(e,n,r,c){c&&(e.type=c),t&&(e.end=n,e.loc&&(e.loc.end=r))}function u(e,t){const n=e.context(),r=c(3,n.offset,n.startLoc);return r.value=t,o(r,e.currentOffset(),e.currentPosition()),r}function a(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:s}=n,u=c(5,r,s);return u.index=parseInt(t,10),e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function i(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:s}=n,u=c(4,r,s);return u.key=t,e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function l(e,t){const n=e.context(),{lastOffset:r,lastStartLoc:s}=n,u=c(9,r,s);return u.value=t.replace(A,I),e.nextToken(),o(u,e.currentOffset(),e.currentPosition()),u}function E(e){const t=e.context(),n=c(6,t.offset,t.startLoc);let r=e.nextToken();if(9===r.type){const t=function(e){const t=e.nextToken(),n=e.context(),{lastOffset:r,lastStartLoc:u}=n,a=c(8,r,u);return 12!==t.type?(s.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,a.value="",o(a,r,u),{nextConsumeToken:t,node:a}):(null==t.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,P(t)),a.value=t.value||"",o(a,e.currentOffset(),e.currentPosition()),{node:a})}(e);n.modifier=t.node,r=t.nextConsumeToken||e.nextToken()}switch(10!==r.type&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),r=e.nextToken(),2===r.type&&(r=e.nextToken()),r.type){case 11:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=function(e,t){const n=e.context(),r=c(7,n.offset,n.startLoc);return r.value=t,o(r,e.currentOffset(),e.currentPosition()),r}(e,r.value||"");break;case 5:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=i(e,r.value||"");break;case 6:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=a(e,r.value||"");break;case 7:null==r.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(r)),n.key=l(e,r.value||"");break;default:s.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc;const u=e.context(),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,P(c)),n.items.push(u(e,c.value||""));break;case 6:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(a(e,c.value||""));break;case 5:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(i(e,c.value||""));break;case 7:null==c.value&&(s.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,P(c)),n.items.push(l(e,c.value||""));break;case 8:const 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 d(e){const t=e.context(),{offset:n,startLoc:r}=t,u=f(e);return 14===t.currentType?u:function(e,t,n,r){const u=e.context();let a=0===r.items.length;const i=c(1,t,n);i.cases=[],i.cases.push(r);do{const t=f(e);a||(a=0===t.items.length),i.cases.push(t)}while(14!==u.currentType);return a&&s.MUST_HAVE_MESSAGES_IN_PLURAL,o(i,e.currentOffset(),e.currentPosition()),i}(e,n,r,u)}return{parse:function(n){const u=T(n,r({},e)),a=u.context(),i=c(0,a.offset,a.startLoc);return t&&i.loc&&(i.loc.source=n),i.body=d(u),e.onCacheKey&&(i.cacheKey=e.onCacheKey(n)),14!==a.currentType&&(s.UNEXPECTED_LEXICAL_ANALYSIS,a.lastStartLoc,n[a.offset]),o(i,u.currentOffset(),u.currentPosition()),i}}}function P(e){if(14===e.type)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function S(e,t){for(let n=0;n<e.length;n++)y(e[n],t)}function y(e,t){switch(e.type){case 1:S(e.cases,t),t.helper("plural");break;case 2:S(e.items,t);break;case 6:y(e.key,t),t.helper("linked"),t.helper("type");break;case 5:t.helper("interpolate"),t.helper("list");break;case 4:t.helper("interpolate"),t.helper("named")}}function D(e,t={}){const n=function(e,t={}){const n={ast:e,helpers:new Set};return{context:()=>n,helper:e=>(n.helpers.add(e),e)}}(e);n.helper("normalize"),e.body&&y(e.body,n);const r=n.context();e.helpers=Array.from(r.helpers)}function O(e){if(1===e.items.length){const t=e.items[0];3!==t.type&&9!==t.type||(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n<e.items.length;n++){const r=e.items[n];if(3!==r.type&&9!==r.type)break;if(null==r.value)break;t.push(r.value)}if(t.length===e.items.length){e.static=o(t);for(let t=0;t<e.items.length;t++){const n=e.items[t];3!==n.type&&9!==n.type||delete n.value}}}}function m(e){switch(e.t=e.type,e.type){case 0:const t=e;m(t.body),t.b=t.body,delete t.body;break;case 1:const n=e,r=n.cases;for(let e=0;e<r.length;e++)m(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++)m(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;m(u.key),u.k=u.key,delete u.key,u.modifier&&(m(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 b(e,t){const{helper:n}=e;switch(t.type){case 0:!function(e,t){t.body?b(e,t.body):e.push("null")}(e,t);break;case 1:!function(e,t){const{helper:n,needIndent:r}=e;if(t.cases.length>1){e.push(`${n("plural")}([`),e.indent(r());const c=t.cases.length;for(let n=0;n<c&&(b(e,t.cases[n]),n!==c-1);n++)e.push(", ");e.deindent(r()),e.push("])")}}(e,t);break;case 2:!function(e,t){const{helper:n,needIndent:r}=e;e.push(`${n("normalize")}([`),e.indent(r());const c=t.items.length;for(let o=0;o<c&&(b(e,t.items[o]),o!==c-1);o++)e.push(", ");e.deindent(r()),e.push("])")}(e,t);break;case 6:!function(e,t){const{helper:n}=e;e.push(`${n("linked")}(`),b(e,t.key),t.modifier?(e.push(", "),b(e,t.modifier),e.push(", _type")):e.push(", undefined, _type"),e.push(")")}(e,t);break;case 8:case 7:case 9:case 3:e.push(JSON.stringify(t.value),t);break;case 5:e.push(`${n("interpolate")}(${n("list")}(${t.index}))`,t);break;case 4:e.push(`${n("interpolate")}(${n("named")}(${JSON.stringify(t.key)}))`,t)}}return e.CompileErrorCodes=s,e.ERROR_DOMAIN=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=h(n).parse(e);return s?(a&&function(e){const t=e.body;2===t.type?O(t):t.cases.forEach((e=>O(e)))}(i),u&&m(i),{ast:i,code:""}):(D(i,n),((e,t={})=>{const n=c(t.mode)?t.mode:"normal",r=c(t.filename)?t.filename:"message.intl",s=!!t.sourceMap,u=null!=t.breakLineCode?t.breakLineCode:"arrow"===n?";":"\n",a=t.needIndent?t.needIndent:"arrow"!==n,i=e.helpers||[],l=function(e,t){const{sourceMap:n,filename:r,breakLineCode:c,needIndent:o}=t,s=!1!==t.location,u={filename:r,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:c,needIndent:o,indentLevel:0};function a(e,t){u.code+=e}function i(e,t=!0){const n=t?c:"";a(o?n+" ".repeat(e):n)}return s&&e.loc&&(u.source=e.loc.source),{context:()=>u,push:a,indent:function(e=!0){const t=++u.indentLevel;e&&i(t)},deindent:function(e=!0){const t=--u.indentLevel;e&&i(t)},newline:function(){i(u.indentLevel)},helper:e=>`_${e}`,needIndent:()=>u.needIndent}}(e,{mode:n,filename:r,sourceMap:s,breakLineCode:u,needIndent:a});l.push("normal"===n?"function __msg__ (ctx) {":"(ctx) => {"),l.indent(a),i.length>0&&(l.push(`const { ${o(i.map((e=>`${e}: _${e}`)),", ")} } = ctx`),l.newline()),l.push("return "),b(l,e),l.deindent(a),l.push("}"),delete e.helpers;const{code:E,map:f}=l.context();return{ast:e,code:E,map:f?f.toJSON():void 0}})(i,n))},e.createCompileError=a,e.createLocation=n,e.createParser=h,e.createPosition=t,e.defaultOnError=function(e){throw e},e.detectHtmlTag=e=>i.test(e),e.errorMessages=u,e}({});
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * message-compiler v9.3.0-beta.25
2
+ * message-compiler v9.3.0-beta.27
3
3
  * (c) 2023 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -37,10 +37,14 @@ const CompileErrorCodes = {
37
37
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
38
38
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
39
39
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
40
+ // generator error codes
41
+ UNHANDLED_CODEGEN_NODE_TYPE: 15,
42
+ // minifier error codes
43
+ UNHANDLED_MINIFIER_NODE_TYPE: 16,
40
44
  // Special value for higher-order compilers to pick up the last code
41
45
  // to avoid collision of error codes. This should always be kept as the last
42
46
  // item.
43
- __EXTEND_POINT__: 15
47
+ __EXTEND_POINT__: 17
44
48
  };
45
49
  /** @internal */
46
50
  const errorMessages = {
@@ -59,7 +63,11 @@ const errorMessages = {
59
63
  [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
60
64
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
61
65
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
62
- [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`
66
+ [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
67
+ // generator error messages
68
+ [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
69
+ // minimizer error messages
70
+ [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
63
71
  };
64
72
  function createCompileError(code, loc, options = {}) {
65
73
  const { domain, messages, args } = options;
@@ -159,8 +167,9 @@ function createScanner(str) {
159
167
  }
160
168
 
161
169
  const EOF = undefined;
170
+ const DOT = '.';
162
171
  const LITERAL_DELIMITER = "'";
163
- const ERROR_DOMAIN$1 = 'tokenizer';
172
+ const ERROR_DOMAIN$3 = 'tokenizer';
164
173
  function createTokenizer(source, options = {}) {
165
174
  const location = options.location !== false;
166
175
  const _scnr = createScanner(source);
@@ -190,7 +199,7 @@ function createTokenizer(source, options = {}) {
190
199
  if (onError) {
191
200
  const loc = location ? createLocation(ctx.startLoc, pos) : null;
192
201
  const err = createCompileError(code, loc, {
193
- domain: ERROR_DOMAIN$1,
202
+ domain: ERROR_DOMAIN$3,
194
203
  args
195
204
  });
196
205
  onError(err);
@@ -606,11 +615,14 @@ function createTokenizer(source, options = {}) {
606
615
  else if (ch === CHAR_SP) {
607
616
  return buf;
608
617
  }
609
- else if (ch === CHAR_LF) {
618
+ else if (ch === CHAR_LF || ch === DOT) {
610
619
  buf += ch;
611
620
  scnr.next();
612
621
  return fn(detect, buf);
613
622
  }
623
+ else if (!isIdentifierStart(ch)) {
624
+ return buf;
625
+ }
614
626
  else {
615
627
  buf += ch;
616
628
  scnr.next();
@@ -829,7 +841,7 @@ function createTokenizer(source, options = {}) {
829
841
  };
830
842
  }
831
843
 
832
- const ERROR_DOMAIN = 'parser';
844
+ const ERROR_DOMAIN$2 = 'parser';
833
845
  // Backslash backslash, backslash quote, uHHHH, UHHHHHH.
834
846
  const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
835
847
  function fromEscapeSequence(match, codePoint4, codePoint6) {
@@ -859,7 +871,7 @@ function createParser(options = {}) {
859
871
  if (onError) {
860
872
  const loc = location ? createLocation(start, end) : null;
861
873
  const err = createCompileError(code, loc, {
862
- domain: ERROR_DOMAIN,
874
+ domain: ERROR_DOMAIN$2,
863
875
  args
864
876
  });
865
877
  onError(err);
@@ -1227,6 +1239,7 @@ function optimizeMessageNode(message) {
1227
1239
  }
1228
1240
  }
1229
1241
 
1242
+ const ERROR_DOMAIN$1 = 'minifier';
1230
1243
  /* eslint-disable @typescript-eslint/no-explicit-any */
1231
1244
  function minify(node) {
1232
1245
  node.t = node.type;
@@ -1292,13 +1305,17 @@ function minify(node) {
1292
1305
  break;
1293
1306
  default:
1294
1307
  if ((process.env.NODE_ENV !== 'production')) {
1295
- throw new Error(`unhandled minify node type: ${node.type}`);
1308
+ throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
1309
+ domain: ERROR_DOMAIN$1,
1310
+ args: [node.type]
1311
+ });
1296
1312
  }
1297
1313
  }
1298
1314
  delete node.type;
1299
1315
  }
1300
1316
  /* eslint-enable @typescript-eslint/no-explicit-any */
1301
1317
 
1318
+ const ERROR_DOMAIN = 'parser';
1302
1319
  function createCodeGenerator(ast, options) {
1303
1320
  const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
1304
1321
  const location = options.location !== false;
@@ -1436,7 +1453,10 @@ function generateNode(generator, node) {
1436
1453
  break;
1437
1454
  default:
1438
1455
  if ((process.env.NODE_ENV !== 'production')) {
1439
- throw new Error(`unhandled codegen node type: ${node.type}`);
1456
+ throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
1457
+ domain: ERROR_DOMAIN,
1458
+ args: [node.type]
1459
+ });
1440
1460
  }
1441
1461
  }
1442
1462
  }
@@ -1506,4 +1526,4 @@ function baseCompile(source, options = {}) {
1506
1526
  }
1507
1527
  }
1508
1528
 
1509
- export { CompileErrorCodes, ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };
1529
+ export { CompileErrorCodes, ERROR_DOMAIN$2 as 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.25
2
+ * message-compiler v9.3.0-beta.27
3
3
  * (c) 2023 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -38,10 +38,14 @@ const CompileErrorCodes = {
38
38
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
39
39
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
40
40
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
41
+ // generator error codes
42
+ UNHANDLED_CODEGEN_NODE_TYPE: 15,
43
+ // minifier error codes
44
+ UNHANDLED_MINIFIER_NODE_TYPE: 16,
41
45
  // Special value for higher-order compilers to pick up the last code
42
46
  // to avoid collision of error codes. This should always be kept as the last
43
47
  // item.
44
- __EXTEND_POINT__: 15
48
+ __EXTEND_POINT__: 17
45
49
  };
46
50
  /** @internal */
47
51
  const errorMessages = {
@@ -60,7 +64,11 @@ const errorMessages = {
60
64
  [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
61
65
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
62
66
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
63
- [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`
67
+ [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
68
+ // generator error messages
69
+ [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
70
+ // minimizer error messages
71
+ [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
64
72
  };
65
73
  function createCompileError(code, loc, options = {}) {
66
74
  const { domain, messages, args } = options;
@@ -160,8 +168,9 @@ function createScanner(str) {
160
168
  }
161
169
 
162
170
  const EOF = undefined;
171
+ const DOT = '.';
163
172
  const LITERAL_DELIMITER = "'";
164
- const ERROR_DOMAIN$1 = 'tokenizer';
173
+ const ERROR_DOMAIN$3 = 'tokenizer';
165
174
  function createTokenizer(source, options = {}) {
166
175
  const location = options.location !== false;
167
176
  const _scnr = createScanner(source);
@@ -191,7 +200,7 @@ function createTokenizer(source, options = {}) {
191
200
  if (onError) {
192
201
  const loc = location ? createLocation(ctx.startLoc, pos) : null;
193
202
  const err = createCompileError(code, loc, {
194
- domain: ERROR_DOMAIN$1,
203
+ domain: ERROR_DOMAIN$3,
195
204
  args
196
205
  });
197
206
  onError(err);
@@ -607,11 +616,14 @@ function createTokenizer(source, options = {}) {
607
616
  else if (ch === CHAR_SP) {
608
617
  return buf;
609
618
  }
610
- else if (ch === CHAR_LF) {
619
+ else if (ch === CHAR_LF || ch === DOT) {
611
620
  buf += ch;
612
621
  scnr.next();
613
622
  return fn(detect, buf);
614
623
  }
624
+ else if (!isIdentifierStart(ch)) {
625
+ return buf;
626
+ }
615
627
  else {
616
628
  buf += ch;
617
629
  scnr.next();
@@ -830,7 +842,7 @@ function createTokenizer(source, options = {}) {
830
842
  };
831
843
  }
832
844
 
833
- const ERROR_DOMAIN = 'parser';
845
+ const ERROR_DOMAIN$2 = 'parser';
834
846
  // Backslash backslash, backslash quote, uHHHH, UHHHHHH.
835
847
  const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
836
848
  function fromEscapeSequence(match, codePoint4, codePoint6) {
@@ -860,7 +872,7 @@ function createParser(options = {}) {
860
872
  if (onError) {
861
873
  const loc = location ? createLocation(start, end) : null;
862
874
  const err = createCompileError(code, loc, {
863
- domain: ERROR_DOMAIN,
875
+ domain: ERROR_DOMAIN$2,
864
876
  args
865
877
  });
866
878
  onError(err);
@@ -1228,6 +1240,7 @@ function optimizeMessageNode(message) {
1228
1240
  }
1229
1241
  }
1230
1242
 
1243
+ const ERROR_DOMAIN$1 = 'minifier';
1231
1244
  /* eslint-disable @typescript-eslint/no-explicit-any */
1232
1245
  function minify(node) {
1233
1246
  node.t = node.type;
@@ -1293,13 +1306,17 @@ function minify(node) {
1293
1306
  break;
1294
1307
  default:
1295
1308
  if ((process.env.NODE_ENV !== 'production')) {
1296
- throw new Error(`unhandled minify node type: ${node.type}`);
1309
+ throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, {
1310
+ domain: ERROR_DOMAIN$1,
1311
+ args: [node.type]
1312
+ });
1297
1313
  }
1298
1314
  }
1299
1315
  delete node.type;
1300
1316
  }
1301
1317
  /* eslint-enable @typescript-eslint/no-explicit-any */
1302
1318
 
1319
+ const ERROR_DOMAIN = 'parser';
1303
1320
  function createCodeGenerator(ast, options) {
1304
1321
  const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options;
1305
1322
  const location = options.location !== false;
@@ -1461,7 +1478,10 @@ function generateNode(generator, node) {
1461
1478
  break;
1462
1479
  default:
1463
1480
  if ((process.env.NODE_ENV !== 'production')) {
1464
- throw new Error(`unhandled codegen node type: ${node.type}`);
1481
+ throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, {
1482
+ domain: ERROR_DOMAIN,
1483
+ args: [node.type]
1484
+ });
1465
1485
  }
1466
1486
  }
1467
1487
  }
@@ -1563,4 +1583,4 @@ function baseCompile(source, options = {}) {
1563
1583
  }
1564
1584
  }
1565
1585
 
1566
- export { CompileErrorCodes, ERROR_DOMAIN, LOCATION_STUB, baseCompile, createCompileError, createLocation, createParser, createPosition, defaultOnError, detectHtmlTag, errorMessages };
1586
+ export { CompileErrorCodes, ERROR_DOMAIN$2 as 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.25
2
+ * message-compiler v9.3.0-beta.27
3
3
  * (c) 2023 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -40,10 +40,14 @@ const CompileErrorCodes = {
40
40
  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
41
41
  UNEXPECTED_EMPTY_LINKED_KEY: 13,
42
42
  UNEXPECTED_LEXICAL_ANALYSIS: 14,
43
+ // generator error codes
44
+ UNHANDLED_CODEGEN_NODE_TYPE: 15,
45
+ // minifier error codes
46
+ UNHANDLED_MINIFIER_NODE_TYPE: 16,
43
47
  // Special value for higher-order compilers to pick up the last code
44
48
  // to avoid collision of error codes. This should always be kept as the last
45
49
  // item.
46
- __EXTEND_POINT__: 15
50
+ __EXTEND_POINT__: 17
47
51
  };
48
52
  /** @internal */
49
53
  const errorMessages = {
@@ -62,7 +66,11 @@ const errorMessages = {
62
66
  [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`,
63
67
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`,
64
68
  [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`,
65
- [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`
69
+ [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`,
70
+ // generator error messages
71
+ [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`,
72
+ // minimizer error messages
73
+ [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'`
66
74
  };
67
75
  function createCompileError(code, loc, options = {}) {
68
76
  const { domain, messages, args } = options;
@@ -160,6 +168,7 @@ function createScanner(str) {
160
168
  }
161
169
 
162
170
  const EOF = undefined;
171
+ const DOT = '.';
163
172
  const LITERAL_DELIMITER = "'";
164
173
  const ERROR_DOMAIN$1 = 'tokenizer';
165
174
  function createTokenizer(source, options = {}) {
@@ -607,11 +616,14 @@ function createTokenizer(source, options = {}) {
607
616
  else if (ch === CHAR_SP) {
608
617
  return buf;
609
618
  }
610
- else if (ch === CHAR_LF) {
619
+ else if (ch === CHAR_LF || ch === DOT) {
611
620
  buf += ch;
612
621
  scnr.next();
613
622
  return fn(detect, buf);
614
623
  }
624
+ else if (!isIdentifierStart(ch)) {
625
+ return buf;
626
+ }
615
627
  else {
616
628
  buf += ch;
617
629
  scnr.next();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlify/message-compiler",
3
- "version": "9.3.0-beta.25",
3
+ "version": "9.3.0-beta.27",
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.25"
37
+ "@intlify/shared": "9.3.0-beta.27"
38
38
  },
39
39
  "engines": {
40
40
  "node": ">= 16"