oxc-parser
Version:
Oxc Parser Node API
1,902 lines (1,720 loc) • 157 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`
'use strict';
module.exports = deserialize;
let uint8, uint32, float64, sourceText, sourceIsAscii, sourceLen;
const textDecoder = new TextDecoder('utf-8', { ignoreBOM: true }),
decodeStr = textDecoder.decode.bind(textDecoder),
{ fromCodePoint } = String;
function deserialize(buffer, sourceTextInput, sourceLenInput) {
uint8 = buffer;
uint32 = new Uint32Array(buffer.buffer, buffer.byteOffset);
float64 = new Float64Array(buffer.buffer, buffer.byteOffset);
sourceText = sourceTextInput;
sourceLen = sourceLenInput;
sourceIsAscii = sourceText.length === sourceLen;
// (2 * 1024 * 1024 * 1024 - 16) >> 2
const metadataPos32 = 536870908;
const data = deserializeRawTransferData(uint32[metadataPos32]);
uint8 =
uint32 =
float64 =
sourceText =
undefined;
return data;
}
function deserializeProgram(pos) {
const body = deserializeVecDirective(pos + 88);
body.push(...deserializeVecStatement(pos + 120));
let start = deserializeU32(pos);
if (body.length > 0) start = body[0].start;
const program = {
type: 'Program',
start,
end: deserializeU32(pos + 4),
body,
sourceType: deserializeModuleKind(pos + 9),
hashbang: deserializeOptionHashbang(pos + 64),
};
return program;
}
function deserializeIdentifierName(pos) {
return {
type: 'Identifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
decorators: [],
optional: false,
typeAnnotation: null,
};
}
function deserializeIdentifierReference(pos) {
return {
type: 'Identifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
decorators: [],
optional: false,
typeAnnotation: null,
};
}
function deserializeBindingIdentifier(pos) {
return {
type: 'Identifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
decorators: [],
optional: false,
typeAnnotation: null,
};
}
function deserializeLabelIdentifier(pos) {
return {
type: 'Identifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
decorators: [],
optional: false,
typeAnnotation: null,
};
}
function deserializeThisExpression(pos) {
return {
type: 'ThisExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeArrayExpression(pos) {
return {
type: 'ArrayExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
elements: deserializeVecArrayExpressionElement(pos + 8),
};
}
function deserializeElision(pos) {
return null;
}
function deserializeObjectExpression(pos) {
return {
type: 'ObjectExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
properties: deserializeVecObjectPropertyKind(pos + 8),
};
}
function deserializeObjectProperty(pos) {
return {
type: 'Property',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
method: deserializeBool(pos + 48),
shorthand: deserializeBool(pos + 49),
computed: deserializeBool(pos + 50),
key: deserializePropertyKey(pos + 16),
value: deserializeExpression(pos + 32),
kind: deserializePropertyKind(pos + 8),
optional: false,
};
}
function deserializeTemplateLiteral(pos) {
return {
type: 'TemplateLiteral',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expressions: deserializeVecExpression(pos + 40),
quasis: deserializeVecTemplateElement(pos + 8),
};
}
function deserializeTaggedTemplateExpression(pos) {
return {
type: 'TaggedTemplateExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
tag: deserializeExpression(pos + 8),
quasi: deserializeTemplateLiteral(pos + 24),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 96),
};
}
function deserializeTemplateElement(pos) {
let value = deserializeTemplateElementValue(pos + 8);
if (value.cooked !== null && deserializeBool(pos + 41)) {
value.cooked = value.cooked
.replace(/\uFFFD(.{4})/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)));
}
return {
type: 'TemplateElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value,
tail: deserializeBool(pos + 40),
};
}
function deserializeTemplateElementValue(pos) {
return {
raw: deserializeStr(pos),
cooked: deserializeOptionStr(pos + 16),
};
}
function deserializeComputedMemberExpression(pos) {
return {
type: 'MemberExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
object: deserializeExpression(pos + 8),
property: deserializeExpression(pos + 24),
computed: true,
optional: deserializeBool(pos + 40),
};
}
function deserializeStaticMemberExpression(pos) {
return {
type: 'MemberExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
object: deserializeExpression(pos + 8),
property: deserializeIdentifierName(pos + 24),
computed: false,
optional: deserializeBool(pos + 48),
};
}
function deserializePrivateFieldExpression(pos) {
return {
type: 'MemberExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
object: deserializeExpression(pos + 8),
property: deserializePrivateIdentifier(pos + 24),
computed: false,
optional: deserializeBool(pos + 48),
};
}
function deserializeCallExpression(pos) {
return {
type: 'CallExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
callee: deserializeExpression(pos + 8),
arguments: deserializeVecArgument(pos + 32),
optional: deserializeBool(pos + 64),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
};
}
function deserializeNewExpression(pos) {
return {
type: 'NewExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
callee: deserializeExpression(pos + 8),
arguments: deserializeVecArgument(pos + 24),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 56),
};
}
function deserializeMetaProperty(pos) {
return {
type: 'MetaProperty',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
meta: deserializeIdentifierName(pos + 8),
property: deserializeIdentifierName(pos + 32),
};
}
function deserializeSpreadElement(pos) {
return {
type: 'SpreadElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeExpression(pos + 8),
};
}
function deserializeUpdateExpression(pos) {
return {
type: 'UpdateExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
operator: deserializeUpdateOperator(pos + 8),
prefix: deserializeBool(pos + 9),
argument: deserializeSimpleAssignmentTarget(pos + 16),
};
}
function deserializeUnaryExpression(pos) {
return {
type: 'UnaryExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
operator: deserializeUnaryOperator(pos + 8),
prefix: true,
argument: deserializeExpression(pos + 16),
};
}
function deserializeBinaryExpression(pos) {
return {
type: 'BinaryExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializeExpression(pos + 8),
operator: deserializeBinaryOperator(pos + 24),
right: deserializeExpression(pos + 32),
};
}
function deserializePrivateInExpression(pos) {
return {
type: 'BinaryExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializePrivateIdentifier(pos + 8),
operator: 'in',
right: deserializeExpression(pos + 32),
};
}
function deserializeLogicalExpression(pos) {
return {
type: 'LogicalExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializeExpression(pos + 8),
operator: deserializeLogicalOperator(pos + 24),
right: deserializeExpression(pos + 32),
};
}
function deserializeConditionalExpression(pos) {
return {
type: 'ConditionalExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
test: deserializeExpression(pos + 8),
consequent: deserializeExpression(pos + 24),
alternate: deserializeExpression(pos + 40),
};
}
function deserializeAssignmentExpression(pos) {
return {
type: 'AssignmentExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
operator: deserializeAssignmentOperator(pos + 8),
left: deserializeAssignmentTarget(pos + 16),
right: deserializeExpression(pos + 32),
};
}
function deserializeArrayAssignmentTarget(pos) {
const elements = deserializeVecOptionAssignmentTargetMaybeDefault(pos + 8);
const rest = deserializeOptionAssignmentTargetRest(pos + 40);
if (rest !== null) elements.push(rest);
return {
type: 'ArrayPattern',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
elements,
};
}
function deserializeObjectAssignmentTarget(pos) {
const properties = deserializeVecAssignmentTargetProperty(pos + 8);
const rest = deserializeOptionAssignmentTargetRest(pos + 40);
if (rest !== null) properties.push(rest);
return {
type: 'ObjectPattern',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
properties,
};
}
function deserializeAssignmentTargetRest(pos) {
return {
type: 'RestElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeAssignmentTarget(pos + 8),
};
}
function deserializeAssignmentTargetWithDefault(pos) {
return {
type: 'AssignmentPattern',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializeAssignmentTarget(pos + 8),
right: deserializeExpression(pos + 24),
};
}
function deserializeAssignmentTargetPropertyIdentifier(pos) {
const start = deserializeU32(pos),
end = deserializeU32(pos + 4),
key = deserializeIdentifierReference(pos + 8);
const init = deserializeOptionExpression(pos + 40),
keyCopy = { ...key },
value = init === null
? keyCopy
: {
type: 'AssignmentPattern',
start: start,
end: end,
left: keyCopy,
right: init,
};
return {
type: 'Property',
start,
end,
method: false,
shorthand: true,
computed: false,
key,
value,
kind: 'init',
};
}
function deserializeAssignmentTargetPropertyProperty(pos) {
return {
type: 'Property',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
method: false,
shorthand: false,
computed: deserializeBool(pos + 40),
key: deserializePropertyKey(pos + 8),
value: deserializeAssignmentTargetMaybeDefault(pos + 24),
kind: 'init',
};
}
function deserializeSequenceExpression(pos) {
return {
type: 'SequenceExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expressions: deserializeVecExpression(pos + 8),
};
}
function deserializeSuper(pos) {
return {
type: 'Super',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeAwaitExpression(pos) {
return {
type: 'AwaitExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeExpression(pos + 8),
};
}
function deserializeChainExpression(pos) {
return {
type: 'ChainExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeChainElement(pos + 8),
};
}
function deserializeParenthesizedExpression(pos) {
return {
type: 'ParenthesizedExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeExpression(pos + 8),
};
}
function deserializeDirective(pos) {
return {
type: 'ExpressionStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeStringLiteral(pos + 8),
directive: deserializeStr(pos + 56),
};
}
function deserializeHashbang(pos) {
return {
type: 'Hashbang',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value: deserializeStr(pos + 8),
};
}
function deserializeBlockStatement(pos) {
return {
type: 'BlockStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body: deserializeVecStatement(pos + 8),
};
}
function deserializeVariableDeclaration(pos) {
return {
type: 'VariableDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
declarations: deserializeVecVariableDeclarator(pos + 16),
kind: deserializeVariableDeclarationKind(pos + 8),
declare: deserializeBool(pos + 48),
};
}
function deserializeVariableDeclarator(pos) {
return {
type: 'VariableDeclarator',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeBindingPattern(pos + 16),
init: deserializeOptionExpression(pos + 48),
definite: deserializeBool(pos + 64),
};
}
function deserializeEmptyStatement(pos) {
return {
type: 'EmptyStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeExpressionStatement(pos) {
return {
type: 'ExpressionStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeExpression(pos + 8),
directive: null,
};
}
function deserializeIfStatement(pos) {
return {
type: 'IfStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
test: deserializeExpression(pos + 8),
consequent: deserializeStatement(pos + 24),
alternate: deserializeOptionStatement(pos + 40),
};
}
function deserializeDoWhileStatement(pos) {
return {
type: 'DoWhileStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body: deserializeStatement(pos + 8),
test: deserializeExpression(pos + 24),
};
}
function deserializeWhileStatement(pos) {
return {
type: 'WhileStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
test: deserializeExpression(pos + 8),
body: deserializeStatement(pos + 24),
};
}
function deserializeForStatement(pos) {
return {
type: 'ForStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
init: deserializeOptionForStatementInit(pos + 8),
test: deserializeOptionExpression(pos + 24),
update: deserializeOptionExpression(pos + 40),
body: deserializeStatement(pos + 56),
};
}
function deserializeForInStatement(pos) {
return {
type: 'ForInStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializeForStatementLeft(pos + 8),
right: deserializeExpression(pos + 24),
body: deserializeStatement(pos + 40),
};
}
function deserializeForOfStatement(pos) {
return {
type: 'ForOfStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
await: deserializeBool(pos + 8),
left: deserializeForStatementLeft(pos + 16),
right: deserializeExpression(pos + 32),
body: deserializeStatement(pos + 48),
};
}
function deserializeContinueStatement(pos) {
return {
type: 'ContinueStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
label: deserializeOptionLabelIdentifier(pos + 8),
};
}
function deserializeBreakStatement(pos) {
return {
type: 'BreakStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
label: deserializeOptionLabelIdentifier(pos + 8),
};
}
function deserializeReturnStatement(pos) {
return {
type: 'ReturnStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeOptionExpression(pos + 8),
};
}
function deserializeWithStatement(pos) {
return {
type: 'WithStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
object: deserializeExpression(pos + 8),
body: deserializeStatement(pos + 24),
};
}
function deserializeSwitchStatement(pos) {
return {
type: 'SwitchStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
discriminant: deserializeExpression(pos + 8),
cases: deserializeVecSwitchCase(pos + 24),
};
}
function deserializeSwitchCase(pos) {
return {
type: 'SwitchCase',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
consequent: deserializeVecStatement(pos + 24),
test: deserializeOptionExpression(pos + 8),
};
}
function deserializeLabeledStatement(pos) {
return {
type: 'LabeledStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body: deserializeStatement(pos + 32),
label: deserializeLabelIdentifier(pos + 8),
};
}
function deserializeThrowStatement(pos) {
return {
type: 'ThrowStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeExpression(pos + 8),
};
}
function deserializeTryStatement(pos) {
return {
type: 'TryStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
block: deserializeBoxBlockStatement(pos + 8),
handler: deserializeOptionBoxCatchClause(pos + 16),
finalizer: deserializeOptionBoxBlockStatement(pos + 24),
};
}
function deserializeCatchClause(pos) {
return {
type: 'CatchClause',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
param: deserializeOptionCatchParameter(pos + 8),
body: deserializeBoxBlockStatement(pos + 48),
};
}
function deserializeCatchParameter(pos) {
return {
...deserializeBindingPatternKind(pos + 8),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 24),
optional: deserializeBool(pos + 32),
};
}
function deserializeDebuggerStatement(pos) {
return {
type: 'DebuggerStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeBindingPattern(pos) {
return {
...deserializeBindingPatternKind(pos),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 16),
optional: deserializeBool(pos + 24),
};
}
function deserializeAssignmentPattern(pos) {
return {
type: 'AssignmentPattern',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializeBindingPattern(pos + 8),
right: deserializeExpression(pos + 40),
decorators: [],
};
}
function deserializeObjectPattern(pos) {
const properties = deserializeVecBindingProperty(pos + 8);
const rest = deserializeOptionBoxBindingRestElement(pos + 40);
if (rest !== null) properties.push(rest);
return {
type: 'ObjectPattern',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
properties,
decorators: [],
};
}
function deserializeBindingProperty(pos) {
return {
type: 'Property',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
method: false,
shorthand: deserializeBool(pos + 56),
computed: deserializeBool(pos + 57),
key: deserializePropertyKey(pos + 8),
value: deserializeBindingPattern(pos + 24),
kind: 'init',
optional: false,
};
}
function deserializeArrayPattern(pos) {
const elements = deserializeVecOptionBindingPattern(pos + 8);
const rest = deserializeOptionBoxBindingRestElement(pos + 40);
if (rest !== null) elements.push(rest);
return {
type: 'ArrayPattern',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
elements,
decorators: [],
optional: false,
typeAnnotation: null,
};
}
function deserializeBindingRestElement(pos) {
return {
type: 'RestElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeBindingPattern(pos + 8),
};
}
function deserializeFunction(pos) {
const params = deserializeBoxFormalParameters(pos + 72);
const thisParam = deserializeOptionBoxTSThisParameter(pos + 64);
if (thisParam !== null) params.unshift(thisParam);
return {
type: deserializeFunctionType(pos + 8),
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeOptionBindingIdentifier(pos + 16),
expression: false,
generator: deserializeBool(pos + 48),
async: deserializeBool(pos + 49),
params,
body: deserializeOptionBoxFunctionBody(pos + 88),
declare: deserializeBool(pos + 50),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 56),
returnType: deserializeOptionBoxTSTypeAnnotation(pos + 80),
};
}
function deserializeFormalParameters(pos) {
const params = deserializeVecFormalParameter(pos + 16);
if (uint32[(pos + 48) >> 2] !== 0 && uint32[(pos + 52) >> 2] !== 0) {
pos = uint32[(pos + 48) >> 2];
params.push({
type: 'RestElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeBindingPatternKind(pos + 8),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(
pos + 24,
),
optional: deserializeBool(pos + 32),
});
}
return params;
}
function deserializeFormalParameter(pos) {
return {
...deserializeBindingPatternKind(pos + 40),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 56),
optional: deserializeBool(pos + 64),
decorators: deserializeVecDecorator(pos + 8),
};
}
function deserializeFunctionBody(pos) {
const body = deserializeVecDirective(pos + 8);
body.push(...deserializeVecStatement(pos + 40));
return {
type: 'BlockStatement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body,
};
}
function deserializeArrowFunctionExpression(pos) {
const expression = deserializeBool(pos + 8);
let body = deserializeBoxFunctionBody(pos + 40);
return {
type: 'ArrowFunctionExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: null,
expression,
generator: false,
async: deserializeBool(pos + 9),
params: deserializeBoxFormalParameters(pos + 24),
body: expression ? body.body[0].expression : body,
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 16),
returnType: deserializeOptionBoxTSTypeAnnotation(pos + 32),
};
}
function deserializeYieldExpression(pos) {
return {
type: 'YieldExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
delegate: deserializeBool(pos + 8),
argument: deserializeOptionExpression(pos + 16),
};
}
function deserializeClass(pos) {
const classImplements = deserializeOptionVecTSClassImplements(pos + 112);
return {
type: deserializeClassType(pos + 8),
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeOptionBindingIdentifier(pos + 48),
superClass: deserializeOptionExpression(pos + 88),
body: deserializeBoxClassBody(pos + 144),
decorators: deserializeVecDecorator(pos + 16),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 80),
superTypeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 104),
implements: classImplements === null ? [] : classImplements,
abstract: deserializeBool(pos + 152),
declare: deserializeBool(pos + 153),
};
}
function deserializeClassBody(pos) {
return {
type: 'ClassBody',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body: deserializeVecClassElement(pos + 8),
};
}
function deserializeMethodDefinition(pos) {
return {
type: deserializeMethodDefinitionType(pos + 8),
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
static: deserializeBool(pos + 74),
computed: deserializeBool(pos + 73),
key: deserializePropertyKey(pos + 48),
kind: deserializeMethodDefinitionKind(pos + 72),
value: deserializeBoxFunction(pos + 64),
decorators: deserializeVecDecorator(pos + 16),
override: deserializeBool(pos + 75),
optional: deserializeBool(pos + 76),
accessibility: deserializeOptionTSAccessibility(pos + 77),
};
}
function deserializePropertyDefinition(pos) {
return {
type: deserializePropertyDefinitionType(pos + 8),
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
static: deserializeBool(pos + 81),
computed: deserializeBool(pos + 80),
key: deserializePropertyKey(pos + 48),
value: deserializeOptionExpression(pos + 64),
decorators: deserializeVecDecorator(pos + 16),
declare: deserializeBool(pos + 82),
override: deserializeBool(pos + 83),
optional: deserializeBool(pos + 84),
definite: deserializeBool(pos + 85),
readonly: deserializeBool(pos + 86),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 88),
accessibility: deserializeOptionTSAccessibility(pos + 96),
};
}
function deserializePrivateIdentifier(pos) {
return {
type: 'PrivateIdentifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
};
}
function deserializeStaticBlock(pos) {
return {
type: 'StaticBlock',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body: deserializeVecStatement(pos + 8),
};
}
function deserializeAccessorProperty(pos) {
return {
type: deserializeAccessorPropertyType(pos + 8),
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
key: deserializePropertyKey(pos + 48),
value: deserializeOptionExpression(pos + 64),
computed: deserializeBool(pos + 80),
static: deserializeBool(pos + 81),
decorators: deserializeVecDecorator(pos + 16),
definite: deserializeBool(pos + 82),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 88),
accessibility: deserializeOptionTSAccessibility(pos + 96),
optional: false,
override: false,
readonly: false,
declare: false,
};
}
function deserializeImportExpression(pos) {
const options = deserializeVecExpression(pos + 24);
return {
type: 'ImportExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
source: deserializeExpression(pos + 8),
options: options.length === 0 ? null : options[0],
};
}
function deserializeImportDeclaration(pos) {
let specifiers = deserializeOptionVecImportDeclarationSpecifier(pos + 8);
if (specifiers === null) specifiers = [];
const withClause = deserializeOptionBoxWithClause(pos + 96);
return {
type: 'ImportDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
specifiers,
source: deserializeStringLiteral(pos + 40),
attributes: withClause === null ? [] : withClause.withEntries,
importKind: deserializeImportOrExportKind(pos + 104),
};
}
function deserializeImportSpecifier(pos) {
return {
type: 'ImportSpecifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
imported: deserializeModuleExportName(pos + 8),
local: deserializeBindingIdentifier(pos + 64),
importKind: deserializeImportOrExportKind(pos + 96),
};
}
function deserializeImportDefaultSpecifier(pos) {
return {
type: 'ImportDefaultSpecifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
local: deserializeBindingIdentifier(pos + 8),
};
}
function deserializeImportNamespaceSpecifier(pos) {
return {
type: 'ImportNamespaceSpecifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
local: deserializeBindingIdentifier(pos + 8),
};
}
function deserializeWithClause(pos) {
return {
type: 'WithClause',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
attributesKeyword: deserializeIdentifierName(pos + 8),
withEntries: deserializeVecImportAttribute(pos + 32),
};
}
function deserializeImportAttribute(pos) {
return {
type: 'ImportAttribute',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
key: deserializeImportAttributeKey(pos + 8),
value: deserializeStringLiteral(pos + 64),
};
}
function deserializeExportNamedDeclaration(pos) {
const withClause = deserializeOptionBoxWithClause(pos + 112);
return {
type: 'ExportNamedDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
declaration: deserializeOptionDeclaration(pos + 8),
specifiers: deserializeVecExportSpecifier(pos + 24),
source: deserializeOptionStringLiteral(pos + 56),
attributes: withClause === null ? [] : withClause.withEntries,
exportKind: deserializeImportOrExportKind(pos + 104),
};
}
function deserializeExportDefaultDeclaration(pos) {
return {
type: 'ExportDefaultDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
declaration: deserializeExportDefaultDeclarationKind(pos + 64),
exportKind: 'value',
};
}
function deserializeExportAllDeclaration(pos) {
const withClause = deserializeOptionBoxWithClause(pos + 112);
return {
type: 'ExportAllDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
exported: deserializeOptionModuleExportName(pos + 8),
source: deserializeStringLiteral(pos + 64),
attributes: withClause === null ? [] : withClause.withEntries,
exportKind: deserializeImportOrExportKind(pos + 120),
};
}
function deserializeExportSpecifier(pos) {
return {
type: 'ExportSpecifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
local: deserializeModuleExportName(pos + 8),
exported: deserializeModuleExportName(pos + 64),
exportKind: deserializeImportOrExportKind(pos + 120),
};
}
function deserializeV8IntrinsicExpression(pos) {
return {
type: 'V8IntrinsicExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeIdentifierName(pos + 8),
arguments: deserializeVecArgument(pos + 32),
};
}
function deserializeBooleanLiteral(pos) {
const start = deserializeU32(pos),
end = deserializeU32(pos + 4),
value = deserializeBool(pos + 8);
return {
type: 'Literal',
start,
end,
value,
raw: (start === 0 && end === 0) ? null : value + '',
};
}
function deserializeNullLiteral(pos) {
const start = deserializeU32(pos),
end = deserializeU32(pos + 4);
return {
type: 'Literal',
start,
end,
value: null,
raw: (start === 0 && end === 0) ? null : 'null',
};
}
function deserializeNumericLiteral(pos) {
return {
type: 'Literal',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value: deserializeF64(pos + 8),
raw: deserializeOptionStr(pos + 16),
};
}
function deserializeStringLiteral(pos) {
let value = deserializeStr(pos + 8);
if (deserializeBool(pos + 40)) {
value = value.replace(/\uFFFD(.{4})/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)));
}
return {
type: 'Literal',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value,
raw: deserializeOptionStr(pos + 24),
};
}
function deserializeBigIntLiteral(pos) {
const raw = deserializeStr(pos + 8),
bigint = raw.slice(0, -1).replace(/_/g, '');
return {
type: 'Literal',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value: BigInt(bigint),
raw,
bigint,
};
}
function deserializeRegExpLiteral(pos) {
const regex = deserializeRegExp(pos + 8);
let value = null;
try {
value = new RegExp(regex.pattern, regex.flags);
} catch (e) {}
return {
type: 'Literal',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value,
raw: deserializeOptionStr(pos + 40),
regex,
};
}
function deserializeRegExp(pos) {
return {
pattern: deserializeRegExpPattern(pos),
flags: deserializeRegExpFlags(pos + 24),
};
}
function deserializeRegExpFlags(pos) {
const flagBits = deserializeU8(pos);
let flags = '';
// Alphabetical order
if (flagBits & 64) flags += 'd';
if (flagBits & 1) flags += 'g';
if (flagBits & 2) flags += 'i';
if (flagBits & 4) flags += 'm';
if (flagBits & 8) flags += 's';
if (flagBits & 16) flags += 'u';
if (flagBits & 128) flags += 'v';
if (flagBits & 32) flags += 'y';
return flags;
}
function deserializeJSXElement(pos) {
const closingElement = deserializeOptionBoxJSXClosingElement(pos + 16);
const openingElement = deserializeBoxJSXOpeningElement(pos + 8);
if (closingElement === null) openingElement.selfClosing = true;
return {
type: 'JSXElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
openingElement,
closingElement,
children: deserializeVecJSXChild(pos + 24),
};
}
function deserializeJSXOpeningElement(pos) {
return {
type: 'JSXOpeningElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
attributes: deserializeVecJSXAttributeItem(pos + 24),
name: deserializeJSXElementName(pos + 8),
selfClosing: false,
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 56),
};
}
function deserializeJSXClosingElement(pos) {
return {
type: 'JSXClosingElement',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeJSXElementName(pos + 8),
};
}
function deserializeJSXFragment(pos) {
return {
type: 'JSXFragment',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
openingFragment: deserializeJSXOpeningFragment(pos + 8),
closingFragment: deserializeJSXClosingFragment(pos + 16),
children: deserializeVecJSXChild(pos + 24),
};
}
function deserializeJSXOpeningFragment(pos) {
return {
type: 'JSXOpeningFragment',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
attributes: [],
selfClosing: false,
};
}
function deserializeJSXClosingFragment(pos) {
return {
type: 'JSXClosingFragment',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeJSXNamespacedName(pos) {
return {
type: 'JSXNamespacedName',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
namespace: deserializeJSXIdentifier(pos + 8),
name: deserializeJSXIdentifier(pos + 32),
};
}
function deserializeJSXMemberExpression(pos) {
return {
type: 'JSXMemberExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
object: deserializeJSXMemberExpressionObject(pos + 8),
property: deserializeJSXIdentifier(pos + 24),
};
}
function deserializeJSXExpressionContainer(pos) {
return {
type: 'JSXExpressionContainer',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeJSXExpression(pos + 8),
};
}
function deserializeJSXEmptyExpression(pos) {
return {
type: 'JSXEmptyExpression',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeJSXAttribute(pos) {
return {
type: 'JSXAttribute',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeJSXAttributeName(pos + 8),
value: deserializeOptionJSXAttributeValue(pos + 24),
};
}
function deserializeJSXSpreadAttribute(pos) {
return {
type: 'JSXSpreadAttribute',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeExpression(pos + 8),
};
}
function deserializeJSXIdentifier(pos) {
return {
type: 'JSXIdentifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
};
}
function deserializeJSXSpreadChild(pos) {
return {
type: 'JSXSpreadChild',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeExpression(pos + 8),
};
}
function deserializeJSXText(pos) {
return {
type: 'JSXText',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
value: deserializeStr(pos + 8),
raw: deserializeOptionStr(pos + 24),
};
}
function deserializeTSThisParameter(pos) {
return {
type: 'Identifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: 'this',
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 16),
decorators: [],
optional: false,
};
}
function deserializeTSEnumDeclaration(pos) {
const end = deserializeU32(pos + 4),
id = deserializeBindingIdentifier(pos + 8);
const tsEnumDeclMembers = deserializeVecTSEnumMember(pos + 40);
const bodyStart = id.end + 1;
return {
type: 'TSEnumDeclaration',
start: deserializeU32(pos),
end,
id,
body: { type: 'TSEnumBody', start: bodyStart, end: end, members: tsEnumDeclMembers },
const: deserializeBool(pos + 72),
declare: deserializeBool(pos + 73),
};
}
function deserializeTSEnumMember(pos) {
return {
type: 'TSEnumMember',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeTSEnumMemberName(pos + 8),
initializer: deserializeOptionExpression(pos + 24),
};
}
function deserializeTSTypeAnnotation(pos) {
return {
type: 'TSTypeAnnotation',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeAnnotation: deserializeTSType(pos + 8),
};
}
function deserializeTSLiteralType(pos) {
return {
type: 'TSLiteralType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
literal: deserializeTSLiteral(pos + 8),
};
}
function deserializeTSConditionalType(pos) {
return {
type: 'TSConditionalType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
checkType: deserializeTSType(pos + 8),
extendsType: deserializeTSType(pos + 24),
trueType: deserializeTSType(pos + 40),
falseType: deserializeTSType(pos + 56),
};
}
function deserializeTSUnionType(pos) {
return {
type: 'TSUnionType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
types: deserializeVecTSType(pos + 8),
};
}
function deserializeTSIntersectionType(pos) {
return {
type: 'TSIntersectionType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
types: deserializeVecTSType(pos + 8),
};
}
function deserializeTSParenthesizedType(pos) {
return {
type: 'TSParenthesizedType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeAnnotation: deserializeTSType(pos + 8),
};
}
function deserializeTSTypeOperator(pos) {
return {
type: 'TSTypeOperator',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
operator: deserializeTSTypeOperatorOperator(pos + 8),
typeAnnotation: deserializeTSType(pos + 16),
};
}
function deserializeTSArrayType(pos) {
return {
type: 'TSArrayType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
elementType: deserializeTSType(pos + 8),
};
}
function deserializeTSIndexedAccessType(pos) {
return {
type: 'TSIndexedAccessType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
objectType: deserializeTSType(pos + 8),
indexType: deserializeTSType(pos + 24),
};
}
function deserializeTSTupleType(pos) {
return {
type: 'TSTupleType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
elementTypes: deserializeVecTSTupleElement(pos + 8),
};
}
function deserializeTSNamedTupleMember(pos) {
return {
type: 'TSNamedTupleMember',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
elementType: deserializeTSTupleElement(pos + 8),
label: deserializeIdentifierName(pos + 24),
optional: deserializeBool(pos + 48),
};
}
function deserializeTSOptionalType(pos) {
return {
type: 'TSOptionalType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeAnnotation: deserializeTSType(pos + 8),
};
}
function deserializeTSRestType(pos) {
return {
type: 'TSRestType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeAnnotation: deserializeTSType(pos + 8),
};
}
function deserializeTSAnyKeyword(pos) {
return {
type: 'TSAnyKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSStringKeyword(pos) {
return {
type: 'TSStringKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSBooleanKeyword(pos) {
return {
type: 'TSBooleanKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSNumberKeyword(pos) {
return {
type: 'TSNumberKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSNeverKeyword(pos) {
return {
type: 'TSNeverKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSIntrinsicKeyword(pos) {
return {
type: 'TSIntrinsicKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSUnknownKeyword(pos) {
return {
type: 'TSUnknownKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSNullKeyword(pos) {
return {
type: 'TSNullKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSUndefinedKeyword(pos) {
return {
type: 'TSUndefinedKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSVoidKeyword(pos) {
return {
type: 'TSVoidKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSSymbolKeyword(pos) {
return {
type: 'TSSymbolKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSThisType(pos) {
return {
type: 'TSThisType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSObjectKeyword(pos) {
return {
type: 'TSObjectKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSBigIntKeyword(pos) {
return {
type: 'TSBigIntKeyword',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
};
}
function deserializeTSTypeReference(pos) {
return {
type: 'TSTypeReference',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeName: deserializeTSTypeName(pos + 8),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
};
}
function deserializeTSQualifiedName(pos) {
return {
type: 'TSQualifiedName',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
left: deserializeTSTypeName(pos + 8),
right: deserializeIdentifierName(pos + 24),
};
}
function deserializeTSTypeParameterInstantiation(pos) {
return {
type: 'TSTypeParameterInstantiation',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
params: deserializeVecTSType(pos + 8),
};
}
function deserializeTSTypeParameter(pos) {
return {
type: 'TSTypeParameter',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeBindingIdentifier(pos + 8),
constraint: deserializeOptionTSType(pos + 40),
default: deserializeOptionTSType(pos + 56),
in: deserializeBool(pos + 72),
out: deserializeBool(pos + 73),
const: deserializeBool(pos + 74),
};
}
function deserializeTSTypeParameterDeclaration(pos) {
return {
type: 'TSTypeParameterDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
params: deserializeVecTSTypeParameter(pos + 8),
};
}
function deserializeTSTypeAliasDeclaration(pos) {
return {
type: 'TSTypeAliasDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeBindingIdentifier(pos + 8),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 40),
typeAnnotation: deserializeTSType(pos + 48),
declare: deserializeBool(pos + 64),
};
}
function deserializeTSClassImplements(pos) {
return {
type: 'TSClassImplements',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeTSTypeName(pos + 8),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
};
}
function deserializeTSInterfaceDeclaration(pos) {
const extendsArr = deserializeOptionVecTSInterfaceHeritage(pos + 40);
return {
type: 'TSInterfaceDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeBindingIdentifier(pos + 8),
extends: extendsArr === null ? [] : extendsArr,
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 72),
body: deserializeBoxTSInterfaceBody(pos + 80),
declare: deserializeBool(pos + 88),
};
}
function deserializeTSInterfaceBody(pos) {
return {
type: 'TSInterfaceBody',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body: deserializeVecTSSignature(pos + 8),
};
}
function deserializeTSPropertySignature(pos) {
return {
type: 'TSPropertySignature',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
computed: deserializeBool(pos + 8),
optional: deserializeBool(pos + 9),
readonly: deserializeBool(pos + 10),
key: deserializePropertyKey(pos + 16),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 32),
accessibility: null,
static: false,
};
}
function deserializeTSIndexSignature(pos) {
return {
type: 'TSIndexSignature',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
parameters: deserializeVecTSIndexSignatureName(pos + 8),
typeAnnotation: deserializeBoxTSTypeAnnotation(pos + 40),
readonly: deserializeBool(pos + 48),
static: deserializeBool(pos + 49),
accessibility: null,
};
}
function deserializeTSCallSignatureDeclaration(pos) {
return {
type: 'TSCallSignatureDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
params: deserializeBoxFormalParameters(pos + 48),
returnType: deserializeOptionBoxTSTypeAnnotation(pos + 56),
};
}
function deserializeTSMethodSignature(pos) {
return {
type: 'TSMethodSignature',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
key: deserializePropertyKey(pos + 8),
computed: deserializeBool(pos + 24),
optional: deserializeBool(pos + 25),
kind: deserializeTSMethodSignatureKind(pos + 26),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 32),
params: deserializeBoxFormalParameters(pos + 48),
returnType: deserializeOptionBoxTSTypeAnnotation(pos + 56),
accessibility: null,
readonly: false,
static: false,
};
}
function deserializeTSConstructSignatureDeclaration(pos) {
return {
type: 'TSConstructSignatureDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeParameters: deserializeOptionBoxTSTypeParameterDeclaration(pos + 8),
params: deserializeBoxFormalParameters(pos + 16),
returnType: deserializeOptionBoxTSTypeAnnotation(pos + 24),
};
}
function deserializeTSIndexSignatureName(pos) {
return {
type: 'Identifier',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
name: deserializeStr(pos + 8),
typeAnnotation: deserializeBoxTSTypeAnnotation(pos + 24),
decorators: [],
optional: false,
};
}
function deserializeTSInterfaceHeritage(pos) {
return {
type: 'TSInterfaceHeritage',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
expression: deserializeExpression(pos + 8),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
};
}
function deserializeTSTypePredicate(pos) {
return {
type: 'TSTypePredicate',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
parameterName: deserializeTSTypePredicateName(pos + 8),
asserts: deserializeBool(pos + 24),
typeAnnotation: deserializeOptionBoxTSTypeAnnotation(pos + 32),
};
}
function deserializeTSModuleDeclaration(pos) {
const kind = deserializeTSModuleDeclarationKind(pos + 80);
return {
type: 'TSModuleDeclaration',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
id: deserializeTSModuleDeclarationName(pos + 8),
body: deserializeOptionTSModuleDeclarationBody(pos + 64),
kind,
declare: deserializeBool(pos + 81),
global: kind === 'global',
};
}
function deserializeTSModuleBlock(pos) {
const body = deserializeVecDirective(pos + 8);
body.push(...deserializeVecStatement(pos + 40));
return {
type: 'TSModuleBlock',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
body,
};
}
function deserializeTSTypeLiteral(pos) {
return {
type: 'TSTypeLiteral',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
members: deserializeVecTSSignature(pos + 8),
};
}
function deserializeTSInferType(pos) {
return {
type: 'TSInferType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeParameter: deserializeBoxTSTypeParameter(pos + 8),
};
}
function deserializeTSTypeQuery(pos) {
return {
type: 'TSTypeQuery',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
exprName: deserializeTSTypeQueryExprName(pos + 8),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 24),
};
}
function deserializeTSImportType(pos) {
return {
type: 'TSImportType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
argument: deserializeTSType(pos + 8),
options: deserializeOptionBoxObjectExpression(pos + 24),
qualifier: deserializeOptionTSTypeName(pos + 32),
typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 48),
};
}
function deserializeTSFunctionType(pos) {
return {
type: 'TSFunctionType',
start: deserializeU32(pos),
end: deserializeU32(pos + 4),
typeParameters: deserializeOptionBoxTSTypeParame