oxc-parser
Version:
Oxc Parser Node API
1,976 lines (1,653 loc) • 337 kB
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`.
import { constructorError, TOKEN } from "../../raw-transfer/lazy-common.js";
import { NodeArray } from "../../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");
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get sourceType() {
const internal = this.#internal;
return new SourceType(internal.pos + 136, internal.ast);
}
get hashbang() {
const internal = this.#internal;
return constructOptionHashbang(internal.pos + 56, internal.ast);
}
get body() {
const internal = this.#internal,
cached = internal.$body;
if (cached !== void 0) return cached;
return (internal.$body = constructVecStatement(internal.pos + 112, 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`);
}
}
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16,
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 constructBoxElision(pos + 8, ast);
default:
throw new Error(`Unexpected discriminant ${ast.buffer[pos]} for ArrayExpressionElement`);
}
}
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16, 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`);
}
}
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get kind() {
const internal = this.#internal;
return constructPropertyKind(internal.pos + 12, internal.ast);
}
get key() {
const internal = this.#internal;
return constructPropertyKey(internal.pos + 16, internal.ast);
}
get value() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, internal.ast);
}
get method() {
const internal = this.#internal;
return constructBool(internal.pos + 13, internal.ast);
}
get shorthand() {
const internal = this.#internal;
return constructBool(internal.pos + 14, internal.ast);
}
get computed() {
const internal = this.#internal;
return constructBool(internal.pos + 15, 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`);
}
}
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(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 + 16, internal.ast));
}
get expressions() {
const internal = this.#internal,
cached = internal.$expressions;
if (cached !== void 0) return cached;
return (internal.$expressions = constructVecExpression(internal.pos + 40, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get tag() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 32, internal.ast);
}
get quasi() {
const internal = this.#internal;
return new TemplateLiteral(internal.pos + 40, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get value() {
const internal = this.#internal;
return new TemplateElementValue(internal.pos + 16, internal.ast);
}
get tail() {
const internal = this.#internal;
return constructBool(internal.pos + 12, 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 {};
export 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`);
}
}
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get property() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 12, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get property() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 12, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get object() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get property() {
const internal = this.#internal;
return new PrivateIdentifier(internal.pos + 32, internal.ast);
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 12, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get callee() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 32, internal.ast);
}
get arguments() {
const internal = this.#internal,
cached = internal.$arguments;
if (cached !== void 0) return cached;
return (internal.$arguments = constructVecArgument(internal.pos + 40, internal.ast));
}
get optional() {
const internal = this.#internal;
return constructBool(internal.pos + 12, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get callee() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get typeArguments() {
const internal = this.#internal;
return constructOptionBoxTSTypeParameterInstantiation(internal.pos + 32, internal.ast);
}
get arguments() {
const internal = this.#internal,
cached = internal.$arguments;
if (cached !== void 0) return cached;
return (internal.$arguments = constructVecArgument(internal.pos + 40, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get meta() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 16, internal.ast);
}
get property() {
const internal = this.#internal;
return new IdentifierName(internal.pos + 48, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, 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`);
}
}
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructUpdateOperator(internal.pos + 12, internal.ast);
}
get prefix() {
const internal = this.#internal;
return constructBool(internal.pos + 13, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructSimpleAssignmentTarget(internal.pos + 16, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructUnaryOperator(internal.pos + 12, internal.ast);
}
get argument() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructBinaryOperator(internal.pos + 12, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return new PrivateIdentifier(internal.pos + 16, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 48, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get left() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructLogicalOperator(internal.pos + 12, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get test() {
const internal = this.#internal;
return constructExpression(internal.pos + 16, internal.ast);
}
get consequent() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, internal.ast);
}
get alternate() {
const internal = this.#internal;
return constructExpression(internal.pos + 48, 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 {};
export 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 constructI32(internal.pos, internal.ast);
}
get end() {
const internal = this.#internal;
return constructI32(internal.pos + 4, internal.ast);
}
get operator() {
const internal = this.#internal;
return constructAssignmentOperator(internal.pos + 12, internal.ast);
}
get left() {
const internal = this.#internal;
return constructAssignmentTarget(internal.pos + 16, internal.ast);
}
get right() {
const internal = this.#internal;
return constructExpression(internal.pos + 32, 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(