nepse-api-helper
Version:
a wrapper to use nepse api easily since they set up weird restrictions
90 lines (89 loc) • 2.69 kB
JavaScript
;
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
};