{"version":3,"file":"mzdata.esm.js","sources":["../node_modules/dynamic-typing/lib/parseString.js","../node_modules/arraybuffer-xml-parser/lib/traversable/defaultOptions.js","../node_modules/arraybuffer-xml-parser/lib/XMLNode.js","../node_modules/arraybuffer-xml-parser/lib/bufferUtils/arrayIndexOf.js","../node_modules/arraybuffer-xml-parser/lib/bufferUtils/arrayTrim.js","../node_modules/arraybuffer-xml-parser/lib/traversable/utils/utf8Decoder.js","../node_modules/arraybuffer-xml-parser/lib/traversable/closingIndexForOpeningTag.js","../node_modules/arraybuffer-xml-parser/lib/traversable/findClosingIndex.js","../node_modules/arraybuffer-xml-parser/lib/util.js","../node_modules/arraybuffer-xml-parser/lib/traversable/parseAttributesString.js","../node_modules/arraybuffer-xml-parser/lib/traversable/utils/removeNameSpaceIfNeeded.js","../node_modules/arraybuffer-xml-parser/lib/traversable/getTraversable.js","../node_modules/arraybuffer-xml-parser/lib/traversableToJSON.js","../node_modules/arraybuffer-xml-parser/lib/parse.js","../node_modules/ml-spectra-processing/lib/utils/recursiveResolve.js","../node_modules/uint8-base64/lib/decode.js","../node_modules/uint8-base64/lib/base64codes.js","../node_modules/uint8-base64/lib/encodeFast.js","../src/util/inflate.js","../src/util/decodeData.js","../src/mzdata/parseCvParam.js","../src/mzdata/processMetaData.js","../src/mzdata/processSpectrumList.js","../src/mzdata/parseMzData.js","../src/mzml/parseCvParam.js","../src/mzml/processSpectrumList.js","../src/mzml/parseMzML.js","../src/mzxml/processSpectrumList.js","../src/mzxml/parseMzXML.js","../src/index.js"],"sourcesContent":["export function parseString(value) {\n    if (value.length === 4 || value.length === 5) {\n        const lowercase = value.toLowerCase();\n        if (lowercase === 'true')\n            return true;\n        if (lowercase === 'false')\n            return false;\n    }\n    const number = Number(value);\n    if (number === 0 && !value.includes('0')) {\n        return value;\n    }\n    if (!Number.isNaN(number))\n        return number;\n    return value;\n}\n//# sourceMappingURL=parseString.js.map","import { parseString } from 'dynamic-typing';\nconst utf8Decoder = new TextDecoder();\nexport const decoder = {\n    decode: (array) => {\n        return utf8Decoder.decode(array);\n    },\n};\nexport const defaultOptions = {\n    trimValues: true,\n    attributesNodeName: '',\n    ignoreAttributes: false,\n    ignoreNameSpace: false,\n    allowBooleanAttributes: false,\n    parseAttributesString: true,\n    textNodeName: '#text',\n    arrayMode: false,\n    cdataTagName: false,\n    tagNameProcessor: (name) => name,\n    attributeNameProcessor: (name) => `$${name}`,\n    tagValueProcessor: (value) => {\n        const string = decoder.decode(value).replaceAll('\\r', '');\n        return parseString(string);\n    },\n    attributeValueProcessor: (value) => parseString(value),\n    stopNodes: [],\n};\nexport const defaultStreamOptions = {\n    ...defaultOptions,\n    maxEntrySize: 1e7,\n    maxBufferSize: 2e8,\n};\n//# sourceMappingURL=defaultOptions.js.map","export class XMLNode {\n    tagName;\n    parent;\n    children;\n    attributes;\n    bytes;\n    startIndex;\n    tagValueProcessor;\n    cachedValue;\n    constructor(tagName, parent, bytes, tagValueProcessor) {\n        this.tagName = tagName;\n        this.parent = parent;\n        this.children = Object.create(null); //child tags\n        this.attributes = Object.create(null); //attributes map\n        this.bytes = bytes; //text only\n        this.tagValueProcessor = tagValueProcessor;\n        this.startIndex = -1;\n    }\n    append(toAppend) {\n        if (this.bytes.length === 0) {\n            this.bytes = toAppend;\n            return;\n        }\n        const arrayConcat = new Uint8Array(this.bytes.length + toAppend.length);\n        arrayConcat.set(this.bytes);\n        arrayConcat.set(toAppend, this.bytes.length);\n        this.bytes = arrayConcat;\n    }\n    get value() {\n        if (this.cachedValue === undefined) {\n            const value = this.tagValueProcessor(this.bytes, this);\n            this.cachedValue = value;\n        }\n        return this.cachedValue;\n    }\n    addChild(child) {\n        const existing = this.children[child.tagName];\n        if (Array.isArray(existing)) {\n            existing.push(child);\n        }\n        else {\n            this.children[child.tagName] = [child];\n        }\n    }\n}\n//# sourceMappingURL=XMLNode.js.map","export function arrayIndexOf(array, referenceArray, index = 0) {\n    let found = 0;\n    let foundIndex = -1;\n    for (let i = index; i < array.length && found < referenceArray.length; i++) {\n        if (array[i] === referenceArray[found]) {\n            if (!found) {\n                foundIndex = i;\n            }\n            found++;\n        }\n        else if (found > 0) {\n            let j = 0;\n            for (; j <= found && array[foundIndex + j] === array[foundIndex + found]; j++)\n                ;\n            if (j < found + 1) {\n                foundIndex = -1;\n                found = 0;\n            }\n            else {\n                foundIndex++;\n            }\n        }\n        else {\n            found = 0;\n            foundIndex = -1;\n        }\n    }\n    if (found !== referenceArray.length) {\n        foundIndex = -1;\n    }\n    return foundIndex;\n}\n//# sourceMappingURL=arrayIndexOf.js.map","/* eslint-disable @typescript-eslint/no-unused-vars */\nexport function arrayTrim(array, arg) {\n    let i = 0;\n    let j = array.length - 1;\n    for (; i < array.length && array[i] <= 0x20; i++)\n        ;\n    for (; j >= i && array[j] <= 0x20; j--)\n        ;\n    if (i === 0 && j === array.length - 1)\n        return array;\n    return array.subarray(i, j + 1);\n}\n//# sourceMappingURL=arrayTrim.js.map","const utf8Decoder = new TextDecoder();\nexport const decoder = {\n    decode: (array) => {\n        return utf8Decoder.decode(array);\n    },\n};\n//# sourceMappingURL=utf8Decoder.js.map","import { decoder } from \"./utils/utf8Decoder.js\";\n/**\n * Search for the corresponding closing tag '>'\n * @param data\n * @param i\n * @returns\n */\nexport function closingIndexForOpeningTag(data, i) {\n    let attrBoundary;\n    let endIndex = 0;\n    for (let index = i; index < data.length; index++) {\n        let byte = data[index];\n        if (attrBoundary) {\n            if (byte === attrBoundary)\n                attrBoundary = 0; //reset\n        }\n        else if (byte === 0x22 || byte === 0x27) {\n            attrBoundary = byte;\n        }\n        else if (byte === 0x3e) {\n            return {\n                data: decoder.decode(data.subarray(i, i + endIndex)),\n                index,\n            };\n        }\n        else if (byte === 0x09) {\n            byte = 0x20;\n        }\n        endIndex++;\n    }\n    throw new Error('Could not find closing tag');\n}\n//# sourceMappingURL=closingIndexForOpeningTag.js.map","import { arrayIndexOf } from \"../bufferUtils/arrayIndexOf.js\";\nexport function findClosingIndex(xmlData, str, i, errMsg) {\n    const closingIndex = arrayIndexOf(xmlData, str, i);\n    if (closingIndex === -1) {\n        throw new Error(errMsg);\n    }\n    else {\n        return closingIndex + str.length - 1;\n    }\n}\n//# sourceMappingURL=findClosingIndex.js.map","const nameStartChar = String.raw `:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD`;\nconst nameChar = String.raw `${nameStartChar}\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040`;\nconst nameRegexp = `[${nameStartChar}][${nameChar}]*`;\n// eslint-disable-next-line no-misleading-character-class\nconst regexName = new RegExp(`^${nameRegexp}$`);\nexport function getAllMatches(string, regex) {\n    return Array.from(string.matchAll(regex));\n}\nexport function isName(string) {\n    return regexName.exec(string) !== null;\n}\nexport function isEmptySimpleObject(object) {\n    // fastest implementation: https://jsbench.me/qfkqv692c8/1\n    // eslint-disable-next-line no-unreachable-loop\n    for (const key in object) {\n        return false;\n    }\n    return true;\n}\nexport function isEmptyObject(object) {\n    // fastest implementation: https://jsbench.me/qfkqv692c8/1\n    // eslint-disable-next-line no-unreachable-loop\n    for (const key in object) {\n        return false;\n    }\n    return true;\n}\n/**\n * Copy all the properties of a into b.\n * @param target\n * @param source\n * @param arrayMode\n */\nexport function merge(target, source, arrayMode) {\n    if (!source)\n        return;\n    for (const key in source) {\n        const value = source[key];\n        if (value === undefined)\n            continue;\n        if (arrayMode === 'strict') {\n            target[key] = [value];\n        }\n        else {\n            target[key] = value;\n        }\n    }\n}\n/**\n * Check if a tag name should be treated as array\n * @param tagName - the node tagName\n * @param arrayMode - the array mode option\n * @param parentTagName - the parent tag name\n * @returns true if node should be parsed as array\n */\nexport function isTagNameInArrayMode(tagName, arrayMode, parentTagName) {\n    if (arrayMode === false) {\n        return false;\n    }\n    else if (arrayMode instanceof RegExp) {\n        return arrayMode.test(tagName);\n    }\n    else if (typeof arrayMode === 'function') {\n        return arrayMode(tagName, parentTagName);\n    }\n    return arrayMode === 'strict';\n}\n//# sourceMappingURL=util.js.map","import { getAllMatches, isEmptySimpleObject } from \"../util.js\";\nconst newLocal = String.raw `([^\\s=]+)\\s*(=\\s*(['\"])(.*?)\\3)?`;\nconst attrsRegx = new RegExp(newLocal, 'g');\n//Attributes are strings so no point in using arrayBuffers here\nexport function parseAttributesString(string, options) {\n    const { ignoreAttributes } = options;\n    if (ignoreAttributes) {\n        return;\n    }\n    string = string.replaceAll(/\\r?\\n/g, ' ');\n    const matches = getAllMatches(string, attrsRegx);\n    // argument 1 is the key, argument 4 is the value\n    const attributes = {};\n    for (const match of matches) {\n        const attributeName = resolveNameSpace(match[1], options);\n        if (attributeName.length > 0) {\n            if (match[4] !== undefined) {\n                if (options.trimValues) {\n                    match[4] = match[4].trim();\n                }\n                if (options.attributeValueProcessor) {\n                    attributes[attributeName] = options.attributeValueProcessor(match[4], attributeName);\n                }\n            }\n            else if (options.allowBooleanAttributes) {\n                attributes[attributeName] = true;\n            }\n        }\n    }\n    if (isEmptySimpleObject(attributes))\n        return;\n    return attributes;\n}\nfunction resolveNameSpace(tagName, options) {\n    if (options.ignoreNameSpace) {\n        const tags = tagName.split(':');\n        const prefix = tagName.startsWith('/') ? '/' : '';\n        if (tags[0] === 'xmlns') {\n            return '';\n        }\n        if (tags.length === 2 && tags[1] !== undefined) {\n            tagName = prefix + tags[1];\n        }\n    }\n    return tagName;\n}\n//# sourceMappingURL=parseAttributesString.js.map","export function removeNameSpaceIfNeeded(tagName, options) {\n    if (!options.ignoreNameSpace) {\n        return tagName;\n    }\n    const colonIndex = tagName.indexOf(':');\n    if (colonIndex !== -1) {\n        tagName = tagName.slice(colonIndex + 1);\n    }\n    return tagName;\n}\n//# sourceMappingURL=removeNameSpaceIfNeeded.js.map","import { XMLNode } from \"../XMLNode.js\";\nimport { arrayIndexOf } from \"../bufferUtils/arrayIndexOf.js\";\nimport { arrayTrim } from \"../bufferUtils/arrayTrim.js\";\nimport { closingIndexForOpeningTag } from \"./closingIndexForOpeningTag.js\";\nimport { findClosingIndex } from \"./findClosingIndex.js\";\nimport { parseAttributesString } from \"./parseAttributesString.js\";\nimport { removeNameSpaceIfNeeded } from \"./utils/removeNameSpaceIfNeeded.js\";\nimport { decoder } from \"./utils/utf8Decoder.js\";\nexport function getTraversable(xmlData, options) {\n    const { tagValueProcessor } = options;\n    const traversable = new XMLNode('!xml', undefined, new Uint8Array(0), tagValueProcessor);\n    let currentNode = traversable;\n    let dataSize = 0;\n    let dataIndex = 0;\n    for (let i = 0; i < xmlData.length; i++) {\n        if (xmlData[i] === 0x3c) {\n            // <\n            const xmlData1 = xmlData[i + 1];\n            const xmlData2 = xmlData[i + 2];\n            if (xmlData1 === 0x2f) {\n                // </ Closing Tag\n                const closeIndex = findClosingIndex(xmlData, [0x3e], //>\n                i, 'Closing Tag is not closed.');\n                let tagName = decoder.decode(arrayTrim(xmlData.subarray(i + 2, closeIndex), {}));\n                tagName = removeNameSpaceIfNeeded(tagName, options);\n                if (currentNode) {\n                    currentNode.append(options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataIndex + dataSize))\n                        : xmlData.subarray(dataIndex, dataIndex + dataSize));\n                }\n                if (options.stopNodes?.length &&\n                    options.stopNodes.includes(currentNode.tagName)) {\n                    currentNode.children = {};\n                    if (currentNode.attributes === undefined) {\n                        currentNode.attributes = {};\n                    }\n                    currentNode.bytes = xmlData.subarray(currentNode.startIndex + 1, i);\n                }\n                currentNode = currentNode.parent;\n                i = closeIndex;\n                dataSize = 0;\n                dataIndex = i + 1;\n            }\n            else if (xmlData1 === 0x3f) {\n                // <? PI, processing instruction\n                i = findClosingIndex(xmlData, [0x3f, 0x3e], i, 'Pi Tag is not closed.');\n            }\n            else if (\n            //!-- comment\n            xmlData1 === 0x21 &&\n                xmlData2 === 0x2d &&\n                xmlData[i + 3] === 0x2d) {\n                i = findClosingIndex(xmlData, [0x2d, 0x2d, 0x3e], //-->\n                i, 'Comment is not closed.');\n                if (currentNode && dataSize !== 0 && currentNode.tagName !== '!xml') {\n                    currentNode.append(options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataSize + dataIndex))\n                        : xmlData.subarray(dataIndex, dataSize + dataIndex));\n                }\n                dataSize = 0;\n                dataIndex = i + 1;\n                //!D\n            }\n            else if (xmlData1 === 0x21 && xmlData2 === 0x44) {\n                // <!D\n                const closeIndex = findClosingIndex(xmlData, [0x3e], //>\n                i, 'DOCTYPE is not closed.');\n                const tagExp = xmlData.subarray(i, closeIndex);\n                if (arrayIndexOf(tagExp, [0x5b]) >= 0) {\n                    i = arrayIndexOf(xmlData, [0x5d, 0x3e], i) + 1;\n                }\n                else {\n                    i = closeIndex;\n                } //![\n            }\n            else if (xmlData1 === 0x21 && xmlData2 === 0x5b) {\n                // <![CDATA[some stuff]]>\n                const closeIndex = findClosingIndex(xmlData, [0x5d, 0x5d, 0x3e], //]]>\n                i, 'CDATA is not closed.') - 2;\n                const tagExp = xmlData.subarray(i + 9, closeIndex);\n                //considerations\n                //1. CDATA will always have parent node\n                //2. A tag with CDATA is not a leaf node so it's value would be string type.\n                if (dataSize !== 0) {\n                    const value = options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataIndex + dataSize))\n                        : xmlData.subarray(dataIndex, dataIndex + dataSize);\n                    currentNode.append(value);\n                }\n                if (options.cdataTagName) {\n                    //add cdata node\n                    const childNode = new XMLNode(options.cdataTagName, currentNode, tagExp, tagValueProcessor);\n                    currentNode.addChild(childNode);\n                    //add rest value to parent node\n                    if (tagExp) {\n                        childNode.bytes = tagExp;\n                    }\n                }\n                else {\n                    currentNode.append(tagExp);\n                }\n                i = closeIndex + 2;\n                dataSize = 0;\n                dataIndex = i + 1;\n            }\n            else {\n                //Opening a normal tag\n                const parsedOpeningTag = closingIndexForOpeningTag(xmlData, i + 1);\n                const tagData = parsedOpeningTag.data.replaceAll(/\\r?\\n|\\t/g, ' ');\n                const closeIndex = parsedOpeningTag.index;\n                const separatorIndex = tagData.indexOf(' ');\n                let shouldBuildAttributesMap = true;\n                let tagName = separatorIndex !== -1\n                    ? tagData.slice(0, Math.max(0, separatorIndex)).replace(/\\s+$/, '')\n                    : tagData;\n                let tagAttributes = separatorIndex !== -1 ? tagData.slice(separatorIndex + 1) : '';\n                if (options.ignoreNameSpace) {\n                    const colonIndex = tagName.indexOf(':');\n                    if (colonIndex !== -1) {\n                        tagName = tagName.slice(colonIndex + 1);\n                        shouldBuildAttributesMap =\n                            tagName !== parsedOpeningTag.data.slice(colonIndex + 1);\n                    }\n                }\n                //save text to parent node\n                if (currentNode && dataSize !== 0 && currentNode.tagName !== '!xml') {\n                    currentNode.append(options.trimValues\n                        ? arrayTrim(xmlData.subarray(dataIndex, dataIndex + dataSize))\n                        : xmlData.subarray(dataIndex, dataIndex + dataSize));\n                }\n                if (tagData.length > 0 && tagData.endsWith('/')) {\n                    //selfClosing tag\n                    if (tagAttributes) {\n                        // <abc def=\"123\"/>\n                        tagAttributes = tagAttributes.slice(0, Math.max(0, tagAttributes.length - 1));\n                    }\n                    else {\n                        // <abc/>\n                        tagName = tagName.slice(0, Math.max(0, tagName.length - 1));\n                    }\n                    const childNode = new XMLNode(tagName, currentNode, new Uint8Array(0), tagValueProcessor);\n                    if (tagAttributes) {\n                        childNode.attributes = parseAttributesString(tagAttributes, options);\n                    }\n                    currentNode.addChild(childNode);\n                }\n                else {\n                    //opening tag\n                    const childNode = new XMLNode(tagName, currentNode, new Uint8Array(0), tagValueProcessor);\n                    if (options.stopNodes?.length &&\n                        options.stopNodes.includes(childNode.tagName)) {\n                        childNode.startIndex = closeIndex;\n                    }\n                    if (tagAttributes && shouldBuildAttributesMap) {\n                        childNode.attributes = parseAttributesString(tagAttributes, options);\n                    }\n                    currentNode.addChild(childNode);\n                    currentNode = childNode;\n                }\n                i = closeIndex;\n                dataSize = 0;\n                dataIndex = i + 1;\n            }\n        }\n        else {\n            dataSize++;\n        }\n    }\n    return traversable;\n}\n//# sourceMappingURL=getTraversable.js.map","import { isEmptyObject, isEmptySimpleObject, isTagNameInArrayMode, merge, } from \"./util.js\";\n/**\n *\n * @param node\n * @param options\n * @param parentTagName\n * @returns\n */\nexport function traversableToJSON(node, options, parentTagName) {\n    const { arrayMode, tagNameProcessor, attributeNameProcessor, textNodeName } = options;\n    const result = {};\n    // when no child node or attr is present\n    if ((!node.children || isEmptyObject(node.children)) &&\n        (!node.attributes || isEmptySimpleObject(node.attributes))) {\n        return node.value;\n    }\n    // otherwise create a textnode if node has some text\n    if (node.bytes.length > 0) {\n        const asArray = isTagNameInArrayMode(node.tagName, arrayMode, parentTagName);\n        result[textNodeName] = asArray ? [node.value] : node.value;\n    }\n    if (node.attributes && !isEmptySimpleObject(node.attributes)) {\n        let attributes = options.parseAttributesString ? {} : node.attributes;\n        if (attributeNameProcessor) {\n            // need to rename the attributes\n            const renamedAttributes = {};\n            for (const attributeName in node.attributes) {\n                const newAttributeName = attributeNameProcessor(attributeName);\n                const value = node.attributes[attributeName];\n                if (value !== undefined) {\n                    renamedAttributes[newAttributeName] = value;\n                }\n            }\n            attributes = renamedAttributes;\n        }\n        if (options.attributesNodeName) {\n            const encapsulatedAttributes = {\n                [options.attributesNodeName]: attributes,\n            };\n            attributes = encapsulatedAttributes;\n        }\n        merge(result, attributes, arrayMode);\n    }\n    for (const tagName in node.children) {\n        const nodes = node.children[tagName];\n        if (!nodes)\n            continue;\n        const newTagName = tagNameProcessor\n            ? tagNameProcessor(tagName, nodes)\n            : tagName;\n        if (nodes.length > 1) {\n            result[tagName] = [];\n            for (const child of nodes) {\n                result[newTagName].push(traversableToJSON(child, options, tagName));\n            }\n        }\n        else {\n            const firstNode = nodes[0];\n            if (!firstNode)\n                continue;\n            const subResult = traversableToJSON(firstNode, options, tagName);\n            const asArray = (arrayMode === true && typeof subResult === 'object') ||\n                isTagNameInArrayMode(tagName, arrayMode, parentTagName);\n            result[newTagName] = asArray ? [subResult] : subResult;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=traversableToJSON.js.map","import { defaultOptions } from \"./traversable/defaultOptions.js\";\nimport { getTraversable } from \"./traversable/getTraversable.js\";\nimport { traversableToJSON } from \"./traversableToJSON.js\";\n/**\n * Parse an ArrayBuffer or Uint8Array representing an XML and return an object\n * @param xmlData\n * @param options\n */\nexport function parse(xmlData, options = {}) {\n    if (typeof xmlData === 'string') {\n        const encoder = new TextEncoder();\n        xmlData = encoder.encode(xmlData);\n    }\n    if (!ArrayBuffer.isView(xmlData)) {\n        xmlData = new Uint8Array(xmlData);\n    }\n    const realOptions = { ...defaultOptions, ...options };\n    const traversable = getTraversable(xmlData, realOptions);\n    return traversableToJSON(traversable, realOptions);\n}\n//# sourceMappingURL=parse.js.map","/**\n * Resolves all promises in an object recursively. The promise with be replaced by the resolved value.\n * The changes are therefore done in-place !\n * @param object - object to resolve.\n * @returns the resolved object.\n */\nexport async function recursiveResolve(object) {\n    if (typeof object !== 'object')\n        return object;\n    const promises = [];\n    await appendPromises(object, promises);\n    await Promise.all(promises);\n    return object;\n}\nfunction appendPromises(object, promises) {\n    if (typeof object !== 'object')\n        return object;\n    for (const key in object) {\n        if (typeof object[key].then === 'function') {\n            promises.push(object[key].then((value) => (object[key] = value)));\n        }\n        else if (typeof object[key] === 'object') {\n            appendPromises(object[key], promises);\n        }\n    }\n    return object;\n}\n//# sourceMappingURL=recursiveResolve.js.map","const base64codes = Uint8Array.from([\n    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,\n    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255,\n    255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255,\n    255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,\n    21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32,\n    33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n]);\n/**\n * Decode a base64-encoded byte sequence into the original bytes.\n * @param input - Uint8Array holding the base64 representation (one byte per\n *   ASCII character, length must be a multiple of 4, `=` padding allowed).\n * @returns a Uint8Array containing the decoded bytes.\n */\nexport function decode(input) {\n    if (!ArrayBuffer.isView(input)) {\n        input = new Uint8Array(input);\n    }\n    if (input.length % 4 !== 0) {\n        throw new Error('Unable to parse base64 string.');\n    }\n    const output = new Uint8Array(3 * (input.length / 4));\n    if (input.length === 0)\n        return output;\n    const missingOctets = input.at(-2) === 61 ? 2 : input.at(-1) === 61 ? 1 : 0;\n    for (let i = 0, j = 0; i < input.length; i += 4, j += 3) {\n        const buffer = (base64codes[input[i]] << 18) |\n            (base64codes[input[i + 1]] << 12) |\n            (base64codes[input[i + 2]] << 6) |\n            base64codes[input[i + 3]];\n        output[j] = buffer >> 16;\n        output[j + 1] = (buffer >> 8) & 0xff;\n        output[j + 2] = buffer & 0xff;\n    }\n    return output.subarray(0, output.length - missingOctets);\n}\n//# sourceMappingURL=decode.js.map","export const base64codes = Uint8Array.from([\n    65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,\n    84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,\n    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,\n    122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47,\n]);\n//# sourceMappingURL=base64codes.js.map","import { base64codes } from \"./base64codes.js\";\n/*\n3 bytes are encoded in 4 bytes of base64\n11111122 22223333 33444444\nWe want to be the fastest possible, so we will use a lookup table to convert 12 bits to 2 bytes of base64\nBut in order still to avoid one operation we will create 2 of those lookup tables.\n- One for 2222 11111122\n- One for 3333 33444444\n*/\n// 2222 11111122\nconst base64codes1 = new Uint32Array(64 * 64);\nfor (let i = 0; i < 64; i++) {\n    for (let j = 0; j < 64; j++) {\n        const index = (i << 2) | ((j & 0x30) >> 4) | ((j & 0x0f) << 8);\n        base64codes1[index] = base64codes[i] | (base64codes[j] << 8);\n    }\n}\n// 3333 33444444 that we store on the bits 16->31 just to allow to make directly the OR with the previous value\nconst base64codes2 = new Uint32Array(64 * 64);\nfor (let i = 0; i < 64; i++) {\n    for (let j = 0; j < 64; j++) {\n        const index = (i << 6) | j;\n        base64codes2[index] = (base64codes[i] << 16) | (base64codes[j] << 24);\n    }\n}\n/**\n * Encode bytes to base64 using two precomputed 12-bit lookup tables to emit\n * 4 output bytes (one 32-bit word) per 3 input bytes. This is the default\n * `encode` exported from the package.\n * @param input - Uint8Array of raw bytes to encode.\n * @returns a Uint8Array containing the base64 representation (one byte per\n *   ASCII character, padded with `=` to a length that is a multiple of 4).\n */\nexport function encodeFast(input) {\n    const output32 = new Uint32Array(Math.ceil(input.length / 3));\n    let i, j;\n    for (i = 2, j = 0; i < input.length; i += 3, j++) {\n        output32[j] =\n            base64codes1[input[i - 2] | ((input[i - 1] & 0xf0) << 4)] |\n                base64codes2[input[i] | ((input[i - 1] & 0x0f) << 8)];\n    }\n    if (i === input.length + 1) {\n        // 1 octet yet to write\n        output32[j] =\n            base64codes[input[i - 2] >> 2] |\n                (base64codes[(input[i - 2] & 0x03) << 4] << 8) |\n                (15677 << 16);\n    }\n    if (i === input.length) {\n        // 2 octets yet to write\n        output32[j] =\n            base64codes[input[i - 2] >> 2] |\n                (base64codes[((input[i - 2] & 0x03) << 4) | (input[i - 1] >> 4)] <<\n                    8) |\n                (base64codes[(input[i - 1] & 0x0f) << 2] << 16) |\n                (61 << 24);\n    }\n    const output8 = new Uint8Array(output32.buffer);\n    return output8;\n}\n//# sourceMappingURL=encodeFast.js.map","export async function inflate(zlibCompressedData) {\n  const inputStream = new ReadableStream({\n    start(controller) {\n      controller.enqueue(zlibCompressedData);\n      controller.close();\n    },\n  });\n\n  const decompressedStream = inputStream.pipeThrough(\n    new DecompressionStream('deflate'),\n  );\n\n  const reader = decompressedStream.getReader();\n  const chunks = [];\n  let totalLength = 0;\n\n  while (true) {\n    // eslint-disable-next-line no-await-in-loop\n    const { value, done } = await reader.read();\n    if (done) break;\n    chunks.push(value);\n    totalLength += value.length;\n  }\n\n  // Combine chunks into a single Uint8Array\n  const decompressedData = new Uint8Array(totalLength);\n  let offset = 0;\n  for (const chunk of chunks) {\n    decompressedData.set(chunk, offset);\n    offset += chunk.length;\n  }\n\n  return decompressedData;\n}\n","import { decode } from 'uint8-base64';\n\nimport { inflate } from './inflate.js';\n\nexport async function decodeData(data, options = {}) {\n  if (!(data instanceof Uint8Array)) {\n    throw new TypeError('data should be an Uint8Array');\n  }\n  let {\n    endian = 'little',\n    precision,\n    float = true,\n    compression = '',\n    base64 = true,\n    ontologies = {},\n  } = options;\n\n  if ('MS:1000519' in ontologies) {\n    precision = 32;\n    float = false;\n  }\n  if ('MS:1000520' in ontologies) precision = 16;\n  if ('MS:1000521' in ontologies) precision = 32;\n  if ('MS:1000522' in ontologies) {\n    float = false;\n    precision = 64;\n  }\n  if ('MS:1000523' in ontologies) precision = 64;\n  if ('MS:1000574' in ontologies) compression = 'zlib';\n\n  if (base64) {\n    data = decode(data);\n  }\n\n  switch (compression.toLowerCase()) {\n    case 'zlib':\n      data = await inflate(data);\n      break;\n    case '':\n    case 'none':\n      break;\n    default:\n      throw new Error(`Unknown compression algorithm: ${compression}`);\n  }\n\n  switch (endian.toLowerCase()) {\n    case 'little':\n      break;\n    case 'network':\n    case 'big':\n      {\n        // we will invert in place the data\n        let step;\n        switch (precision) {\n          case 32:\n            step = 4;\n            break;\n          case 64:\n            step = 8;\n            break;\n          default:\n            throw new Error('Can not process bigendian file');\n        }\n        for (let i = 0; i < data.length - (data.length % step); i += step) {\n          for (let j = 0; j < step / 2; j++) {\n            const temp = data[i + j];\n            data[i + j] = data[i + step - 1 - j];\n            data[i + step - 1 - j] = temp;\n          }\n        }\n      }\n      break;\n    default:\n      throw new TypeError(`Attributes endian not correct: ${endian}`);\n  }\n\n  /*\n       We should take care that the length of the Uint8Array is correct but the buffer\n       may be a little bit bigger because when decoding base 64 it may end with = or ==\n       and we plan the size in the buffer.\n      */\n\n  if (float) {\n    switch (precision) {\n      case 32:\n        return new Float32Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / Float32Array.BYTES_PER_ELEMENT,\n        );\n      case 64:\n        return new Float64Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / Float64Array.BYTES_PER_ELEMENT,\n        );\n\n      default:\n        throw new TypeError(`Incorrect precision: ${precision}`);\n    }\n  } else {\n    switch (precision) {\n      case 32:\n        return new Int32Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / Int32Array.BYTES_PER_ELEMENT,\n        );\n      case 64:\n        return new BigInt64Array(\n          data.buffer,\n          data.byteOffset,\n          data.byteLength / BigInt64Array.BYTES_PER_ELEMENT,\n        );\n      default:\n        throw new TypeError(`Incorrect precision: ${precision}`);\n    }\n  }\n}\n","export function parseCvParam(cvParam) {\n  let result = {};\n  if (!cvParam) return result;\n  let cvParams;\n  if (Array.isArray(cvParam)) {\n    cvParams = cvParam;\n  } else {\n    cvParams = [cvParam];\n  }\n  for (let param of cvParams) {\n    let attributes = param.attributes;\n    if (attributes.name) {\n      result[attributes.name.toLowerCase()] = {\n        accession: attributes.accession,\n        cvLabel: attributes.cvLabel,\n        value: attributes.value,\n        name: attributes.name,\n      };\n    }\n  }\n  return result;\n}\n","import { parseCvParam } from './parseCvParam.js';\n\nexport function processMetadata(parsed, metadata) {\n  if (!parsed || !parsed.description) return;\n  let description = parsed.description;\n  if (description.dataProcessing) {\n    let dataProcessing = description.dataProcessing;\n    if (dataProcessing.software && dataProcessing.software.name) {\n      metadata.software = dataProcessing.software.name;\n    }\n  }\n  if (description.instrument) {\n    let instrument = description.instrument;\n    if (instrument.analyzerList && instrument.analyzerList.analyzer) {\n      let analyzer = instrument.analyzerList.analyzer;\n      let cvParam = parseCvParam(analyzer.cvParam);\n      if (cvParam.analyzertype) {\n        metadata.analyzer = cvParam.analyzertype.value;\n      }\n    }\n    if (instrument.detector) {\n      let detector = instrument.detector;\n      let cvParam = parseCvParam(detector.cvParam);\n      if (cvParam.detectortype) {\n        metadata.detector = cvParam.detectortype.value;\n      }\n    }\n  }\n}\n","import { parseCvParam } from './parseCvParam.js';\n\nexport function processSpectrumList(parsed, times, msData) {\n  if (!parsed || !parsed.spectrumList || !parsed.spectrumList.spectrum) return;\n  let spectrumList = parsed.spectrumList.spectrum;\n  for (let spectrum of spectrumList) {\n    let info = parseCvParam(\n      spectrum.spectrumDesc.spectrumSettings.spectrumInstrument.cvParam,\n    );\n\n    times.push(info.timeinminutes.value);\n\n    let mzArray = spectrum.mzArrayBinary.data['#text'] || [];\n    let intensity = spectrum.intenArrayBinary.data['#text'] || [];\n    msData.push([mzArray, intensity]);\n  }\n}\n","import { parse } from 'arraybuffer-xml-parser';\nimport { recursiveResolve } from 'ml-spectra-processing/utils';\n\nimport { decodeData } from '../util/decodeData.js';\n\nimport { processMetadata } from './processMetaData.js';\nimport { processSpectrumList } from './processSpectrumList.js';\n\nconst decoder = new TextDecoder();\n\n/**\n *\n * @param {*} arrayBuffer\n * @param {import('../Options.js').Options} [options={}]\n * @returns\n */\nexport async function parseMzData(arrayBuffer, options = {}) {\n  const { logger = console } = options;\n  const result = {\n    metadata: {},\n    times: [],\n    series: {\n      ms: {\n        data: [],\n      },\n    },\n  };\n\n  let parsed = parse(arrayBuffer, {\n    attributesNodeName: 'attributes',\n    attributeNameProcessor: (attributeName) => attributeName,\n    tagValueProcessor: (value, node) => {\n      if (node.tagName !== 'data') return decoder.decode(value);\n      const promise = decodeData(node.bytes, node.attributes);\n      // avoid unhandled promise rejection and swallow the error\n      promise.catch((error) => {\n        logger.error('error decoding base64', error);\n        return [];\n      });\n      return promise;\n    },\n  });\n  await recursiveResolve(parsed);\n  processMetadata(parsed.mzData, result.metadata);\n  processSpectrumList(parsed.mzData, result.times, result.series.ms.data);\n\n  return result;\n}\n","export function parseCvParam(cvParam) {\n  let result = {};\n  if (!cvParam) return result;\n  let cvParams;\n  if (Array.isArray(cvParam)) {\n    cvParams = cvParam;\n  } else {\n    cvParams = [cvParam];\n  }\n  for (let parameter of cvParams) {\n    let attributes = parameter.attributes;\n    if (attributes.name) {\n      result[attributes.accession] = attributes;\n    }\n  }\n  return result;\n}\n","import { parseCvParam } from './parseCvParam.js';\n\nexport function processSpectrumList(parsed, result) {\n  if (\n    !parsed ||\n    !parsed.run ||\n    !parsed.run.spectrumList ||\n    !parsed.run.spectrumList.spectrum\n  ) {\n    return;\n  }\n  let spectrumList = parsed.run.spectrumList.spectrum;\n  const msData = result.series.ms.data;\n\n  for (let spectrum of spectrumList) {\n    if (!spectrum.binaryDataArrayList) continue;\n    let scanList = spectrum.scanList;\n    if (Array.isArray(scanList)) throw new Error('Unsupported scanList');\n\n    let scan = scanList.scan;\n\n    if (typeof scan !== 'object') continue;\n    if (Array.isArray(scan)) {\n      throw new Error('processSpectrumList: scan may not be an array');\n    }\n    const cvParam = parseCvParam(scan.cvParam);\n    result.times.push(cvParam['MS:1000016']?.value);\n    result.xPositions.push(cvParam['IMS:1000050']?.value);\n    result.yPositions.push(cvParam['IMS:1000051']?.value);\n\n    const dataArrayList = spectrum.binaryDataArrayList.binaryDataArray;\n    if (dataArrayList.length !== 2) {\n      throw new Error('Can not decodeData because length !== 2');\n    }\n\n    const first = dataArrayList[0];\n    const firstCVParams = parseCvParam(first.cvParam);\n    const second = dataArrayList[1];\n    const secondCVParams = parseCvParam(second.cvParam);\n\n    // MS:1000514 - m/z array\n    // MS:1000515 - intensity array\n    if (firstCVParams['MS:1000514'] && secondCVParams['MS:1000515']) {\n      msData.push([first.binary, second.binary]);\n    }\n    if (firstCVParams['MS:1000515'] && secondCVParams['MS:1000514']) {\n      msData.push([second.binary, first.binary]);\n    }\n  }\n}\n","import { parse } from 'arraybuffer-xml-parser';\nimport { recursiveResolve } from 'ml-spectra-processing/utils';\n\nimport { decodeData } from '../util/decodeData.js';\n\nimport { processSpectrumList } from './processSpectrumList.js';\n\nconst decoder = new TextDecoder();\n\n// https://www.psidev.info/mzml\n// CV = Controlled vocabulary\nexport async function parseMzML(mzmlBuffer, options = {}) {\n  const { logger = console } = options;\n  let { rawData } = options;\n\n  // need to allow Buffer, ArrayBuffer or TypedArray and convert to Uint8Array\n  mzmlBuffer = new Uint8Array(mzmlBuffer);\n  if (rawData) {\n    rawData = new Uint8Array(rawData);\n  }\n\n  const rawDataUint8Array = rawData && new Uint8Array(rawData);\n\n  const result = {\n    metadata: {},\n    times: [],\n    xPositions: [],\n    yPositions: [],\n    series: {\n      ms: {\n        data: [],\n      },\n    },\n  };\n\n  const referenceableParamGroups = {};\n\n  let parsed = parse(mzmlBuffer, {\n    attributesNodeName: 'attributes',\n    attributeNameProcessor: (attributeName) => attributeName,\n    tagNameProcessor: (name, nodes) => {\n      switch (name) {\n        case 'referenceableParamGroupList':\n          {\n            const children = nodes[0]?.children?.referenceableParamGroup;\n            for (const group of children) {\n              const id = group.attributes?.id;\n              referenceableParamGroups[id] = group.children;\n            }\n          }\n          break;\n        case 'referenceableParamGroupRef':\n          for (const node of nodes) {\n            // need to append the references children to the parent\n            const ref = node.attributes.ref;\n            if (referenceableParamGroups[ref]) {\n              const parent = node.parent;\n              parent.children = parent.children || {};\n              for (const key in referenceableParamGroups[ref]) {\n                parent.children[key] = parent.children[key] || [];\n                parent.children[key].push(\n                  ...referenceableParamGroups[ref][key],\n                );\n              }\n            }\n          }\n          break;\n        case 'cvParam':\n          break;\n        default:\n      }\n      return name;\n    },\n    tagValueProcessor: (value, node) => {\n      if (node.tagName !== 'binary') return decoder.decode(value);\n      const referenceableParamGroupRefs =\n        node.parent?.children?.referenceableParamGroupRef?.map(\n          (ref) => ref.attributes.ref,\n        ) || [];\n      const ontologies = {};\n      referenceableParamGroupRefs.forEach((ref) => {\n        if (referenceableParamGroups[ref]) {\n          Object.assign(ontologies, referenceableParamGroups[ref]);\n        }\n      });\n      node.parent.children.cvParam.forEach((cv) => {\n        ontologies[cv.attributes.accession] = cv.attributes.value;\n      });\n\n      let promise;\n      if ('IMS:1000102' in ontologies) {\n        // external data offset\n        const offset = parseInt(ontologies['IMS:1000102'], 10);\n        const encodedLength = parseInt(ontologies['IMS:1000104'], 10);\n\n        promise = decodeData(\n          rawDataUint8Array.subarray(offset, offset + encodedLength),\n          {\n            ontologies,\n            base64: false,\n          },\n        );\n      } else {\n        promise = decodeData(node.bytes, { ontologies, base64: true });\n      }\n\n      // avoid unhandled promise rejection and swallow the error\n      promise.catch((error) => {\n        logger.error('error decoding base64', error);\n        return [];\n      });\n      return promise;\n    },\n  });\n  // parsed file still contains promises\n  await recursiveResolve(parsed);\n\n  const mzML = parsed.mzML || parsed.indexedmzML.mzML;\n\n  processSpectrumList(mzML, result);\n\n  return result;\n}\n","export function processSpectrumList(parsed, times, msData) {\n  if (!parsed.msRun.scan) return;\n  let scanList = parsed.msRun.scan;\n  if (Array.isArray(scanList) === false) scanList = [scanList];\n  if (scanList[0].attributes) msData.info = [];\n  for (let scan of scanList) {\n    if (typeof scan !== 'object') continue;\n    if (Array.isArray(scan)) {\n      throw new Error('processSpectrumList: scan may not be an array');\n    }\n    const dataArray = scan.peaks['#text'];\n    let length = dataArray.length / 2;\n    let first = new Float64Array(length);\n    let second = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n      first[i] = dataArray[i * 2];\n      second[i] = dataArray[i * 2 + 1];\n    }\n    msData.data.push([first, second]);\n    msData.info.push(scan.attributes);\n    times.push(\n      parseFloat(\n        scan.attributes.retentionTime.replace(/(?:P*)(?:T*)(?:S*)/gi, ''),\n      ),\n    );\n  }\n}\n","import { parse } from 'arraybuffer-xml-parser';\nimport { recursiveResolve } from 'ml-spectra-processing/utils';\n\nimport { decodeData } from '../util/decodeData.js';\n\nimport { processSpectrumList } from './processSpectrumList.js';\n\nconst decoder = new TextDecoder();\n\n/**\n *\n * @param {*} arrayBuffer\n * @param {import('../Options.js').Options} [options]\n * @returns\n */\nexport async function parseMzXML(arrayBuffer, options = {}) {\n  const { logger = console } = options;\n  const result = {\n    metadata: {},\n    times: [],\n    series: {\n      ms: {\n        data: [],\n      },\n    },\n  };\n  let parsed = parse(arrayBuffer, {\n    attributesNodeName: 'attributes',\n    attributeNameProcessor: (attributeName) => attributeName,\n    tagValueProcessor: (value, node) => {\n      if (node.tagName !== 'peaks') return decoder.decode(value);\n\n      const promise = decodeData(node.bytes, {\n        precision: node.attributes.precision,\n        endian: node.attributes.byteOrder,\n        compression: node.attributes.compressionType,\n      });\n      // avoid unhandled promise rejection and swallow the error\n      promise.catch((error) => {\n        logger.error('error decoding base64', error);\n        return [];\n      });\n      return promise;\n    },\n  });\n  await recursiveResolve(parsed);\n\n  processSpectrumList(parsed.mzXML, result.times, result.series.ms);\n\n  return result;\n}\n","import { parseMzData } from './mzdata/parseMzData.js';\nimport { parseMzML } from './mzml/parseMzML.js';\nimport { parseMzXML } from './mzxml/parseMzXML.js';\n\nconst decoder = new TextDecoder();\n\n/**\n * Reads a mzData v1.05 file\n * @param {ArrayBuffer|string} xml - ArrayBuffer or String or any Typed Array (including Node.js' Buffer from v4) with the data\n * @param {import('./Options.js').Options} [options={}]\n * @return Promise<{{times: Array<number>, series: { ms: { data:Array<Array<number>>}}}}>\n */\nexport async function parseMZ(xml, options = {}) {\n  if (typeof xml === 'string') {\n    const encoder = new TextEncoder();\n    xml = encoder.encode(xml);\n  }\n\n  if (!ArrayBuffer.isView(xml)) {\n    xml = new Uint8Array(xml);\n  }\n\n  const header = xml.subarray\n    ? decoder.decode(xml.subarray(0, 200))\n    : xml.substring(0, 200);\n\n  if (header.includes('mzData')) {\n    return parseMzData(xml, options);\n  } else if (header.includes('mzML')) {\n    return parseMzML(xml, options);\n  } else if (header.includes('mzXML')) {\n    return parseMzXML(xml, options);\n  } else {\n    throw new Error(`MZ parser: unknown format`);\n  }\n}\n"],"names":["parseString","value","length","lowercase","toLowerCase","number","Number","includes","isNaN","utf8Decoder","TextDecoder","decoder","decode","array","defaultOptions","trimValues","attributesNodeName","ignoreAttributes","ignoreNameSpace","allowBooleanAttributes","parseAttributesString","textNodeName","arrayMode","cdataTagName","tagNameProcessor","name","attributeNameProcessor","tagValueProcessor","string","replaceAll","attributeValueProcessor","stopNodes","XMLNode","tagName","parent","children","attributes","bytes","startIndex","cachedValue","constructor","Object","create","append","toAppend","arrayConcat","Uint8Array","set","undefined","addChild","child","existing","Array","isArray","push","arrayIndexOf","referenceArray","index","found","foundIndex","i","j","arrayTrim","arg","subarray","closingIndexForOpeningTag","data","attrBoundary","endIndex","byte","Error","findClosingIndex","xmlData","str","errMsg","closingIndex","getAllMatches","regex","from","matchAll","isEmptySimpleObject","object","key","isEmptyObject","merge","target","source","isTagNameInArrayMode","parentTagName","RegExp","test","newLocal","String","raw","attrsRegx","options","matches","match","attributeName","resolveNameSpace","trim","tags","split","prefix","startsWith","removeNameSpaceIfNeeded","colonIndex","indexOf","slice","getTraversable","traversable","currentNode","dataSize","dataIndex","xmlData1","xmlData2","closeIndex","tagExp","childNode","parsedOpeningTag","tagData","separatorIndex","shouldBuildAttributesMap","Math","max","replace","tagAttributes","endsWith","traversableToJSON","node","result","asArray","renamedAttributes","newAttributeName","encapsulatedAttributes","nodes","newTagName","firstNode","subResult","parse","encoder","TextEncoder","encode","ArrayBuffer","isView","realOptions","recursiveResolve","promises","appendPromises","Promise","all","then","base64codes","input","output","missingOctets","at","buffer","base64codes1","Uint32Array","base64codes2","inflate","zlibCompressedData","inputStream","ReadableStream","start","controller","enqueue","close","decompressedStream","pipeThrough","DecompressionStream","reader","getReader","chunks","totalLength","done","read","decompressedData","offset","chunk","decodeData","TypeError","endian","precision","float","compression","base64","ontologies","step","temp","Float32Array","byteOffset","byteLength","BYTES_PER_ELEMENT","Float64Array","Int32Array","BigInt64Array","parseCvParam","cvParam","cvParams","param","accession","cvLabel","processMetadata","parsed","metadata","description","dataProcessing","software","instrument","analyzerList","analyzer","analyzertype","detector","detectortype","processSpectrumList","times","msData","spectrumList","spectrum","info","spectrumDesc","spectrumSettings","spectrumInstrument","timeinminutes","mzArray","mzArrayBinary","intensity","intenArrayBinary","parseMzData","arrayBuffer","logger","console","series","ms","promise","catch","error","mzData","parameter","run","binaryDataArrayList","scanList","scan","xPositions","yPositions","dataArrayList","binaryDataArray","first","firstCVParams","second","secondCVParams","binary","parseMzML","mzmlBuffer","rawData","rawDataUint8Array","referenceableParamGroups","referenceableParamGroup","group","id","ref","referenceableParamGroupRefs","referenceableParamGroupRef","map","forEach","assign","cv","parseInt","encodedLength","mzML","indexedmzML","msRun","dataArray","peaks","parseFloat","retentionTime","parseMzXML","byteOrder","compressionType","mzXML","parseMZ","xml","header","substring"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]}