UNPKG

@rpidanny/nepse.js

Version:

Fetch stock data from Nepal Stock Exchange

88 lines 3.87 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NepseExtended = void 0; const csvtojson_1 = __importDefault(require("csvtojson")); const promises_1 = __importDefault(require("fs/promises")); const json2csv_1 = require("json2csv"); class NepseExtended { constructor(nepse) { this.nepse = nepse; this.parsingOptions = { delimiter: ',', quote: '"', trim: true, flatKeys: true, }; } async getTodaysPricesExport(date) { const csvData = await this.nepse.getTodaysPricesExport(date); let parsedData = await (0, csvtojson_1.default)(this.parsingOptions).fromString(csvData); parsedData = parsedData.map((d) => this.transformData(d)); return parsedData; } async downloadTodaysPriceExportToCsv(date, path) { const filePath = `${path}/${date}.csv`; const csvData = await this.nepse.getTodaysPricesExport(date); await promises_1.default.writeFile(filePath, csvData); return filePath; } transformData(data) { return { serialNumber: parseFloat(data['S.N']), businessDate: data.BUSINESS_DATE, securityId: parseInt(data.SECURITY_ID), symbol: data.SYMBOL, securityName: data.SECURITY_NAME, openPrice: parseFloat(data.OPEN_PRICE), highPrice: parseFloat(data.HIGH_PRICE), lowPrice: parseFloat(data.LOW_PRICE), closePrice: parseFloat(data.CLOSE_PRICE), totalTradedQuantity: parseInt(data.TOTAL_TRADED_QUANTITY), totalTradedValue: parseFloat(data.TOTAL_TRADED_VALUE), previousDayClosePrice: parseFloat(data.PREVIOUS_DAY_CLOSE_PRICE), fiftyTwoWeekHigh: parseFloat(data.FIFTY_TWO_WEEKS_HIGH), fiftyTwoWeekLow: parseFloat(data.FIFTY_TWO_WEEKS_LOW), lastUpdatedTime: data.LAST_UPDATED_TIME, lastUpdatedPrice: parseFloat(data.LAST_UPDATED_PRICE), totalTrades: parseInt(data.TOTAL_TRADES), averageTradedPrice: parseFloat(data.AVERAGE_TRADED_PRICE), marketCap: parseFloat(data.MARKET_CAPITALIZATION), }; } async getFloorSheet() { const { totalAmount, totalQty, totalTrades, floorsheets: { totalPages, content }, } = await this.nepse.getFloorSheet(); let floorSheets = [...content]; for (let pageNumber = 1; pageNumber < totalPages; pageNumber++) { const { floorsheets: { content }, } = await this.nepse.getFloorSheet(pageNumber); floorSheets = floorSheets.concat(content); } return { totalAmount, totalQty, totalTrades, floorSheets, }; } async downloadFloorSheetsToCsv(path) { const filePath = `${path}/${new Date().toISOString()}.csv`; const { floorSheets } = await this.getFloorSheet(); const jsonParser = new json2csv_1.Parser(); const csvData = jsonParser.parse(floorSheets); await promises_1.default.writeFile(filePath, csvData); return filePath; } async getSecurityHistory(securityId, startDate, endDate) { const { totalPages, content } = await this.nepse.getSecurityHistory(securityId, startDate, endDate); let histories = [...content]; for (let pageNumber = 1; pageNumber < totalPages; pageNumber++) { const { content } = await this.nepse.getSecurityHistory(securityId, startDate, endDate, pageNumber); histories = histories.concat(content); } return histories; } } exports.NepseExtended = NepseExtended; //# sourceMappingURL=nepse-extended.js.map