corexxx 1.0.19 → 1.0.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/yahoofin.d.ts +12 -4
- package/dist/yahoofin.js +77 -7
- package/dist/yahoofin.js.map +1 -1
- package/package.json +2 -1
- package/src/yahoofin.ts +79 -9
package/dist/yahoofin.d.ts
CHANGED
|
@@ -1,25 +1,31 @@
|
|
|
1
1
|
export declare namespace yahooFin {
|
|
2
2
|
type TStockInfo = {
|
|
3
|
+
_id: string;
|
|
3
4
|
ltp: number;
|
|
4
5
|
open: number;
|
|
5
6
|
symbol: string;
|
|
6
7
|
name: string;
|
|
7
|
-
exchange:
|
|
8
|
+
exchange: TExchange;
|
|
8
9
|
volume: number;
|
|
9
10
|
high: number;
|
|
10
11
|
low: number;
|
|
11
|
-
week52High: number;
|
|
12
|
-
week52Low: number;
|
|
13
|
-
avgVolume: number;
|
|
14
12
|
change: number;
|
|
15
13
|
pChange: number;
|
|
14
|
+
week52High?: number;
|
|
15
|
+
week52Low?: number;
|
|
16
|
+
avgVolume?: number;
|
|
16
17
|
yAnalystRating?: string;
|
|
17
18
|
pre_ltp?: number;
|
|
18
19
|
pre_pChange?: number;
|
|
19
20
|
post_ltp?: number;
|
|
20
21
|
post_pChange?: number;
|
|
22
|
+
previousClose?: number;
|
|
21
23
|
};
|
|
24
|
+
type TExchange = "NSE" | "BSE" | "NASDAQ" | "LSE";
|
|
25
|
+
function getExchangeFromKey(id: string): TExchange;
|
|
22
26
|
function getBulkStockQuote(symbols: string[], exchange: "NSE" | "BSE" | "LSE" | "NASDAQ"): Promise<TStockInfo[]>;
|
|
27
|
+
function getSymbolFromFullKey(key: string): string;
|
|
28
|
+
function getBulkStockQuoteWithFullKey(symbols: string[]): Promise<TStockInfo[]>;
|
|
23
29
|
type TInterval = "1d" | "5m" | "15m" | "1h";
|
|
24
30
|
type THistoryData = {
|
|
25
31
|
timestamp: number[];
|
|
@@ -32,4 +38,6 @@ export declare namespace yahooFin {
|
|
|
32
38
|
};
|
|
33
39
|
function getHistoryData(symbol: string, interval: TInterval, candle_count?: number): Promise<THistoryData | undefined>;
|
|
34
40
|
function getBulkHistoryData(symbols: string[], interval: TInterval, candle_count?: number): Promise<Map<string, THistoryData> | undefined>;
|
|
41
|
+
type TSupportedNSEIndex = "NIFTY 50" | "NIFTY BANK" | "NIFTY ENERGY" | "NIFTY 200" | "NIFTY 500";
|
|
42
|
+
function fetchNSEIndexList(index: TSupportedNSEIndex): Promise<yahooFin.TStockInfo[]>;
|
|
35
43
|
}
|
package/dist/yahoofin.js
CHANGED
|
@@ -11,18 +11,44 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.yahooFin = void 0;
|
|
13
13
|
const axios = require("axios").default;
|
|
14
|
+
const nse_indices_1 = require("nse-indices");
|
|
14
15
|
const dlog_1 = require("./dlog");
|
|
15
16
|
var yahooFin;
|
|
16
17
|
(function (yahooFin) {
|
|
17
18
|
const extMap = { NSE: ".NS", BSE: ".BS", NASDAQ: "", LSE: ".L" };
|
|
18
|
-
|
|
19
|
+
function getExchangeFromKey(id) {
|
|
20
|
+
if (!id) {
|
|
21
|
+
return "NASDAQ";
|
|
22
|
+
}
|
|
23
|
+
if (id.endsWith(".BS"))
|
|
24
|
+
return "BSE";
|
|
25
|
+
if (id.endsWith(".NS"))
|
|
26
|
+
return "NSE";
|
|
27
|
+
if (id.endsWith(".L"))
|
|
28
|
+
return "LSE";
|
|
29
|
+
return "NASDAQ";
|
|
30
|
+
}
|
|
31
|
+
yahooFin.getExchangeFromKey = getExchangeFromKey;
|
|
19
32
|
function getBulkStockQuote(symbols, exchange) {
|
|
20
|
-
var _a, _b, _c, _d, _e;
|
|
21
33
|
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
-
|
|
34
|
+
return yield getBulkStockQuoteWithFullKey(symbols.map((x) => x + extMap[exchange]));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
yahooFin.getBulkStockQuote = getBulkStockQuote;
|
|
38
|
+
function getSymbolFromFullKey(key) {
|
|
39
|
+
if (!key) {
|
|
40
|
+
return key;
|
|
41
|
+
}
|
|
42
|
+
return key.replace(".NS", "").replace(".L", "").replace(".BS", "");
|
|
43
|
+
}
|
|
44
|
+
yahooFin.getSymbolFromFullKey = getSymbolFromFullKey;
|
|
45
|
+
// Get map
|
|
46
|
+
function getBulkStockQuoteWithFullKey(symbols) {
|
|
47
|
+
var _a, _b, _c, _d, _e, _f;
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
if (!symbols || symbols.length == 0) {
|
|
23
50
|
return [];
|
|
24
51
|
}
|
|
25
|
-
symbols = symbols.map((x) => x + extMap[exchange]);
|
|
26
52
|
let result = [];
|
|
27
53
|
try {
|
|
28
54
|
let resp = yield axios.get(`https://query1.finance.yahoo.com/v7/finance/quote?formatted=true&symbols=${symbols.join(",")}`, {
|
|
@@ -34,9 +60,10 @@ var yahooFin;
|
|
|
34
60
|
for (let d of data.quoteResponse.result) {
|
|
35
61
|
//dlog.obj(d.postMarketChangePercent);
|
|
36
62
|
result.push({
|
|
37
|
-
|
|
63
|
+
_id: d.symbol,
|
|
64
|
+
symbol: getSymbolFromFullKey(d.symbol),
|
|
38
65
|
name: d.shortName,
|
|
39
|
-
exchange:
|
|
66
|
+
exchange: getExchangeFromKey(d.symbol),
|
|
40
67
|
ltp: d.regularMarketPrice.raw,
|
|
41
68
|
open: d.regularMarketOpen.raw,
|
|
42
69
|
low: d.regularMarketDayLow.raw,
|
|
@@ -52,6 +79,7 @@ var yahooFin;
|
|
|
52
79
|
post_pChange: (_c = d.postMarketChangePercent) === null || _c === void 0 ? void 0 : _c.raw,
|
|
53
80
|
pre_ltp: (_d = d.preMarketPrice) === null || _d === void 0 ? void 0 : _d.raw,
|
|
54
81
|
pre_pChange: (_e = d.preMarketChangePercent) === null || _e === void 0 ? void 0 : _e.raw,
|
|
82
|
+
previousClose: (_f = d.regularMarketPreviousClose) === null || _f === void 0 ? void 0 : _f.raw,
|
|
55
83
|
});
|
|
56
84
|
}
|
|
57
85
|
//dlog.obj(result);
|
|
@@ -63,7 +91,7 @@ var yahooFin;
|
|
|
63
91
|
return result;
|
|
64
92
|
});
|
|
65
93
|
}
|
|
66
|
-
yahooFin.
|
|
94
|
+
yahooFin.getBulkStockQuoteWithFullKey = getBulkStockQuoteWithFullKey;
|
|
67
95
|
function getHistoryData(symbol, interval, candle_count) {
|
|
68
96
|
return __awaiter(this, void 0, void 0, function* () {
|
|
69
97
|
candle_count = candle_count || 14;
|
|
@@ -103,6 +131,48 @@ var yahooFin;
|
|
|
103
131
|
});
|
|
104
132
|
}
|
|
105
133
|
yahooFin.getBulkHistoryData = getBulkHistoryData;
|
|
134
|
+
function fetchNSEIndexList(index) {
|
|
135
|
+
var _a;
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
try {
|
|
138
|
+
let data = yield nse_indices_1.getIndex(index);
|
|
139
|
+
let result = [];
|
|
140
|
+
for (var x of data.data) {
|
|
141
|
+
// log.obj(x);
|
|
142
|
+
try {
|
|
143
|
+
let d = {
|
|
144
|
+
exchange: "NSE",
|
|
145
|
+
_id: x.symbol + ".NS",
|
|
146
|
+
symbol: x.symbol,
|
|
147
|
+
change: x.change,
|
|
148
|
+
pChange: x.pChange,
|
|
149
|
+
name: ((_a = x.meta) === null || _a === void 0 ? void 0 : _a.companyName) || x.symbol,
|
|
150
|
+
week52Low: x.yearLow,
|
|
151
|
+
week52High: x.yearHigh,
|
|
152
|
+
volume: x.totalTradedVolume,
|
|
153
|
+
ltp: x.lastPrice,
|
|
154
|
+
low: x.dayLow,
|
|
155
|
+
high: x.dayHigh,
|
|
156
|
+
open: x.open,
|
|
157
|
+
};
|
|
158
|
+
result.push(d);
|
|
159
|
+
}
|
|
160
|
+
catch (e) {
|
|
161
|
+
dlog_1.dlog.d("Not able to fetch latest stock info");
|
|
162
|
+
dlog_1.dlog.ex(e, true);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
dlog_1.dlog.s(`NSE Data fetched ${result.length} item found`);
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
dlog_1.dlog.d("Exception: Not able to fetch latest stock info may be NSE API is broken");
|
|
170
|
+
dlog_1.dlog.ex(e, true);
|
|
171
|
+
}
|
|
172
|
+
return [];
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
yahooFin.fetchNSEIndexList = fetchNSEIndexList;
|
|
106
176
|
// end of lib
|
|
107
177
|
})(yahooFin = exports.yahooFin || (exports.yahooFin = {}));
|
|
108
178
|
// test
|
package/dist/yahoofin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yahoofin.js","sourceRoot":"","sources":["../src/yahoofin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACvC,iCAA8B;AAE9B,IAAiB,QAAQ,
|
|
1
|
+
{"version":3,"file":"yahoofin.js","sourceRoot":"","sources":["../src/yahoofin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "corexxx",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"@types/underscore": "^1.11.3",
|
|
16
16
|
"axios": "^0.21.1",
|
|
17
17
|
"moment": "^2.29.1",
|
|
18
|
+
"nse-indices": "^0.0.3",
|
|
18
19
|
"underscore": "^1.13.1",
|
|
19
20
|
"universal-cookie": "^4.0.4"
|
|
20
21
|
},
|
package/src/yahoofin.ts
CHANGED
|
@@ -1,37 +1,64 @@
|
|
|
1
1
|
const axios = require("axios").default;
|
|
2
|
+
import { getIndex } from "nse-indices";
|
|
2
3
|
import { dlog } from "./dlog";
|
|
3
4
|
|
|
4
5
|
export namespace yahooFin {
|
|
5
6
|
// define types
|
|
6
7
|
export type TStockInfo = {
|
|
8
|
+
_id: string;
|
|
7
9
|
ltp: number;
|
|
8
10
|
open: number;
|
|
9
11
|
symbol: string;
|
|
10
12
|
name: string;
|
|
11
|
-
exchange:
|
|
13
|
+
exchange: TExchange;
|
|
12
14
|
volume: number;
|
|
13
15
|
high: number;
|
|
14
16
|
low: number;
|
|
15
|
-
week52High: number;
|
|
16
|
-
week52Low: number;
|
|
17
|
-
avgVolume: number;
|
|
18
17
|
change: number;
|
|
19
18
|
pChange: number;
|
|
19
|
+
|
|
20
|
+
// opt
|
|
21
|
+
week52High?: number;
|
|
22
|
+
week52Low?: number;
|
|
23
|
+
avgVolume?: number;
|
|
20
24
|
yAnalystRating?: string;
|
|
21
25
|
pre_ltp?: number;
|
|
22
26
|
pre_pChange?: number;
|
|
23
27
|
post_ltp?: number;
|
|
24
28
|
post_pChange?: number;
|
|
29
|
+
previousClose?: number;
|
|
25
30
|
};
|
|
26
31
|
|
|
32
|
+
export type TExchange = "NSE" | "BSE" | "NASDAQ" | "LSE";
|
|
33
|
+
|
|
27
34
|
const extMap = { NSE: ".NS", BSE: ".BS", NASDAQ: "", LSE: ".L" };
|
|
28
35
|
|
|
29
|
-
|
|
36
|
+
export function getExchangeFromKey(id: string): TExchange {
|
|
37
|
+
if (!id) {
|
|
38
|
+
return "NASDAQ";
|
|
39
|
+
}
|
|
40
|
+
if (id.endsWith(".BS")) return "BSE";
|
|
41
|
+
if (id.endsWith(".NS")) return "NSE";
|
|
42
|
+
if (id.endsWith(".L")) return "LSE";
|
|
43
|
+
return "NASDAQ";
|
|
44
|
+
}
|
|
45
|
+
|
|
30
46
|
export async function getBulkStockQuote(symbols: string[], exchange: "NSE" | "BSE" | "LSE" | "NASDAQ"): Promise<TStockInfo[]> {
|
|
31
|
-
|
|
47
|
+
return await getBulkStockQuoteWithFullKey(symbols.map((x) => x + extMap[exchange]));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function getSymbolFromFullKey(key: string) {
|
|
51
|
+
if (!key) {
|
|
52
|
+
return key;
|
|
53
|
+
}
|
|
54
|
+
return key.replace(".NS", "").replace(".L", "").replace(".BS", "");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Get map
|
|
58
|
+
export async function getBulkStockQuoteWithFullKey(symbols: string[]): Promise<TStockInfo[]> {
|
|
59
|
+
if (!symbols || symbols.length == 0) {
|
|
32
60
|
return [];
|
|
33
61
|
}
|
|
34
|
-
symbols = symbols.map((x) => x + extMap[exchange]);
|
|
35
62
|
let result: TStockInfo[] = [];
|
|
36
63
|
try {
|
|
37
64
|
let resp = await axios.get(`https://query1.finance.yahoo.com/v7/finance/quote?formatted=true&symbols=${symbols.join(",")}`, {
|
|
@@ -43,9 +70,10 @@ export namespace yahooFin {
|
|
|
43
70
|
for (let d of data.quoteResponse.result) {
|
|
44
71
|
//dlog.obj(d.postMarketChangePercent);
|
|
45
72
|
result.push({
|
|
46
|
-
|
|
73
|
+
_id: d.symbol,
|
|
74
|
+
symbol: getSymbolFromFullKey(d.symbol),
|
|
47
75
|
name: d.shortName,
|
|
48
|
-
exchange:
|
|
76
|
+
exchange: getExchangeFromKey(d.symbol),
|
|
49
77
|
ltp: d.regularMarketPrice.raw,
|
|
50
78
|
open: d.regularMarketOpen.raw,
|
|
51
79
|
low: d.regularMarketDayLow.raw,
|
|
@@ -61,6 +89,7 @@ export namespace yahooFin {
|
|
|
61
89
|
post_pChange: d.postMarketChangePercent?.raw,
|
|
62
90
|
pre_ltp: d.preMarketPrice?.raw,
|
|
63
91
|
pre_pChange: d.preMarketChangePercent?.raw,
|
|
92
|
+
previousClose: d.regularMarketPreviousClose?.raw,
|
|
64
93
|
});
|
|
65
94
|
}
|
|
66
95
|
//dlog.obj(result);
|
|
@@ -112,6 +141,47 @@ export namespace yahooFin {
|
|
|
112
141
|
return result;
|
|
113
142
|
}
|
|
114
143
|
|
|
144
|
+
// API for NSE
|
|
145
|
+
|
|
146
|
+
// We should use 3p libs as it uses some cookies
|
|
147
|
+
export type TSupportedNSEIndex = "NIFTY 50" | "NIFTY BANK" | "NIFTY ENERGY" | "NIFTY 200" | "NIFTY 500";
|
|
148
|
+
export async function fetchNSEIndexList(index: TSupportedNSEIndex): Promise<yahooFin.TStockInfo[]> {
|
|
149
|
+
try {
|
|
150
|
+
let data = await getIndex(index);
|
|
151
|
+
let result: yahooFin.TStockInfo[] = [];
|
|
152
|
+
for (var x of data.data) {
|
|
153
|
+
// log.obj(x);
|
|
154
|
+
try {
|
|
155
|
+
let d: yahooFin.TStockInfo = {
|
|
156
|
+
exchange: "NSE",
|
|
157
|
+
_id: x.symbol + ".NS",
|
|
158
|
+
symbol: x.symbol,
|
|
159
|
+
change: x.change,
|
|
160
|
+
pChange: x.pChange,
|
|
161
|
+
name: x.meta?.companyName || x.symbol,
|
|
162
|
+
week52Low: x.yearLow,
|
|
163
|
+
week52High: x.yearHigh,
|
|
164
|
+
volume: x.totalTradedVolume,
|
|
165
|
+
ltp: x.lastPrice,
|
|
166
|
+
low: x.dayLow,
|
|
167
|
+
high: x.dayHigh,
|
|
168
|
+
open: x.open,
|
|
169
|
+
};
|
|
170
|
+
result.push(d);
|
|
171
|
+
} catch (e) {
|
|
172
|
+
dlog.d("Not able to fetch latest stock info");
|
|
173
|
+
dlog.ex(e as Error, true);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
dlog.s(`NSE Data fetched ${result.length} item found`);
|
|
177
|
+
return result;
|
|
178
|
+
} catch (e) {
|
|
179
|
+
dlog.d("Exception: Not able to fetch latest stock info may be NSE API is broken");
|
|
180
|
+
dlog.ex(e as Error, true);
|
|
181
|
+
}
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
|
|
115
185
|
// end of lib
|
|
116
186
|
}
|
|
117
187
|
// test
|