Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

meriyah

meriyah567.9kISC6.0.5TypeScript support: included

A 100% compliant, self-hosted javascript parser with high focus on both performance and stability

parsing, ecmascript, javascript, parser, estree, esnext, lexer, ast

readme

Meriyah

100% compliant, self-hosted javascript parser with high focus on both performance and stability. Stable and already used in production.

Meriyah NPM Node.js CI License


Interactive Playground Benchmark

Features

  • Conforms to the standard ECMAScript® 2024 (ECMA-262 15th Edition) language specification
  • Support some TC39 stage 3 proposals via option "next"
  • Support for additional ECMAScript features for Web Browsers (Annex B)
  • JSX support via option "jsx"
  • Does NOT support TypeScript or Flow syntax
  • Track syntactic node locations with option "ranges" or "loc"
  • Emits an ESTree-compatible abstract syntax tree
  • No backtracking
  • Low memory usage

ESNext Stage 3 features

Supported stage 3 features:

These features need to be enabled with the next option.

Not yet supported stage 3 features:

RegExp support

Meriyah doesn't parse RegExp internal syntax, ESTree spec didn't require internal structure of RegExp. Meriyah does use JavaScript runtime to validate the RegExp literal. That means Meriyah's RegExp support is only as good as JavaScript runtime's RegExp support.

As of Auguest 2024, some latest RegExp features are not supported due to missing implementation in general JavaScript runtime.

In addition, RegExp v flag (unicodeSets) only works on Nodejs v20+ and latest browsers.

Installation

npm install meriyah --save-dev

API

Meriyah generates AST according to ESTree AST format, and can be used to perform syntactic analysis (parsing) of a JavaScript program, and with ES2015 and later a JavaScript program can be either a script or a module.

The parse method exposed by meriyah takes an optional options object which allows you to specify whether to parse in script mode (the default) or in module mode.

// There are also "parseScript" and "parseModule" exported.
import { parse } from 'meriyah';
const result = parse('let some = "code";', { ranges: true });

The available options:

{
  // The flag to allow module code
  module: false;

  // The flag to enable stage 3 support (ESNext)
  next: false;

  // The flag to enable start, end offsets and range: [start, end] to each node
  ranges: false;

  // Enable web compatibility
  webcompat: false;

  // The flag to enable line/column location information to each node
  loc: false;

  // The flag to attach raw property to each literal and identifier node
  raw: false;

  // The flag to allow return in the global scope
  globalReturn: false;

  // The flag to enable implied strict mode
  impliedStrict: false;

  // Allows comment extraction. Accepts either a function or array
  onComment: [];

  // Allows detection of automatic semicolon insertion. Accepts a callback function that will be passed the charater offset where the semicolon was inserted
  onInsertedSemicolon: (pos) => {};

  // Allows token extraction. Accepts either a function or array
  onToken: [];

  // Enable non-standard parenthesized expression node
  preserveParens: false;

  // Enable lexical binding and scope tracking
  lexical: false;

  // Adds a source attribute in every node’s loc object when the locations option is `true`
  source: undefined; // Set to source: 'source-file.js'

  // Enable React JSX parsing
  jsx: false;
}

onComment and onToken

If an array is supplied, comments/tokens will be pushed to the array, the item in the array contains start/end/range information when ranges flag is true, it will also contain loc information when loc flag is true.

If a function callback is supplied, the signature must be

declare function onComment(type: string, value: string, start: number, end: number, loc: SourceLocation): void;

declare function onToken(token: string, start: number, end: number, loc: SourceLocation): void;

Note the start/end/loc information are provided to the function callback regardless of the settings on ranges and loc flags. onComment callback has one extra argument value: string for the body string of the comment.

onInsertedSemicolon

If a function callback is supplied, the signature must be

declare function onInsertedSemicolon(position: number): void;

Example usage

import { parseScript } from './meriyah';

parseScript('({x: [y] = 0} = 1)');

This will return when serialized in json:

