@thoshpathi/utils-smartapi
Version:
Extended utilities for Angel One's smartapi-javascript SDK, including custom methods and helpers for market data like candles, P&L, and more.
85 lines (82 loc) • 2.43 kB
JavaScript
import {
SmartApiEnhanced
} from "./chunk-EOAIEQMR.mjs";
// src/smartapi/index.ts
import { WebSocketV2 } from "@thoshpathi/smartapi-javascript";
import { logger } from "@thoshpathi/utils-core";
var defaultConfigs = {
apiRetryDelayMs: 1e3,
apiTimeoutMs: 4e3
};
function isValidString(s) {
return typeof s === "string" && s.trim().length > 0;
}
function validateBrokerData(brokerData) {
if (brokerData == null) {
logger.c("get logged smartapi failed. broker data empty");
return;
}
const { clientId, apiKey } = brokerData;
if (!isValidString(clientId) || !isValidString(apiKey)) {
logger.c("get logged smartapi failed. clientId or apiKey empty");
return;
}
return brokerData;
}
function validateBrokerTokenData(brokerTokenData) {
if (validateBrokerData(brokerTokenData) == null) return;
const { jwtToken, refreshToken, feedToken } = brokerTokenData;
if (!isValidString(jwtToken) || !isValidString(refreshToken) || !isValidString(feedToken)) {
logger.c(
"get logged smartapi failed. jwtToken or refreshToken or feedToken empty"
);
return;
}
return brokerTokenData;
}
async function getLoggedSmartapi(params) {
const {
brokerData,
configs: { apiRetryDelayMs, apiTimeoutMs } = defaultConfigs
} = params;
if (validateBrokerTokenData(brokerData) == null) return;
const { apiKey, clientId, jwtToken, refreshToken } = brokerData;
const configs = {
api_key: apiKey,
client_code: clientId,
access_token: jwtToken,
timeout: apiTimeoutMs,
refresh_token: refreshToken
};
return new SmartApiEnhanced(configs, apiRetryDelayMs, logger);
}
function getSmartapi(params) {
const {
brokerData,
configs: { apiRetryDelayMs, apiTimeoutMs } = defaultConfigs
} = params;
if (validateBrokerData(brokerData) == null) return;
const { apiKey, clientId } = brokerData;
const configs = {
api_key: apiKey,
client_code: clientId,
timeout: apiTimeoutMs
};
return new SmartApiEnhanced(configs, apiRetryDelayMs, logger);
}
async function getLoggedWebsocket(brokerData) {
if (validateBrokerTokenData(brokerData) == null) return;
const { apiKey, clientId, jwtToken, feedToken } = brokerData;
const webSocket = new WebSocketV2({
apikey: apiKey,
clientcode: clientId,
jwttoken: jwtToken,
feedtype: feedToken
});
return webSocket;
}
export {
getLoggedSmartapi,
getSmartapi,
getLoggedWebsocket
};