@intlify/message-compiler 9.3.0-beta.1 → 9.3.0-beta.11

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.1
2
+ * message-compiler v9.3.0-beta.11
3
3
  * (c) 2022 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -166,11 +166,11 @@ function createTokenizer(source, options = {}) {
166
166
  const _initLoc = currentPosition();
167
167
  const _initOffset = currentOffset();
168
168
  const _context = {
169
- currentType: 14 /* EOF */,
169
+ currentType: 14 /* TokenTypes.EOF */,
170
170
  offset: _initOffset,
171
171
  startLoc: _initLoc,
172
172
  endLoc: _initLoc,
173
- lastType: 14 /* EOF */,
173
+ lastType: 14 /* TokenTypes.EOF */,
174
174
  lastOffset: _initOffset,
175
175
  lastStartLoc: _initLoc,
176
176
  lastEndLoc: _initLoc,
@@ -205,7 +205,7 @@ function createTokenizer(source, options = {}) {
205
205
  }
206
206
  return token;
207
207
  }
208
- const getEndToken = (context) => getToken(context, 14 /* EOF */);
208
+ const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);
209
209
  function eat(scnr, ch) {
210
210
  if (scnr.currentChar() === ch) {
211
211
  scnr.next();
@@ -248,7 +248,7 @@ function createTokenizer(source, options = {}) {
248
248
  }
249
249
  function isNamedIdentifierStart(scnr, context) {
250
250
  const { currentType } = context;
251
- if (currentType !== 2 /* BraceLeft */) {
251
+ if (currentType !== 2 /* TokenTypes.BraceLeft */) {
252
252
  return false;
253
253
  }
254
254
  peekSpaces(scnr);
@@ -258,7 +258,7 @@ function createTokenizer(source, options = {}) {
258
258
  }
259
259
  function isListIdentifierStart(scnr, context) {
260
260
  const { currentType } = context;
261
- if (currentType !== 2 /* BraceLeft */) {
261
+ if (currentType !== 2 /* TokenTypes.BraceLeft */) {
262
262
  return false;
263
263
  }
264
264
  peekSpaces(scnr);
@@ -269,7 +269,7 @@ function createTokenizer(source, options = {}) {
269
269
  }
270
270
  function isLiteralStart(scnr, context) {
271
271
  const { currentType } = context;
272
- if (currentType !== 2 /* BraceLeft */) {
272
+ if (currentType !== 2 /* TokenTypes.BraceLeft */) {
273
273
  return false;
274
274
  }
275
275
  peekSpaces(scnr);
@@ -279,17 +279,17 @@ function createTokenizer(source, options = {}) {
279
279
  }
280
280
  function isLinkedDotStart(scnr, context) {
281
281
  const { currentType } = context;
282
- if (currentType !== 8 /* LinkedAlias */) {
282
+ if (currentType !== 8 /* TokenTypes.LinkedAlias */) {
283
283
  return false;
284
284
  }
285
285
  peekSpaces(scnr);
286
- const ret = scnr.currentPeek() === "." /* LinkedDot */;
286
+ const ret = scnr.currentPeek() === "." /* TokenChars.LinkedDot */;
287
287
  scnr.resetPeek();
288
288
  return ret;
289
289
  }
290
290
  function isLinkedModifierStart(scnr, context) {
291
291
  const { currentType } = context;
292
- if (currentType !== 9 /* LinkedDot */) {
292
+ if (currentType !== 9 /* TokenTypes.LinkedDot */) {
293
293
  return false;
294
294
  }
295
295
  peekSpaces(scnr);
@@ -299,30 +299,30 @@ function createTokenizer(source, options = {}) {
299
299
  }
300
300
  function isLinkedDelimiterStart(scnr, context) {
301
301
  const { currentType } = context;
302
- if (!(currentType === 8 /* LinkedAlias */ ||
303
- currentType === 12 /* LinkedModifier */)) {
302
+ if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||
303
+ currentType === 12 /* TokenTypes.LinkedModifier */)) {
304
304
  return false;
305
305
  }
306
306
  peekSpaces(scnr);
307
- const ret = scnr.currentPeek() === ":" /* LinkedDelimiter */;
307
+ const ret = scnr.currentPeek() === ":" /* TokenChars.LinkedDelimiter */;
308
308
  scnr.resetPeek();
309
309
  return ret;
310
310
  }
311
311
  function isLinkedReferStart(scnr, context) {
312
312
  const { currentType } = context;
313
- if (currentType !== 10 /* LinkedDelimiter */) {
313
+ if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {
314
314
  return false;
315
315
  }
316
316
  const fn = () => {
317
317
  const ch = scnr.currentPeek();
318
- if (ch === "{" /* BraceLeft */) {
318
+ if (ch === "{" /* TokenChars.BraceLeft */) {
319
319
  return isIdentifierStart(scnr.peek());
320
320
  }
321
- else if (ch === "@" /* LinkedAlias */ ||
322
- ch === "%" /* Modulo */ ||
323
- ch === "|" /* Pipe */ ||
324
- ch === ":" /* LinkedDelimiter */ ||
325
- ch === "." /* LinkedDot */ ||
321
+ else if (ch === "@" /* TokenChars.LinkedAlias */ ||
322
+ ch === "%" /* TokenChars.Modulo */ ||
323
+ ch === "|" /* TokenChars.Pipe */ ||
324
+ ch === ":" /* TokenChars.LinkedDelimiter */ ||
325
+ ch === "." /* TokenChars.LinkedDot */ ||
326
326
  ch === CHAR_SP ||
327
327
  !ch) {
328
328
  return false;
@@ -342,14 +342,14 @@ function createTokenizer(source, options = {}) {
342
342
  }
343
343
  function isPluralStart(scnr) {
344
344
  peekSpaces(scnr);
345
- const ret = scnr.currentPeek() === "|" /* Pipe */;
345
+ const ret = scnr.currentPeek() === "|" /* TokenChars.Pipe */;
346
346
  scnr.resetPeek();
347
347
  return ret;
348
348
  }
349
349
  function detectModuloStart(scnr) {
350
350
  const spaces = peekSpaces(scnr);
351
- const ret = scnr.currentPeek() === "%" /* Modulo */ &&
352
- scnr.peek() === "{" /* BraceLeft */;
351
+ const ret = scnr.currentPeek() === "%" /* TokenChars.Modulo */ &&
352
+ scnr.peek() === "{" /* TokenChars.BraceLeft */;
353
353
  scnr.resetPeek();
354
354
  return {
355
355
  isModulo: ret,
@@ -359,18 +359,18 @@ function createTokenizer(source, options = {}) {
359
359
  function isTextStart(scnr, reset = true) {
360
360
  const fn = (hasSpace = false, prev = '', detectModulo = false) => {
361
361
  const ch = scnr.currentPeek();
362
- if (ch === "{" /* BraceLeft */) {
363
- return prev === "%" /* Modulo */ ? false : hasSpace;
362
+ if (ch === "{" /* TokenChars.BraceLeft */) {
363
+ return prev === "%" /* TokenChars.Modulo */ ? false : hasSpace;
364
364
  }
365
- else if (ch === "@" /* LinkedAlias */ || !ch) {
366
- return prev === "%" /* Modulo */ ? true : hasSpace;
365
+ else if (ch === "@" /* TokenChars.LinkedAlias */ || !ch) {
366
+ return prev === "%" /* TokenChars.Modulo */ ? true : hasSpace;
367
367
  }
368
- else if (ch === "%" /* Modulo */) {
368
+ else if (ch === "%" /* TokenChars.Modulo */) {
369
369
  scnr.peek();
370
- return fn(hasSpace, "%" /* Modulo */, true);
370
+ return fn(hasSpace, "%" /* TokenChars.Modulo */, true);
371
371
  }
372
- else if (ch === "|" /* Pipe */) {
373
- return prev === "%" /* Modulo */ || detectModulo
372
+ else if (ch === "|" /* TokenChars.Pipe */) {
373
+ return prev === "%" /* TokenChars.Modulo */ || detectModulo
374
374
  ? true
375
375
  : !(prev === CHAR_SP || prev === CHAR_LF);
376
376
  }
@@ -440,24 +440,24 @@ function createTokenizer(source, options = {}) {
440
440
  function readModulo(scnr) {
441
441
  skipSpaces(scnr);
442
442
  const ch = scnr.currentChar();
443
- if (ch !== "%" /* Modulo */) {
443
+ if (ch !== "%" /* TokenChars.Modulo */) {
444
444
  emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
445
445
  }
446
446
  scnr.next();
447
- return "%" /* Modulo */;
447
+ return "%" /* TokenChars.Modulo */;
448
448
  }
449
449
  function readText(scnr) {
450
450
  let buf = '';
451
451
  while (true) {
452
452
  const ch = scnr.currentChar();
453
- if (ch === "{" /* BraceLeft */ ||
454
- ch === "}" /* BraceRight */ ||
455
- ch === "@" /* LinkedAlias */ ||
456
- ch === "|" /* Pipe */ ||
453
+ if (ch === "{" /* TokenChars.BraceLeft */ ||
454
+ ch === "}" /* TokenChars.BraceRight */ ||
455
+ ch === "@" /* TokenChars.LinkedAlias */ ||
456
+ ch === "|" /* TokenChars.Pipe */ ||
457
457
  !ch) {
458
458
  break;
459
459
  }
460
- else if (ch === "%" /* Modulo */) {
460
+ else if (ch === "%" /* TokenChars.Modulo */) {
461
461
  if (isTextStart(scnr)) {
462
462
  buf += ch;
463
463
  scnr.next();
@@ -573,8 +573,8 @@ function createTokenizer(source, options = {}) {
573
573
  skipSpaces(scnr);
574
574
  let ch = '';
575
575
  let identifiers = '';
576
- const closure = (ch) => ch !== "{" /* BraceLeft */ &&
577
- ch !== "}" /* BraceRight */ &&
576
+ const closure = (ch) => ch !== "{" /* TokenChars.BraceLeft */ &&
577
+ ch !== "}" /* TokenChars.BraceRight */ &&
578
578
  ch !== CHAR_SP &&
579
579
  ch !== CHAR_LF;
580
580
  while ((ch = takeChar(scnr, closure))) {
@@ -593,10 +593,10 @@ function createTokenizer(source, options = {}) {
593
593
  function readLinkedRefer(scnr) {
594
594
  const fn = (detect = false, buf) => {
595
595
  const ch = scnr.currentChar();
596
- if (ch === "{" /* BraceLeft */ ||
597
- ch === "%" /* Modulo */ ||
598
- ch === "@" /* LinkedAlias */ ||
599
- ch === "|" /* Pipe */ ||
596
+ if (ch === "{" /* TokenChars.BraceLeft */ ||
597
+ ch === "%" /* TokenChars.Modulo */ ||
598
+ ch === "@" /* TokenChars.LinkedAlias */ ||
599
+ ch === "|" /* TokenChars.Pipe */ ||
600
600
  !ch) {
601
601
  return buf;
602
602
  }
@@ -618,7 +618,7 @@ function createTokenizer(source, options = {}) {
618
618
  }
619
619
  function readPlural(scnr) {
620
620
  skipSpaces(scnr);
621
- const plural = eat(scnr, "|" /* Pipe */);
621
+ const plural = eat(scnr, "|" /* TokenChars.Pipe */);
622
622
  skipSpaces(scnr);
623
623
  return plural;
624
624
  }
@@ -627,29 +627,29 @@ function createTokenizer(source, options = {}) {
627
627
  let token = null;
628
628
  const ch = scnr.currentChar();
629
629
  switch (ch) {
630
- case "{" /* BraceLeft */:
630
+ case "{" /* TokenChars.BraceLeft */:
631
631
  if (context.braceNest >= 1) {
632
632
  emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);
633
633
  }
634
634
  scnr.next();
635
- token = getToken(context, 2 /* BraceLeft */, "{" /* BraceLeft */);
635
+ token = getToken(context, 2 /* TokenTypes.BraceLeft */, "{" /* TokenChars.BraceLeft */);
636
636
  skipSpaces(scnr);
637
637
  context.braceNest++;
638
638
  return token;
639
- case "}" /* BraceRight */:
639
+ case "}" /* TokenChars.BraceRight */:
640
640
  if (context.braceNest > 0 &&
641
- context.currentType === 2 /* BraceLeft */) {
641
+ context.currentType === 2 /* TokenTypes.BraceLeft */) {
642
642
  emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);
643
643
  }
644
644
  scnr.next();
645
- token = getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
645
+ token = getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
646
646
  context.braceNest--;
647
647
  context.braceNest > 0 && skipSpaces(scnr);
648
648
  if (context.inLinked && context.braceNest === 0) {
649
649
  context.inLinked = false;
650
650
  }
651
651
  return token;
652
- case "@" /* LinkedAlias */:
652
+ case "@" /* TokenChars.LinkedAlias */:
653
653
  if (context.braceNest > 0) {
654
654
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
655
655
  }
@@ -664,38 +664,38 @@ function createTokenizer(source, options = {}) {
664
664
  if (context.braceNest > 0) {
665
665
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
666
666
  }
667
- token = getToken(context, 1 /* Pipe */, readPlural(scnr));
667
+ token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
668
668
  // reset
669
669
  context.braceNest = 0;
670
670
  context.inLinked = false;
671
671
  return token;
672
672
  }
673
673
  if (context.braceNest > 0 &&
674
- (context.currentType === 5 /* Named */ ||
675
- context.currentType === 6 /* List */ ||
676
- context.currentType === 7 /* Literal */)) {
674
+ (context.currentType === 5 /* TokenTypes.Named */ ||
675
+ context.currentType === 6 /* TokenTypes.List */ ||
676
+ context.currentType === 7 /* TokenTypes.Literal */)) {
677
677
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
678
678
  context.braceNest = 0;
679
679
  return readToken(scnr, context);
680
680
  }
681
681
  if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {
682
- token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));
682
+ token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));
683
683
  skipSpaces(scnr);
684
684
  return token;
685
685
  }
686
686
  if ((validListIdentifier = isListIdentifierStart(scnr, context))) {
687
- token = getToken(context, 6 /* List */, readListIdentifier(scnr));
687
+ token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));
688
688
  skipSpaces(scnr);
689
689
  return token;
690
690
  }
691
691
  if ((validLiteral = isLiteralStart(scnr, context))) {
692
- token = getToken(context, 7 /* Literal */, readLiteral(scnr));
692
+ token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));
693
693
  skipSpaces(scnr);
694
694
  return token;
695
695
  }
696
696
  if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
697
697
  // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...
698
- token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));
698
+ token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));
699
699
  emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
700
700
  skipSpaces(scnr);
701
701
  return token;
@@ -709,30 +709,30 @@ function createTokenizer(source, options = {}) {
709
709
  const { currentType } = context;
710
710
  let token = null;
711
711
  const ch = scnr.currentChar();
712
- if ((currentType === 8 /* LinkedAlias */ ||
713
- currentType === 9 /* LinkedDot */ ||
714
- currentType === 12 /* LinkedModifier */ ||
715
- currentType === 10 /* LinkedDelimiter */) &&
712
+ if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||
713
+ currentType === 9 /* TokenTypes.LinkedDot */ ||
714
+ currentType === 12 /* TokenTypes.LinkedModifier */ ||
715
+ currentType === 10 /* TokenTypes.LinkedDelimiter */) &&
716
716
  (ch === CHAR_LF || ch === CHAR_SP)) {
717
717
  emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
718
718
  }
719
719
  switch (ch) {
720
- case "@" /* LinkedAlias */:
720
+ case "@" /* TokenChars.LinkedAlias */:
721
721
  scnr.next();
722
- token = getToken(context, 8 /* LinkedAlias */, "@" /* LinkedAlias */);
722
+ token = getToken(context, 8 /* TokenTypes.LinkedAlias */, "@" /* TokenChars.LinkedAlias */);
723
723
  context.inLinked = true;
724
724
  return token;
725
- case "." /* LinkedDot */:
725
+ case "." /* TokenChars.LinkedDot */:
726
726
  skipSpaces(scnr);
727
727
  scnr.next();
728
- return getToken(context, 9 /* LinkedDot */, "." /* LinkedDot */);
729
- case ":" /* LinkedDelimiter */:
728
+ return getToken(context, 9 /* TokenTypes.LinkedDot */, "." /* TokenChars.LinkedDot */);
729
+ case ":" /* TokenChars.LinkedDelimiter */:
730
730
  skipSpaces(scnr);
731
731
  scnr.next();
732
- return getToken(context, 10 /* LinkedDelimiter */, ":" /* LinkedDelimiter */);
732
+ return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, ":" /* TokenChars.LinkedDelimiter */);
733
733
  default:
734
734
  if (isPluralStart(scnr)) {
735
- token = getToken(context, 1 /* Pipe */, readPlural(scnr));
735
+ token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
736
736
  // reset
737
737
  context.braceNest = 0;
738
738
  context.inLinked = false;
@@ -745,19 +745,19 @@ function createTokenizer(source, options = {}) {
745
745
  }
746
746
  if (isLinkedModifierStart(scnr, context)) {
747
747
  skipSpaces(scnr);
748
- return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));
748
+ return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));
749
749
  }
750
750
  if (isLinkedReferStart(scnr, context)) {
751
751
  skipSpaces(scnr);
752
- if (ch === "{" /* BraceLeft */) {
752
+ if (ch === "{" /* TokenChars.BraceLeft */) {
753
753
  // scan the placeholder
754
754
  return readTokenInPlaceholder(scnr, context) || token;
755
755
  }
756
756
  else {
757
- return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));
757
+ return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));
758
758
  }
759
759
  }
760
- if (currentType === 8 /* LinkedAlias */) {
760
+ if (currentType === 8 /* TokenTypes.LinkedAlias */) {
761
761
  emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
762
762
  }
763
763
  context.braceNest = 0;
@@ -767,7 +767,7 @@ function createTokenizer(source, options = {}) {
767
767
  }
768
768
  // TODO: We need refactoring of token parsing ...
769
769
  function readToken(scnr, context) {
770
- let token = { type: 14 /* EOF */ };
770
+ let token = { type: 14 /* TokenTypes.EOF */ };
771
771
  if (context.braceNest > 0) {
772
772
  return readTokenInPlaceholder(scnr, context) || getEndToken(context);
773
773
  }
@@ -776,17 +776,17 @@ function createTokenizer(source, options = {}) {
776
776
  }
777
777
  const ch = scnr.currentChar();
778
778
  switch (ch) {
779
- case "{" /* BraceLeft */:
779
+ case "{" /* TokenChars.BraceLeft */:
780
780
  return readTokenInPlaceholder(scnr, context) || getEndToken(context);
781
- case "}" /* BraceRight */:
781
+ case "}" /* TokenChars.BraceRight */:
782
782
  emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);
783
783
  scnr.next();
784
- return getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
785
- case "@" /* LinkedAlias */:
784
+ return getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
785
+ case "@" /* TokenChars.LinkedAlias */:
786
786
  return readTokenInLinked(scnr, context) || getEndToken(context);
787
787
  default:
788
788
  if (isPluralStart(scnr)) {
789
- token = getToken(context, 1 /* Pipe */, readPlural(scnr));
789
+ token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
790
790
  // reset
791
791
  context.braceNest = 0;
792
792
  context.inLinked = false;
@@ -795,11 +795,11 @@ function createTokenizer(source, options = {}) {
795
795
  const { isModulo, hasSpace } = detectModuloStart(scnr);
796
796
  if (isModulo) {
797
797
  return hasSpace
798
- ? getToken(context, 0 /* Text */, readText(scnr))
799
- : getToken(context, 4 /* Modulo */, readModulo(scnr));
798
+ ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))
799
+ : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));
800
800
  }
801
801
  if (isTextStart(scnr)) {
802
- return getToken(context, 0 /* Text */, readText(scnr));
802
+ return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));
803
803
  }
804
804
  break;
805
805
  }
@@ -814,7 +814,7 @@ function createTokenizer(source, options = {}) {
814
814
  _context.offset = currentOffset();
815
815
  _context.startLoc = currentPosition();
816
816
  if (_scnr.currentChar() === EOF) {
817
- return getToken(_context, 14 /* EOF */);
817
+ return getToken(_context, 14 /* TokenTypes.EOF */);
818
818
  }
819
819
  return readToken(_scnr, _context);
820
820
  }
@@ -884,7 +884,7 @@ function createParser(options = {}) {
884
884
  }
885
885
  function parseText(tokenizer, value) {
886
886
  const context = tokenizer.context();
887
- const node = startNode(3 /* Text */, context.offset, context.startLoc);
887
+ const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);
888
888
  node.value = value;
889
889
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
890
890
  return node;
@@ -892,7 +892,7 @@ function createParser(options = {}) {
892
892
  function parseList(tokenizer, index) {
893
893
  const context = tokenizer.context();
894
894
  const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
895
- const node = startNode(5 /* List */, offset, loc);
895
+ const node = startNode(5 /* NodeTypes.List */, offset, loc);
896
896
  node.index = parseInt(index, 10);
897
897
  tokenizer.nextToken(); // skip brach right
898
898
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -901,7 +901,7 @@ function createParser(options = {}) {
901
901
  function parseNamed(tokenizer, key) {
902
902
  const context = tokenizer.context();
903
903
  const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
904
- const node = startNode(4 /* Named */, offset, loc);
904
+ const node = startNode(4 /* NodeTypes.Named */, offset, loc);
905
905
  node.key = key;
906
906
  tokenizer.nextToken(); // skip brach right
907
907
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -910,7 +910,7 @@ function createParser(options = {}) {
910
910
  function parseLiteral(tokenizer, value) {
911
911
  const context = tokenizer.context();
912
912
  const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
913
- const node = startNode(9 /* Literal */, offset, loc);
913
+ const node = startNode(9 /* NodeTypes.Literal */, offset, loc);
914
914
  node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
915
915
  tokenizer.nextToken(); // skip brach right
916
916
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -920,8 +920,8 @@ function createParser(options = {}) {
920
920
  const token = tokenizer.nextToken();
921
921
  const context = tokenizer.context();
922
922
  const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc
923
- const node = startNode(8 /* LinkedModifier */, offset, loc);
924
- if (token.type !== 12 /* LinkedModifier */) {
923
+ const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);
924
+ if (token.type !== 12 /* TokenTypes.LinkedModifier */) {
925
925
  // empty modifier
926
926
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
927
927
  node.value = '';
@@ -943,49 +943,49 @@ function createParser(options = {}) {
943
943
  }
944
944
  function parseLinkedKey(tokenizer, value) {
945
945
  const context = tokenizer.context();
946
- const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);
946
+ const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);
947
947
  node.value = value;
948
948
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
949
949
  return node;
950
950
  }
951
951
  function parseLinked(tokenizer) {
952
952
  const context = tokenizer.context();
953
- const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);
953
+ const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);
954
954
  let token = tokenizer.nextToken();
955
- if (token.type === 9 /* LinkedDot */) {
955
+ if (token.type === 9 /* TokenTypes.LinkedDot */) {
956
956
  const parsed = parseLinkedModifier(tokenizer);
957
957
  linkedNode.modifier = parsed.node;
958
958
  token = parsed.nextConsumeToken || tokenizer.nextToken();
959
959
  }
960
960
  // asset check token
961
- if (token.type !== 10 /* LinkedDelimiter */) {
961
+ if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {
962
962
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
963
963
  }
964
964
  token = tokenizer.nextToken();
965
965
  // skip brace left
966
- if (token.type === 2 /* BraceLeft */) {
966
+ if (token.type === 2 /* TokenTypes.BraceLeft */) {
967
967
  token = tokenizer.nextToken();
968
968
  }
969
969
  switch (token.type) {
970
- case 11 /* LinkedKey */:
970
+ case 11 /* TokenTypes.LinkedKey */:
971
971
  if (token.value == null) {
972
972
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
973
973
  }
974
974
  linkedNode.key = parseLinkedKey(tokenizer, token.value || '');
975
975
  break;
976
- case 5 /* Named */:
976
+ case 5 /* TokenTypes.Named */:
977
977
  if (token.value == null) {
978
978
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
979
979
  }
980
980
  linkedNode.key = parseNamed(tokenizer, token.value || '');
981
981
  break;
982
- case 6 /* List */:
982
+ case 6 /* TokenTypes.List */:
983
983
  if (token.value == null) {
984
984
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
985
985
  }
986
986
  linkedNode.key = parseList(tokenizer, token.value || '');
987
987
  break;
988
- case 7 /* Literal */:
988
+ case 7 /* TokenTypes.Literal */:
989
989
  if (token.value == null) {
990
990
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
991
991
  }
@@ -995,7 +995,7 @@ function createParser(options = {}) {
995
995
  // empty key
996
996
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);
997
997
  const nextContext = tokenizer.context();
998
- const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);
998
+ const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);
999
999
  emptyLinkedKeyNode.value = '';
1000
1000
  endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);
1001
1001
  linkedNode.key = emptyLinkedKeyNode;
@@ -1012,56 +1012,56 @@ function createParser(options = {}) {
1012
1012
  }
1013
1013
  function parseMessage(tokenizer) {
1014
1014
  const context = tokenizer.context();
1015
- const startOffset = context.currentType === 1 /* Pipe */
1015
+ const startOffset = context.currentType === 1 /* TokenTypes.Pipe */
1016
1016
  ? tokenizer.currentOffset()
1017
1017
  : context.offset;
1018
- const startLoc = context.currentType === 1 /* Pipe */
1018
+ const startLoc = context.currentType === 1 /* TokenTypes.Pipe */
1019
1019
  ? context.endLoc
1020
1020
  : context.startLoc;
1021
- const node = startNode(2 /* Message */, startOffset, startLoc);
1021
+ const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
1022
1022
  node.items = [];
1023
1023
  let nextToken = null;
1024
1024
  do {
1025
1025
  const token = nextToken || tokenizer.nextToken();
1026
1026
  nextToken = null;
1027
1027
  switch (token.type) {
1028
- case 0 /* Text */:
1028
+ case 0 /* TokenTypes.Text */:
1029
1029
  if (token.value == null) {
1030
1030
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1031
1031
  }
1032
1032
  node.items.push(parseText(tokenizer, token.value || ''));
1033
1033
  break;
1034
- case 6 /* List */:
1034
+ case 6 /* TokenTypes.List */:
1035
1035
  if (token.value == null) {
1036
1036
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1037
1037
  }
1038
1038
  node.items.push(parseList(tokenizer, token.value || ''));
1039
1039
  break;
1040
- case 5 /* Named */:
1040
+ case 5 /* TokenTypes.Named */:
1041
1041
  if (token.value == null) {
1042
1042
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1043
1043
  }
1044
1044
  node.items.push(parseNamed(tokenizer, token.value || ''));
1045
1045
  break;
1046
- case 7 /* Literal */:
1046
+ case 7 /* TokenTypes.Literal */:
1047
1047
  if (token.value == null) {
1048
1048
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1049
1049
  }
1050
1050
  node.items.push(parseLiteral(tokenizer, token.value || ''));
1051
1051
  break;
1052
- case 8 /* LinkedAlias */:
1052
+ case 8 /* TokenTypes.LinkedAlias */:
1053
1053
  const parsed = parseLinked(tokenizer);
1054
1054
  node.items.push(parsed.node);
1055
1055
  nextToken = parsed.nextConsumeToken || null;
1056
1056
  break;
1057
1057
  }
1058
- } while (context.currentType !== 14 /* EOF */ &&
1059
- context.currentType !== 1 /* Pipe */);
1058
+ } while (context.currentType !== 14 /* TokenTypes.EOF */ &&
1059
+ context.currentType !== 1 /* TokenTypes.Pipe */);
1060
1060
  // adjust message node loc
1061
- const endOffset = context.currentType === 1 /* Pipe */
1061
+ const endOffset = context.currentType === 1 /* TokenTypes.Pipe */
1062
1062
  ? context.lastOffset
1063
1063
  : tokenizer.currentOffset();
1064
- const endLoc = context.currentType === 1 /* Pipe */
1064
+ const endLoc = context.currentType === 1 /* TokenTypes.Pipe */
1065
1065
  ? context.lastEndLoc
1066
1066
  : tokenizer.currentPosition();
1067
1067
  endNode(node, endOffset, endLoc);
@@ -1070,7 +1070,7 @@ function createParser(options = {}) {
1070
1070
  function parsePlural(tokenizer, offset, loc, msgNode) {
1071
1071
  const context = tokenizer.context();
1072
1072
  let hasEmptyMessage = msgNode.items.length === 0;
1073
- const node = startNode(1 /* Plural */, offset, loc);
1073
+ const node = startNode(1 /* NodeTypes.Plural */, offset, loc);
1074
1074
  node.cases = [];
1075
1075
  node.cases.push(msgNode);
1076
1076
  do {
@@ -1079,7 +1079,7 @@ function createParser(options = {}) {
1079
1079
  hasEmptyMessage = msg.items.length === 0;
1080
1080
  }
1081
1081
  node.cases.push(msg);
1082
- } while (context.currentType !== 14 /* EOF */);
1082
+ } while (context.currentType !== 14 /* TokenTypes.EOF */);
1083
1083
  if (hasEmptyMessage) {
1084
1084
  emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
1085
1085
  }
@@ -1090,7 +1090,7 @@ function createParser(options = {}) {
1090
1090
  const context = tokenizer.context();
1091
1091
  const { offset, startLoc } = context;
1092
1092
  const msgNode = parseMessage(tokenizer);
1093
- if (context.currentType === 14 /* EOF */) {
1093
+ if (context.currentType === 14 /* TokenTypes.EOF */) {
1094
1094
  return msgNode;
1095
1095
  }
1096
1096
  else {
@@ -1100,13 +1100,13 @@ function createParser(options = {}) {
1100
1100
  function parse(source) {
1101
1101
  const tokenizer = createTokenizer(source, assign({}, options));
1102
1102
  const context = tokenizer.context();
1103
- const node = startNode(0 /* Resource */, context.offset, context.startLoc);
1103
+ const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);
1104
1104
  if (location && node.loc) {
1105
1105
  node.loc.source = source;
1106
1106
  }
1107
1107
  node.body = parseResource(tokenizer);
1108
1108
  // assert whether achieved to EOF
1109
- if (context.currentType !== 14 /* EOF */) {
1109
+ if (context.currentType !== 14 /* TokenTypes.EOF */) {
1110
1110
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');
1111
1111
  }
1112
1112
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -1115,7 +1115,7 @@ function createParser(options = {}) {
1115
1115
  return { parse };
1116
1116
  }
1117
1117
  function getTokenCaption(token) {
1118
- if (token.type === 14 /* EOF */) {
1118
+ if (token.type === 14 /* TokenTypes.EOF */) {
1119
1119
  return 'EOF';
1120
1120
  }
1121
1121
  const name = (token.value || '').replace(/\r?\n/gu, '\\n');
@@ -1143,26 +1143,26 @@ function traverseNodes(nodes, transformer) {
1143
1143
  function traverseNode(node, transformer) {
1144
1144
  // TODO: if we need pre-hook of transform, should be implemented to here
1145
1145
  switch (node.type) {
1146
- case 1 /* Plural */:
1146
+ case 1 /* NodeTypes.Plural */:
1147
1147
  traverseNodes(node.cases, transformer);
1148
- transformer.helper("plural" /* PLURAL */);
1148
+ transformer.helper("plural" /* HelperNameMap.PLURAL */);
1149
1149
  break;
1150
- case 2 /* Message */:
1150
+ case 2 /* NodeTypes.Message */:
1151
1151
  traverseNodes(node.items, transformer);
1152
1152
  break;
1153
- case 6 /* Linked */:
1153
+ case 6 /* NodeTypes.Linked */:
1154
1154
  const linked = node;
1155
1155
  traverseNode(linked.key, transformer);
1156
- transformer.helper("linked" /* LINKED */);
1157
- transformer.helper("type" /* TYPE */);
1156
+ transformer.helper("linked" /* HelperNameMap.LINKED */);
1157
+ transformer.helper("type" /* HelperNameMap.TYPE */);
1158
1158
  break;
1159
- case 5 /* List */:
1160
- transformer.helper("interpolate" /* INTERPOLATE */);
1161
- transformer.helper("list" /* LIST */);
1159
+ case 5 /* NodeTypes.List */:
1160
+ transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
1161
+ transformer.helper("list" /* HelperNameMap.LIST */);
1162
1162
  break;
1163
- case 4 /* Named */:
1164
- transformer.helper("interpolate" /* INTERPOLATE */);
1165
- transformer.helper("named" /* NAMED */);
1163
+ case 4 /* NodeTypes.Named */:
1164
+ transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
1165
+ transformer.helper("named" /* HelperNameMap.NAMED */);
1166
1166
  break;
1167
1167
  }
1168
1168
  // TODO: if we need post-hook of transform, should be implemented to here
@@ -1171,7 +1171,7 @@ function traverseNode(node, transformer) {
1171
1171
  function transform(ast, options = {} // eslint-disable-line
1172
1172
  ) {
1173
1173
  const transformer = createTransformer(ast);
1174
- transformer.helper("normalize" /* NORMALIZE */);
1174
+ transformer.helper("normalize" /* HelperNameMap.NORMALIZE */);
1175
1175
  // traverse
1176
1176
  ast.body && traverseNode(ast.body, transformer);
1177
1177
  // set meta information
@@ -1226,7 +1226,7 @@ function createCodeGenerator(ast, options) {
1226
1226
  }
1227
1227
  function generateLinkedNode(generator, node) {
1228
1228
  const { helper } = generator;
1229
- generator.push(`${helper("linked" /* LINKED */)}(`);
1229
+ generator.push(`${helper("linked" /* HelperNameMap.LINKED */)}(`);
1230
1230
  generateNode(generator, node.key);
1231
1231
  if (node.modifier) {
1232
1232
  generator.push(`, `);
@@ -1240,7 +1240,7 @@ function generateLinkedNode(generator, node) {
1240
1240
  }
1241
1241
  function generateMessageNode(generator, node) {
1242
1242
  const { helper, needIndent } = generator;
1243
- generator.push(`${helper("normalize" /* NORMALIZE */)}([`);
1243
+ generator.push(`${helper("normalize" /* HelperNameMap.NORMALIZE */)}([`);
1244
1244
  generator.indent(needIndent());
1245
1245
  const length = node.items.length;
1246
1246
  for (let i = 0; i < length; i++) {
@@ -1256,7 +1256,7 @@ function generateMessageNode(generator, node) {
1256
1256
  function generatePluralNode(generator, node) {
1257
1257
  const { helper, needIndent } = generator;
1258
1258
  if (node.cases.length > 1) {
1259
- generator.push(`${helper("plural" /* PLURAL */)}([`);
1259
+ generator.push(`${helper("plural" /* HelperNameMap.PLURAL */)}([`);
1260
1260
  generator.indent(needIndent());
1261
1261
  const length = node.cases.length;
1262
1262
  for (let i = 0; i < length; i++) {
@@ -1281,34 +1281,34 @@ function generateResource(generator, node) {
1281
1281
  function generateNode(generator, node) {
1282
1282
  const { helper } = generator;
1283
1283
  switch (node.type) {
1284
- case 0 /* Resource */:
1284
+ case 0 /* NodeTypes.Resource */:
1285
1285
  generateResource(generator, node);
1286
1286
  break;
1287
- case 1 /* Plural */:
1287
+ case 1 /* NodeTypes.Plural */:
1288
1288
  generatePluralNode(generator, node);
1289
1289
  break;
1290
- case 2 /* Message */:
1290
+ case 2 /* NodeTypes.Message */:
1291
1291
  generateMessageNode(generator, node);
1292
1292
  break;
1293
- case 6 /* Linked */:
1293
+ case 6 /* NodeTypes.Linked */:
1294
1294
  generateLinkedNode(generator, node);
1295
1295
  break;
1296
- case 8 /* LinkedModifier */:
1296
+ case 8 /* NodeTypes.LinkedModifier */:
1297
1297
  generator.push(JSON.stringify(node.value), node);
1298
1298
  break;
1299
- case 7 /* LinkedKey */:
1299
+ case 7 /* NodeTypes.LinkedKey */:
1300
1300
  generator.push(JSON.stringify(node.value), node);
1301
1301
  break;
1302
- case 5 /* List */:
1303
- generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("list" /* LIST */)}(${node.index}))`, node);
1302
+ case 5 /* NodeTypes.List */:
1303
+ generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("list" /* HelperNameMap.LIST */)}(${node.index}))`, node);
1304
1304
  break;
1305
- case 4 /* Named */:
1306
- generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("named" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);
1305
+ case 4 /* NodeTypes.Named */:
1306
+ generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("named" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);
1307
1307
  break;
1308
- case 9 /* Literal */:
1308
+ case 9 /* NodeTypes.Literal */:
1309
1309
  generator.push(JSON.stringify(node.value), node);
1310
1310
  break;
1311
- case 3 /* Text */:
1311
+ case 3 /* NodeTypes.Text */:
1312
1312
  generator.push(JSON.stringify(node.value), node);
1313
1313
  break;
1314
1314
  default: