@intlify/message-compiler 9.3.0-beta.10 → 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.10
2
+ * message-compiler v9.3.0-beta.11
3
3
  * (c) 2022 kazuya kawaguchi
4
4
  * Released under the MIT License.
5
5
  */
@@ -22,8 +22,8 @@ function format(message, ...args) {
22
22
  }
23
23
  const assign = Object.assign;
24
24
  const isString = (val) => typeof val === 'string';
25
- const isObject = (val) => // eslint-disable-line
26
- val !== null && typeof val === 'object';
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ const isObject = (val) => val !== null && typeof val === 'object';
27
27
 
28
28
  const CompileErrorCodes = {
29
29
  // tokenizer error codes
@@ -185,11 +185,11 @@ function createTokenizer(source, options = {}) {
185
185
  const _initLoc = currentPosition();
186
186
  const _initOffset = currentOffset();
187
187
  const _context = {
188
- currentType: 14 /* EOF */,
188
+ currentType: 14 /* TokenTypes.EOF */,
189
189
  offset: _initOffset,
190
190
  startLoc: _initLoc,
191
191
  endLoc: _initLoc,
192
- lastType: 14 /* EOF */,
192
+ lastType: 14 /* TokenTypes.EOF */,
193
193
  lastOffset: _initOffset,
194
194
  lastStartLoc: _initLoc,
195
195
  lastEndLoc: _initLoc,
@@ -224,7 +224,7 @@ function createTokenizer(source, options = {}) {
224
224
  }
225
225
  return token;
226
226
  }
227
- const getEndToken = (context) => getToken(context, 14 /* EOF */);
227
+ const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */);
228
228
  function eat(scnr, ch) {
229
229
  if (scnr.currentChar() === ch) {
230
230
  scnr.next();
@@ -267,7 +267,7 @@ function createTokenizer(source, options = {}) {
267
267
  }
268
268
  function isNamedIdentifierStart(scnr, context) {
269
269
  const { currentType } = context;
270
- if (currentType !== 2 /* BraceLeft */) {
270
+ if (currentType !== 2 /* TokenTypes.BraceLeft */) {
271
271
  return false;
272
272
  }
273
273
  peekSpaces(scnr);
@@ -277,7 +277,7 @@ function createTokenizer(source, options = {}) {
277
277
  }
278
278
  function isListIdentifierStart(scnr, context) {
279
279
  const { currentType } = context;
280
- if (currentType !== 2 /* BraceLeft */) {
280
+ if (currentType !== 2 /* TokenTypes.BraceLeft */) {
281
281
  return false;
282
282
  }
283
283
  peekSpaces(scnr);
@@ -288,7 +288,7 @@ function createTokenizer(source, options = {}) {
288
288
  }
289
289
  function isLiteralStart(scnr, context) {
290
290
  const { currentType } = context;
291
- if (currentType !== 2 /* BraceLeft */) {
291
+ if (currentType !== 2 /* TokenTypes.BraceLeft */) {
292
292
  return false;
293
293
  }
294
294
  peekSpaces(scnr);
@@ -298,17 +298,17 @@ function createTokenizer(source, options = {}) {
298
298
  }
299
299
  function isLinkedDotStart(scnr, context) {
300
300
  const { currentType } = context;
301
- if (currentType !== 8 /* LinkedAlias */) {
301
+ if (currentType !== 8 /* TokenTypes.LinkedAlias */) {
302
302
  return false;
303
303
  }
304
304
  peekSpaces(scnr);
305
- const ret = scnr.currentPeek() === "." /* LinkedDot */;
305
+ const ret = scnr.currentPeek() === "." /* TokenChars.LinkedDot */;
306
306
  scnr.resetPeek();
307
307
  return ret;
308
308
  }
309
309
  function isLinkedModifierStart(scnr, context) {
310
310
  const { currentType } = context;
311
- if (currentType !== 9 /* LinkedDot */) {
311
+ if (currentType !== 9 /* TokenTypes.LinkedDot */) {
312
312
  return false;
313
313
  }
314
314
  peekSpaces(scnr);
@@ -318,30 +318,30 @@ function createTokenizer(source, options = {}) {
318
318
  }
319
319
  function isLinkedDelimiterStart(scnr, context) {
320
320
  const { currentType } = context;
321
- if (!(currentType === 8 /* LinkedAlias */ ||
322
- currentType === 12 /* LinkedModifier */)) {
321
+ if (!(currentType === 8 /* TokenTypes.LinkedAlias */ ||
322
+ currentType === 12 /* TokenTypes.LinkedModifier */)) {
323
323
  return false;
324
324
  }
325
325
  peekSpaces(scnr);
326
- const ret = scnr.currentPeek() === ":" /* LinkedDelimiter */;
326
+ const ret = scnr.currentPeek() === ":" /* TokenChars.LinkedDelimiter */;
327
327
  scnr.resetPeek();
328
328
  return ret;
329
329
  }
330
330
  function isLinkedReferStart(scnr, context) {
331
331
  const { currentType } = context;
332
- if (currentType !== 10 /* LinkedDelimiter */) {
332
+ if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) {
333
333
  return false;
334
334
  }
335
335
  const fn = () => {
336
336
  const ch = scnr.currentPeek();
337
- if (ch === "{" /* BraceLeft */) {
337
+ if (ch === "{" /* TokenChars.BraceLeft */) {
338
338
  return isIdentifierStart(scnr.peek());
339
339
  }
340
- else if (ch === "@" /* LinkedAlias */ ||
341
- ch === "%" /* Modulo */ ||
342
- ch === "|" /* Pipe */ ||
343
- ch === ":" /* LinkedDelimiter */ ||
344
- ch === "." /* LinkedDot */ ||
340
+ else if (ch === "@" /* TokenChars.LinkedAlias */ ||
341
+ ch === "%" /* TokenChars.Modulo */ ||
342
+ ch === "|" /* TokenChars.Pipe */ ||
343
+ ch === ":" /* TokenChars.LinkedDelimiter */ ||
344
+ ch === "." /* TokenChars.LinkedDot */ ||
345
345
  ch === CHAR_SP ||
346
346
  !ch) {
347
347
  return false;
@@ -361,14 +361,14 @@ function createTokenizer(source, options = {}) {
361
361
  }
362
362
  function isPluralStart(scnr) {
363
363
  peekSpaces(scnr);
364
- const ret = scnr.currentPeek() === "|" /* Pipe */;
364
+ const ret = scnr.currentPeek() === "|" /* TokenChars.Pipe */;
365
365
  scnr.resetPeek();
366
366
  return ret;
367
367
  }
368
368
  function detectModuloStart(scnr) {
369
369
  const spaces = peekSpaces(scnr);
370
- const ret = scnr.currentPeek() === "%" /* Modulo */ &&
371
- scnr.peek() === "{" /* BraceLeft */;
370
+ const ret = scnr.currentPeek() === "%" /* TokenChars.Modulo */ &&
371
+ scnr.peek() === "{" /* TokenChars.BraceLeft */;
372
372
  scnr.resetPeek();
373
373
  return {
374
374
  isModulo: ret,
@@ -378,18 +378,18 @@ function createTokenizer(source, options = {}) {
378
378
  function isTextStart(scnr, reset = true) {
379
379
  const fn = (hasSpace = false, prev = '', detectModulo = false) => {
380
380
  const ch = scnr.currentPeek();
381
- if (ch === "{" /* BraceLeft */) {
382
- return prev === "%" /* Modulo */ ? false : hasSpace;
381
+ if (ch === "{" /* TokenChars.BraceLeft */) {
382
+ return prev === "%" /* TokenChars.Modulo */ ? false : hasSpace;
383
383
  }
384
- else if (ch === "@" /* LinkedAlias */ || !ch) {
385
- return prev === "%" /* Modulo */ ? true : hasSpace;
384
+ else if (ch === "@" /* TokenChars.LinkedAlias */ || !ch) {
385
+ return prev === "%" /* TokenChars.Modulo */ ? true : hasSpace;
386
386
  }
387
- else if (ch === "%" /* Modulo */) {
387
+ else if (ch === "%" /* TokenChars.Modulo */) {
388
388
  scnr.peek();
389
- return fn(hasSpace, "%" /* Modulo */, true);
389
+ return fn(hasSpace, "%" /* TokenChars.Modulo */, true);
390
390
  }
391
- else if (ch === "|" /* Pipe */) {
392
- return prev === "%" /* Modulo */ || detectModulo
391
+ else if (ch === "|" /* TokenChars.Pipe */) {
392
+ return prev === "%" /* TokenChars.Modulo */ || detectModulo
393
393
  ? true
394
394
  : !(prev === CHAR_SP || prev === CHAR_LF);
395
395
  }
@@ -459,24 +459,24 @@ function createTokenizer(source, options = {}) {
459
459
  function readModulo(scnr) {
460
460
  skipSpaces(scnr);
461
461
  const ch = scnr.currentChar();
462
- if (ch !== "%" /* Modulo */) {
462
+ if (ch !== "%" /* TokenChars.Modulo */) {
463
463
  emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
464
464
  }
465
465
  scnr.next();
466
- return "%" /* Modulo */;
466
+ return "%" /* TokenChars.Modulo */;
467
467
  }
468
468
  function readText(scnr) {
469
469
  let buf = '';
470
470
  while (true) {
471
471
  const ch = scnr.currentChar();
472
- if (ch === "{" /* BraceLeft */ ||
473
- ch === "}" /* BraceRight */ ||
474
- ch === "@" /* LinkedAlias */ ||
475
- ch === "|" /* Pipe */ ||
472
+ if (ch === "{" /* TokenChars.BraceLeft */ ||
473
+ ch === "}" /* TokenChars.BraceRight */ ||
474
+ ch === "@" /* TokenChars.LinkedAlias */ ||
475
+ ch === "|" /* TokenChars.Pipe */ ||
476
476
  !ch) {
477
477
  break;
478
478
  }
479
- else if (ch === "%" /* Modulo */) {
479
+ else if (ch === "%" /* TokenChars.Modulo */) {
480
480
  if (isTextStart(scnr)) {
481
481
  buf += ch;
482
482
  scnr.next();
@@ -592,8 +592,8 @@ function createTokenizer(source, options = {}) {
592
592
  skipSpaces(scnr);
593
593
  let ch = '';
594
594
  let identifiers = '';
595
- const closure = (ch) => ch !== "{" /* BraceLeft */ &&
596
- ch !== "}" /* BraceRight */ &&
595
+ const closure = (ch) => ch !== "{" /* TokenChars.BraceLeft */ &&
596
+ ch !== "}" /* TokenChars.BraceRight */ &&
597
597
  ch !== CHAR_SP &&
598
598
  ch !== CHAR_LF;
599
599
  while ((ch = takeChar(scnr, closure))) {
@@ -612,10 +612,10 @@ function createTokenizer(source, options = {}) {
612
612
  function readLinkedRefer(scnr) {
613
613
  const fn = (detect = false, buf) => {
614
614
  const ch = scnr.currentChar();
615
- if (ch === "{" /* BraceLeft */ ||
616
- ch === "%" /* Modulo */ ||
617
- ch === "@" /* LinkedAlias */ ||
618
- ch === "|" /* Pipe */ ||
615
+ if (ch === "{" /* TokenChars.BraceLeft */ ||
616
+ ch === "%" /* TokenChars.Modulo */ ||
617
+ ch === "@" /* TokenChars.LinkedAlias */ ||
618
+ ch === "|" /* TokenChars.Pipe */ ||
619
619
  !ch) {
620
620
  return buf;
621
621
  }
@@ -637,7 +637,7 @@ function createTokenizer(source, options = {}) {
637
637
  }
638
638
  function readPlural(scnr) {
639
639
  skipSpaces(scnr);
640
- const plural = eat(scnr, "|" /* Pipe */);
640
+ const plural = eat(scnr, "|" /* TokenChars.Pipe */);
641
641
  skipSpaces(scnr);
642
642
  return plural;
643
643
  }
@@ -646,29 +646,29 @@ function createTokenizer(source, options = {}) {
646
646
  let token = null;
647
647
  const ch = scnr.currentChar();
648
648
  switch (ch) {
649
- case "{" /* BraceLeft */:
649
+ case "{" /* TokenChars.BraceLeft */:
650
650
  if (context.braceNest >= 1) {
651
651
  emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);
652
652
  }
653
653
  scnr.next();
654
- token = getToken(context, 2 /* BraceLeft */, "{" /* BraceLeft */);
654
+ token = getToken(context, 2 /* TokenTypes.BraceLeft */, "{" /* TokenChars.BraceLeft */);
655
655
  skipSpaces(scnr);
656
656
  context.braceNest++;
657
657
  return token;
658
- case "}" /* BraceRight */:
658
+ case "}" /* TokenChars.BraceRight */:
659
659
  if (context.braceNest > 0 &&
660
- context.currentType === 2 /* BraceLeft */) {
660
+ context.currentType === 2 /* TokenTypes.BraceLeft */) {
661
661
  emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);
662
662
  }
663
663
  scnr.next();
664
- token = getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
664
+ token = getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
665
665
  context.braceNest--;
666
666
  context.braceNest > 0 && skipSpaces(scnr);
667
667
  if (context.inLinked && context.braceNest === 0) {
668
668
  context.inLinked = false;
669
669
  }
670
670
  return token;
671
- case "@" /* LinkedAlias */:
671
+ case "@" /* TokenChars.LinkedAlias */:
672
672
  if (context.braceNest > 0) {
673
673
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
674
674
  }
@@ -683,38 +683,38 @@ function createTokenizer(source, options = {}) {
683
683
  if (context.braceNest > 0) {
684
684
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
685
685
  }
686
- token = getToken(context, 1 /* Pipe */, readPlural(scnr));
686
+ token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
687
687
  // reset
688
688
  context.braceNest = 0;
689
689
  context.inLinked = false;
690
690
  return token;
691
691
  }
692
692
  if (context.braceNest > 0 &&
693
- (context.currentType === 5 /* Named */ ||
694
- context.currentType === 6 /* List */ ||
695
- context.currentType === 7 /* Literal */)) {
693
+ (context.currentType === 5 /* TokenTypes.Named */ ||
694
+ context.currentType === 6 /* TokenTypes.List */ ||
695
+ context.currentType === 7 /* TokenTypes.Literal */)) {
696
696
  emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
697
697
  context.braceNest = 0;
698
698
  return readToken(scnr, context);
699
699
  }
700
700
  if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) {
701
- token = getToken(context, 5 /* Named */, readNamedIdentifier(scnr));
701
+ token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr));
702
702
  skipSpaces(scnr);
703
703
  return token;
704
704
  }
705
705
  if ((validListIdentifier = isListIdentifierStart(scnr, context))) {
706
- token = getToken(context, 6 /* List */, readListIdentifier(scnr));
706
+ token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr));
707
707
  skipSpaces(scnr);
708
708
  return token;
709
709
  }
710
710
  if ((validLiteral = isLiteralStart(scnr, context))) {
711
- token = getToken(context, 7 /* Literal */, readLiteral(scnr));
711
+ token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr));
712
712
  skipSpaces(scnr);
713
713
  return token;
714
714
  }
715
715
  if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
716
716
  // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ...
717
- token = getToken(context, 13 /* InvalidPlace */, readInvalidIdentifier(scnr));
717
+ token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr));
718
718
  emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
719
719
  skipSpaces(scnr);
720
720
  return token;
@@ -728,30 +728,30 @@ function createTokenizer(source, options = {}) {
728
728
  const { currentType } = context;
729
729
  let token = null;
730
730
  const ch = scnr.currentChar();
731
- if ((currentType === 8 /* LinkedAlias */ ||
732
- currentType === 9 /* LinkedDot */ ||
733
- currentType === 12 /* LinkedModifier */ ||
734
- currentType === 10 /* LinkedDelimiter */) &&
731
+ if ((currentType === 8 /* TokenTypes.LinkedAlias */ ||
732
+ currentType === 9 /* TokenTypes.LinkedDot */ ||
733
+ currentType === 12 /* TokenTypes.LinkedModifier */ ||
734
+ currentType === 10 /* TokenTypes.LinkedDelimiter */) &&
735
735
  (ch === CHAR_LF || ch === CHAR_SP)) {
736
736
  emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
737
737
  }
738
738
  switch (ch) {
739
- case "@" /* LinkedAlias */:
739
+ case "@" /* TokenChars.LinkedAlias */:
740
740
  scnr.next();
741
- token = getToken(context, 8 /* LinkedAlias */, "@" /* LinkedAlias */);
741
+ token = getToken(context, 8 /* TokenTypes.LinkedAlias */, "@" /* TokenChars.LinkedAlias */);
742
742
  context.inLinked = true;
743
743
  return token;
744
- case "." /* LinkedDot */:
744
+ case "." /* TokenChars.LinkedDot */:
745
745
  skipSpaces(scnr);
746
746
  scnr.next();
747
- return getToken(context, 9 /* LinkedDot */, "." /* LinkedDot */);
748
- case ":" /* LinkedDelimiter */:
747
+ return getToken(context, 9 /* TokenTypes.LinkedDot */, "." /* TokenChars.LinkedDot */);
748
+ case ":" /* TokenChars.LinkedDelimiter */:
749
749
  skipSpaces(scnr);
750
750
  scnr.next();
751
- return getToken(context, 10 /* LinkedDelimiter */, ":" /* LinkedDelimiter */);
751
+ return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, ":" /* TokenChars.LinkedDelimiter */);
752
752
  default:
753
753
  if (isPluralStart(scnr)) {
754
- token = getToken(context, 1 /* Pipe */, readPlural(scnr));
754
+ token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
755
755
  // reset
756
756
  context.braceNest = 0;
757
757
  context.inLinked = false;
@@ -764,19 +764,19 @@ function createTokenizer(source, options = {}) {
764
764
  }
765
765
  if (isLinkedModifierStart(scnr, context)) {
766
766
  skipSpaces(scnr);
767
- return getToken(context, 12 /* LinkedModifier */, readLinkedModifier(scnr));
767
+ return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr));
768
768
  }
769
769
  if (isLinkedReferStart(scnr, context)) {
770
770
  skipSpaces(scnr);
771
- if (ch === "{" /* BraceLeft */) {
771
+ if (ch === "{" /* TokenChars.BraceLeft */) {
772
772
  // scan the placeholder
773
773
  return readTokenInPlaceholder(scnr, context) || token;
774
774
  }
775
775
  else {
776
- return getToken(context, 11 /* LinkedKey */, readLinkedRefer(scnr));
776
+ return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr));
777
777
  }
778
778
  }
779
- if (currentType === 8 /* LinkedAlias */) {
779
+ if (currentType === 8 /* TokenTypes.LinkedAlias */) {
780
780
  emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
781
781
  }
782
782
  context.braceNest = 0;
@@ -786,7 +786,7 @@ function createTokenizer(source, options = {}) {
786
786
  }
787
787
  // TODO: We need refactoring of token parsing ...
788
788
  function readToken(scnr, context) {
789
- let token = { type: 14 /* EOF */ };
789
+ let token = { type: 14 /* TokenTypes.EOF */ };
790
790
  if (context.braceNest > 0) {
791
791
  return readTokenInPlaceholder(scnr, context) || getEndToken(context);
792
792
  }
@@ -795,17 +795,17 @@ function createTokenizer(source, options = {}) {
795
795
  }
796
796
  const ch = scnr.currentChar();
797
797
  switch (ch) {
798
- case "{" /* BraceLeft */:
798
+ case "{" /* TokenChars.BraceLeft */:
799
799
  return readTokenInPlaceholder(scnr, context) || getEndToken(context);
800
- case "}" /* BraceRight */:
800
+ case "}" /* TokenChars.BraceRight */:
801
801
  emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);
802
802
  scnr.next();
803
- return getToken(context, 3 /* BraceRight */, "}" /* BraceRight */);
804
- case "@" /* LinkedAlias */:
803
+ return getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */);
804
+ case "@" /* TokenChars.LinkedAlias */:
805
805
  return readTokenInLinked(scnr, context) || getEndToken(context);
806
806
  default:
807
807
  if (isPluralStart(scnr)) {
808
- token = getToken(context, 1 /* Pipe */, readPlural(scnr));
808
+ token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr));
809
809
  // reset
810
810
  context.braceNest = 0;
811
811
  context.inLinked = false;
@@ -814,11 +814,11 @@ function createTokenizer(source, options = {}) {
814
814
  const { isModulo, hasSpace } = detectModuloStart(scnr);
815
815
  if (isModulo) {
816
816
  return hasSpace
817
- ? getToken(context, 0 /* Text */, readText(scnr))
818
- : getToken(context, 4 /* Modulo */, readModulo(scnr));
817
+ ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr))
818
+ : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr));
819
819
  }
820
820
  if (isTextStart(scnr)) {
821
- return getToken(context, 0 /* Text */, readText(scnr));
821
+ return getToken(context, 0 /* TokenTypes.Text */, readText(scnr));
822
822
  }
823
823
  break;
824
824
  }
@@ -833,7 +833,7 @@ function createTokenizer(source, options = {}) {
833
833
  _context.offset = currentOffset();
834
834
  _context.startLoc = currentPosition();
835
835
  if (_scnr.currentChar() === EOF) {
836
- return getToken(_context, 14 /* EOF */);
836
+ return getToken(_context, 14 /* TokenTypes.EOF */);
837
837
  }
838
838
  return readToken(_scnr, _context);
839
839
  }
@@ -903,7 +903,7 @@ function createParser(options = {}) {
903
903
  }
904
904
  function parseText(tokenizer, value) {
905
905
  const context = tokenizer.context();
906
- const node = startNode(3 /* Text */, context.offset, context.startLoc);
906
+ const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc);
907
907
  node.value = value;
908
908
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
909
909
  return node;
@@ -911,7 +911,7 @@ function createParser(options = {}) {
911
911
  function parseList(tokenizer, index) {
912
912
  const context = tokenizer.context();
913
913
  const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
914
- const node = startNode(5 /* List */, offset, loc);
914
+ const node = startNode(5 /* NodeTypes.List */, offset, loc);
915
915
  node.index = parseInt(index, 10);
916
916
  tokenizer.nextToken(); // skip brach right
917
917
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -920,7 +920,7 @@ function createParser(options = {}) {
920
920
  function parseNamed(tokenizer, key) {
921
921
  const context = tokenizer.context();
922
922
  const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
923
- const node = startNode(4 /* Named */, offset, loc);
923
+ const node = startNode(4 /* NodeTypes.Named */, offset, loc);
924
924
  node.key = key;
925
925
  tokenizer.nextToken(); // skip brach right
926
926
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -929,7 +929,7 @@ function createParser(options = {}) {
929
929
  function parseLiteral(tokenizer, value) {
930
930
  const context = tokenizer.context();
931
931
  const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc
932
- const node = startNode(9 /* Literal */, offset, loc);
932
+ const node = startNode(9 /* NodeTypes.Literal */, offset, loc);
933
933
  node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
934
934
  tokenizer.nextToken(); // skip brach right
935
935
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -939,8 +939,8 @@ function createParser(options = {}) {
939
939
  const token = tokenizer.nextToken();
940
940
  const context = tokenizer.context();
941
941
  const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc
942
- const node = startNode(8 /* LinkedModifier */, offset, loc);
943
- if (token.type !== 12 /* LinkedModifier */) {
942
+ const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc);
943
+ if (token.type !== 12 /* TokenTypes.LinkedModifier */) {
944
944
  // empty modifier
945
945
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
946
946
  node.value = '';
@@ -962,49 +962,49 @@ function createParser(options = {}) {
962
962
  }
963
963
  function parseLinkedKey(tokenizer, value) {
964
964
  const context = tokenizer.context();
965
- const node = startNode(7 /* LinkedKey */, context.offset, context.startLoc);
965
+ const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc);
966
966
  node.value = value;
967
967
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
968
968
  return node;
969
969
  }
970
970
  function parseLinked(tokenizer) {
971
971
  const context = tokenizer.context();
972
- const linkedNode = startNode(6 /* Linked */, context.offset, context.startLoc);
972
+ const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc);
973
973
  let token = tokenizer.nextToken();
974
- if (token.type === 9 /* LinkedDot */) {
974
+ if (token.type === 9 /* TokenTypes.LinkedDot */) {
975
975
  const parsed = parseLinkedModifier(tokenizer);
976
976
  linkedNode.modifier = parsed.node;
977
977
  token = parsed.nextConsumeToken || tokenizer.nextToken();
978
978
  }
979
979
  // asset check token
980
- if (token.type !== 10 /* LinkedDelimiter */) {
980
+ if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) {
981
981
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
982
982
  }
983
983
  token = tokenizer.nextToken();
984
984
  // skip brace left
985
- if (token.type === 2 /* BraceLeft */) {
985
+ if (token.type === 2 /* TokenTypes.BraceLeft */) {
986
986
  token = tokenizer.nextToken();
987
987
  }
988
988
  switch (token.type) {
989
- case 11 /* LinkedKey */:
989
+ case 11 /* TokenTypes.LinkedKey */:
990
990
  if (token.value == null) {
991
991
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
992
992
  }
993
993
  linkedNode.key = parseLinkedKey(tokenizer, token.value || '');
994
994
  break;
995
- case 5 /* Named */:
995
+ case 5 /* TokenTypes.Named */:
996
996
  if (token.value == null) {
997
997
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
998
998
  }
999
999
  linkedNode.key = parseNamed(tokenizer, token.value || '');
1000
1000
  break;
1001
- case 6 /* List */:
1001
+ case 6 /* TokenTypes.List */:
1002
1002
  if (token.value == null) {
1003
1003
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1004
1004
  }
1005
1005
  linkedNode.key = parseList(tokenizer, token.value || '');
1006
1006
  break;
1007
- case 7 /* Literal */:
1007
+ case 7 /* TokenTypes.Literal */:
1008
1008
  if (token.value == null) {
1009
1009
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1010
1010
  }
@@ -1014,7 +1014,7 @@ function createParser(options = {}) {
1014
1014
  // empty key
1015
1015
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);
1016
1016
  const nextContext = tokenizer.context();
1017
- const emptyLinkedKeyNode = startNode(7 /* LinkedKey */, nextContext.offset, nextContext.startLoc);
1017
+ const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc);
1018
1018
  emptyLinkedKeyNode.value = '';
1019
1019
  endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);
1020
1020
  linkedNode.key = emptyLinkedKeyNode;
@@ -1031,56 +1031,56 @@ function createParser(options = {}) {
1031
1031
  }
1032
1032
  function parseMessage(tokenizer) {
1033
1033
  const context = tokenizer.context();
1034
- const startOffset = context.currentType === 1 /* Pipe */
1034
+ const startOffset = context.currentType === 1 /* TokenTypes.Pipe */
1035
1035
  ? tokenizer.currentOffset()
1036
1036
  : context.offset;
1037
- const startLoc = context.currentType === 1 /* Pipe */
1037
+ const startLoc = context.currentType === 1 /* TokenTypes.Pipe */
1038
1038
  ? context.endLoc
1039
1039
  : context.startLoc;
1040
- const node = startNode(2 /* Message */, startOffset, startLoc);
1040
+ const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc);
1041
1041
  node.items = [];
1042
1042
  let nextToken = null;
1043
1043
  do {
1044
1044
  const token = nextToken || tokenizer.nextToken();
1045
1045
  nextToken = null;
1046
1046
  switch (token.type) {
1047
- case 0 /* Text */:
1047
+ case 0 /* TokenTypes.Text */:
1048
1048
  if (token.value == null) {
1049
1049
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1050
1050
  }
1051
1051
  node.items.push(parseText(tokenizer, token.value || ''));
1052
1052
  break;
1053
- case 6 /* List */:
1053
+ case 6 /* TokenTypes.List */:
1054
1054
  if (token.value == null) {
1055
1055
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1056
1056
  }
1057
1057
  node.items.push(parseList(tokenizer, token.value || ''));
1058
1058
  break;
1059
- case 5 /* Named */:
1059
+ case 5 /* TokenTypes.Named */:
1060
1060
  if (token.value == null) {
1061
1061
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1062
1062
  }
1063
1063
  node.items.push(parseNamed(tokenizer, token.value || ''));
1064
1064
  break;
1065
- case 7 /* Literal */:
1065
+ case 7 /* TokenTypes.Literal */:
1066
1066
  if (token.value == null) {
1067
1067
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
1068
1068
  }
1069
1069
  node.items.push(parseLiteral(tokenizer, token.value || ''));
1070
1070
  break;
1071
- case 8 /* LinkedAlias */:
1071
+ case 8 /* TokenTypes.LinkedAlias */:
1072
1072
  const parsed = parseLinked(tokenizer);
1073
1073
  node.items.push(parsed.node);
1074
1074
  nextToken = parsed.nextConsumeToken || null;
1075
1075
  break;
1076
1076
  }
1077
- } while (context.currentType !== 14 /* EOF */ &&
1078
- context.currentType !== 1 /* Pipe */);
1077
+ } while (context.currentType !== 14 /* TokenTypes.EOF */ &&
1078
+ context.currentType !== 1 /* TokenTypes.Pipe */);
1079
1079
  // adjust message node loc
1080
- const endOffset = context.currentType === 1 /* Pipe */
1080
+ const endOffset = context.currentType === 1 /* TokenTypes.Pipe */
1081
1081
  ? context.lastOffset
1082
1082
  : tokenizer.currentOffset();
1083
- const endLoc = context.currentType === 1 /* Pipe */
1083
+ const endLoc = context.currentType === 1 /* TokenTypes.Pipe */
1084
1084
  ? context.lastEndLoc
1085
1085
  : tokenizer.currentPosition();
1086
1086
  endNode(node, endOffset, endLoc);
@@ -1089,7 +1089,7 @@ function createParser(options = {}) {
1089
1089
  function parsePlural(tokenizer, offset, loc, msgNode) {
1090
1090
  const context = tokenizer.context();
1091
1091
  let hasEmptyMessage = msgNode.items.length === 0;
1092
- const node = startNode(1 /* Plural */, offset, loc);
1092
+ const node = startNode(1 /* NodeTypes.Plural */, offset, loc);
1093
1093
  node.cases = [];
1094
1094
  node.cases.push(msgNode);
1095
1095
  do {
@@ -1098,7 +1098,7 @@ function createParser(options = {}) {
1098
1098
  hasEmptyMessage = msg.items.length === 0;
1099
1099
  }
1100
1100
  node.cases.push(msg);
1101
- } while (context.currentType !== 14 /* EOF */);
1101
+ } while (context.currentType !== 14 /* TokenTypes.EOF */);
1102
1102
  if (hasEmptyMessage) {
1103
1103
  emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
1104
1104
  }
@@ -1109,7 +1109,7 @@ function createParser(options = {}) {
1109
1109
  const context = tokenizer.context();
1110
1110
  const { offset, startLoc } = context;
1111
1111
  const msgNode = parseMessage(tokenizer);
1112
- if (context.currentType === 14 /* EOF */) {
1112
+ if (context.currentType === 14 /* TokenTypes.EOF */) {
1113
1113
  return msgNode;
1114
1114
  }
1115
1115
  else {
@@ -1119,13 +1119,13 @@ function createParser(options = {}) {
1119
1119
  function parse(source) {
1120
1120
  const tokenizer = createTokenizer(source, assign({}, options));
1121
1121
  const context = tokenizer.context();
1122
- const node = startNode(0 /* Resource */, context.offset, context.startLoc);
1122
+ const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc);
1123
1123
  if (location && node.loc) {
1124
1124
  node.loc.source = source;
1125
1125
  }
1126
1126
  node.body = parseResource(tokenizer);
1127
1127
  // assert whether achieved to EOF
1128
- if (context.currentType !== 14 /* EOF */) {
1128
+ if (context.currentType !== 14 /* TokenTypes.EOF */) {
1129
1129
  emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || '');
1130
1130
  }
1131
1131
  endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition());
@@ -1134,7 +1134,7 @@ function createParser(options = {}) {
1134
1134
  return { parse };
1135
1135
  }
1136
1136
  function getTokenCaption(token) {
1137
- if (token.type === 14 /* EOF */) {
1137
+ if (token.type === 14 /* TokenTypes.EOF */) {
1138
1138
  return 'EOF';
1139
1139
  }
1140
1140
  const name = (token.value || '').replace(/\r?\n/gu, '\\n');
@@ -1162,26 +1162,26 @@ function traverseNodes(nodes, transformer) {
1162
1162
  function traverseNode(node, transformer) {
1163
1163
  // TODO: if we need pre-hook of transform, should be implemented to here
1164
1164
  switch (node.type) {
1165
- case 1 /* Plural */:
1165
+ case 1 /* NodeTypes.Plural */:
1166
1166
  traverseNodes(node.cases, transformer);
1167
- transformer.helper("plural" /* PLURAL */);
1167
+ transformer.helper("plural" /* HelperNameMap.PLURAL */);
1168
1168
  break;
1169
- case 2 /* Message */:
1169
+ case 2 /* NodeTypes.Message */:
1170
1170
  traverseNodes(node.items, transformer);
1171
1171
  break;
1172
- case 6 /* Linked */:
1172
+ case 6 /* NodeTypes.Linked */:
1173
1173
  const linked = node;
1174
1174
  traverseNode(linked.key, transformer);
1175
- transformer.helper("linked" /* LINKED */);
1176
- transformer.helper("type" /* TYPE */);
1175
+ transformer.helper("linked" /* HelperNameMap.LINKED */);
1176
+ transformer.helper("type" /* HelperNameMap.TYPE */);
1177
1177
  break;
1178
- case 5 /* List */:
1179
- transformer.helper("interpolate" /* INTERPOLATE */);
1180
- transformer.helper("list" /* LIST */);
1178
+ case 5 /* NodeTypes.List */:
1179
+ transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
1180
+ transformer.helper("list" /* HelperNameMap.LIST */);
1181
1181
  break;
1182
- case 4 /* Named */:
1183
- transformer.helper("interpolate" /* INTERPOLATE */);
1184
- transformer.helper("named" /* NAMED */);
1182
+ case 4 /* NodeTypes.Named */:
1183
+ transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */);
1184
+ transformer.helper("named" /* HelperNameMap.NAMED */);
1185
1185
  break;
1186
1186
  }
1187
1187
  // TODO: if we need post-hook of transform, should be implemented to here
@@ -1190,7 +1190,7 @@ function traverseNode(node, transformer) {
1190
1190
  function transform(ast, options = {} // eslint-disable-line
1191
1191
  ) {
1192
1192
  const transformer = createTransformer(ast);
1193
- transformer.helper("normalize" /* NORMALIZE */);
1193
+ transformer.helper("normalize" /* HelperNameMap.NORMALIZE */);
1194
1194
  // traverse
1195
1195
  ast.body && traverseNode(ast.body, transformer);
1196
1196
  // set meta information
@@ -1245,7 +1245,7 @@ function createCodeGenerator(ast, options) {
1245
1245
  }
1246
1246
  function generateLinkedNode(generator, node) {
1247
1247
  const { helper } = generator;
1248
- generator.push(`${helper("linked" /* LINKED */)}(`);
1248
+ generator.push(`${helper("linked" /* HelperNameMap.LINKED */)}(`);
1249
1249
  generateNode(generator, node.key);
1250
1250
  if (node.modifier) {
1251
1251
  generator.push(`, `);
@@ -1259,7 +1259,7 @@ function generateLinkedNode(generator, node) {
1259
1259
  }
1260
1260
  function generateMessageNode(generator, node) {
1261
1261
  const { helper, needIndent } = generator;
1262
- generator.push(`${helper("normalize" /* NORMALIZE */)}([`);
1262
+ generator.push(`${helper("normalize" /* HelperNameMap.NORMALIZE */)}([`);
1263
1263
  generator.indent(needIndent());
1264
1264
  const length = node.items.length;
1265
1265
  for (let i = 0; i < length; i++) {
@@ -1275,7 +1275,7 @@ function generateMessageNode(generator, node) {
1275
1275
  function generatePluralNode(generator, node) {
1276
1276
  const { helper, needIndent } = generator;
1277
1277
  if (node.cases.length > 1) {
1278
- generator.push(`${helper("plural" /* PLURAL */)}([`);
1278
+ generator.push(`${helper("plural" /* HelperNameMap.PLURAL */)}([`);
1279
1279
  generator.indent(needIndent());
1280
1280
  const length = node.cases.length;
1281
1281
  for (let i = 0; i < length; i++) {
@@ -1300,34 +1300,34 @@ function generateResource(generator, node) {
1300
1300
  function generateNode(generator, node) {
1301
1301
  const { helper } = generator;
1302
1302
  switch (node.type) {
1303
- case 0 /* Resource */:
1303
+ case 0 /* NodeTypes.Resource */:
1304
1304
  generateResource(generator, node);
1305
1305
  break;
1306
- case 1 /* Plural */:
1306
+ case 1 /* NodeTypes.Plural */:
1307
1307
  generatePluralNode(generator, node);
1308
1308
  break;
1309
- case 2 /* Message */:
1309
+ case 2 /* NodeTypes.Message */:
1310
1310
  generateMessageNode(generator, node);
1311
1311
  break;
1312
- case 6 /* Linked */:
1312
+ case 6 /* NodeTypes.Linked */:
1313
1313
  generateLinkedNode(generator, node);
1314
1314
  break;
1315
- case 8 /* LinkedModifier */:
1315
+ case 8 /* NodeTypes.LinkedModifier */:
1316
1316
  generator.push(JSON.stringify(node.value), node);
1317
1317
  break;
1318
- case 7 /* LinkedKey */:
1318
+ case 7 /* NodeTypes.LinkedKey */:
1319
1319
  generator.push(JSON.stringify(node.value), node);
1320
1320
  break;
1321
- case 5 /* List */:
1322
- generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("list" /* LIST */)}(${node.index}))`, node);
1321
+ case 5 /* NodeTypes.List */:
1322
+ generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("list" /* HelperNameMap.LIST */)}(${node.index}))`, node);
1323
1323
  break;
1324
- case 4 /* Named */:
1325
- generator.push(`${helper("interpolate" /* INTERPOLATE */)}(${helper("named" /* NAMED */)}(${JSON.stringify(node.key)}))`, node);
1324
+ case 4 /* NodeTypes.Named */:
1325
+ generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("named" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node);
1326
1326
  break;
1327
- case 9 /* Literal */:
1327
+ case 9 /* NodeTypes.Literal */:
1328
1328
  generator.push(JSON.stringify(node.value), node);
1329
1329
  break;
1330
- case 3 /* Text */:
1330
+ case 3 /* NodeTypes.Text */:
1331
1331
  generator.push(JSON.stringify(node.value), node);
1332
1332
  break;
1333
1333
  default: