Files
antrean-anjungan/examples/nuxt3-websocket-client/node_modules/oxc-parser/generated/lazy/constructors.js
T
2025-09-18 19:01:22 +07:00

14176 lines
330 KiB
JavaScript

// Auto-generated code, DO NOT EDIT DIRECTLY!
// To edit this generated file you have to edit `tasks/ast_tools/src/generators/raw_transfer_lazy.rs`.
'use strict';
const { TOKEN, constructorError } = require('../../raw-transfer/lazy-common.js'),
NodeArray = require('../../raw-transfer/node-array.js');
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }),
decodeStr = textDecoder.decode.bind(textDecoder),
{ fromCodePoint } = String,
inspectSymbol = Symbol.for('nodejs.util.inspect.custom');
class Program {
type = 'Program';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get sourceType() {
const internal = this.#internal;
return new SourceType(internal.pos + 124, internal.ast);
}
get hashbang() {
const internal = this.#internal;
return constructOptionHashbang(internal.pos + 48, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecStatement(internal.pos + 96, internal.ast);
}
toJSON() {
return {
type: 'Program',
start: this.start,
end: this.end,
sourceType: this.sourceType,
hashbang: this.hashbang,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugProgram.prototype);
}
}
const DebugProgram = class Program {};
function constructExpression(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Expression`);
}
}
class IdentifierName {
type = 'IdentifierName';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'IdentifierName',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugIdentifierName.prototype);
}
}
const DebugIdentifierName = class IdentifierName {};
class IdentifierReference {
type = 'IdentifierReference';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'IdentifierReference',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugIdentifierReference.prototype);
}
}
const DebugIdentifierReference = class IdentifierReference {};
class BindingIdentifier {
type = 'BindingIdentifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'BindingIdentifier',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBindingIdentifier.prototype);
}
}
const DebugBindingIdentifier = class BindingIdentifier {};
class LabelIdentifier {
type = 'LabelIdentifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'LabelIdentifier',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugLabelIdentifier.prototype);
}
}
const DebugLabelIdentifier = class LabelIdentifier {};
class ThisExpression {
type = 'ThisExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'ThisExpression',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugThisExpression.prototype);
}
}
const DebugThisExpression = class ThisExpression {};
class ArrayExpression {
type = 'ArrayExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $elements: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get elements() {
const internal = this.#internal,
cached = internal.$elements;
if (cached !== void 0) return cached;
return internal.$elements = constructVecArrayExpressionElement(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ArrayExpression',
start: this.start,
end: this.end,
elements: this.elements,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugArrayExpression.prototype);
}
}
const DebugArrayExpression = class ArrayExpression {};
function constructArrayExpressionElement(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
case 64:
return constructBoxSpreadElement(pos + 8, ast);
case 65:
return new Elision(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ArrayExpressionElement`);
}
}
class Elision {
type = 'Elision';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'Elision',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugElision.prototype);
}
}
const DebugElision = class Elision {};
class ObjectExpression {
type = 'ObjectExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $properties: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get properties() {
const internal = this.#internal,
cached = internal.$properties;
if (cached !== void 0) return cached;
return internal.$properties = constructVecObjectPropertyKind(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ObjectExpression',
start: this.start,
end: this.end,
properties: this.properties,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugObjectExpression.prototype);
}
}
const DebugObjectExpression = class ObjectExpression {};
function constructObjectPropertyKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxObjectProperty(pos + 8, ast);
case 1:
return constructBoxSpreadElement(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ObjectPropertyKind`);
}
}
class ObjectProperty {
type = 'ObjectProperty';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructPropertyKind(internal.pos + 40, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 8, internal.ast);
}
get value() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
get method() {
const internal = this.#internal;
return constructBool(internal.pos + 41, internal.ast);
}
get shorthand() {
const internal = this.#internal;
return constructBool(internal.pos + 42, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 43, internal.ast);
}
toJSON() {
return {
type: 'ObjectProperty',
start: this.start,
end: this.end,
kind: this.kind,
key: this.key,
value: this.value,
method: this.method,
shorthand: this.shorthand,
computed: this.computed,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugObjectProperty.prototype);
}
}
const DebugObjectProperty = class ObjectProperty {};
function constructPropertyKey(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
case 64:
return constructBoxIdentifierName(pos + 8, ast);
case 65:
return constructBoxPrivateIdentifier(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for PropertyKey`);
}
}
function constructPropertyKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'init';
case 1:
return 'get';
case 2:
return 'set';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for PropertyKind`);
}
}
class TemplateLiteral {
type = 'TemplateLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $quasis: void 0, $expressions: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get quasis() {
const internal = this.#internal,
cached = internal.$quasis;
if (cached !== void 0) return cached;
return internal.$quasis = constructVecTemplateElement(internal.pos + 8, internal.ast);
}
get expressions() {
const internal = this.#internal,
cached = internal.$expressions;
if (cached !== void 0) return cached;
return internal.$expressions = constructVecExpression(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'TemplateLiteral',
start: this.start,
end: this.end,
quasis: this.quasis,
expressions: this.expressions,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTemplateLiteral.prototype);
}
}
const DebugTemplateLiteral = class TemplateLiteral {};
class TaggedTemplateExpression {
type = 'TaggedTemplateExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get tag() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
get quasi() {
const internal = this.#internal;
return new TemplateLiteral(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'TaggedTemplateExpression',
start: this.start,
end: this.end,
tag: this.tag,
typeArguments: this.typeArguments,
quasi: this.quasi,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTaggedTemplateExpression.prototype);
}
}
const DebugTaggedTemplateExpression = class TaggedTemplateExpression {};
class TemplateElement {
type = 'TemplateElement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal;
return new TemplateElementValue(internal.pos + 8, internal.ast);
}
get tail() {
const internal = this.#internal;
return constructBool(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'TemplateElement',
start: this.start,
end: this.end,
value: this.value,
tail: this.tail,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTemplateElement.prototype);
}
}
const DebugTemplateElement = class TemplateElement {};
class TemplateElementValue {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $raw: void 0, $cooked: void 0 };
nodes.set(pos, this);
}
get raw() {
const internal = this.#internal,
cached = internal.$raw;
if (cached !== void 0) return cached;
return internal.$raw = constructStr(internal.pos, internal.ast);
}
get cooked() {
const internal = this.#internal,
cached = internal.$cooked;
if (cached !== void 0) return cached;
return internal.$cooked = constructOptionStr(internal.pos + 16, internal.ast);
}
toJSON() {
return {
raw: this.raw,
cooked: this.cooked,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTemplateElementValue.prototype);
}
}
const DebugTemplateElementValue = class TemplateElementValue {};
function constructMemberExpression(pos, ast) {
switch (ast.buffer[pos]) {
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for MemberExpression`);
}
}
class ComputedMemberExpression {
type = 'ComputedMemberExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get property() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'ComputedMemberExpression',
start: this.start,
end: this.end,
object: this.object,
property: this.property,
optional: this.optional,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugComputedMemberExpression.prototype);
}
}
const DebugComputedMemberExpression = class ComputedMemberExpression {};
class StaticMemberExpression {
type = 'StaticMemberExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get property() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 24, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 48, internal.ast);
}
toJSON() {
return {
type: 'StaticMemberExpression',
start: this.start,
end: this.end,
object: this.object,
property: this.property,
optional: this.optional,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugStaticMemberExpression.prototype);
}
}
const DebugStaticMemberExpression = class StaticMemberExpression {};
class PrivateFieldExpression {
type = 'PrivateFieldExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get property() {
const internal = this.#internal;
return new PrivateIdentifier(internal.pos + 24, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 48, internal.ast);
}
toJSON() {
return {
type: 'PrivateFieldExpression',
start: this.start,
end: this.end,
object: this.object,
property: this.property,
optional: this.optional,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugPrivateFieldExpression.prototype);
}
}
const DebugPrivateFieldExpression = class PrivateFieldExpression {};
class CallExpression {
type = 'CallExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $arguments: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get callee() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
get arguments() {
const internal = this.#internal,
cached = internal.$arguments;
if (cached !== void 0) return cached;
return internal.$arguments = constructVecArgument(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 56, internal.ast);
}
toJSON() {
return {
type: 'CallExpression',
start: this.start,
end: this.end,
callee: this.callee,
typeArguments: this.typeArguments,
arguments: this.arguments,
optional: this.optional,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugCallExpression.prototype);
}
}
const DebugCallExpression = class CallExpression {};
class NewExpression {
type = 'NewExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $arguments: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get callee() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
get arguments() {
const internal = this.#internal,
cached = internal.$arguments;
if (cached !== void 0) return cached;
return internal.$arguments = constructVecArgument(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'NewExpression',
start: this.start,
end: this.end,
callee: this.callee,
typeArguments: this.typeArguments,
arguments: this.arguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugNewExpression.prototype);
}
}
const DebugNewExpression = class NewExpression {};
class MetaProperty {
type = 'MetaProperty';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get meta() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 8, internal.ast);
}
get property() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'MetaProperty',
start: this.start,
end: this.end,
meta: this.meta,
property: this.property,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugMetaProperty.prototype);
}
}
const DebugMetaProperty = class MetaProperty {};
class SpreadElement {
type = 'SpreadElement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'SpreadElement',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSpreadElement.prototype);
}
}
const DebugSpreadElement = class SpreadElement {};
function constructArgument(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
case 64:
return constructBoxSpreadElement(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Argument`);
}
}
class UpdateExpression {
type = 'UpdateExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructUpdateOperator(internal.pos + 24, internal.ast);
}
get prefix() {
const internal = this.#internal;
return constructBool(internal.pos + 25, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructSimpleAssignmentTarget(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'UpdateExpression',
start: this.start,
end: this.end,
operator: this.operator,
prefix: this.prefix,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugUpdateExpression.prototype);
}
}
const DebugUpdateExpression = class UpdateExpression {};
class UnaryExpression {
type = 'UnaryExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructUnaryOperator(internal.pos + 24, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'UnaryExpression',
start: this.start,
end: this.end,
operator: this.operator,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugUnaryExpression.prototype);
}
}
const DebugUnaryExpression = class UnaryExpression {};
class BinaryExpression {
type = 'BinaryExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructBinaryOperator(internal.pos + 40, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'BinaryExpression',
start: this.start,
end: this.end,
left: this.left,
operator: this.operator,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBinaryExpression.prototype);
}
}
const DebugBinaryExpression = class BinaryExpression {};
class PrivateInExpression {
type = 'PrivateInExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return new PrivateIdentifier(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'PrivateInExpression',
start: this.start,
end: this.end,
left: this.left,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugPrivateInExpression.prototype);
}
}
const DebugPrivateInExpression = class PrivateInExpression {};
class LogicalExpression {
type = 'LogicalExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructLogicalOperator(internal.pos + 40, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'LogicalExpression',
start: this.start,
end: this.end,
left: this.left,
operator: this.operator,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugLogicalExpression.prototype);
}
}
const DebugLogicalExpression = class LogicalExpression {};
class ConditionalExpression {
type = 'ConditionalExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get test() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get consequent() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
get alternate() {
const internal = this.#internal;
return constructExpression(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'ConditionalExpression',
start: this.start,
end: this.end,
test: this.test,
consequent: this.consequent,
alternate: this.alternate,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugConditionalExpression.prototype);
}
}
const DebugConditionalExpression = class ConditionalExpression {};
class AssignmentExpression {
type = 'AssignmentExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructAssignmentOperator(internal.pos + 40, internal.ast);
}
get left() {
const internal = this.#internal;
return constructAssignmentTarget(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'AssignmentExpression',
start: this.start,
end: this.end,
operator: this.operator,
left: this.left,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAssignmentExpression.prototype);
}
}
const DebugAssignmentExpression = class AssignmentExpression {};
function constructAssignmentTarget(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSAsExpression(pos + 8, ast);
case 2:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 3:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 4:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 8:
return constructBoxArrayAssignmentTarget(pos + 8, ast);
case 9:
return constructBoxObjectAssignmentTarget(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTarget`);
}
}
function constructSimpleAssignmentTarget(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSAsExpression(pos + 8, ast);
case 2:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 3:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 4:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for SimpleAssignmentTarget`);
}
}
function constructAssignmentTargetPattern(pos, ast) {
switch (ast.buffer[pos]) {
case 8:
return constructBoxArrayAssignmentTarget(pos + 8, ast);
case 9:
return constructBoxObjectAssignmentTarget(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTargetPattern`);
}
}
class ArrayAssignmentTarget {
type = 'ArrayAssignmentTarget';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $elements: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get elements() {
const internal = this.#internal,
cached = internal.$elements;
if (cached !== void 0) return cached;
return internal.$elements = constructVecOptionAssignmentTargetMaybeDefault(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ArrayAssignmentTarget',
start: this.start,
end: this.end,
elements: this.elements,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugArrayAssignmentTarget.prototype);
}
}
const DebugArrayAssignmentTarget = class ArrayAssignmentTarget {};
class ObjectAssignmentTarget {
type = 'ObjectAssignmentTarget';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $properties: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get properties() {
const internal = this.#internal,
cached = internal.$properties;
if (cached !== void 0) return cached;
return internal.$properties = constructVecAssignmentTargetProperty(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ObjectAssignmentTarget',
start: this.start,
end: this.end,
properties: this.properties,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugObjectAssignmentTarget.prototype);
}
}
const DebugObjectAssignmentTarget = class ObjectAssignmentTarget {};
class AssignmentTargetRest {
type = 'AssignmentTargetRest';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructAssignmentTarget(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'AssignmentTargetRest',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAssignmentTargetRest.prototype);
}
}
const DebugAssignmentTargetRest = class AssignmentTargetRest {};
function constructAssignmentTargetMaybeDefault(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSAsExpression(pos + 8, ast);
case 2:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 3:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 4:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 8:
return constructBoxArrayAssignmentTarget(pos + 8, ast);
case 9:
return constructBoxObjectAssignmentTarget(pos + 8, ast);
case 16:
return constructBoxAssignmentTargetWithDefault(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTargetMaybeDefault`);
}
}
class AssignmentTargetWithDefault {
type = 'AssignmentTargetWithDefault';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructAssignmentTarget(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'AssignmentTargetWithDefault',
start: this.start,
end: this.end,
left: this.left,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAssignmentTargetWithDefault.prototype);
}
}
const DebugAssignmentTargetWithDefault = class AssignmentTargetWithDefault {};
function constructAssignmentTargetProperty(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxAssignmentTargetPropertyIdentifier(pos + 8, ast);
case 1:
return constructBoxAssignmentTargetPropertyProperty(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentTargetProperty`);
}
}
class AssignmentTargetPropertyIdentifier {
type = 'AssignmentTargetPropertyIdentifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get key() {
const internal = this.#internal;
return new IdentifierReference(internal.pos + 8, internal.ast);
}
get value() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'AssignmentTargetPropertyIdentifier',
start: this.start,
end: this.end,
key: this.key,
value: this.value,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAssignmentTargetPropertyIdentifier.prototype);
}
}
const DebugAssignmentTargetPropertyIdentifier = class AssignmentTargetPropertyIdentifier {};
class AssignmentTargetPropertyProperty {
type = 'AssignmentTargetPropertyProperty';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 8, internal.ast);
}
get value() {
const internal = this.#internal;
return constructAssignmentTargetMaybeDefault(internal.pos + 24, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'AssignmentTargetPropertyProperty',
start: this.start,
end: this.end,
key: this.key,
value: this.value,
computed: this.computed,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAssignmentTargetPropertyProperty.prototype);
}
}
const DebugAssignmentTargetPropertyProperty = class AssignmentTargetPropertyProperty {};
class SequenceExpression {
type = 'SequenceExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $expressions: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expressions() {
const internal = this.#internal,
cached = internal.$expressions;
if (cached !== void 0) return cached;
return internal.$expressions = constructVecExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'SequenceExpression',
start: this.start,
end: this.end,
expressions: this.expressions,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSequenceExpression.prototype);
}
}
const DebugSequenceExpression = class SequenceExpression {};
class Super {
type = 'Super';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'Super',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSuper.prototype);
}
}
const DebugSuper = class Super {};
class AwaitExpression {
type = 'AwaitExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'AwaitExpression',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAwaitExpression.prototype);
}
}
const DebugAwaitExpression = class AwaitExpression {};
class ChainExpression {
type = 'ChainExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructChainElement(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ChainExpression',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugChainExpression.prototype);
}
}
const DebugChainExpression = class ChainExpression {};
function constructChainElement(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxCallExpression(pos + 8, ast);
case 1:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ChainElement`);
}
}
class ParenthesizedExpression {
type = 'ParenthesizedExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ParenthesizedExpression',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugParenthesizedExpression.prototype);
}
}
const DebugParenthesizedExpression = class ParenthesizedExpression {};
function constructStatement(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBlockStatement(pos + 8, ast);
case 1:
return constructBoxBreakStatement(pos + 8, ast);
case 2:
return constructBoxContinueStatement(pos + 8, ast);
case 3:
return constructBoxDebuggerStatement(pos + 8, ast);
case 4:
return constructBoxDoWhileStatement(pos + 8, ast);
case 5:
return constructBoxEmptyStatement(pos + 8, ast);
case 6:
return constructBoxExpressionStatement(pos + 8, ast);
case 7:
return constructBoxForInStatement(pos + 8, ast);
case 8:
return constructBoxForOfStatement(pos + 8, ast);
case 9:
return constructBoxForStatement(pos + 8, ast);
case 10:
return constructBoxIfStatement(pos + 8, ast);
case 11:
return constructBoxLabeledStatement(pos + 8, ast);
case 12:
return constructBoxReturnStatement(pos + 8, ast);
case 13:
return constructBoxSwitchStatement(pos + 8, ast);
case 14:
return constructBoxThrowStatement(pos + 8, ast);
case 15:
return constructBoxTryStatement(pos + 8, ast);
case 16:
return constructBoxWhileStatement(pos + 8, ast);
case 17:
return constructBoxWithStatement(pos + 8, ast);
case 32:
return constructBoxVariableDeclaration(pos + 8, ast);
case 33:
return constructBoxFunction(pos + 8, ast);
case 34:
return constructBoxClass(pos + 8, ast);
case 35:
return constructBoxTSTypeAliasDeclaration(pos + 8, ast);
case 36:
return constructBoxTSInterfaceDeclaration(pos + 8, ast);
case 37:
return constructBoxTSEnumDeclaration(pos + 8, ast);
case 38:
return constructBoxTSModuleDeclaration(pos + 8, ast);
case 39:
return constructBoxTSImportEqualsDeclaration(pos + 8, ast);
case 64:
return constructBoxImportDeclaration(pos + 8, ast);
case 65:
return constructBoxExportAllDeclaration(pos + 8, ast);
case 66:
return constructBoxExportDefaultDeclaration(pos + 8, ast);
case 67:
return constructBoxExportNamedDeclaration(pos + 8, ast);
case 68:
return constructBoxTSExportAssignment(pos + 8, ast);
case 69:
return constructBoxTSNamespaceExportDeclaration(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Statement`);
}
}
class Directive {
type = 'Directive';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $directive: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return new StringLiteral(internal.pos + 8, internal.ast);
}
get directive() {
const internal = this.#internal,
cached = internal.$directive;
if (cached !== void 0) return cached;
return internal.$directive = constructStr(internal.pos + 56, internal.ast);
}
toJSON() {
return {
type: 'Directive',
start: this.start,
end: this.end,
expression: this.expression,
directive: this.directive,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugDirective.prototype);
}
}
const DebugDirective = class Directive {};
class Hashbang {
type = 'Hashbang';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $value: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal,
cached = internal.$value;
if (cached !== void 0) return cached;
return internal.$value = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'Hashbang',
start: this.start,
end: this.end,
value: this.value,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugHashbang.prototype);
}
}
const DebugHashbang = class Hashbang {};
class BlockStatement {
type = 'BlockStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecStatement(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'BlockStatement',
start: this.start,
end: this.end,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBlockStatement.prototype);
}
}
const DebugBlockStatement = class BlockStatement {};
function constructDeclaration(pos, ast) {
switch (ast.buffer[pos]) {
case 32:
return constructBoxVariableDeclaration(pos + 8, ast);
case 33:
return constructBoxFunction(pos + 8, ast);
case 34:
return constructBoxClass(pos + 8, ast);
case 35:
return constructBoxTSTypeAliasDeclaration(pos + 8, ast);
case 36:
return constructBoxTSInterfaceDeclaration(pos + 8, ast);
case 37:
return constructBoxTSEnumDeclaration(pos + 8, ast);
case 38:
return constructBoxTSModuleDeclaration(pos + 8, ast);
case 39:
return constructBoxTSImportEqualsDeclaration(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for Declaration`);
}
}
class VariableDeclaration {
type = 'VariableDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $declarations: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructVariableDeclarationKind(internal.pos + 32, internal.ast);
}
get declarations() {
const internal = this.#internal,
cached = internal.$declarations;
if (cached !== void 0) return cached;
return internal.$declarations = constructVecVariableDeclarator(internal.pos + 8, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 33, internal.ast);
}
toJSON() {
return {
type: 'VariableDeclaration',
start: this.start,
end: this.end,
kind: this.kind,
declarations: this.declarations,
declare: this.declare,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugVariableDeclaration.prototype);
}
}
const DebugVariableDeclaration = class VariableDeclaration {};
function constructVariableDeclarationKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'var';
case 1:
return 'let';
case 2:
return 'const';
case 3:
return 'using';
case 4:
return 'await using';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for VariableDeclarationKind`);
}
}
class VariableDeclarator {
type = 'VariableDeclarator';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return new BindingPattern(internal.pos + 8, internal.ast);
}
get init() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 40, internal.ast);
}
get definite() {
const internal = this.#internal;
return constructBool(internal.pos + 57, internal.ast);
}
toJSON() {
return {
type: 'VariableDeclarator',
start: this.start,
end: this.end,
id: this.id,
init: this.init,
definite: this.definite,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugVariableDeclarator.prototype);
}
}
const DebugVariableDeclarator = class VariableDeclarator {};
class EmptyStatement {
type = 'EmptyStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'EmptyStatement',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugEmptyStatement.prototype);
}
}
const DebugEmptyStatement = class EmptyStatement {};
class ExpressionStatement {
type = 'ExpressionStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ExpressionStatement',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugExpressionStatement.prototype);
}
}
const DebugExpressionStatement = class ExpressionStatement {};
class IfStatement {
type = 'IfStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get test() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get consequent() {
const internal = this.#internal;
return constructStatement(internal.pos + 24, internal.ast);
}
get alternate() {
const internal = this.#internal;
return constructOptionStatement(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'IfStatement',
start: this.start,
end: this.end,
test: this.test,
consequent: this.consequent,
alternate: this.alternate,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugIfStatement.prototype);
}
}
const DebugIfStatement = class IfStatement {};
class DoWhileStatement {
type = 'DoWhileStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 8, internal.ast);
}
get test() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'DoWhileStatement',
start: this.start,
end: this.end,
body: this.body,
test: this.test,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugDoWhileStatement.prototype);
}
}
const DebugDoWhileStatement = class DoWhileStatement {};
class WhileStatement {
type = 'WhileStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get test() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'WhileStatement',
start: this.start,
end: this.end,
test: this.test,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugWhileStatement.prototype);
}
}
const DebugWhileStatement = class WhileStatement {};
class ForStatement {
type = 'ForStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get init() {
const internal = this.#internal;
return constructOptionForStatementInit(internal.pos + 8, internal.ast);
}
get test() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 24, internal.ast);
}
get update() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 40, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 56, internal.ast);
}
toJSON() {
return {
type: 'ForStatement',
start: this.start,
end: this.end,
init: this.init,
test: this.test,
update: this.update,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugForStatement.prototype);
}
}
const DebugForStatement = class ForStatement {};
function constructForStatementInit(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
case 64:
return constructBoxVariableDeclaration(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ForStatementInit`);
}
}
class ForInStatement {
type = 'ForInStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructForStatementLeft(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'ForInStatement',
start: this.start,
end: this.end,
left: this.left,
right: this.right,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugForInStatement.prototype);
}
}
const DebugForInStatement = class ForInStatement {};
function constructForStatementLeft(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSAsExpression(pos + 8, ast);
case 2:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 3:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 4:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 8:
return constructBoxArrayAssignmentTarget(pos + 8, ast);
case 9:
return constructBoxObjectAssignmentTarget(pos + 8, ast);
case 16:
return constructBoxVariableDeclaration(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ForStatementLeft`);
}
}
class ForOfStatement {
type = 'ForOfStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get await() {
const internal = this.#internal;
return constructBool(internal.pos + 60, internal.ast);
}
get left() {
const internal = this.#internal;
return constructForStatementLeft(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'ForOfStatement',
start: this.start,
end: this.end,
await: this.await,
left: this.left,
right: this.right,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugForOfStatement.prototype);
}
}
const DebugForOfStatement = class ForOfStatement {};
class ContinueStatement {
type = 'ContinueStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get label() {
const internal = this.#internal;
return constructOptionLabelIdentifier(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ContinueStatement',
start: this.start,
end: this.end,
label: this.label,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugContinueStatement.prototype);
}
}
const DebugContinueStatement = class ContinueStatement {};
class BreakStatement {
type = 'BreakStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get label() {
const internal = this.#internal;
return constructOptionLabelIdentifier(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'BreakStatement',
start: this.start,
end: this.end,
label: this.label,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBreakStatement.prototype);
}
}
const DebugBreakStatement = class BreakStatement {};
class ReturnStatement {
type = 'ReturnStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ReturnStatement',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugReturnStatement.prototype);
}
}
const DebugReturnStatement = class ReturnStatement {};
class WithStatement {
type = 'WithStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'WithStatement',
start: this.start,
end: this.end,
object: this.object,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugWithStatement.prototype);
}
}
const DebugWithStatement = class WithStatement {};
class SwitchStatement {
type = 'SwitchStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $cases: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get discriminant() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get cases() {
const internal = this.#internal,
cached = internal.$cases;
if (cached !== void 0) return cached;
return internal.$cases = constructVecSwitchCase(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'SwitchStatement',
start: this.start,
end: this.end,
discriminant: this.discriminant,
cases: this.cases,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSwitchStatement.prototype);
}
}
const DebugSwitchStatement = class SwitchStatement {};
class SwitchCase {
type = 'SwitchCase';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $consequent: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get test() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 8, internal.ast);
}
get consequent() {
const internal = this.#internal,
cached = internal.$consequent;
if (cached !== void 0) return cached;
return internal.$consequent = constructVecStatement(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'SwitchCase',
start: this.start,
end: this.end,
test: this.test,
consequent: this.consequent,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSwitchCase.prototype);
}
}
const DebugSwitchCase = class SwitchCase {};
class LabeledStatement {
type = 'LabeledStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get label() {
const internal = this.#internal;
return new LabelIdentifier(internal.pos + 8, internal.ast);
}
get body() {
const internal = this.#internal;
return constructStatement(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'LabeledStatement',
start: this.start,
end: this.end,
label: this.label,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugLabeledStatement.prototype);
}
}
const DebugLabeledStatement = class LabeledStatement {};
class ThrowStatement {
type = 'ThrowStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ThrowStatement',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugThrowStatement.prototype);
}
}
const DebugThrowStatement = class ThrowStatement {};
class TryStatement {
type = 'TryStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get block() {
const internal = this.#internal;
return constructBoxBlockStatement(internal.pos + 8, internal.ast);
}
get handler() {
const internal = this.#internal;
return constructOptionBoxCatchClause(internal.pos + 16, internal.ast);
}
get finalizer() {
const internal = this.#internal;
return constructOptionBoxBlockStatement(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TryStatement',
start: this.start,
end: this.end,
block: this.block,
handler: this.handler,
finalizer: this.finalizer,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTryStatement.prototype);
}
}
const DebugTryStatement = class TryStatement {};
class CatchClause {
type = 'CatchClause';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get param() {
const internal = this.#internal;
return constructOptionCatchParameter(internal.pos + 8, internal.ast);
}
get body() {
const internal = this.#internal;
return constructBoxBlockStatement(internal.pos + 48, internal.ast);
}
toJSON() {
return {
type: 'CatchClause',
start: this.start,
end: this.end,
param: this.param,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugCatchClause.prototype);
}
}
const DebugCatchClause = class CatchClause {};
class CatchParameter {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get pattern() {
const internal = this.#internal;
return new BindingPattern(internal.pos + 8, internal.ast);
}
toJSON() {
return {
pattern: this.pattern,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugCatchParameter.prototype);
}
}
const DebugCatchParameter = class CatchParameter {};
class DebuggerStatement {
type = 'DebuggerStatement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'DebuggerStatement',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugDebuggerStatement.prototype);
}
}
const DebugDebuggerStatement = class DebuggerStatement {};
class BindingPattern {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get kind() {
const internal = this.#internal;
return constructBindingPatternKind(internal.pos, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 16, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 24, internal.ast);
}
toJSON() {
return {
kind: this.kind,
typeAnnotation: this.typeAnnotation,
optional: this.optional,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBindingPattern.prototype);
}
}
const DebugBindingPattern = class BindingPattern {};
function constructBindingPatternKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBindingIdentifier(pos + 8, ast);
case 1:
return constructBoxObjectPattern(pos + 8, ast);
case 2:
return constructBoxArrayPattern(pos + 8, ast);
case 3:
return constructBoxAssignmentPattern(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for BindingPatternKind`);
}
}
class AssignmentPattern {
type = 'AssignmentPattern';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return new BindingPattern(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'AssignmentPattern',
start: this.start,
end: this.end,
left: this.left,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAssignmentPattern.prototype);
}
}
const DebugAssignmentPattern = class AssignmentPattern {};
class ObjectPattern {
type = 'ObjectPattern';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $properties: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get properties() {
const internal = this.#internal,
cached = internal.$properties;
if (cached !== void 0) return cached;
return internal.$properties = constructVecBindingProperty(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ObjectPattern',
start: this.start,
end: this.end,
properties: this.properties,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugObjectPattern.prototype);
}
}
const DebugObjectPattern = class ObjectPattern {};
class BindingProperty {
type = 'BindingProperty';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 8, internal.ast);
}
get value() {
const internal = this.#internal;
return new BindingPattern(internal.pos + 24, internal.ast);
}
get shorthand() {
const internal = this.#internal;
return constructBool(internal.pos + 56, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 57, internal.ast);
}
toJSON() {
return {
type: 'BindingProperty',
start: this.start,
end: this.end,
key: this.key,
value: this.value,
shorthand: this.shorthand,
computed: this.computed,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBindingProperty.prototype);
}
}
const DebugBindingProperty = class BindingProperty {};
class ArrayPattern {
type = 'ArrayPattern';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $elements: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get elements() {
const internal = this.#internal,
cached = internal.$elements;
if (cached !== void 0) return cached;
return internal.$elements = constructVecOptionBindingPattern(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ArrayPattern',
start: this.start,
end: this.end,
elements: this.elements,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugArrayPattern.prototype);
}
}
const DebugArrayPattern = class ArrayPattern {};
class BindingRestElement {
type = 'BindingRestElement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return new BindingPattern(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'BindingRestElement',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBindingRestElement.prototype);
}
}
const DebugBindingRestElement = class BindingRestElement {};
class Function {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get type() {
const internal = this.#internal;
return constructFunctionType(internal.pos + 84, internal.ast);
}
get id() {
const internal = this.#internal;
return constructOptionBindingIdentifier(internal.pos + 8, internal.ast);
}
get generator() {
const internal = this.#internal;
return constructBool(internal.pos + 85, internal.ast);
}
get async() {
const internal = this.#internal;
return constructBool(internal.pos + 86, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 87, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 40, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 56, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 64, internal.ast);
}
get body() {
const internal = this.#internal;
return constructOptionBoxFunctionBody(internal.pos + 72, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
type: this.type,
id: this.id,
generator: this.generator,
async: this.async,
declare: this.declare,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugFunction.prototype);
}
}
const DebugFunction = class Function {};
function constructFunctionType(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'FunctionDeclaration';
case 1:
return 'FunctionExpression';
case 2:
return 'TSDeclareFunction';
case 3:
return 'TSEmptyBodyFunctionExpression';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for FunctionType`);
}
}
class FormalParameters {
type = 'FormalParameters';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $items: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructFormalParameterKind(internal.pos + 40, internal.ast);
}
get items() {
const internal = this.#internal,
cached = internal.$items;
if (cached !== void 0) return cached;
return internal.$items = constructVecFormalParameter(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'FormalParameters',
start: this.start,
end: this.end,
kind: this.kind,
items: this.items,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugFormalParameters.prototype);
}
}
const DebugFormalParameters = class FormalParameters {};
class FormalParameter {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $decorators: void 0 };
nodes.set(pos, this);
}
get decorators() {
const internal = this.#internal,
cached = internal.$decorators;
if (cached !== void 0) return cached;
return internal.$decorators = constructVecDecorator(internal.pos + 8, internal.ast);
}
get pattern() {
const internal = this.#internal;
return new BindingPattern(internal.pos + 32, internal.ast);
}
toJSON() {
return {
decorators: this.decorators,
pattern: this.pattern,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugFormalParameter.prototype);
}
}
const DebugFormalParameter = class FormalParameter {};
function constructFormalParameterKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'FormalParameter';
case 1:
return 'UniqueFormalParameters';
case 2:
return 'ArrowFormalParameters';
case 3:
return 'Signature';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for FormalParameterKind`);
}
}
class FunctionBody {
type = 'FunctionBody';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecStatement(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'FunctionBody',
start: this.start,
end: this.end,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugFunctionBody.prototype);
}
}
const DebugFunctionBody = class FunctionBody {};
class ArrowFunctionExpression {
type = 'ArrowFunctionExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructBool(internal.pos + 44, internal.ast);
}
get async() {
const internal = this.#internal;
return constructBool(internal.pos + 45, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 8, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 16, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 24, internal.ast);
}
get body() {
const internal = this.#internal;
return constructBoxFunctionBody(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'ArrowFunctionExpression',
start: this.start,
end: this.end,
expression: this.expression,
async: this.async,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugArrowFunctionExpression.prototype);
}
}
const DebugArrowFunctionExpression = class ArrowFunctionExpression {};
class YieldExpression {
type = 'YieldExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get delegate() {
const internal = this.#internal;
return constructBool(internal.pos + 24, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'YieldExpression',
start: this.start,
end: this.end,
delegate: this.delegate,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugYieldExpression.prototype);
}
}
const DebugYieldExpression = class YieldExpression {};
class Class {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $decorators: void 0, $implements: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get type() {
const internal = this.#internal;
return constructClassType(internal.pos + 132, internal.ast);
}
get decorators() {
const internal = this.#internal,
cached = internal.$decorators;
if (cached !== void 0) return cached;
return internal.$decorators = constructVecDecorator(internal.pos + 8, internal.ast);
}
get id() {
const internal = this.#internal;
return constructOptionBindingIdentifier(internal.pos + 32, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 64, internal.ast);
}
get superClass() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 72, internal.ast);
}
get superTypeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 88, internal.ast);
}
get implements() {
const internal = this.#internal,
cached = internal.$implements;
if (cached !== void 0) return cached;
return internal.$implements = constructVecTSClassImplements(internal.pos + 96, internal.ast);
}
get body() {
const internal = this.#internal;
return constructBoxClassBody(internal.pos + 120, internal.ast);
}
get abstract() {
const internal = this.#internal;
return constructBool(internal.pos + 133, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 134, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
type: this.type,
decorators: this.decorators,
id: this.id,
typeParameters: this.typeParameters,
superClass: this.superClass,
superTypeArguments: this.superTypeArguments,
implements: this.implements,
body: this.body,
abstract: this.abstract,
declare: this.declare,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugClass.prototype);
}
}
const DebugClass = class Class {};
function constructClassType(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'ClassDeclaration';
case 1:
return 'ClassExpression';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ClassType`);
}
}
class ClassBody {
type = 'ClassBody';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecClassElement(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ClassBody',
start: this.start,
end: this.end,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugClassBody.prototype);
}
}
const DebugClassBody = class ClassBody {};
function constructClassElement(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxStaticBlock(pos + 8, ast);
case 1:
return constructBoxMethodDefinition(pos + 8, ast);
case 2:
return constructBoxPropertyDefinition(pos + 8, ast);
case 3:
return constructBoxAccessorProperty(pos + 8, ast);
case 4:
return constructBoxTSIndexSignature(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ClassElement`);
}
}
class MethodDefinition {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $decorators: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get type() {
const internal = this.#internal;
return constructMethodDefinitionType(internal.pos + 56, internal.ast);
}
get decorators() {
const internal = this.#internal,
cached = internal.$decorators;
if (cached !== void 0) return cached;
return internal.$decorators = constructVecDecorator(internal.pos + 8, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 32, internal.ast);
}
get value() {
const internal = this.#internal;
return constructBoxFunction(internal.pos + 48, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructMethodDefinitionKind(internal.pos + 57, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 58, internal.ast);
}
get static() {
const internal = this.#internal;
return constructBool(internal.pos + 59, internal.ast);
}
get override() {
const internal = this.#internal;
return constructBool(internal.pos + 60, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 61, internal.ast);
}
get accessibility() {
const internal = this.#internal;
return constructOptionTSAccessibility(internal.pos + 62, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
type: this.type,
decorators: this.decorators,
key: this.key,
value: this.value,
kind: this.kind,
computed: this.computed,
static: this.static,
override: this.override,
optional: this.optional,
accessibility: this.accessibility,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugMethodDefinition.prototype);
}
}
const DebugMethodDefinition = class MethodDefinition {};
function constructMethodDefinitionType(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'MethodDefinition';
case 1:
return 'TSAbstractMethodDefinition';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for MethodDefinitionType`);
}
}
class PropertyDefinition {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $decorators: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get type() {
const internal = this.#internal;
return constructPropertyDefinitionType(internal.pos + 72, internal.ast);
}
get decorators() {
const internal = this.#internal,
cached = internal.$decorators;
if (cached !== void 0) return cached;
return internal.$decorators = constructVecDecorator(internal.pos + 8, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 32, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 48, internal.ast);
}
get value() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 56, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 73, internal.ast);
}
get static() {
const internal = this.#internal;
return constructBool(internal.pos + 74, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 75, internal.ast);
}
get override() {
const internal = this.#internal;
return constructBool(internal.pos + 76, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 77, internal.ast);
}
get definite() {
const internal = this.#internal;
return constructBool(internal.pos + 78, internal.ast);
}
get readonly() {
const internal = this.#internal;
return constructBool(internal.pos + 79, internal.ast);
}
get accessibility() {
const internal = this.#internal;
return constructOptionTSAccessibility(internal.pos + 80, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
type: this.type,
decorators: this.decorators,
key: this.key,
typeAnnotation: this.typeAnnotation,
value: this.value,
computed: this.computed,
static: this.static,
declare: this.declare,
override: this.override,
optional: this.optional,
definite: this.definite,
readonly: this.readonly,
accessibility: this.accessibility,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugPropertyDefinition.prototype);
}
}
const DebugPropertyDefinition = class PropertyDefinition {};
function constructPropertyDefinitionType(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'PropertyDefinition';
case 1:
return 'TSAbstractPropertyDefinition';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for PropertyDefinitionType`);
}
}
function constructMethodDefinitionKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'constructor';
case 1:
return 'method';
case 2:
return 'get';
case 3:
return 'set';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for MethodDefinitionKind`);
}
}
class PrivateIdentifier {
type = 'PrivateIdentifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'PrivateIdentifier',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugPrivateIdentifier.prototype);
}
}
const DebugPrivateIdentifier = class PrivateIdentifier {};
class StaticBlock {
type = 'StaticBlock';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecStatement(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'StaticBlock',
start: this.start,
end: this.end,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugStaticBlock.prototype);
}
}
const DebugStaticBlock = class StaticBlock {};
function constructModuleDeclaration(pos, ast) {
switch (ast.buffer[pos]) {
case 64:
return constructBoxImportDeclaration(pos + 8, ast);
case 65:
return constructBoxExportAllDeclaration(pos + 8, ast);
case 66:
return constructBoxExportDefaultDeclaration(pos + 8, ast);
case 67:
return constructBoxExportNamedDeclaration(pos + 8, ast);
case 68:
return constructBoxTSExportAssignment(pos + 8, ast);
case 69:
return constructBoxTSNamespaceExportDeclaration(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ModuleDeclaration`);
}
}
function constructAccessorPropertyType(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'AccessorProperty';
case 1:
return 'TSAbstractAccessorProperty';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AccessorPropertyType`);
}
}
class AccessorProperty {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $decorators: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get type() {
const internal = this.#internal;
return constructAccessorPropertyType(internal.pos + 72, internal.ast);
}
get decorators() {
const internal = this.#internal,
cached = internal.$decorators;
if (cached !== void 0) return cached;
return internal.$decorators = constructVecDecorator(internal.pos + 8, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 32, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 48, internal.ast);
}
get value() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 56, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 73, internal.ast);
}
get static() {
const internal = this.#internal;
return constructBool(internal.pos + 74, internal.ast);
}
get override() {
const internal = this.#internal;
return constructBool(internal.pos + 75, internal.ast);
}
get definite() {
const internal = this.#internal;
return constructBool(internal.pos + 76, internal.ast);
}
get accessibility() {
const internal = this.#internal;
return constructOptionTSAccessibility(internal.pos + 77, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
type: this.type,
decorators: this.decorators,
key: this.key,
typeAnnotation: this.typeAnnotation,
value: this.value,
computed: this.computed,
static: this.static,
override: this.override,
definite: this.definite,
accessibility: this.accessibility,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugAccessorProperty.prototype);
}
}
const DebugAccessorProperty = class AccessorProperty {};
class ImportExpression {
type = 'ImportExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get source() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get options() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 24, internal.ast);
}
get phase() {
const internal = this.#internal;
return constructOptionImportPhase(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'ImportExpression',
start: this.start,
end: this.end,
source: this.source,
options: this.options,
phase: this.phase,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportExpression.prototype);
}
}
const DebugImportExpression = class ImportExpression {};
class ImportDeclaration {
type = 'ImportDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $specifiers: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get specifiers() {
const internal = this.#internal,
cached = internal.$specifiers;
if (cached !== void 0) return cached;
return internal.$specifiers = constructOptionVecImportDeclarationSpecifier(internal.pos + 8, internal.ast);
}
get source() {
const internal = this.#internal;
return new StringLiteral(internal.pos + 32, internal.ast);
}
get phase() {
const internal = this.#internal;
return constructOptionImportPhase(internal.pos + 88, internal.ast);
}
get attributes() {
const internal = this.#internal;
return constructOptionBoxWithClause(internal.pos + 80, internal.ast);
}
get importKind() {
const internal = this.#internal;
return constructImportOrExportKind(internal.pos + 89, internal.ast);
}
toJSON() {
return {
type: 'ImportDeclaration',
start: this.start,
end: this.end,
specifiers: this.specifiers,
source: this.source,
phase: this.phase,
attributes: this.attributes,
importKind: this.importKind,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportDeclaration.prototype);
}
}
const DebugImportDeclaration = class ImportDeclaration {};
function constructImportPhase(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'source';
case 1:
return 'defer';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportPhase`);
}
}
function constructImportDeclarationSpecifier(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxImportSpecifier(pos + 8, ast);
case 1:
return constructBoxImportDefaultSpecifier(pos + 8, ast);
case 2:
return constructBoxImportNamespaceSpecifier(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportDeclarationSpecifier`);
}
}
class ImportSpecifier {
type = 'ImportSpecifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get imported() {
const internal = this.#internal;
return constructModuleExportName(internal.pos + 8, internal.ast);
}
get local() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 64, internal.ast);
}
get importKind() {
const internal = this.#internal;
return constructImportOrExportKind(internal.pos + 96, internal.ast);
}
toJSON() {
return {
type: 'ImportSpecifier',
start: this.start,
end: this.end,
imported: this.imported,
local: this.local,
importKind: this.importKind,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportSpecifier.prototype);
}
}
const DebugImportSpecifier = class ImportSpecifier {};
class ImportDefaultSpecifier {
type = 'ImportDefaultSpecifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get local() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ImportDefaultSpecifier',
start: this.start,
end: this.end,
local: this.local,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportDefaultSpecifier.prototype);
}
}
const DebugImportDefaultSpecifier = class ImportDefaultSpecifier {};
class ImportNamespaceSpecifier {
type = 'ImportNamespaceSpecifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get local() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ImportNamespaceSpecifier',
start: this.start,
end: this.end,
local: this.local,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportNamespaceSpecifier.prototype);
}
}
const DebugImportNamespaceSpecifier = class ImportNamespaceSpecifier {};
class WithClause {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $attributes: void 0 };
nodes.set(pos, this);
}
get attributes() {
const internal = this.#internal,
cached = internal.$attributes;
if (cached !== void 0) return cached;
return internal.$attributes = constructVecImportAttribute(internal.pos + 8, internal.ast);
}
toJSON() {
return {
attributes: this.attributes,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugWithClause.prototype);
}
}
const DebugWithClause = class WithClause {};
class ImportAttribute {
type = 'ImportAttribute';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get key() {
const internal = this.#internal;
return constructImportAttributeKey(internal.pos + 8, internal.ast);
}
get value() {
const internal = this.#internal;
return new StringLiteral(internal.pos + 64, internal.ast);
}
toJSON() {
return {
type: 'ImportAttribute',
start: this.start,
end: this.end,
key: this.key,
value: this.value,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportAttribute.prototype);
}
}
const DebugImportAttribute = class ImportAttribute {};
function constructImportAttributeKey(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new IdentifierName(pos + 8, ast);
case 1:
return new StringLiteral(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportAttributeKey`);
}
}
class ExportNamedDeclaration {
type = 'ExportNamedDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $specifiers: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get declaration() {
const internal = this.#internal;
return constructOptionDeclaration(internal.pos + 8, internal.ast);
}
get specifiers() {
const internal = this.#internal,
cached = internal.$specifiers;
if (cached !== void 0) return cached;
return internal.$specifiers = constructVecExportSpecifier(internal.pos + 24, internal.ast);
}
get source() {
const internal = this.#internal;
return constructOptionStringLiteral(internal.pos + 48, internal.ast);
}
get exportKind() {
const internal = this.#internal;
return constructImportOrExportKind(internal.pos + 104, internal.ast);
}
get attributes() {
const internal = this.#internal;
return constructOptionBoxWithClause(internal.pos + 96, internal.ast);
}
toJSON() {
return {
type: 'ExportNamedDeclaration',
start: this.start,
end: this.end,
declaration: this.declaration,
specifiers: this.specifiers,
source: this.source,
exportKind: this.exportKind,
attributes: this.attributes,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugExportNamedDeclaration.prototype);
}
}
const DebugExportNamedDeclaration = class ExportNamedDeclaration {};
class ExportDefaultDeclaration {
type = 'ExportDefaultDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get declaration() {
const internal = this.#internal;
return constructExportDefaultDeclarationKind(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'ExportDefaultDeclaration',
start: this.start,
end: this.end,
declaration: this.declaration,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugExportDefaultDeclaration.prototype);
}
}
const DebugExportDefaultDeclaration = class ExportDefaultDeclaration {};
class ExportAllDeclaration {
type = 'ExportAllDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get exported() {
const internal = this.#internal;
return constructOptionModuleExportName(internal.pos + 8, internal.ast);
}
get source() {
const internal = this.#internal;
return new StringLiteral(internal.pos + 64, internal.ast);
}
get attributes() {
const internal = this.#internal;
return constructOptionBoxWithClause(internal.pos + 112, internal.ast);
}
get exportKind() {
const internal = this.#internal;
return constructImportOrExportKind(internal.pos + 120, internal.ast);
}
toJSON() {
return {
type: 'ExportAllDeclaration',
start: this.start,
end: this.end,
exported: this.exported,
source: this.source,
attributes: this.attributes,
exportKind: this.exportKind,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugExportAllDeclaration.prototype);
}
}
const DebugExportAllDeclaration = class ExportAllDeclaration {};
class ExportSpecifier {
type = 'ExportSpecifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get local() {
const internal = this.#internal;
return constructModuleExportName(internal.pos + 8, internal.ast);
}
get exported() {
const internal = this.#internal;
return constructModuleExportName(internal.pos + 64, internal.ast);
}
get exportKind() {
const internal = this.#internal;
return constructImportOrExportKind(internal.pos + 120, internal.ast);
}
toJSON() {
return {
type: 'ExportSpecifier',
start: this.start,
end: this.end,
local: this.local,
exported: this.exported,
exportKind: this.exportKind,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugExportSpecifier.prototype);
}
}
const DebugExportSpecifier = class ExportSpecifier {};
function constructExportDefaultDeclarationKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
case 64:
return constructBoxFunction(pos + 8, ast);
case 65:
return constructBoxClass(pos + 8, ast);
case 66:
return constructBoxTSInterfaceDeclaration(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ExportDefaultDeclarationKind`);
}
}
function constructModuleExportName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new IdentifierName(pos + 8, ast);
case 1:
return new IdentifierReference(pos + 8, ast);
case 2:
return new StringLiteral(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ModuleExportName`);
}
}
class V8IntrinsicExpression {
type = 'V8IntrinsicExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $arguments: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 8, internal.ast);
}
get arguments() {
const internal = this.#internal,
cached = internal.$arguments;
if (cached !== void 0) return cached;
return internal.$arguments = constructVecArgument(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'V8IntrinsicExpression',
start: this.start,
end: this.end,
name: this.name,
arguments: this.arguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugV8IntrinsicExpression.prototype);
}
}
const DebugV8IntrinsicExpression = class V8IntrinsicExpression {};
class BooleanLiteral {
type = 'BooleanLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal;
return constructBool(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'BooleanLiteral',
start: this.start,
end: this.end,
value: this.value,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBooleanLiteral.prototype);
}
}
const DebugBooleanLiteral = class BooleanLiteral {};
class NullLiteral {
type = 'NullLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'NullLiteral',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugNullLiteral.prototype);
}
}
const DebugNullLiteral = class NullLiteral {};
class NumericLiteral {
type = 'NumericLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $raw: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal;
return constructF64(internal.pos + 8, internal.ast);
}
get raw() {
const internal = this.#internal,
cached = internal.$raw;
if (cached !== void 0) return cached;
return internal.$raw = constructOptionStr(internal.pos + 16, internal.ast);
}
toJSON() {
return {
type: 'NumericLiteral',
start: this.start,
end: this.end,
value: this.value,
raw: this.raw,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugNumericLiteral.prototype);
}
}
const DebugNumericLiteral = class NumericLiteral {};
class StringLiteral {
type = 'StringLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $value: void 0, $raw: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal,
cached = internal.$value;
if (cached !== void 0) return cached;
return internal.$value = constructStr(internal.pos + 8, internal.ast);
}
get raw() {
const internal = this.#internal,
cached = internal.$raw;
if (cached !== void 0) return cached;
return internal.$raw = constructOptionStr(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'StringLiteral',
start: this.start,
end: this.end,
value: this.value,
raw: this.raw,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugStringLiteral.prototype);
}
}
const DebugStringLiteral = class StringLiteral {};
class BigIntLiteral {
type = 'BigIntLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $value: void 0, $raw: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal,
cached = internal.$value;
if (cached !== void 0) return cached;
return internal.$value = constructStr(internal.pos + 8, internal.ast);
}
get raw() {
const internal = this.#internal,
cached = internal.$raw;
if (cached !== void 0) return cached;
return internal.$raw = constructOptionStr(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'BigIntLiteral',
start: this.start,
end: this.end,
value: this.value,
raw: this.raw,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugBigIntLiteral.prototype);
}
}
const DebugBigIntLiteral = class BigIntLiteral {};
class RegExpLiteral {
type = 'RegExpLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $raw: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get regex() {
const internal = this.#internal;
return new RegExp(internal.pos + 8, internal.ast);
}
get raw() {
const internal = this.#internal,
cached = internal.$raw;
if (cached !== void 0) return cached;
return internal.$raw = constructOptionStr(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'RegExpLiteral',
start: this.start,
end: this.end,
regex: this.regex,
raw: this.raw,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugRegExpLiteral.prototype);
}
}
const DebugRegExpLiteral = class RegExpLiteral {};
class RegExp {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
// `pos` would be same as one of fields, so add offset to ensure unique cache key
const cached = nodes.get(pos + 1);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos + 1, this);
}
get pattern() {
const internal = this.#internal;
return new RegExpPattern(internal.pos, internal.ast);
}
get flags() {
const internal = this.#internal;
return new RegExpFlags(internal.pos + 24, internal.ast);
}
toJSON() {
return {
pattern: this.pattern,
flags: this.flags,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugRegExp.prototype);
}
}
const DebugRegExp = class RegExp {};
class RegExpPattern {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $pattern: void 0 };
nodes.set(pos, this);
}
get pattern() {
const internal = this.#internal,
cached = internal.$pattern;
if (cached !== void 0) return cached;
return internal.$pattern = constructStr(internal.pos, internal.ast);
}
toJSON() {
return {
pattern: this.pattern,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugRegExpPattern.prototype);
}
}
const DebugRegExpPattern = class RegExpPattern {};
class RegExpFlags {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
toJSON() {
return {};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugRegExpFlags.prototype);
}
}
const DebugRegExpFlags = class RegExpFlags {};
class JSXElement {
type = 'JSXElement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $children: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get openingElement() {
const internal = this.#internal;
return constructBoxJSXOpeningElement(internal.pos + 8, internal.ast);
}
get children() {
const internal = this.#internal,
cached = internal.$children;
if (cached !== void 0) return cached;
return internal.$children = constructVecJSXChild(internal.pos + 16, internal.ast);
}
get closingElement() {
const internal = this.#internal;
return constructOptionBoxJSXClosingElement(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'JSXElement',
start: this.start,
end: this.end,
openingElement: this.openingElement,
children: this.children,
closingElement: this.closingElement,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXElement.prototype);
}
}
const DebugJSXElement = class JSXElement {};
class JSXOpeningElement {
type = 'JSXOpeningElement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $attributes: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal;
return constructJSXElementName(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
get attributes() {
const internal = this.#internal,
cached = internal.$attributes;
if (cached !== void 0) return cached;
return internal.$attributes = constructVecJSXAttributeItem(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'JSXOpeningElement',
start: this.start,
end: this.end,
name: this.name,
typeArguments: this.typeArguments,
attributes: this.attributes,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXOpeningElement.prototype);
}
}
const DebugJSXOpeningElement = class JSXOpeningElement {};
class JSXClosingElement {
type = 'JSXClosingElement';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal;
return constructJSXElementName(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'JSXClosingElement',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXClosingElement.prototype);
}
}
const DebugJSXClosingElement = class JSXClosingElement {};
class JSXFragment {
type = 'JSXFragment';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $children: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get openingFragment() {
const internal = this.#internal;
return new JSXOpeningFragment(internal.pos + 8, internal.ast);
}
get children() {
const internal = this.#internal,
cached = internal.$children;
if (cached !== void 0) return cached;
return internal.$children = constructVecJSXChild(internal.pos + 16, internal.ast);
}
get closingFragment() {
const internal = this.#internal;
return new JSXClosingFragment(internal.pos + 40, internal.ast);
}
toJSON() {
return {
type: 'JSXFragment',
start: this.start,
end: this.end,
openingFragment: this.openingFragment,
children: this.children,
closingFragment: this.closingFragment,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXFragment.prototype);
}
}
const DebugJSXFragment = class JSXFragment {};
class JSXOpeningFragment {
type = 'JSXOpeningFragment';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'JSXOpeningFragment',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXOpeningFragment.prototype);
}
}
const DebugJSXOpeningFragment = class JSXOpeningFragment {};
class JSXClosingFragment {
type = 'JSXClosingFragment';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'JSXClosingFragment',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXClosingFragment.prototype);
}
}
const DebugJSXClosingFragment = class JSXClosingFragment {};
function constructJSXElementName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxJSXIdentifier(pos + 8, ast);
case 1:
return constructBoxIdentifierReference(pos + 8, ast);
case 2:
return constructBoxJSXNamespacedName(pos + 8, ast);
case 3:
return constructBoxJSXMemberExpression(pos + 8, ast);
case 4:
return constructBoxThisExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXElementName`);
}
}
class JSXNamespacedName {
type = 'JSXNamespacedName';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get namespace() {
const internal = this.#internal;
return new JSXIdentifier(internal.pos + 8, internal.ast);
}
get name() {
const internal = this.#internal;
return new JSXIdentifier(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'JSXNamespacedName',
start: this.start,
end: this.end,
namespace: this.namespace,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXNamespacedName.prototype);
}
}
const DebugJSXNamespacedName = class JSXNamespacedName {};
class JSXMemberExpression {
type = 'JSXMemberExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructJSXMemberExpressionObject(internal.pos + 8, internal.ast);
}
get property() {
const internal = this.#internal;
return new JSXIdentifier(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'JSXMemberExpression',
start: this.start,
end: this.end,
object: this.object,
property: this.property,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXMemberExpression.prototype);
}
}
const DebugJSXMemberExpression = class JSXMemberExpression {};
function constructJSXMemberExpressionObject(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxJSXMemberExpression(pos + 8, ast);
case 2:
return constructBoxThisExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXMemberExpressionObject`);
}
}
class JSXExpressionContainer {
type = 'JSXExpressionContainer';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructJSXExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'JSXExpressionContainer',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXExpressionContainer.prototype);
}
}
const DebugJSXExpressionContainer = class JSXExpressionContainer {};
function constructJSXExpression(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNullLiteral(pos + 8, ast);
case 2:
return constructBoxNumericLiteral(pos + 8, ast);
case 3:
return constructBoxBigIntLiteral(pos + 8, ast);
case 4:
return constructBoxRegExpLiteral(pos + 8, ast);
case 5:
return constructBoxStringLiteral(pos + 8, ast);
case 6:
return constructBoxTemplateLiteral(pos + 8, ast);
case 7:
return constructBoxIdentifierReference(pos + 8, ast);
case 8:
return constructBoxMetaProperty(pos + 8, ast);
case 9:
return constructBoxSuper(pos + 8, ast);
case 10:
return constructBoxArrayExpression(pos + 8, ast);
case 11:
return constructBoxArrowFunctionExpression(pos + 8, ast);
case 12:
return constructBoxAssignmentExpression(pos + 8, ast);
case 13:
return constructBoxAwaitExpression(pos + 8, ast);
case 14:
return constructBoxBinaryExpression(pos + 8, ast);
case 15:
return constructBoxCallExpression(pos + 8, ast);
case 16:
return constructBoxChainExpression(pos + 8, ast);
case 17:
return constructBoxClass(pos + 8, ast);
case 18:
return constructBoxConditionalExpression(pos + 8, ast);
case 19:
return constructBoxFunction(pos + 8, ast);
case 20:
return constructBoxImportExpression(pos + 8, ast);
case 21:
return constructBoxLogicalExpression(pos + 8, ast);
case 22:
return constructBoxNewExpression(pos + 8, ast);
case 23:
return constructBoxObjectExpression(pos + 8, ast);
case 24:
return constructBoxParenthesizedExpression(pos + 8, ast);
case 25:
return constructBoxSequenceExpression(pos + 8, ast);
case 26:
return constructBoxTaggedTemplateExpression(pos + 8, ast);
case 27:
return constructBoxThisExpression(pos + 8, ast);
case 28:
return constructBoxUnaryExpression(pos + 8, ast);
case 29:
return constructBoxUpdateExpression(pos + 8, ast);
case 30:
return constructBoxYieldExpression(pos + 8, ast);
case 31:
return constructBoxPrivateInExpression(pos + 8, ast);
case 32:
return constructBoxJSXElement(pos + 8, ast);
case 33:
return constructBoxJSXFragment(pos + 8, ast);
case 34:
return constructBoxTSAsExpression(pos + 8, ast);
case 35:
return constructBoxTSSatisfiesExpression(pos + 8, ast);
case 36:
return constructBoxTSTypeAssertion(pos + 8, ast);
case 37:
return constructBoxTSNonNullExpression(pos + 8, ast);
case 38:
return constructBoxTSInstantiationExpression(pos + 8, ast);
case 39:
return constructBoxV8IntrinsicExpression(pos + 8, ast);
case 48:
return constructBoxComputedMemberExpression(pos + 8, ast);
case 49:
return constructBoxStaticMemberExpression(pos + 8, ast);
case 50:
return constructBoxPrivateFieldExpression(pos + 8, ast);
case 64:
return new JSXEmptyExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXExpression`);
}
}
class JSXEmptyExpression {
type = 'JSXEmptyExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'JSXEmptyExpression',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXEmptyExpression.prototype);
}
}
const DebugJSXEmptyExpression = class JSXEmptyExpression {};
function constructJSXAttributeItem(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxJSXAttribute(pos + 8, ast);
case 1:
return constructBoxJSXSpreadAttribute(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXAttributeItem`);
}
}
class JSXAttribute {
type = 'JSXAttribute';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal;
return constructJSXAttributeName(internal.pos + 8, internal.ast);
}
get value() {
const internal = this.#internal;
return constructOptionJSXAttributeValue(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'JSXAttribute',
start: this.start,
end: this.end,
name: this.name,
value: this.value,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXAttribute.prototype);
}
}
const DebugJSXAttribute = class JSXAttribute {};
class JSXSpreadAttribute {
type = 'JSXSpreadAttribute';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'JSXSpreadAttribute',
start: this.start,
end: this.end,
argument: this.argument,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXSpreadAttribute.prototype);
}
}
const DebugJSXSpreadAttribute = class JSXSpreadAttribute {};
function constructJSXAttributeName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxJSXIdentifier(pos + 8, ast);
case 1:
return constructBoxJSXNamespacedName(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXAttributeName`);
}
}
function constructJSXAttributeValue(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxStringLiteral(pos + 8, ast);
case 1:
return constructBoxJSXExpressionContainer(pos + 8, ast);
case 2:
return constructBoxJSXElement(pos + 8, ast);
case 3:
return constructBoxJSXFragment(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXAttributeValue`);
}
}
class JSXIdentifier {
type = 'JSXIdentifier';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'JSXIdentifier',
start: this.start,
end: this.end,
name: this.name,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXIdentifier.prototype);
}
}
const DebugJSXIdentifier = class JSXIdentifier {};
function constructJSXChild(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxJSXText(pos + 8, ast);
case 1:
return constructBoxJSXElement(pos + 8, ast);
case 2:
return constructBoxJSXFragment(pos + 8, ast);
case 3:
return constructBoxJSXExpressionContainer(pos + 8, ast);
case 4:
return constructBoxJSXSpreadChild(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for JSXChild`);
}
}
class JSXSpreadChild {
type = 'JSXSpreadChild';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'JSXSpreadChild',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXSpreadChild.prototype);
}
}
const DebugJSXSpreadChild = class JSXSpreadChild {};
class JSXText {
type = 'JSXText';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $value: void 0, $raw: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal,
cached = internal.$value;
if (cached !== void 0) return cached;
return internal.$value = constructStr(internal.pos + 8, internal.ast);
}
get raw() {
const internal = this.#internal,
cached = internal.$raw;
if (cached !== void 0) return cached;
return internal.$raw = constructOptionStr(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'JSXText',
start: this.start,
end: this.end,
value: this.value,
raw: this.raw,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSXText.prototype);
}
}
const DebugJSXText = class JSXText {};
class TSThisParameter {
type = 'TSThisParameter';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 16, internal.ast);
}
toJSON() {
return {
type: 'TSThisParameter',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSThisParameter.prototype);
}
}
const DebugTSThisParameter = class TSThisParameter {};
class TSEnumDeclaration {
type = 'TSEnumDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
get body() {
const internal = this.#internal;
return new TSEnumBody(internal.pos + 40, internal.ast);
}
get const() {
const internal = this.#internal;
return constructBool(internal.pos + 76, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 77, internal.ast);
}
toJSON() {
return {
type: 'TSEnumDeclaration',
start: this.start,
end: this.end,
id: this.id,
body: this.body,
const: this.const,
declare: this.declare,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSEnumDeclaration.prototype);
}
}
const DebugTSEnumDeclaration = class TSEnumDeclaration {};
class TSEnumBody {
type = 'TSEnumBody';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $members: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get members() {
const internal = this.#internal,
cached = internal.$members;
if (cached !== void 0) return cached;
return internal.$members = constructVecTSEnumMember(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSEnumBody',
start: this.start,
end: this.end,
members: this.members,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSEnumBody.prototype);
}
}
const DebugTSEnumBody = class TSEnumBody {};
class TSEnumMember {
type = 'TSEnumMember';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return constructTSEnumMemberName(internal.pos + 8, internal.ast);
}
get initializer() {
const internal = this.#internal;
return constructOptionExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSEnumMember',
start: this.start,
end: this.end,
id: this.id,
initializer: this.initializer,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSEnumMember.prototype);
}
}
const DebugTSEnumMember = class TSEnumMember {};
function constructTSEnumMemberName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierName(pos + 8, ast);
case 1:
return constructBoxStringLiteral(pos + 8, ast);
case 2:
return constructBoxStringLiteral(pos + 8, ast);
case 3:
return constructBoxTemplateLiteral(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSEnumMemberName`);
}
}
class TSTypeAnnotation {
type = 'TSTypeAnnotation';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSTypeAnnotation',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeAnnotation.prototype);
}
}
const DebugTSTypeAnnotation = class TSTypeAnnotation {};
class TSLiteralType {
type = 'TSLiteralType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get literal() {
const internal = this.#internal;
return constructTSLiteral(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSLiteralType',
start: this.start,
end: this.end,
literal: this.literal,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSLiteralType.prototype);
}
}
const DebugTSLiteralType = class TSLiteralType {};
function constructTSLiteral(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxBooleanLiteral(pos + 8, ast);
case 1:
return constructBoxNumericLiteral(pos + 8, ast);
case 2:
return constructBoxBigIntLiteral(pos + 8, ast);
case 3:
return constructBoxStringLiteral(pos + 8, ast);
case 4:
return constructBoxTemplateLiteral(pos + 8, ast);
case 5:
return constructBoxUnaryExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSLiteral`);
}
}
function constructTSType(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxTSAnyKeyword(pos + 8, ast);
case 1:
return constructBoxTSBigIntKeyword(pos + 8, ast);
case 2:
return constructBoxTSBooleanKeyword(pos + 8, ast);
case 3:
return constructBoxTSIntrinsicKeyword(pos + 8, ast);
case 4:
return constructBoxTSNeverKeyword(pos + 8, ast);
case 5:
return constructBoxTSNullKeyword(pos + 8, ast);
case 6:
return constructBoxTSNumberKeyword(pos + 8, ast);
case 7:
return constructBoxTSObjectKeyword(pos + 8, ast);
case 8:
return constructBoxTSStringKeyword(pos + 8, ast);
case 9:
return constructBoxTSSymbolKeyword(pos + 8, ast);
case 10:
return constructBoxTSThisType(pos + 8, ast);
case 11:
return constructBoxTSUndefinedKeyword(pos + 8, ast);
case 12:
return constructBoxTSUnknownKeyword(pos + 8, ast);
case 13:
return constructBoxTSVoidKeyword(pos + 8, ast);
case 14:
return constructBoxTSArrayType(pos + 8, ast);
case 15:
return constructBoxTSConditionalType(pos + 8, ast);
case 16:
return constructBoxTSConstructorType(pos + 8, ast);
case 17:
return constructBoxTSFunctionType(pos + 8, ast);
case 18:
return constructBoxTSImportType(pos + 8, ast);
case 19:
return constructBoxTSIndexedAccessType(pos + 8, ast);
case 20:
return constructBoxTSInferType(pos + 8, ast);
case 21:
return constructBoxTSIntersectionType(pos + 8, ast);
case 22:
return constructBoxTSLiteralType(pos + 8, ast);
case 23:
return constructBoxTSMappedType(pos + 8, ast);
case 24:
return constructBoxTSNamedTupleMember(pos + 8, ast);
case 26:
return constructBoxTSTemplateLiteralType(pos + 8, ast);
case 27:
return constructBoxTSTupleType(pos + 8, ast);
case 28:
return constructBoxTSTypeLiteral(pos + 8, ast);
case 29:
return constructBoxTSTypeOperator(pos + 8, ast);
case 30:
return constructBoxTSTypePredicate(pos + 8, ast);
case 31:
return constructBoxTSTypeQuery(pos + 8, ast);
case 32:
return constructBoxTSTypeReference(pos + 8, ast);
case 33:
return constructBoxTSUnionType(pos + 8, ast);
case 34:
return constructBoxTSParenthesizedType(pos + 8, ast);
case 35:
return constructBoxJSDocNullableType(pos + 8, ast);
case 36:
return constructBoxJSDocNonNullableType(pos + 8, ast);
case 37:
return constructBoxJSDocUnknownType(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSType`);
}
}
class TSConditionalType {
type = 'TSConditionalType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get checkType() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
get extendsType() {
const internal = this.#internal;
return constructTSType(internal.pos + 24, internal.ast);
}
get trueType() {
const internal = this.#internal;
return constructTSType(internal.pos + 40, internal.ast);
}
get falseType() {
const internal = this.#internal;
return constructTSType(internal.pos + 56, internal.ast);
}
toJSON() {
return {
type: 'TSConditionalType',
start: this.start,
end: this.end,
checkType: this.checkType,
extendsType: this.extendsType,
trueType: this.trueType,
falseType: this.falseType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSConditionalType.prototype);
}
}
const DebugTSConditionalType = class TSConditionalType {};
class TSUnionType {
type = 'TSUnionType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $types: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get types() {
const internal = this.#internal,
cached = internal.$types;
if (cached !== void 0) return cached;
return internal.$types = constructVecTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSUnionType',
start: this.start,
end: this.end,
types: this.types,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSUnionType.prototype);
}
}
const DebugTSUnionType = class TSUnionType {};
class TSIntersectionType {
type = 'TSIntersectionType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $types: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get types() {
const internal = this.#internal,
cached = internal.$types;
if (cached !== void 0) return cached;
return internal.$types = constructVecTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSIntersectionType',
start: this.start,
end: this.end,
types: this.types,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSIntersectionType.prototype);
}
}
const DebugTSIntersectionType = class TSIntersectionType {};
class TSParenthesizedType {
type = 'TSParenthesizedType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSParenthesizedType',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSParenthesizedType.prototype);
}
}
const DebugTSParenthesizedType = class TSParenthesizedType {};
class TSTypeOperator {
type = 'TSTypeOperator';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructTSTypeOperatorOperator(internal.pos + 24, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSTypeOperator',
start: this.start,
end: this.end,
operator: this.operator,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeOperator.prototype);
}
}
const DebugTSTypeOperator = class TSTypeOperator {};
function constructTSTypeOperatorOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'keyof';
case 1:
return 'unique';
case 2:
return 'readonly';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypeOperatorOperator`);
}
}
class TSArrayType {
type = 'TSArrayType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get elementType() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSArrayType',
start: this.start,
end: this.end,
elementType: this.elementType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSArrayType.prototype);
}
}
const DebugTSArrayType = class TSArrayType {};
class TSIndexedAccessType {
type = 'TSIndexedAccessType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get objectType() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
get indexType() {
const internal = this.#internal;
return constructTSType(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSIndexedAccessType',
start: this.start,
end: this.end,
objectType: this.objectType,
indexType: this.indexType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSIndexedAccessType.prototype);
}
}
const DebugTSIndexedAccessType = class TSIndexedAccessType {};
class TSTupleType {
type = 'TSTupleType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $elementTypes: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get elementTypes() {
const internal = this.#internal,
cached = internal.$elementTypes;
if (cached !== void 0) return cached;
return internal.$elementTypes = constructVecTSTupleElement(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSTupleType',
start: this.start,
end: this.end,
elementTypes: this.elementTypes,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTupleType.prototype);
}
}
const DebugTSTupleType = class TSTupleType {};
class TSNamedTupleMember {
type = 'TSNamedTupleMember';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get label() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 8, internal.ast);
}
get elementType() {
const internal = this.#internal;
return constructTSTupleElement(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 48, internal.ast);
}
toJSON() {
return {
type: 'TSNamedTupleMember',
start: this.start,
end: this.end,
label: this.label,
elementType: this.elementType,
optional: this.optional,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSNamedTupleMember.prototype);
}
}
const DebugTSNamedTupleMember = class TSNamedTupleMember {};
class TSOptionalType {
type = 'TSOptionalType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSOptionalType',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSOptionalType.prototype);
}
}
const DebugTSOptionalType = class TSOptionalType {};
class TSRestType {
type = 'TSRestType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSRestType',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSRestType.prototype);
}
}
const DebugTSRestType = class TSRestType {};
function constructTSTupleElement(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxTSAnyKeyword(pos + 8, ast);
case 1:
return constructBoxTSBigIntKeyword(pos + 8, ast);
case 2:
return constructBoxTSBooleanKeyword(pos + 8, ast);
case 3:
return constructBoxTSIntrinsicKeyword(pos + 8, ast);
case 4:
return constructBoxTSNeverKeyword(pos + 8, ast);
case 5:
return constructBoxTSNullKeyword(pos + 8, ast);
case 6:
return constructBoxTSNumberKeyword(pos + 8, ast);
case 7:
return constructBoxTSObjectKeyword(pos + 8, ast);
case 8:
return constructBoxTSStringKeyword(pos + 8, ast);
case 9:
return constructBoxTSSymbolKeyword(pos + 8, ast);
case 10:
return constructBoxTSThisType(pos + 8, ast);
case 11:
return constructBoxTSUndefinedKeyword(pos + 8, ast);
case 12:
return constructBoxTSUnknownKeyword(pos + 8, ast);
case 13:
return constructBoxTSVoidKeyword(pos + 8, ast);
case 14:
return constructBoxTSArrayType(pos + 8, ast);
case 15:
return constructBoxTSConditionalType(pos + 8, ast);
case 16:
return constructBoxTSConstructorType(pos + 8, ast);
case 17:
return constructBoxTSFunctionType(pos + 8, ast);
case 18:
return constructBoxTSImportType(pos + 8, ast);
case 19:
return constructBoxTSIndexedAccessType(pos + 8, ast);
case 20:
return constructBoxTSInferType(pos + 8, ast);
case 21:
return constructBoxTSIntersectionType(pos + 8, ast);
case 22:
return constructBoxTSLiteralType(pos + 8, ast);
case 23:
return constructBoxTSMappedType(pos + 8, ast);
case 24:
return constructBoxTSNamedTupleMember(pos + 8, ast);
case 26:
return constructBoxTSTemplateLiteralType(pos + 8, ast);
case 27:
return constructBoxTSTupleType(pos + 8, ast);
case 28:
return constructBoxTSTypeLiteral(pos + 8, ast);
case 29:
return constructBoxTSTypeOperator(pos + 8, ast);
case 30:
return constructBoxTSTypePredicate(pos + 8, ast);
case 31:
return constructBoxTSTypeQuery(pos + 8, ast);
case 32:
return constructBoxTSTypeReference(pos + 8, ast);
case 33:
return constructBoxTSUnionType(pos + 8, ast);
case 34:
return constructBoxTSParenthesizedType(pos + 8, ast);
case 35:
return constructBoxJSDocNullableType(pos + 8, ast);
case 36:
return constructBoxJSDocNonNullableType(pos + 8, ast);
case 37:
return constructBoxJSDocUnknownType(pos + 8, ast);
case 64:
return constructBoxTSOptionalType(pos + 8, ast);
case 65:
return constructBoxTSRestType(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTupleElement`);
}
}
class TSAnyKeyword {
type = 'TSAnyKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSAnyKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSAnyKeyword.prototype);
}
}
const DebugTSAnyKeyword = class TSAnyKeyword {};
class TSStringKeyword {
type = 'TSStringKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSStringKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSStringKeyword.prototype);
}
}
const DebugTSStringKeyword = class TSStringKeyword {};
class TSBooleanKeyword {
type = 'TSBooleanKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSBooleanKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSBooleanKeyword.prototype);
}
}
const DebugTSBooleanKeyword = class TSBooleanKeyword {};
class TSNumberKeyword {
type = 'TSNumberKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSNumberKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSNumberKeyword.prototype);
}
}
const DebugTSNumberKeyword = class TSNumberKeyword {};
class TSNeverKeyword {
type = 'TSNeverKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSNeverKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSNeverKeyword.prototype);
}
}
const DebugTSNeverKeyword = class TSNeverKeyword {};
class TSIntrinsicKeyword {
type = 'TSIntrinsicKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSIntrinsicKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSIntrinsicKeyword.prototype);
}
}
const DebugTSIntrinsicKeyword = class TSIntrinsicKeyword {};
class TSUnknownKeyword {
type = 'TSUnknownKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSUnknownKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSUnknownKeyword.prototype);
}
}
const DebugTSUnknownKeyword = class TSUnknownKeyword {};
class TSNullKeyword {
type = 'TSNullKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSNullKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSNullKeyword.prototype);
}
}
const DebugTSNullKeyword = class TSNullKeyword {};
class TSUndefinedKeyword {
type = 'TSUndefinedKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSUndefinedKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSUndefinedKeyword.prototype);
}
}
const DebugTSUndefinedKeyword = class TSUndefinedKeyword {};
class TSVoidKeyword {
type = 'TSVoidKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSVoidKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSVoidKeyword.prototype);
}
}
const DebugTSVoidKeyword = class TSVoidKeyword {};
class TSSymbolKeyword {
type = 'TSSymbolKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSSymbolKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSSymbolKeyword.prototype);
}
}
const DebugTSSymbolKeyword = class TSSymbolKeyword {};
class TSThisType {
type = 'TSThisType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSThisType',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSThisType.prototype);
}
}
const DebugTSThisType = class TSThisType {};
class TSObjectKeyword {
type = 'TSObjectKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSObjectKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSObjectKeyword.prototype);
}
}
const DebugTSObjectKeyword = class TSObjectKeyword {};
class TSBigIntKeyword {
type = 'TSBigIntKeyword';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'TSBigIntKeyword',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSBigIntKeyword.prototype);
}
}
const DebugTSBigIntKeyword = class TSBigIntKeyword {};
class TSTypeReference {
type = 'TSTypeReference';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeName() {
const internal = this.#internal;
return constructTSTypeName(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSTypeReference',
start: this.start,
end: this.end,
typeName: this.typeName,
typeArguments: this.typeArguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeReference.prototype);
}
}
const DebugTSTypeReference = class TSTypeReference {};
function constructTSTypeName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSQualifiedName(pos + 8, ast);
case 2:
return constructBoxThisExpression(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypeName`);
}
}
class TSQualifiedName {
type = 'TSQualifiedName';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructTSTypeName(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSQualifiedName',
start: this.start,
end: this.end,
left: this.left,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSQualifiedName.prototype);
}
}
const DebugTSQualifiedName = class TSQualifiedName {};
class TSTypeParameterInstantiation {
type = 'TSTypeParameterInstantiation';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $params: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get params() {
const internal = this.#internal,
cached = internal.$params;
if (cached !== void 0) return cached;
return internal.$params = constructVecTSType(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSTypeParameterInstantiation',
start: this.start,
end: this.end,
params: this.params,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeParameterInstantiation.prototype);
}
}
const DebugTSTypeParameterInstantiation = class TSTypeParameterInstantiation {};
class TSTypeParameter {
type = 'TSTypeParameter';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
get constraint() {
const internal = this.#internal;
return constructOptionTSType(internal.pos + 40, internal.ast);
}
get default() {
const internal = this.#internal;
return constructOptionTSType(internal.pos + 56, internal.ast);
}
get in() {
const internal = this.#internal;
return constructBool(internal.pos + 72, internal.ast);
}
get out() {
const internal = this.#internal;
return constructBool(internal.pos + 73, internal.ast);
}
get const() {
const internal = this.#internal;
return constructBool(internal.pos + 74, internal.ast);
}
toJSON() {
return {
type: 'TSTypeParameter',
start: this.start,
end: this.end,
name: this.name,
constraint: this.constraint,
default: this.default,
in: this.in,
out: this.out,
const: this.const,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeParameter.prototype);
}
}
const DebugTSTypeParameter = class TSTypeParameter {};
class TSTypeParameterDeclaration {
type = 'TSTypeParameterDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $params: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get params() {
const internal = this.#internal,
cached = internal.$params;
if (cached !== void 0) return cached;
return internal.$params = constructVecTSTypeParameter(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSTypeParameterDeclaration',
start: this.start,
end: this.end,
params: this.params,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeParameterDeclaration.prototype);
}
}
const DebugTSTypeParameterDeclaration = class TSTypeParameterDeclaration {};
class TSTypeAliasDeclaration {
type = 'TSTypeAliasDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 40, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 48, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 68, internal.ast);
}
toJSON() {
return {
type: 'TSTypeAliasDeclaration',
start: this.start,
end: this.end,
id: this.id,
typeParameters: this.typeParameters,
typeAnnotation: this.typeAnnotation,
declare: this.declare,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeAliasDeclaration.prototype);
}
}
const DebugTSTypeAliasDeclaration = class TSTypeAliasDeclaration {};
function constructTSAccessibility(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'private';
case 1:
return 'protected';
case 2:
return 'public';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSAccessibility`);
}
}
class TSClassImplements {
type = 'TSClassImplements';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructTSTypeName(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSClassImplements',
start: this.start,
end: this.end,
expression: this.expression,
typeArguments: this.typeArguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSClassImplements.prototype);
}
}
const DebugTSClassImplements = class TSClassImplements {};
class TSInterfaceDeclaration {
type = 'TSInterfaceDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $extends: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 40, internal.ast);
}
get extends() {
const internal = this.#internal,
cached = internal.$extends;
if (cached !== void 0) return cached;
return internal.$extends = constructVecTSInterfaceHeritage(internal.pos + 48, internal.ast);
}
get body() {
const internal = this.#internal;
return constructBoxTSInterfaceBody(internal.pos + 72, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 84, internal.ast);
}
toJSON() {
return {
type: 'TSInterfaceDeclaration',
start: this.start,
end: this.end,
id: this.id,
typeParameters: this.typeParameters,
extends: this.extends,
body: this.body,
declare: this.declare,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSInterfaceDeclaration.prototype);
}
}
const DebugTSInterfaceDeclaration = class TSInterfaceDeclaration {};
class TSInterfaceBody {
type = 'TSInterfaceBody';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecTSSignature(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSInterfaceBody',
start: this.start,
end: this.end,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSInterfaceBody.prototype);
}
}
const DebugTSInterfaceBody = class TSInterfaceBody {};
class TSPropertySignature {
type = 'TSPropertySignature';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 33, internal.ast);
}
get readonly() {
const internal = this.#internal;
return constructBool(internal.pos + 34, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 8, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSPropertySignature',
start: this.start,
end: this.end,
computed: this.computed,
optional: this.optional,
readonly: this.readonly,
key: this.key,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSPropertySignature.prototype);
}
}
const DebugTSPropertySignature = class TSPropertySignature {};
function constructTSSignature(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxTSIndexSignature(pos + 8, ast);
case 1:
return constructBoxTSPropertySignature(pos + 8, ast);
case 2:
return constructBoxTSCallSignatureDeclaration(pos + 8, ast);
case 3:
return constructBoxTSConstructSignatureDeclaration(pos + 8, ast);
case 4:
return constructBoxTSMethodSignature(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSSignature`);
}
}
class TSIndexSignature {
type = 'TSIndexSignature';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $parameters: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get parameters() {
const internal = this.#internal,
cached = internal.$parameters;
if (cached !== void 0) return cached;
return internal.$parameters = constructVecTSIndexSignatureName(internal.pos + 8, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructBoxTSTypeAnnotation(internal.pos + 32, internal.ast);
}
get readonly() {
const internal = this.#internal;
return constructBool(internal.pos + 40, internal.ast);
}
get static() {
const internal = this.#internal;
return constructBool(internal.pos + 41, internal.ast);
}
toJSON() {
return {
type: 'TSIndexSignature',
start: this.start,
end: this.end,
parameters: this.parameters,
typeAnnotation: this.typeAnnotation,
readonly: this.readonly,
static: this.static,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSIndexSignature.prototype);
}
}
const DebugTSIndexSignature = class TSIndexSignature {};
class TSCallSignatureDeclaration {
type = 'TSCallSignatureDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 8, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 24, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'TSCallSignatureDeclaration',
start: this.start,
end: this.end,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSCallSignatureDeclaration.prototype);
}
}
const DebugTSCallSignatureDeclaration = class TSCallSignatureDeclaration {};
function constructTSMethodSignatureKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'method';
case 1:
return 'get';
case 2:
return 'set';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSMethodSignatureKind`);
}
}
class TSMethodSignature {
type = 'TSMethodSignature';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 8, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 60, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 61, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructTSMethodSignatureKind(internal.pos + 62, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 24, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 40, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 48, internal.ast);
}
toJSON() {
return {
type: 'TSMethodSignature',
start: this.start,
end: this.end,
key: this.key,
computed: this.computed,
optional: this.optional,
kind: this.kind,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSMethodSignature.prototype);
}
}
const DebugTSMethodSignature = class TSMethodSignature {};
class TSConstructSignatureDeclaration {
type = 'TSConstructSignatureDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 8, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 16, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSConstructSignatureDeclaration',
start: this.start,
end: this.end,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSConstructSignatureDeclaration.prototype);
}
}
const DebugTSConstructSignatureDeclaration = class TSConstructSignatureDeclaration {};
class TSIndexSignatureName {
type = 'TSIndexSignatureName';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $name: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get name() {
const internal = this.#internal,
cached = internal.$name;
if (cached !== void 0) return cached;
return internal.$name = constructStr(internal.pos + 8, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructBoxTSTypeAnnotation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSIndexSignatureName',
start: this.start,
end: this.end,
name: this.name,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSIndexSignatureName.prototype);
}
}
const DebugTSIndexSignatureName = class TSIndexSignatureName {};
class TSInterfaceHeritage {
type = 'TSInterfaceHeritage';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSInterfaceHeritage',
start: this.start,
end: this.end,
expression: this.expression,
typeArguments: this.typeArguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSInterfaceHeritage.prototype);
}
}
const DebugTSInterfaceHeritage = class TSInterfaceHeritage {};
class TSTypePredicate {
type = 'TSTypePredicate';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get parameterName() {
const internal = this.#internal;
return constructTSTypePredicateName(internal.pos + 8, internal.ast);
}
get asserts() {
const internal = this.#internal;
return constructBool(internal.pos + 32, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionBoxTSTypeAnnotation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSTypePredicate',
start: this.start,
end: this.end,
parameterName: this.parameterName,
asserts: this.asserts,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypePredicate.prototype);
}
}
const DebugTSTypePredicate = class TSTypePredicate {};
function constructTSTypePredicateName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierName(pos + 8, ast);
case 1:
return new TSThisType(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypePredicateName`);
}
}
class TSModuleDeclaration {
type = 'TSModuleDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return constructTSModuleDeclarationName(internal.pos + 8, internal.ast);
}
get body() {
const internal = this.#internal;
return constructOptionTSModuleDeclarationBody(internal.pos + 64, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructTSModuleDeclarationKind(internal.pos + 84, internal.ast);
}
get declare() {
const internal = this.#internal;
return constructBool(internal.pos + 85, internal.ast);
}
toJSON() {
return {
type: 'TSModuleDeclaration',
start: this.start,
end: this.end,
id: this.id,
body: this.body,
kind: this.kind,
declare: this.declare,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSModuleDeclaration.prototype);
}
}
const DebugTSModuleDeclaration = class TSModuleDeclaration {};
function constructTSModuleDeclarationKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'global';
case 1:
return 'module';
case 2:
return 'namespace';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleDeclarationKind`);
}
}
function constructTSModuleDeclarationName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new BindingIdentifier(pos + 8, ast);
case 1:
return new StringLiteral(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleDeclarationName`);
}
}
function constructTSModuleDeclarationBody(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxTSModuleDeclaration(pos + 8, ast);
case 1:
return constructBoxTSModuleBlock(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleDeclarationBody`);
}
}
class TSModuleBlock {
type = 'TSModuleBlock';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $body: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return internal.$body = constructVecStatement(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'TSModuleBlock',
start: this.start,
end: this.end,
body: this.body,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSModuleBlock.prototype);
}
}
const DebugTSModuleBlock = class TSModuleBlock {};
class TSTypeLiteral {
type = 'TSTypeLiteral';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $members: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get members() {
const internal = this.#internal,
cached = internal.$members;
if (cached !== void 0) return cached;
return internal.$members = constructVecTSSignature(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSTypeLiteral',
start: this.start,
end: this.end,
members: this.members,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeLiteral.prototype);
}
}
const DebugTSTypeLiteral = class TSTypeLiteral {};
class TSInferType {
type = 'TSInferType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeParameter() {
const internal = this.#internal;
return constructBoxTSTypeParameter(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSInferType',
start: this.start,
end: this.end,
typeParameter: this.typeParameter,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSInferType.prototype);
}
}
const DebugTSInferType = class TSInferType {};
class TSTypeQuery {
type = 'TSTypeQuery';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get exprName() {
const internal = this.#internal;
return constructTSTypeQueryExprName(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSTypeQuery',
start: this.start,
end: this.end,
exprName: this.exprName,
typeArguments: this.typeArguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeQuery.prototype);
}
}
const DebugTSTypeQuery = class TSTypeQuery {};
function constructTSTypeQueryExprName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSQualifiedName(pos + 8, ast);
case 2:
return constructBoxThisExpression(pos + 8, ast);
case 3:
return constructBoxTSImportType(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSTypeQueryExprName`);
}
}
class TSImportType {
type = 'TSImportType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
get options() {
const internal = this.#internal;
return constructOptionBoxObjectExpression(internal.pos + 24, internal.ast);
}
get qualifier() {
const internal = this.#internal;
return constructOptionTSImportTypeQualifier(internal.pos + 32, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 48, internal.ast);
}
toJSON() {
return {
type: 'TSImportType',
start: this.start,
end: this.end,
argument: this.argument,
options: this.options,
qualifier: this.qualifier,
typeArguments: this.typeArguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSImportType.prototype);
}
}
const DebugTSImportType = class TSImportType {};
function constructTSImportTypeQualifier(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierName(pos + 8, ast);
case 1:
return constructBoxTSImportTypeQualifiedName(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSImportTypeQualifier`);
}
}
class TSImportTypeQualifiedName {
type = 'TSImportTypeQualifiedName';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructTSImportTypeQualifier(internal.pos + 8, internal.ast);
}
get right() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSImportTypeQualifiedName',
start: this.start,
end: this.end,
left: this.left,
right: this.right,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSImportTypeQualifiedName.prototype);
}
}
const DebugTSImportTypeQualifiedName = class TSImportTypeQualifiedName {};
class TSFunctionType {
type = 'TSFunctionType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 8, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 24, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructBoxTSTypeAnnotation(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'TSFunctionType',
start: this.start,
end: this.end,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSFunctionType.prototype);
}
}
const DebugTSFunctionType = class TSFunctionType {};
class TSConstructorType {
type = 'TSConstructorType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get abstract() {
const internal = this.#internal;
return constructBool(internal.pos + 32, internal.ast);
}
get typeParameters() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterDeclaration(internal.pos + 8, internal.ast);
}
get params() {
const internal = this.#internal;
return constructBoxFormalParameters(internal.pos + 16, internal.ast);
}
get returnType() {
const internal = this.#internal;
return constructBoxTSTypeAnnotation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSConstructorType',
start: this.start,
end: this.end,
abstract: this.abstract,
typeParameters: this.typeParameters,
params: this.params,
returnType: this.returnType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSConstructorType.prototype);
}
}
const DebugTSConstructorType = class TSConstructorType {};
class TSMappedType {
type = 'TSMappedType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get nameType() {
const internal = this.#internal;
return constructOptionTSType(internal.pos + 16, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructOptionTSType(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructOptionTSMappedTypeModifierOperator(internal.pos + 52, internal.ast);
}
get readonly() {
const internal = this.#internal;
return constructOptionTSMappedTypeModifierOperator(internal.pos + 53, internal.ast);
}
toJSON() {
return {
type: 'TSMappedType',
start: this.start,
end: this.end,
nameType: this.nameType,
typeAnnotation: this.typeAnnotation,
optional: this.optional,
readonly: this.readonly,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSMappedType.prototype);
}
}
const DebugTSMappedType = class TSMappedType {};
function constructTSMappedTypeModifierOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'true';
case 1:
return '+';
case 2:
return '-';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSMappedTypeModifierOperator`);
}
}
class TSTemplateLiteralType {
type = 'TSTemplateLiteralType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $quasis: void 0, $types: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get quasis() {
const internal = this.#internal,
cached = internal.$quasis;
if (cached !== void 0) return cached;
return internal.$quasis = constructVecTemplateElement(internal.pos + 8, internal.ast);
}
get types() {
const internal = this.#internal,
cached = internal.$types;
if (cached !== void 0) return cached;
return internal.$types = constructVecTSType(internal.pos + 32, internal.ast);
}
toJSON() {
return {
type: 'TSTemplateLiteralType',
start: this.start,
end: this.end,
quasis: this.quasis,
types: this.types,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTemplateLiteralType.prototype);
}
}
const DebugTSTemplateLiteralType = class TSTemplateLiteralType {};
class TSAsExpression {
type = 'TSAsExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSAsExpression',
start: this.start,
end: this.end,
expression: this.expression,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSAsExpression.prototype);
}
}
const DebugTSAsExpression = class TSAsExpression {};
class TSSatisfiesExpression {
type = 'TSSatisfiesExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSSatisfiesExpression',
start: this.start,
end: this.end,
expression: this.expression,
typeAnnotation: this.typeAnnotation,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSSatisfiesExpression.prototype);
}
}
const DebugTSSatisfiesExpression = class TSSatisfiesExpression {};
class TSTypeAssertion {
type = 'TSTypeAssertion';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSTypeAssertion',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSTypeAssertion.prototype);
}
}
const DebugTSTypeAssertion = class TSTypeAssertion {};
class TSImportEqualsDeclaration {
type = 'TSImportEqualsDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return new BindingIdentifier(internal.pos + 8, internal.ast);
}
get moduleReference() {
const internal = this.#internal;
return constructTSModuleReference(internal.pos + 40, internal.ast);
}
get importKind() {
const internal = this.#internal;
return constructImportOrExportKind(internal.pos + 56, internal.ast);
}
toJSON() {
return {
type: 'TSImportEqualsDeclaration',
start: this.start,
end: this.end,
id: this.id,
moduleReference: this.moduleReference,
importKind: this.importKind,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSImportEqualsDeclaration.prototype);
}
}
const DebugTSImportEqualsDeclaration = class TSImportEqualsDeclaration {};
function constructTSModuleReference(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return constructBoxIdentifierReference(pos + 8, ast);
case 1:
return constructBoxTSQualifiedName(pos + 8, ast);
case 2:
return constructBoxThisExpression(pos + 8, ast);
case 3:
return constructBoxTSExternalModuleReference(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for TSModuleReference`);
}
}
class TSExternalModuleReference {
type = 'TSExternalModuleReference';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return new StringLiteral(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSExternalModuleReference',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSExternalModuleReference.prototype);
}
}
const DebugTSExternalModuleReference = class TSExternalModuleReference {};
class TSNonNullExpression {
type = 'TSNonNullExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSNonNullExpression',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSNonNullExpression.prototype);
}
}
const DebugTSNonNullExpression = class TSNonNullExpression {};
class Decorator {
type = 'Decorator';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'Decorator',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugDecorator.prototype);
}
}
const DebugDecorator = class Decorator {};
class TSExportAssignment {
type = 'TSExportAssignment';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSExportAssignment',
start: this.start,
end: this.end,
expression: this.expression,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSExportAssignment.prototype);
}
}
const DebugTSExportAssignment = class TSExportAssignment {};
class TSNamespaceExportDeclaration {
type = 'TSNamespaceExportDeclaration';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get id() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 8, internal.ast);
}
toJSON() {
return {
type: 'TSNamespaceExportDeclaration',
start: this.start,
end: this.end,
id: this.id,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSNamespaceExportDeclaration.prototype);
}
}
const DebugTSNamespaceExportDeclaration = class TSNamespaceExportDeclaration {};
class TSInstantiationExpression {
type = 'TSInstantiationExpression';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get expression() {
const internal = this.#internal;
return constructExpression(internal.pos + 8, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructBoxTSTypeParameterInstantiation(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'TSInstantiationExpression',
start: this.start,
end: this.end,
expression: this.expression,
typeArguments: this.typeArguments,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugTSInstantiationExpression.prototype);
}
}
const DebugTSInstantiationExpression = class TSInstantiationExpression {};
function constructImportOrExportKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'value';
case 1:
return 'type';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportOrExportKind`);
}
}
class JSDocNullableType {
type = 'JSDocNullableType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
get postfix() {
const internal = this.#internal;
return constructBool(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'JSDocNullableType',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
postfix: this.postfix,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSDocNullableType.prototype);
}
}
const DebugJSDocNullableType = class JSDocNullableType {};
class JSDocNonNullableType {
type = 'JSDocNonNullableType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get typeAnnotation() {
const internal = this.#internal;
return constructTSType(internal.pos + 8, internal.ast);
}
get postfix() {
const internal = this.#internal;
return constructBool(internal.pos + 24, internal.ast);
}
toJSON() {
return {
type: 'JSDocNonNullableType',
start: this.start,
end: this.end,
typeAnnotation: this.typeAnnotation,
postfix: this.postfix,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSDocNonNullableType.prototype);
}
}
const DebugJSDocNonNullableType = class JSDocNonNullableType {};
class JSDocUnknownType {
type = 'JSDocUnknownType';
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
type: 'JSDocUnknownType',
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugJSDocUnknownType.prototype);
}
}
const DebugJSDocUnknownType = class JSDocUnknownType {};
function constructCommentKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'Line';
case 1:
return 'Block';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for CommentKind`);
}
}
class Comment {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get type() {
const internal = this.#internal;
return constructCommentKind(internal.pos + 12, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
type: this.type,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugComment.prototype);
}
}
const DebugComment = class Comment {};
class NameSpan {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $value: void 0 };
nodes.set(pos, this);
}
get value() {
const internal = this.#internal,
cached = internal.$value;
if (cached !== void 0) return cached;
return internal.$value = constructStr(internal.pos + 8, internal.ast);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
value: this.value,
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugNameSpan.prototype);
}
}
const DebugNameSpan = class NameSpan {};
class ImportEntry {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get importName() {
const internal = this.#internal;
return constructImportImportName(internal.pos + 32, internal.ast);
}
get localName() {
const internal = this.#internal;
return new NameSpan(internal.pos + 64, internal.ast);
}
get isType() {
const internal = this.#internal;
return constructBool(internal.pos + 88, internal.ast);
}
toJSON() {
return {
importName: this.importName,
localName: this.localName,
isType: this.isType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugImportEntry.prototype);
}
}
const DebugImportEntry = class ImportEntry {};
function constructImportImportName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new NameSpan(pos + 8, ast);
case 1:
return 'namespaceObject';
case 2:
return new Span(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ImportImportName`);
}
}
class ExportEntry {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get moduleRequest() {
const internal = this.#internal;
return constructOptionNameSpan(internal.pos + 16, internal.ast);
}
get importName() {
const internal = this.#internal;
return constructExportImportName(internal.pos + 40, internal.ast);
}
get exportName() {
const internal = this.#internal;
return constructExportExportName(internal.pos + 72, internal.ast);
}
get localName() {
const internal = this.#internal;
return constructExportLocalName(internal.pos + 104, internal.ast);
}
get isType() {
const internal = this.#internal;
return constructBool(internal.pos + 136, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
moduleRequest: this.moduleRequest,
importName: this.importName,
exportName: this.exportName,
localName: this.localName,
isType: this.isType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugExportEntry.prototype);
}
}
const DebugExportEntry = class ExportEntry {};
function constructExportImportName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new NameSpan(pos + 8, ast);
case 1:
return 'all';
case 2:
return 'allButDefault';
case 3:
return 'null';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ExportImportName`);
}
}
function constructExportExportName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new NameSpan(pos + 8, ast);
case 1:
return new Span(pos + 8, ast);
case 2:
return 'null';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ExportExportName`);
}
}
function constructExportLocalName(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return new NameSpan(pos + 8, ast);
case 1:
return new NameSpan(pos + 8, ast);
case 2:
return 'null';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ExportLocalName`);
}
}
class DynamicImport {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get moduleRequest() {
const internal = this.#internal;
return new Span(internal.pos + 8, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
moduleRequest: this.moduleRequest,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugDynamicImport.prototype);
}
}
const DebugDynamicImport = class DynamicImport {};
function constructAssignmentOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return '=';
case 1:
return '+=';
case 2:
return '-=';
case 3:
return '*=';
case 4:
return '/=';
case 5:
return '%=';
case 6:
return '**=';
case 7:
return '<<=';
case 8:
return '>>=';
case 9:
return '>>>=';
case 10:
return '|=';
case 11:
return '^=';
case 12:
return '&=';
case 13:
return '||=';
case 14:
return '&&=';
case 15:
return '??=';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for AssignmentOperator`);
}
}
function constructBinaryOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return '==';
case 1:
return '!=';
case 2:
return '===';
case 3:
return '!==';
case 4:
return '<';
case 5:
return '<=';
case 6:
return '>';
case 7:
return '>=';
case 8:
return '+';
case 9:
return '-';
case 10:
return '*';
case 11:
return '/';
case 12:
return '%';
case 13:
return '**';
case 14:
return '<<';
case 15:
return '>>';
case 16:
return '>>>';
case 17:
return '|';
case 18:
return '^';
case 19:
return '&';
case 20:
return 'in';
case 21:
return 'instanceof';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for BinaryOperator`);
}
}
function constructLogicalOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return '||';
case 1:
return '&&';
case 2:
return '??';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for LogicalOperator`);
}
}
function constructUnaryOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return '+';
case 1:
return '-';
case 2:
return '!';
case 3:
return '~';
case 4:
return 'typeof';
case 5:
return 'void';
case 6:
return 'delete';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for UnaryOperator`);
}
}
function constructUpdateOperator(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return '++';
case 1:
return '--';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for UpdateOperator`);
}
}
class Span {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSpan.prototype);
}
}
const DebugSpan = class Span {};
class SourceType {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast };
nodes.set(pos, this);
}
get sourceType() {
const internal = this.#internal;
return constructModuleKind(internal.pos + 1, internal.ast);
}
toJSON() {
return {
sourceType: this.sourceType,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugSourceType.prototype);
}
}
const DebugSourceType = class SourceType {};
function constructModuleKind(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'script';
case 1:
return 'module';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ModuleKind`);
}
}
class RawTransferData {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
// `pos` would be same as one of fields, so add offset to ensure unique cache key
const cached = nodes.get(pos + 1);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $comments: void 0, $errors: void 0 };
nodes.set(pos + 1, this);
}
get program() {
const internal = this.#internal;
return new Program(internal.pos, internal.ast);
}
get comments() {
const internal = this.#internal,
cached = internal.$comments;
if (cached !== void 0) return cached;
return internal.$comments = constructVecComment(internal.pos + 128, internal.ast);
}
get module() {
const internal = this.#internal;
return new EcmaScriptModule(internal.pos + 152, internal.ast);
}
get errors() {
const internal = this.#internal,
cached = internal.$errors;
if (cached !== void 0) return cached;
return internal.$errors = constructVecError(internal.pos + 256, internal.ast);
}
toJSON() {
return {
program: this.program,
comments: this.comments,
module: this.module,
errors: this.errors,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugRawTransferData.prototype);
}
}
const DebugRawTransferData = class RawTransferData {};
class Error {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $message: void 0, $labels: void 0, $helpMessage: void 0, $codeframe: void 0 };
nodes.set(pos, this);
}
get severity() {
const internal = this.#internal;
return constructErrorSeverity(internal.pos + 72, internal.ast);
}
get message() {
const internal = this.#internal,
cached = internal.$message;
if (cached !== void 0) return cached;
return internal.$message = constructStr(internal.pos, internal.ast);
}
get labels() {
const internal = this.#internal,
cached = internal.$labels;
if (cached !== void 0) return cached;
return internal.$labels = constructVecErrorLabel(internal.pos + 16, internal.ast);
}
get helpMessage() {
const internal = this.#internal,
cached = internal.$helpMessage;
if (cached !== void 0) return cached;
return internal.$helpMessage = constructOptionStr(internal.pos + 40, internal.ast);
}
get codeframe() {
const internal = this.#internal,
cached = internal.$codeframe;
if (cached !== void 0) return cached;
return internal.$codeframe = constructStr(internal.pos + 56, internal.ast);
}
toJSON() {
return {
severity: this.severity,
message: this.message,
labels: this.labels,
helpMessage: this.helpMessage,
codeframe: this.codeframe,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugError.prototype);
}
}
const DebugError = class Error {};
function constructErrorSeverity(pos, ast) {
switch (ast.buffer[pos]) {
case 0:
return 'Error';
case 1:
return 'Warning';
case 2:
return 'Advice';
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ErrorSeverity`);
}
}
class ErrorLabel {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $message: void 0 };
nodes.set(pos, this);
}
get message() {
const internal = this.#internal,
cached = internal.$message;
if (cached !== void 0) return cached;
return internal.$message = constructOptionStr(internal.pos + 8, internal.ast);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
toJSON() {
return {
message: this.message,
start: this.start,
end: this.end,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugErrorLabel.prototype);
}
}
const DebugErrorLabel = class ErrorLabel {};
class EcmaScriptModule {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = {
pos,
ast,
$staticImports: void 0,
$staticExports: void 0,
$dynamicImports: void 0,
$importMetas: void 0,
};
nodes.set(pos, this);
}
get hasModuleSyntax() {
const internal = this.#internal;
return constructBool(internal.pos + 96, internal.ast);
}
get staticImports() {
const internal = this.#internal,
cached = internal.$staticImports;
if (cached !== void 0) return cached;
return internal.$staticImports = constructVecStaticImport(internal.pos, internal.ast);
}
get staticExports() {
const internal = this.#internal,
cached = internal.$staticExports;
if (cached !== void 0) return cached;
return internal.$staticExports = constructVecStaticExport(internal.pos + 24, internal.ast);
}
get dynamicImports() {
const internal = this.#internal,
cached = internal.$dynamicImports;
if (cached !== void 0) return cached;
return internal.$dynamicImports = constructVecDynamicImport(internal.pos + 48, internal.ast);
}
get importMetas() {
const internal = this.#internal,
cached = internal.$importMetas;
if (cached !== void 0) return cached;
return internal.$importMetas = constructVecSpan(internal.pos + 72, internal.ast);
}
toJSON() {
return {
hasModuleSyntax: this.hasModuleSyntax,
staticImports: this.staticImports,
staticExports: this.staticExports,
dynamicImports: this.dynamicImports,
importMetas: this.importMetas,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugEcmaScriptModule.prototype);
}
}
const DebugEcmaScriptModule = class EcmaScriptModule {};
class StaticImport {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $entries: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get moduleRequest() {
const internal = this.#internal;
return new NameSpan(internal.pos + 8, internal.ast);
}
get entries() {
const internal = this.#internal,
cached = internal.$entries;
if (cached !== void 0) return cached;
return internal.$entries = constructVecImportEntry(internal.pos + 32, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
moduleRequest: this.moduleRequest,
entries: this.entries,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugStaticImport.prototype);
}
}
const DebugStaticImport = class StaticImport {};
class StaticExport {
#internal;
constructor(pos, ast) {
if (ast?.token !== TOKEN) constructorError();
const { nodes } = ast;
const cached = nodes.get(pos);
if (cached !== void 0) return cached;
this.#internal = { pos, ast, $entries: void 0 };
nodes.set(pos, this);
}
get start() {
const internal = this.#internal;
return constructU32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructU32(internal.pos + 4, internal.ast);
}
get entries() {
const internal = this.#internal,
cached = internal.$entries;
if (cached !== void 0) return cached;
return internal.$entries = constructVecExportEntry(internal.pos + 8, internal.ast);
}
toJSON() {
return {
start: this.start,
end: this.end,
entries: this.entries,
};
}
[inspectSymbol]() {
return Object.setPrototypeOf(this.toJSON(), DebugStaticExport.prototype);
}
}
const DebugStaticExport = class StaticExport {};
function constructU32(pos, ast) {
return ast.buffer.uint32[pos >> 2];
}
function constructU8(pos, ast) {
return ast.buffer[pos];
}
function constructStr(pos, ast) {
const pos32 = pos >> 2,
{ buffer } = ast,
{ uint32 } = buffer,
len = uint32[pos32 + 2];
if (len === 0) return '';
pos = uint32[pos32];
if (ast.sourceIsAscii && pos < ast.sourceByteLen) return ast.sourceText.substr(pos, len);
// Longer strings use `TextDecoder`
// TODO: Find best switch-over point
const end = pos + len;
if (len > 50) return decodeStr(buffer.subarray(pos, end));
// Shorter strings decode by hand to avoid native call
let out = '',
c;
do {
c = buffer[pos++];
if (c < 0x80) {
out += fromCodePoint(c);
} else {
out += decodeStr(buffer.subarray(pos - 1, end));
break;
}
} while (pos < end);
return out;
}
function constructVecComment(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructComment,
ast,
);
}
function constructComment(pos, ast) {
return new Comment(pos, ast);
}
function constructOptionHashbang(pos, ast) {
if (ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0) return null;
return new Hashbang(pos, ast);
}
function constructVecDirective(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
72,
constructDirective,
ast,
);
}
function constructDirective(pos, ast) {
return new Directive(pos, ast);
}
function constructVecStatement(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructStatement,
ast,
);
}
function constructBoxBooleanLiteral(pos, ast) {
return new BooleanLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxNullLiteral(pos, ast) {
return new NullLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxNumericLiteral(pos, ast) {
return new NumericLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxBigIntLiteral(pos, ast) {
return new BigIntLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxRegExpLiteral(pos, ast) {
return new RegExpLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxStringLiteral(pos, ast) {
return new StringLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTemplateLiteral(pos, ast) {
return new TemplateLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxIdentifierReference(pos, ast) {
return new IdentifierReference(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxMetaProperty(pos, ast) {
return new MetaProperty(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxSuper(pos, ast) {
return new Super(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxArrayExpression(pos, ast) {
return new ArrayExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxArrowFunctionExpression(pos, ast) {
return new ArrowFunctionExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxAssignmentExpression(pos, ast) {
return new AssignmentExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxAwaitExpression(pos, ast) {
return new AwaitExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxBinaryExpression(pos, ast) {
return new BinaryExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxCallExpression(pos, ast) {
return new CallExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxChainExpression(pos, ast) {
return new ChainExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxClass(pos, ast) {
return new Class(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxConditionalExpression(pos, ast) {
return new ConditionalExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxFunction(pos, ast) {
return new Function(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxImportExpression(pos, ast) {
return new ImportExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxLogicalExpression(pos, ast) {
return new LogicalExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxNewExpression(pos, ast) {
return new NewExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxObjectExpression(pos, ast) {
return new ObjectExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxParenthesizedExpression(pos, ast) {
return new ParenthesizedExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxSequenceExpression(pos, ast) {
return new SequenceExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTaggedTemplateExpression(pos, ast) {
return new TaggedTemplateExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxThisExpression(pos, ast) {
return new ThisExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxUnaryExpression(pos, ast) {
return new UnaryExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxUpdateExpression(pos, ast) {
return new UpdateExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxYieldExpression(pos, ast) {
return new YieldExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxPrivateInExpression(pos, ast) {
return new PrivateInExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXElement(pos, ast) {
return new JSXElement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXFragment(pos, ast) {
return new JSXFragment(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSAsExpression(pos, ast) {
return new TSAsExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSSatisfiesExpression(pos, ast) {
return new TSSatisfiesExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeAssertion(pos, ast) {
return new TSTypeAssertion(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSNonNullExpression(pos, ast) {
return new TSNonNullExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSInstantiationExpression(pos, ast) {
return new TSInstantiationExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxV8IntrinsicExpression(pos, ast) {
return new V8IntrinsicExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecArrayExpressionElement(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructArrayExpressionElement,
ast,
);
}
function constructBoxSpreadElement(pos, ast) {
return new SpreadElement(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecObjectPropertyKind(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructObjectPropertyKind,
ast,
);
}
function constructBoxObjectProperty(pos, ast) {
return new ObjectProperty(ast.buffer.uint32[pos >> 2], ast);
}
function constructBool(pos, ast) {
return ast.buffer[pos] === 1;
}
function constructBoxIdentifierName(pos, ast) {
return new IdentifierName(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxPrivateIdentifier(pos, ast) {
return new PrivateIdentifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecTemplateElement(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
48,
constructTemplateElement,
ast,
);
}
function constructTemplateElement(pos, ast) {
return new TemplateElement(pos, ast);
}
function constructVecExpression(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructExpression,
ast,
);
}
function constructBoxTSTypeParameterInstantiation(pos, ast) {
return new TSTypeParameterInstantiation(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxTSTypeParameterInstantiation(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxTSTypeParameterInstantiation(pos, ast);
}
function constructOptionStr(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructStr(pos, ast);
}
function constructBoxComputedMemberExpression(pos, ast) {
return new ComputedMemberExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxStaticMemberExpression(pos, ast) {
return new StaticMemberExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxPrivateFieldExpression(pos, ast) {
return new PrivateFieldExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecArgument(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructArgument,
ast,
);
}
function constructBoxArrayAssignmentTarget(pos, ast) {
return new ArrayAssignmentTarget(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxObjectAssignmentTarget(pos, ast) {
return new ObjectAssignmentTarget(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionAssignmentTargetMaybeDefault(pos, ast) {
if (ast.buffer[pos] === 51) return null;
return constructAssignmentTargetMaybeDefault(pos, ast);
}
function constructVecOptionAssignmentTargetMaybeDefault(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructOptionAssignmentTargetMaybeDefault,
ast,
);
}
function constructBoxAssignmentTargetRest(pos, ast) {
return new AssignmentTargetRest(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxAssignmentTargetRest(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxAssignmentTargetRest(pos, ast);
}
function constructVecAssignmentTargetProperty(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructAssignmentTargetProperty,
ast,
);
}
function constructBoxAssignmentTargetWithDefault(pos, ast) {
return new AssignmentTargetWithDefault(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxAssignmentTargetPropertyIdentifier(pos, ast) {
return new AssignmentTargetPropertyIdentifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxAssignmentTargetPropertyProperty(pos, ast) {
return new AssignmentTargetPropertyProperty(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionExpression(pos, ast) {
if (ast.buffer[pos] === 51) return null;
return constructExpression(pos, ast);
}
function constructBoxBlockStatement(pos, ast) {
return new BlockStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxBreakStatement(pos, ast) {
return new BreakStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxContinueStatement(pos, ast) {
return new ContinueStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxDebuggerStatement(pos, ast) {
return new DebuggerStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxDoWhileStatement(pos, ast) {
return new DoWhileStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxEmptyStatement(pos, ast) {
return new EmptyStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxExpressionStatement(pos, ast) {
return new ExpressionStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxForInStatement(pos, ast) {
return new ForInStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxForOfStatement(pos, ast) {
return new ForOfStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxForStatement(pos, ast) {
return new ForStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxIfStatement(pos, ast) {
return new IfStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxLabeledStatement(pos, ast) {
return new LabeledStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxReturnStatement(pos, ast) {
return new ReturnStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxSwitchStatement(pos, ast) {
return new SwitchStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxThrowStatement(pos, ast) {
return new ThrowStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTryStatement(pos, ast) {
return new TryStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxWhileStatement(pos, ast) {
return new WhileStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxWithStatement(pos, ast) {
return new WithStatement(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxVariableDeclaration(pos, ast) {
return new VariableDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeAliasDeclaration(pos, ast) {
return new TSTypeAliasDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSInterfaceDeclaration(pos, ast) {
return new TSInterfaceDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSEnumDeclaration(pos, ast) {
return new TSEnumDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSModuleDeclaration(pos, ast) {
return new TSModuleDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSImportEqualsDeclaration(pos, ast) {
return new TSImportEqualsDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecVariableDeclarator(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
64,
constructVariableDeclarator,
ast,
);
}
function constructVariableDeclarator(pos, ast) {
return new VariableDeclarator(pos, ast);
}
function constructOptionStatement(pos, ast) {
if (ast.buffer[pos] === 70) return null;
return constructStatement(pos, ast);
}
function constructOptionForStatementInit(pos, ast) {
if (ast.buffer[pos] === 65) return null;
return constructForStatementInit(pos, ast);
}
function constructOptionLabelIdentifier(pos, ast) {
if (ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0) return null;
return new LabelIdentifier(pos, ast);
}
function constructVecSwitchCase(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
48,
constructSwitchCase,
ast,
);
}
function constructSwitchCase(pos, ast) {
return new SwitchCase(pos, ast);
}
function constructBoxCatchClause(pos, ast) {
return new CatchClause(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxCatchClause(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxCatchClause(pos, ast);
}
function constructOptionBoxBlockStatement(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxBlockStatement(pos, ast);
}
function constructOptionCatchParameter(pos, ast) {
if (ast.buffer[pos + 32] === 2) return null;
return new CatchParameter(pos, ast);
}
function constructBoxTSTypeAnnotation(pos, ast) {
return new TSTypeAnnotation(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxTSTypeAnnotation(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxTSTypeAnnotation(pos, ast);
}
function constructBoxBindingIdentifier(pos, ast) {
return new BindingIdentifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxObjectPattern(pos, ast) {
return new ObjectPattern(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxArrayPattern(pos, ast) {
return new ArrayPattern(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxAssignmentPattern(pos, ast) {
return new AssignmentPattern(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecBindingProperty(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
64,
constructBindingProperty,
ast,
);
}
function constructBindingProperty(pos, ast) {
return new BindingProperty(pos, ast);
}
function constructBoxBindingRestElement(pos, ast) {
return new BindingRestElement(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxBindingRestElement(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxBindingRestElement(pos, ast);
}
function constructOptionBindingPattern(pos, ast) {
if (ast.buffer[pos + 24] === 2) return null;
return new BindingPattern(pos, ast);
}
function constructVecOptionBindingPattern(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
32,
constructOptionBindingPattern,
ast,
);
}
function constructOptionBindingIdentifier(pos, ast) {
if (ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0) return null;
return new BindingIdentifier(pos, ast);
}
function constructBoxTSTypeParameterDeclaration(pos, ast) {
return new TSTypeParameterDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxTSTypeParameterDeclaration(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxTSTypeParameterDeclaration(pos, ast);
}
function constructBoxTSThisParameter(pos, ast) {
return new TSThisParameter(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxTSThisParameter(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxTSThisParameter(pos, ast);
}
function constructBoxFormalParameters(pos, ast) {
return new FormalParameters(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxFunctionBody(pos, ast) {
return new FunctionBody(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxFunctionBody(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxFunctionBody(pos, ast);
}
function constructVecFormalParameter(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
72,
constructFormalParameter,
ast,
);
}
function constructFormalParameter(pos, ast) {
return new FormalParameter(pos, ast);
}
function constructVecDecorator(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
24,
constructDecorator,
ast,
);
}
function constructDecorator(pos, ast) {
return new Decorator(pos, ast);
}
function constructOptionTSAccessibility(pos, ast) {
if (ast.buffer[pos] === 3) return null;
return constructTSAccessibility(pos, ast);
}
function constructVecTSClassImplements(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
32,
constructTSClassImplements,
ast,
);
}
function constructTSClassImplements(pos, ast) {
return new TSClassImplements(pos, ast);
}
function constructBoxClassBody(pos, ast) {
return new ClassBody(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecClassElement(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructClassElement,
ast,
);
}
function constructBoxStaticBlock(pos, ast) {
return new StaticBlock(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxMethodDefinition(pos, ast) {
return new MethodDefinition(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxPropertyDefinition(pos, ast) {
return new PropertyDefinition(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxAccessorProperty(pos, ast) {
return new AccessorProperty(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSIndexSignature(pos, ast) {
return new TSIndexSignature(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxImportDeclaration(pos, ast) {
return new ImportDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxExportAllDeclaration(pos, ast) {
return new ExportAllDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxExportDefaultDeclaration(pos, ast) {
return new ExportDefaultDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxExportNamedDeclaration(pos, ast) {
return new ExportNamedDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSExportAssignment(pos, ast) {
return new TSExportAssignment(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSNamespaceExportDeclaration(pos, ast) {
return new TSNamespaceExportDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionImportPhase(pos, ast) {
if (ast.buffer[pos] === 2) return null;
return constructImportPhase(pos, ast);
}
function constructVecImportDeclarationSpecifier(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructImportDeclarationSpecifier,
ast,
);
}
function constructOptionVecImportDeclarationSpecifier(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructVecImportDeclarationSpecifier(pos, ast);
}
function constructBoxWithClause(pos, ast) {
return new WithClause(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxWithClause(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxWithClause(pos, ast);
}
function constructBoxImportSpecifier(pos, ast) {
return new ImportSpecifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxImportDefaultSpecifier(pos, ast) {
return new ImportDefaultSpecifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxImportNamespaceSpecifier(pos, ast) {
return new ImportNamespaceSpecifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecImportAttribute(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
112,
constructImportAttribute,
ast,
);
}
function constructImportAttribute(pos, ast) {
return new ImportAttribute(pos, ast);
}
function constructOptionDeclaration(pos, ast) {
if (ast.buffer[pos] === 31) return null;
return constructDeclaration(pos, ast);
}
function constructVecExportSpecifier(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
128,
constructExportSpecifier,
ast,
);
}
function constructExportSpecifier(pos, ast) {
return new ExportSpecifier(pos, ast);
}
function constructOptionStringLiteral(pos, ast) {
if (ast.buffer[pos + 40] === 2) return null;
return new StringLiteral(pos, ast);
}
function constructOptionModuleExportName(pos, ast) {
if (ast.buffer[pos] === 3) return null;
return constructModuleExportName(pos, ast);
}
function constructF64(pos, ast) {
return ast.buffer.float64[pos >> 3];
}
function constructBoxJSXOpeningElement(pos, ast) {
return new JSXOpeningElement(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecJSXChild(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructJSXChild,
ast,
);
}
function constructBoxJSXClosingElement(pos, ast) {
return new JSXClosingElement(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxJSXClosingElement(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxJSXClosingElement(pos, ast);
}
function constructVecJSXAttributeItem(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructJSXAttributeItem,
ast,
);
}
function constructBoxJSXIdentifier(pos, ast) {
return new JSXIdentifier(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXNamespacedName(pos, ast) {
return new JSXNamespacedName(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXMemberExpression(pos, ast) {
return new JSXMemberExpression(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXAttribute(pos, ast) {
return new JSXAttribute(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXSpreadAttribute(pos, ast) {
return new JSXSpreadAttribute(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionJSXAttributeValue(pos, ast) {
if (ast.buffer[pos] === 4) return null;
return constructJSXAttributeValue(pos, ast);
}
function constructBoxJSXExpressionContainer(pos, ast) {
return new JSXExpressionContainer(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXText(pos, ast) {
return new JSXText(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSXSpreadChild(pos, ast) {
return new JSXSpreadChild(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecTSEnumMember(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
40,
constructTSEnumMember,
ast,
);
}
function constructTSEnumMember(pos, ast) {
return new TSEnumMember(pos, ast);
}
function constructBoxTSAnyKeyword(pos, ast) {
return new TSAnyKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSBigIntKeyword(pos, ast) {
return new TSBigIntKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSBooleanKeyword(pos, ast) {
return new TSBooleanKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSIntrinsicKeyword(pos, ast) {
return new TSIntrinsicKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSNeverKeyword(pos, ast) {
return new TSNeverKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSNullKeyword(pos, ast) {
return new TSNullKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSNumberKeyword(pos, ast) {
return new TSNumberKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSObjectKeyword(pos, ast) {
return new TSObjectKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSStringKeyword(pos, ast) {
return new TSStringKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSSymbolKeyword(pos, ast) {
return new TSSymbolKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSUndefinedKeyword(pos, ast) {
return new TSUndefinedKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSUnknownKeyword(pos, ast) {
return new TSUnknownKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSVoidKeyword(pos, ast) {
return new TSVoidKeyword(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSArrayType(pos, ast) {
return new TSArrayType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSConditionalType(pos, ast) {
return new TSConditionalType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSConstructorType(pos, ast) {
return new TSConstructorType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSFunctionType(pos, ast) {
return new TSFunctionType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSImportType(pos, ast) {
return new TSImportType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSIndexedAccessType(pos, ast) {
return new TSIndexedAccessType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSInferType(pos, ast) {
return new TSInferType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSIntersectionType(pos, ast) {
return new TSIntersectionType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSLiteralType(pos, ast) {
return new TSLiteralType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSMappedType(pos, ast) {
return new TSMappedType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSNamedTupleMember(pos, ast) {
return new TSNamedTupleMember(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTemplateLiteralType(pos, ast) {
return new TSTemplateLiteralType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSThisType(pos, ast) {
return new TSThisType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTupleType(pos, ast) {
return new TSTupleType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeLiteral(pos, ast) {
return new TSTypeLiteral(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeOperator(pos, ast) {
return new TSTypeOperator(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypePredicate(pos, ast) {
return new TSTypePredicate(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeQuery(pos, ast) {
return new TSTypeQuery(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeReference(pos, ast) {
return new TSTypeReference(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSUnionType(pos, ast) {
return new TSUnionType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSParenthesizedType(pos, ast) {
return new TSParenthesizedType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSDocNullableType(pos, ast) {
return new JSDocNullableType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSDocNonNullableType(pos, ast) {
return new JSDocNonNullableType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxJSDocUnknownType(pos, ast) {
return new JSDocUnknownType(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecTSType(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructTSType,
ast,
);
}
function constructVecTSTupleElement(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructTSTupleElement,
ast,
);
}
function constructBoxTSOptionalType(pos, ast) {
return new TSOptionalType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSRestType(pos, ast) {
return new TSRestType(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSQualifiedName(pos, ast) {
return new TSQualifiedName(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionTSType(pos, ast) {
if (ast.buffer[pos] === 38) return null;
return constructTSType(pos, ast);
}
function constructVecTSTypeParameter(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
80,
constructTSTypeParameter,
ast,
);
}
function constructTSTypeParameter(pos, ast) {
return new TSTypeParameter(pos, ast);
}
function constructVecTSInterfaceHeritage(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
32,
constructTSInterfaceHeritage,
ast,
);
}
function constructTSInterfaceHeritage(pos, ast) {
return new TSInterfaceHeritage(pos, ast);
}
function constructBoxTSInterfaceBody(pos, ast) {
return new TSInterfaceBody(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecTSSignature(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructTSSignature,
ast,
);
}
function constructBoxTSPropertySignature(pos, ast) {
return new TSPropertySignature(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSCallSignatureDeclaration(pos, ast) {
return new TSCallSignatureDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSConstructSignatureDeclaration(pos, ast) {
return new TSConstructSignatureDeclaration(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSMethodSignature(pos, ast) {
return new TSMethodSignature(ast.buffer.uint32[pos >> 2], ast);
}
function constructVecTSIndexSignatureName(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
32,
constructTSIndexSignatureName,
ast,
);
}
function constructTSIndexSignatureName(pos, ast) {
return new TSIndexSignatureName(pos, ast);
}
function constructOptionTSModuleDeclarationBody(pos, ast) {
if (ast.buffer[pos] === 2) return null;
return constructTSModuleDeclarationBody(pos, ast);
}
function constructBoxTSModuleBlock(pos, ast) {
return new TSModuleBlock(ast.buffer.uint32[pos >> 2], ast);
}
function constructBoxTSTypeParameter(pos, ast) {
return new TSTypeParameter(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionBoxObjectExpression(pos, ast) {
if (ast.buffer.uint32[pos >> 2] === 0 && ast.buffer.uint32[(pos + 4) >> 2] === 0) return null;
return constructBoxObjectExpression(pos, ast);
}
function constructOptionTSImportTypeQualifier(pos, ast) {
if (ast.buffer[pos] === 2) return null;
return constructTSImportTypeQualifier(pos, ast);
}
function constructBoxTSImportTypeQualifiedName(pos, ast) {
return new TSImportTypeQualifiedName(ast.buffer.uint32[pos >> 2], ast);
}
function constructOptionTSMappedTypeModifierOperator(pos, ast) {
if (ast.buffer[pos] === 3) return null;
return constructTSMappedTypeModifierOperator(pos, ast);
}
function constructBoxTSExternalModuleReference(pos, ast) {
return new TSExternalModuleReference(ast.buffer.uint32[pos >> 2], ast);
}
function constructU64(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return uint32[pos32] + uint32[pos32 + 1] * 4294967296;
}
function constructOptionNameSpan(pos, ast) {
if (ast.buffer.uint32[(pos + 8) >> 2] === 0 && ast.buffer.uint32[(pos + 12) >> 2] === 0) return null;
return new NameSpan(pos, ast);
}
function constructOptionU64(pos, ast) {
if (ast.buffer[pos] === 0) return null;
return constructU64(pos + 8, ast);
}
function constructVecError(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
80,
constructError,
ast,
);
}
function constructError(pos, ast) {
return new Error(pos, ast);
}
function constructVecErrorLabel(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
24,
constructErrorLabel,
ast,
);
}
function constructErrorLabel(pos, ast) {
return new ErrorLabel(pos, ast);
}
function constructVecStaticImport(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
56,
constructStaticImport,
ast,
);
}
function constructStaticImport(pos, ast) {
return new StaticImport(pos, ast);
}
function constructVecStaticExport(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
32,
constructStaticExport,
ast,
);
}
function constructStaticExport(pos, ast) {
return new StaticExport(pos, ast);
}
function constructVecDynamicImport(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
16,
constructDynamicImport,
ast,
);
}
function constructDynamicImport(pos, ast) {
return new DynamicImport(pos, ast);
}
function constructVecSpan(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
8,
constructSpan,
ast,
);
}
function constructSpan(pos, ast) {
return new Span(pos, ast);
}
function constructVecImportEntry(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
96,
constructImportEntry,
ast,
);
}
function constructImportEntry(pos, ast) {
return new ImportEntry(pos, ast);
}
function constructVecExportEntry(pos, ast) {
const { uint32 } = ast.buffer,
pos32 = pos >> 2;
return new NodeArray(
uint32[pos32],
uint32[pos32 + 2],
144,
constructExportEntry,
ast,
);
}
function constructExportEntry(pos, ast) {
return new ExportEntry(pos, ast);
}
module.exports = {
Program,
IdentifierName,
IdentifierReference,
BindingIdentifier,
LabelIdentifier,
ThisExpression,
ArrayExpression,
Elision,
ObjectExpression,
ObjectProperty,
TemplateLiteral,
TaggedTemplateExpression,
TemplateElement,
TemplateElementValue,
ComputedMemberExpression,
StaticMemberExpression,
PrivateFieldExpression,
CallExpression,
NewExpression,
MetaProperty,
SpreadElement,
UpdateExpression,
UnaryExpression,
BinaryExpression,
PrivateInExpression,
LogicalExpression,
ConditionalExpression,
AssignmentExpression,
ArrayAssignmentTarget,
ObjectAssignmentTarget,
AssignmentTargetRest,
AssignmentTargetWithDefault,
AssignmentTargetPropertyIdentifier,
AssignmentTargetPropertyProperty,
SequenceExpression,
Super,
AwaitExpression,
ChainExpression,
ParenthesizedExpression,
Directive,
Hashbang,
BlockStatement,
VariableDeclaration,
VariableDeclarator,
EmptyStatement,
ExpressionStatement,
IfStatement,
DoWhileStatement,
WhileStatement,
ForStatement,
ForInStatement,
ForOfStatement,
ContinueStatement,
BreakStatement,
ReturnStatement,
WithStatement,
SwitchStatement,
SwitchCase,
LabeledStatement,
ThrowStatement,
TryStatement,
CatchClause,
CatchParameter,
DebuggerStatement,
BindingPattern,
AssignmentPattern,
ObjectPattern,
BindingProperty,
ArrayPattern,
BindingRestElement,
Function,
FormalParameters,
FormalParameter,
FunctionBody,
ArrowFunctionExpression,
YieldExpression,
Class,
ClassBody,
MethodDefinition,
PropertyDefinition,
PrivateIdentifier,
StaticBlock,
AccessorProperty,
ImportExpression,
ImportDeclaration,
ImportSpecifier,
ImportDefaultSpecifier,
ImportNamespaceSpecifier,
WithClause,
ImportAttribute,
ExportNamedDeclaration,
ExportDefaultDeclaration,
ExportAllDeclaration,
ExportSpecifier,
V8IntrinsicExpression,
BooleanLiteral,
NullLiteral,
NumericLiteral,
StringLiteral,
BigIntLiteral,
RegExpLiteral,
RegExp,
RegExpPattern,
RegExpFlags,
JSXElement,
JSXOpeningElement,
JSXClosingElement,
JSXFragment,
JSXOpeningFragment,
JSXClosingFragment,
JSXNamespacedName,
JSXMemberExpression,
JSXExpressionContainer,
JSXEmptyExpression,
JSXAttribute,
JSXSpreadAttribute,
JSXIdentifier,
JSXSpreadChild,
JSXText,
TSThisParameter,
TSEnumDeclaration,
TSEnumBody,
TSEnumMember,
TSTypeAnnotation,
TSLiteralType,
TSConditionalType,
TSUnionType,
TSIntersectionType,
TSParenthesizedType,
TSTypeOperator,
TSArrayType,
TSIndexedAccessType,
TSTupleType,
TSNamedTupleMember,
TSOptionalType,
TSRestType,
TSAnyKeyword,
TSStringKeyword,
TSBooleanKeyword,
TSNumberKeyword,
TSNeverKeyword,
TSIntrinsicKeyword,
TSUnknownKeyword,
TSNullKeyword,
TSUndefinedKeyword,
TSVoidKeyword,
TSSymbolKeyword,
TSThisType,
TSObjectKeyword,
TSBigIntKeyword,
TSTypeReference,
TSQualifiedName,
TSTypeParameterInstantiation,
TSTypeParameter,
TSTypeParameterDeclaration,
TSTypeAliasDeclaration,
TSClassImplements,
TSInterfaceDeclaration,
TSInterfaceBody,
TSPropertySignature,
TSIndexSignature,
TSCallSignatureDeclaration,
TSMethodSignature,
TSConstructSignatureDeclaration,
TSIndexSignatureName,
TSInterfaceHeritage,
TSTypePredicate,
TSModuleDeclaration,
TSModuleBlock,
TSTypeLiteral,
TSInferType,
TSTypeQuery,
TSImportType,
TSImportTypeQualifiedName,
TSFunctionType,
TSConstructorType,
TSMappedType,
TSTemplateLiteralType,
TSAsExpression,
TSSatisfiesExpression,
TSTypeAssertion,
TSImportEqualsDeclaration,
TSExternalModuleReference,
TSNonNullExpression,
Decorator,
TSExportAssignment,
TSNamespaceExportDeclaration,
TSInstantiationExpression,
JSDocNullableType,
JSDocNonNullableType,
JSDocUnknownType,
Comment,
NameSpan,
ImportEntry,
ExportEntry,
DynamicImport,
Span,
SourceType,
RawTransferData,
Error,
ErrorLabel,
EcmaScriptModule,
StaticImport,
StaticExport,
};