// 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, uint32, float64, sourceText, sourceIsAscii, sourceByteLen; const textDecoder = new TextDecoder("utf-8", { ignoreBOM: true }), decodeStr = textDecoder.decode.bind(textDecoder), { fromCodePoint } = String; export function deserialize(buffer, sourceText, sourceByteLen) { let data = deserializeWith(buffer, sourceText, sourceByteLen, null, deserializeRawTransferData); resetBuffer(); return data; } function deserializeWith(buffer, sourceTextInput, sourceByteLenInput, getLocInput, deserialize) { uint8 = buffer; uint32 = buffer.uint32; float64 = buffer.float64; sourceText = sourceTextInput; sourceByteLen = sourceByteLenInput; sourceIsAscii = sourceText.length === sourceByteLen; return deserialize(uint32[536870902]); } export function resetBuffer() { // Clear buffer and source text string to allow them to be garbage collected uint8 = uint32 = float64 = sourceText = void 0; } function deserializeProgram(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), program = { type: "Program", body: null, sourceType: deserializeModuleKind(pos + 125), hashbang: null, start, end, range: [start, end], }; program.hashbang = deserializeOptionHashbang(pos + 48); (program.body = deserializeVecDirective(pos + 72)).push(...deserializeVecStatement(pos + 96)); return program; } function deserializeExpression(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBooleanLiteral(pos + 8); case 1: return deserializeBoxNullLiteral(pos + 8); case 2: return deserializeBoxNumericLiteral(pos + 8); case 3: return deserializeBoxBigIntLiteral(pos + 8); case 4: return deserializeBoxRegExpLiteral(pos + 8); case 5: return deserializeBoxStringLiteral(pos + 8); case 6: return deserializeBoxTemplateLiteral(pos + 8); case 7: return deserializeBoxIdentifierReference(pos + 8); case 8: return deserializeBoxMetaProperty(pos + 8); case 9: return deserializeBoxSuper(pos + 8); case 10: return deserializeBoxArrayExpression(pos + 8); case 11: return deserializeBoxArrowFunctionExpression(pos + 8); case 12: return deserializeBoxAssignmentExpression(pos + 8); case 13: return deserializeBoxAwaitExpression(pos + 8); case 14: return deserializeBoxBinaryExpression(pos + 8); case 15: return deserializeBoxCallExpression(pos + 8); case 16: return deserializeBoxChainExpression(pos + 8); case 17: return deserializeBoxClass(pos + 8); case 18: return deserializeBoxConditionalExpression(pos + 8); case 19: return deserializeBoxFunction(pos + 8); case 20: return deserializeBoxImportExpression(pos + 8); case 21: return deserializeBoxLogicalExpression(pos + 8); case 22: return deserializeBoxNewExpression(pos + 8); case 23: return deserializeBoxObjectExpression(pos + 8); case 24: return deserializeBoxParenthesizedExpression(pos + 8); case 25: return deserializeBoxSequenceExpression(pos + 8); case 26: return deserializeBoxTaggedTemplateExpression(pos + 8); case 27: return deserializeBoxThisExpression(pos + 8); case 28: return deserializeBoxUnaryExpression(pos + 8); case 29: return deserializeBoxUpdateExpression(pos + 8); case 30: return deserializeBoxYieldExpression(pos + 8); case 31: return deserializeBoxPrivateInExpression(pos + 8); case 32: return deserializeBoxJSXElement(pos + 8); case 33: return deserializeBoxJSXFragment(pos + 8); case 34: return deserializeBoxTSAsExpression(pos + 8); case 35: return deserializeBoxTSSatisfiesExpression(pos + 8); case 36: return deserializeBoxTSTypeAssertion(pos + 8); case 37: return deserializeBoxTSNonNullExpression(pos + 8); case 38: return deserializeBoxTSInstantiationExpression(pos + 8); case 39: return deserializeBoxV8IntrinsicExpression(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for Expression`); } } function deserializeIdentifierName(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Identifier", name: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeIdentifierReference(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Identifier", name: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeBindingIdentifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Identifier", name: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeLabelIdentifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Identifier", name: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeThisExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "ThisExpression", start, end, range: [start, end], }; } function deserializeArrayExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ArrayExpression", elements: null, start, end, range: [start, end], }; node.elements = deserializeVecArrayExpressionElement(pos + 8); 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 deserializeElision(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ArrayExpressionElement`); } } function deserializeElision(pos) { return null; } function deserializeObjectExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ObjectExpression", properties: null, start, end, range: [start, end], }; node.properties = deserializeVecObjectPropertyKind(pos + 8); return node; } function deserializeObjectPropertyKind(pos) { switch (uint8[pos]) { case 0: return deserializeBoxObjectProperty(pos + 8); case 1: return deserializeBoxSpreadElement(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ObjectPropertyKind`); } } function deserializeObjectProperty(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Property", kind: deserializePropertyKind(pos + 40), key: null, value: null, method: deserializeBool(pos + 41), shorthand: deserializeBool(pos + 42), computed: deserializeBool(pos + 43), start, end, range: [start, end], }; node.key = deserializePropertyKey(pos + 8); node.value = deserializeExpression(pos + 24); return node; } function deserializePropertyKey(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBooleanLiteral(pos + 8); case 1: return deserializeBoxNullLiteral(pos + 8); case 2: return deserializeBoxNumericLiteral(pos + 8); case 3: return deserializeBoxBigIntLiteral(pos + 8); case 4: return deserializeBoxRegExpLiteral(pos + 8); case 5: return deserializeBoxStringLiteral(pos + 8); case 6: return deserializeBoxTemplateLiteral(pos + 8); case 7: return deserializeBoxIdentifierReference(pos + 8); case 8: return deserializeBoxMetaProperty(pos + 8); case 9: return deserializeBoxSuper(pos + 8); case 10: return deserializeBoxArrayExpression(pos + 8); case 11: return deserializeBoxArrowFunctionExpression(pos + 8); case 12: return deserializeBoxAssignmentExpression(pos + 8); case 13: return deserializeBoxAwaitExpression(pos + 8); case 14: return deserializeBoxBinaryExpression(pos + 8); case 15: return deserializeBoxCallExpression(pos + 8); case 16: return deserializeBoxChainExpression(pos + 8); case 17: return deserializeBoxClass(pos + 8); case 18: return deserializeBoxConditionalExpression(pos + 8); case 19: return deserializeBoxFunction(pos + 8); case 20: return deserializeBoxImportExpression(pos + 8); case 21: return deserializeBoxLogicalExpression(pos + 8); case 22: return deserializeBoxNewExpression(pos + 8); case 23: return deserializeBoxObjectExpression(pos + 8); case 24: return deserializeBoxParenthesizedExpression(pos + 8); case 25: return deserializeBoxSequenceExpression(pos + 8); case 26: return deserializeBoxTaggedTemplateExpression(pos + 8); case 27: return deserializeBoxThisExpression(pos + 8); case 28: return deserializeBoxUnaryExpression(pos + 8); case 29: return deserializeBoxUpdateExpression(pos + 8); case 30: return deserializeBoxYieldExpression(pos + 8); case 31: return deserializeBoxPrivateInExpression(pos + 8); case 32: return deserializeBoxJSXElement(pos + 8); case 33: return deserializeBoxJSXFragment(pos + 8); case 34: return deserializeBoxTSAsExpression(pos + 8); case 35: return deserializeBoxTSSatisfiesExpression(pos + 8); case 36: return deserializeBoxTSTypeAssertion(pos + 8); case 37: return deserializeBoxTSNonNullExpression(pos + 8); case 38: return deserializeBoxTSInstantiationExpression(pos + 8); case 39: return deserializeBoxV8IntrinsicExpression(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); case 64: return deserializeBoxIdentifierName(pos + 8); case 65: return deserializeBoxPrivateIdentifier(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for PropertyKey`); } } function deserializePropertyKind(pos) { switch (uint8[pos]) { case 0: return "init"; case 1: return "get"; case 2: return "set"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for PropertyKind`); } } function deserializeTemplateLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TemplateLiteral", quasis: null, expressions: null, start, end, range: [start, end], }; node.quasis = deserializeVecTemplateElement(pos + 8); node.expressions = deserializeVecExpression(pos + 32); return node; } function deserializeTaggedTemplateExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TaggedTemplateExpression", tag: null, quasi: null, start, end, range: [start, end], }; node.tag = deserializeExpression(pos + 8); node.quasi = deserializeTemplateLiteral(pos + 32); return node; } function deserializeTemplateElement(pos) { let tail = deserializeBool(pos + 40), start = deserializeU32(pos), end = deserializeU32(pos + 4), value = deserializeTemplateElementValue(pos + 8); value.cooked !== null && deserializeBool(pos + 41) && (value.cooked = value.cooked.replace(/\uFFFD(.{4})/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)), )); return { type: "TemplateElement", value, tail, start, end, range: [start, end], }; } function deserializeTemplateElementValue(pos) { return { raw: deserializeStr(pos), cooked: deserializeOptionStr(pos + 16), }; } function deserializeComputedMemberExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "MemberExpression", object: null, property: null, optional: deserializeBool(pos + 40), computed: null, start, end, range: [start, end], }; node.object = deserializeExpression(pos + 8); node.property = deserializeExpression(pos + 24); node.computed = true; return node; } function deserializeStaticMemberExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "MemberExpression", object: null, property: null, optional: deserializeBool(pos + 48), computed: null, start, end, range: [start, end], }; node.object = deserializeExpression(pos + 8); node.property = deserializeIdentifierName(pos + 24); node.computed = false; return node; } function deserializePrivateFieldExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "MemberExpression", object: null, property: null, optional: deserializeBool(pos + 48), computed: null, start, end, range: [start, end], }; node.object = deserializeExpression(pos + 8); node.property = deserializePrivateIdentifier(pos + 24); node.computed = false; return node; } function deserializeCallExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "CallExpression", callee: null, arguments: null, optional: deserializeBool(pos + 56), start, end, range: [start, end], }; node.callee = deserializeExpression(pos + 8); node.arguments = deserializeVecArgument(pos + 32); return node; } function deserializeNewExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "NewExpression", callee: null, arguments: null, start, end, range: [start, end], }; node.callee = deserializeExpression(pos + 8); node.arguments = deserializeVecArgument(pos + 32); return node; } function deserializeMetaProperty(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "MetaProperty", meta: null, property: null, start, end, range: [start, end], }; node.meta = deserializeIdentifierName(pos + 8); node.property = deserializeIdentifierName(pos + 32); return node; } function deserializeSpreadElement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "SpreadElement", argument: null, start, end, range: [start, end], }; node.argument = deserializeExpression(pos + 8); return node; } function deserializeArgument(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBooleanLiteral(pos + 8); case 1: return deserializeBoxNullLiteral(pos + 8); case 2: return deserializeBoxNumericLiteral(pos + 8); case 3: return deserializeBoxBigIntLiteral(pos + 8); case 4: return deserializeBoxRegExpLiteral(pos + 8); case 5: return deserializeBoxStringLiteral(pos + 8); case 6: return deserializeBoxTemplateLiteral(pos + 8); case 7: return deserializeBoxIdentifierReference(pos + 8); case 8: return deserializeBoxMetaProperty(pos + 8); case 9: return deserializeBoxSuper(pos + 8); case 10: return deserializeBoxArrayExpression(pos + 8); case 11: return deserializeBoxArrowFunctionExpression(pos + 8); case 12: return deserializeBoxAssignmentExpression(pos + 8); case 13: return deserializeBoxAwaitExpression(pos + 8); case 14: return deserializeBoxBinaryExpression(pos + 8); case 15: return deserializeBoxCallExpression(pos + 8); case 16: return deserializeBoxChainExpression(pos + 8); case 17: return deserializeBoxClass(pos + 8); case 18: return deserializeBoxConditionalExpression(pos + 8); case 19: return deserializeBoxFunction(pos + 8); case 20: return deserializeBoxImportExpression(pos + 8); case 21: return deserializeBoxLogicalExpression(pos + 8); case 22: return deserializeBoxNewExpression(pos + 8); case 23: return deserializeBoxObjectExpression(pos + 8); case 24: return deserializeBoxParenthesizedExpression(pos + 8); case 25: return deserializeBoxSequenceExpression(pos + 8); case 26: return deserializeBoxTaggedTemplateExpression(pos + 8); case 27: return deserializeBoxThisExpression(pos + 8); case 28: return deserializeBoxUnaryExpression(pos + 8); case 29: return deserializeBoxUpdateExpression(pos + 8); case 30: return deserializeBoxYieldExpression(pos + 8); case 31: return deserializeBoxPrivateInExpression(pos + 8); case 32: return deserializeBoxJSXElement(pos + 8); case 33: return deserializeBoxJSXFragment(pos + 8); case 34: return deserializeBoxTSAsExpression(pos + 8); case 35: return deserializeBoxTSSatisfiesExpression(pos + 8); case 36: return deserializeBoxTSTypeAssertion(pos + 8); case 37: return deserializeBoxTSNonNullExpression(pos + 8); case 38: return deserializeBoxTSInstantiationExpression(pos + 8); case 39: return deserializeBoxV8IntrinsicExpression(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); case 64: return deserializeBoxSpreadElement(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for Argument`); } } function deserializeUpdateExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "UpdateExpression", operator: deserializeUpdateOperator(pos + 24), prefix: deserializeBool(pos + 25), argument: null, start, end, range: [start, end], }; node.argument = deserializeSimpleAssignmentTarget(pos + 8); return node; } function deserializeUnaryExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "UnaryExpression", operator: deserializeUnaryOperator(pos + 24), argument: null, prefix: null, start, end, range: [start, end], }; node.argument = deserializeExpression(pos + 8); node.prefix = true; return node; } function deserializeBinaryExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "BinaryExpression", left: null, operator: deserializeBinaryOperator(pos + 40), right: null, start, end, range: [start, end], }; node.left = deserializeExpression(pos + 8); node.right = deserializeExpression(pos + 24); return node; } function deserializePrivateInExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "BinaryExpression", left: null, operator: null, right: null, start, end, range: [start, end], }; node.left = deserializePrivateIdentifier(pos + 8); node.operator = "in"; node.right = deserializeExpression(pos + 32); return node; } function deserializeLogicalExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "LogicalExpression", left: null, operator: deserializeLogicalOperator(pos + 40), right: null, start, end, range: [start, end], }; node.left = deserializeExpression(pos + 8); node.right = deserializeExpression(pos + 24); return node; } function deserializeConditionalExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ConditionalExpression", test: null, consequent: null, alternate: null, start, end, range: [start, end], }; node.test = deserializeExpression(pos + 8); node.consequent = deserializeExpression(pos + 24); node.alternate = deserializeExpression(pos + 40); return node; } function deserializeAssignmentExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "AssignmentExpression", operator: deserializeAssignmentOperator(pos + 40), left: null, right: null, start, end, range: [start, end], }; node.left = deserializeAssignmentTarget(pos + 8); node.right = deserializeExpression(pos + 24); return node; } function deserializeAssignmentTarget(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSAsExpression(pos + 8); case 2: return deserializeBoxTSSatisfiesExpression(pos + 8); case 3: return deserializeBoxTSNonNullExpression(pos + 8); case 4: return deserializeBoxTSTypeAssertion(pos + 8); case 8: return deserializeBoxArrayAssignmentTarget(pos + 8); case 9: return deserializeBoxObjectAssignmentTarget(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for AssignmentTarget`); } } function deserializeSimpleAssignmentTarget(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSAsExpression(pos + 8); case 2: return deserializeBoxTSSatisfiesExpression(pos + 8); case 3: return deserializeBoxTSNonNullExpression(pos + 8); case 4: return deserializeBoxTSTypeAssertion(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for SimpleAssignmentTarget`); } } function deserializeArrayAssignmentTarget(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ArrayPattern", elements: null, start, end, range: [start, end], }, elements = deserializeVecOptionAssignmentTargetMaybeDefault(pos + 8), rest = deserializeOptionBoxAssignmentTargetRest(pos + 32); rest !== null && elements.push(rest); node.elements = elements; return node; } function deserializeObjectAssignmentTarget(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ObjectPattern", properties: null, start, end, range: [start, end], }, properties = deserializeVecAssignmentTargetProperty(pos + 8), rest = deserializeOptionBoxAssignmentTargetRest(pos + 32); rest !== null && properties.push(rest); node.properties = properties; return node; } function deserializeAssignmentTargetRest(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "RestElement", argument: null, start, end, range: [start, end], }; node.argument = deserializeAssignmentTarget(pos + 8); return node; } function deserializeAssignmentTargetMaybeDefault(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSAsExpression(pos + 8); case 2: return deserializeBoxTSSatisfiesExpression(pos + 8); case 3: return deserializeBoxTSNonNullExpression(pos + 8); case 4: return deserializeBoxTSTypeAssertion(pos + 8); case 8: return deserializeBoxArrayAssignmentTarget(pos + 8); case 9: return deserializeBoxObjectAssignmentTarget(pos + 8); case 16: return deserializeBoxAssignmentTargetWithDefault(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for AssignmentTargetMaybeDefault`); } } function deserializeAssignmentTargetWithDefault(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "AssignmentPattern", left: null, right: null, start, end, range: [start, end], }; node.left = deserializeAssignmentTarget(pos + 8); node.right = deserializeExpression(pos + 24); 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 = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Property", kind: null, key: null, value: null, method: null, shorthand: null, computed: null, start, end, range: [start, end], }, key = deserializeIdentifierReference(pos + 8), keyStart, keyEnd, value = { type: "Identifier", name: key.name, start: (keyStart = key.start), end: (keyEnd = key.end), range: [keyStart, keyEnd], }, init = deserializeOptionExpression(pos + 40); init !== null && (value = { type: "AssignmentPattern", left: value, right: init, start, end, range: [start, end], }); node.kind = "init"; node.key = key; node.value = value; node.method = false; node.shorthand = true; node.computed = false; return node; } function deserializeAssignmentTargetPropertyProperty(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Property", kind: null, key: null, value: null, method: null, shorthand: null, computed: deserializeBool(pos + 40), start, end, range: [start, end], }; node.kind = "init"; node.key = deserializePropertyKey(pos + 8); node.value = deserializeAssignmentTargetMaybeDefault(pos + 24); node.method = false; node.shorthand = false; return node; } function deserializeSequenceExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "SequenceExpression", expressions: null, start, end, range: [start, end], }; node.expressions = deserializeVecExpression(pos + 8); return node; } function deserializeSuper(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Super", start, end, range: [start, end], }; } function deserializeAwaitExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "AwaitExpression", argument: null, start, end, range: [start, end], }; node.argument = deserializeExpression(pos + 8); return node; } function deserializeChainExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ChainExpression", expression: null, start, end, range: [start, end], }; node.expression = deserializeChainElement(pos + 8); return node; } function deserializeChainElement(pos) { switch (uint8[pos]) { case 0: return deserializeBoxCallExpression(pos + 8); case 1: return deserializeBoxTSNonNullExpression(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ChainElement`); } } function deserializeParenthesizedExpression(pos) { let node; { let start, end; node = { type: "ParenthesizedExpression", expression: null, start: (start = deserializeU32(pos)), end: (end = deserializeU32(pos + 4)), range: [start, end], }; node.expression = deserializeExpression(pos + 8); } return node; } function deserializeStatement(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBlockStatement(pos + 8); case 1: return deserializeBoxBreakStatement(pos + 8); case 2: return deserializeBoxContinueStatement(pos + 8); case 3: return deserializeBoxDebuggerStatement(pos + 8); case 4: return deserializeBoxDoWhileStatement(pos + 8); case 5: return deserializeBoxEmptyStatement(pos + 8); case 6: return deserializeBoxExpressionStatement(pos + 8); case 7: return deserializeBoxForInStatement(pos + 8); case 8: return deserializeBoxForOfStatement(pos + 8); case 9: return deserializeBoxForStatement(pos + 8); case 10: return deserializeBoxIfStatement(pos + 8); case 11: return deserializeBoxLabeledStatement(pos + 8); case 12: return deserializeBoxReturnStatement(pos + 8); case 13: return deserializeBoxSwitchStatement(pos + 8); case 14: return deserializeBoxThrowStatement(pos + 8); case 15: return deserializeBoxTryStatement(pos + 8); case 16: return deserializeBoxWhileStatement(pos + 8); case 17: return deserializeBoxWithStatement(pos + 8); case 32: return deserializeBoxVariableDeclaration(pos + 8); case 33: return deserializeBoxFunction(pos + 8); case 34: return deserializeBoxClass(pos + 8); case 35: return deserializeBoxTSTypeAliasDeclaration(pos + 8); case 36: return deserializeBoxTSInterfaceDeclaration(pos + 8); case 37: return deserializeBoxTSEnumDeclaration(pos + 8); case 38: return deserializeBoxTSModuleDeclaration(pos + 8); case 39: return deserializeBoxTSGlobalDeclaration(pos + 8); case 40: return deserializeBoxTSImportEqualsDeclaration(pos + 8); case 64: return deserializeBoxImportDeclaration(pos + 8); case 65: return deserializeBoxExportAllDeclaration(pos + 8); case 66: return deserializeBoxExportDefaultDeclaration(pos + 8); case 67: return deserializeBoxExportNamedDeclaration(pos + 8); case 68: return deserializeBoxTSExportAssignment(pos + 8); case 69: return deserializeBoxTSNamespaceExportDeclaration(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for Statement`); } } function deserializeDirective(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ExpressionStatement", expression: null, directive: deserializeStr(pos + 56), start, end, range: [start, end], }; node.expression = deserializeStringLiteral(pos + 8); return node; } function deserializeHashbang(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Hashbang", value: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeBlockStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "BlockStatement", body: null, start, end, range: [start, end], }; node.body = deserializeVecStatement(pos + 8); return node; } function deserializeDeclaration(pos) { switch (uint8[pos]) { case 32: return deserializeBoxVariableDeclaration(pos + 8); case 33: return deserializeBoxFunction(pos + 8); case 34: return deserializeBoxClass(pos + 8); case 35: return deserializeBoxTSTypeAliasDeclaration(pos + 8); case 36: return deserializeBoxTSInterfaceDeclaration(pos + 8); case 37: return deserializeBoxTSEnumDeclaration(pos + 8); case 38: return deserializeBoxTSModuleDeclaration(pos + 8); case 39: return deserializeBoxTSGlobalDeclaration(pos + 8); case 40: return deserializeBoxTSImportEqualsDeclaration(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for Declaration`); } } function deserializeVariableDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "VariableDeclaration", kind: deserializeVariableDeclarationKind(pos + 32), declarations: null, start, end, range: [start, end], }; node.declarations = deserializeVecVariableDeclarator(pos + 8); return node; } function deserializeVariableDeclarationKind(pos) { switch (uint8[pos]) { case 0: return "var"; case 1: return "let"; case 2: return "const"; case 3: return "using"; case 4: return "await using"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for VariableDeclarationKind`); } } function deserializeVariableDeclarator(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "VariableDeclarator", id: null, init: null, start, end, range: [start, end], }; node.id = deserializeBindingPattern(pos + 8); node.init = deserializeOptionExpression(pos + 40); return node; } function deserializeEmptyStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "EmptyStatement", start, end, range: [start, end], }; } function deserializeExpressionStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ExpressionStatement", expression: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); return node; } function deserializeIfStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "IfStatement", test: null, consequent: null, alternate: null, start, end, range: [start, end], }; node.test = deserializeExpression(pos + 8); node.consequent = deserializeStatement(pos + 24); node.alternate = deserializeOptionStatement(pos + 40); return node; } function deserializeDoWhileStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "DoWhileStatement", body: null, test: null, start, end, range: [start, end], }; node.body = deserializeStatement(pos + 8); node.test = deserializeExpression(pos + 24); return node; } function deserializeWhileStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "WhileStatement", test: null, body: null, start, end, range: [start, end], }; node.test = deserializeExpression(pos + 8); node.body = deserializeStatement(pos + 24); return node; } function deserializeForStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ForStatement", init: null, test: null, update: null, body: null, start, end, range: [start, end], }; node.init = deserializeOptionForStatementInit(pos + 8); node.test = deserializeOptionExpression(pos + 24); node.update = deserializeOptionExpression(pos + 40); node.body = deserializeStatement(pos + 56); return node; } function deserializeForStatementInit(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBooleanLiteral(pos + 8); case 1: return deserializeBoxNullLiteral(pos + 8); case 2: return deserializeBoxNumericLiteral(pos + 8); case 3: return deserializeBoxBigIntLiteral(pos + 8); case 4: return deserializeBoxRegExpLiteral(pos + 8); case 5: return deserializeBoxStringLiteral(pos + 8); case 6: return deserializeBoxTemplateLiteral(pos + 8); case 7: return deserializeBoxIdentifierReference(pos + 8); case 8: return deserializeBoxMetaProperty(pos + 8); case 9: return deserializeBoxSuper(pos + 8); case 10: return deserializeBoxArrayExpression(pos + 8); case 11: return deserializeBoxArrowFunctionExpression(pos + 8); case 12: return deserializeBoxAssignmentExpression(pos + 8); case 13: return deserializeBoxAwaitExpression(pos + 8); case 14: return deserializeBoxBinaryExpression(pos + 8); case 15: return deserializeBoxCallExpression(pos + 8); case 16: return deserializeBoxChainExpression(pos + 8); case 17: return deserializeBoxClass(pos + 8); case 18: return deserializeBoxConditionalExpression(pos + 8); case 19: return deserializeBoxFunction(pos + 8); case 20: return deserializeBoxImportExpression(pos + 8); case 21: return deserializeBoxLogicalExpression(pos + 8); case 22: return deserializeBoxNewExpression(pos + 8); case 23: return deserializeBoxObjectExpression(pos + 8); case 24: return deserializeBoxParenthesizedExpression(pos + 8); case 25: return deserializeBoxSequenceExpression(pos + 8); case 26: return deserializeBoxTaggedTemplateExpression(pos + 8); case 27: return deserializeBoxThisExpression(pos + 8); case 28: return deserializeBoxUnaryExpression(pos + 8); case 29: return deserializeBoxUpdateExpression(pos + 8); case 30: return deserializeBoxYieldExpression(pos + 8); case 31: return deserializeBoxPrivateInExpression(pos + 8); case 32: return deserializeBoxJSXElement(pos + 8); case 33: return deserializeBoxJSXFragment(pos + 8); case 34: return deserializeBoxTSAsExpression(pos + 8); case 35: return deserializeBoxTSSatisfiesExpression(pos + 8); case 36: return deserializeBoxTSTypeAssertion(pos + 8); case 37: return deserializeBoxTSNonNullExpression(pos + 8); case 38: return deserializeBoxTSInstantiationExpression(pos + 8); case 39: return deserializeBoxV8IntrinsicExpression(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); case 64: return deserializeBoxVariableDeclaration(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ForStatementInit`); } } function deserializeForInStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ForInStatement", left: null, right: null, body: null, start, end, range: [start, end], }; node.left = deserializeForStatementLeft(pos + 8); node.right = deserializeExpression(pos + 24); node.body = deserializeStatement(pos + 40); return node; } function deserializeForStatementLeft(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSAsExpression(pos + 8); case 2: return deserializeBoxTSSatisfiesExpression(pos + 8); case 3: return deserializeBoxTSNonNullExpression(pos + 8); case 4: return deserializeBoxTSTypeAssertion(pos + 8); case 8: return deserializeBoxArrayAssignmentTarget(pos + 8); case 9: return deserializeBoxObjectAssignmentTarget(pos + 8); case 16: return deserializeBoxVariableDeclaration(pos + 8); case 48: return deserializeBoxComputedMemberExpression(pos + 8); case 49: return deserializeBoxStaticMemberExpression(pos + 8); case 50: return deserializeBoxPrivateFieldExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ForStatementLeft`); } } function deserializeForOfStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ForOfStatement", await: deserializeBool(pos + 60), left: null, right: null, body: null, start, end, range: [start, end], }; node.left = deserializeForStatementLeft(pos + 8); node.right = deserializeExpression(pos + 24); node.body = deserializeStatement(pos + 40); return node; } function deserializeContinueStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ContinueStatement", label: null, start, end, range: [start, end], }; node.label = deserializeOptionLabelIdentifier(pos + 8); return node; } function deserializeBreakStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "BreakStatement", label: null, start, end, range: [start, end], }; node.label = deserializeOptionLabelIdentifier(pos + 8); return node; } function deserializeReturnStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ReturnStatement", argument: null, start, end, range: [start, end], }; node.argument = deserializeOptionExpression(pos + 8); return node; } function deserializeWithStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "WithStatement", object: null, body: null, start, end, range: [start, end], }; node.object = deserializeExpression(pos + 8); node.body = deserializeStatement(pos + 24); return node; } function deserializeSwitchStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "SwitchStatement", discriminant: null, cases: null, start, end, range: [start, end], }; node.discriminant = deserializeExpression(pos + 8); node.cases = deserializeVecSwitchCase(pos + 24); return node; } function deserializeSwitchCase(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "SwitchCase", test: null, consequent: null, start, end, range: [start, end], }; node.test = deserializeOptionExpression(pos + 8); node.consequent = deserializeVecStatement(pos + 24); return node; } function deserializeLabeledStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "LabeledStatement", label: null, body: null, start, end, range: [start, end], }; node.label = deserializeLabelIdentifier(pos + 8); node.body = deserializeStatement(pos + 32); return node; } function deserializeThrowStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ThrowStatement", argument: null, start, end, range: [start, end], }; node.argument = deserializeExpression(pos + 8); return node; } function deserializeTryStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TryStatement", block: null, handler: null, finalizer: null, start, end, range: [start, end], }; node.block = deserializeBoxBlockStatement(pos + 8); node.handler = deserializeOptionBoxCatchClause(pos + 16); node.finalizer = deserializeOptionBoxBlockStatement(pos + 24); return node; } function deserializeCatchClause(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "CatchClause", param: null, body: null, start, end, range: [start, end], }; node.param = deserializeOptionCatchParameter(pos + 8); node.body = deserializeBoxBlockStatement(pos + 48); return node; } function deserializeCatchParameter(pos) { return deserializeBindingPattern(pos + 8); } function deserializeDebuggerStatement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "DebuggerStatement", start, end, range: [start, end], }; } function deserializeBindingPattern(pos) { return deserializeBindingPatternKind(pos); } function deserializeBindingPatternKind(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 BindingPatternKind`); } } function deserializeAssignmentPattern(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "AssignmentPattern", left: null, right: null, start, end, range: [start, end], }; node.left = deserializeBindingPattern(pos + 8); node.right = deserializeExpression(pos + 40); return node; } function deserializeObjectPattern(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ObjectPattern", properties: null, start, end, range: [start, end], }, properties = deserializeVecBindingProperty(pos + 8), rest = deserializeOptionBoxBindingRestElement(pos + 32); rest !== null && properties.push(rest); node.properties = properties; return node; } function deserializeBindingProperty(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Property", kind: null, key: null, value: null, method: null, shorthand: deserializeBool(pos + 56), computed: deserializeBool(pos + 57), start, end, range: [start, end], }; node.kind = "init"; node.key = deserializePropertyKey(pos + 8); node.value = deserializeBindingPattern(pos + 24); node.method = false; return node; } function deserializeArrayPattern(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ArrayPattern", elements: null, start, end, range: [start, end], }, elements = deserializeVecOptionBindingPattern(pos + 8), rest = deserializeOptionBoxBindingRestElement(pos + 32); rest !== null && elements.push(rest); node.elements = elements; return node; } function deserializeBindingRestElement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "RestElement", argument: null, start, end, range: [start, end], }; node.argument = deserializeBindingPattern(pos + 8); return node; } function deserializeFunction(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: deserializeFunctionType(pos + 84), id: null, generator: deserializeBool(pos + 85), async: deserializeBool(pos + 86), params: null, body: null, expression: null, start, end, range: [start, end], }, params = deserializeBoxFormalParameters(pos + 56); node.id = deserializeOptionBindingIdentifier(pos + 8); node.params = params; node.body = deserializeOptionBoxFunctionBody(pos + 72); node.expression = false; return node; } function deserializeFunctionType(pos) { switch (uint8[pos]) { case 0: return "FunctionDeclaration"; case 1: return "FunctionExpression"; case 2: return "TSDeclareFunction"; case 3: return "TSEmptyBodyFunctionExpression"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for FunctionType`); } } function deserializeFormalParameters(pos) { let params = deserializeVecFormalParameter(pos + 8); if (uint32[(pos + 32) >> 2] !== 0 && uint32[(pos + 36) >> 2] !== 0) { pos = uint32[(pos + 32) >> 2]; let start, end, rest = { type: "RestElement", argument: null, start: (start = deserializeU32(pos)), end: (end = deserializeU32(pos + 4)), range: [start, end], }; rest.argument = deserializeBindingPatternKind(pos + 8); params.push(rest); } return params; } function deserializeFormalParameter(pos) { let param; param = deserializeBindingPatternKind(pos + 32); return param; } function deserializeFunctionBody(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "BlockStatement", body: null, start, end, range: [start, end], }, body = deserializeVecDirective(pos + 8); body.push(...deserializeVecStatement(pos + 32)); node.body = body; return node; } function deserializeArrowFunctionExpression(pos) { let expression = deserializeBool(pos + 44), start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ArrowFunctionExpression", expression, async: deserializeBool(pos + 45), params: null, body: null, id: null, generator: null, start, end, range: [start, end], }, body = deserializeBoxFunctionBody(pos + 32); expression === true && (body = body.body[0].expression); node.params = deserializeBoxFormalParameters(pos + 16); node.body = body; node.generator = false; return node; } function deserializeYieldExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "YieldExpression", delegate: deserializeBool(pos + 24), argument: null, start, end, range: [start, end], }; node.argument = deserializeOptionExpression(pos + 8); return node; } function deserializeClass(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: deserializeClassType(pos + 132), decorators: null, id: null, superClass: null, body: null, start, end, range: [start, end], }; node.decorators = deserializeVecDecorator(pos + 8); node.id = deserializeOptionBindingIdentifier(pos + 32); node.superClass = deserializeOptionExpression(pos + 72); node.body = deserializeBoxClassBody(pos + 120); return node; } function deserializeClassType(pos) { switch (uint8[pos]) { case 0: return "ClassDeclaration"; case 1: return "ClassExpression"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ClassType`); } } function deserializeClassBody(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ClassBody", body: null, start, end, range: [start, end], }; node.body = deserializeVecClassElement(pos + 8); return node; } function deserializeClassElement(pos) { switch (uint8[pos]) { case 0: return deserializeBoxStaticBlock(pos + 8); case 1: return deserializeBoxMethodDefinition(pos + 8); case 2: return deserializeBoxPropertyDefinition(pos + 8); case 3: return deserializeBoxAccessorProperty(pos + 8); case 4: return deserializeBoxTSIndexSignature(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ClassElement`); } } function deserializeMethodDefinition(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: deserializeMethodDefinitionType(pos + 56), decorators: null, key: null, value: null, kind: deserializeMethodDefinitionKind(pos + 57), computed: deserializeBool(pos + 58), static: deserializeBool(pos + 59), start, end, range: [start, end], }; node.decorators = deserializeVecDecorator(pos + 8); node.key = deserializePropertyKey(pos + 32); node.value = deserializeBoxFunction(pos + 48); return node; } function deserializeMethodDefinitionType(pos) { switch (uint8[pos]) { case 0: return "MethodDefinition"; case 1: return "TSAbstractMethodDefinition"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for MethodDefinitionType`); } } function deserializePropertyDefinition(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: deserializePropertyDefinitionType(pos + 72), decorators: null, key: null, value: null, computed: deserializeBool(pos + 73), static: deserializeBool(pos + 74), start, end, range: [start, end], }; node.decorators = deserializeVecDecorator(pos + 8); node.key = deserializePropertyKey(pos + 32); node.value = deserializeOptionExpression(pos + 56); return node; } function deserializePropertyDefinitionType(pos) { switch (uint8[pos]) { case 0: return "PropertyDefinition"; case 1: return "TSAbstractPropertyDefinition"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for PropertyDefinitionType`); } } function deserializeMethodDefinitionKind(pos) { switch (uint8[pos]) { case 0: return "constructor"; case 1: return "method"; case 2: return "get"; case 3: return "set"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for MethodDefinitionKind`); } } function deserializePrivateIdentifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "PrivateIdentifier", name: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeStaticBlock(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "StaticBlock", body: null, start, end, range: [start, end], }; node.body = deserializeVecStatement(pos + 8); return node; } function deserializeAccessorPropertyType(pos) { switch (uint8[pos]) { case 0: return "AccessorProperty"; case 1: return "TSAbstractAccessorProperty"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for AccessorPropertyType`); } } function deserializeAccessorProperty(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: deserializeAccessorPropertyType(pos + 72), decorators: null, key: null, value: null, computed: deserializeBool(pos + 73), static: deserializeBool(pos + 74), start, end, range: [start, end], }; node.decorators = deserializeVecDecorator(pos + 8); node.key = deserializePropertyKey(pos + 32); node.value = deserializeOptionExpression(pos + 56); return node; } function deserializeImportExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ImportExpression", source: null, options: null, phase: deserializeOptionImportPhase(pos + 40), start, end, range: [start, end], }; node.source = deserializeExpression(pos + 8); node.options = deserializeOptionExpression(pos + 24); return node; } function deserializeImportDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ImportDeclaration", specifiers: null, source: null, phase: deserializeOptionImportPhase(pos + 88), attributes: null, start, end, range: [start, end], }, specifiers = deserializeOptionVecImportDeclarationSpecifier(pos + 8); specifiers === null && (specifiers = []); let withClause = deserializeOptionBoxWithClause(pos + 80); node.specifiers = specifiers; node.source = deserializeStringLiteral(pos + 32); node.attributes = withClause === null ? [] : withClause.attributes; return node; } function deserializeImportPhase(pos) { switch (uint8[pos]) { case 0: return "source"; case 1: return "defer"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ImportPhase`); } } function deserializeImportDeclarationSpecifier(pos) { switch (uint8[pos]) { case 0: return deserializeBoxImportSpecifier(pos + 8); case 1: return deserializeBoxImportDefaultSpecifier(pos + 8); case 2: return deserializeBoxImportNamespaceSpecifier(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ImportDeclarationSpecifier`); } } function deserializeImportSpecifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ImportSpecifier", imported: null, local: null, start, end, range: [start, end], }; node.imported = deserializeModuleExportName(pos + 8); node.local = deserializeBindingIdentifier(pos + 64); return node; } function deserializeImportDefaultSpecifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ImportDefaultSpecifier", local: null, start, end, range: [start, end], }; node.local = deserializeBindingIdentifier(pos + 8); return node; } function deserializeImportNamespaceSpecifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ImportNamespaceSpecifier", local: null, start, end, range: [start, end], }; node.local = deserializeBindingIdentifier(pos + 8); return node; } function deserializeWithClause(pos) { return { attributes: deserializeVecImportAttribute(pos + 8) }; } function deserializeImportAttribute(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ImportAttribute", key: null, value: null, start, end, range: [start, end], }; node.key = deserializeImportAttributeKey(pos + 8); node.value = deserializeStringLiteral(pos + 64); return node; } function deserializeImportAttributeKey(pos) { switch (uint8[pos]) { case 0: return deserializeIdentifierName(pos + 8); case 1: return deserializeStringLiteral(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ImportAttributeKey`); } } function deserializeExportNamedDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ExportNamedDeclaration", declaration: null, specifiers: null, source: null, attributes: null, start, end, range: [start, end], }, withClause = deserializeOptionBoxWithClause(pos + 96); node.declaration = deserializeOptionDeclaration(pos + 8); node.specifiers = deserializeVecExportSpecifier(pos + 24); node.source = deserializeOptionStringLiteral(pos + 48); node.attributes = withClause === null ? [] : withClause.attributes; return node; } function deserializeExportDefaultDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ExportDefaultDeclaration", declaration: null, start, end, range: [start, end], }; node.declaration = deserializeExportDefaultDeclarationKind(pos + 8); return node; } function deserializeExportAllDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ExportAllDeclaration", exported: null, source: null, attributes: null, start, end, range: [start, end], }, withClause = deserializeOptionBoxWithClause(pos + 112); node.exported = deserializeOptionModuleExportName(pos + 8); node.source = deserializeStringLiteral(pos + 64); node.attributes = withClause === null ? [] : withClause.attributes; return node; } function deserializeExportSpecifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "ExportSpecifier", local: null, exported: null, start, end, range: [start, end], }; node.local = deserializeModuleExportName(pos + 8); node.exported = deserializeModuleExportName(pos + 64); return node; } function deserializeExportDefaultDeclarationKind(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 deserializeBoxFunction(pos + 8); case 65: return deserializeBoxClass(pos + 8); case 66: return deserializeBoxTSInterfaceDeclaration(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ExportDefaultDeclarationKind`); } } function deserializeModuleExportName(pos) { switch (uint8[pos]) { case 0: return deserializeIdentifierName(pos + 8); case 1: return deserializeIdentifierReference(pos + 8); case 2: return deserializeStringLiteral(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for ModuleExportName`); } } function deserializeV8IntrinsicExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "V8IntrinsicExpression", name: null, arguments: null, start, end, range: [start, end], }; node.name = deserializeIdentifierName(pos + 8); node.arguments = deserializeVecArgument(pos + 32); return node; } function deserializeBooleanLiteral(pos) { let value = deserializeBool(pos + 8), start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Literal", value, raw: null, start, end, range: [start, end], }; node.raw = start === 0 && end === 0 ? null : value + ""; return node; } function deserializeNullLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Literal", value: null, raw: null, start, end, range: [start, end], }; node.raw = start === 0 && end === 0 ? null : "null"; return node; } function deserializeNumericLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "Literal", value: deserializeF64(pos + 8), raw: deserializeOptionStr(pos + 16), start, end, range: [start, end], }; } function deserializeStringLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Literal", value: null, raw: deserializeOptionStr(pos + 24), start, end, range: [start, end], }, value = deserializeStr(pos + 8); deserializeBool(pos + 40) && (value = value.replace(/\uFFFD(.{4})/g, (_, hex) => String.fromCodePoint(parseInt(hex, 16)))); node.value = value; return node; } function deserializeBigIntLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Literal", value: null, raw: deserializeOptionStr(pos + 24), bigint: null, start, end, range: [start, end], }, bigint = deserializeStr(pos + 8); node.value = BigInt(bigint); node.bigint = bigint; return node; } function deserializeRegExpLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Literal", value: null, raw: deserializeOptionStr(pos + 40), regex: null, start, end, range: [start, end], }, regex = deserializeRegExp(pos + 8), value = null; try { value = new RegExp(regex.pattern, regex.flags); } catch {} node.value = value; node.regex = regex; return node; } function deserializeRegExp(pos) { return { pattern: deserializeStr(pos), flags: deserializeRegExpFlags(pos + 24), }; } function deserializeRegExpFlags(pos) { let flagBits = deserializeU8(pos), flags = ""; // Alphabetical order flagBits & 64 && (flags += "d"); flagBits & 1 && (flags += "g"); flagBits & 2 && (flags += "i"); flagBits & 4 && (flags += "m"); flagBits & 8 && (flags += "s"); flagBits & 16 && (flags += "u"); flagBits & 128 && (flags += "v"); flagBits & 32 && (flags += "y"); return flags; } function deserializeJSXElement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXElement", openingElement: null, children: null, closingElement: null, start, end, range: [start, end], }, closingElement = deserializeOptionBoxJSXClosingElement(pos + 40), openingElement = deserializeBoxJSXOpeningElement(pos + 8); closingElement === null && (openingElement.selfClosing = true); node.openingElement = openingElement; node.children = deserializeVecJSXChild(pos + 16); node.closingElement = closingElement; return node; } function deserializeJSXOpeningElement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXOpeningElement", name: null, attributes: null, selfClosing: null, start, end, range: [start, end], }; node.name = deserializeJSXElementName(pos + 8); node.attributes = deserializeVecJSXAttributeItem(pos + 32); node.selfClosing = false; return node; } function deserializeJSXClosingElement(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXClosingElement", name: null, start, end, range: [start, end], }; node.name = deserializeJSXElementName(pos + 8); return node; } function deserializeJSXFragment(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXFragment", openingFragment: null, children: null, closingFragment: null, start, end, range: [start, end], }; node.openingFragment = deserializeJSXOpeningFragment(pos + 8); node.children = deserializeVecJSXChild(pos + 16); node.closingFragment = deserializeJSXClosingFragment(pos + 40); return node; } function deserializeJSXOpeningFragment(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXOpeningFragment", attributes: null, selfClosing: null, start, end, range: [start, end], }; node.attributes = []; node.selfClosing = false; return node; } function deserializeJSXClosingFragment(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "JSXClosingFragment", start, end, range: [start, end], }; } function deserializeJSXElementName(pos) { switch (uint8[pos]) { case 0: return deserializeBoxJSXIdentifier(pos + 8); case 1: let ident = deserializeBoxIdentifierReference(pos + 8); return { type: "JSXIdentifier", name: ident.name, start: ident.start, end: ident.end, range: ident.range, }; case 2: return deserializeBoxJSXNamespacedName(pos + 8); case 3: return deserializeBoxJSXMemberExpression(pos + 8); case 4: let thisExpr = deserializeBoxThisExpression(pos + 8); return { type: "JSXIdentifier", name: "this", start: thisExpr.start, end: thisExpr.end, range: thisExpr.range, }; default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXElementName`); } } function deserializeJSXNamespacedName(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXNamespacedName", namespace: null, name: null, start, end, range: [start, end], }; node.namespace = deserializeJSXIdentifier(pos + 8); node.name = deserializeJSXIdentifier(pos + 32); return node; } function deserializeJSXMemberExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXMemberExpression", object: null, property: null, start, end, range: [start, end], }; node.object = deserializeJSXMemberExpressionObject(pos + 8); node.property = deserializeJSXIdentifier(pos + 24); return node; } function deserializeJSXMemberExpressionObject(pos) { switch (uint8[pos]) { case 0: let ident = deserializeBoxIdentifierReference(pos + 8); return { type: "JSXIdentifier", name: ident.name, start: ident.start, end: ident.end, range: ident.range, }; case 1: return deserializeBoxJSXMemberExpression(pos + 8); case 2: let thisExpr = deserializeBoxThisExpression(pos + 8); return { type: "JSXIdentifier", name: "this", start: thisExpr.start, end: thisExpr.end, range: thisExpr.range, }; default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXMemberExpressionObject`); } } function deserializeJSXExpressionContainer(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXExpressionContainer", expression: null, start, end, range: [start, end], }; node.expression = deserializeJSXExpression(pos + 8); return node; } function deserializeJSXExpression(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 deserializeJSXEmptyExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXExpression`); } } function deserializeJSXEmptyExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "JSXEmptyExpression", start, end, range: [start, end], }; } function deserializeJSXAttributeItem(pos) { switch (uint8[pos]) { case 0: return deserializeBoxJSXAttribute(pos + 8); case 1: return deserializeBoxJSXSpreadAttribute(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXAttributeItem`); } } function deserializeJSXAttribute(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXAttribute", name: null, value: null, start, end, range: [start, end], }; node.name = deserializeJSXAttributeName(pos + 8); node.value = deserializeOptionJSXAttributeValue(pos + 24); return node; } function deserializeJSXSpreadAttribute(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXSpreadAttribute", argument: null, start, end, range: [start, end], }; node.argument = deserializeExpression(pos + 8); return node; } function deserializeJSXAttributeName(pos) { switch (uint8[pos]) { case 0: return deserializeBoxJSXIdentifier(pos + 8); case 1: return deserializeBoxJSXNamespacedName(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXAttributeName`); } } function deserializeJSXAttributeValue(pos) { switch (uint8[pos]) { case 0: return deserializeBoxStringLiteral(pos + 8); case 1: return deserializeBoxJSXExpressionContainer(pos + 8); case 2: return deserializeBoxJSXElement(pos + 8); case 3: return deserializeBoxJSXFragment(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXAttributeValue`); } } function deserializeJSXIdentifier(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "JSXIdentifier", name: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeJSXChild(pos) { switch (uint8[pos]) { case 0: return deserializeBoxJSXText(pos + 8); case 1: return deserializeBoxJSXElement(pos + 8); case 2: return deserializeBoxJSXFragment(pos + 8); case 3: return deserializeBoxJSXExpressionContainer(pos + 8); case 4: return deserializeBoxJSXSpreadChild(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for JSXChild`); } } function deserializeJSXSpreadChild(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "JSXSpreadChild", expression: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); return node; } function deserializeJSXText(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "JSXText", value: deserializeStr(pos + 8), raw: deserializeOptionStr(pos + 24), start, end, range: [start, end], }; } function deserializeTSThisParameter(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Identifier", decorators: null, name: null, optional: null, typeAnnotation: null, start, end, range: [start, end], }; node.decorators = []; node.name = "this"; node.optional = false; node.typeAnnotation = deserializeOptionBoxTSTypeAnnotation(pos + 16); return node; } function deserializeTSEnumDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSEnumDeclaration", id: null, body: null, const: deserializeBool(pos + 76), declare: deserializeBool(pos + 77), start, end, range: [start, end], }; node.id = deserializeBindingIdentifier(pos + 8); node.body = deserializeTSEnumBody(pos + 40); return node; } function deserializeTSEnumBody(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSEnumBody", members: null, start, end, range: [start, end], }; node.members = deserializeVecTSEnumMember(pos + 8); return node; } function deserializeTSEnumMember(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSEnumMember", id: null, initializer: null, computed: null, start, end, range: [start, end], }; node.id = deserializeTSEnumMemberName(pos + 8); node.initializer = deserializeOptionExpression(pos + 24); node.computed = deserializeU8(pos + 8) > 1; return node; } function deserializeTSEnumMemberName(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierName(pos + 8); case 1: return deserializeBoxStringLiteral(pos + 8); case 2: return deserializeBoxStringLiteral(pos + 8); case 3: return deserializeBoxTemplateLiteral(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSEnumMemberName`); } } function deserializeTSTypeAnnotation(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeAnnotation", typeAnnotation: null, start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); return node; } function deserializeTSLiteralType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSLiteralType", literal: null, start, end, range: [start, end], }; node.literal = deserializeTSLiteral(pos + 8); return node; } function deserializeTSLiteral(pos) { switch (uint8[pos]) { case 0: return deserializeBoxBooleanLiteral(pos + 8); case 1: return deserializeBoxNumericLiteral(pos + 8); case 2: return deserializeBoxBigIntLiteral(pos + 8); case 3: return deserializeBoxStringLiteral(pos + 8); case 4: return deserializeBoxTemplateLiteral(pos + 8); case 5: return deserializeBoxUnaryExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSLiteral`); } } function deserializeTSType(pos) { switch (uint8[pos]) { case 0: return deserializeBoxTSAnyKeyword(pos + 8); case 1: return deserializeBoxTSBigIntKeyword(pos + 8); case 2: return deserializeBoxTSBooleanKeyword(pos + 8); case 3: return deserializeBoxTSIntrinsicKeyword(pos + 8); case 4: return deserializeBoxTSNeverKeyword(pos + 8); case 5: return deserializeBoxTSNullKeyword(pos + 8); case 6: return deserializeBoxTSNumberKeyword(pos + 8); case 7: return deserializeBoxTSObjectKeyword(pos + 8); case 8: return deserializeBoxTSStringKeyword(pos + 8); case 9: return deserializeBoxTSSymbolKeyword(pos + 8); case 10: return deserializeBoxTSThisType(pos + 8); case 11: return deserializeBoxTSUndefinedKeyword(pos + 8); case 12: return deserializeBoxTSUnknownKeyword(pos + 8); case 13: return deserializeBoxTSVoidKeyword(pos + 8); case 14: return deserializeBoxTSArrayType(pos + 8); case 15: return deserializeBoxTSConditionalType(pos + 8); case 16: return deserializeBoxTSConstructorType(pos + 8); case 17: return deserializeBoxTSFunctionType(pos + 8); case 18: return deserializeBoxTSImportType(pos + 8); case 19: return deserializeBoxTSIndexedAccessType(pos + 8); case 20: return deserializeBoxTSInferType(pos + 8); case 21: return deserializeBoxTSIntersectionType(pos + 8); case 22: return deserializeBoxTSLiteralType(pos + 8); case 23: return deserializeBoxTSMappedType(pos + 8); case 24: return deserializeBoxTSNamedTupleMember(pos + 8); case 26: return deserializeBoxTSTemplateLiteralType(pos + 8); case 27: return deserializeBoxTSTupleType(pos + 8); case 28: return deserializeBoxTSTypeLiteral(pos + 8); case 29: return deserializeBoxTSTypeOperator(pos + 8); case 30: return deserializeBoxTSTypePredicate(pos + 8); case 31: return deserializeBoxTSTypeQuery(pos + 8); case 32: return deserializeBoxTSTypeReference(pos + 8); case 33: return deserializeBoxTSUnionType(pos + 8); case 34: return deserializeBoxTSParenthesizedType(pos + 8); case 35: return deserializeBoxJSDocNullableType(pos + 8); case 36: return deserializeBoxJSDocNonNullableType(pos + 8); case 37: return deserializeBoxJSDocUnknownType(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSType`); } } function deserializeTSConditionalType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSConditionalType", checkType: null, extendsType: null, trueType: null, falseType: null, start, end, range: [start, end], }; node.checkType = deserializeTSType(pos + 8); node.extendsType = deserializeTSType(pos + 24); node.trueType = deserializeTSType(pos + 40); node.falseType = deserializeTSType(pos + 56); return node; } function deserializeTSUnionType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSUnionType", types: null, start, end, range: [start, end], }; node.types = deserializeVecTSType(pos + 8); return node; } function deserializeTSIntersectionType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSIntersectionType", types: null, start, end, range: [start, end], }; node.types = deserializeVecTSType(pos + 8); return node; } function deserializeTSParenthesizedType(pos) { let node; { let start, end; node = { type: "TSParenthesizedType", typeAnnotation: null, start: (start = deserializeU32(pos)), end: (end = deserializeU32(pos + 4)), range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); } return node; } function deserializeTSTypeOperator(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeOperator", operator: deserializeTSTypeOperatorOperator(pos + 24), typeAnnotation: null, start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); return node; } function deserializeTSTypeOperatorOperator(pos) { switch (uint8[pos]) { case 0: return "keyof"; case 1: return "unique"; case 2: return "readonly"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSTypeOperatorOperator`); } } function deserializeTSArrayType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSArrayType", elementType: null, start, end, range: [start, end], }; node.elementType = deserializeTSType(pos + 8); return node; } function deserializeTSIndexedAccessType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSIndexedAccessType", objectType: null, indexType: null, start, end, range: [start, end], }; node.objectType = deserializeTSType(pos + 8); node.indexType = deserializeTSType(pos + 24); return node; } function deserializeTSTupleType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTupleType", elementTypes: null, start, end, range: [start, end], }; node.elementTypes = deserializeVecTSTupleElement(pos + 8); return node; } function deserializeTSNamedTupleMember(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSNamedTupleMember", label: null, elementType: null, optional: deserializeBool(pos + 48), start, end, range: [start, end], }; node.label = deserializeIdentifierName(pos + 8); node.elementType = deserializeTSTupleElement(pos + 32); return node; } function deserializeTSOptionalType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSOptionalType", typeAnnotation: null, start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); return node; } function deserializeTSRestType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSRestType", typeAnnotation: null, start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); return node; } function deserializeTSTupleElement(pos) { switch (uint8[pos]) { case 0: return deserializeBoxTSAnyKeyword(pos + 8); case 1: return deserializeBoxTSBigIntKeyword(pos + 8); case 2: return deserializeBoxTSBooleanKeyword(pos + 8); case 3: return deserializeBoxTSIntrinsicKeyword(pos + 8); case 4: return deserializeBoxTSNeverKeyword(pos + 8); case 5: return deserializeBoxTSNullKeyword(pos + 8); case 6: return deserializeBoxTSNumberKeyword(pos + 8); case 7: return deserializeBoxTSObjectKeyword(pos + 8); case 8: return deserializeBoxTSStringKeyword(pos + 8); case 9: return deserializeBoxTSSymbolKeyword(pos + 8); case 10: return deserializeBoxTSThisType(pos + 8); case 11: return deserializeBoxTSUndefinedKeyword(pos + 8); case 12: return deserializeBoxTSUnknownKeyword(pos + 8); case 13: return deserializeBoxTSVoidKeyword(pos + 8); case 14: return deserializeBoxTSArrayType(pos + 8); case 15: return deserializeBoxTSConditionalType(pos + 8); case 16: return deserializeBoxTSConstructorType(pos + 8); case 17: return deserializeBoxTSFunctionType(pos + 8); case 18: return deserializeBoxTSImportType(pos + 8); case 19: return deserializeBoxTSIndexedAccessType(pos + 8); case 20: return deserializeBoxTSInferType(pos + 8); case 21: return deserializeBoxTSIntersectionType(pos + 8); case 22: return deserializeBoxTSLiteralType(pos + 8); case 23: return deserializeBoxTSMappedType(pos + 8); case 24: return deserializeBoxTSNamedTupleMember(pos + 8); case 26: return deserializeBoxTSTemplateLiteralType(pos + 8); case 27: return deserializeBoxTSTupleType(pos + 8); case 28: return deserializeBoxTSTypeLiteral(pos + 8); case 29: return deserializeBoxTSTypeOperator(pos + 8); case 30: return deserializeBoxTSTypePredicate(pos + 8); case 31: return deserializeBoxTSTypeQuery(pos + 8); case 32: return deserializeBoxTSTypeReference(pos + 8); case 33: return deserializeBoxTSUnionType(pos + 8); case 34: return deserializeBoxTSParenthesizedType(pos + 8); case 35: return deserializeBoxJSDocNullableType(pos + 8); case 36: return deserializeBoxJSDocNonNullableType(pos + 8); case 37: return deserializeBoxJSDocUnknownType(pos + 8); case 64: return deserializeBoxTSOptionalType(pos + 8); case 65: return deserializeBoxTSRestType(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSTupleElement`); } } function deserializeTSAnyKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSAnyKeyword", start, end, range: [start, end], }; } function deserializeTSStringKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSStringKeyword", start, end, range: [start, end], }; } function deserializeTSBooleanKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSBooleanKeyword", start, end, range: [start, end], }; } function deserializeTSNumberKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSNumberKeyword", start, end, range: [start, end], }; } function deserializeTSNeverKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSNeverKeyword", start, end, range: [start, end], }; } function deserializeTSIntrinsicKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSIntrinsicKeyword", start, end, range: [start, end], }; } function deserializeTSUnknownKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSUnknownKeyword", start, end, range: [start, end], }; } function deserializeTSNullKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSNullKeyword", start, end, range: [start, end], }; } function deserializeTSUndefinedKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSUndefinedKeyword", start, end, range: [start, end], }; } function deserializeTSVoidKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSVoidKeyword", start, end, range: [start, end], }; } function deserializeTSSymbolKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSSymbolKeyword", start, end, range: [start, end], }; } function deserializeTSThisType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSThisType", start, end, range: [start, end], }; } function deserializeTSObjectKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSObjectKeyword", start, end, range: [start, end], }; } function deserializeTSBigIntKeyword(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSBigIntKeyword", start, end, range: [start, end], }; } function deserializeTSTypeReference(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeReference", typeName: null, typeArguments: null, start, end, range: [start, end], }; node.typeName = deserializeTSTypeName(pos + 8); node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 24); return node; } function deserializeTSTypeName(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSQualifiedName(pos + 8); case 2: return deserializeBoxThisExpression(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSTypeName`); } } function deserializeTSQualifiedName(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSQualifiedName", left: null, right: null, start, end, range: [start, end], }; node.left = deserializeTSTypeName(pos + 8); node.right = deserializeIdentifierName(pos + 24); return node; } function deserializeTSTypeParameterInstantiation(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeParameterInstantiation", params: null, start, end, range: [start, end], }; node.params = deserializeVecTSType(pos + 8); return node; } function deserializeTSTypeParameter(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeParameter", name: null, constraint: null, default: null, in: deserializeBool(pos + 72), out: deserializeBool(pos + 73), const: deserializeBool(pos + 74), start, end, range: [start, end], }; node.name = deserializeBindingIdentifier(pos + 8); node.constraint = deserializeOptionTSType(pos + 40); node.default = deserializeOptionTSType(pos + 56); return node; } function deserializeTSTypeParameterDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeParameterDeclaration", params: null, start, end, range: [start, end], }; node.params = deserializeVecTSTypeParameter(pos + 8); return node; } function deserializeTSTypeAliasDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeAliasDeclaration", id: null, typeParameters: null, typeAnnotation: null, declare: deserializeBool(pos + 68), start, end, range: [start, end], }; node.id = deserializeBindingIdentifier(pos + 8); node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 40); node.typeAnnotation = deserializeTSType(pos + 48); return node; } function deserializeTSInterfaceDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSInterfaceDeclaration", id: null, typeParameters: null, extends: null, body: null, declare: deserializeBool(pos + 84), start, end, range: [start, end], }; node.id = deserializeBindingIdentifier(pos + 8); node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 40); node.extends = deserializeVecTSInterfaceHeritage(pos + 48); node.body = deserializeBoxTSInterfaceBody(pos + 72); return node; } function deserializeTSInterfaceBody(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSInterfaceBody", body: null, start, end, range: [start, end], }; node.body = deserializeVecTSSignature(pos + 8); return node; } function deserializeTSPropertySignature(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSPropertySignature", computed: deserializeBool(pos + 32), optional: deserializeBool(pos + 33), readonly: deserializeBool(pos + 34), key: null, typeAnnotation: null, accessibility: null, static: null, start, end, range: [start, end], }; node.key = deserializePropertyKey(pos + 8); node.typeAnnotation = deserializeOptionBoxTSTypeAnnotation(pos + 24); node.static = false; return node; } function deserializeTSSignature(pos) { switch (uint8[pos]) { case 0: return deserializeBoxTSIndexSignature(pos + 8); case 1: return deserializeBoxTSPropertySignature(pos + 8); case 2: return deserializeBoxTSCallSignatureDeclaration(pos + 8); case 3: return deserializeBoxTSConstructSignatureDeclaration(pos + 8); case 4: return deserializeBoxTSMethodSignature(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSSignature`); } } function deserializeTSIndexSignature(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSIndexSignature", parameters: null, typeAnnotation: null, readonly: deserializeBool(pos + 40), static: deserializeBool(pos + 41), accessibility: null, start, end, range: [start, end], }; node.parameters = deserializeVecTSIndexSignatureName(pos + 8); node.typeAnnotation = deserializeBoxTSTypeAnnotation(pos + 32); return node; } function deserializeTSCallSignatureDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSCallSignatureDeclaration", typeParameters: null, params: null, returnType: null, start, end, range: [start, end], }, params = deserializeBoxFormalParameters(pos + 24), thisParam = deserializeOptionBoxTSThisParameter(pos + 16); thisParam !== null && params.unshift(thisParam); node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 8); node.params = params; node.returnType = deserializeOptionBoxTSTypeAnnotation(pos + 32); return node; } function deserializeTSMethodSignatureKind(pos) { switch (uint8[pos]) { case 0: return "method"; case 1: return "get"; case 2: return "set"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSMethodSignatureKind`); } } function deserializeTSMethodSignature(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSMethodSignature", key: null, computed: deserializeBool(pos + 60), optional: deserializeBool(pos + 61), kind: deserializeTSMethodSignatureKind(pos + 62), typeParameters: null, params: null, returnType: null, accessibility: null, readonly: null, static: null, start, end, range: [start, end], }, params = deserializeBoxFormalParameters(pos + 40), thisParam = deserializeOptionBoxTSThisParameter(pos + 32); thisParam !== null && params.unshift(thisParam); node.key = deserializePropertyKey(pos + 8); node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 24); node.params = params; node.returnType = deserializeOptionBoxTSTypeAnnotation(pos + 48); node.readonly = false; node.static = false; return node; } function deserializeTSConstructSignatureDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSConstructSignatureDeclaration", typeParameters: null, params: null, returnType: null, start, end, range: [start, end], }; node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 8); node.params = deserializeBoxFormalParameters(pos + 16); node.returnType = deserializeOptionBoxTSTypeAnnotation(pos + 24); return node; } function deserializeTSIndexSignatureName(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Identifier", decorators: null, name: deserializeStr(pos + 8), optional: null, typeAnnotation: null, start, end, range: [start, end], }; node.decorators = []; node.optional = false; node.typeAnnotation = deserializeBoxTSTypeAnnotation(pos + 24); return node; } function deserializeTSInterfaceHeritage(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSInterfaceHeritage", expression: null, typeArguments: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 24); return node; } function deserializeTSTypePredicate(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypePredicate", parameterName: null, asserts: deserializeBool(pos + 32), typeAnnotation: null, start, end, range: [start, end], }; node.parameterName = deserializeTSTypePredicateName(pos + 8); node.typeAnnotation = deserializeOptionBoxTSTypeAnnotation(pos + 24); return node; } function deserializeTSTypePredicateName(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierName(pos + 8); case 1: return deserializeTSThisType(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSTypePredicateName`); } } function deserializeTSModuleDeclaration(pos) { let kind = deserializeTSModuleDeclarationKind(pos + 84), start = deserializeU32(pos), end = deserializeU32(pos + 4), declare = deserializeBool(pos + 85), node, body = deserializeOptionTSModuleDeclarationBody(pos + 64); if (body === null) { node = { type: "TSModuleDeclaration", id: null, kind, declare, global: false, start, end, range: [start, end], }; node.id = deserializeTSModuleDeclarationName(pos + 8); } else { node = { type: "TSModuleDeclaration", id: null, body, kind, declare, global: false, start, end, range: [start, end], }; let id = deserializeTSModuleDeclarationName(pos + 8); if (body.type === "TSModuleBlock") node.id = id; else { let innerId = body.id; if (innerId.type === "Identifier") { let start, end; node.id = { type: "TSQualifiedName", left: id, right: innerId, start: (start = id.start), end: (end = innerId.end), range: [start, end], }; } else { // Replace `left` of innermost `TSQualifiedName` with a nested `TSQualifiedName` with `id` of // this module on left, and previous `left` of innermost `TSQualifiedName` on right node.id = innerId; let { start } = id; for (;;) { innerId.start = innerId.range[0] = start; if (innerId.left.type === "Identifier") break; innerId = innerId.left; } let end, right = innerId.left; innerId.left = { type: "TSQualifiedName", left: id, right, start, end: (end = right.end), range: [start, end], }; } if (Object.hasOwn(body, "body")) { body = body.body; node.body = body; } else body = null; } } return node; } function deserializeTSModuleDeclarationKind(pos) { switch (uint8[pos]) { case 0: return "module"; case 1: return "namespace"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSModuleDeclarationKind`); } } function deserializeTSModuleDeclarationName(pos) { switch (uint8[pos]) { case 0: return deserializeBindingIdentifier(pos + 8); case 1: return deserializeStringLiteral(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSModuleDeclarationName`); } } function deserializeTSModuleDeclarationBody(pos) { switch (uint8[pos]) { case 0: return deserializeBoxTSModuleDeclaration(pos + 8); case 1: return deserializeBoxTSModuleBlock(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSModuleDeclarationBody`); } } function deserializeTSGlobalDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSModuleDeclaration", id: null, body: null, kind: null, declare: deserializeBool(pos + 76), global: null, start, end, range: [start, end], }, keywordStart, keywordEnd; node.id = { type: "Identifier", name: "global", start: (keywordStart = deserializeU32(pos + 8)), end: (keywordEnd = deserializeU32(pos + 12)), range: [keywordStart, keywordEnd], }; node.body = deserializeTSModuleBlock(pos + 16); node.kind = "global"; node.global = true; return node; } function deserializeTSModuleBlock(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSModuleBlock", body: null, start, end, range: [start, end], }, body = deserializeVecDirective(pos + 8); body.push(...deserializeVecStatement(pos + 32)); node.body = body; return node; } function deserializeTSTypeLiteral(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeLiteral", members: null, start, end, range: [start, end], }; node.members = deserializeVecTSSignature(pos + 8); return node; } function deserializeTSInferType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSInferType", typeParameter: null, start, end, range: [start, end], }; node.typeParameter = deserializeBoxTSTypeParameter(pos + 8); return node; } function deserializeTSTypeQuery(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeQuery", exprName: null, typeArguments: null, start, end, range: [start, end], }; node.exprName = deserializeTSTypeQueryExprName(pos + 8); node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 24); return node; } function deserializeTSTypeQueryExprName(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSQualifiedName(pos + 8); case 2: return deserializeBoxThisExpression(pos + 8); case 3: return deserializeBoxTSImportType(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSTypeQueryExprName`); } } function deserializeTSImportType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSImportType", source: null, options: null, qualifier: null, typeArguments: null, start, end, range: [start, end], }; node.source = deserializeStringLiteral(pos + 8); node.options = deserializeOptionBoxObjectExpression(pos + 56); node.qualifier = deserializeOptionTSImportTypeQualifier(pos + 64); node.typeArguments = deserializeOptionBoxTSTypeParameterInstantiation(pos + 80); return node; } function deserializeTSImportTypeQualifier(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierName(pos + 8); case 1: return deserializeBoxTSImportTypeQualifiedName(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSImportTypeQualifier`); } } function deserializeTSImportTypeQualifiedName(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSQualifiedName", left: null, right: null, start, end, range: [start, end], }; node.left = deserializeTSImportTypeQualifier(pos + 8); node.right = deserializeIdentifierName(pos + 24); return node; } function deserializeTSFunctionType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSFunctionType", typeParameters: null, params: null, returnType: null, start, end, range: [start, end], }, params = deserializeBoxFormalParameters(pos + 24), thisParam = deserializeOptionBoxTSThisParameter(pos + 16); thisParam !== null && params.unshift(thisParam); node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 8); node.params = params; node.returnType = deserializeBoxTSTypeAnnotation(pos + 32); return node; } function deserializeTSConstructorType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSConstructorType", abstract: deserializeBool(pos + 36), typeParameters: null, params: null, returnType: null, start, end, range: [start, end], }; node.typeParameters = deserializeOptionBoxTSTypeParameterDeclaration(pos + 8); node.params = deserializeBoxFormalParameters(pos + 16); node.returnType = deserializeBoxTSTypeAnnotation(pos + 24); return node; } function deserializeTSMappedType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSMappedType", key: null, constraint: null, nameType: null, typeAnnotation: null, optional: null, readonly: deserializeOptionTSMappedTypeModifierOperator(pos + 53), start, end, range: [start, end], }, typeParameter = deserializeBoxTSTypeParameter(pos + 8), key = typeParameter.name, { constraint } = typeParameter, optional = deserializeOptionTSMappedTypeModifierOperator(pos + 52); optional === null && (optional = false); node.key = key; node.constraint = constraint; node.nameType = deserializeOptionTSType(pos + 16); node.typeAnnotation = deserializeOptionTSType(pos + 32); node.optional = optional; return node; } function deserializeTSMappedTypeModifierOperator(pos) { switch (uint8[pos]) { case 0: return true; case 1: return "+"; case 2: return "-"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSMappedTypeModifierOperator`); } } function deserializeTSTemplateLiteralType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTemplateLiteralType", quasis: null, types: null, start, end, range: [start, end], }; node.quasis = deserializeVecTemplateElement(pos + 8); node.types = deserializeVecTSType(pos + 32); return node; } function deserializeTSAsExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSAsExpression", expression: null, typeAnnotation: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); node.typeAnnotation = deserializeTSType(pos + 24); return node; } function deserializeTSSatisfiesExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSSatisfiesExpression", expression: null, typeAnnotation: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); node.typeAnnotation = deserializeTSType(pos + 24); return node; } function deserializeTSTypeAssertion(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSTypeAssertion", typeAnnotation: null, expression: null, start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); node.expression = deserializeExpression(pos + 24); return node; } function deserializeTSImportEqualsDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSImportEqualsDeclaration", id: null, moduleReference: null, importKind: deserializeImportOrExportKind(pos + 56), start, end, range: [start, end], }; node.id = deserializeBindingIdentifier(pos + 8); node.moduleReference = deserializeTSModuleReference(pos + 40); return node; } function deserializeTSModuleReference(pos) { switch (uint8[pos]) { case 0: return deserializeBoxIdentifierReference(pos + 8); case 1: return deserializeBoxTSQualifiedName(pos + 8); case 2: return deserializeBoxThisExpression(pos + 8); case 3: return deserializeBoxTSExternalModuleReference(pos + 8); default: throw Error(`Unexpected discriminant ${uint8[pos]} for TSModuleReference`); } } function deserializeTSExternalModuleReference(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSExternalModuleReference", expression: null, start, end, range: [start, end], }; node.expression = deserializeStringLiteral(pos + 8); return node; } function deserializeTSNonNullExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSNonNullExpression", expression: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); return node; } function deserializeDecorator(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "Decorator", expression: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); return node; } function deserializeTSExportAssignment(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSExportAssignment", expression: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); return node; } function deserializeTSNamespaceExportDeclaration(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSNamespaceExportDeclaration", id: null, start, end, range: [start, end], }; node.id = deserializeIdentifierName(pos + 8); return node; } function deserializeTSInstantiationExpression(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSInstantiationExpression", expression: null, typeArguments: null, start, end, range: [start, end], }; node.expression = deserializeExpression(pos + 8); node.typeArguments = deserializeBoxTSTypeParameterInstantiation(pos + 24); return node; } function deserializeImportOrExportKind(pos) { switch (uint8[pos]) { case 0: return "value"; case 1: return "type"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ImportOrExportKind`); } } function deserializeJSDocNullableType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSJSDocNullableType", typeAnnotation: null, postfix: deserializeBool(pos + 24), start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); return node; } function deserializeJSDocNonNullableType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4), node = { type: "TSJSDocNonNullableType", typeAnnotation: null, postfix: deserializeBool(pos + 24), start, end, range: [start, end], }; node.typeAnnotation = deserializeTSType(pos + 8); return node; } function deserializeJSDocUnknownType(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type: "TSJSDocUnknownType", start, end, range: [start, end], }; } function deserializeCommentKind(pos) { switch (uint8[pos]) { case 0: return "Line"; case 1: return "Block"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for CommentKind`); } } function deserializeComment(pos) { let type = deserializeCommentKind(pos + 12), start = deserializeU32(pos), end = deserializeU32(pos + 4); return { type, value: sourceText.slice(start + 2, end - (type === "Line" ? 0 : 2)), start, end, range: [start, end], }; } function deserializeNameSpan(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { value: deserializeStr(pos + 8), start, end, range: [start, end], }; } function deserializeImportEntry(pos) { return { importName: deserializeImportImportName(pos + 32), localName: deserializeNameSpan(pos + 64), isType: deserializeBool(pos + 88), }; } function deserializeImportImportName(pos) { switch (uint8[pos]) { case 0: var nameSpan = deserializeNameSpan(pos + 8); return { kind: "Name", name: nameSpan.value, start: nameSpan.start, end: nameSpan.end, range: nameSpan.range, }; case 1: return { kind: "NamespaceObject", name: null, start: null, end: null, range: [null, null], }; case 2: var { start, end } = deserializeSpan(pos + 8); return { kind: "Default", name: null, start, end, range: [start, end], }; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ImportImportName`); } } function deserializeExportEntry(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { moduleRequest: deserializeOptionNameSpan(pos + 16), importName: deserializeExportImportName(pos + 40), exportName: deserializeExportExportName(pos + 72), localName: deserializeExportLocalName(pos + 104), isType: deserializeBool(pos + 136), start, end, range: [start, end], }; } function deserializeExportImportName(pos) { switch (uint8[pos]) { case 0: var nameSpan = deserializeNameSpan(pos + 8); return { kind: "Name", name: nameSpan.value, start: nameSpan.start, end: nameSpan.end, range: nameSpan.range, }; case 1: return { kind: "All", name: null, start: null, end: null, range: [null, null], }; case 2: return { kind: "AllButDefault", name: null, start: null, end: null, range: [null, null], }; case 3: return { kind: "None", name: null, start: null, end: null, range: [null, null], }; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ExportImportName`); } } function deserializeExportExportName(pos) { switch (uint8[pos]) { case 0: var nameSpan = deserializeNameSpan(pos + 8); return { kind: "Name", name: nameSpan.value, start: nameSpan.start, end: nameSpan.end, range: nameSpan.range, }; case 1: var { start, end } = deserializeSpan(pos + 8); return { kind: "Default", name: null, start, end, range: [start, end], }; case 2: return { kind: "None", name: null, start: null, end: null, range: [null, null], }; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ExportExportName`); } } function deserializeExportLocalName(pos) { switch (uint8[pos]) { case 0: var nameSpan = deserializeNameSpan(pos + 8); return { kind: "Name", name: nameSpan.value, start: nameSpan.start, end: nameSpan.end, range: nameSpan.range, }; case 1: var nameSpan = deserializeNameSpan(pos + 8); return { kind: "Default", name: nameSpan.value, start: nameSpan.start, end: nameSpan.end, range: nameSpan.range, }; case 2: return { kind: "None", name: null, start: null, end: null, range: [null, null], }; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ExportLocalName`); } } function deserializeDynamicImport(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { moduleRequest: deserializeSpan(pos + 8), start, end, range: [start, end], }; } function deserializeAssignmentOperator(pos) { switch (uint8[pos]) { case 0: return "="; case 1: return "+="; case 2: return "-="; case 3: return "*="; case 4: return "/="; case 5: return "%="; case 6: return "**="; case 7: return "<<="; case 8: return ">>="; case 9: return ">>>="; case 10: return "|="; case 11: return "^="; case 12: return "&="; case 13: return "||="; case 14: return "&&="; case 15: return "??="; default: throw Error(`Unexpected discriminant ${uint8[pos]} for AssignmentOperator`); } } function deserializeBinaryOperator(pos) { switch (uint8[pos]) { case 0: return "=="; case 1: return "!="; case 2: return "==="; case 3: return "!=="; case 4: return "<"; case 5: return "<="; case 6: return ">"; case 7: return ">="; case 8: return "+"; case 9: return "-"; case 10: return "*"; case 11: return "/"; case 12: return "%"; case 13: return "**"; case 14: return "<<"; case 15: return ">>"; case 16: return ">>>"; case 17: return "|"; case 18: return "^"; case 19: return "&"; case 20: return "in"; case 21: return "instanceof"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for BinaryOperator`); } } function deserializeLogicalOperator(pos) { switch (uint8[pos]) { case 0: return "||"; case 1: return "&&"; case 2: return "??"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for LogicalOperator`); } } function deserializeUnaryOperator(pos) { switch (uint8[pos]) { case 0: return "+"; case 1: return "-"; case 2: return "!"; case 3: return "~"; case 4: return "typeof"; case 5: return "void"; case 6: return "delete"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for UnaryOperator`); } } function deserializeUpdateOperator(pos) { switch (uint8[pos]) { case 0: return "++"; case 1: return "--"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for UpdateOperator`); } } function deserializeSpan(pos) { return { start: deserializeU32(pos), end: deserializeU32(pos + 4), }; } function deserializeModuleKind(pos) { switch (uint8[pos]) { case 0: return "script"; case 1: return "module"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ModuleKind`); } } function deserializeRawTransferData(pos) { return { program: deserializeProgram(pos), comments: deserializeVecComment(pos + 128), module: deserializeEcmaScriptModule(pos + 152), errors: deserializeVecError(pos + 256), }; } function deserializeError(pos) { return { severity: deserializeErrorSeverity(pos + 72), message: deserializeStr(pos), labels: deserializeVecErrorLabel(pos + 16), helpMessage: deserializeOptionStr(pos + 40), codeframe: deserializeStr(pos + 56), }; } function deserializeErrorSeverity(pos) { switch (uint8[pos]) { case 0: return "Error"; case 1: return "Warning"; case 2: return "Advice"; default: throw Error(`Unexpected discriminant ${uint8[pos]} for ErrorSeverity`); } } function deserializeErrorLabel(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { message: deserializeOptionStr(pos + 8), start, end, range: [start, end], }; } function deserializeEcmaScriptModule(pos) { return { hasModuleSyntax: deserializeBool(pos + 96), staticImports: deserializeVecStaticImport(pos), staticExports: deserializeVecStaticExport(pos + 24), dynamicImports: deserializeVecDynamicImport(pos + 48), importMetas: deserializeVecSpan(pos + 72), }; } function deserializeStaticImport(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { moduleRequest: deserializeNameSpan(pos + 8), entries: deserializeVecImportEntry(pos + 32), start, end, range: [start, end], }; } function deserializeStaticExport(pos) { let start = deserializeU32(pos), end = deserializeU32(pos + 4); return { entries: deserializeVecExportEntry(pos + 8), start, end, range: [start, end], }; } function deserializeU32(pos) { return uint32[pos >> 2]; } function deserializeU8(pos) { return uint8[pos]; } function deserializeStr(pos) { let pos32 = pos >> 2, len = uint32[pos32 + 2]; if (len === 0) return ""; pos = uint32[pos32]; if (sourceIsAscii && pos < sourceByteLen) return sourceText.substr(pos, len); // Longer strings use `TextDecoder` // TODO: Find best switch-over point let end = pos + len; if (len > 50) return decodeStr(uint8.subarray(pos, end)); // Shorter strings decode by hand to avoid native call let out = "", c; do { c = uint8[pos++]; if (c < 128) out += fromCodePoint(c); else { out += decodeStr(uint8.subarray(pos - 1, end)); break; } } while (pos < end); return out; } function deserializeVecComment(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeComment(pos)); pos += 16; } return arr; } function deserializeOptionHashbang(pos) { if (uint32[(pos + 8) >> 2] === 0 && uint32[(pos + 12) >> 2] === 0) return null; return deserializeHashbang(pos); } function deserializeVecDirective(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 72; for (; pos !== endPos; ) { arr.push(deserializeDirective(pos)); pos += 72; } return arr; } function deserializeVecStatement(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeStatement(pos)); pos += 16; } return arr; } function deserializeBoxBooleanLiteral(pos) { return deserializeBooleanLiteral(uint32[pos >> 2]); } function deserializeBoxNullLiteral(pos) { return deserializeNullLiteral(uint32[pos >> 2]); } function deserializeBoxNumericLiteral(pos) { return deserializeNumericLiteral(uint32[pos >> 2]); } function deserializeBoxBigIntLiteral(pos) { return deserializeBigIntLiteral(uint32[pos >> 2]); } function deserializeBoxRegExpLiteral(pos) { return deserializeRegExpLiteral(uint32[pos >> 2]); } function deserializeBoxStringLiteral(pos) { return deserializeStringLiteral(uint32[pos >> 2]); } function deserializeBoxTemplateLiteral(pos) { return deserializeTemplateLiteral(uint32[pos >> 2]); } function deserializeBoxIdentifierReference(pos) { return deserializeIdentifierReference(uint32[pos >> 2]); } function deserializeBoxMetaProperty(pos) { return deserializeMetaProperty(uint32[pos >> 2]); } function deserializeBoxSuper(pos) { return deserializeSuper(uint32[pos >> 2]); } function deserializeBoxArrayExpression(pos) { return deserializeArrayExpression(uint32[pos >> 2]); } function deserializeBoxArrowFunctionExpression(pos) { return deserializeArrowFunctionExpression(uint32[pos >> 2]); } function deserializeBoxAssignmentExpression(pos) { return deserializeAssignmentExpression(uint32[pos >> 2]); } function deserializeBoxAwaitExpression(pos) { return deserializeAwaitExpression(uint32[pos >> 2]); } function deserializeBoxBinaryExpression(pos) { return deserializeBinaryExpression(uint32[pos >> 2]); } function deserializeBoxCallExpression(pos) { return deserializeCallExpression(uint32[pos >> 2]); } function deserializeBoxChainExpression(pos) { return deserializeChainExpression(uint32[pos >> 2]); } function deserializeBoxClass(pos) { return deserializeClass(uint32[pos >> 2]); } function deserializeBoxConditionalExpression(pos) { return deserializeConditionalExpression(uint32[pos >> 2]); } function deserializeBoxFunction(pos) { return deserializeFunction(uint32[pos >> 2]); } function deserializeBoxImportExpression(pos) { return deserializeImportExpression(uint32[pos >> 2]); } function deserializeBoxLogicalExpression(pos) { return deserializeLogicalExpression(uint32[pos >> 2]); } function deserializeBoxNewExpression(pos) { return deserializeNewExpression(uint32[pos >> 2]); } function deserializeBoxObjectExpression(pos) { return deserializeObjectExpression(uint32[pos >> 2]); } function deserializeBoxParenthesizedExpression(pos) { return deserializeParenthesizedExpression(uint32[pos >> 2]); } function deserializeBoxSequenceExpression(pos) { return deserializeSequenceExpression(uint32[pos >> 2]); } function deserializeBoxTaggedTemplateExpression(pos) { return deserializeTaggedTemplateExpression(uint32[pos >> 2]); } function deserializeBoxThisExpression(pos) { return deserializeThisExpression(uint32[pos >> 2]); } function deserializeBoxUnaryExpression(pos) { return deserializeUnaryExpression(uint32[pos >> 2]); } function deserializeBoxUpdateExpression(pos) { return deserializeUpdateExpression(uint32[pos >> 2]); } function deserializeBoxYieldExpression(pos) { return deserializeYieldExpression(uint32[pos >> 2]); } function deserializeBoxPrivateInExpression(pos) { return deserializePrivateInExpression(uint32[pos >> 2]); } function deserializeBoxJSXElement(pos) { return deserializeJSXElement(uint32[pos >> 2]); } function deserializeBoxJSXFragment(pos) { return deserializeJSXFragment(uint32[pos >> 2]); } function deserializeBoxTSAsExpression(pos) { return deserializeTSAsExpression(uint32[pos >> 2]); } function deserializeBoxTSSatisfiesExpression(pos) { return deserializeTSSatisfiesExpression(uint32[pos >> 2]); } function deserializeBoxTSTypeAssertion(pos) { return deserializeTSTypeAssertion(uint32[pos >> 2]); } function deserializeBoxTSNonNullExpression(pos) { return deserializeTSNonNullExpression(uint32[pos >> 2]); } function deserializeBoxTSInstantiationExpression(pos) { return deserializeTSInstantiationExpression(uint32[pos >> 2]); } function deserializeBoxV8IntrinsicExpression(pos) { return deserializeV8IntrinsicExpression(uint32[pos >> 2]); } function deserializeVecArrayExpressionElement(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeArrayExpressionElement(pos)); pos += 16; } return arr; } function deserializeBoxSpreadElement(pos) { return deserializeSpreadElement(uint32[pos >> 2]); } function deserializeVecObjectPropertyKind(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeObjectPropertyKind(pos)); pos += 16; } return arr; } function deserializeBoxObjectProperty(pos) { return deserializeObjectProperty(uint32[pos >> 2]); } function deserializeBool(pos) { return uint8[pos] === 1; } function deserializeBoxIdentifierName(pos) { return deserializeIdentifierName(uint32[pos >> 2]); } function deserializeBoxPrivateIdentifier(pos) { return deserializePrivateIdentifier(uint32[pos >> 2]); } function deserializeVecTemplateElement(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 48; for (; pos !== endPos; ) { arr.push(deserializeTemplateElement(pos)); pos += 48; } return arr; } function deserializeVecExpression(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeExpression(pos)); pos += 16; } return arr; } function deserializeBoxTSTypeParameterInstantiation(pos) { return deserializeTSTypeParameterInstantiation(uint32[pos >> 2]); } function deserializeOptionBoxTSTypeParameterInstantiation(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxTSTypeParameterInstantiation(pos); } function deserializeOptionStr(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeStr(pos); } function deserializeBoxComputedMemberExpression(pos) { return deserializeComputedMemberExpression(uint32[pos >> 2]); } function deserializeBoxStaticMemberExpression(pos) { return deserializeStaticMemberExpression(uint32[pos >> 2]); } function deserializeBoxPrivateFieldExpression(pos) { return deserializePrivateFieldExpression(uint32[pos >> 2]); } function deserializeVecArgument(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeArgument(pos)); pos += 16; } return arr; } function deserializeBoxArrayAssignmentTarget(pos) { return deserializeArrayAssignmentTarget(uint32[pos >> 2]); } function deserializeBoxObjectAssignmentTarget(pos) { return deserializeObjectAssignmentTarget(uint32[pos >> 2]); } function deserializeOptionAssignmentTargetMaybeDefault(pos) { if (uint8[pos] === 51) return null; return deserializeAssignmentTargetMaybeDefault(pos); } function deserializeVecOptionAssignmentTargetMaybeDefault(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeOptionAssignmentTargetMaybeDefault(pos)); pos += 16; } return arr; } function deserializeBoxAssignmentTargetRest(pos) { return deserializeAssignmentTargetRest(uint32[pos >> 2]); } function deserializeOptionBoxAssignmentTargetRest(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxAssignmentTargetRest(pos); } function deserializeVecAssignmentTargetProperty(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeAssignmentTargetProperty(pos)); pos += 16; } return arr; } function deserializeBoxAssignmentTargetWithDefault(pos) { return deserializeAssignmentTargetWithDefault(uint32[pos >> 2]); } function deserializeBoxAssignmentTargetPropertyIdentifier(pos) { return deserializeAssignmentTargetPropertyIdentifier(uint32[pos >> 2]); } function deserializeBoxAssignmentTargetPropertyProperty(pos) { return deserializeAssignmentTargetPropertyProperty(uint32[pos >> 2]); } function deserializeOptionExpression(pos) { if (uint8[pos] === 51) return null; return deserializeExpression(pos); } function deserializeBoxBlockStatement(pos) { return deserializeBlockStatement(uint32[pos >> 2]); } function deserializeBoxBreakStatement(pos) { return deserializeBreakStatement(uint32[pos >> 2]); } function deserializeBoxContinueStatement(pos) { return deserializeContinueStatement(uint32[pos >> 2]); } function deserializeBoxDebuggerStatement(pos) { return deserializeDebuggerStatement(uint32[pos >> 2]); } function deserializeBoxDoWhileStatement(pos) { return deserializeDoWhileStatement(uint32[pos >> 2]); } function deserializeBoxEmptyStatement(pos) { return deserializeEmptyStatement(uint32[pos >> 2]); } function deserializeBoxExpressionStatement(pos) { return deserializeExpressionStatement(uint32[pos >> 2]); } function deserializeBoxForInStatement(pos) { return deserializeForInStatement(uint32[pos >> 2]); } function deserializeBoxForOfStatement(pos) { return deserializeForOfStatement(uint32[pos >> 2]); } function deserializeBoxForStatement(pos) { return deserializeForStatement(uint32[pos >> 2]); } function deserializeBoxIfStatement(pos) { return deserializeIfStatement(uint32[pos >> 2]); } function deserializeBoxLabeledStatement(pos) { return deserializeLabeledStatement(uint32[pos >> 2]); } function deserializeBoxReturnStatement(pos) { return deserializeReturnStatement(uint32[pos >> 2]); } function deserializeBoxSwitchStatement(pos) { return deserializeSwitchStatement(uint32[pos >> 2]); } function deserializeBoxThrowStatement(pos) { return deserializeThrowStatement(uint32[pos >> 2]); } function deserializeBoxTryStatement(pos) { return deserializeTryStatement(uint32[pos >> 2]); } function deserializeBoxWhileStatement(pos) { return deserializeWhileStatement(uint32[pos >> 2]); } function deserializeBoxWithStatement(pos) { return deserializeWithStatement(uint32[pos >> 2]); } function deserializeBoxVariableDeclaration(pos) { return deserializeVariableDeclaration(uint32[pos >> 2]); } function deserializeBoxTSTypeAliasDeclaration(pos) { return deserializeTSTypeAliasDeclaration(uint32[pos >> 2]); } function deserializeBoxTSInterfaceDeclaration(pos) { return deserializeTSInterfaceDeclaration(uint32[pos >> 2]); } function deserializeBoxTSEnumDeclaration(pos) { return deserializeTSEnumDeclaration(uint32[pos >> 2]); } function deserializeBoxTSModuleDeclaration(pos) { return deserializeTSModuleDeclaration(uint32[pos >> 2]); } function deserializeBoxTSGlobalDeclaration(pos) { return deserializeTSGlobalDeclaration(uint32[pos >> 2]); } function deserializeBoxTSImportEqualsDeclaration(pos) { return deserializeTSImportEqualsDeclaration(uint32[pos >> 2]); } function deserializeVecVariableDeclarator(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 64; for (; pos !== endPos; ) { arr.push(deserializeVariableDeclarator(pos)); pos += 64; } return arr; } function deserializeOptionStatement(pos) { if (uint8[pos] === 70) return null; return deserializeStatement(pos); } function deserializeOptionForStatementInit(pos) { if (uint8[pos] === 65) return null; return deserializeForStatementInit(pos); } function deserializeOptionLabelIdentifier(pos) { if (uint32[(pos + 8) >> 2] === 0 && uint32[(pos + 12) >> 2] === 0) return null; return deserializeLabelIdentifier(pos); } function deserializeVecSwitchCase(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 48; for (; pos !== endPos; ) { arr.push(deserializeSwitchCase(pos)); pos += 48; } return arr; } function deserializeBoxCatchClause(pos) { return deserializeCatchClause(uint32[pos >> 2]); } function deserializeOptionBoxCatchClause(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxCatchClause(pos); } function deserializeOptionBoxBlockStatement(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxBlockStatement(pos); } function deserializeOptionCatchParameter(pos) { if (uint8[pos + 32] === 2) return null; return deserializeCatchParameter(pos); } function deserializeBoxTSTypeAnnotation(pos) { return deserializeTSTypeAnnotation(uint32[pos >> 2]); } function deserializeOptionBoxTSTypeAnnotation(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxTSTypeAnnotation(pos); } function deserializeBoxBindingIdentifier(pos) { return deserializeBindingIdentifier(uint32[pos >> 2]); } function deserializeBoxObjectPattern(pos) { return deserializeObjectPattern(uint32[pos >> 2]); } function deserializeBoxArrayPattern(pos) { return deserializeArrayPattern(uint32[pos >> 2]); } function deserializeBoxAssignmentPattern(pos) { return deserializeAssignmentPattern(uint32[pos >> 2]); } function deserializeVecBindingProperty(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 64; for (; pos !== endPos; ) { arr.push(deserializeBindingProperty(pos)); pos += 64; } return arr; } function deserializeBoxBindingRestElement(pos) { return deserializeBindingRestElement(uint32[pos >> 2]); } function deserializeOptionBoxBindingRestElement(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxBindingRestElement(pos); } function deserializeOptionBindingPattern(pos) { if (uint8[pos + 24] === 2) return null; return deserializeBindingPattern(pos); } function deserializeVecOptionBindingPattern(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 32; for (; pos !== endPos; ) { arr.push(deserializeOptionBindingPattern(pos)); pos += 32; } return arr; } function deserializeOptionBindingIdentifier(pos) { if (uint32[(pos + 8) >> 2] === 0 && uint32[(pos + 12) >> 2] === 0) return null; return deserializeBindingIdentifier(pos); } function deserializeBoxTSTypeParameterDeclaration(pos) { return deserializeTSTypeParameterDeclaration(uint32[pos >> 2]); } function deserializeOptionBoxTSTypeParameterDeclaration(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxTSTypeParameterDeclaration(pos); } function deserializeBoxTSThisParameter(pos) { return deserializeTSThisParameter(uint32[pos >> 2]); } function deserializeOptionBoxTSThisParameter(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxTSThisParameter(pos); } function deserializeBoxFormalParameters(pos) { return deserializeFormalParameters(uint32[pos >> 2]); } function deserializeBoxFunctionBody(pos) { return deserializeFunctionBody(uint32[pos >> 2]); } function deserializeOptionBoxFunctionBody(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxFunctionBody(pos); } function deserializeVecFormalParameter(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 72; for (; pos !== endPos; ) { arr.push(deserializeFormalParameter(pos)); pos += 72; } return arr; } function deserializeVecDecorator(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 24; for (; pos !== endPos; ) { arr.push(deserializeDecorator(pos)); pos += 24; } return arr; } function deserializeBoxClassBody(pos) { return deserializeClassBody(uint32[pos >> 2]); } function deserializeVecClassElement(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeClassElement(pos)); pos += 16; } return arr; } function deserializeBoxStaticBlock(pos) { return deserializeStaticBlock(uint32[pos >> 2]); } function deserializeBoxMethodDefinition(pos) { return deserializeMethodDefinition(uint32[pos >> 2]); } function deserializeBoxPropertyDefinition(pos) { return deserializePropertyDefinition(uint32[pos >> 2]); } function deserializeBoxAccessorProperty(pos) { return deserializeAccessorProperty(uint32[pos >> 2]); } function deserializeBoxTSIndexSignature(pos) { return deserializeTSIndexSignature(uint32[pos >> 2]); } function deserializeBoxImportDeclaration(pos) { return deserializeImportDeclaration(uint32[pos >> 2]); } function deserializeBoxExportAllDeclaration(pos) { return deserializeExportAllDeclaration(uint32[pos >> 2]); } function deserializeBoxExportDefaultDeclaration(pos) { return deserializeExportDefaultDeclaration(uint32[pos >> 2]); } function deserializeBoxExportNamedDeclaration(pos) { return deserializeExportNamedDeclaration(uint32[pos >> 2]); } function deserializeBoxTSExportAssignment(pos) { return deserializeTSExportAssignment(uint32[pos >> 2]); } function deserializeBoxTSNamespaceExportDeclaration(pos) { return deserializeTSNamespaceExportDeclaration(uint32[pos >> 2]); } function deserializeOptionImportPhase(pos) { if (uint8[pos] === 2) return null; return deserializeImportPhase(pos); } function deserializeVecImportDeclarationSpecifier(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeImportDeclarationSpecifier(pos)); pos += 16; } return arr; } function deserializeOptionVecImportDeclarationSpecifier(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeVecImportDeclarationSpecifier(pos); } function deserializeBoxWithClause(pos) { return deserializeWithClause(uint32[pos >> 2]); } function deserializeOptionBoxWithClause(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxWithClause(pos); } function deserializeBoxImportSpecifier(pos) { return deserializeImportSpecifier(uint32[pos >> 2]); } function deserializeBoxImportDefaultSpecifier(pos) { return deserializeImportDefaultSpecifier(uint32[pos >> 2]); } function deserializeBoxImportNamespaceSpecifier(pos) { return deserializeImportNamespaceSpecifier(uint32[pos >> 2]); } function deserializeVecImportAttribute(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 112; for (; pos !== endPos; ) { arr.push(deserializeImportAttribute(pos)); pos += 112; } return arr; } function deserializeOptionDeclaration(pos) { if (uint8[pos] === 31) return null; return deserializeDeclaration(pos); } function deserializeVecExportSpecifier(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 128; for (; pos !== endPos; ) { arr.push(deserializeExportSpecifier(pos)); pos += 128; } return arr; } function deserializeOptionStringLiteral(pos) { if (uint8[pos + 40] === 2) return null; return deserializeStringLiteral(pos); } function deserializeOptionModuleExportName(pos) { if (uint8[pos] === 3) return null; return deserializeModuleExportName(pos); } function deserializeF64(pos) { return float64[pos >> 3]; } function deserializeBoxJSXOpeningElement(pos) { return deserializeJSXOpeningElement(uint32[pos >> 2]); } function deserializeVecJSXChild(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeJSXChild(pos)); pos += 16; } return arr; } function deserializeBoxJSXClosingElement(pos) { return deserializeJSXClosingElement(uint32[pos >> 2]); } function deserializeOptionBoxJSXClosingElement(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxJSXClosingElement(pos); } function deserializeVecJSXAttributeItem(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeJSXAttributeItem(pos)); pos += 16; } return arr; } function deserializeBoxJSXIdentifier(pos) { return deserializeJSXIdentifier(uint32[pos >> 2]); } function deserializeBoxJSXNamespacedName(pos) { return deserializeJSXNamespacedName(uint32[pos >> 2]); } function deserializeBoxJSXMemberExpression(pos) { return deserializeJSXMemberExpression(uint32[pos >> 2]); } function deserializeBoxJSXAttribute(pos) { return deserializeJSXAttribute(uint32[pos >> 2]); } function deserializeBoxJSXSpreadAttribute(pos) { return deserializeJSXSpreadAttribute(uint32[pos >> 2]); } function deserializeOptionJSXAttributeValue(pos) { if (uint8[pos] === 4) return null; return deserializeJSXAttributeValue(pos); } function deserializeBoxJSXExpressionContainer(pos) { return deserializeJSXExpressionContainer(uint32[pos >> 2]); } function deserializeBoxJSXText(pos) { return deserializeJSXText(uint32[pos >> 2]); } function deserializeBoxJSXSpreadChild(pos) { return deserializeJSXSpreadChild(uint32[pos >> 2]); } function deserializeVecTSEnumMember(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 40; for (; pos !== endPos; ) { arr.push(deserializeTSEnumMember(pos)); pos += 40; } return arr; } function deserializeBoxTSAnyKeyword(pos) { return deserializeTSAnyKeyword(uint32[pos >> 2]); } function deserializeBoxTSBigIntKeyword(pos) { return deserializeTSBigIntKeyword(uint32[pos >> 2]); } function deserializeBoxTSBooleanKeyword(pos) { return deserializeTSBooleanKeyword(uint32[pos >> 2]); } function deserializeBoxTSIntrinsicKeyword(pos) { return deserializeTSIntrinsicKeyword(uint32[pos >> 2]); } function deserializeBoxTSNeverKeyword(pos) { return deserializeTSNeverKeyword(uint32[pos >> 2]); } function deserializeBoxTSNullKeyword(pos) { return deserializeTSNullKeyword(uint32[pos >> 2]); } function deserializeBoxTSNumberKeyword(pos) { return deserializeTSNumberKeyword(uint32[pos >> 2]); } function deserializeBoxTSObjectKeyword(pos) { return deserializeTSObjectKeyword(uint32[pos >> 2]); } function deserializeBoxTSStringKeyword(pos) { return deserializeTSStringKeyword(uint32[pos >> 2]); } function deserializeBoxTSSymbolKeyword(pos) { return deserializeTSSymbolKeyword(uint32[pos >> 2]); } function deserializeBoxTSUndefinedKeyword(pos) { return deserializeTSUndefinedKeyword(uint32[pos >> 2]); } function deserializeBoxTSUnknownKeyword(pos) { return deserializeTSUnknownKeyword(uint32[pos >> 2]); } function deserializeBoxTSVoidKeyword(pos) { return deserializeTSVoidKeyword(uint32[pos >> 2]); } function deserializeBoxTSArrayType(pos) { return deserializeTSArrayType(uint32[pos >> 2]); } function deserializeBoxTSConditionalType(pos) { return deserializeTSConditionalType(uint32[pos >> 2]); } function deserializeBoxTSConstructorType(pos) { return deserializeTSConstructorType(uint32[pos >> 2]); } function deserializeBoxTSFunctionType(pos) { return deserializeTSFunctionType(uint32[pos >> 2]); } function deserializeBoxTSImportType(pos) { return deserializeTSImportType(uint32[pos >> 2]); } function deserializeBoxTSIndexedAccessType(pos) { return deserializeTSIndexedAccessType(uint32[pos >> 2]); } function deserializeBoxTSInferType(pos) { return deserializeTSInferType(uint32[pos >> 2]); } function deserializeBoxTSIntersectionType(pos) { return deserializeTSIntersectionType(uint32[pos >> 2]); } function deserializeBoxTSLiteralType(pos) { return deserializeTSLiteralType(uint32[pos >> 2]); } function deserializeBoxTSMappedType(pos) { return deserializeTSMappedType(uint32[pos >> 2]); } function deserializeBoxTSNamedTupleMember(pos) { return deserializeTSNamedTupleMember(uint32[pos >> 2]); } function deserializeBoxTSTemplateLiteralType(pos) { return deserializeTSTemplateLiteralType(uint32[pos >> 2]); } function deserializeBoxTSThisType(pos) { return deserializeTSThisType(uint32[pos >> 2]); } function deserializeBoxTSTupleType(pos) { return deserializeTSTupleType(uint32[pos >> 2]); } function deserializeBoxTSTypeLiteral(pos) { return deserializeTSTypeLiteral(uint32[pos >> 2]); } function deserializeBoxTSTypeOperator(pos) { return deserializeTSTypeOperator(uint32[pos >> 2]); } function deserializeBoxTSTypePredicate(pos) { return deserializeTSTypePredicate(uint32[pos >> 2]); } function deserializeBoxTSTypeQuery(pos) { return deserializeTSTypeQuery(uint32[pos >> 2]); } function deserializeBoxTSTypeReference(pos) { return deserializeTSTypeReference(uint32[pos >> 2]); } function deserializeBoxTSUnionType(pos) { return deserializeTSUnionType(uint32[pos >> 2]); } function deserializeBoxTSParenthesizedType(pos) { return deserializeTSParenthesizedType(uint32[pos >> 2]); } function deserializeBoxJSDocNullableType(pos) { return deserializeJSDocNullableType(uint32[pos >> 2]); } function deserializeBoxJSDocNonNullableType(pos) { return deserializeJSDocNonNullableType(uint32[pos >> 2]); } function deserializeBoxJSDocUnknownType(pos) { return deserializeJSDocUnknownType(uint32[pos >> 2]); } function deserializeVecTSType(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeTSType(pos)); pos += 16; } return arr; } function deserializeVecTSTupleElement(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeTSTupleElement(pos)); pos += 16; } return arr; } function deserializeBoxTSOptionalType(pos) { return deserializeTSOptionalType(uint32[pos >> 2]); } function deserializeBoxTSRestType(pos) { return deserializeTSRestType(uint32[pos >> 2]); } function deserializeBoxTSQualifiedName(pos) { return deserializeTSQualifiedName(uint32[pos >> 2]); } function deserializeOptionTSType(pos) { if (uint8[pos] === 38) return null; return deserializeTSType(pos); } function deserializeVecTSTypeParameter(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 80; for (; pos !== endPos; ) { arr.push(deserializeTSTypeParameter(pos)); pos += 80; } return arr; } function deserializeVecTSInterfaceHeritage(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 32; for (; pos !== endPos; ) { arr.push(deserializeTSInterfaceHeritage(pos)); pos += 32; } return arr; } function deserializeBoxTSInterfaceBody(pos) { return deserializeTSInterfaceBody(uint32[pos >> 2]); } function deserializeVecTSSignature(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeTSSignature(pos)); pos += 16; } return arr; } function deserializeBoxTSPropertySignature(pos) { return deserializeTSPropertySignature(uint32[pos >> 2]); } function deserializeBoxTSCallSignatureDeclaration(pos) { return deserializeTSCallSignatureDeclaration(uint32[pos >> 2]); } function deserializeBoxTSConstructSignatureDeclaration(pos) { return deserializeTSConstructSignatureDeclaration(uint32[pos >> 2]); } function deserializeBoxTSMethodSignature(pos) { return deserializeTSMethodSignature(uint32[pos >> 2]); } function deserializeVecTSIndexSignatureName(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 32; for (; pos !== endPos; ) { arr.push(deserializeTSIndexSignatureName(pos)); pos += 32; } return arr; } function deserializeOptionTSModuleDeclarationBody(pos) { if (uint8[pos] === 2) return null; return deserializeTSModuleDeclarationBody(pos); } function deserializeBoxTSModuleBlock(pos) { return deserializeTSModuleBlock(uint32[pos >> 2]); } function deserializeBoxTSTypeParameter(pos) { return deserializeTSTypeParameter(uint32[pos >> 2]); } function deserializeOptionBoxObjectExpression(pos) { if (uint32[pos >> 2] === 0 && uint32[(pos + 4) >> 2] === 0) return null; return deserializeBoxObjectExpression(pos); } function deserializeOptionTSImportTypeQualifier(pos) { if (uint8[pos] === 2) return null; return deserializeTSImportTypeQualifier(pos); } function deserializeBoxTSImportTypeQualifiedName(pos) { return deserializeTSImportTypeQualifiedName(uint32[pos >> 2]); } function deserializeOptionTSMappedTypeModifierOperator(pos) { if (uint8[pos] === 3) return null; return deserializeTSMappedTypeModifierOperator(pos); } function deserializeBoxTSExternalModuleReference(pos) { return deserializeTSExternalModuleReference(uint32[pos >> 2]); } function deserializeOptionNameSpan(pos) { if (uint32[(pos + 8) >> 2] === 0 && uint32[(pos + 12) >> 2] === 0) return null; return deserializeNameSpan(pos); } function deserializeVecError(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 80; for (; pos !== endPos; ) { arr.push(deserializeError(pos)); pos += 80; } return arr; } function deserializeVecErrorLabel(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 24; for (; pos !== endPos; ) { arr.push(deserializeErrorLabel(pos)); pos += 24; } return arr; } function deserializeVecStaticImport(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 56; for (; pos !== endPos; ) { arr.push(deserializeStaticImport(pos)); pos += 56; } return arr; } function deserializeVecStaticExport(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 32; for (; pos !== endPos; ) { arr.push(deserializeStaticExport(pos)); pos += 32; } return arr; } function deserializeVecDynamicImport(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 16; for (; pos !== endPos; ) { arr.push(deserializeDynamicImport(pos)); pos += 16; } return arr; } function deserializeVecSpan(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 8; for (; pos !== endPos; ) { arr.push(deserializeSpan(pos)); pos += 8; } return arr; } function deserializeVecImportEntry(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 96; for (; pos !== endPos; ) { arr.push(deserializeImportEntry(pos)); pos += 96; } return arr; } function deserializeVecExportEntry(pos) { let arr = [], pos32 = pos >> 2; pos = uint32[pos32]; let endPos = pos + uint32[pos32 + 2] * 144; for (; pos !== endPos; ) { arr.push(deserializeExportEntry(pos)); pos += 144; } return arr; }