meriyah 6.1.1 → 6.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ ## [6.1.3](https://github.com/meriyah/meriyah/compare/v6.1.2...v6.1.3) (2025-06-24)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **parser:** fix line/column where string literal contains `U+2028` or `U+2029` followed by `\` ([#478](https://github.com/meriyah/meriyah/issues/478)) ([1f054a1](https://github.com/meriyah/meriyah/commit/1f054a1cbc18ca593edc73d1787880134e36aa11))
7
+ * **parser:** fix line/column where string literal contains U+2028 or U+2029 ([#477](https://github.com/meriyah/meriyah/issues/477)) ([6117d2f](https://github.com/meriyah/meriyah/commit/6117d2f424bf2f627ff2cf5fe6f65519f4dac072))
8
+ * **parser:** fix location of `SequenceExpression` as `ForStatement.init` ([#476](https://github.com/meriyah/meriyah/issues/476)) ([b79282b](https://github.com/meriyah/meriyah/commit/b79282b5e833440ef3433b612b856e4b1fec1bd5))
9
+ * **parser:** fix location of object method which is a generator ([#474](https://github.com/meriyah/meriyah/issues/474)) ([c11f9dd](https://github.com/meriyah/meriyah/commit/c11f9dd880571f97daea27d2f580e8d9e952d023))
10
+ * **parser:** fix range of static class property named `accessor`, `get`, `set`, and `async` ([#471](https://github.com/meriyah/meriyah/issues/471)) ([27f224c](https://github.com/meriyah/meriyah/commit/27f224c54748e82f4139a2d29f0278b32bc5b9e1))
11
+
12
+
13
+
14
+ ## [6.1.2](https://github.com/meriyah/meriyah/compare/v6.1.1...v6.1.2) (2025-06-21)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **parser:** fix column of escaped identifier ([#469](https://github.com/meriyah/meriyah/issues/469)) ([98d3983](https://github.com/meriyah/meriyah/commit/98d398314f03c3c850368bee1ce697b88f070c79))
20
+ * **parser:** fix location of `import.meta` ([#461](https://github.com/meriyah/meriyah/issues/461)) ([6a05b0e](https://github.com/meriyah/meriyah/commit/6a05b0e0183f357ced7b26207a2a2f22ca287e80))
21
+
22
+
23
+
1
24
  ## [6.1.1](https://github.com/meriyah/meriyah/compare/v6.1.0...v6.1.1) (2025-06-17)
2
25
 
3
26
 
package/README.md CHANGED
@@ -147,9 +147,9 @@ declare function onInsertedSemicolon(position: number): void;
147
147
  ## Example usage
148
148
 
149
149
  ```js
150
- import { parseScript } from './meriyah';
150
+ import { parse } from './meriyah';
151
151
 
152
- parseScript('({x: [y] = 0} = 1)');
152
+ parse('({x: [y] = 0} = 1)');
153
153
  ```
154
154
 
155
155
  This will return when serialized in json:
package/dist/meriyah.cjs CHANGED
@@ -180,6 +180,11 @@ const errorMessages = {
180
180
  [177]: 'cannot use "await" in static blocks',
181
181
  };
182
182
  class ParseError extends SyntaxError {
183
+ start;
184
+ end;
185
+ range;
186
+ loc;
187
+ description;
183
188
  constructor(start, end, type, ...params) {
184
189
  const description = errorMessages[type].replace(/%(\d+)/g, (_, i) => params[i]);
185
190
  const message = '[' + start.line + ':' + start.column + '-' + end.line + ':' + end.column + ']: ' + description;
@@ -981,6 +986,10 @@ function scanString(parser, context, quote) {
981
986
  }
982
987
  marker = parser.index + 1;
983
988
  }
989
+ else if (char === 8232 || char === 8233) {
990
+ parser.column = -1;
991
+ parser.line++;
992
+ }
984
993
  if (parser.index >= parser.end)
985
994
  report(parser, 16);
986
995
  char = advanceChar(parser);
@@ -1630,6 +1639,7 @@ function scanIdentifierUnicodeEscape(parser) {
1630
1639
  report(parser, 5);
1631
1640
  }
1632
1641
  parser.currentChar = parser.source.charCodeAt((parser.index += 2));
1642
+ parser.column += 2;
1633
1643
  return scanUnicodeEscape(parser);
1634
1644
  }
1635
1645
  function scanUnicodeEscape(parser) {
@@ -1661,6 +1671,7 @@ function scanUnicodeEscape(parser) {
1661
1671
  report(parser, 7);
1662
1672
  codePoint = (toHex(char) << 12) | (toHex(char2) << 8) | (toHex(char3) << 4) | toHex(char4);
1663
1673
  parser.currentChar = parser.source.charCodeAt((parser.index += 4));
1674
+ parser.column += 4;
1664
1675
  return codePoint;
1665
1676
  }
1666
1677
 
@@ -4713,31 +4724,33 @@ function classifyIdentifier(parser, context, t) {
4713
4724
  }
4714
4725
 
4715
4726
  class Parser {
4727
+ source;
4728
+ options;
4729
+ lastOnToken = null;
4730
+ token = 1048576;
4731
+ flags = 0;
4732
+ index = 0;
4733
+ line = 1;
4734
+ column = 0;
4735
+ startIndex = 0;
4736
+ end = 0;
4737
+ tokenIndex = 0;
4738
+ startColumn = 0;
4739
+ tokenColumn = 0;
4740
+ tokenLine = 1;
4741
+ startLine = 1;
4742
+ tokenValue = '';
4743
+ tokenRaw = '';
4744
+ tokenRegExp = void 0;
4745
+ currentChar = 0;
4746
+ exportedNames = {};
4747
+ exportedBindings = {};
4748
+ assignable = 1;
4749
+ destructible = 0;
4750
+ leadingDecorators = { decorators: [] };
4716
4751
  constructor(source, options = {}) {
4717
4752
  this.source = source;
4718
4753
  this.options = options;
4719
- this.lastOnToken = null;
4720
- this.token = 1048576;
4721
- this.flags = 0;
4722
- this.index = 0;
4723
- this.line = 1;
4724
- this.column = 0;
4725
- this.startIndex = 0;
4726
- this.end = 0;
4727
- this.tokenIndex = 0;
4728
- this.startColumn = 0;
4729
- this.tokenColumn = 0;
4730
- this.tokenLine = 1;
4731
- this.startLine = 1;
4732
- this.tokenValue = '';
4733
- this.tokenRaw = '';
4734
- this.tokenRegExp = void 0;
4735
- this.currentChar = 0;
4736
- this.exportedNames = {};
4737
- this.exportedBindings = {};
4738
- this.assignable = 1;
4739
- this.destructible = 0;
4740
- this.leadingDecorators = { decorators: [] };
4741
4754
  this.end = source.length;
4742
4755
  this.currentChar = source.charCodeAt(0);
4743
4756
  }
@@ -4989,7 +5002,7 @@ function parseStatementListItem(parser, context, scope, privateScope, origin, la
4989
5002
  case 67174411:
4990
5003
  return parseImportCallDeclaration(parser, context, privateScope, start);
4991
5004
  case 67108877:
4992
- return parseImportMetaDeclaration(parser, context);
5005
+ return parseImportMetaDeclaration(parser, context, start);
4993
5006
  default:
4994
5007
  report(parser, 103, 'import');
4995
5008
  }
@@ -5074,7 +5087,7 @@ function parseExpressionOrLabelledStatement(parser, context, scope, privateScope
5074
5087
  }
5075
5088
  return parseExpressionStatement(parser, context, expr, tokenStart);
5076
5089
  }
5077
- function parseBlock(parser, context, scope, privateScope, labels, start, type = 'BlockStatement') {
5090
+ function parseBlock(parser, context, scope, privateScope, labels, start = parser.tokenStart, type = 'BlockStatement') {
5078
5091
  const body = [];
5079
5092
  consume(parser, context | 8192, 2162700);
5080
5093
  while (parser.getToken() !== 1074790415) {
@@ -5359,7 +5372,7 @@ function parseTryStatement(parser, context, scope, privateScope, labels) {
5359
5372
  const start = parser.tokenStart;
5360
5373
  nextToken(parser, context | 8192);
5361
5374
  const firstScope = scope ? addChildScope(scope, 32) : void 0;
5362
- const block = parseBlock(parser, context, firstScope, privateScope, { $: labels }, parser.tokenStart);
5375
+ const block = parseBlock(parser, context, firstScope, privateScope, { $: labels });
5363
5376
  const { tokenStart } = parser;
5364
5377
  const handler = consumeOpt(parser, context | 8192, 20557)
5365
5378
  ? parseCatchBlock(parser, context, scope, privateScope, labels, tokenStart)
@@ -5368,7 +5381,7 @@ function parseTryStatement(parser, context, scope, privateScope, labels) {
5368
5381
  if (parser.getToken() === 20566) {
5369
5382
  nextToken(parser, context | 8192);
5370
5383
  const finalizerScope = firstScope ? addChildScope(scope, 4) : void 0;
5371
- const block = parseBlock(parser, context, finalizerScope, privateScope, { $: labels }, parser.tokenStart);
5384
+ const block = parseBlock(parser, context, finalizerScope, privateScope, { $: labels });
5372
5385
  finalizer = block;
5373
5386
  }
5374
5387
  if (!handler && !finalizer) {
@@ -5400,7 +5413,7 @@ function parseCatchBlock(parser, context, scope, privateScope, labels, start) {
5400
5413
  }
5401
5414
  if (scope)
5402
5415
  additionalScope = addChildScope(scope, 64);
5403
- const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels }, parser.tokenStart);
5416
+ const body = parseBlock(parser, context, additionalScope, privateScope, { $: labels });
5404
5417
  return parser.finishNode({
5405
5418
  type: 'CatchClause',
5406
5419
  param,
@@ -5656,7 +5669,7 @@ function parseForStatement(parser, context, scope, privateScope, labels) {
5656
5669
  init = parseAssignmentExpression(parser, context | 33554432, privateScope, 0, 0, tokenStart, init);
5657
5670
  }
5658
5671
  if (parser.getToken() === 18)
5659
- init = parseSequenceExpression(parser, context, privateScope, 0, parser.tokenStart, init);
5672
+ init = parseSequenceExpression(parser, context, privateScope, 0, tokenStart, init);
5660
5673
  consume(parser, context | 8192, 1074790417);
5661
5674
  if (parser.getToken() !== 1074790417)
5662
5675
  test = parseExpressions(parser, context, privateScope, 0, 1, parser.tokenStart);
@@ -5724,7 +5737,7 @@ function parseImportDeclaration(parser, context, scope) {
5724
5737
  case 67174411:
5725
5738
  return parseImportCallDeclaration(parser, context, undefined, start);
5726
5739
  case 67108877:
5727
- return parseImportMetaDeclaration(parser, context);
5740
+ return parseImportMetaDeclaration(parser, context, start);
5728
5741
  default:
5729
5742
  report(parser, 30, KeywordDescTable[parser.getToken() & 255]);
5730
5743
  }
@@ -5797,12 +5810,11 @@ function parseImportSpecifierOrNamedImports(parser, context, scope, specifiers)
5797
5810
  consume(parser, context, 1074790415);
5798
5811
  return specifiers;
5799
5812
  }
5800
- function parseImportMetaDeclaration(parser, context) {
5801
- const start = parser.tokenStart;
5813
+ function parseImportMetaDeclaration(parser, context, start) {
5802
5814
  let expr = parseImportMetaExpression(parser, context, parser.finishNode({
5803
5815
  type: 'Identifier',
5804
5816
  name: 'import',
5805
- }, start));
5817
+ }, start), start);
5806
5818
  expr = parseMemberOrUpdateExpression(parser, context, undefined, expr, 0, 0, start);
5807
5819
  expr = parseAssignmentExpression(parser, context, undefined, 0, 0, start, expr);
5808
5820
  if (parser.getToken() === 18) {
@@ -6411,7 +6423,7 @@ function parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGr
6411
6423
  tag: expr,
6412
6424
  quasi: parser.getToken() === 67174408
6413
6425
  ? parseTemplate(parser, context | 16384, privateScope)
6414
- : parseTemplateLiteral(parser, context, parser.tokenStart),
6426
+ : parseTemplateLiteral(parser, context),
6415
6427
  }, start);
6416
6428
  }
6417
6429
  expr = parseMemberOrUpdateExpression(parser, context, privateScope, expr, 0, 1, start);
@@ -6580,7 +6592,7 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
6580
6592
  case 86109:
6581
6593
  return parseSuperExpression(parser, context);
6582
6594
  case 67174409:
6583
- return parseTemplateLiteral(parser, context, start);
6595
+ return parseTemplateLiteral(parser, context);
6584
6596
  case 67174408:
6585
6597
  return parseTemplate(parser, context, privateScope);
6586
6598
  case 86107:
@@ -6603,7 +6615,7 @@ function parsePrimaryExpression(parser, context, privateScope, kind, inNew, canA
6603
6615
  function parseImportCallOrMetaExpression(parser, context, privateScope, inNew, inGroup, start) {
6604
6616
  let expr = parseIdentifier(parser, context);
6605
6617
  if (parser.getToken() === 67108877) {
6606
- return parseImportMetaExpression(parser, context, expr);
6618
+ return parseImportMetaExpression(parser, context, expr, start);
6607
6619
  }
6608
6620
  if (inNew)
6609
6621
  report(parser, 142);
@@ -6611,10 +6623,9 @@ function parseImportCallOrMetaExpression(parser, context, privateScope, inNew, i
6611
6623
  parser.assignable = 2;
6612
6624
  return parseMemberOrUpdateExpression(parser, context, privateScope, expr, inGroup, 0, start);
6613
6625
  }
6614
- function parseImportMetaExpression(parser, context, meta) {
6626
+ function parseImportMetaExpression(parser, context, meta, start) {
6615
6627
  if ((context & 512) === 0)
6616
6628
  report(parser, 169);
6617
- const { tokenStart } = parser;
6618
6629
  nextToken(parser, context);
6619
6630
  const token = parser.getToken();
6620
6631
  if (token !== 209030 && parser.tokenValue !== 'meta') {
@@ -6628,7 +6639,7 @@ function parseImportMetaExpression(parser, context, meta) {
6628
6639
  type: 'MetaProperty',
6629
6640
  meta,
6630
6641
  property: parseIdentifier(parser, context),
6631
- }, tokenStart);
6642
+ }, start);
6632
6643
  }
6633
6644
  function parseImportExpression(parser, context, privateScope, inGroup, start) {
6634
6645
  consume(parser, context | 8192, 67174411);
@@ -6751,7 +6762,7 @@ function parseBigIntLiteral(parser, context) {
6751
6762
  }
6752
6763
  return parser.finishNode(node, tokenStart);
6753
6764
  }
6754
- function parseTemplateLiteral(parser, context, start) {
6765
+ function parseTemplateLiteral(parser, context) {
6755
6766
  parser.assignable = 2;
6756
6767
  const { tokenValue, tokenRaw, tokenStart } = parser;
6757
6768
  consume(parser, context, 67174409);
@@ -6760,7 +6771,7 @@ function parseTemplateLiteral(parser, context, start) {
6760
6771
  type: 'TemplateLiteral',
6761
6772
  expressions: [],
6762
6773
  quasis,
6763
- }, start);
6774
+ }, tokenStart);
6764
6775
  }
6765
6776
  function parseTemplate(parser, context, privateScope) {
6766
6777
  context = (context | 33554432) ^ 33554432;
@@ -7849,7 +7860,7 @@ function parseObjectLiteralOrPattern(parser, context, scope, privateScope, skipI
7849
7860
  destructible |= 16;
7850
7861
  key = parseLiteral(parser, context);
7851
7862
  state |= 1;
7852
- value = parseMethodDefinition(parser, context, privateScope, state, inGroup, tokenStart);
7863
+ value = parseMethodDefinition(parser, context, privateScope, state, inGroup, parser.tokenStart);
7853
7864
  }
7854
7865
  else if (parser.getToken() === 69271571) {
7855
7866
  destructible |= 16;
@@ -8340,7 +8351,7 @@ function parseMemberExpressionNoCall(parser, context, privateScope, expr, inGrou
8340
8351
  tag: expr,
8341
8352
  quasi: parser.getToken() === 67174408
8342
8353
  ? parseTemplate(parser, context | 16384, privateScope)
8343
- : parseTemplateLiteral(parser, context | 16384, parser.tokenStart),
8354
+ : parseTemplateLiteral(parser, context | 16384),
8344
8355
  }, start), 0, start);
8345
8356
  }
8346
8357
  }
@@ -8639,12 +8650,13 @@ function parseDecorators(parser, context, privateScope) {
8639
8650
  const list = [];
8640
8651
  if (context & 1) {
8641
8652
  while (parser.getToken() === 132) {
8642
- list.push(parseDecoratorList(parser, context, privateScope, parser.tokenStart));
8653
+ list.push(parseDecoratorList(parser, context, privateScope));
8643
8654
  }
8644
8655
  }
8645
8656
  return list;
8646
8657
  }
8647
- function parseDecoratorList(parser, context, privateScope, start) {
8658
+ function parseDecoratorList(parser, context, privateScope) {
8659
+ const start = parser.tokenStart;
8648
8660
  nextToken(parser, context | 8192);
8649
8661
  let expression = parsePrimaryExpression(parser, context, privateScope, 2, 0, 1, 0, 1, start);
8650
8662
  expression = parseMemberOrUpdateExpression(parser, context, privateScope, expression, 0, 0, parser.tokenStart);
@@ -8692,7 +8704,6 @@ function parseClassBody(parser, context, inheritedContext, scope, parentScope, k
8692
8704
  function parseClassElementList(parser, context, scope, privateScope, inheritedContext, type, decorators, isStatic, inGroup, start) {
8693
8705
  let kind = isStatic ? 32 : 0;
8694
8706
  let key = null;
8695
- const { tokenStart } = parser;
8696
8707
  const token = parser.getToken();
8697
8708
  if (token & (143360 | 36864) || token === -2147483528) {
8698
8709
  key = parseIdentifier(parser, context);
@@ -8708,7 +8719,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8708
8719
  case 209005:
8709
8720
  if (parser.getToken() !== 67174411 && (parser.flags & 1) === 0) {
8710
8721
  if ((parser.getToken() & 1073741824) === 1073741824) {
8711
- return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
8722
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8712
8723
  }
8713
8724
  kind |= 16 | (optionalBit(parser, context, 8391476) ? 8 : 0);
8714
8725
  }
@@ -8716,7 +8727,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8716
8727
  case 209008:
8717
8728
  if (parser.getToken() !== 67174411) {
8718
8729
  if ((parser.getToken() & 1073741824) === 1073741824) {
8719
- return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
8730
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8720
8731
  }
8721
8732
  kind |= 256;
8722
8733
  }
@@ -8724,7 +8735,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8724
8735
  case 209009:
8725
8736
  if (parser.getToken() !== 67174411) {
8726
8737
  if ((parser.getToken() & 1073741824) === 1073741824) {
8727
- return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
8738
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8728
8739
  }
8729
8740
  kind |= 512;
8730
8741
  }
@@ -8732,7 +8743,7 @@ function parseClassElementList(parser, context, scope, privateScope, inheritedCo
8732
8743
  case 12402:
8733
8744
  if (parser.getToken() !== 67174411 && (parser.flags & 1) === 0) {
8734
8745
  if ((parser.getToken() & 1073741824) === 1073741824) {
8735
- return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, tokenStart);
8746
+ return parsePropertyDefinition(parser, context, privateScope, key, kind, decorators, start);
8736
8747
  }
8737
8748
  if (context & 1)
8738
8749
  kind |= 1024;
@@ -9240,7 +9251,7 @@ function parseJSXIdentifier(parser, context) {
9240
9251
  }, start);
9241
9252
  }
9242
9253
 
9243
- var version$1 = "6.1.1";
9254
+ var version$1 = "6.1.3";
9244
9255
 
9245
9256
  const version = version$1;
9246
9257
  function parseScript(source, options) {