UNPKG

oxc-parser

Version:

Oxc Parser Node API

1,902 lines (1,720 loc) 157 kB
// 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