oxc-parser
Version:
Oxc Parser Node API
1,773 lines (1,694 loc) • 180 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.rs`.
let uint8,
int32,
float64,
sourceText,
sourceTextLatin,
sourceStartPos = 0,
firstNonAsciiPos = 0;
const { fromCharCode } = String,
{ utf8Slice, latin1Slice } = Buffer.prototype,
stringDecodeArrays = Array(65).fill(null);
for (let i = 0; i <= 64; i++) stringDecodeArrays[i] = Array(i).fill(0);
export function deserialize(buffer, sourceText, sourceStartPos, sourceByteLen) {
return deserializeWith(
buffer,
sourceText,
sourceStartPos,
sourceByteLen,
deserializeRawTransferData,
);
}
function deserializeWith(buffer, sourceTextInput, sourceStartPosInput, sourceByteLen, deserialize) {
uint8 = buffer;
int32 = buffer.int32;
float64 = buffer.float64;
sourceText = sourceTextInput;
sourceStartPos = sourceStartPosInput;
// Find first non-ASCII byte in source region.
// `sourceText.substr()` can be used for strings which are within source text and ending before
// this position, since byte offsets equal char offsets in the all-ASCII prefix.
// Also decode source text as Latin-1 (or reuse `sourceText` if it's all ASCII).
if (sourceText.length === sourceByteLen) {
firstNonAsciiPos = sourceStartPos + sourceByteLen;
sourceTextLatin = sourceText;
} else {
let i = sourceStartPos,
sourceEndPos = sourceStartPos + sourceByteLen;
for (; i < sourceEndPos && uint8[i] < 128; i++);
firstNonAsciiPos = i;
sourceTextLatin = latin1Slice.call(uint8, sourceStartPos, sourceEndPos);
}
let data = deserialize(int32[536870890]);
resetBuffer();
return data;
}
export function resetBuffer() {
// Clear buffer and source text strings to allow them to be garbage collected
uint8 = int32 = float64 = sourceText = sourceTextLatin = void 0;
}
function deserializeProgram(pos) {
let end = deserializeI32(pos + 4),
program = {
type: "Program",
body: null,
sourceType: deserializeModuleKind(pos + 137),
hashbang: null,
start: 0,
end,
range: [0, end],
};
program.hashbang = deserializeOptionHashbang(pos + 56);
let body = (program.body = deserializeVecDirective(pos + 88));
body.push(...deserializeVecStatement(pos + 112));
{
let start;
if (body.length > 0) {
let first = body[0];
start = first.start;
if (first.type === "ExportNamedDeclaration" || first.type === "ExportDefaultDeclaration") {
let { declaration } = first;
if (
declaration !== null &&
declaration.type === "ClassDeclaration" &&
declaration.decorators.length > 0
) {
let decoratorStart = declaration.decorators[0].start;
decoratorStart < start && (start = decoratorStart);
}
}
} else start = end;
program.start = program.range[0] = start;
}
return program;
}
function deserializeExpression(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxBooleanLiteral(pos + 8);
case 1:
return deserializeBoxNullLiteral(pos + 8);
case 2:
return deserializeBoxNumericLiteral(pos + 8);
case 3:
return deserializeBoxBigIntLiteral(pos + 8);
case 4:
return deserializeBoxRegExpLiteral(pos + 8);
case 5:
return deserializeBoxStringLiteral(pos + 8);
case 6:
return deserializeBoxTemplateLiteral(pos + 8);
case 7:
return deserializeBoxIdentifierReference(pos + 8);
case 8:
return deserializeBoxMetaProperty(pos + 8);
case 9:
return deserializeBoxSuper(pos + 8);
case 10:
return deserializeBoxArrayExpression(pos + 8);
case 11:
return deserializeBoxArrowFunctionExpression(pos + 8);
case 12:
return deserializeBoxAssignmentExpression(pos + 8);
case 13:
return deserializeBoxAwaitExpression(pos + 8);
case 14:
return deserializeBoxBinaryExpression(pos + 8);
case 15:
return deserializeBoxCallExpression(pos + 8);
case 16:
return deserializeBoxChainExpression(pos + 8);
case 17:
return deserializeBoxClass(pos + 8);
case 18:
return deserializeBoxConditionalExpression(pos + 8);
case 19:
return deserializeBoxFunction(pos + 8);
case 20:
return deserializeBoxImportExpression(pos + 8);
case 21:
return deserializeBoxLogicalExpression(pos + 8);
case 22:
return deserializeBoxNewExpression(pos + 8);
case 23:
return deserializeBoxObjectExpression(pos + 8);
case 24:
return deserializeBoxParenthesizedExpression(pos + 8);
case 25:
return deserializeBoxSequenceExpression(pos + 8);
case 26:
return deserializeBoxTaggedTemplateExpression(pos + 8);
case 27:
return deserializeBoxThisExpression(pos + 8);
case 28:
return deserializeBoxUnaryExpression(pos + 8);
case 29:
return deserializeBoxUpdateExpression(pos + 8);
case 30:
return deserializeBoxYieldExpression(pos + 8);
case 31:
return deserializeBoxPrivateInExpression(pos + 8);
case 32:
return deserializeBoxJSXElement(pos + 8);
case 33:
return deserializeBoxJSXFragment(pos + 8);
case 34:
return deserializeBoxTSAsExpression(pos + 8);
case 35:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 36:
return deserializeBoxTSTypeAssertion(pos + 8);
case 37:
return deserializeBoxTSNonNullExpression(pos + 8);
case 38:
return deserializeBoxTSInstantiationExpression(pos + 8);
case 39:
return deserializeBoxV8IntrinsicExpression(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for Expression`);
}
}
function deserializeIdentifierName(pos) {
let start, end;
return {
type: "Identifier",
decorators: [],
name: deserializeStr(pos + 16),
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeIdentifierReference(pos) {
let start, end;
return {
type: "Identifier",
decorators: [],
name: deserializeStr(pos + 16),
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeBindingIdentifier(pos) {
let start, end;
return {
type: "Identifier",
decorators: [],
name: deserializeStr(pos + 16),
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeLabelIdentifier(pos) {
let start, end;
return {
type: "Identifier",
decorators: [],
name: deserializeStr(pos + 16),
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeThisExpression(pos) {
let start, end;
return {
type: "ThisExpression",
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeArrayExpression(pos) {
let start,
end,
node = {
type: "ArrayExpression",
elements: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.elements = deserializeVecArrayExpressionElement(pos + 16);
return node;
}
function deserializeArrayExpressionElement(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxBooleanLiteral(pos + 8);
case 1:
return deserializeBoxNullLiteral(pos + 8);
case 2:
return deserializeBoxNumericLiteral(pos + 8);
case 3:
return deserializeBoxBigIntLiteral(pos + 8);
case 4:
return deserializeBoxRegExpLiteral(pos + 8);
case 5:
return deserializeBoxStringLiteral(pos + 8);
case 6:
return deserializeBoxTemplateLiteral(pos + 8);
case 7:
return deserializeBoxIdentifierReference(pos + 8);
case 8:
return deserializeBoxMetaProperty(pos + 8);
case 9:
return deserializeBoxSuper(pos + 8);
case 10:
return deserializeBoxArrayExpression(pos + 8);
case 11:
return deserializeBoxArrowFunctionExpression(pos + 8);
case 12:
return deserializeBoxAssignmentExpression(pos + 8);
case 13:
return deserializeBoxAwaitExpression(pos + 8);
case 14:
return deserializeBoxBinaryExpression(pos + 8);
case 15:
return deserializeBoxCallExpression(pos + 8);
case 16:
return deserializeBoxChainExpression(pos + 8);
case 17:
return deserializeBoxClass(pos + 8);
case 18:
return deserializeBoxConditionalExpression(pos + 8);
case 19:
return deserializeBoxFunction(pos + 8);
case 20:
return deserializeBoxImportExpression(pos + 8);
case 21:
return deserializeBoxLogicalExpression(pos + 8);
case 22:
return deserializeBoxNewExpression(pos + 8);
case 23:
return deserializeBoxObjectExpression(pos + 8);
case 24:
return deserializeBoxParenthesizedExpression(pos + 8);
case 25:
return deserializeBoxSequenceExpression(pos + 8);
case 26:
return deserializeBoxTaggedTemplateExpression(pos + 8);
case 27:
return deserializeBoxThisExpression(pos + 8);
case 28:
return deserializeBoxUnaryExpression(pos + 8);
case 29:
return deserializeBoxUpdateExpression(pos + 8);
case 30:
return deserializeBoxYieldExpression(pos + 8);
case 31:
return deserializeBoxPrivateInExpression(pos + 8);
case 32:
return deserializeBoxJSXElement(pos + 8);
case 33:
return deserializeBoxJSXFragment(pos + 8);
case 34:
return deserializeBoxTSAsExpression(pos + 8);
case 35:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 36:
return deserializeBoxTSTypeAssertion(pos + 8);
case 37:
return deserializeBoxTSNonNullExpression(pos + 8);
case 38:
return deserializeBoxTSInstantiationExpression(pos + 8);
case 39:
return deserializeBoxV8IntrinsicExpression(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
case 64:
return deserializeBoxSpreadElement(pos + 8);
case 65:
return deserializeBoxElision(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for ArrayExpressionElement`);
}
}
function deserializeElision(pos) {
return null;
}
function deserializeObjectExpression(pos) {
let start,
end,
node = {
type: "ObjectExpression",
properties: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.properties = deserializeVecObjectPropertyKind(pos + 16);
return node;
}
function deserializeObjectPropertyKind(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxObjectProperty(pos + 8);
case 1:
return deserializeBoxSpreadElement(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for ObjectPropertyKind`);
}
}
function deserializeObjectProperty(pos) {
let start,
end,
node = {
type: "Property",
kind: deserializePropertyKind(pos + 12),
key: null,
value: null,
method: deserializeBool(pos + 13),
shorthand: deserializeBool(pos + 14),
computed: deserializeBool(pos + 15),
optional: false,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.key = deserializePropertyKey(pos + 16);
node.value = deserializeExpression(pos + 32);
return node;
}
function deserializePropertyKey(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxBooleanLiteral(pos + 8);
case 1:
return deserializeBoxNullLiteral(pos + 8);
case 2:
return deserializeBoxNumericLiteral(pos + 8);
case 3:
return deserializeBoxBigIntLiteral(pos + 8);
case 4:
return deserializeBoxRegExpLiteral(pos + 8);
case 5:
return deserializeBoxStringLiteral(pos + 8);
case 6:
return deserializeBoxTemplateLiteral(pos + 8);
case 7:
return deserializeBoxIdentifierReference(pos + 8);
case 8:
return deserializeBoxMetaProperty(pos + 8);
case 9:
return deserializeBoxSuper(pos + 8);
case 10:
return deserializeBoxArrayExpression(pos + 8);
case 11:
return deserializeBoxArrowFunctionExpression(pos + 8);
case 12:
return deserializeBoxAssignmentExpression(pos + 8);
case 13:
return deserializeBoxAwaitExpression(pos + 8);
case 14:
return deserializeBoxBinaryExpression(pos + 8);
case 15:
return deserializeBoxCallExpression(pos + 8);
case 16:
return deserializeBoxChainExpression(pos + 8);
case 17:
return deserializeBoxClass(pos + 8);
case 18:
return deserializeBoxConditionalExpression(pos + 8);
case 19:
return deserializeBoxFunction(pos + 8);
case 20:
return deserializeBoxImportExpression(pos + 8);
case 21:
return deserializeBoxLogicalExpression(pos + 8);
case 22:
return deserializeBoxNewExpression(pos + 8);
case 23:
return deserializeBoxObjectExpression(pos + 8);
case 24:
return deserializeBoxParenthesizedExpression(pos + 8);
case 25:
return deserializeBoxSequenceExpression(pos + 8);
case 26:
return deserializeBoxTaggedTemplateExpression(pos + 8);
case 27:
return deserializeBoxThisExpression(pos + 8);
case 28:
return deserializeBoxUnaryExpression(pos + 8);
case 29:
return deserializeBoxUpdateExpression(pos + 8);
case 30:
return deserializeBoxYieldExpression(pos + 8);
case 31:
return deserializeBoxPrivateInExpression(pos + 8);
case 32:
return deserializeBoxJSXElement(pos + 8);
case 33:
return deserializeBoxJSXFragment(pos + 8);
case 34:
return deserializeBoxTSAsExpression(pos + 8);
case 35:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 36:
return deserializeBoxTSTypeAssertion(pos + 8);
case 37:
return deserializeBoxTSNonNullExpression(pos + 8);
case 38:
return deserializeBoxTSInstantiationExpression(pos + 8);
case 39:
return deserializeBoxV8IntrinsicExpression(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
case 64:
return deserializeBoxIdentifierName(pos + 8);
case 65:
return deserializeBoxPrivateIdentifier(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for PropertyKey`);
}
}
function deserializePropertyKind(pos) {
switch (uint8[pos]) {
case 0:
return "init";
case 1:
return "get";
case 2:
return "set";
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for PropertyKind`);
}
}
function deserializeTemplateLiteral(pos) {
let start,
end,
node = {
type: "TemplateLiteral",
quasis: null,
expressions: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.quasis = deserializeVecTemplateElement(pos + 16);
node.expressions = deserializeVecExpression(pos + 40);
return node;
}
function deserializeTaggedTemplateExpression(pos) {
let start,
end,
node = {
type: "TaggedTemplateExpression",
tag: null,
typeArguments: null,
quasi: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.tag = deserializeExpression(pos + 16);
node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 32);
node.quasi = deserializeTemplateLiteral(pos + 40);
return node;
}
function deserializeTemplateElement(pos) {
let tail = deserializeBool(pos + 12),
start = deserializeI32(pos) - 1,
end = deserializeI32(pos + 4) + 2 - tail,
value = deserializeTemplateElementValue(pos + 16);
value.cooked !== null &&
deserializeBool(pos + 13) &&
(value.cooked = value.cooked.replace(/\uFFFD(.{4})/g, (_, hex) =>
String.fromCodePoint(parseInt(hex, 16)),
));
return {
type: "TemplateElement",
value,
tail,
start,
end,
range: [start, end],
};
}
function deserializeTemplateElementValue(pos) {
return {
raw: deserializeStr(pos),
cooked: deserializeOptionStr(pos + 16),
};
}
function deserializeComputedMemberExpression(pos) {
let start,
end,
node = {
type: "MemberExpression",
object: null,
property: null,
optional: deserializeBool(pos + 12),
computed: true,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.object = deserializeExpression(pos + 16);
node.property = deserializeExpression(pos + 32);
return node;
}
function deserializeStaticMemberExpression(pos) {
let start,
end,
node = {
type: "MemberExpression",
object: null,
property: null,
optional: deserializeBool(pos + 12),
computed: false,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.object = deserializeExpression(pos + 16);
node.property = deserializeIdentifierName(pos + 32);
return node;
}
function deserializePrivateFieldExpression(pos) {
let start,
end,
node = {
type: "MemberExpression",
object: null,
property: null,
optional: deserializeBool(pos + 12),
computed: false,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.object = deserializeExpression(pos + 16);
node.property = deserializePrivateIdentifier(pos + 32);
return node;
}
function deserializeCallExpression(pos) {
let start,
end,
node = {
type: "CallExpression",
callee: null,
typeArguments: null,
arguments: null,
optional: deserializeBool(pos + 12),
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.callee = deserializeExpression(pos + 16);
node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 32);
node.arguments = deserializeVecArgument(pos + 40);
return node;
}
function deserializeNewExpression(pos) {
let start,
end,
node = {
type: "NewExpression",
callee: null,
typeArguments: null,
arguments: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.callee = deserializeExpression(pos + 16);
node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 32);
node.arguments = deserializeVecArgument(pos + 40);
return node;
}
function deserializeMetaProperty(pos) {
let start,
end,
node = {
type: "MetaProperty",
meta: null,
property: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.meta = deserializeIdentifierName(pos + 16);
node.property = deserializeIdentifierName(pos + 48);
return node;
}
function deserializeSpreadElement(pos) {
let start,
end,
node = {
type: "SpreadElement",
argument: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.argument = deserializeExpression(pos + 16);
return node;
}
function deserializeArgument(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxBooleanLiteral(pos + 8);
case 1:
return deserializeBoxNullLiteral(pos + 8);
case 2:
return deserializeBoxNumericLiteral(pos + 8);
case 3:
return deserializeBoxBigIntLiteral(pos + 8);
case 4:
return deserializeBoxRegExpLiteral(pos + 8);
case 5:
return deserializeBoxStringLiteral(pos + 8);
case 6:
return deserializeBoxTemplateLiteral(pos + 8);
case 7:
return deserializeBoxIdentifierReference(pos + 8);
case 8:
return deserializeBoxMetaProperty(pos + 8);
case 9:
return deserializeBoxSuper(pos + 8);
case 10:
return deserializeBoxArrayExpression(pos + 8);
case 11:
return deserializeBoxArrowFunctionExpression(pos + 8);
case 12:
return deserializeBoxAssignmentExpression(pos + 8);
case 13:
return deserializeBoxAwaitExpression(pos + 8);
case 14:
return deserializeBoxBinaryExpression(pos + 8);
case 15:
return deserializeBoxCallExpression(pos + 8);
case 16:
return deserializeBoxChainExpression(pos + 8);
case 17:
return deserializeBoxClass(pos + 8);
case 18:
return deserializeBoxConditionalExpression(pos + 8);
case 19:
return deserializeBoxFunction(pos + 8);
case 20:
return deserializeBoxImportExpression(pos + 8);
case 21:
return deserializeBoxLogicalExpression(pos + 8);
case 22:
return deserializeBoxNewExpression(pos + 8);
case 23:
return deserializeBoxObjectExpression(pos + 8);
case 24:
return deserializeBoxParenthesizedExpression(pos + 8);
case 25:
return deserializeBoxSequenceExpression(pos + 8);
case 26:
return deserializeBoxTaggedTemplateExpression(pos + 8);
case 27:
return deserializeBoxThisExpression(pos + 8);
case 28:
return deserializeBoxUnaryExpression(pos + 8);
case 29:
return deserializeBoxUpdateExpression(pos + 8);
case 30:
return deserializeBoxYieldExpression(pos + 8);
case 31:
return deserializeBoxPrivateInExpression(pos + 8);
case 32:
return deserializeBoxJSXElement(pos + 8);
case 33:
return deserializeBoxJSXFragment(pos + 8);
case 34:
return deserializeBoxTSAsExpression(pos + 8);
case 35:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 36:
return deserializeBoxTSTypeAssertion(pos + 8);
case 37:
return deserializeBoxTSNonNullExpression(pos + 8);
case 38:
return deserializeBoxTSInstantiationExpression(pos + 8);
case 39:
return deserializeBoxV8IntrinsicExpression(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
case 64:
return deserializeBoxSpreadElement(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for Argument`);
}
}
function deserializeUpdateExpression(pos) {
let start,
end,
node = {
type: "UpdateExpression",
operator: deserializeUpdateOperator(pos + 12),
prefix: deserializeBool(pos + 13),
argument: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.argument = deserializeSimpleAssignmentTarget(pos + 16);
return node;
}
function deserializeUnaryExpression(pos) {
let start,
end,
node = {
type: "UnaryExpression",
operator: deserializeUnaryOperator(pos + 12),
argument: null,
prefix: true,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.argument = deserializeExpression(pos + 16);
return node;
}
function deserializeBinaryExpression(pos) {
let start,
end,
node = {
type: "BinaryExpression",
left: null,
operator: deserializeBinaryOperator(pos + 12),
right: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializeExpression(pos + 16);
node.right = deserializeExpression(pos + 32);
return node;
}
function deserializePrivateInExpression(pos) {
let start,
end,
node = {
type: "BinaryExpression",
left: null,
operator: "in",
right: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializePrivateIdentifier(pos + 16);
node.right = deserializeExpression(pos + 48);
return node;
}
function deserializeLogicalExpression(pos) {
let start,
end,
node = {
type: "LogicalExpression",
left: null,
operator: deserializeLogicalOperator(pos + 12),
right: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializeExpression(pos + 16);
node.right = deserializeExpression(pos + 32);
return node;
}
function deserializeConditionalExpression(pos) {
let start,
end,
node = {
type: "ConditionalExpression",
test: null,
consequent: null,
alternate: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.test = deserializeExpression(pos + 16);
node.consequent = deserializeExpression(pos + 32);
node.alternate = deserializeExpression(pos + 48);
return node;
}
function deserializeAssignmentExpression(pos) {
let start,
end,
node = {
type: "AssignmentExpression",
operator: deserializeAssignmentOperator(pos + 12),
left: null,
right: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializeAssignmentTarget(pos + 16);
node.right = deserializeExpression(pos + 32);
return node;
}
function deserializeAssignmentTarget(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxIdentifierReference(pos + 8);
case 1:
return deserializeBoxTSAsExpression(pos + 8);
case 2:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 3:
return deserializeBoxTSNonNullExpression(pos + 8);
case 4:
return deserializeBoxTSTypeAssertion(pos + 8);
case 8:
return deserializeBoxArrayAssignmentTarget(pos + 8);
case 9:
return deserializeBoxObjectAssignmentTarget(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for AssignmentTarget`);
}
}
function deserializeSimpleAssignmentTarget(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxIdentifierReference(pos + 8);
case 1:
return deserializeBoxTSAsExpression(pos + 8);
case 2:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 3:
return deserializeBoxTSNonNullExpression(pos + 8);
case 4:
return deserializeBoxTSTypeAssertion(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for SimpleAssignmentTarget`);
}
}
function deserializeArrayAssignmentTarget(pos) {
let start,
end,
node = {
type: "ArrayPattern",
decorators: [],
elements: null,
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
},
elements = deserializeVecOptionAssignmentTargetMaybeDefault(pos + 16),
rest = deserializeOptionBoxAssignmentTargetRest(pos + 40);
rest !== null && elements.push(rest);
node.elements = elements;
return node;
}
function deserializeObjectAssignmentTarget(pos) {
let start,
end,
node = {
type: "ObjectPattern",
decorators: [],
properties: null,
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
},
properties = deserializeVecAssignmentTargetProperty(pos + 16),
rest = deserializeOptionBoxAssignmentTargetRest(pos + 40);
rest !== null && properties.push(rest);
node.properties = properties;
return node;
}
function deserializeAssignmentTargetRest(pos) {
let start,
end,
node = {
type: "RestElement",
decorators: [],
argument: null,
optional: false,
typeAnnotation: null,
value: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.argument = deserializeAssignmentTarget(pos + 16);
return node;
}
function deserializeAssignmentTargetMaybeDefault(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxIdentifierReference(pos + 8);
case 1:
return deserializeBoxTSAsExpression(pos + 8);
case 2:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 3:
return deserializeBoxTSNonNullExpression(pos + 8);
case 4:
return deserializeBoxTSTypeAssertion(pos + 8);
case 8:
return deserializeBoxArrayAssignmentTarget(pos + 8);
case 9:
return deserializeBoxObjectAssignmentTarget(pos + 8);
case 16:
return deserializeBoxAssignmentTargetWithDefault(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for AssignmentTargetMaybeDefault`);
}
}
function deserializeAssignmentTargetWithDefault(pos) {
let start,
end,
node = {
type: "AssignmentPattern",
decorators: [],
left: null,
right: null,
optional: false,
typeAnnotation: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializeAssignmentTarget(pos + 16);
node.right = deserializeExpression(pos + 32);
return node;
}
function deserializeAssignmentTargetProperty(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxAssignmentTargetPropertyIdentifier(pos + 8);
case 1:
return deserializeBoxAssignmentTargetPropertyProperty(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for AssignmentTargetProperty`);
}
}
function deserializeAssignmentTargetPropertyIdentifier(pos) {
let start = deserializeI32(pos),
end = deserializeI32(pos + 4),
node = {
type: "Property",
kind: "init",
key: null,
value: null,
method: false,
shorthand: true,
computed: false,
optional: false,
start,
end,
range: [start, end],
},
key = deserializeIdentifierReference(pos + 16),
keyStart,
keyEnd,
value = {
type: "Identifier",
decorators: [],
name: key.name,
optional: false,
typeAnnotation: null,
start: (keyStart = key.start),
end: (keyEnd = key.end),
range: [keyStart, keyEnd],
},
init = deserializeOptionExpression(pos + 48);
init !== null &&
(value = {
type: "AssignmentPattern",
decorators: [],
left: value,
right: init,
optional: false,
typeAnnotation: null,
start,
end,
range: [start, end],
});
node.key = key;
node.value = value;
return node;
}
function deserializeAssignmentTargetPropertyProperty(pos) {
let start,
end,
node = {
type: "Property",
kind: "init",
key: null,
value: null,
method: false,
shorthand: false,
computed: deserializeBool(pos + 12),
optional: false,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.key = deserializePropertyKey(pos + 16);
node.value = deserializeAssignmentTargetMaybeDefault(pos + 32);
return node;
}
function deserializeSequenceExpression(pos) {
let start,
end,
node = {
type: "SequenceExpression",
expressions: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.expressions = deserializeVecExpression(pos + 16);
return node;
}
function deserializeSuper(pos) {
let start, end;
return {
type: "Super",
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeAwaitExpression(pos) {
let start,
end,
node = {
type: "AwaitExpression",
argument: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.argument = deserializeExpression(pos + 16);
return node;
}
function deserializeChainExpression(pos) {
let start,
end,
node = {
type: "ChainExpression",
expression: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.expression = deserializeChainElement(pos + 16);
return node;
}
function deserializeChainElement(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxCallExpression(pos + 8);
case 1:
return deserializeBoxTSNonNullExpression(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for ChainElement`);
}
}
function deserializeParenthesizedExpression(pos) {
let node;
{
let start, end;
node = {
type: "ParenthesizedExpression",
expression: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.expression = deserializeExpression(pos + 16);
}
return node;
}
function deserializeStatement(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxBlockStatement(pos + 8);
case 1:
return deserializeBoxBreakStatement(pos + 8);
case 2:
return deserializeBoxContinueStatement(pos + 8);
case 3:
return deserializeBoxDebuggerStatement(pos + 8);
case 4:
return deserializeBoxDoWhileStatement(pos + 8);
case 5:
return deserializeBoxEmptyStatement(pos + 8);
case 6:
return deserializeBoxExpressionStatement(pos + 8);
case 7:
return deserializeBoxForInStatement(pos + 8);
case 8:
return deserializeBoxForOfStatement(pos + 8);
case 9:
return deserializeBoxForStatement(pos + 8);
case 10:
return deserializeBoxIfStatement(pos + 8);
case 11:
return deserializeBoxLabeledStatement(pos + 8);
case 12:
return deserializeBoxReturnStatement(pos + 8);
case 13:
return deserializeBoxSwitchStatement(pos + 8);
case 14:
return deserializeBoxThrowStatement(pos + 8);
case 15:
return deserializeBoxTryStatement(pos + 8);
case 16:
return deserializeBoxWhileStatement(pos + 8);
case 17:
return deserializeBoxWithStatement(pos + 8);
case 32:
return deserializeBoxVariableDeclaration(pos + 8);
case 33:
return deserializeBoxFunction(pos + 8);
case 34:
return deserializeBoxClass(pos + 8);
case 35:
return deserializeBoxTSTypeAliasDeclaration(pos + 8);
case 36:
return deserializeBoxTSInterfaceDeclaration(pos + 8);
case 37:
return deserializeBoxTSEnumDeclaration(pos + 8);
case 38:
return deserializeBoxTSModuleDeclaration(pos + 8);
case 39:
return deserializeBoxTSGlobalDeclaration(pos + 8);
case 40:
return deserializeBoxTSImportEqualsDeclaration(pos + 8);
case 64:
return deserializeBoxImportDeclaration(pos + 8);
case 65:
return deserializeBoxExportAllDeclaration(pos + 8);
case 66:
return deserializeBoxExportDefaultDeclaration(pos + 8);
case 67:
return deserializeBoxExportNamedDeclaration(pos + 8);
case 68:
return deserializeBoxTSExportAssignment(pos + 8);
case 69:
return deserializeBoxTSNamespaceExportDeclaration(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for Statement`);
}
}
function deserializeDirective(pos) {
let start,
end,
node = {
type: "ExpressionStatement",
expression: null,
directive: deserializeStr(pos + 64),
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.expression = deserializeStringLiteral(pos + 16);
return node;
}
function deserializeHashbang(pos) {
let start, end;
return {
type: "Hashbang",
value: deserializeStr(pos + 16),
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeBlockStatement(pos) {
let start,
end,
node = {
type: "BlockStatement",
body: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.body = deserializeVecStatement(pos + 16);
return node;
}
function deserializeDeclaration(pos) {
switch (uint8[pos]) {
case 32:
return deserializeBoxVariableDeclaration(pos + 8);
case 33:
return deserializeBoxFunction(pos + 8);
case 34:
return deserializeBoxClass(pos + 8);
case 35:
return deserializeBoxTSTypeAliasDeclaration(pos + 8);
case 36:
return deserializeBoxTSInterfaceDeclaration(pos + 8);
case 37:
return deserializeBoxTSEnumDeclaration(pos + 8);
case 38:
return deserializeBoxTSModuleDeclaration(pos + 8);
case 39:
return deserializeBoxTSGlobalDeclaration(pos + 8);
case 40:
return deserializeBoxTSImportEqualsDeclaration(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for Declaration`);
}
}
function deserializeVariableDeclaration(pos) {
let start,
end,
node = {
type: "VariableDeclaration",
kind: deserializeVariableDeclarationKind(pos + 12),
declarations: null,
declare: deserializeBool(pos + 13),
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.declarations = deserializeVecVariableDeclarator(pos + 16);
return node;
}
function deserializeVariableDeclarationKind(pos) {
switch (uint8[pos]) {
case 0:
return "var";
case 1:
return "let";
case 2:
return "const";
case 3:
return "using";
case 4:
return "await using";
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for VariableDeclarationKind`);
}
}
function deserializeVariableDeclarator(pos) {
let start,
end,
node = {
type: "VariableDeclarator",
id: null,
init: null,
definite: deserializeBool(pos + 13),
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
},
pattern = deserializeBindingPattern(pos + 16);
{
let typeAnnotation = deserializeOptionBoxTSTypeAnnotation(pos + 32);
if (typeAnnotation !== null) {
pattern.typeAnnotation = typeAnnotation;
pattern.range[1] = pattern.end = typeAnnotation.end;
}
}
node.id = pattern;
node.init = deserializeOptionExpression(pos + 40);
return node;
}
function deserializeEmptyStatement(pos) {
let start, end;
return {
type: "EmptyStatement",
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
}
function deserializeExpressionStatement(pos) {
let start,
end,
node = {
type: "ExpressionStatement",
expression: null,
directive: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.expression = deserializeExpression(pos + 16);
return node;
}
function deserializeIfStatement(pos) {
let start,
end,
node = {
type: "IfStatement",
test: null,
consequent: null,
alternate: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.test = deserializeExpression(pos + 16);
node.consequent = deserializeStatement(pos + 32);
node.alternate = deserializeOptionStatement(pos + 48);
return node;
}
function deserializeDoWhileStatement(pos) {
let start,
end,
node = {
type: "DoWhileStatement",
body: null,
test: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.body = deserializeStatement(pos + 16);
node.test = deserializeExpression(pos + 32);
return node;
}
function deserializeWhileStatement(pos) {
let start,
end,
node = {
type: "WhileStatement",
test: null,
body: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.test = deserializeExpression(pos + 16);
node.body = deserializeStatement(pos + 32);
return node;
}
function deserializeForStatement(pos) {
let start,
end,
node = {
type: "ForStatement",
init: null,
test: null,
update: null,
body: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.init = deserializeOptionForStatementInit(pos + 16);
node.test = deserializeOptionExpression(pos + 32);
node.update = deserializeOptionExpression(pos + 48);
node.body = deserializeStatement(pos + 64);
return node;
}
function deserializeForStatementInit(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxBooleanLiteral(pos + 8);
case 1:
return deserializeBoxNullLiteral(pos + 8);
case 2:
return deserializeBoxNumericLiteral(pos + 8);
case 3:
return deserializeBoxBigIntLiteral(pos + 8);
case 4:
return deserializeBoxRegExpLiteral(pos + 8);
case 5:
return deserializeBoxStringLiteral(pos + 8);
case 6:
return deserializeBoxTemplateLiteral(pos + 8);
case 7:
return deserializeBoxIdentifierReference(pos + 8);
case 8:
return deserializeBoxMetaProperty(pos + 8);
case 9:
return deserializeBoxSuper(pos + 8);
case 10:
return deserializeBoxArrayExpression(pos + 8);
case 11:
return deserializeBoxArrowFunctionExpression(pos + 8);
case 12:
return deserializeBoxAssignmentExpression(pos + 8);
case 13:
return deserializeBoxAwaitExpression(pos + 8);
case 14:
return deserializeBoxBinaryExpression(pos + 8);
case 15:
return deserializeBoxCallExpression(pos + 8);
case 16:
return deserializeBoxChainExpression(pos + 8);
case 17:
return deserializeBoxClass(pos + 8);
case 18:
return deserializeBoxConditionalExpression(pos + 8);
case 19:
return deserializeBoxFunction(pos + 8);
case 20:
return deserializeBoxImportExpression(pos + 8);
case 21:
return deserializeBoxLogicalExpression(pos + 8);
case 22:
return deserializeBoxNewExpression(pos + 8);
case 23:
return deserializeBoxObjectExpression(pos + 8);
case 24:
return deserializeBoxParenthesizedExpression(pos + 8);
case 25:
return deserializeBoxSequenceExpression(pos + 8);
case 26:
return deserializeBoxTaggedTemplateExpression(pos + 8);
case 27:
return deserializeBoxThisExpression(pos + 8);
case 28:
return deserializeBoxUnaryExpression(pos + 8);
case 29:
return deserializeBoxUpdateExpression(pos + 8);
case 30:
return deserializeBoxYieldExpression(pos + 8);
case 31:
return deserializeBoxPrivateInExpression(pos + 8);
case 32:
return deserializeBoxJSXElement(pos + 8);
case 33:
return deserializeBoxJSXFragment(pos + 8);
case 34:
return deserializeBoxTSAsExpression(pos + 8);
case 35:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 36:
return deserializeBoxTSTypeAssertion(pos + 8);
case 37:
return deserializeBoxTSNonNullExpression(pos + 8);
case 38:
return deserializeBoxTSInstantiationExpression(pos + 8);
case 39:
return deserializeBoxV8IntrinsicExpression(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
case 64:
return deserializeBoxVariableDeclaration(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for ForStatementInit`);
}
}
function deserializeForInStatement(pos) {
let start,
end,
node = {
type: "ForInStatement",
left: null,
right: null,
body: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializeForStatementLeft(pos + 16);
node.right = deserializeExpression(pos + 32);
node.body = deserializeStatement(pos + 48);
return node;
}
function deserializeForStatementLeft(pos) {
switch (uint8[pos]) {
case 0:
return deserializeBoxIdentifierReference(pos + 8);
case 1:
return deserializeBoxTSAsExpression(pos + 8);
case 2:
return deserializeBoxTSSatisfiesExpression(pos + 8);
case 3:
return deserializeBoxTSNonNullExpression(pos + 8);
case 4:
return deserializeBoxTSTypeAssertion(pos + 8);
case 8:
return deserializeBoxArrayAssignmentTarget(pos + 8);
case 9:
return deserializeBoxObjectAssignmentTarget(pos + 8);
case 16:
return deserializeBoxVariableDeclaration(pos + 8);
case 48:
return deserializeBoxComputedMemberExpression(pos + 8);
case 49:
return deserializeBoxStaticMemberExpression(pos + 8);
case 50:
return deserializeBoxPrivateFieldExpression(pos + 8);
default:
throw Error(`Unexpected discriminant ${uint8[pos]} for ForStatementLeft`);
}
}
function deserializeForOfStatement(pos) {
let start,
end,
node = {
type: "ForOfStatement",
await: deserializeBool(pos + 64),
left: null,
right: null,
body: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.left = deserializeForStatementLeft(pos + 16);
node.right = deserializeExpression(pos + 32);
node.body = deserializeStatement(pos + 48);
return node;
}
function deserializeContinueStatement(pos) {
let start,
end,
node = {
type: "ContinueStatement",
label: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.label = deserializeOptionLabelIdentifier(pos + 16);
return node;
}
function deserializeBreakStatement(pos) {
let start,
end,
node = {
type: "BreakStatement",
label: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.label = deserializeOptionLabelIdentifier(pos + 16);
return node;
}
function deserializeReturnStatement(pos) {
let start,
end,
node = {
type: "ReturnStatement",
argument: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.argument = deserializeOptionExpression(pos + 16);
return node;
}
function deserializeWithStatement(pos) {
let start,
end,
node = {
type: "WithStatement",
object: null,
body: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.object = deserializeExpression(pos + 16);
node.body = deserializeStatement(pos + 32);
return node;
}
function deserializeSwitchStatement(pos) {
let start,
end,
node = {
type: "SwitchStatement",
discriminant: null,
cases: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end],
};
node.discriminant = deserializeExpression(pos + 16);
node.cases = deserializeVecSwitchCase(pos + 32);
return node;
}
function deserializeSwitchCase(pos) {
let start,
end,
node = {
type: "SwitchCase",
test: null,
consequent: null,
start: (start = deserializeI32(pos)),
end: (end = deserializeI32(pos + 4)),
range: [start, end]