{"version":3,"sources":["jsdelivr-header.js","/npm/yahoo-stock-api@2.2.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/yahoo-stock-api@2.2.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/yahoo-stock-api@2.2.1/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n    if (mod && mod.__esModule) return mod;\n    var result = {};\n    if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n    __setModuleDefault(result, mod);\n    return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nconst undici_1 = require(\"undici\");\nconst camelcase_1 = __importDefault(require(\"camelcase\"));\nconst cheerio = __importStar(require(\"cheerio\"));\nconst numeral_1 = __importDefault(require(\"numeral\"));\nconst utils_1 = require(\"./utils\");\nclass YahooStockAPI {\n    frequencyList = ['1d', '1wk', '1mo'];\n    requestPool = new undici_1.Pool('https://finance.yahoo.com');\n    getTidyName(dirtyName) {\n        const name = dirtyName;\n        const regex = /^[^(]*/;\n        return regex.exec(name)[0].trim();\n    }\n    async getHistoricalPrices({ startDate, endDate, symbol, frequency }) {\n        try {\n            if (!startDate || Object.prototype.toString.call(startDate) !== '[object Date]')\n                throw new Error('startDate not provided or not a \"Date\" type!');\n            if (!endDate || Object.prototype.toString.call(startDate) !== '[object Date]')\n                throw new Error('endDate not provided or not a \"Date\" type!');\n            if (!symbol || typeof symbol !== 'string')\n                throw new Error('Symbol not provided or Symbol is not a string!');\n            if (!frequency || typeof frequency !== 'string' || !this.frequencyList.includes(frequency))\n                throw new Error('Frequency should be \"1d\", \"1wk\" or \"1mo\"');\n            const period1 = (0, utils_1.dateToUnix)(startDate);\n            // pluis 1 day\n            const period2 = (0, utils_1.dateToUnix)(endDate) + 86400;\n            const request = await this.requestPool.request({\n                method: 'GET',\n                path: `/quote/${symbol}/history?period1=${period1}&period2=${period2}&interval=${frequency}&filter=history&frequency=${frequency}&includeAdjustedClose=true`,\n            });\n            const responseBody = await request.body.text();\n            const $ = cheerio.load(responseBody);\n            if ($('title').text() == 'Requested symbol wasn\\'t found')\n                throw new Error('Symbol not found!');\n            let currency = $('#quote-header-info > div:nth-child(2) > div > div > span').text();\n            currency = currency ? currency.split('.')[1].replace('Currency in', '').trim() : undefined;\n            const name = this.getTidyName($('h1').text());\n            const response = $('#Col1-1-HistoricalDataTable-Proxy > section > div:nth-child(2) > table > tbody > tr').map(this.getHistoricalPricesMapRows).get();\n            // filter out null values (dividend pays)\n            const columns = ['date', 'open', 'high', 'low', 'close', 'adjClose', 'volume'];\n            const filteredResponse = response.filter((obj) => {\n                return !columns.some((column) => obj[column] == null);\n            });\n            return {\n                error: false,\n                currency: currency || undefined,\n                name: name || undefined,\n                response: filteredResponse,\n            };\n        }\n        catch (err) {\n            return this.handleError(err);\n        }\n    }\n    async getSymbol({ symbol }) {\n        try {\n            if (!symbol || typeof symbol !== 'string')\n                throw new Error('Symbol not provided or Symbol is not a string!');\n            const request = await this.requestPool.request({\n                method: 'GET',\n                path: `/quote/${symbol}/`,\n            });\n            const responseBody = await request.body.text();\n            const $ = cheerio.load(responseBody);\n            let currency = $('#quote-header-info > div:nth-child(2) > div > div > span').text();\n            const name = this.getTidyName($('h1').text());\n            currency = currency ? currency.split('.')[1].replace('Currency in', '').trim() : undefined;\n            // @ts-ignore\n            const col1 = $('#quote-summary > div.Pend\\\\(12px\\\\) > table > tbody').map(this.getSymbolMapRows).get()[0];\n            // @ts-ignore\n            const col2 = $('#quote-summary > div.Pstart\\\\(12px\\\\) > table > tbody').map(this.getSymbolMapRows).get()[0];\n            return this.handleResponse({ updated: Date.now(), ...this.parseCol1(col1), ...this.parseCol2(col2) }, currency, name);\n        }\n        catch (err) {\n            return this.handleError(err);\n        }\n    }\n    getHistoricalPricesMapRows(_, row) {\n        const obj = { date: null, open: null, high: null, low: null, close: null, adjClose: null, volume: null };\n        const columns = ['date', 'open', 'high', 'low', 'close', 'adjClose', 'volume'];\n        const $row = cheerio.load(row);\n        $row('td').each((index, cell) => {\n            const text = $row(cell).text();\n            const selector = columns[index];\n            if (index === 0) {\n                obj[selector] = new Date(`${text} 00:00:00 +0000`).getTime() / 1000;\n            }\n            else {\n                obj[selector] = (0, numeral_1.default)(text).value();\n            }\n        });\n        return obj;\n    }\n    getSymbolMapRows(_, row) {\n        const json = {};\n        const skipCheckColumn = ['marketCap', 'earningsDate', 'exDividendDate', 'bid', 'ask'];\n        // eslint-disable-next-line no-shadow\n        cheerio.load(row)('tr').each((_, cell) => {\n            cell = cheerio.load(cell);\n            const column = cell('td:nth-child(1)').text().replace('1y', 'oneYear').replace('52', 'fiftyTwo').replace(/\\([^)]*\\)|'s|&/g, '');\n            const value = cell('td:nth-child(2)').text() !== 'N/A' ? cell('td:nth-child(2)').text() : null;\n            // @ts-ignore\n            json[(0, camelcase_1.default)(column)] = (0, numeral_1.default)(value).value() == null || isNaN((0, numeral_1.default)(value).value()) || skipCheckColumn.includes((0, camelcase_1.default)(column)) ? value : (0, numeral_1.default)(value).value();\n        });\n        return json;\n    }\n    handleError(error) {\n        return {\n            error: true,\n            message: error instanceof Error ? error.message : error,\n        };\n    }\n    handleResponse(response, currency, name) {\n        if (!response)\n            throw new Error('Response if not provided');\n        return {\n            error: false,\n            currency: currency || undefined,\n            name: name || undefined,\n            response,\n        };\n    }\n    parseCol1(Column1) {\n        const json = {\n            previousClose: 0,\n            open: 0,\n            bid: {\n                value: 0,\n                shares: 0,\n            },\n            ask: {\n                value: 0,\n                shares: 0,\n            },\n            dayRange: {\n                low: 0,\n                high: 0,\n            },\n            fiftyTwoWeekRange: {\n                low: 0,\n                high: 0,\n            },\n            volume: 0,\n            avgVolume: 0,\n        };\n        Object.entries(Column1).forEach(([k, v], index) => {\n            switch (index) {\n                case 2:\n                case 3: {\n                    const [value, shares] = v.toString().split('x').map((val) => (0, numeral_1.default)(val.trim()).value());\n                    // @ts-ignore\n                    json[k]['value'] = value;\n                    // @ts-ignore\n                    json[k]['shares'] = shares;\n                    break;\n                }\n                case 4:\n                case 5: {\n                    const [low, high] = v.toString().split('-').map((val) => (0, numeral_1.default)(val.trim()).value());\n                    // @ts-ignore\n                    json[k]['low'] = low;\n                    // @ts-ignore\n                    json[k]['high'] = high;\n                    break;\n                }\n                default: {\n                    // @ts-ignore\n                    json[k] = (0, numeral_1.default)(v).value();\n                }\n            }\n        });\n        return json;\n    }\n    parseCol2(Column2) {\n        const json = {\n            marketCap: 0,\n            beta: 0,\n            peRatio: 0,\n            eps: 0,\n            earningsDate: {\n                start: 0,\n                end: 0,\n            },\n            forwardDividend: 0,\n            forwardYield: 0,\n            exDividendDate: 0,\n            oneYearTargetEst: 0,\n        };\n        Object.entries(Column2).forEach(([k, v], index) => {\n            switch (index) {\n                case 0: {\n                    // @ts-ignore\n                    json.marketCap = (0, utils_1.convertMarketCap)(v);\n                    break;\n                }\n                case 4: {\n                    const [start, end] = v.toString().split('-').map((val) => (0, utils_1.dateToUnix)(val.trim()));\n                    // @ts-ignore\n                    json[k]['start'] = start || null;\n                    // @ts-ignore\n                    json[k]['end'] = end || null;\n                    break;\n                }\n                case 5: {\n                    const [fdividend, fyield] = v.toString().split(' ').map((val) => (0, numeral_1.default)(val.trim().replace('(', '').replace(')', '').replace('%', '')).value());\n                    // @ts-ignore\n                    json.forwardDividend = fdividend || null;\n                    // @ts-ignore\n                    json.forwardYield = fyield;\n                    break;\n                }\n                case 6:\n                    // @ts-ignore\n                    json[k] = !v ? null : (0, utils_1.dateToUnix)(v);\n                    break;\n                default:\n                    // @ts-ignore\n                    json[k] = (0, numeral_1.default)(v).value();\n                    break;\n            }\n        });\n        return json;\n    }\n}\nexports.default = YahooStockAPI;\n"]}