{"version":3,"file":"mzdata.esm.js","sources":["../node_modules/dynamic-typing/lib-esm/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-esm/decode.js","../node_modules/uint8-base64/lib-esm/base64codes.js","../node_modules/uint8-base64/lib-esm/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        if (Array.isArray(this.children[child.tagName])) {\n            //already presents\n            this.children[child.tagName].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        if (arrayMode === 'strict') {\n            target[key] = [source[key]];\n        }\n        else {\n            target[key] = source[key];\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) {\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                renamedAttributes[newAttributeName] = node.attributes[attributeName];\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        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 subResult = traversableToJSON(nodes[0], 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\n * @returns\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 * Convert a Uint8Array containing a base64 encoded bytes to a Uint8Array containing decoded values\n * @param input\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';\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 * Convert a Uint8Array containing bytes to a Uint8Array containing the base64 encoded values\n * @param input\n * @returns a Uint8Array containing the encoded bytes\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)] << 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';\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, times, msData) {\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\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    times.push(cvParam['MS:1000016'].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';\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, rawData } = options;\n\n  if (!(mzmlBuffer instanceof ArrayBuffer)) {\n    throw new TypeError('mzmlBuffer should be an ArrayBuffer');\n  }\n\n  if (rawData && !(rawData instanceof ArrayBuffer)) {\n    throw new TypeError('rawData should be an ArrayBuffer');\n  }\n\n  const rawDataUint8Array = rawData && new Uint8Array(rawData);\n\n  const result = {\n    metadata: {},\n    times: [],\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.times, result.series.ms.data);\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';\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","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","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","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]}