meriyah 6.1.2 → 6.1.4

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,38 +1,27 @@
1
1
  import { Token } from './token';
2
- import { Errors } from './errors';
3
- import type * as ESTree from './estree';
4
2
  import { type Parser } from './parser/parser';
5
3
  export declare const enum Context {
6
4
  None = 0,
7
- OptionsNext = 1,
8
- OptionsRanges = 2,
9
- OptionsLoc = 4,
10
- OptionsJSX = 8,
11
- OptionsLexical = 16,
12
- OptionsPreserveParens = 32,
13
- OptionsWebCompat = 64,
14
- OptionsRaw = 128,
15
- Strict = 256,
16
- Module = 512,
17
- InSwitch = 1024,
18
- InGlobal = 2048,
19
- InClass = 4096,
20
- AllowRegExp = 8192,
21
- TaggedTemplate = 16384,
22
- InIteration = 32768,
23
- SuperProperty = 65536,
24
- SuperCall = 131072,
25
- InYieldContext = 262144,
26
- InAwaitContext = 524288,
27
- InReturnContext = 1048576,
28
- InArgumentList = 2097152,
29
- InConstructor = 4194304,
30
- InMethodOrFunction = 8388608,
31
- AllowNewTarget = 16777216,
32
- DisallowIn = 33554432,
33
- AllowEscapedKeyword = 67108864,
34
- OptionsUniqueKeyInPattern = 134217728,
35
- InStaticBlock = 268435456
5
+ Strict = 1,
6
+ Module = 2,
7
+ InSwitch = 4,
8
+ InGlobal = 8,
9
+ InClass = 16,
10
+ AllowRegExp = 32,
11
+ TaggedTemplate = 64,
12
+ InIteration = 128,
13
+ SuperProperty = 256,
14
+ SuperCall = 512,
15
+ InYieldContext = 1024,
16
+ InAwaitContext = 2048,
17
+ InReturnContext = 4096,
18
+ InArgumentList = 8192,
19
+ InConstructor = 16384,
20
+ InMethodOrFunction = 32768,
21
+ AllowNewTarget = 65536,
22
+ DisallowIn = 131072,
23
+ AllowEscapedKeyword = 262144,
24
+ InStaticBlock = 524288
36
25
  }
