UNPKG

nepse-api-helper

Version:

a wrapper to use nepse api easily since they set up weird restrictions

90 lines (89 loc) 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nepseClient = void 0; exports.createInitialState = createInitialState; exports.initialize = initialize; exports.getMarketStatus = getMarketStatus; exports.getSecurities = getSecurities; exports.getSecurityDetail = getSecurityDetail; exports.getToken = getToken; exports.getNepseIndex = getNepseIndex; const auth_1 = require("./auth"); const errors_1 = require("./errors"); const http_1 = require("./http"); const security_1 = require("./security"); const wasm_1 = require("./wasm"); function createInitialState() { return { wasmExports: null, token: { value: null, expiry: 0 }, caches: { securityBriefs: {} }, isInitialized: false }; } let globalState = createInitialState(); function initializationGuard() { if (!globalState.isInitialized) { throw (0, errors_1.createNepseError)('Library not initialized. Call initialize() first', 'NOT_INITIALIZED'); } } async function initialize() { if (globalState.isInitialized) { return; } // Load WASM module const wasmExports = await (0, wasm_1.loadWasmModule)(); // Update global state globalState = { ...globalState, wasmExports, isInitialized: true, }; // Pre-fetch security briefs const [newState] = await (0, security_1.fetchSecurityBriefs)(globalState); globalState = newState; } async function getMarketStatus() { initializationGuard(); const [newState, marketStatus] = await (0, security_1.fetchMarketStatus)(globalState); globalState = newState; return marketStatus; } async function getSecurities() { initializationGuard(); const [newState, securities] = await (0, security_1.fetchSecurityBriefs)(globalState); globalState = newState; return securities; } async function getSecurityDetail(symbol) { initializationGuard(); const [newState, securityDetail] = await (0, security_1.fetchSecurityDetail)(globalState, symbol); globalState = newState; return securityDetail; } async function getToken() { initializationGuard(); const [newState, token] = await (0, auth_1.getAccessToken)(globalState); globalState = newState; return token; } async function getNepseIndex() { initializationGuard(); const [newState, indexes] = await (0, security_1.fetchNepseIndex)(globalState); globalState = newState; return indexes; } exports.nepseClient = { initialize, getMarketStatus, getSecurities, getSecurityDetail, getNepseIndex, getToken, createHeaders: http_1.createHeaders };