{"version":3,"file":"xy-parser.umd.js","sources":["../node_modules/ensure-string/lib/index.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib/x/xCheck.js","../node_modules/ml-spectra-processing/lib/x/xFindClosestIndex.js","../node_modules/ml-spectra-processing/lib/x/xGetFromToIndex.js","../node_modules/ml-spectra-processing/lib/x/xMaxValue.js","../node_modules/ml-spectra-processing/lib/x/xIsMonotonic.js","../node_modules/ml-spectra-processing/lib/xy/xyCheck.js","../node_modules/ml-spectra-processing/lib/xy/xySortX.js","../node_modules/ml-spectra-processing/lib/xy/xyUniqueX.js","../lib/parse.js","../lib/index.js"],"sourcesContent":["/**\n * Ensure that the data is string. If it is an ArrayBuffer it will be converted to string using TextDecoder.\n * @param blob\n * @param options\n * @returns\n */\nexport function ensureString(blob, options = {}) {\n    if (typeof blob === 'string') {\n        return blob;\n    }\n    if (ArrayBuffer.isView(blob) || blob instanceof ArrayBuffer) {\n        if (options.encoding) {\n            return new TextDecoder(options.encoding).decode(blob);\n        }\n        else {\n            return decodeText(blob);\n        }\n    }\n    throw new TypeError(`blob must be a string, ArrayBuffer or ArrayBufferView`);\n}\nfunction decodeText(blob) {\n    const uint8 = ArrayBuffer.isView(blob)\n        ? new Uint8Array(blob.buffer, blob.byteOffset, blob.byteLength)\n        : new Uint8Array(blob);\n    if (uint8.length >= 2) {\n        if (uint8[0] === 0xfe && uint8[1] === 0xff) {\n            return new TextDecoder('utf-16be').decode(uint8);\n        }\n        if (uint8[0] === 0xff && uint8[1] === 0xfe) {\n            return new TextDecoder('utf-16le').decode(uint8);\n        }\n    }\n    try {\n        return new TextDecoder('utf-8', { fatal: true }).decode(uint8);\n    }\n    catch {\n        return new TextDecoder('latin1').decode(uint8);\n    }\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array, except those that contain bigint values).\n *\n * @param value - Object to check.\n * @returns True if the object is an array or a typed array.\n */\nexport function isAnyArray(value) {\n    const tag = toString.call(value);\n    return tag.endsWith('Array]') && !tag.includes('Big');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if the input is a non-empty array of numbers.\n * Only checks the first element.\n * @param input - Array to check.\n * @param options - Additional checks.\n */\nexport function xCheck(input, options = {}) {\n    const { minLength } = options;\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    if (typeof input[0] !== 'number') {\n        throw new TypeError('input must contain numbers');\n    }\n    if (minLength && input.length < minLength) {\n        throw new Error(`input must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xCheck.js.map","/**\n * Returns the closest index of a `target`\n * @param array - array of numbers\n * @param target - target\n * @param options\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from \"./xFindClosestIndex.js\";\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex } = options;\n    const { from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xCheck } from \"./xCheck.js\";\nimport { xGetFromToIndex } from \"./xGetFromToIndex.js\";\n/**\n * Computes the maximal value of an array of values\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","/**\n * Returns true if x is monotonic.\n * @param array - array of numbers.\n * @returns 1 if monotonic increasing, -1 if monotonic decreasing, 0 if not monotonic.\n */\nexport function xIsMonotonic(array) {\n    if (array.length <= 2) {\n        return 1;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    if (array[0] < array.at(-1)) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return 0;\n        }\n        return 1;\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return 0;\n        }\n        return -1;\n    }\n}\n//# sourceMappingURL=xIsMonotonic.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Verify that `data` is an object of x,y arrays.\n * Throws an error if it's not.\n * @param data\n * @param options\n * @param options.minLength\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (data === null ||\n        typeof data !== 'object' ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.x) ||\n        // @ts-expect-error Typechecking\n        !isAnyArray(data.y)) {\n        throw new Error('data must be an object of x and y arrays');\n    }\n    // @ts-expect-error Typechecking\n    if (data.x.length !== data.y.length) {\n        throw new Error('the x and y arrays must have the same length');\n    }\n    // @ts-expect-error Typechecking\n    if (minLength && data.x.length < minLength) {\n        throw new Error(`data.x must have a length of at least ${minLength}`);\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xIsMonotonic } from \"../x/index.js\";\n/**\n * This function performs a quick sort of the x array while transforming the y array to preserve the coordinates.\n * @param data - Object that contains property x (Array) and y (Array)\n */\nexport function xySortX(data) {\n    const { x, y } = data;\n    if (xIsMonotonic(x) && x.length > 1) {\n        const floatX = Float64Array.from(x);\n        const floatY = Float64Array.from(y);\n        if (floatX.at(-1) < floatX[0]) {\n            floatX.reverse();\n            floatY.reverse();\n        }\n        return {\n            x: floatX,\n            y: floatY,\n        };\n    }\n    const xyObject = Array.from(x, (val, index) => ({\n        x: val,\n        y: y[index],\n    }));\n    xyObject.sort((a, b) => a.x - b.x);\n    const response = {\n        x: new Float64Array(x.length),\n        y: new Float64Array(y.length),\n    };\n    for (let i = 0; i < x.length; i++) {\n        response.x[i] = xyObject[i].x;\n        response.y[i] = xyObject[i].y;\n    }\n    return response;\n}\n//# sourceMappingURL=xySortX.js.map","import { xyCheck } from \"./xyCheck.js\";\nimport { xySortX } from \"./xySortX.js\";\n/**\n * Ensure x values are unique\n * @param data - Object that contains property x (Array) and y (Array)\n * @param options - Object containing a property algorithm (can be 'sum' or 'average', the latter being the default value), and a property isSorted (boolean indicating if the x-array is sorted).\n */\nexport function xyUniqueX(data, options = {}) {\n    xyCheck(data);\n    if (data.x.length === 0) {\n        return { x: [], y: [] };\n    }\n    const { algorithm = 'average', isSorted = true } = options;\n    if (!isSorted) {\n        data = xySortX(data);\n    }\n    switch (algorithm) {\n        case 'average':\n            return average(data);\n        case 'sum':\n            return sum(data);\n        default:\n            throw new Error(`unknown algorithm: ${String(algorithm)}`);\n    }\n}\n/**\n * Average.\n * @param data - Input.\n * @returns Result.\n */\nfunction average(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    let divider = 1;\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY / divider);\n            cumulativeY = 0;\n            divider = 0;\n        }\n        cumulativeY += data.y[i];\n        divider++;\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY / divider);\n    return { x, y };\n}\n/**\n * Sum.\n * @param data - Input.\n * @returns Result.\n */\nfunction sum(data) {\n    const x = [];\n    const y = [];\n    let cumulativeY = data.y[0];\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY);\n            cumulativeY = 0;\n        }\n        cumulativeY += data.y[i];\n    }\n    x.push(data.x.at(-1));\n    y.push(cumulativeY);\n    return { x, y };\n}\n//# sourceMappingURL=xyUniqueX.js.map","import { ensureString } from 'ensure-string';\nimport { xIsMonotonic, xMaxValue, xyUniqueX } from 'ml-spectra-processing';\n/**\n * General internal parsing function\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns parsed text file with column information\n */\nexport function parse(text, options = {}) {\n    const { rescale = false, uniqueX = false, bestGuess = false, \n    //@ts-expect-error old library used this property and we want to throw an error so that people are forced to migrate\n    keepInfo, } = options;\n    let { xColumn = 0, yColumn = 1, numberColumns = Number.MAX_SAFE_INTEGER, maxNumberColumns = Number.MAX_SAFE_INTEGER, minNumberColumns = 2, } = options;\n    if (keepInfo !== undefined) {\n        throw new Error('keepInfo has been deprecated, please use the new method parseXYAndKeepInfo');\n    }\n    text = ensureString(text);\n    maxNumberColumns = Math.max(maxNumberColumns, xColumn + 1, yColumn + 1);\n    minNumberColumns = Math.max(xColumn + 1, yColumn + 1, minNumberColumns);\n    const lines = text.split(/[\\n\\r]+/);\n    let matrix = [];\n    const info = [];\n    let position = 0;\n    for (let line of lines) {\n        line = line.trim();\n        // we will consider only lines that contains only numbers\n        if (/\\d+/.test(line) && /^[\\d\\t +,.;Ee-]+$/.test(line)) {\n            let fields = line.split(/,[\\t ;]+|[\\t ;]+/);\n            if (fields.length === 1) {\n                fields = line.split(/[\\t ,;]+/);\n            }\n            if (fields &&\n                fields.length >= minNumberColumns && // we filter lines that have not enough or too many columns\n                fields.length <= maxNumberColumns) {\n                matrix.push(fields.map((value) => Number.parseFloat(value.replace(',', '.'))));\n                position++;\n            }\n        }\n        else if (line) {\n            info.push({ position, value: line });\n        }\n    }\n    if (bestGuess) {\n        if (matrix[0]?.length === 3 &&\n            options.xColumn === undefined &&\n            options.yColumn === undefined) {\n            // is the first column a sequential number?\n            let skipFirstColumn = true;\n            for (let i = 0; i < matrix.length - 1; i++) {\n                const currentFirst = matrix[i][0];\n                const nextFirst = matrix[i + 1][0];\n                if (Math.abs(currentFirst - nextFirst) !== 1) {\n                    skipFirstColumn = false;\n                }\n            }\n            if (skipFirstColumn) {\n                xColumn = 1;\n                yColumn = 2;\n            }\n        }\n        if (matrix[0] && matrix[0].length > 3) {\n            const xs = [];\n            for (const row of matrix) {\n                for (let i = xColumn; i < row.length; i += 2) {\n                    xs.push(row[i]);\n                }\n            }\n            if (xIsMonotonic(xs)) {\n                numberColumns = 2;\n            }\n        }\n    }\n    if (numberColumns) {\n        const newMatrix = [];\n        for (const row of matrix) {\n            for (let i = 0; i < row.length; i += numberColumns) {\n                newMatrix.push(row.slice(i, i + numberColumns));\n            }\n        }\n        matrix = newMatrix;\n    }\n    let result = {\n        x: matrix.map((row) => row[xColumn]),\n        y: matrix.map((row) => row[yColumn]),\n    };\n    if (uniqueX) {\n        result = xyUniqueX(result, { algorithm: 'sum' });\n    }\n    if (rescale) {\n        const maxY = xMaxValue(result.y);\n        const yValues = result.y;\n        for (let i = 0; i < yValues.length; i++) {\n            yValues[i] = yValues[i] / maxY;\n        }\n    }\n    return {\n        info,\n        data: result,\n    };\n}\n//# sourceMappingURL=parse.js.map","import { parse } from \"./parse.js\";\nexport * from \"./ParseXYOptions.js\";\n/**\n * Parse a text-file and convert it to an object {x:[], y:[]}\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data\n */\nexport function parseXY(text, options = {}) {\n    return parse(text, options).data;\n}\n/**\n * Parse a text-file and returns the parsed data and information about the columns\n * @param text - Csv or tsv strings.\n * @param options - Parsing options\n * @returns - The parsed data with information about the columns\n */\nexport function parseXYAndKeepInfo(text, options = {}) {\n    return parse(text, options);\n}\n//# sourceMappingURL=index.js.map"],"names":["ensureString","blob","options","ArrayBuffer","isView","encoding","TextDecoder","decode","decodeText","TypeError","uint8","Uint8Array","buffer","byteOffset","byteLength","length","fatal","toString","Object","prototype","isAnyArray","value","tag","call","endsWith","includes","xCheck","input","minLength","Error","xFindClosestIndex","array","target","sorted","low","high","middle","Math","abs","index","diff","Number","POSITIVE_INFINITY","i","currentDiff","xGetFromToIndex","x","fromIndex","toIndex","from","to","undefined","xMaxValue","maxValue","xIsMonotonic","at","xyCheck","data","y","xySortX","floatX","Float64Array","floatY","reverse","xyObject","Array","val","sort","a","b","response","xyUniqueX","algorithm","isSorted","average","sum","String","cumulativeY","divider","push","parse","text","rescale","uniqueX","bestGuess","keepInfo","xColumn","yColumn","numberColumns","MAX_SAFE_INTEGER","maxNumberColumns","minNumberColumns","max","lines","split","matrix","info","position","line","trim","test","fields","map","parseFloat","replace","skipFirstColumn","currentFirst","nextFirst","xs","row","newMatrix","slice","result","maxY","yValues","parseXY","parseXYAndKeepInfo"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}