nse-bse-api 0.1.0
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/LICENSE +21 -0
- package/README.md +194 -0
- package/dist/bse/BSE.d.ts +141 -0
- package/dist/bse/BSE.d.ts.map +1 -0
- package/dist/bse/BSE.js +453 -0
- package/dist/bse/BSE.js.map +1 -0
- package/dist/bse/constants/index.d.ts +341 -0
- package/dist/bse/constants/index.d.ts.map +1 -0
- package/dist/bse/constants/index.js +341 -0
- package/dist/bse/constants/index.js.map +1 -0
- package/dist/bse/index.d.ts +12 -0
- package/dist/bse/index.d.ts.map +1 -0
- package/dist/bse/index.js +16 -0
- package/dist/bse/index.js.map +1 -0
- package/dist/bse/types/index.d.ts +120 -0
- package/dist/bse/types/index.d.ts.map +1 -0
- package/dist/bse/types/index.js +20 -0
- package/dist/bse/types/index.js.map +1 -0
- package/dist/bse/utils/SymbolParser.d.ts +16 -0
- package/dist/bse/utils/SymbolParser.d.ts.map +1 -0
- package/dist/bse/utils/SymbolParser.js +58 -0
- package/dist/bse/utils/SymbolParser.js.map +1 -0
- package/dist/bse/utils/helpers.d.ts +21 -0
- package/dist/bse/utils/helpers.d.ts.map +1 -0
- package/dist/bse/utils/helpers.js +77 -0
- package/dist/bse/utils/helpers.js.map +1 -0
- package/dist/bse/utils/throttle.d.ts +4 -0
- package/dist/bse/utils/throttle.d.ts.map +1 -0
- package/dist/bse/utils/throttle.js +38 -0
- package/dist/bse/utils/throttle.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/nse/api/corporate-api.d.ts +30 -0
- package/dist/nse/api/corporate-api.d.ts.map +1 -0
- package/dist/nse/api/corporate-api.js +90 -0
- package/dist/nse/api/corporate-api.js.map +1 -0
- package/dist/nse/api/download-api.d.ts +42 -0
- package/dist/nse/api/download-api.d.ts.map +1 -0
- package/dist/nse/api/download-api.js +144 -0
- package/dist/nse/api/download-api.js.map +1 -0
- package/dist/nse/api/equity-api.d.ts +50 -0
- package/dist/nse/api/equity-api.d.ts.map +1 -0
- package/dist/nse/api/equity-api.js +103 -0
- package/dist/nse/api/equity-api.js.map +1 -0
- package/dist/nse/api/historical-api.d.ts +34 -0
- package/dist/nse/api/historical-api.d.ts.map +1 -0
- package/dist/nse/api/historical-api.js +126 -0
- package/dist/nse/api/historical-api.js.map +1 -0
- package/dist/nse/api/index.d.ts +11 -0
- package/dist/nse/api/index.d.ts.map +1 -0
- package/dist/nse/api/index.js +11 -0
- package/dist/nse/api/index.js.map +1 -0
- package/dist/nse/api/ipo-api.d.ts +26 -0
- package/dist/nse/api/ipo-api.d.ts.map +1 -0
- package/dist/nse/api/ipo-api.js +46 -0
- package/dist/nse/api/ipo-api.js.map +1 -0
- package/dist/nse/api/market-api.d.ts +34 -0
- package/dist/nse/api/market-api.d.ts.map +1 -0
- package/dist/nse/api/market-api.js +58 -0
- package/dist/nse/api/market-api.js.map +1 -0
- package/dist/nse/api/options-api.d.ts +35 -0
- package/dist/nse/api/options-api.d.ts.map +1 -0
- package/dist/nse/api/options-api.js +207 -0
- package/dist/nse/api/options-api.js.map +1 -0
- package/dist/nse/constants/index.d.ts +29 -0
- package/dist/nse/constants/index.d.ts.map +1 -0
- package/dist/nse/constants/index.js +43 -0
- package/dist/nse/constants/index.js.map +1 -0
- package/dist/nse/http/http-client.d.ts +38 -0
- package/dist/nse/http/http-client.d.ts.map +1 -0
- package/dist/nse/http/http-client.js +164 -0
- package/dist/nse/http/http-client.js.map +1 -0
- package/dist/nse/index.d.ts +19 -0
- package/dist/nse/index.d.ts.map +1 -0
- package/dist/nse/index.js +24 -0
- package/dist/nse/index.js.map +1 -0
- package/dist/nse/nse/nse-client.d.ts +85 -0
- package/dist/nse/nse/nse-client.d.ts.map +1 -0
- package/dist/nse/nse/nse-client.js +105 -0
- package/dist/nse/nse/nse-client.js.map +1 -0
- package/dist/nse/types/index.d.ts +123 -0
- package/dist/nse/types/index.d.ts.map +1 -0
- package/dist/nse/types/index.js +5 -0
- package/dist/nse/types/index.js.map +1 -0
- package/dist/nse/utils/date-formatter.d.ts +36 -0
- package/dist/nse/utils/date-formatter.d.ts.map +1 -0
- package/dist/nse/utils/date-formatter.js +70 -0
- package/dist/nse/utils/date-formatter.js.map +1 -0
- package/dist/nse/utils/file-operations.d.ts +16 -0
- package/dist/nse/utils/file-operations.d.ts.map +1 -0
- package/dist/nse/utils/file-operations.js +74 -0
- package/dist/nse/utils/file-operations.js.map +1 -0
- package/dist/nse/utils/index.d.ts +6 -0
- package/dist/nse/utils/index.d.ts.map +1 -0
- package/dist/nse/utils/index.js +6 -0
- package/dist/nse/utils/index.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist-cjs/bse/BSE.js +493 -0
- package/dist-cjs/bse/BSE.js.map +1 -0
- package/dist-cjs/bse/constants/index.js +352 -0
- package/dist-cjs/bse/constants/index.js.map +1 -0
- package/dist-cjs/bse/index.js +36 -0
- package/dist-cjs/bse/index.js.map +1 -0
- package/dist-cjs/bse/types/index.js +26 -0
- package/dist-cjs/bse/types/index.js.map +1 -0
- package/dist-cjs/bse/utils/SymbolParser.js +62 -0
- package/dist-cjs/bse/utils/SymbolParser.js.map +1 -0
- package/dist-cjs/bse/utils/helpers.js +117 -0
- package/dist-cjs/bse/utils/helpers.js.map +1 -0
- package/dist-cjs/bse/utils/throttle.js +42 -0
- package/dist-cjs/bse/utils/throttle.js.map +1 -0
- package/dist-cjs/index.js +54 -0
- package/dist-cjs/index.js.map +1 -0
- package/dist-cjs/nse/api/corporate-api.js +94 -0
- package/dist-cjs/nse/api/corporate-api.js.map +1 -0
- package/dist-cjs/nse/api/download-api.js +151 -0
- package/dist-cjs/nse/api/download-api.js.map +1 -0
- package/dist-cjs/nse/api/equity-api.js +107 -0
- package/dist-cjs/nse/api/equity-api.js.map +1 -0
- package/dist-cjs/nse/api/historical-api.js +130 -0
- package/dist-cjs/nse/api/historical-api.js.map +1 -0
- package/dist-cjs/nse/api/index.js +21 -0
- package/dist-cjs/nse/api/index.js.map +1 -0
- package/dist-cjs/nse/api/ipo-api.js +50 -0
- package/dist-cjs/nse/api/ipo-api.js.map +1 -0
- package/dist-cjs/nse/api/market-api.js +62 -0
- package/dist-cjs/nse/api/market-api.js.map +1 -0
- package/dist-cjs/nse/api/options-api.js +211 -0
- package/dist-cjs/nse/api/options-api.js.map +1 -0
- package/dist-cjs/nse/constants/index.js +46 -0
- package/dist-cjs/nse/constants/index.js.map +1 -0
- package/dist-cjs/nse/http/http-client.js +171 -0
- package/dist-cjs/nse/http/http-client.js.map +1 -0
- package/dist-cjs/nse/index.js +50 -0
- package/dist-cjs/nse/index.js.map +1 -0
- package/dist-cjs/nse/nse/nse-client.js +109 -0
- package/dist-cjs/nse/nse/nse-client.js.map +1 -0
- package/dist-cjs/nse/types/index.js +6 -0
- package/dist-cjs/nse/types/index.js.map +1 -0
- package/dist-cjs/nse/utils/date-formatter.js +80 -0
- package/dist-cjs/nse/utils/date-formatter.js.map +1 -0
- package/dist-cjs/nse/utils/file-operations.js +82 -0
- package/dist-cjs/nse/utils/file-operations.js.map +1 -0
- package/dist-cjs/nse/utils/index.js +22 -0
- package/dist-cjs/nse/utils/index.js.map +1 -0
- package/dist-cjs/package.json +3 -0
- package/dist-cjs/types/index.js +47 -0
- package/dist-cjs/types/index.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IPO-related API methods for NSE
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.IpoApi = void 0;
|
|
7
|
+
const index_js_1 = require("../constants/index.js");
|
|
8
|
+
const date_formatter_js_1 = require("../utils/date-formatter.js");
|
|
9
|
+
class IpoApi {
|
|
10
|
+
httpClient;
|
|
11
|
+
constructor(httpClient) {
|
|
12
|
+
this.httpClient = httpClient;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* List current IPOs
|
|
16
|
+
*/
|
|
17
|
+
async listCurrentIPO() {
|
|
18
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/ipo-current-issue`);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List upcoming IPOs
|
|
22
|
+
*/
|
|
23
|
+
async listUpcomingIPO() {
|
|
24
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/all-upcoming-issues?category=ipo`);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get IPO details
|
|
28
|
+
*/
|
|
29
|
+
async getIpoDetails(params) {
|
|
30
|
+
const symbol = params.symbol.toUpperCase();
|
|
31
|
+
const series = params.series ?? "EQ";
|
|
32
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/ipo-detail`, { symbol, series });
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* List past IPOs
|
|
36
|
+
*/
|
|
37
|
+
async listPastIPO(from_date, to_date) {
|
|
38
|
+
const to = to_date ?? new Date();
|
|
39
|
+
const from = from_date ?? new Date(to.getTime() - 90 * 86400000);
|
|
40
|
+
if (to < from) {
|
|
41
|
+
throw new Error("Argument `to_date` cannot be less than `from_date`");
|
|
42
|
+
}
|
|
43
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/public-past-issues`, {
|
|
44
|
+
from_date: (0, date_formatter_js_1.formatDateDMY)(from),
|
|
45
|
+
to_date: (0, date_formatter_js_1.formatDateDMY)(to),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.IpoApi = IpoApi;
|
|
50
|
+
//# sourceMappingURL=ipo-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipo-api.js","sourceRoot":"","sources":["../../../src/nse/api/ipo-api.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oDAAiD;AAEjD,kEAA8E;AAE9E,MAAa,MAAM;IACG;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,oBAAoB,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,mCAAmC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAwB;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;QAErC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAgB,EAAE,OAAc;QAChD,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,SAAS,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAEjE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,qBAAqB,EAAE;YACrE,SAAS,EAAE,IAAA,iCAAa,EAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,IAAA,iCAAa,EAAC,EAAE,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF;AA3CD,wBA2CC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Market data and trading API methods for NSE
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MarketApi = void 0;
|
|
7
|
+
const index_js_1 = require("../constants/index.js");
|
|
8
|
+
const date_formatter_js_1 = require("../utils/date-formatter.js");
|
|
9
|
+
class MarketApi {
|
|
10
|
+
httpClient;
|
|
11
|
+
constructor(httpClient) {
|
|
12
|
+
this.httpClient = httpClient;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get market status
|
|
16
|
+
*/
|
|
17
|
+
async getStatus() {
|
|
18
|
+
const result = await this.httpClient.request(`${index_js_1.BASE_URL}/marketStatus`);
|
|
19
|
+
return result.marketState;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Search/lookup symbols
|
|
23
|
+
*/
|
|
24
|
+
async lookup(query) {
|
|
25
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/search/autocomplete`, { q: query });
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get block deals
|
|
29
|
+
*/
|
|
30
|
+
async getBlockDeals() {
|
|
31
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/block-deal`);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get bulk deals for date range
|
|
35
|
+
*/
|
|
36
|
+
async getBulkDeals(fromDate, toDate) {
|
|
37
|
+
const daysDiff = (toDate.getTime() - fromDate.getTime()) / 86400000;
|
|
38
|
+
if (daysDiff > 365) {
|
|
39
|
+
throw new Error("The date range cannot exceed one year.");
|
|
40
|
+
}
|
|
41
|
+
const url = `${index_js_1.BASE_URL}/historical/bulk-deals?from=${(0, date_formatter_js_1.formatDateDMY)(fromDate)}&to=${(0, date_formatter_js_1.formatDateDMY)(toDate)}`;
|
|
42
|
+
const data = await this.httpClient.request(url);
|
|
43
|
+
if (!data.data || data.data.length < 1) {
|
|
44
|
+
throw new Error("No bulk deals data available for the specified date range.");
|
|
45
|
+
}
|
|
46
|
+
return data.data;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get holidays
|
|
50
|
+
*/
|
|
51
|
+
async getHolidays(type = "trading") {
|
|
52
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/holiday-master`, { type });
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get daily reports file metadata
|
|
56
|
+
*/
|
|
57
|
+
async getDailyReportsFileMetadata(segment = "CM") {
|
|
58
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/daily-reports`, { key: segment });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.MarketApi = MarketApi;
|
|
62
|
+
//# sourceMappingURL=market-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market-api.js","sourceRoot":"","sources":["../../../src/nse/api/market-api.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oDAAiD;AAEjD,kEAA8E;AAE9E,MAAa,SAAS;IACA;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,eAAe,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,sBAAsB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,aAAa,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAc,EAAE,MAAY;QAC7C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;QACpE,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,mBAAQ,+BAA+B,IAAA,iCAAa,EAAC,QAAQ,CAAC,OAAO,IAAA,iCAAa,EAAC,MAAM,CAAC,EAAE,CAAC;QAC5G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAoB,SAAS;QAC7C,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAAC,UAA8B,IAAI;QAClE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,gBAAgB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;CACF;AAzDD,8BAyDC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Options and derivatives API methods for NSE
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OptionsApi = void 0;
|
|
7
|
+
const index_js_1 = require("../constants/index.js");
|
|
8
|
+
const index_js_2 = require("../constants/index.js");
|
|
9
|
+
const date_formatter_js_1 = require("../utils/date-formatter.js");
|
|
10
|
+
class OptionsApi {
|
|
11
|
+
httpClient;
|
|
12
|
+
constructor(httpClient) {
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get F&O lot sizes
|
|
17
|
+
*/
|
|
18
|
+
async getFnoLots() {
|
|
19
|
+
const url = "https://nsearchives.nseindia.com/content/fo/fo_mktlots.csv";
|
|
20
|
+
// Try to get as JSON first, fallback to text
|
|
21
|
+
let csv;
|
|
22
|
+
try {
|
|
23
|
+
const res = await this.httpClient.request(url);
|
|
24
|
+
csv = typeof res === "string" ? res : "";
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
csv = "";
|
|
28
|
+
}
|
|
29
|
+
if (!csv) {
|
|
30
|
+
csv = await this.httpClient.getTextResponse(url);
|
|
31
|
+
}
|
|
32
|
+
const lines = csv.trim().split(/\r?\n/);
|
|
33
|
+
const lots = {};
|
|
34
|
+
for (const line of lines) {
|
|
35
|
+
const parts = line.split(",");
|
|
36
|
+
if (parts.length < 4)
|
|
37
|
+
continue;
|
|
38
|
+
const sym = parts[1]?.trim();
|
|
39
|
+
const lot = Number(parts[3]?.trim());
|
|
40
|
+
if (!sym || !Number.isFinite(lot))
|
|
41
|
+
continue;
|
|
42
|
+
lots[sym] = lot;
|
|
43
|
+
}
|
|
44
|
+
return lots;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get option chain data
|
|
48
|
+
*/
|
|
49
|
+
async getOptionChain(symbol) {
|
|
50
|
+
const isIndex = index_js_2.OPTION_INDICES.includes(symbol.toLowerCase());
|
|
51
|
+
const url = isIndex
|
|
52
|
+
? `${index_js_1.BASE_URL}/option-chain-indices`
|
|
53
|
+
: `${index_js_1.BASE_URL}/option-chain-equities`;
|
|
54
|
+
return await this.httpClient.request(url, { symbol: symbol.toUpperCase() });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get filtered option chain data with only essential information for LLM processing
|
|
58
|
+
* Reduces data volume by ~90% while retaining key metrics
|
|
59
|
+
*/
|
|
60
|
+
async getFilteredOptionChain(symbol, strikeRange = 10) {
|
|
61
|
+
const fullData = await this.getOptionChain(symbol);
|
|
62
|
+
const underlying = fullData.records.underlyingValue;
|
|
63
|
+
// Calculate ATM strike
|
|
64
|
+
const strikes = fullData.records.data.map((item) => item.strikePrice);
|
|
65
|
+
const atmStrike = strikes.reduce((prev, curr) => Math.abs(curr - underlying) < Math.abs(prev - underlying) ? curr : prev);
|
|
66
|
+
// Filter strikes within range of ATM
|
|
67
|
+
const minStrike = atmStrike - (strikeRange * 50); // Assuming 50 point intervals
|
|
68
|
+
const maxStrike = atmStrike + (strikeRange * 50);
|
|
69
|
+
const filteredData = fullData.records.data.filter((item) => item.strikePrice >= minStrike && item.strikePrice <= maxStrike);
|
|
70
|
+
// Extract only essential fields
|
|
71
|
+
const essentialData = filteredData.map((item) => ({
|
|
72
|
+
strikePrice: item.strikePrice,
|
|
73
|
+
expiryDate: item.expiryDate,
|
|
74
|
+
CE: item.CE ? {
|
|
75
|
+
lastPrice: item.CE.lastPrice,
|
|
76
|
+
change: item.CE.change,
|
|
77
|
+
pChange: item.CE.pChange,
|
|
78
|
+
openInterest: item.CE.openInterest,
|
|
79
|
+
changeinOpenInterest: item.CE.changeinOpenInterest,
|
|
80
|
+
impliedVolatility: item.CE.impliedVolatility
|
|
81
|
+
} : null,
|
|
82
|
+
PE: item.PE ? {
|
|
83
|
+
lastPrice: item.PE.lastPrice,
|
|
84
|
+
change: item.PE.change,
|
|
85
|
+
pChange: item.PE.pChange,
|
|
86
|
+
openInterest: item.PE.openInterest,
|
|
87
|
+
changeinOpenInterest: item.PE.changeinOpenInterest,
|
|
88
|
+
impliedVolatility: item.PE.impliedVolatility
|
|
89
|
+
} : null
|
|
90
|
+
}));
|
|
91
|
+
return {
|
|
92
|
+
symbol: symbol.toUpperCase(),
|
|
93
|
+
underlyingValue: underlying,
|
|
94
|
+
atmStrike: atmStrike,
|
|
95
|
+
timestamp: fullData.records.timestamp,
|
|
96
|
+
strikeRange: `${minStrike}-${maxStrike}`,
|
|
97
|
+
totalStrikes: essentialData.length,
|
|
98
|
+
data: essentialData
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Calculate max pain for option chain
|
|
103
|
+
*/
|
|
104
|
+
static calculateMaxPain(optionChain, expiryDate) {
|
|
105
|
+
const painMap = {};
|
|
106
|
+
const expiryDateStr = (0, date_formatter_js_1.formatDateExpiry)(expiryDate);
|
|
107
|
+
for (const x of optionChain.records.data) {
|
|
108
|
+
if (x.expiryDate !== expiryDateStr)
|
|
109
|
+
continue;
|
|
110
|
+
const expiryStrike = x.strikePrice;
|
|
111
|
+
let pain = 0;
|
|
112
|
+
for (const y of optionChain.records.data) {
|
|
113
|
+
if (y.expiryDate !== expiryDateStr)
|
|
114
|
+
continue;
|
|
115
|
+
const diff = expiryStrike - y.strikePrice;
|
|
116
|
+
if (diff > 0 && y.CE)
|
|
117
|
+
pain += -diff * y.CE.openInterest;
|
|
118
|
+
if (diff < 0 && y.PE)
|
|
119
|
+
pain += diff * y.PE.openInterest;
|
|
120
|
+
}
|
|
121
|
+
painMap[expiryStrike] = pain;
|
|
122
|
+
}
|
|
123
|
+
const strikes = Object.keys(painMap).map(Number);
|
|
124
|
+
return strikes.sort((a, b) => painMap[b] - painMap[a])[0];
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get futures expiry dates
|
|
128
|
+
*/
|
|
129
|
+
async getFuturesExpiry(index = "nifty") {
|
|
130
|
+
const indexMap = {
|
|
131
|
+
banknifty: "nifty_bank_fut",
|
|
132
|
+
finnifty: "finnifty_fut",
|
|
133
|
+
nifty: "nse50_fut",
|
|
134
|
+
niftyit: "niftyit_fut"
|
|
135
|
+
};
|
|
136
|
+
const idx = indexMap[index] || "nse50_fut";
|
|
137
|
+
const res = await this.httpClient.request(`${index_js_1.BASE_URL}/liveEquity-derivatives`, { index: idx });
|
|
138
|
+
const data = res.data.map((i) => i.expiryDate);
|
|
139
|
+
return data.sort((a, b) => new Date(a.replace(/-/g, "/")).getTime() - new Date(b.replace(/-/g, "/")).getTime());
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Compile option chain with calculated metrics
|
|
143
|
+
*/
|
|
144
|
+
async compileOptionChain(symbol, expiryDate) {
|
|
145
|
+
const data = await this.getOptionChain(symbol);
|
|
146
|
+
const chain = {};
|
|
147
|
+
const expiryDateStr = (0, date_formatter_js_1.formatDateExpiry)(expiryDate);
|
|
148
|
+
const oc = {
|
|
149
|
+
expiry: expiryDateStr,
|
|
150
|
+
timestamp: data.records.timestamp,
|
|
151
|
+
};
|
|
152
|
+
const strike1 = data.filtered.data[0].strikePrice;
|
|
153
|
+
const strike2 = data.filtered.data[1].strikePrice;
|
|
154
|
+
const multiple = strike1 - strike2;
|
|
155
|
+
const underlying = data.records.underlyingValue;
|
|
156
|
+
oc.underlying = underlying;
|
|
157
|
+
oc.atm = multiple * Math.round(underlying / multiple);
|
|
158
|
+
let maxCoi = 0;
|
|
159
|
+
let maxPoi = 0;
|
|
160
|
+
let totalCoi = 0;
|
|
161
|
+
let totalPoi = 0;
|
|
162
|
+
let maxCoiStrike = 0;
|
|
163
|
+
let maxPoiStrike = 0;
|
|
164
|
+
for (const idx of data.records.data) {
|
|
165
|
+
if (idx.expiryDate !== expiryDateStr)
|
|
166
|
+
continue;
|
|
167
|
+
const strike = String(idx.strikePrice);
|
|
168
|
+
if (!chain[strike])
|
|
169
|
+
chain[strike] = { pe: {}, ce: {} };
|
|
170
|
+
let poi = 0;
|
|
171
|
+
let coi = 0;
|
|
172
|
+
if (idx.PE) {
|
|
173
|
+
const { openInterest, lastPrice, chg, impliedVolatility } = idx.PE;
|
|
174
|
+
poi = openInterest;
|
|
175
|
+
chain[strike].pe = { last: lastPrice, oi: poi, chg, iv: impliedVolatility };
|
|
176
|
+
totalPoi += poi;
|
|
177
|
+
if (poi > maxPoi) {
|
|
178
|
+
maxPoi = poi;
|
|
179
|
+
maxPoiStrike = Number(strike);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
chain[strike].pe = { last: 0, oi: 0, chg: 0, iv: 0 };
|
|
184
|
+
}
|
|
185
|
+
if (idx.CE) {
|
|
186
|
+
const { openInterest, lastPrice, chg, impliedVolatility } = idx.CE;
|
|
187
|
+
coi = openInterest;
|
|
188
|
+
chain[strike].ce = { last: lastPrice, oi: coi, chg, iv: impliedVolatility };
|
|
189
|
+
totalCoi += coi;
|
|
190
|
+
if (coi > maxCoi) {
|
|
191
|
+
maxCoi = coi;
|
|
192
|
+
maxCoiStrike = Number(strike);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
chain[strike].ce = { last: 0, oi: 0, chg: 0, iv: 0 };
|
|
197
|
+
}
|
|
198
|
+
chain[strike].pcr = poi === 0 || coi === 0 ? null : Number((poi / coi).toFixed(2));
|
|
199
|
+
}
|
|
200
|
+
oc.maxpain = OptionsApi.calculateMaxPain(data, expiryDate);
|
|
201
|
+
oc.maxCoi = maxCoiStrike;
|
|
202
|
+
oc.maxPoi = maxPoiStrike;
|
|
203
|
+
oc.coiTotal = totalCoi;
|
|
204
|
+
oc.poiTotal = totalPoi;
|
|
205
|
+
oc.pcr = Number((totalPoi / totalCoi).toFixed(2));
|
|
206
|
+
oc.chain = chain;
|
|
207
|
+
return oc;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.OptionsApi = OptionsApi;
|
|
211
|
+
//# sourceMappingURL=options-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-api.js","sourceRoot":"","sources":["../../../src/nse/api/options-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Constants and configuration values for NSE API
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PRIME_URL = exports.DEFAULT_TIMEOUT = exports.DEFAULT_HEADERS = exports.DEFAULT_USER_AGENT = exports.ARCHIVE_URL = exports.BASE_URL = exports.OPTION_INDICES = exports.UDIFF_SWITCH_DATE = exports.FNO_IT = exports.FNO_FINNIFTY = exports.FNO_NIFTY = exports.FNO_BANK = exports.HOLIDAY_TRADING = exports.HOLIDAY_CLEARING = exports.SEGMENT_DEBT = exports.SEGMENT_MF = exports.SEGMENT_SME = exports.SEGMENT_EQUITY = exports.NSE_VERSION = void 0;
|
|
7
|
+
exports.NSE_VERSION = "0.1.0";
|
|
8
|
+
// Market segments
|
|
9
|
+
exports.SEGMENT_EQUITY = "equities";
|
|
10
|
+
exports.SEGMENT_SME = "sme";
|
|
11
|
+
exports.SEGMENT_MF = "mf";
|
|
12
|
+
exports.SEGMENT_DEBT = "debt";
|
|
13
|
+
// Holiday types
|
|
14
|
+
exports.HOLIDAY_CLEARING = "clearing";
|
|
15
|
+
exports.HOLIDAY_TRADING = "trading";
|
|
16
|
+
// F&O indices
|
|
17
|
+
exports.FNO_BANK = "banknifty";
|
|
18
|
+
exports.FNO_NIFTY = "nifty";
|
|
19
|
+
exports.FNO_FINNIFTY = "finnifty";
|
|
20
|
+
exports.FNO_IT = "niftyit";
|
|
21
|
+
// Important dates
|
|
22
|
+
exports.UDIFF_SWITCH_DATE = new Date("2024-07-08");
|
|
23
|
+
// Option indices array
|
|
24
|
+
exports.OPTION_INDICES = [
|
|
25
|
+
exports.FNO_BANK,
|
|
26
|
+
exports.FNO_NIFTY,
|
|
27
|
+
exports.FNO_FINNIFTY,
|
|
28
|
+
exports.FNO_IT,
|
|
29
|
+
];
|
|
30
|
+
// API URLs
|
|
31
|
+
exports.BASE_URL = "https://www.nseindia.com/api";
|
|
32
|
+
exports.ARCHIVE_URL = "https://nsearchives.nseindia.com";
|
|
33
|
+
// HTTP headers
|
|
34
|
+
exports.DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/118.0";
|
|
35
|
+
exports.DEFAULT_HEADERS = {
|
|
36
|
+
"User-Agent": exports.DEFAULT_USER_AGENT,
|
|
37
|
+
Accept: "*/*",
|
|
38
|
+
"Accept-Language": "en-US,en;q=0.5",
|
|
39
|
+
"Accept-Encoding": "gzip, deflate",
|
|
40
|
+
Referer: "https://www.nseindia.com/get-quotes/equity?symbol=HDFCBANK",
|
|
41
|
+
};
|
|
42
|
+
// Default timeout
|
|
43
|
+
exports.DEFAULT_TIMEOUT = 15000;
|
|
44
|
+
// Cookie priming URL
|
|
45
|
+
exports.PRIME_URL = "https://www.nseindia.com/option-chain";
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nse/constants/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,WAAW,GAAG,OAAO,CAAC;AAEnC,kBAAkB;AACL,QAAA,cAAc,GAAG,UAAmB,CAAC;AACrC,QAAA,WAAW,GAAG,KAAc,CAAC;AAC7B,QAAA,UAAU,GAAG,IAAa,CAAC;AAC3B,QAAA,YAAY,GAAG,MAAe,CAAC;AAE5C,gBAAgB;AACH,QAAA,gBAAgB,GAAG,UAAmB,CAAC;AACvC,QAAA,eAAe,GAAG,SAAkB,CAAC;AAElD,cAAc;AACD,QAAA,QAAQ,GAAG,WAAoB,CAAC;AAChC,QAAA,SAAS,GAAG,OAAgB,CAAC;AAC7B,QAAA,YAAY,GAAG,UAAmB,CAAC;AACnC,QAAA,MAAM,GAAG,SAAkB,CAAC;AAEzC,kBAAkB;AACL,QAAA,iBAAiB,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;AAExD,uBAAuB;AACV,QAAA,cAAc,GAAG;IAC5B,gBAAQ;IACR,iBAAS;IACT,oBAAY;IACZ,cAAM;CACE,CAAC;AAEX,WAAW;AACE,QAAA,QAAQ,GAAG,8BAA8B,CAAC;AAC1C,QAAA,WAAW,GAAG,kCAAkC,CAAC;AAE9D,eAAe;AACF,QAAA,kBAAkB,GAAG,sEAAsE,CAAC;AAE5F,QAAA,eAAe,GAAG;IAC7B,YAAY,EAAE,0BAAkB;IAChC,MAAM,EAAE,KAAK;IACb,iBAAiB,EAAE,gBAAgB;IACnC,iBAAiB,EAAE,eAAe;IAClC,OAAO,EAAE,4DAA4D;CAC7D,CAAC;AAEX,kBAAkB;AACL,QAAA,eAAe,GAAG,KAAK,CAAC;AAErC,qBAAqB;AACR,QAAA,SAAS,GAAG,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP client management for NSE API
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.HttpClient = void 0;
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const axios_1 = __importDefault(require("axios"));
|
|
13
|
+
const axios_cookiejar_support_1 = require("axios-cookiejar-support");
|
|
14
|
+
const got_1 = __importDefault(require("got"));
|
|
15
|
+
const tough_cookie_1 = require("tough-cookie");
|
|
16
|
+
const index_js_1 = require("../constants/index.js");
|
|
17
|
+
const file_operations_js_1 = require("../utils/file-operations.js");
|
|
18
|
+
class HttpClient {
|
|
19
|
+
axiosClient;
|
|
20
|
+
gotClient;
|
|
21
|
+
jar;
|
|
22
|
+
cookiePath;
|
|
23
|
+
cookiesPrimed = false;
|
|
24
|
+
server;
|
|
25
|
+
timeout;
|
|
26
|
+
constructor(downloadDir, server, timeout) {
|
|
27
|
+
this.server = server;
|
|
28
|
+
this.timeout = timeout;
|
|
29
|
+
// Set up cookie jar and load from disk
|
|
30
|
+
this.cookiePath = path_1.default.join(downloadDir, server ? "nse_cookies_http2.json" : "nse_cookies_http1.json");
|
|
31
|
+
this.jar = new tough_cookie_1.CookieJar();
|
|
32
|
+
this.loadCookies();
|
|
33
|
+
if (server) {
|
|
34
|
+
// got with HTTP/2
|
|
35
|
+
this.gotClient = got_1.default.extend({
|
|
36
|
+
http2: true,
|
|
37
|
+
headers: index_js_1.DEFAULT_HEADERS,
|
|
38
|
+
cookieJar: this.jar,
|
|
39
|
+
timeout: { request: this.timeout },
|
|
40
|
+
throwHttpErrors: false,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// axios with cookie jar
|
|
45
|
+
const ax = axios_1.default.create({
|
|
46
|
+
headers: index_js_1.DEFAULT_HEADERS,
|
|
47
|
+
timeout: this.timeout,
|
|
48
|
+
decompress: true,
|
|
49
|
+
validateStatus: () => true,
|
|
50
|
+
});
|
|
51
|
+
(0, axios_cookiejar_support_1.wrapper)(ax);
|
|
52
|
+
ax.defaults.jar = this.jar;
|
|
53
|
+
this.axiosClient = ax;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Load cookies from disk
|
|
58
|
+
*/
|
|
59
|
+
loadCookies() {
|
|
60
|
+
if (!fs_1.default.existsSync(this.cookiePath))
|
|
61
|
+
return;
|
|
62
|
+
try {
|
|
63
|
+
const data = JSON.parse(fs_1.default.readFileSync(this.cookiePath, "utf8"));
|
|
64
|
+
this.jar = tough_cookie_1.CookieJar.fromJSON(data);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore cookie loading errors
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Save cookies to disk
|
|
72
|
+
*/
|
|
73
|
+
saveCookies() {
|
|
74
|
+
try {
|
|
75
|
+
const json = this.jar.toJSON();
|
|
76
|
+
fs_1.default.writeFileSync(this.cookiePath, JSON.stringify(json), "utf8");
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Ignore cookie saving errors
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Prime cookies by visiting NSE homepage
|
|
84
|
+
*/
|
|
85
|
+
async primeCookies() {
|
|
86
|
+
if (this.cookiesPrimed)
|
|
87
|
+
return;
|
|
88
|
+
try {
|
|
89
|
+
if (this.server && this.gotClient) {
|
|
90
|
+
await this.gotClient.get(index_js_1.PRIME_URL);
|
|
91
|
+
}
|
|
92
|
+
else if (this.axiosClient) {
|
|
93
|
+
await this.axiosClient.get(index_js_1.PRIME_URL);
|
|
94
|
+
}
|
|
95
|
+
this.cookiesPrimed = true;
|
|
96
|
+
this.saveCookies();
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Ignore priming failures; subsequent requests may still succeed
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Make HTTP request and return JSON response
|
|
104
|
+
*/
|
|
105
|
+
async request(url, params) {
|
|
106
|
+
await this.primeCookies();
|
|
107
|
+
if (this.server && this.gotClient) {
|
|
108
|
+
const res = await this.gotClient.get(url, {
|
|
109
|
+
searchParams: params,
|
|
110
|
+
});
|
|
111
|
+
if (res.statusCode < 200 || res.statusCode >= 300) {
|
|
112
|
+
throw new Error(`${url} ${res.statusCode}: ${res.statusMessage}`);
|
|
113
|
+
}
|
|
114
|
+
return JSON.parse(res.body);
|
|
115
|
+
}
|
|
116
|
+
if (this.axiosClient) {
|
|
117
|
+
const res = await this.axiosClient.get(url, { params });
|
|
118
|
+
if (res.status < 200 || res.status >= 300) {
|
|
119
|
+
throw new Error(`${url} ${res.status}: ${res.statusText}`);
|
|
120
|
+
}
|
|
121
|
+
return res.data;
|
|
122
|
+
}
|
|
123
|
+
throw new Error("HTTP client not initialized");
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Download file from URL
|
|
127
|
+
*/
|
|
128
|
+
async downloadFile(url, folder) {
|
|
129
|
+
const fname = path_1.default.join(folder, path_1.default.basename(new URL(url).pathname));
|
|
130
|
+
await this.primeCookies();
|
|
131
|
+
if (this.server && this.gotClient) {
|
|
132
|
+
const res = await this.gotClient.get(url, { responseType: "buffer" });
|
|
133
|
+
const contentType = res.headers["content-type"];
|
|
134
|
+
if (contentType && String(contentType).includes("text/html")) {
|
|
135
|
+
throw new Error("NSE file is unavailable or not yet updated.");
|
|
136
|
+
}
|
|
137
|
+
fs_1.default.writeFileSync(fname, res.body);
|
|
138
|
+
}
|
|
139
|
+
else if (this.axiosClient) {
|
|
140
|
+
const res = await this.axiosClient.get(url, { responseType: "stream" });
|
|
141
|
+
const contentType = res.headers["content-type"];
|
|
142
|
+
if (contentType && contentType.includes("text/html")) {
|
|
143
|
+
throw new Error("NSE file is unavailable or not yet updated.");
|
|
144
|
+
}
|
|
145
|
+
await (0, file_operations_js_1.saveStreamToFile)(res.data, fname);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
throw new Error("HTTP client not initialized");
|
|
149
|
+
}
|
|
150
|
+
return fname;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get text response from URL
|
|
154
|
+
*/
|
|
155
|
+
async getTextResponse(url) {
|
|
156
|
+
await this.primeCookies();
|
|
157
|
+
if (this.server && this.gotClient) {
|
|
158
|
+
const res = await this.gotClient.get(url, { responseType: "text" });
|
|
159
|
+
return res.body;
|
|
160
|
+
}
|
|
161
|
+
else if (this.axiosClient) {
|
|
162
|
+
const res = await this.axiosClient.get(url, { responseType: "text" });
|
|
163
|
+
return res.data;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
throw new Error("HTTP client not initialized");
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
exports.HttpClient = HttpClient;
|
|
171
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/nse/http/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NSE API Module
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all NSE functionality from the original nseapi package
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.HttpClient = exports.DownloadApi = exports.MarketApi = exports.IpoApi = exports.CorporateApi = exports.HistoricalApi = exports.OptionsApi = exports.EquityApi = exports.NSEClient = void 0;
|
|
23
|
+
// Main NSE client
|
|
24
|
+
var nse_client_js_1 = require("./nse/nse-client.js");
|
|
25
|
+
Object.defineProperty(exports, "NSEClient", { enumerable: true, get: function () { return nse_client_js_1.NSEClient; } });
|
|
26
|
+
// Export types for TypeScript users
|
|
27
|
+
__exportStar(require("./types/index.js"), exports);
|
|
28
|
+
// Export constants
|
|
29
|
+
__exportStar(require("./constants/index.js"), exports);
|
|
30
|
+
// Export utilities
|
|
31
|
+
__exportStar(require("./utils/date-formatter.js"), exports);
|
|
32
|
+
__exportStar(require("./utils/file-operations.js"), exports);
|
|
33
|
+
// Export API modules for advanced usage
|
|
34
|
+
var equity_api_js_1 = require("./api/equity-api.js");
|
|
35
|
+
Object.defineProperty(exports, "EquityApi", { enumerable: true, get: function () { return equity_api_js_1.EquityApi; } });
|
|
36
|
+
var options_api_js_1 = require("./api/options-api.js");
|
|
37
|
+
Object.defineProperty(exports, "OptionsApi", { enumerable: true, get: function () { return options_api_js_1.OptionsApi; } });
|
|
38
|
+
var historical_api_js_1 = require("./api/historical-api.js");
|
|
39
|
+
Object.defineProperty(exports, "HistoricalApi", { enumerable: true, get: function () { return historical_api_js_1.HistoricalApi; } });
|
|
40
|
+
var corporate_api_js_1 = require("./api/corporate-api.js");
|
|
41
|
+
Object.defineProperty(exports, "CorporateApi", { enumerable: true, get: function () { return corporate_api_js_1.CorporateApi; } });
|
|
42
|
+
var ipo_api_js_1 = require("./api/ipo-api.js");
|
|
43
|
+
Object.defineProperty(exports, "IpoApi", { enumerable: true, get: function () { return ipo_api_js_1.IpoApi; } });
|
|
44
|
+
var market_api_js_1 = require("./api/market-api.js");
|
|
45
|
+
Object.defineProperty(exports, "MarketApi", { enumerable: true, get: function () { return market_api_js_1.MarketApi; } });
|
|
46
|
+
var download_api_js_1 = require("./api/download-api.js");
|
|
47
|
+
Object.defineProperty(exports, "DownloadApi", { enumerable: true, get: function () { return download_api_js_1.DownloadApi; } });
|
|
48
|
+
var http_client_js_1 = require("./http/http-client.js");
|
|
49
|
+
Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_client_js_1.HttpClient; } });
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nse/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;AAEH,kBAAkB;AAClB,qDAAgD;AAAvC,0GAAA,SAAS,OAAA;AAElB,oCAAoC;AACpC,mDAAiC;AAEjC,mBAAmB;AACnB,uDAAqC;AAErC,mBAAmB;AACnB,4DAA0C;AAC1C,6DAA2C;AAE3C,wCAAwC;AACxC,qDAAgD;AAAvC,0GAAA,SAAS,OAAA;AAClB,uDAAkD;AAAzC,4GAAA,UAAU,OAAA;AACnB,6DAAwD;AAA/C,kHAAA,aAAa,OAAA;AACtB,2DAAsD;AAA7C,gHAAA,YAAY,OAAA;AACrB,+CAA0C;AAAjC,oGAAA,MAAM,OAAA;AACf,qDAAgD;AAAvC,0GAAA,SAAS,OAAA;AAClB,yDAAoD;AAA3C,8GAAA,WAAW,OAAA;AACpB,wDAAmD;AAA1C,4GAAA,UAAU,OAAA"}
|