@rpidanny/nepse.js
Version:
Fetch stock data from Nepal Stock Exchange
88 lines • 3.87 kB
JavaScript
;
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