{
    type: "Program",
    sourceType: "script",
    body: [
        {
            type: "ExpressionStatement",
            expression: {
                type: "AssignmentExpression",
                left: {
                    type: "ObjectPattern",
                    properties: [
                        {
                            type: "Property",
                            key: {
                                type: "Identifier",
                                name: "x"
                            },
                            value: {
                                type: "AssignmentPattern",
                                left: {
                                    type: "ArrayPattern",
                                    elements: [
                                        {
                                            "type": "Identifier",
                                            "name": "y"
                                        }
                                    ]
                                },
                                right: {
                                    type: "Literal",
                                    value: 0
                                }
                            },
                            kind: "init",
                            computed: false,
                            method: false,
                            shorthand: false
                        }
                    ]
                },
                operator: "=",
                right: {
                    type: "Literal",
                    value: 1
                }
            }
        }
    ]
}

changelog

6.0.5 (2025-01-10)

Bug Fixes

  • parser: fix JSX attribute name parse (#363) (b113081)

6.0.4 (2025-01-03)

Bug Fixes

  • parser: fix lexical analysis on export of async func (#361) (8ff271e), closes #360

6.0.3 (2024-10-28)

Bug Fixes

  • parser: fix tagged template parsing when tag has param(s) (b549ed3), closes #350

6.0.2 (2024-10-01)

Bug Fixes

  • parser: all identifiers can be start of an expression (7f800c5), closes #342

6.0.1 (2024-09-16)

Bug Fixes

  • scanner: proper EOF error for unterminated template (cde6b2f)

6.0.0 (2024-09-16)

Bug Fixes

  • lexer: identifier starts with unicode-escape needs ID_Start check (e1d5534)
  • lexer: in non-strict mode, future reserved keyword can be used as identifier (5764ad7)
  • lexer: no line break is allowed in regex literal (773208b)
  • lexer: private identifier can start with escaped unicode (85a39e7)
  • lexer: unicode escaped "let" can not be let keyword (406d72c)
  • parser: "arguments" is not allowed in class property initializer or static block (c9857c6)
  • parser: "use strict" directive could be after invalid string (527ea97), closes #149
  • parser: a newline may not precede the * token in a yield expression (e0eeb89)
  • parser: add missing import-attributes support in ExportNamedDeclaration (f7864a6), closes #289
  • parser: async function should not skip duplication error (94d41ae), closes #291
  • parser: catch block without catch-binding should have lexical scope (db7b3ae)
  • parser: class is implicit strict mode, but decorator before class is not (97f4927)
  • parser: class static block disallows "await" as identifier (4c7f2c3)
  • parser: class static block disllows "yield" as idenfifier (1cb0d65)
  • parser: class static block has no return statement (f2b73ee)
  • parser: dot property name can be escaped reserved or future reserved (eedce98)
  • parser: escaped reserved keyword can be used as class element name (b8e4b3c)
  • parser: fix an edge case of invalid escape in tagged template (118fdae)
  • parser: fix annexB behaviour (webcompat) of catch param (359dcbe)
  • parser: fix destruct pattern check (1e5e394)
  • parser: fix duplicated function params check (d0aeda6)
  • parser: fix duplicated proto check in async() and async() => {} (66ad497)
  • parser: fix early error on escaped oct and \8 \9 (33b68df)
  • parser: fix import.meta check, await check and await in static block (b269996)
  • parser: fix jsx parsing on '< / >' (ad71155), closes #185
  • parser: fix jsx with comments in tag (a2e4767), closes #185
  • parser: fix onToken callback for template and jsx (407a2ca), closes #215 #216
  • parser: fix scoped analysis for export binding and name (22509b7)
  • parser: fix simple params list and strict reserved check on func (635a41b), closes #295 #296
  • parser: fix unicode identifier value and check (36a5ef6)
  • parser: generator function should not skip duplication error (d3c953b)
  • parser: in strict mode, escaped future reserved can be used as identifier but not destructible (762f8c1)
  • parser: iteration/switch cannot across class static block boundry (c832eb6)
  • parser: new.target is allowed in class static block (2cec2a9)
  • parser: object literal ({a b}) is invalid (c069662), closes #73
  • parser: oct escape and \8 \9 are not allowed in template string if not tagged (e12d75d)
  • parser: only class static non-private property cannot be named 'prototype' (03ef7bc)
  • parser: partially fix duplicated proto check in parenthesis (e998b9c)
  • parser: private identifier should work in optional chaining (f22f7ad)
  • paser: fix strict mode check for arrow function (4ca184a)
  • paser: private identifier cannot be accessed on super (15d679d)
  • scanner: fix value for huge BigInt (a09b497)

chore

  • drop support of Nodejs < 18 (829835e)
  • reduce dist files to esm, cjs, and umd (962af5f)

Features

  • lexer: support regexp v flag (unicodeSets) (1d9a1ee)
  • parser: expose start/end/range/loc:{start,end} to ParseError (27691df), closes #156
  • parser: implement lexical analysis of private identifiers (66217a1), closes #322
  • parser: support arbitrary module namespace names (e43e93c), closes #200 #214
  • parser: support class auto-accessor through next option (b0d1621), closes #327
  • remove option "directives" (5d941e6)
  • support unicode 16 (0514c83)

BREAKING CHANGES

  • remove option "directives" as directives is in ECMA spec, and ESTree spec. No point to make it an optional feature.
  • parser: ParseError is changed from index,loc:{line,column} to start,end,range:[start,end],loc:{start:{line,column},end:{line,column}} just like what we have on AST node when options ranges and loc is turned on.
  • drop support of Nodejs < 18
  • only distribute following files: dist/meriyah.cjs dist/meriyah.mjs dist/meriyah.min.mjs dist/meriyah.umd.js dist/meriyah.umd.min.js All transpiled with target: "ES2021"

5.0.0 (2024-07-25)

Bug Fixes

  • parser: class property definition needs to be separated (#276) (fc252f4), closes #233

Features

  • parser: class public/private fields are in ecma spec now (#278) (332b738)
  • parser: move hashbang out of "next" option (e2f28fc)
  • parser: support import attributes (#280) (77d3fdc)

BREAKING CHANGES

  • parser: hashbang now works without "next" option.

4.5.0 (2024-06-06)

4.4.4 (2024-06-06)

Bug Fixes

  • parser: reject "import from 'foo'" (bee9e31), closes #258

4.4.3 (2024-05-23)

4.4.2 (2024-04-03)

4.4.1 (2024-03-31)

Bug Fixes

  • parser: fix import.meta in sequence (15ea395)
  • parser: fix async assignment in comma expression (9652602)
  • parser: fix async assignment in sequence (223936e)

4.4.0 (2024-03-05)

Features

  • parser: add onInsertedSemicolon option (557a893)

4.3.9 (2023-11-24)

4.3.8 (2023-11-01)

Bug Fixes

  • parser: assignment as a value for property definition (5f8f006)

4.3.7 (2023-05-12)

Bug Fixes

  • parser: nested class with constructor should not fail (c0856b9)

4.3.6 (2023-05-10)

4.3.5 (2023-03-13)

4.3.4 (2023-02-18)

Bug Fixes

  • parser: "static" can be used as an identifier in ClassElement (663937a), closes #231
  • parser: fix loc info for JSXSpreadChild (4a99416), closes #235

4.3.3 (2022-11-12)

Bug Fixes

  • parser: invalid generator setter should have correct error message (193b3ef), closes #228

4.3.2 (2022-10-01)

Bug Fixes

  • parser: ~ (0x7e) is valid stop for Identifier or Keyword (d702ebd), closes #226

4.3.1 (2022-09-11)

Bug Fixes

  • async is not reserved word, and some fix on reserved words (427233e), closes #221
  • dot property should allow escaped keyword in strict mode (efaa535), closes #224

4.3.0 (2022-08-02)

Bug Fixes

  • parser: Support for class static initialization block without next flag (a3b10f0)
  • parser: support top level for-await in module context (69761bf), closes #214
  • use null as regex value in environment missing flag "d" support (b174ae6)

Features

  • lexer: support new RegExp Indices flag "d" (#217) (b98e3bd), closes #214
  • parser: Add support for class static initialization block (1510e36)

4.2.1 (2022-03-31)

Bug Fixes

  • lexer: fix wrong error when using regex flag s together with m or y (d757c6b), closes #202
  • parser: allow regular expression in JSXExpressionContainer (a5fcb80), closes #204
  • parser: allow top level await in expressions (37c6361), closes #212
  • parser: fix wrong starting loc for any non-trival expression in return statement (7063af5), closes #207
  • parser: super call should be allowed in private method (6de707a), closes #203

4.2.0 (2021-07-11)

Bug Fixes

  • parser: keep InGlobal flag in parenthesized (023ee0e)
  • parser: rejects "await 2**2" (9a75bf6), closes #187

Features

  • parser: support top-level await (7b2a5bd), closes #186

4.1.5 (2021-03-05)

Bug Fixes

  • parser: fix missing rejection on function name (3327326), closes #182

4.1.4 (2021-02-28)

4.1.3 (2021-02-28)

4.1.2 (2021-02-10)

4.1.1 (2021-02-09)

Bug Fixes

4.1.0 (2021-02-07)

Bug Fixes

  • jsx: decode html entities for JSXText value (f8121f0), closes #133
  • parser: fix wrong loc for BinaryExpression (ab1ab37), closes #169
  • parser: fix wrong loc for TemplateLiteral (a893c16), closes #167

Features

  • add support of logical assignment ||=, &&=, and ??= (2a5f12e), closes #168

4.0.0 (2021-01-14)

Bug Fixes

  • estree: rename FieldDefinition -> PropertyDefinition, PrivateName -> PrivateIdentifier (2a588e5), closes #134
  • parser: fixed 'async' as 'IsExpressionStart' (5b7a592)
  • parser: fixed issue with 'yield expr' (5cd7c1d)

chore

  • update deps, add previous missing breaking change note (286863e)

BREAKING CHANGES

  • updated estree node names: FieldDefinition -> PropertyDefinition, PrivateName -> PrivateIdentifier

3.1.6 (2020-11-07)

Bug Fixes

  • bypass type def of package.json (d267336), closes #155

3.1.5 (2020-11-05)

Bug Fixes

  • fix wrong CommentType type definition (641b6ee)

3.1.4 (2020-11-05)

Bug Fixes

  • fix wrong typescript def file location (1ffac6e), closes #153

3.1.3 (2020-11-04)

Bug Fixes

  • fix wrong ParenthesizedExpression location (db468c2), closes #152

3.1.2 (2020-10-30)

Bug Fixes

  • lexer: fix line continuation with \r\n (1423e81), closes #146

3.1.1 (2020-10-29)

Bug Fixes

  • lexer: \8 \9 are acceptable in web compatibility mode (26a19a8), closes #137
  • bigint is a number literal (2ad1a27), closes #136
  • fix ending loc of empty comment (d62d0b8), closes #126
  • fix infinite loop on broken class body (22eb9f8), closes #143
  • fix range of ExportDeclaration/ClassDeclaration/ClassExpression after decorators (81b07fb), closes #124
  • fix wrongly captured directive with two literal expression statements (9504b6a), closes #130
  • jsx: fix JSXIdentifier literal value range and loc (076e454), closes #127
  • jsx: fix missing raw for JSXAttribute.value (bbd8b8a), closes #128
  • jsx: fix wrong range and loc on JSXEmptyExpression (11765ce), closes #125
  • jsx: JSXText node should have raw (5ea7bda), closes #129

3.1.0 (2020-10-27)

Bug Fixes

  • fix loc on hashbang comment (f139dce)
  • fix range on HTMLClose comment on first line (c445b90)
  • fix wrong loc in template expressions (aa0e992), closes #123
  • properly support loc on HTMLClose comment (f72dd4f)

Features

  • support loc flag for onComment and onToken (287b77c), closes #95

Performance Improvements

  • lexer: improved lexer perf (bc5e647)

3.0.5 (2020-10-25)

Bug Fixes

  • move optional-chaining out of next (7504c64), closes #117

3.0.4 (2020-10-25)

Bug Fixes

  • follow latest decorator proposal (e27b9d6), closes #105
  • ForInOfLoopInitializer only applies in strict mode (5f6f0d8), closes #116
  • support decorator before and after "export" keyword (f3898ff)

3.0.3 (2020-10-16)

Bug Fixes

  • add missing optional flag on CallExpression (903c7f5), closes #110
  • auto insert semicolon for do-while statement (faa96bb), closes #102
  • bigint property should exclude the ending 'n' (e7ed3df), closes #111
  • export version directly from package.json (46a7d69), closes #107
  • fix [] and () inside the ChainExpression (fa72f93)
  • fix finally block start, follow other parsers on comment start and end (fe00a67), closes #104
  • fix missing static for computed class property (bd00159), closes #106
  • fix TemplateElement range and loc (2a3632c)
  • fix wrong cooked value in TemplateElement, fix wrong loc and range in various template nodes (ff71744), closes #109 #108

3.0.2 (2020-10-06)

Bug Fixes

  • parser: directive is only for statement consisting entirely of a string literal (8186dc1), closes #99
  • parser: follow latest estree spec on ExportAllDeclaration (7a7fc76), closes #97
  • fix wrong ChainExpression wrapper (a33771c), closes #98

3.0.1 (2020-10-06)

Bug Fixes

  • parser: directive is only for statement consisting entirely of a string literal (8186dc1), closes #99
  • parser: follow latest estree spec on ExportAllDeclaration (7a7fc76), closes #97
  • fix wrong ChainExpression wrapper (a33771c), closes #98

3.0.0 (2020-09-21)

2.1.2 (2020-09-21)

Bug Fixes

  • estree: fix the estree interface for BigIntLiteral, cleanup RegExpLiteral (100c9ad)
  • lexer: store correct bigint token value (964e678), closes #93

BREAKING CHANGES

  • lexer: upgraded ts target from es2018 to es2020, dropped nodejs v6 and v8 support

2.1.1 (2020-07-24)

Bug Fixes

  • lexer: fix missed new line char in jsx parser (f8be7de), closes #90
  • parser: fix endless loop on broken jsx (9ee78ac), closes #91
  • rename CoalesceExpression (2256168)
  • lexer: fix regexp char class \u{hhhh} which requires the u flag (1fdffb6), closes #79
  • parser: fixes #70 (2ded017)
  • scan: token start should skip leading white spaces and comments (64eea11), closes #81

Features

  • all: added Unicode v.13 support (550f86f)
  • parser: add .range: [start, end] to improve compatibility with ESTree tools (f60ae26)
  • parser: support latest ESTree spec on optional chaining (055eb1c)

1.9.6 (2020-01-19)

Bug Fixes

  • all: fixed issue with TS bundle 'const enum'. Values out of order and tokens got wrong values (4ed317c)
  • all: Improved ESTree compat (4192641)
  • all: used logical names to avoid confusions (6f25b7b)
  • chore: improved line and coloumn tracking - #46 (dc2f3be)
  • lexer: dedupe some code (bc86b42)
  • lexer: fixed a optional chaining token bug introduced earlier (79e8fa3)
  • lexer: fixed CRLF issues - #46 (43bc755)
  • lexer: fixed incorrect error messages (1934295)
  • lexer: fixed issue with PS and LS between tokens (3dd08b3)
  • lexer: fixed issue with raw in numeric scanning (db21faf)
  • lexer: fixed JSX issue break bundled build only and in the REPL (32f347f)
  • lexer: fixed JSX issue in lexer. Caused only the bundled build to break on JSX parsing. (0bc45af)
  • lexer: fixed loc tracking for jsx and optimized jsx scanning (708a1a6)
  • lexer: fixed potensial issue with BOM (b380d62)
  • lexer: fixed WS skipping issue (bf27362)
  • lexer: fixed ZWJ issue in identifierPart validation (3708214)
  • lexer: improved identifier scanning (bb65cd7)
  • lexer: improved identifier scanning performance (29c1d3d)
  • lexer: improved identifier scanning performance (15131d4)
  • lexer: improved line counting (c29be84)
  • lexer: improved punctuator scanning (ddef09f)
  • lexer: improved scanner performance (c637ee5)
  • lexer: improved single line comment scanning (9370535)
  • lexer: improved template literal scanning (68175f6)
  • lexer: improved template scanning (a2af86f)
  • lexer: improved unicode escape scanning (61c471b)
  • lexer: minor optimization tweaks (20a118c)
  • lexer: optimized number scanning (0a09e9e)
  • lexer: optimized WS skipping and comment scanning (9f85539)
  • lexer: performance tweaks (01557c8)
  • lexer: performance tweaks (109fdbb)
  • lexer: simplified a few things in the lexer (8415be7)
  • lexer: simplified SMP scanning (58f4a30)
  • lexer: tweaked ident scanning (a205210)
  • lexer: tweaked number scanning (e2d78cc)
  • lexer: tweaked numeric separators implementation (4cfcb28)
  • lexer: use direct lookup and avoid bitmasks for idStart & idContinue (901bfb0)
  • parser: fixed useless context definition, since its value is never read (7eec823)
  • parser: swapped names on bitmasks for destruct and assign (f3eb024)
  • parser: added 'onComment' types (3ce01f3)
  • parser: Adds error loc object to be Acorn compat. fixes #43 . (a474cd7)
  • parser: adjusted loc and ranges for JSX AST nodes (7073fdd)
  • parser: avoid 'push' in module parsing (performance) (e99a8a8)
  • parser: avoid reinterpretation to pattern if not needed (671dc57)
  • parser: avoid setting 'PropertyKind' if a field definition (9498c55)
  • parser: changed name on options to be Acorn compat (43b0029)
  • parser: Context based escape keyword validation (17d4649)
  • parser: dedupe class field parsing (4c61090)
  • parser: dedupe even more logic for perf reasons (6af320c)
  • parser: dedupe some code (21e4449)
  • parser: dedupe some code (ca79f80)
  • parser: dedupe some code (c41a671)
  • parser: dedupe some code (0a53f77)
  • parser: dedupe some code (91e0233)
  • parser: dedupe some code (42f1afa)
  • parser: dedupe some code (16c95b1)
  • parser: dedupe some code (82d9407)
  • parser: dedupe some code (3c1409a)
  • parser: dedupe some code (5265848)
  • parser: dedupe some code (51fcd14)
  • parser: dedupe some code (0858e3b)
  • parser: dedupe some code and improved performance (b972e90)
  • parser: dedupe some logic (de7d970)
  • parser: dedupe some logic for perf reasons (fd7f2d8)
  • parser: Dedupe some logic to reduce branching (a69476c)
  • parser: export Options & ESTree TS types (9e8ff6c)
  • parser: Fix a bunch of edge cases (96126e4)
  • parser: Fix a bunch of edge cases (edfe03c)
  • parser: fixed proto edge cases (91cdefd)
  • parser: Fixed "ecma262 PR 1174" implementation (0bd2a60)
  • parser: fixed #37 (6c28caf)
  • parser: fixed a bunch of edge cases (14160c5)
  • parser: fixed a bunch of edge cases (1a100ba)
  • parser: fixed a bunch of edge cases (fe941bc)
  • parser: fixed a bunch of edge cases (2fd9c4e)
  • parser: Fixed a bunch of edge cases (d7e08fe)
  • parser: Fixed a bunch of edge cases (9854a83)
  • parser: fixed a couple of edge cases (f4de592)
  • parser: fixed a few edge cases (0a425ba)
  • parser: fixed a few edgy cases (43130ac)
  • parser: fixed a few edgy cases for escape keywords (5165c2e)
  • parser: fixed a few non-throwing edge cases (c9e08cd)
  • parser: fixed a few non-throwing edge cases (8977bd8)
  • parser: fixed a slip up (e9f5950)
  • parser: fixed a slip-up (7aab914)
  • parser: fixed an issue where async as ident wasn't assignable (48b67c3)
  • parser: fixed AST output for optional chaining (18d6735)
  • parser: fixed async arrow edge cases (65e6c20)
  • parser: fixed async await edge cases (7ffdea3)
  • parser: fixed bunch of class field edge cases (48077ab)
  • parser: fixed bunch of class field edge cases (75c881a)
  • parser: fixed bunch of edge cases (f18f5b4)
  • parser: fixed class field edge cases (de0d0b5)
  • parser: fixed computed property names - added missing "parseMemberOrUpdateExpression" (01add5d)
  • parser: fixed confusing error message (a6e0e71)
  • parser: fixed const enum values and extended API tests to guard against TS issues (c69ac52)
  • parser: fixed directive prologue edge cases (9092515)
  • parser: fixed duplicate call to 2parseMemberOrUpdateExpression" (501b76c)
  • parser: fixed edge cases (b7cc2f8)
  • parser: fixed edge cases (6397c0f)
  • parser: fixed edge cases and corrected a few tests (c2c56da)
  • parser: fixed edge cases and test coverage (e1da2d2)
  • parser: fixed edgy cases (a4434ef)
  • parser: fixed escape keyword edgy cases (6c48765)
  • parser: fixed escape keywords (de9c43b)
  • parser: fixed eval and arguments validations (1a927be)
  • parser: Fixed for-statement edge case (544a7e7)
  • parser: fixed for-statement ranges (68481ee)
  • parser: fixed import call and added 'ImportExpression' AST node (f735377)
  • parser: fixed import call implementation (cb09a9c)
  • parser: Fixed incorrect capitalized option (917a0f1)
  • parser: fixed incorrect error locations (6d894e5)
  • parser: fixed issue with OctalEscapeSequence discovered by fuzzer (5d62f79)
  • parser: fixed issue with a directive preceding an 'use strict' directive containing an OctalEscapeSequence (84bd498)
  • parser: fixed issue with module code not in strict mode in a few cases (c6d24b6)
  • parser: fixed issue with private field didn't pass the 'kind' state (bd6ec68)
  • parser: Fixed issue with single line comment extraction. Exposed parser obj instead of comment end value (a9a8958)
  • parser: fixed issue with template & sequence expr (627cf3b)
  • parser: fixed JSX non failing cases (e5bc9de)
  • parser: fixed lexical edge case (98c6ee7)
  • parser: fixed lgtm warnings (558ba1f)
  • parser: fixed lgtm warnings (e14cb97)
  • parser: fixed lgtm warnings (0d20e52)
  • parser: fixed LGTM warnings (7746e25)
  • parser: fixed LGTM warnings (d58536e)
  • parser: fixed LGTM warnings (c3efc64)
  • parser: Fixed LGTM warnings (7d36ae3)
  • parser: fixed negative bitmask values (972a6f0)
  • parser: Fixed non-failing cases (2e3ff8d)
  • parser: Fixed object lit edge cases (1c0c2e8)
  • parser: fixed possible conflicts (b72ffe2)
  • parser: fixed possible performance regression (80c75de)
  • parser: fixed template expression edge cases (281ad30)
  • parser: fixed Test262 test suite edge cases (c9545fe)
  • parser: fixed unused func params (12ba7e6)
  • parser: fixed wrong line count in single line comment (c35b6d0)
  • parser: Fixes #25 (c2b96cb)
  • parser: fixes #31 (7576780)
  • parser: fixes #38 (9834975)
  • parser: Fixes #5 (7805610)
  • parser: fixes #58 (bbfc5c2)
  • parser: fixes assignment edge cases (b2cf29f)
  • parser: fixes do while edge cases (024e459)
  • parser: fixes loc tracking for optional chaining (e875e14)
  • parser: fixes yield edge cases (54d5669)
  • parser: implemented optional chaining (cc334f3)
  • parser: Improved a bunch of yield edge cases (e58ea2b)
  • parser: improved comment extraction (1f1daf9)
  • parser: improved error reporting for duplicate bindings (0483d25)
  • parser: improved module code parsing (9ecef95)
  • parser: improved nullish coalescing performance (83cbdd5)
  • parser: improved optional chaing implementation (c8532d9)
  • parser: improved optional chaining implementation (90c139c)
  • parser: improved optional chaining implementation (2766dd9)
  • parser: improved performance - create less lexical scopes (8485cbb)
  • parser: improved performance for edgy cases (c8a3677)
  • parser: improved performance for import default (e814e36)
  • parser: JSX attributes must only be assigned a non-empty 'expression' (712d8e6)
  • parser: make nested async arrow assignable (83c8db0)
  • parser: minor refactoring & performance tweaks (39dc0e7)
  • parser: minor tweaks (6a14bab)
  • parser: minor tweaks (35ead44)
  • parser: minor tweaks (7080dee)
  • parser: moved enums to common.ts for improved readability (09683b4)
  • parser: moved func flags to 'common.ts' (21e771d)
  • parser: now unsets 'SimpleParameterList' masks correctly (f48b486)
  • parser: optimization tweaks (9e983a8)
  • parser: optimization tweaks (49b78e3)
  • parser: optimized class field parsing (2c1bf99)
  • parser: pass 'inClass' as function argument (5129b0a)
  • parser: performance improvements (39f0a80)
  • parser: performance improvements (5bd745a)
  • parser: performance improvements (89c4006), closes #21
  • parser: performance improvements (7f2c32f)
  • parser: performance improvements (62c2d6f)
  • parser: permanently fixed yield edge cases (6166b2b)
  • parser: prevented a possible var name conflict (fc310db)
  • parser: reduced branching and simplified for parenthesized arrow head & async arrow (25a5bff)
  • parser: refactored and simplified location tracking (0899ad3)
  • parser: Refactoring SyntaxError messages (66098ea)
  • parser: removed reduntant empty binding validations (cf98ab5)
  • parser: removed some unused code and simplified a few things (4ffe12d)
  • parser: removed some useless code (597eaf2)
  • parser: removed unnecessary func args (6c44bb7)
  • parser: removed unused code (f423485)
  • parser: removed unused code (db4231b)
  • parser: removed unused code and improved test coverage (7b4b56f)
  • parser: rename 'OptionalChain' AST node to 'OptionalExpression'. (a184f67)
  • parser: renamed deFacto opt to "specDeviation" (d2e7e08)
  • parser: simplified arrow parsing (db388db)
  • parser: simplified assignment expr parsing (ce89217)
  • parser: simplified async arrow parsing (fb046c7), closes #22
  • parser: simplified DestructuringAssignmentTarget validation (6f04c41)
  • parser: simplified DestructuringAssignmentTarget validation (1ce5eb0)
  • parser: simplified some logic (7978118)
  • parser: Skips one validation - Token.IsLogical will not "exist" unless "next" option enabled (6941da7)
  • parser: small corrections to line offset (99406ac)
  • parser: start with empty label set (90d2d78)
  • parser: test import call both for module and script code (66fe1b0)
  • parser: throws on super() used in class field (b659e5b)
  • parser: tweaked and optimized JSX lexer code (a701555)
  • parser: tweaked await and yield parsing (2bfe889)
  • parser: tweaked bit masks (2b623cd)
  • parser: tweaked bit masks (1cb0718)
  • parser: tweaked bit masks and improved performance (a1f41a5)
  • parser: tweaked performance (4b7a9b5)
  • parser: tweaked ranges implementation (e443537)
  • parser: tweaked some code (6acf9ad)
  • parser: tweaked the label tracking (77702c8)
  • parser: update group.ts (cc915cc)
  • parser: Use 'const' instead of 'let' (f1bc71f)
  • parser: WIP: fixed and optimized await edge cases (7f006fc)
  • parser: WIP! await & yield edge cases (13ce4e6)
  • parser: WIP! fixes bunch of yield edge case (46b7cba)
  • scanner: dedupe some scanner code and tweaked bit masks (1e9d1b1)

Features

  • all: added benchmark (8a525b3)
  • all: Emit errors in standard format for compilers (7f83f6a)
  • lexer: added lexer souce code (ade6e8f)
  • lexer: implement numeric literal scanning (8ba7461)
  • parser: enable line/column location information to each node (75c43c7)
  • parser: 'export' '*' 'as' IdentifierName 'from' ModuleSpecifier ';' (01db03c)
  • parser: added 'sourceFile' option (0c62a08)
  • parser: added label tracking (930f825)
  • parser: added new option to allow edge cases that deviate from the spec (30d8c23)
  • parser: added option to enable non-standard parenthesized expression node (82d423d)
  • parser: added parser code (866b546)
  • parser: Distinguish Identifier from IdentifierPattern (68da76b)
  • parser: Implemented Class Public Instance Fields (WIP) (c08d907)
  • parser: implemented dynamic import (stage 3) (64a54a8)
  • parser: implemented import.meta as well (e838c8e)
  • parser: implemented support for v8 Intrinsic (5e41577)
  • parser: implements nullish coalescing (stage 3) (f38480d)
  • parser: implements ranges (73ede30)
  • parser: support latest TC39 specs (82cb1f4)
  • parser: WIP: Enable JSX parsing (9dd80d4)
  • parser: WIP! Implements optional chaining (09425fc)

Reverts