UNPKG

oxc-parser

Version:
1,780 lines (1,689 loc) 165 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`. 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, }; 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 = 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) { return { type: "Identifier", decorators: [], name: deserializeStr(pos + 16), optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeIdentifierReference(pos) { return { type: "Identifier", decorators: [], name: deserializeStr(pos + 16), optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeBindingIdentifier(pos) { return { type: "Identifier", decorators: [], name: deserializeStr(pos + 16), optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeLabelIdentifier(pos) { return { type: "Identifier", decorators: [], name: deserializeStr(pos + 16), optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeThisExpression(pos) { return { type: "ThisExpression", start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeArrayExpression(pos) { let node = { type: "ArrayExpression", elements: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "ObjectExpression", properties: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 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: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "TemplateLiteral", quasis: null, expressions: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.quasis = deserializeVecTemplateElement(pos + 16); node.expressions = deserializeVecExpression(pos + 40); return node; } function deserializeTaggedTemplateExpression(pos) { let node = { type: "TaggedTemplateExpression", tag: null, typeArguments: null, quasi: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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, }; } function deserializeTemplateElementValue(pos) { return { raw: deserializeStr(pos), cooked: deserializeOptionStr(pos + 16), }; } function deserializeComputedMemberExpression(pos) { let node = { type: "MemberExpression", object: null, property: null, optional: deserializeBool(pos + 12), computed: true, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.object = deserializeExpression(pos + 16); node.property = deserializeExpression(pos + 32); return node; } function deserializeStaticMemberExpression(pos) { let node = { type: "MemberExpression", object: null, property: null, optional: deserializeBool(pos + 12), computed: false, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.object = deserializeExpression(pos + 16); node.property = deserializeIdentifierName(pos + 32); return node; } function deserializePrivateFieldExpression(pos) { let node = { type: "MemberExpression", object: null, property: null, optional: deserializeBool(pos + 12), computed: false, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.object = deserializeExpression(pos + 16); node.property = deserializePrivateIdentifier(pos + 32); return node; } function deserializeCallExpression(pos) { let node = { type: "CallExpression", callee: null, typeArguments: null, arguments: null, optional: deserializeBool(pos + 12), start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.callee = deserializeExpression(pos + 16); node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 32); node.arguments = deserializeVecArgument(pos + 40); return node; } function deserializeNewExpression(pos) { let node = { type: "NewExpression", callee: null, typeArguments: null, arguments: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.callee = deserializeExpression(pos + 16); node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 32); node.arguments = deserializeVecArgument(pos + 40); return node; } function deserializeMetaProperty(pos) { let node = { type: "MetaProperty", meta: null, property: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.meta = deserializeIdentifierName(pos + 16); node.property = deserializeIdentifierName(pos + 48); return node; } function deserializeSpreadElement(pos) { let node = { type: "SpreadElement", argument: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "UpdateExpression", operator: deserializeUpdateOperator(pos + 12), prefix: deserializeBool(pos + 13), argument: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.argument = deserializeSimpleAssignmentTarget(pos + 16); return node; } function deserializeUnaryExpression(pos) { let node = { type: "UnaryExpression", operator: deserializeUnaryOperator(pos + 12), argument: null, prefix: true, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.argument = deserializeExpression(pos + 16); return node; } function deserializeBinaryExpression(pos) { let node = { type: "BinaryExpression", left: null, operator: deserializeBinaryOperator(pos + 12), right: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.left = deserializeExpression(pos + 16); node.right = deserializeExpression(pos + 32); return node; } function deserializePrivateInExpression(pos) { let node = { type: "BinaryExpression", left: null, operator: "in", right: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.left = deserializePrivateIdentifier(pos + 16); node.right = deserializeExpression(pos + 48); return node; } function deserializeLogicalExpression(pos) { let node = { type: "LogicalExpression", left: null, operator: deserializeLogicalOperator(pos + 12), right: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.left = deserializeExpression(pos + 16); node.right = deserializeExpression(pos + 32); return node; } function deserializeConditionalExpression(pos) { let node = { type: "ConditionalExpression", test: null, consequent: null, alternate: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.test = deserializeExpression(pos + 16); node.consequent = deserializeExpression(pos + 32); node.alternate = deserializeExpression(pos + 48); return node; } function deserializeAssignmentExpression(pos) { let node = { type: "AssignmentExpression", operator: deserializeAssignmentOperator(pos + 12), left: null, right: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "ArrayPattern", decorators: [], elements: null, optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }, elements = deserializeVecOptionAssignmentTargetMaybeDefault(pos + 16), rest = deserializeOptionBoxAssignmentTargetRest(pos + 40); rest !== null && elements.push(rest); node.elements = elements; return node; } function deserializeObjectAssignmentTarget(pos) { let node = { type: "ObjectPattern", decorators: [], properties: null, optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }, properties = deserializeVecAssignmentTargetProperty(pos + 16), rest = deserializeOptionBoxAssignmentTargetRest(pos + 40); rest !== null && properties.push(rest); node.properties = properties; return node; } function deserializeAssignmentTargetRest(pos) { let node = { type: "RestElement", decorators: [], argument: null, optional: false, typeAnnotation: null, value: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "AssignmentPattern", decorators: [], left: null, right: null, optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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, }, key = deserializeIdentifierReference(pos + 16), value = { type: "Identifier", decorators: [], name: key.name, optional: false, typeAnnotation: null, start: key.start, end: key.end, }, init = deserializeOptionExpression(pos + 48); init !== null && (value = { type: "AssignmentPattern", decorators: [], left: value, right: init, optional: false, typeAnnotation: null, start, end, }); node.key = key; node.value = value; return node; } function deserializeAssignmentTargetPropertyProperty(pos) { let node = { type: "Property", kind: "init", key: null, value: null, method: false, shorthand: false, computed: deserializeBool(pos + 12), optional: false, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.key = deserializePropertyKey(pos + 16); node.value = deserializeAssignmentTargetMaybeDefault(pos + 32); return node; } function deserializeSequenceExpression(pos) { let node = { type: "SequenceExpression", expressions: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.expressions = deserializeVecExpression(pos + 16); return node; } function deserializeSuper(pos) { return { type: "Super", start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeAwaitExpression(pos) { let node = { type: "AwaitExpression", argument: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.argument = deserializeExpression(pos + 16); return node; } function deserializeChainExpression(pos) { let node = { type: "ChainExpression", expression: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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; node = { type: "ParenthesizedExpression", expression: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "ExpressionStatement", expression: null, directive: deserializeStr(pos + 64), start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.expression = deserializeStringLiteral(pos + 16); return node; } function deserializeHashbang(pos) { return { type: "Hashbang", value: deserializeStr(pos + 16), start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeBlockStatement(pos) { let node = { type: "BlockStatement", body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "VariableDeclaration", kind: deserializeVariableDeclarationKind(pos + 12), declarations: null, declare: deserializeBool(pos + 13), start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "VariableDeclarator", id: null, init: null, definite: deserializeBool(pos + 13), start: deserializeI32(pos), end: deserializeI32(pos + 4), }, pattern = deserializeBindingPattern(pos + 16); { let typeAnnotation = deserializeOptionBoxTSTypeAnnotation(pos + 32); if (typeAnnotation !== null) { pattern.typeAnnotation = typeAnnotation; pattern.end = typeAnnotation.end; } } node.id = pattern; node.init = deserializeOptionExpression(pos + 40); return node; } function deserializeEmptyStatement(pos) { return { type: "EmptyStatement", start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeExpressionStatement(pos) { let node = { type: "ExpressionStatement", expression: null, directive: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.expression = deserializeExpression(pos + 16); return node; } function deserializeIfStatement(pos) { let node = { type: "IfStatement", test: null, consequent: null, alternate: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.test = deserializeExpression(pos + 16); node.consequent = deserializeStatement(pos + 32); node.alternate = deserializeOptionStatement(pos + 48); return node; } function deserializeDoWhileStatement(pos) { let node = { type: "DoWhileStatement", body: null, test: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.body = deserializeStatement(pos + 16); node.test = deserializeExpression(pos + 32); return node; } function deserializeWhileStatement(pos) { let node = { type: "WhileStatement", test: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.test = deserializeExpression(pos + 16); node.body = deserializeStatement(pos + 32); return node; } function deserializeForStatement(pos) { let node = { type: "ForStatement", init: null, test: null, update: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "ForInStatement", left: null, right: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; 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 node = { type: "ForOfStatement", await: deserializeBool(pos + 64), left: null, right: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.left = deserializeForStatementLeft(pos + 16); node.right = deserializeExpression(pos + 32); node.body = deserializeStatement(pos + 48); return node; } function deserializeContinueStatement(pos) { let node = { type: "ContinueStatement", label: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.label = deserializeOptionLabelIdentifier(pos + 16); return node; } function deserializeBreakStatement(pos) { let node = { type: "BreakStatement", label: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.label = deserializeOptionLabelIdentifier(pos + 16); return node; } function deserializeReturnStatement(pos) { let node = { type: "ReturnStatement", argument: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.argument = deserializeOptionExpression(pos + 16); return node; } function deserializeWithStatement(pos) { let node = { type: "WithStatement", object: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.object = deserializeExpression(pos + 16); node.body = deserializeStatement(pos + 32); return node; } function deserializeSwitchStatement(pos) { let node = { type: "SwitchStatement", discriminant: null, cases: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.discriminant = deserializeExpression(pos + 16); node.cases = deserializeVecSwitchCase(pos + 32); return node; } function deserializeSwitchCase(pos) { let node = { type: "SwitchCase", test: null, consequent: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.test = deserializeOptionExpression(pos + 16); node.consequent = deserializeVecStatement(pos + 32); return node; } function deserializeLabeledStatement(pos) { let node = { type: "LabeledStatement", label: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.label = deserializeLabelIdentifier(pos + 16); node.body = deserializeStatement(pos + 48); return node; } function deserializeThrowStatement(pos) { let node = { type: "ThrowStatement", argument: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.argument = deserializeExpression(pos + 16); return node; } function deserializeTryStatement(pos) { let node = { type: "TryStatement", block: null, handler: null, finalizer: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.block = deserializeBoxBlockStatement(pos + 16); node.handler = deserializeOptionBoxCatchClause(pos + 24); node.finalizer = deserializeOptionBoxBlockStatement(pos + 32); return node; } function deserializeCatchClause(pos) { let node = { type: "CatchClause", param: null, body: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.param = deserializeOptionCatchParameter(pos + 16); node.body = deserializeBoxBlockStatement(pos + 56); return node; } function deserializeCatchParameter(pos) { let pattern = deserializeBindingPattern(pos + 16); { let typeAnnotation = deserializeOptionBoxTSTypeAnnotation(pos + 32); pattern.typeAnnotation = typeAnnotation; typeAnnotation !== null && (pattern.end = typeAnnotation.end); } return pattern; } function deserializeDebuggerStatement(pos) { return { type: "DebuggerStatement", start: deserializeI32(pos), end: deserializeI32(pos + 4), }; } function deserializeBindingPattern(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBindingIdentifier(pos + 8); case 1: return deserializeBoxObjectPattern(pos + 8); case 2: return deserializeBoxArrayPattern(pos + 8); case 3: return deserializeBoxAssignmentPattern(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for BindingPattern`); } } function deserializeAssignmentPattern(pos) { let node = { type: "AssignmentPattern", decorators: [], left: null, right: null, optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.left = deserializeBindingPattern(pos + 16); node.right = deserializeExpression(pos + 32); return node; } function deserializeObjectPattern(pos) { let node = { type: "ObjectPattern", decorators: [], properties: null, optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }, properties = deserializeVecBindingProperty(pos + 16), rest = deserializeOptionBoxBindingRestElement(pos + 40); rest !== null && properties.push(rest); node.properties = properties; return node; } function deserializeBindingProperty(pos) { let node = { type: "Property", kind: "init", key: null, value: null, method: false, shorthand: deserializeBool(pos + 12), computed: deserializeBool(pos + 13), optional: false, start: deserializeI32(pos), end: deserializeI32(pos + 4), }; node.key = deserializePropertyKey(pos + 16); node.value = deserializeBindingPattern(pos + 32); return node; } function deserializeArrayPattern(pos) { let node = { type: "ArrayPattern", decorators: [], elements: null, optional: false, typeAnnotation: null, start: deserializeI32(pos), end: deserializeI32(pos + 4), }, elements = deserializeVecOptionBindingPattern(pos + 16), rest = deserializeOptionBoxBindingRestElement(pos + 40); rest !== null && elements.push(rest); node.elements = elements; return node; } function deserializeBindingRestElement(pos) { let node = { type: "RestElement", decorators: [], argument: null, optional: false, ty