37
26
  export declare const enum PropertyKind {
38
27
  None = 0,
@@ -119,74 +108,23 @@ export declare const enum HoistedFunctionFlags {
119
108
  Hoisted = 1,
120
109
  Export = 2
121
110
  }
122
- export declare const enum ScopeKind {
123
- None = 0,
124
- ForStatement = 1,
125
- Block = 2,
126
- CatchStatement = 4,
127
- SwitchStatement = 8,
128
- ArgList = 16,
129
- TryStatement = 32,
130
- CatchBlock = 64,
131
- FunctionBody = 128,
132
- FunctionRoot = 256,
133
- FunctionParams = 512,
134
- ArrowParams = 1024,
135
- CatchIdentifier = 2048
136
- }
137
- export type OnComment = (type: ESTree.CommentType, value: string, start: number, end: number, loc: ESTree.SourceLocation) => any;
138
- export type OnInsertedSemicolon = (pos: number) => any;
139
- export type OnToken = (token: string, start: number, end: number, loc: ESTree.SourceLocation) => any;
140
- export interface ScopeState {
141
- parent: ScopeState | undefined;
142
- type: ScopeKind;
143
- scopeError?: ScopeError | null;
144
- }
145
- export interface PrivateScopeState {
146
- parent: PrivateScopeState | undefined;
147
- refs: {
148
- [name: string]: {
149
- index: number;
150
- line: number;
151
- column: number;
152
- }[];
153
- };
154
- }
155
- export interface ScopeError {
156
- type: Errors;
157
- params: string[];
158
- start: Location;
159
- end: Location;
160
- }
161
111
  export declare function matchOrInsertSemicolon(parser: Parser, context: Context): void;
162
112
  export declare function isValidStrictMode(parser: Parser, index: number, tokenIndex: number, tokenValue: string): 0 | 1;
163
113
  export declare function optionalBit(parser: Parser, context: Context, t: Token): 0 | 1;
164
114
  export declare function consumeOpt(parser: Parser, context: Context, t: Token): boolean;
165
115
  export declare function consume(parser: Parser, context: Context, t: Token): void;
166
- export declare function reinterpretToPattern(state: Parser, node: any): void;
116
+ export declare function reinterpretToPattern(parser: Parser, node: any): void;
167
117
  export declare function validateBindingIdentifier(parser: Parser, context: Context, kind: BindingKind, t: Token, skipEvalArgCheck: 0 | 1): void;
168
118
  export declare function validateFunctionName(parser: Parser, context: Context, t: Token): void;
169
119
  export declare function isStrictReservedWord(parser: Parser, context: Context, t: Token): boolean;
170
120
  export declare function isPropertyWithPrivateFieldKey(expr: any): boolean;
171
121
  export declare function isValidLabel(parser: Parser, labels: any, name: string, isIterationStatement: 0 | 1): 0 | 1;
172
122
  export declare function validateAndDeclareLabel(parser: Parser, labels: any, name: string): void;
173
- export declare function createArrowHeadParsingScope(parser: Parser, context: Context, value: string): ScopeState;
174
- export declare function recordScopeError(parser: Parser, type: Errors, ...params: string[]): ScopeError;
175
- export declare function createScope(): ScopeState;
176
- export declare function addChildScope(parent: ScopeState | undefined, type: ScopeKind): ScopeState;
177
- export declare function addChildPrivateScope(parent: PrivateScopeState | undefined): PrivateScopeState;
178
- export declare function addVarOrBlock(parser: Parser, context: Context, scope: ScopeState, name: string, kind: BindingKind, origin: Origin): void;
179
- export declare function addBlockName(parser: Parser, context: Context, scope: any, name: string, kind: BindingKind, origin: Origin): void;
180
- export declare function addVarName(parser: Parser, context: Context, scope: ScopeState, name: string, kind: BindingKind): void;
181
- export declare function addPrivateIdentifier(parser: Parser, scope: PrivateScopeState, name: string, kind: PropertyKind): void;
182
- export declare function addPrivateIdentifierRef(parser: Parser, scope: PrivateScopeState, name: string): void;
183
- export declare function validatePrivateIdentifierRefs(scope: PrivateScopeState): void;
184
- export declare function declareUnboundVariable(parser: Parser, name: string): void;
185
- export declare function addBindingToExports(parser: Parser, name: string): void;
186
123
  export declare function isValidIdentifier(context: Context, t: Token): boolean;
187
124
  export declare function classifyIdentifier(parser: Parser, context: Context, t: Token): any;
188
125
  export type Location = {
189
- index: number;
190
- line: number;
191
- column: number;
126
+ readonly index: number;
127
+ readonly line: number;
128
+ readonly column: number;
192
129
  };
130
+ export declare function getOwnProperty<T>(object: Record<string | number, T>, key: string | number): T | undefined;
@@ -1,6 +1,5 @@
1
1
  import { type _Node, type SourceLocation } from './estree';
2
- import { type ScopeError, type Location } from './common';
3
- import { type Parser } from './parser/parser';
2
+ import { type Location } from './common';
4
3
  export declare const enum Errors {
5
4
  Unexpected = 0,
6
5
  StrictOctalEscape = 1,
@@ -181,9 +180,6 @@ export declare const enum Errors {
181
180
  InvalidAwaitAsIdentifier = 176,
182
181
  InvalidAwaitInStaticBlock = 177
183
182
  }
184
- export declare const errorMessages: {
185
- [key: string]: string;
186
- };
187
183
  export declare class ParseError extends SyntaxError implements _Node {
188
184
  start: number;
189
185
  end: number;
@@ -192,7 +188,3 @@ export declare class ParseError extends SyntaxError implements _Node {
192
188
  description: string;
193
189
  constructor(start: Location, end: Location, type: Errors, ...params: string[]);
194
190
  }
195
- export declare function report(parser: Parser, type: Errors, ...params: string[]): never;
196
- export declare function reportScopeError(scope: ScopeError): never;
197
- export declare function reportMessageAt(start: Location, end: Location, type: Errors, ...params: string[]): never;
198
- export declare function reportScannerError(start: Location, end: Location, type: Errors): never;
@@ -21,7 +21,7 @@ export interface Comment extends _Node {
21
21
  type: CommentType;
22
22
  value: string;
23
23
  }
24
- export type Node = ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | BinaryExpression | BlockStatement | BreakStatement | CallExpression | ChainExpression | ImportExpression | CatchClause | ClassBody | ClassDeclaration | ClassExpression | ConditionalExpression | ContinueStatement | DebuggerStatement | Decorator | DoWhileStatement | EmptyStatement | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ExpressionStatement | PropertyDefinition | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | Import | ImportDeclaration | ImportDefaultSpecifier | ImportAttribute | ImportNamespaceSpecifier | ImportSpecifier | JSXNamespacedName | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXMemberExpression | JSXText | LabeledStatement | Literal | LogicalExpression | MemberExpression | MetaProperty | MethodDefinition | NewExpression | ObjectExpression | ObjectPattern | ParenthesizedExpression | PrivateIdentifier | Program | Property | RegExpLiteral | RestElement | ReturnStatement | SequenceExpression | SpreadElement | StaticBlock | Super | SwitchCase | SwitchStatement | TaggedTemplateExpression | TemplateElement | TemplateLiteral | ThisExpression | ThrowStatement | TryStatement | UpdateExpression | UnaryExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
24
+ export type Node = AccessorProperty | ArrayExpression | ArrayPattern | ArrowFunctionExpression | AssignmentExpression | AssignmentPattern | AwaitExpression | BigIntLiteral | BinaryExpression | BlockStatement | BreakStatement | CallExpression | ChainExpression | ImportExpression | CatchClause | ClassBody | ClassDeclaration | ClassExpression | ConditionalExpression | ContinueStatement | DebuggerStatement | Decorator | DoWhileStatement | EmptyStatement | ExportAllDeclaration | ExportDefaultDeclaration | ExportNamedDeclaration | ExportSpecifier | ExpressionStatement | PropertyDefinition | ForInStatement | ForOfStatement | ForStatement | FunctionDeclaration | FunctionExpression | Identifier | IfStatement | ImportDeclaration | ImportDefaultSpecifier | ImportAttribute | ImportNamespaceSpecifier | ImportSpecifier | JSXNamespacedName | JSXAttribute | JSXClosingElement | JSXClosingFragment | JSXElement | JSXEmptyExpression | JSXExpressionContainer | JSXFragment | JSXIdentifier | JSXOpeningElement | JSXOpeningFragment | JSXSpreadAttribute | JSXSpreadChild | JSXMemberExpression | JSXText | LabeledStatement | Literal | LogicalExpression | MemberExpression | MetaProperty | MethodDefinition | NewExpression | ObjectExpression | ObjectPattern | ParenthesizedExpression | PrivateIdentifier | Program | Property | RegExpLiteral | RestElement | ReturnStatement | SequenceExpression | SpreadElement | StaticBlock | Super | SwitchCase | SwitchStatement | TaggedTemplateExpression | TemplateElement | TemplateLiteral | ThisExpression | ThrowStatement | TryStatement | UpdateExpression | UnaryExpression | VariableDeclaration | VariableDeclarator | WhileStatement | WithStatement | YieldExpression;
25
25
  export type BindingPattern = ArrayPattern | ObjectPattern | Identifier;
26
26
  export type ClassElement = FunctionExpression | MethodDefinition;
27
27
  export type DeclarationStatement = ClassDeclaration | ClassExpression | ExportDefaultDeclaration | ExportAllDeclaration | ExportNamedDeclaration | FunctionDeclaration;
@@ -39,8 +39,8 @@ export type LeftHandSideExpression = CallExpression | ChainExpression | ImportEx
39
39
  export type LiteralExpression = Literal | TemplateLiteral;
40
40
  export type ObjectLiteralElementLike = MethodDefinition | Property | RestElement | SpreadElement;
41
41
  export type Parameter = AssignmentPattern | RestElement | ArrayPattern | ObjectPattern | Identifier;
42
- export type PrimaryExpression = ArrayExpression | ArrayPattern | ClassExpression | FunctionExpression | Identifier | Import | JSXElement | JSXFragment | JSXOpeningElement | Literal | LiteralExpression | MetaProperty | ObjectExpression | ObjectPattern | Super | TemplateLiteral | ThisExpression;
43
- export type PrimaryExpressionExtended = ArrayExpression | ArrowFunctionExpression | ArrayPattern | AwaitExpression | Expression | ClassExpression | FunctionExpression | Identifier | Import | JSXElement | JSXFragment | JSXOpeningElement | Literal | LiteralExpression | MetaProperty | ObjectExpression | ObjectPattern | PrivateIdentifier | NewExpression | Super | TemplateLiteral | ThisExpression | UnaryExpression | UpdateExpression;
42
+ export type PrimaryExpression = ArrayExpression | ArrayPattern | ClassExpression | FunctionExpression | Identifier | JSXElement | JSXFragment | JSXOpeningElement | Literal | LiteralExpression | MetaProperty | ObjectExpression | ObjectPattern | Super | TemplateLiteral | ThisExpression;
43
+ export type PrimaryExpressionExtended = ArrayExpression | ArrowFunctionExpression | ArrayPattern | AwaitExpression | Expression | ClassExpression | FunctionExpression | Identifier | JSXElement | JSXFragment | JSXOpeningElement | Literal | LiteralExpression | MetaProperty | ObjectExpression | ObjectPattern | PrivateIdentifier | NewExpression | Super | TemplateLiteral | ThisExpression | UnaryExpression | UpdateExpression;
44
44
  export type PropertyName = Identifier | Literal;
45
45
  export type Statement = BlockStatement | BreakStatement | ContinueStatement | DebuggerStatement | DeclarationStatement | EmptyStatement | ExpressionStatement | IfStatement | IterationStatement | ImportDeclaration | LabeledStatement | ReturnStatement | SwitchStatement | ThrowStatement | TryStatement | VariableDeclaration | WithStatement;
46
46
  interface ClassDeclarationBase extends _Node {
@@ -247,9 +247,6 @@ export interface IfStatement extends _Node {
247
247
  consequent: Statement;
248
248
  alternate: Statement | null;
249
249
  }
250
- export interface Import extends _Node {
251
- type: 'Import';
252
- }
253
250
  export interface ImportDeclaration extends _Node {
254
251
  type: 'ImportDeclaration';
255
252
  source: Literal;
@@ -18,7 +18,6 @@ export declare const enum CharFlags {
18
18
  Hyphen = 32768
19
19
  }
20
20
  export declare const CharTypes: number[];
21
- export declare const isIdStart: number[];
22
21
  export declare const isIdPart: number[];
23
22
  export declare function isIdentifierStart(code: number): boolean;
24
23
  export declare function isIdentifierPart(code: number): boolean;
@@ -1,7 +1,6 @@
1
1
  import { LexerState } from './common';
2
- import { Context } from '../common';
2
+ import { Context, type Location } from '../common';
3
3
  import { type Parser } from '../parser/parser';
4
- import type * as ESTree from '../estree';
5
4
  export declare const enum CommentType {
6
5
  Single = 0,
7
6
  Multi = 1,
@@ -9,8 +8,7 @@ export declare const enum CommentType {
9
8
  HTMLClose = 3,
10
9
  HashBang = 4
11
10
  }
12
- export declare const CommentTypes: ESTree.CommentType[];
13
11
  export declare function skipHashBang(parser: Parser): void;
14
- export declare function skipSingleHTMLComment(parser: Parser, source: string, state: LexerState, context: Context, type: CommentType, start: number, line: number, column: number): LexerState;
15
- export declare function skipSingleLineComment(parser: Parser, source: string, state: LexerState, type: CommentType, start: number, line: number, column: number): LexerState;
12
+ export declare function skipSingleHTMLComment(parser: Parser, source: string, state: LexerState, context: Context, type: CommentType, start: Location): LexerState;
13
+ export declare function skipSingleLineComment(parser: Parser, source: string, state: LexerState, type: CommentType, start: Location): LexerState;
16
14
  export declare function skipMultiLineComment(parser: Parser, source: string, state: LexerState): LexerState | void;
@@ -1,9 +1,7 @@
1
+ import { Token } from './../token';
1
2
  import { Context } from '../common';
2
3
  import { type Parser } from '../parser/parser';
3
- import { Token } from '../token';
4
4
  export declare function scanIdentifier(parser: Parser, context: Context, isValidAsKeyword: 0 | 1): Token;
5
5
  export declare function scanUnicodeIdentifier(parser: Parser, context: Context): Token;
6
6
  export declare function scanIdentifierSlowCase(parser: Parser, context: Context, hasEscape: 0 | 1, isValidAsKeyword: number): Token;
7
7
  export declare function scanPrivateIdentifier(parser: Parser): Token;
8
- export declare function scanIdentifierUnicodeEscape(parser: Parser): number;
9
- export declare function scanUnicodeEscape(parser: Parser): number;
@@ -1,9 +1,3 @@
1
- export { scanSingleToken, nextToken, TokenLookup } from './scan';
2
- export { skipMultiLineComment, skipSingleLineComment, skipHashBang, skipSingleHTMLComment, CommentType, } from './comments';
3
- export { advanceChar, consumePossibleSurrogatePair, isExoticECMAScriptWhitespace, toHex, consumeLineFeed, scanNewLine, LexerState, NumberKind, convertTokenType, } from './common';
4
- export { CharTypes, CharFlags, isIdentifierStart, isIdentifierPart } from './charClassifier';
5
- export { scanIdentifier, scanIdentifierSlowCase, scanUnicodeIdentifier, scanPrivateIdentifier, scanUnicodeEscape, } from './identifier';
6
- export { scanString } from './string';
7
- export { scanNumber } from './numeric';
8
- export { scanTemplate, scanTemplateTail } from './template';
9
- export { scanRegularExpression } from './regexp';
1
+ export { scanSingleToken, nextToken } from './scan';
2
+ export { skipHashBang } from './comments';
3
+ export { advanceChar, consumeLineFeed, scanNewLine, LexerState, convertTokenType } from './common';
@@ -1,7 +1,6 @@
1
1
  import { Token } from '../token';
2
- import { Context } from '../common';
2
+ import { type Context } from '../common';
3
3
  import { type Parser } from '../parser/parser';
4
4
  export declare function scanJSXAttributeValue(parser: Parser, context: Context): Token;
5
- export declare function scanJSXString(parser: Parser, context: Context): Token;
6
- export declare function nextJSXToken(parser: Parser, context: Context): void;
5
+ export declare function nextJSXToken(parser: Parser): void;
7
6
  export declare function rescanJSXIdentifier(parser: Parser): Token;
@@ -3,4 +3,3 @@ import { type Parser } from '../parser/parser';
3
3
  import { Token } from '../token';
4
4
  import { NumberKind } from './common';
5
5
  export declare function scanNumber(parser: Parser, context: Context, kind: NumberKind): Token;
6
- export declare function scanDecimalDigitsOrSeparator(parser: Parser, char: number): string;
@@ -1,4 +1,3 @@
1
- import { Context } from '../common';
2
1
  import { type Parser } from '../parser/parser';
3
2
  import { Token } from '../token';
4
- export declare function scanRegularExpression(parser: Parser, context: Context): Token;
3
+ export declare function scanRegularExpression(parser: Parser): Token;
@@ -2,6 +2,5 @@ import { Token } from '../token';
2
2
  import { Context } from '../common';
3
3
  import { type Parser } from '../parser/parser';
4
4
  import { LexerState } from './common';
5
- export declare const TokenLookup: Token[];
6
5
  export declare function nextToken(parser: Parser, context: Context): void;
7
6
  export declare function scanSingleToken(parser: Parser, context: Context, state: LexerState): Token;
@@ -10,4 +10,4 @@ export declare const enum Escape {
10
10
  }
11
11
  export declare function scanString(parser: Parser, context: Context, quote: number): Token;
12
12
  export declare function parseEscape(parser: Parser, context: Context, first: number, isTemplate?: 0 | 1): number;
13
- export declare function handleStringError(state: Parser, code: Escape, isTemplate: 0 | 1): void;
13
+ export declare function handleStringError(parser: Parser, code: Escape, isTemplate: 0 | 1): void;
@@ -1,8 +1,8 @@
1
- import { Options } from './parser';
2
1
  import { type Program } from './estree';
2
+ import { type Options } from './options';
3
3
  declare const version: string;
4
4
  export declare function parseScript(source: string, options?: Options): Program;
5
5
  export declare function parseModule(source: string, options?: Options): Program;
6
6
  export declare function parse(source: string, options?: Options): Program;
7
- export { Options, version };
7
+ export { type Options, version };
8
8
  export type * as ESTree from './estree';
@@ -0,0 +1,29 @@
1
+ import type * as ESTree from './estree';
2
+ import { type Token } from './token';
3
+ type OnInsertedSemicolon = (pos: number) => any;
4
+ export type OnToken = (token: string, start: number, end: number, loc: ESTree.SourceLocation) => any;
5
+ export type OnComment = (type: ESTree.CommentType, value: string, start: number, end: number, loc: ESTree.SourceLocation) => any;
6
+ export interface Options {
7
+ module?: boolean;
8
+ next?: boolean;
9
+ ranges?: boolean;
10
+ webcompat?: boolean;
11
+ loc?: boolean;
12
+ raw?: boolean;
13
+ globalReturn?: boolean;
14
+ impliedStrict?: boolean;
15
+ preserveParens?: boolean;
16
+ lexical?: boolean;
17
+ source?: string;
18
+ jsx?: boolean;
19
+ onComment?: ESTree.Comment[] | OnComment;
20
+ onInsertedSemicolon?: OnInsertedSemicolon;
21
+ onToken?: Token[] | OnToken;
22
+ uniqueKeyInPattern?: boolean;
23
+ }
24
+ export type NormalizedOptions = Omit<Options, 'onComment' | 'onToken'> & {
25
+ onComment?: OnComment;
26
+ onToken?: OnToken;
27
+ };
28
+ export declare function normalizeOptions(rawOptions: Options): NormalizedOptions;
29
+ export {};
@@ -1,17 +1,13 @@
1
1
  import { Token } from '../token';
2
2
  import type * as ESTree from '../estree';
3
- import { type Location, Flags, type OnComment, type OnInsertedSemicolon, type OnToken, type AssignmentKind, type DestructuringKind } from '../common';
4
- export type ParserOptions = {
5
- shouldAddLoc?: boolean;
6
- shouldAddRanges?: boolean;
7
- sourceFile?: string;
8
- onComment?: OnComment;
9
- onInsertedSemicolon?: OnInsertedSemicolon;
10
- onToken?: OnToken;
11
- };
3
+ import { type Location, Flags, type AssignmentKind, type DestructuringKind } from '../common';
4
+ import { Errors } from '../errors';
5
+ import { type NormalizedOptions, type OnComment, type OnToken } from '../options';
6
+ import { Scope, type ScopeKind } from './scope';
7
+ import { PrivateScope } from './private-scope';
12
8
  export declare class Parser {
13
9
  readonly source: string;
14
- readonly options: ParserOptions;
10
+ readonly options: NormalizedOptions;
15
11
  private lastOnToken;
16
12
  token: Token;
17
13
  flags: Flags;
@@ -32,20 +28,26 @@ export declare class Parser {
32
28
  flags: string;
33
29
  };
34
30
  currentChar: number;
35
- exportedNames: Record<string, number>;
36
- exportedBindings: Record<string, number>;
31
+ exportedNames: Set<string>;
32
+ exportedBindings: Set<string>;
37
33
  assignable: AssignmentKind | DestructuringKind;
38
34
  destructible: AssignmentKind | DestructuringKind;
39
35
  leadingDecorators: {
40
36
  start?: Location;
41
37
  decorators: ESTree.Decorator[];
42
38
  };
43
- constructor(source: string, options?: ParserOptions);
39
+ constructor(source: string, options?: NormalizedOptions);
44
40
  getToken(): Token;
45
41
  setToken(value: Token, replaceLast?: boolean): Token;
46
42
  get tokenStart(): Location;
47
43
  get currentLocation(): Location;
48
44
  finishNode<T extends ESTree.Node>(node: T, start: Location, end: Location | void): T;
45
+ addBindingToExports(name: string): void;
46
+ declareUnboundVariable(name: string): void;
47
+ report(type: Errors, ...params: string[]): never;
48
+ createScopeIfLexical(type?: ScopeKind, parent?: Scope): Scope | undefined;
49
+ createScope(type?: ScopeKind, parent?: Scope): Scope;
50
+ createPrivateScopeIfLexical(parent?: PrivateScope): PrivateScope | undefined;
49
51
  }
50
- export declare function pushComment(comments: ESTree.Comment[], options: ParserOptions): OnComment;
51
- export declare function pushToken(tokens: any[], options: ParserOptions): OnToken;
52
+ export declare function pushComment(comments: ESTree.Comment[], options: NormalizedOptions): OnComment;
53
+ export declare function pushToken(tokens: Token[], options: NormalizedOptions): OnToken;
@@ -0,0 +1,16 @@
1
+ import { PropertyKind, type Location } from '../common';
2
+ import { type Parser } from './parser';
3
+ export declare class PrivateScope {
4
+ readonly parser: Parser;
5
+ readonly parent?: PrivateScope | undefined;
6
+ refs: {
7
+ [name: string]: Location[];
8
+ };
9
+ privateIdentifiers: Map<string, PropertyKind>;
10
+ constructor(parser: Parser, parent?: PrivateScope | undefined);
11
+ addPrivateIdentifier(name: string, kind: PropertyKind): void;
12
+ addPrivateIdentifierRef(name: string): void;
13
+ isPrivateIdentifierDefined(name: string): boolean;
14
+ validatePrivateIdentifierRefs(): void;
15
+ hasPrivateIdentifier(name: string): boolean;
16
+ }
@@ -0,0 +1,38 @@
1
+ import { Errors } from '../errors';
2
+ import { type Location, Context, BindingKind, Origin } from '../common';
3
+ import { type Parser } from './parser';
4
+ export declare const enum ScopeKind {
5
+ ForStatement = 1,
6
+ Block = 2,
7
+ CatchStatement = 4,
8
+ SwitchStatement = 8,
9
+ TryStatement = 16,
10
+ CatchBlock = 32,
11
+ FunctionBody = 64,
12
+ FunctionRoot = 128,
13
+ FunctionParams = 256,
14
+ ArrowParams = 512
15
+ }
16
+ interface ScopeError {
17
+ type: Errors;
18
+ params: string[];
19
+ start: Location;
20
+ end: Location;
21
+ }
22
+ export declare class Scope {
23
+ readonly parser: Parser;
24
+ readonly type: ScopeKind;
25
+ readonly parent?: Scope | undefined;
26
+ scopeError?: ScopeError;
27
+ variableBindings: Map<string, BindingKind>;
28
+ constructor(parser: Parser, type?: ScopeKind, parent?: Scope | undefined);
29
+ createChildScope(type?: ScopeKind): Scope;
30
+ addVarOrBlock(context: Context, name: string, kind: BindingKind, origin: Origin): void;
31
+ addVarName(context: Context, name: string, kind: BindingKind): void;
32
+ hasVariable(name: string): boolean;
33
+ addBlockName(context: Context, name: string, kind: BindingKind, origin: Origin): void;
34
+ recordScopeError(type: Errors, ...params: string[]): void;
35
+ reportScopeError(): void;
36
+ }
37
+ export declare function createArrowHeadParsingScope(parser: Parser, context: Context, value: string): Scope;
38
+ export {};
@@ -1,119 +1,9 @@
1
1
  import { Token } from './token';
2
2
  import type * as ESTree from './estree';
3
- import { Context, PropertyKind, Origin, Flags, type OnComment, type OnInsertedSemicolon, type OnToken, BindingKind, HoistedClassFlags, HoistedFunctionFlags, type ScopeState, type PrivateScopeState, type Location } from './common';
3
+ import { Context, type Location } from './common';
4
4
  import { Parser } from './parser/parser';
5
- export interface Options {
6
- module?: boolean;
7
- next?: boolean;
8
- ranges?: boolean;
9
- webcompat?: boolean;
10
- loc?: boolean;
11
- raw?: boolean;
12
- globalReturn?: boolean;
13
- impliedStrict?: boolean;
14
- preserveParens?: boolean;
15
- lexical?: boolean;
16
- source?: string;
17
- jsx?: boolean;
18
- onComment?: ESTree.Comment[] | OnComment;
19
- onInsertedSemicolon?: OnInsertedSemicolon;
20
- onToken?: Token[] | OnToken;
21
- uniqueKeyInPattern?: boolean;
22
- }
23
- export declare function parseSource(source: string, options: Options | void, context: Context): ESTree.Program;
24
- export declare function parseStatementList(parser: Parser, context: Context, scope: ScopeState | undefined): ESTree.Statement[];
25
- export declare function parseModuleItemList(parser: Parser, context: Context, scope: ScopeState | undefined): ReturnType<typeof parseDirective | typeof parseModuleItem>[];
26
- export declare function parseModuleItem(parser: Parser, context: Context, scope: ScopeState | undefined): any;
27
- export declare function parseStatementListItem(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, labels: ESTree.Labels): ESTree.Statement | ESTree.Decorator[];
28
- export declare function parseStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, labels: ESTree.Labels, allowFuncDecl: 0 | 1): ESTree.Statement;
29
- export declare function parseExpressionOrLabelledStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, labels: ESTree.Labels, allowFuncDecl: 0 | 1): ESTree.ExpressionStatement | ESTree.LabeledStatement;
30
- export declare function parseBlock<T extends ESTree.BlockStatement | ESTree.StaticBlock = ESTree.BlockStatement>(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels, start: Location, type?: T['type']): T;
31
- export declare function parseReturnStatement(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): ESTree.ReturnStatement;
32
- export declare function parseExpressionStatement(parser: Parser, context: Context, expression: ESTree.Expression, start: Location): ESTree.ExpressionStatement;
33
- export declare function parseLabelledStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, labels: ESTree.Labels, value: string, expr: ESTree.Identifier | ESTree.Expression, token: Token, allowFuncDecl: 0 | 1, start: Location): ESTree.LabeledStatement;
34
- export declare function parseAsyncArrowOrAsyncFunctionDeclaration(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, labels: ESTree.Labels, allowFuncDecl: 0 | 1): ESTree.ExpressionStatement | ESTree.LabeledStatement | ESTree.FunctionDeclaration;
5
+ import { type Options } from './options';
6
+ import { type Scope } from './parser/scope';
7
+ export declare function parseSource(source: string, rawOptions?: Options, context?: Context): ESTree.Program;
8
+ export declare function parseModuleItem(parser: Parser, context: Context, scope: Scope | undefined): any;
35
9
  export declare function parseDirective(parser: Parser, context: Context, expression: ESTree.ArgumentExpression | ESTree.SequenceExpression | ESTree.Expression, token: Token, start: Location): ESTree.ExpressionStatement;
36
- export declare function parseEmptyStatement(parser: Parser, context: Context): ESTree.EmptyStatement;
37
- export declare function parseThrowStatement(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): ESTree.ThrowStatement;
38
- export declare function parseIfStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.IfStatement;
39
- export declare function parseConsequentOrAlternative(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.Statement | ESTree.FunctionDeclaration;
40
- export declare function parseSwitchStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.SwitchStatement;
41
- export declare function parseWhileStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.WhileStatement;
42
- export declare function parseIterationStatementBody(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.Statement;
43
- export declare function parseContinueStatement(parser: Parser, context: Context, labels: ESTree.Labels): ESTree.ContinueStatement;
44
- export declare function parseBreakStatement(parser: Parser, context: Context, labels: ESTree.Labels): ESTree.BreakStatement;
45
- export declare function parseWithStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.WithStatement;
46
- export declare function parseDebuggerStatement(parser: Parser, context: Context): ESTree.DebuggerStatement;
47
- export declare function parseTryStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.TryStatement;
48
- export declare function parseCatchBlock(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels, start: Location): ESTree.CatchClause;
49
- export declare function parseStaticBlock(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, start: Location): ESTree.StaticBlock;
50
- export declare function parseDoWhileStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.DoWhileStatement;
51
- export declare function parseLetIdentOrVarDeclarationStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin): ESTree.VariableDeclaration | ESTree.LabeledStatement | ESTree.ExpressionStatement;
52
- export declare function parseVariableStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin): ESTree.VariableDeclaration;
53
- export declare function parseVariableDeclarationList(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, kind: BindingKind, origin: Origin): ESTree.VariableDeclarator[];
54
- export declare function parseForStatement(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, labels: ESTree.Labels): ESTree.ForStatement | ESTree.ForInStatement | ESTree.ForOfStatement;
55
- export declare function parseRestrictedIdentifier(parser: Parser, context: Context, scope: ScopeState | undefined): ESTree.Identifier;
56
- export declare function parseImportMetaDeclaration(parser: Parser, context: Context, start: Location): ESTree.ExpressionStatement;
57
- export declare function parseExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, canAssign: 0 | 1, inGroup: 0 | 1, start: Location): ESTree.Expression;
58
- export declare function parseSequenceExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, start: Location, expr: ESTree.AssignmentExpression | ESTree.Expression): ESTree.SequenceExpression;
59
- export declare function parseExpressions(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, canAssign: 0 | 1, start: Location): ESTree.SequenceExpression | ESTree.Expression;
60
- export declare function parseAssignmentExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, isPattern: 0 | 1, start: Location, left: ESTree.ArgumentExpression | ESTree.Expression | null): ESTree.ArgumentExpression | ESTree.Expression;
61
- export declare function parseAssignmentExpressionOrPattern(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, isPattern: 0 | 1, start: Location, left: any): any;
62
- export declare function parseConditionalExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, test: ESTree.Expression, start: Location): ESTree.ConditionalExpression;
63
- export declare function parseBinaryExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, start: Location, minPrecedence: number, operator: Token, left: ESTree.ArgumentExpression | ESTree.Expression): ESTree.ArgumentExpression | ESTree.Expression;
64
- export declare function parseUnaryExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, isLHS: 0 | 1, inGroup: 0 | 1): ESTree.UnaryExpression;
65
- export declare function parseAsyncExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, isLHS: 0 | 1, canAssign: 0 | 1, inNew: 0 | 1, start: Location): ESTree.FunctionExpression | ESTree.ArrowFunctionExpression | ESTree.CallExpression | ESTree.Identifier;
66
- export declare function parseYieldExpressionOrIdentifier(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, canAssign: 0 | 1, start: Location): ESTree.YieldExpression | ESTree.Identifier | ESTree.ArrowFunctionExpression;
67
- export declare function parseAwaitExpressionOrIdentifier(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inNew: 0 | 1, inGroup: 0 | 1, start: Location): ESTree.IdentifierOrExpression | ESTree.AwaitExpression;
68
- export declare function parseFunctionBody(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, funcNameToken: Token | undefined, scopeError: any): ESTree.BlockStatement;
69
- export declare function parseSuperExpression(parser: Parser, context: Context): ESTree.Super;
70
- export declare function parseLeftHandSideExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, canAssign: 0 | 1, inGroup: 0 | 1, isLHS: 0 | 1): ESTree.Expression;
71
- export declare function parseMemberOrUpdateExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, expr: ESTree.Expression, inGroup: 0 | 1, inChain: 0 | 1, start: Location): any;
72
- export declare function parseOptionalChain(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, expr: ESTree.Expression, start: Location): ESTree.MemberExpression | ESTree.CallExpression;
73
- export declare function parsePropertyOrPrivatePropertyName(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): any;
74
- export declare function parseUpdateExpressionPrefixed(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inNew: 0 | 1, isLHS: 0 | 1, start: Location): ESTree.UpdateExpression;
75
- export declare function parsePrimaryExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, kind: BindingKind, inNew: 0 | 1, canAssign: 0 | 1, inGroup: 0 | 1, isLHS: 0 | 1, start: Location): any;
76
- export declare function parseImportMetaExpression(parser: Parser, context: Context, meta: ESTree.Identifier, start: Location): ESTree.MetaProperty;
77
- export declare function parseImportExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, start: Location): ESTree.ImportExpression;
78
- export declare function parseImportAttributes(parser: Parser, context: Context, specifiers?: (ESTree.ImportClause | ESTree.ExportSpecifier)[] | null): ESTree.ImportAttribute[];
79
- export declare function parseBigIntLiteral(parser: Parser, context: Context): ESTree.BigIntLiteral;
80
- export declare function parseTemplateLiteral(parser: Parser, context: Context, start: Location): ESTree.TemplateLiteral;
81
- export declare function parseTemplate(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): ESTree.TemplateLiteral;
82
- export declare function parseTemplateElement(parser: Parser, context: Context, cooked: string | null, raw: string, start: Location, tail: boolean): ESTree.TemplateElement;
83
- export declare function parseArguments(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1): (ESTree.SpreadElement | ESTree.Expression)[];
84
- export declare function parseIdentifier(parser: Parser, context: Context): ESTree.Identifier;
85
- export declare function parseLiteral(parser: Parser, context: Context): ESTree.Literal;
86
- export declare function parseNullOrTrueOrFalseLiteral(parser: Parser, context: Context): ESTree.Literal;
87
- export declare function parseThisExpression(parser: Parser, context: Context): ESTree.ThisExpression;
88
- export declare function parseFunctionDeclaration(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, origin: Origin, allowGen: 0 | 1, flags: HoistedFunctionFlags, isAsync: 0 | 1, start: Location): ESTree.FunctionDeclaration;
89
- export declare function parseFunctionExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, isAsync: 0 | 1, inGroup: 0 | 1, start: Location): ESTree.FunctionExpression;
90
- export declare function parseArrayExpressionOrPattern(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, skipInitializer: 0 | 1, inGroup: 0 | 1, isPattern: 0 | 1, kind: BindingKind, origin: Origin): ESTree.ArrayExpression | ESTree.ArrayPattern | ESTree.AssignmentExpression;
91
- export declare function parseMethodDefinition(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, kind: PropertyKind, inGroup: 0 | 1, start: Location): ESTree.FunctionExpression;
92
- export declare function parseObjectLiteralOrPattern(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, skipInitializer: 0 | 1, inGroup: 0 | 1, isPattern: 0 | 1, kind: BindingKind, origin: Origin): ESTree.ObjectExpression | ESTree.ObjectPattern | ESTree.AssignmentExpression;
93
- export declare function parseMethodFormals(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, kind: PropertyKind, type: BindingKind, inGroup: 0 | 1): ESTree.Parameter[];
94
- export declare function parseComputedPropertyName(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1): ESTree.Expression;
95
- export declare function parseParenthesizedExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, canAssign: 0 | 1, kind: BindingKind, origin: Origin, start: Location): any;
96
- export declare function parseIdentifierOrArrow(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): ESTree.Identifier | ESTree.ArrowFunctionExpression;
97
- export declare function parseArrowFunctionExpression(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, params: any, isAsync: 0 | 1, start: Location): ESTree.ArrowFunctionExpression;
98
- export declare function parseFormalParametersOrFormalList(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, kind: BindingKind): ESTree.Parameter[];
99
- export declare function parseMemberExpressionNoCall(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, expr: ESTree.Expression, inGroup: 0 | 1, start: Location): any;
100
- export declare function parseNewExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1): ESTree.NewExpression | ESTree.Expression | ESTree.MetaProperty;
101
- export declare function parseMetaProperty(parser: Parser, context: Context, meta: ESTree.Identifier, start: Location): ESTree.MetaProperty;
102
- export declare function parseAsyncArrowOrCallExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, callee: ESTree.Identifier | void, canAssign: 0 | 1, kind: BindingKind, origin: Origin, flags: Flags, start: Location): ESTree.CallExpression | ESTree.ArrowFunctionExpression;
103
- export declare function parseRegExpLiteral(parser: Parser, context: Context): ESTree.RegExpLiteral;
104
- export declare function parseClassDeclaration(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, flags: HoistedClassFlags): ESTree.ClassDeclaration;
105
- export declare function parseClassExpression(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inGroup: 0 | 1, start: Location): ESTree.ClassExpression;
106
- export declare function parseDecorators(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): ESTree.Decorator[];
107
- export declare function parseDecoratorList(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, start: Location): ESTree.Decorator;
108
- export declare function parseClassBody(parser: Parser, context: Context, inheritedContext: Context, scope: ScopeState | undefined, parentScope: PrivateScopeState | undefined, kind: BindingKind, origin: Origin, inGroup: 0 | 1): ESTree.ClassBody;
109
- export declare function parsePropertyDefinition(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, key: ESTree.PrivateIdentifier | ESTree.Expression | null, state: PropertyKind, decorators: ESTree.Decorator[], start: Location): ESTree.PropertyDefinition | ESTree.AccessorProperty;
110
- export declare function parseBindingPattern(parser: Parser, context: Context, scope: ScopeState | undefined, privateScope: PrivateScopeState | undefined, type: BindingKind, origin: Origin): ESTree.BindingPattern;
111
- export declare function parseJSXOpeningFragment(parser: Parser, context: Context, start: Location): ESTree.JSXOpeningFragment;
112
- export declare function parseJSXClosingFragment(parser: Parser, context: Context, inJSXChild: 0 | 1, start: Location): ESTree.JSXClosingFragment;
113
- export declare function parseJSXChildrenAndClosingElement(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inJSXChild: 0 | 1): [ESTree.JSXChild[], ESTree.JSXClosingElement];
114
- export declare function parseJSXChildrenAndClosingFragment(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined, inJSXChild: 0 | 1): [ESTree.JSXChild[], ESTree.JSXClosingFragment];
115
- export declare function parseJSXText(parser: Parser, context: Context): ESTree.JSXText;
116
- export declare function parseJSXMemberExpression(parser: Parser, context: Context, object: ESTree.JSXIdentifier | ESTree.JSXMemberExpression, start: Location): ESTree.JSXMemberExpression;
117
- export declare function parseJSXAttributes(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): (ESTree.JSXAttribute | ESTree.JSXSpreadAttribute)[];
118
- export declare function parseJSXSpreadAttribute(parser: Parser, context: Context, privateScope: PrivateScopeState | undefined): ESTree.JSXSpreadAttribute;
119
- export declare function parseJSXIdentifier(parser: Parser, context: Context): ESTree.JSXIdentifier;
@@ -1,3 +1,2 @@
1
1
  export declare const isIDContinue: (code: number) => boolean;
2
2
  export declare const isIDStart: (code: number) => boolean;
3
- export declare const mustEscape: (code: number) => boolean;