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,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Throttle = void 0;
|
|
4
|
+
const throttleConfig = {
|
|
5
|
+
lookup: {
|
|
6
|
+
rps: 15,
|
|
7
|
+
delay: Math.ceil(1000 / 15), // ~67ms between requests
|
|
8
|
+
},
|
|
9
|
+
default: {
|
|
10
|
+
rps: 8,
|
|
11
|
+
delay: Math.ceil(1000 / 8), // 125ms between requests
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
// Simple delay function
|
|
15
|
+
const delay = (ms) => new Promise(resolve => setTimeout(resolve, Math.max(0, ms)));
|
|
16
|
+
// Track last request times
|
|
17
|
+
let lastDefaultRequest = 0;
|
|
18
|
+
let lastLookupRequest = 0;
|
|
19
|
+
class Throttle {
|
|
20
|
+
static async check(type = 'default') {
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
const config = throttleConfig[type];
|
|
23
|
+
if (type === 'lookup') {
|
|
24
|
+
const timeSinceLastRequest = now - lastLookupRequest;
|
|
25
|
+
const waitTime = config.delay - timeSinceLastRequest;
|
|
26
|
+
if (waitTime > 0) {
|
|
27
|
+
await delay(waitTime);
|
|
28
|
+
}
|
|
29
|
+
lastLookupRequest = Date.now();
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
const timeSinceLastRequest = now - lastDefaultRequest;
|
|
33
|
+
const waitTime = config.delay - timeSinceLastRequest;
|
|
34
|
+
if (waitTime > 0) {
|
|
35
|
+
await delay(waitTime);
|
|
36
|
+
}
|
|
37
|
+
lastDefaultRequest = Date.now();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.Throttle = Throttle;
|
|
42
|
+
//# sourceMappingURL=throttle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.js","sourceRoot":"","sources":["../../../src/bse/utils/throttle.ts"],"names":[],"mappings":";;;AAWA,MAAM,cAAc,GAAmB;IACrC,MAAM,EAAE;QACN,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,yBAAyB;KACvD;IACD,OAAO,EAAE;QACP,GAAG,EAAE,CAAC;QACN,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,yBAAyB;KACtD;CACF,CAAC;AAEF,wBAAwB;AACxB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE,CAC1C,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAE/D,2BAA2B;AAC3B,IAAI,kBAAkB,GAAG,CAAC,CAAC;AAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAE1B,MAAa,QAAQ;IACnB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAA6B,SAAS;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,oBAAoB,GAAG,GAAG,GAAG,iBAAiB,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,oBAAoB,CAAC;YAErD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,oBAAoB,GAAG,GAAG,GAAG,kBAAkB,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,oBAAoB,CAAC;YAErD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;CACF;AAzBD,4BAyBC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* NSE-BSE API - Unified TypeScript API for NSE and BSE India stock exchanges
|
|
4
|
+
*
|
|
5
|
+
* This package provides separate APIs for NSE and BSE while maintaining
|
|
6
|
+
* their individual functionality and keeping them isolated.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.BSEApi = exports.NSEApi = exports.NSEClient = exports.BSE = exports.NSE = void 0;
|
|
43
|
+
// Main exports for convenience
|
|
44
|
+
var index_js_1 = require("./nse/index.js");
|
|
45
|
+
Object.defineProperty(exports, "NSE", { enumerable: true, get: function () { return index_js_1.NSEClient; } });
|
|
46
|
+
var index_js_2 = require("./bse/index.js");
|
|
47
|
+
Object.defineProperty(exports, "BSE", { enumerable: true, get: function () { return index_js_2.BSE; } });
|
|
48
|
+
// Named exports for specific usage
|
|
49
|
+
var index_js_3 = require("./nse/index.js");
|
|
50
|
+
Object.defineProperty(exports, "NSEClient", { enumerable: true, get: function () { return index_js_3.NSEClient; } });
|
|
51
|
+
// Export namespaced APIs to avoid conflicts
|
|
52
|
+
exports.NSEApi = __importStar(require("./nse/index.js"));
|
|
53
|
+
exports.BSEApi = __importStar(require("./bse/index.js"));
|
|
54
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+BAA+B;AAC/B,2CAAkD;AAAzC,+FAAA,SAAS,OAAO;AACzB,2CAAqC;AAA5B,+FAAA,GAAG,OAAA;AAEZ,mCAAmC;AACnC,2CAA2C;AAAlC,qGAAA,SAAS,OAAA;AAElB,4CAA4C;AAC5C,yDAAyC;AACzC,yDAAyC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Corporate actions and announcements API methods for NSE
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CorporateApi = void 0;
|
|
7
|
+
const index_js_1 = require("../constants/index.js");
|
|
8
|
+
const date_formatter_js_1 = require("../utils/date-formatter.js");
|
|
9
|
+
class CorporateApi {
|
|
10
|
+
httpClient;
|
|
11
|
+
constructor(httpClient) {
|
|
12
|
+
this.httpClient = httpClient;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get corporate actions
|
|
16
|
+
*/
|
|
17
|
+
async getActions(params = {}) {
|
|
18
|
+
const query = {
|
|
19
|
+
index: params.segment ?? "equities",
|
|
20
|
+
};
|
|
21
|
+
if (params.symbol)
|
|
22
|
+
query.symbol = params.symbol;
|
|
23
|
+
if (params.from_date && params.to_date) {
|
|
24
|
+
(0, date_formatter_js_1.validateDateRange)(params.from_date, params.to_date);
|
|
25
|
+
query.from_date = (0, date_formatter_js_1.formatDateDMY)(params.from_date);
|
|
26
|
+
query.to_date = (0, date_formatter_js_1.formatDateDMY)(params.to_date);
|
|
27
|
+
}
|
|
28
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/corporates-corporateActions`, query);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get corporate announcements
|
|
32
|
+
*/
|
|
33
|
+
async getAnnouncements(params = {}) {
|
|
34
|
+
const query = {
|
|
35
|
+
index: params.index ?? "equities",
|
|
36
|
+
};
|
|
37
|
+
if (params.symbol)
|
|
38
|
+
query.symbol = params.symbol;
|
|
39
|
+
if (params.fno)
|
|
40
|
+
query.fo_sec = true;
|
|
41
|
+
if (params.from_date && params.to_date) {
|
|
42
|
+
(0, date_formatter_js_1.validateDateRange)(params.from_date, params.to_date);
|
|
43
|
+
query.from_date = (0, date_formatter_js_1.formatDateDMY)(params.from_date);
|
|
44
|
+
query.to_date = (0, date_formatter_js_1.formatDateDMY)(params.to_date);
|
|
45
|
+
}
|
|
46
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/corporate-announcements`, query);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get board meetings
|
|
50
|
+
*/
|
|
51
|
+
async getBoardMeetings(params = {}) {
|
|
52
|
+
const query = {
|
|
53
|
+
index: params.index ?? "equities",
|
|
54
|
+
};
|
|
55
|
+
if (params.symbol)
|
|
56
|
+
query.symbol = params.symbol;
|
|
57
|
+
if (params.fno)
|
|
58
|
+
query.fo_sec = true;
|
|
59
|
+
if (params.from_date && params.to_date) {
|
|
60
|
+
(0, date_formatter_js_1.validateDateRange)(params.from_date, params.to_date);
|
|
61
|
+
query.from_date = (0, date_formatter_js_1.formatDateDMY)(params.from_date);
|
|
62
|
+
query.to_date = (0, date_formatter_js_1.formatDateDMY)(params.to_date);
|
|
63
|
+
}
|
|
64
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/corporate-board-meetings`, query);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get annual reports
|
|
68
|
+
*/
|
|
69
|
+
async getAnnualReports(symbol, segment = "equities") {
|
|
70
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/annual-reports`, {
|
|
71
|
+
index: segment,
|
|
72
|
+
symbol,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get circulars
|
|
77
|
+
*/
|
|
78
|
+
async getCirculars(params = {}) {
|
|
79
|
+
const to = params.to_date ?? new Date();
|
|
80
|
+
const from = params.from_date ?? new Date(to.getTime() - 7 * 86400000);
|
|
81
|
+
(0, date_formatter_js_1.validateDateRange)(from, to);
|
|
82
|
+
const query = {
|
|
83
|
+
from_date: (0, date_formatter_js_1.formatDateDMY)(from),
|
|
84
|
+
to_date: (0, date_formatter_js_1.formatDateDMY)(to),
|
|
85
|
+
};
|
|
86
|
+
if (params.subject)
|
|
87
|
+
query.sub = params.subject;
|
|
88
|
+
if (params.dept_code)
|
|
89
|
+
query.dept = params.dept_code.toUpperCase();
|
|
90
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/circulars`, query);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.CorporateApi = CorporateApi;
|
|
94
|
+
//# sourceMappingURL=corporate-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corporate-api.js","sourceRoot":"","sources":["../../../src/nse/api/corporate-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* File download and bhavcopy API methods for NSE
|
|
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.DownloadApi = void 0;
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const index_js_1 = require("../constants/index.js");
|
|
13
|
+
const file_operations_js_1 = require("../utils/file-operations.js");
|
|
14
|
+
const date_formatter_js_1 = require("../utils/date-formatter.js");
|
|
15
|
+
class DownloadApi {
|
|
16
|
+
httpClient;
|
|
17
|
+
downloadDir;
|
|
18
|
+
constructor(httpClient, downloadDir) {
|
|
19
|
+
this.httpClient = httpClient;
|
|
20
|
+
this.downloadDir = downloadDir;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Download and extract equity bhavcopy
|
|
24
|
+
*/
|
|
25
|
+
async downloadEquityBhavcopy(date, folder) {
|
|
26
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
27
|
+
let url;
|
|
28
|
+
if (date < index_js_1.UDIFF_SWITCH_DATE) {
|
|
29
|
+
const dateStr = (0, date_formatter_js_1.formatDateArchive)(date);
|
|
30
|
+
const month = dateStr.substring(2, 5);
|
|
31
|
+
url = `${index_js_1.ARCHIVE_URL}/content/historical/EQUITIES/${date.getFullYear()}/${month}/cm${dateStr}bhav.csv.zip`;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const ymd = (0, date_formatter_js_1.formatDateYMD)(date);
|
|
35
|
+
url = `${index_js_1.ARCHIVE_URL}/content/cm/BhavCopy_NSE_CM_0_0_0_${ymd}_F_0000.csv.zip`;
|
|
36
|
+
}
|
|
37
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
38
|
+
if (!fs_1.default.existsSync(file)) {
|
|
39
|
+
fs_1.default.rmSync(file, { force: true });
|
|
40
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
41
|
+
}
|
|
42
|
+
return await (0, file_operations_js_1.unzipFile)(file, path_1.default.dirname(file));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Download delivery bhavcopy
|
|
46
|
+
*/
|
|
47
|
+
async downloadDeliveryBhavcopy(date, folder) {
|
|
48
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
49
|
+
const ddmmyyyy = (0, date_formatter_js_1.formatDateDDMMYYYY)(date);
|
|
50
|
+
const url = `${index_js_1.ARCHIVE_URL}/products/content/sec_bhavdata_full_${ddmmyyyy}.csv`;
|
|
51
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
52
|
+
if (!fs_1.default.existsSync(file)) {
|
|
53
|
+
fs_1.default.rmSync(file, { force: true });
|
|
54
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
55
|
+
}
|
|
56
|
+
return file;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Download indices bhavcopy
|
|
60
|
+
*/
|
|
61
|
+
async downloadIndicesBhavcopy(date, folder) {
|
|
62
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
63
|
+
const ddmmyyyy = (0, date_formatter_js_1.formatDateDDMMYYYY)(date);
|
|
64
|
+
const url = `${index_js_1.ARCHIVE_URL}/content/indices/ind_close_all_${ddmmyyyy}.csv`;
|
|
65
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
66
|
+
if (!fs_1.default.existsSync(file)) {
|
|
67
|
+
fs_1.default.rmSync(file, { force: true });
|
|
68
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
69
|
+
}
|
|
70
|
+
return file;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Download F&O bhavcopy
|
|
74
|
+
*/
|
|
75
|
+
async downloadFnoBhavcopy(date, folder) {
|
|
76
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
77
|
+
const ymd = (0, date_formatter_js_1.formatDateYMD)(date);
|
|
78
|
+
const url = `${index_js_1.ARCHIVE_URL}/content/fo/BhavCopy_NSE_FO_0_0_0_${ymd}_F_0000.csv.zip`;
|
|
79
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
80
|
+
if (!fs_1.default.existsSync(file)) {
|
|
81
|
+
fs_1.default.rmSync(file, { force: true });
|
|
82
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
83
|
+
}
|
|
84
|
+
return await (0, file_operations_js_1.unzipFile)(file, path_1.default.dirname(file));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Download priceband report
|
|
88
|
+
*/
|
|
89
|
+
async downloadPricebandReport(date, folder) {
|
|
90
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
91
|
+
const ddmmyyyy = (0, date_formatter_js_1.formatDateDDMMYYYY)(date);
|
|
92
|
+
const url = `${index_js_1.ARCHIVE_URL}/content/equities/sec_list_${ddmmyyyy}.csv`;
|
|
93
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
94
|
+
if (!fs_1.default.existsSync(file)) {
|
|
95
|
+
fs_1.default.rmSync(file, { force: true });
|
|
96
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
97
|
+
}
|
|
98
|
+
return file;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Download PR bhavcopy
|
|
102
|
+
*/
|
|
103
|
+
async downloadPrBhavcopy(date, folder) {
|
|
104
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
105
|
+
const ddmmyy = (0, date_formatter_js_1.formatDateDDMMYY)(date);
|
|
106
|
+
const url = `${index_js_1.ARCHIVE_URL}/archives/equities/bhavcopy/pr/PR${ddmmyy}.zip`;
|
|
107
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
108
|
+
if (!fs_1.default.existsSync(file)) {
|
|
109
|
+
fs_1.default.rmSync(file, { force: true });
|
|
110
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
111
|
+
}
|
|
112
|
+
return file;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Download CM MII security report
|
|
116
|
+
*/
|
|
117
|
+
async downloadCmMiiSecurityReport(date, folder) {
|
|
118
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
119
|
+
const ddmmyyyy = (0, date_formatter_js_1.formatDateDDMMYYYY)(date);
|
|
120
|
+
const url = `${index_js_1.ARCHIVE_URL}/content/cm/NSE_CM_security_${ddmmyyyy}.csv.gz`;
|
|
121
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
122
|
+
if (!fs_1.default.existsSync(file)) {
|
|
123
|
+
fs_1.default.rmSync(file, { force: true });
|
|
124
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
125
|
+
}
|
|
126
|
+
return await (0, file_operations_js_1.unzipFile)(file, path_1.default.dirname(file));
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Download any document from URL
|
|
130
|
+
*/
|
|
131
|
+
async downloadDocument(url, folder, extractFiles) {
|
|
132
|
+
const outDir = folder ? (0, file_operations_js_1.getPath)(folder, true) : this.downloadDir;
|
|
133
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
134
|
+
if (!fs_1.default.existsSync(file)) {
|
|
135
|
+
fs_1.default.rmSync(file, { force: true });
|
|
136
|
+
throw new Error(`Failed to download file: ${path_1.default.basename(file)}`);
|
|
137
|
+
}
|
|
138
|
+
if (path_1.default.extname(file).toLowerCase() === ".zip") {
|
|
139
|
+
try {
|
|
140
|
+
return await (0, file_operations_js_1.unzipFile)(file, path_1.default.dirname(file), extractFiles);
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
fs_1.default.rmSync(file, { force: true });
|
|
144
|
+
throw new Error(`Failed to extract zip file: ${String(e?.message ?? e)}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return file;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.DownloadApi = DownloadApi;
|
|
151
|
+
//# sourceMappingURL=download-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download-api.js","sourceRoot":"","sources":["../../../src/nse/api/download-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Equity-related API methods for NSE
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.EquityApi = void 0;
|
|
7
|
+
const index_js_1 = require("../constants/index.js");
|
|
8
|
+
class EquityApi {
|
|
9
|
+
httpClient;
|
|
10
|
+
constructor(httpClient) {
|
|
11
|
+
this.httpClient = httpClient;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get equity metadata information
|
|
15
|
+
*/
|
|
16
|
+
async getEquityMetaInfo(symbol) {
|
|
17
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/equity-meta-info`, {
|
|
18
|
+
symbol: symbol.toUpperCase()
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get quote for equity or derivative
|
|
23
|
+
*/
|
|
24
|
+
async getQuote(params) {
|
|
25
|
+
const type = params.type ?? "equity";
|
|
26
|
+
const url = type === "equity"
|
|
27
|
+
? `${index_js_1.BASE_URL}/quote-equity`
|
|
28
|
+
: `${index_js_1.BASE_URL}/quote-derivative`;
|
|
29
|
+
const query = { symbol: params.symbol.toUpperCase() };
|
|
30
|
+
if (params.section) {
|
|
31
|
+
if (params.section !== "trade_info") {
|
|
32
|
+
throw new Error("'Section' if specified must be 'trade_info'");
|
|
33
|
+
}
|
|
34
|
+
query.section = params.section;
|
|
35
|
+
}
|
|
36
|
+
return await this.httpClient.request(url, query);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get simplified equity quote with OHLC data
|
|
40
|
+
*/
|
|
41
|
+
async getEquityQuote(symbol) {
|
|
42
|
+
const q = await this.getQuote({ symbol, type: "equity" });
|
|
43
|
+
const v = await this.getQuote({ symbol, type: "equity", section: "trade_info" });
|
|
44
|
+
const open = q.priceInfo?.open;
|
|
45
|
+
const minmax = q.priceInfo?.intraDayHighLow;
|
|
46
|
+
const close = q.priceInfo?.close;
|
|
47
|
+
const ltp = q.priceInfo?.lastPrice;
|
|
48
|
+
return {
|
|
49
|
+
date: q.metadata?.lastUpdateTime,
|
|
50
|
+
open,
|
|
51
|
+
high: minmax?.max,
|
|
52
|
+
low: minmax?.min,
|
|
53
|
+
close: close ?? ltp,
|
|
54
|
+
volume: v.securityWiseDP?.quantityTraded,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Filter gainers from market data
|
|
59
|
+
*/
|
|
60
|
+
getGainers(data, count) {
|
|
61
|
+
const filtered = data.data
|
|
62
|
+
.filter((d) => d.pChange > 0)
|
|
63
|
+
.sort((a, b) => b.pChange - a.pChange);
|
|
64
|
+
return typeof count === "number" ? filtered.slice(0, count) : filtered;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Filter losers from market data
|
|
68
|
+
*/
|
|
69
|
+
getLosers(data, count) {
|
|
70
|
+
const filtered = data.data
|
|
71
|
+
.filter((d) => d.pChange < 0)
|
|
72
|
+
.sort((a, b) => a.pChange - b.pChange);
|
|
73
|
+
return typeof count === "number" ? filtered.slice(0, count) : filtered;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* List equity stocks by index
|
|
77
|
+
*/
|
|
78
|
+
async listEquityStocksByIndex(index = "NIFTY 50") {
|
|
79
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/equity-stockIndices`, { index });
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* List all indices
|
|
83
|
+
*/
|
|
84
|
+
async listIndices() {
|
|
85
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/allIndices`);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* List ETFs
|
|
89
|
+
*/
|
|
90
|
+
async listEtf() {
|
|
91
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/etf`);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* List SME stocks
|
|
95
|
+
*/
|
|
96
|
+
async listSme() {
|
|
97
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/live-analysis-emerge`);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* List Sovereign Gold Bonds
|
|
101
|
+
*/
|
|
102
|
+
async listSgb() {
|
|
103
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/sovereign-gold-bonds`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.EquityApi = EquityApi;
|
|
107
|
+
//# sourceMappingURL=equity-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equity-api.js","sourceRoot":"","sources":["../../../src/nse/api/equity-api.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,oDAAiD;AAGjD,MAAa,SAAS;IACA;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,MAAc;QACpC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,mBAAmB,EAAE;YACnE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAmB;QAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,KAAK,QAAQ;YAC3B,CAAC,CAAC,GAAG,mBAAQ,eAAe;YAC5B,CAAC,CAAC,GAAG,mBAAQ,mBAAmB,CAAC;QAEnC,MAAM,KAAK,GAAwB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAE3E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,IAAI,MAAM,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,CAAC;YACD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACjC,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,MAAc;QACjC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAEjF,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC;QAEnC,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc;YAChC,IAAI;YACJ,IAAI,EAAE,MAAM,EAAE,GAAG;YACjB,GAAG,EAAE,MAAM,EAAE,GAAG;YAChB,KAAK,EAAE,KAAK,IAAI,GAAG;YACnB,MAAM,EAAE,CAAC,CAAC,cAAc,EAAE,cAAc;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAgB,EAAE,KAAc;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,IAAgB,EAAE,KAAc;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;aAC5B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,KAAK,GAAG,UAAU;QAC9C,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,sBAAsB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,aAAa,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,uBAAuB,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAQ,uBAAuB,CAAC,CAAC;IAC3E,CAAC;CACF;AA/GD,8BA+GC"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Historical data API methods for NSE
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.HistoricalApi = void 0;
|
|
7
|
+
const index_js_1 = require("../constants/index.js");
|
|
8
|
+
const date_formatter_js_1 = require("../utils/date-formatter.js");
|
|
9
|
+
class HistoricalApi {
|
|
10
|
+
httpClient;
|
|
11
|
+
constructor(httpClient) {
|
|
12
|
+
this.httpClient = httpClient;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Fetch equity historical data
|
|
16
|
+
*/
|
|
17
|
+
async fetchEquityHistoricalData(params) {
|
|
18
|
+
const { symbol, from_date, to_date, series = ["EQ"] } = params;
|
|
19
|
+
// Simple case - no date range and EQ series only
|
|
20
|
+
if (!from_date && !to_date && JSON.stringify(series) === JSON.stringify(["EQ"])) {
|
|
21
|
+
const data = await this.httpClient.request(`${index_js_1.BASE_URL}/historical/cm/equity`, { symbol });
|
|
22
|
+
return data.data.slice().reverse();
|
|
23
|
+
}
|
|
24
|
+
const to = to_date ?? new Date();
|
|
25
|
+
const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
26
|
+
(0, date_formatter_js_1.validateDateRange)(from, to);
|
|
27
|
+
const chunks = (0, date_formatter_js_1.splitDateRange)(from, to, 100);
|
|
28
|
+
const results = [];
|
|
29
|
+
for (const [cFrom, cTo] of chunks) {
|
|
30
|
+
const data = await this.httpClient.request(`${index_js_1.BASE_URL}/historical/cm/equity`, {
|
|
31
|
+
symbol,
|
|
32
|
+
series: JSON.stringify(series),
|
|
33
|
+
from: (0, date_formatter_js_1.formatDateDMY)(cFrom),
|
|
34
|
+
to: (0, date_formatter_js_1.formatDateDMY)(cTo),
|
|
35
|
+
});
|
|
36
|
+
const arr = data.data.slice().reverse();
|
|
37
|
+
results.push(...arr);
|
|
38
|
+
}
|
|
39
|
+
return results;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Fetch VIX historical data
|
|
43
|
+
*/
|
|
44
|
+
async fetchHistoricalVixData(params = {}) {
|
|
45
|
+
const to = params.to_date ?? new Date();
|
|
46
|
+
const from = params.from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
47
|
+
(0, date_formatter_js_1.validateDateRange)(from, to);
|
|
48
|
+
const chunks = (0, date_formatter_js_1.splitDateRange)(from, to, 365);
|
|
49
|
+
const data = [];
|
|
50
|
+
for (const [cFrom, cTo] of chunks) {
|
|
51
|
+
const result = await this.httpClient.request(`${index_js_1.BASE_URL}/historical/vixhistory`, {
|
|
52
|
+
from: (0, date_formatter_js_1.formatDateDMY)(cFrom),
|
|
53
|
+
to: (0, date_formatter_js_1.formatDateDMY)(cTo),
|
|
54
|
+
});
|
|
55
|
+
data.push(...result.data);
|
|
56
|
+
}
|
|
57
|
+
return data;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Fetch F&O historical data
|
|
61
|
+
*/
|
|
62
|
+
async fetchHistoricalFnoData(params) {
|
|
63
|
+
const { symbol, instrument = "FUTIDX", from_date, to_date, expiry, option_type, strike_price } = params;
|
|
64
|
+
const instrumentType = instrument.toUpperCase();
|
|
65
|
+
const to = to_date ?? new Date();
|
|
66
|
+
const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
67
|
+
(0, date_formatter_js_1.validateDateRange)(from, to);
|
|
68
|
+
const query = {
|
|
69
|
+
instrumentType,
|
|
70
|
+
symbol: symbol.toUpperCase(),
|
|
71
|
+
};
|
|
72
|
+
if (expiry) {
|
|
73
|
+
query.expiryDate = (0, date_formatter_js_1.formatDateExpiry)(expiry);
|
|
74
|
+
query.year = expiry.getFullYear();
|
|
75
|
+
}
|
|
76
|
+
if (instrumentType === "OPTIDX" || instrumentType === "OPTSTK") {
|
|
77
|
+
if (!option_type) {
|
|
78
|
+
throw new Error("`option_type` param is required for Stock or Index options.");
|
|
79
|
+
}
|
|
80
|
+
query.optionType = option_type;
|
|
81
|
+
if (strike_price != null)
|
|
82
|
+
query.strikePrice = strike_price;
|
|
83
|
+
}
|
|
84
|
+
const chunks = (0, date_formatter_js_1.splitDateRange)(from, to, 365);
|
|
85
|
+
const data = [];
|
|
86
|
+
for (const [cFrom, cTo] of chunks) {
|
|
87
|
+
query.from = (0, date_formatter_js_1.formatDateDMY)(cFrom);
|
|
88
|
+
query.to = (0, date_formatter_js_1.formatDateDMY)(cTo);
|
|
89
|
+
const result = await this.httpClient.request(`${index_js_1.BASE_URL}/historical/foCPV`, query);
|
|
90
|
+
data.push(...result.data);
|
|
91
|
+
}
|
|
92
|
+
return data;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Fetch index historical data
|
|
96
|
+
*/
|
|
97
|
+
async fetchHistoricalIndexData(params) {
|
|
98
|
+
const { index, from_date, to_date } = params;
|
|
99
|
+
const to = to_date ?? new Date();
|
|
100
|
+
const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
|
|
101
|
+
(0, date_formatter_js_1.validateDateRange)(from, to);
|
|
102
|
+
const chunks = (0, date_formatter_js_1.splitDateRange)(from, to, 365);
|
|
103
|
+
const result = { price: [], turnover: [] };
|
|
104
|
+
for (const [cFrom, cTo] of chunks) {
|
|
105
|
+
const data = await this.httpClient.request(`${index_js_1.BASE_URL}/historical/indicesHistory`, {
|
|
106
|
+
indexType: index.toUpperCase(),
|
|
107
|
+
from: (0, date_formatter_js_1.formatDateDMY)(cFrom),
|
|
108
|
+
to: (0, date_formatter_js_1.formatDateDMY)(cTo),
|
|
109
|
+
});
|
|
110
|
+
result.price.push(...data.data.indexCloseOnlineRecords);
|
|
111
|
+
result.turnover.push(...data.data.indexTurnoverRecords);
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Fetch F&O underlying information
|
|
117
|
+
*/
|
|
118
|
+
async fetchFnoUnderlying() {
|
|
119
|
+
const data = await this.httpClient.request(`${index_js_1.BASE_URL}/underlying-information`);
|
|
120
|
+
return data.data;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Fetch index names
|
|
124
|
+
*/
|
|
125
|
+
async fetchIndexNames() {
|
|
126
|
+
return await this.httpClient.request(`${index_js_1.BASE_URL}/index-names`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.HistoricalApi = HistoricalApi;
|
|
130
|
+
//# sourceMappingURL=historical-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historical-api.js","sourceRoot":"","sources":["../../../src/nse/api/historical-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* API modules for NSE client
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DownloadApi = exports.MarketApi = exports.IpoApi = exports.CorporateApi = exports.HistoricalApi = exports.OptionsApi = exports.EquityApi = void 0;
|
|
7
|
+
var equity_api_js_1 = require("./equity-api.js");
|
|
8
|
+
Object.defineProperty(exports, "EquityApi", { enumerable: true, get: function () { return equity_api_js_1.EquityApi; } });
|
|
9
|
+
var options_api_js_1 = require("./options-api.js");
|
|
10
|
+
Object.defineProperty(exports, "OptionsApi", { enumerable: true, get: function () { return options_api_js_1.OptionsApi; } });
|
|
11
|
+
var historical_api_js_1 = require("./historical-api.js");
|
|
12
|
+
Object.defineProperty(exports, "HistoricalApi", { enumerable: true, get: function () { return historical_api_js_1.HistoricalApi; } });
|
|
13
|
+
var corporate_api_js_1 = require("./corporate-api.js");
|
|
14
|
+
Object.defineProperty(exports, "CorporateApi", { enumerable: true, get: function () { return corporate_api_js_1.CorporateApi; } });
|
|
15
|
+
var ipo_api_js_1 = require("./ipo-api.js");
|
|
16
|
+
Object.defineProperty(exports, "IpoApi", { enumerable: true, get: function () { return ipo_api_js_1.IpoApi; } });
|
|
17
|
+
var market_api_js_1 = require("./market-api.js");
|
|
18
|
+
Object.defineProperty(exports, "MarketApi", { enumerable: true, get: function () { return market_api_js_1.MarketApi; } });
|
|
19
|
+
var download_api_js_1 = require("./download-api.js");
|
|
20
|
+
Object.defineProperty(exports, "DownloadApi", { enumerable: true, get: function () { return download_api_js_1.DownloadApi; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nse/api/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,iDAA4C;AAAnC,0GAAA,SAAS,OAAA;AAClB,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AACnB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,uDAAkD;AAAzC,gHAAA,YAAY,OAAA;AACrB,2CAAsC;AAA7B,oGAAA,MAAM,OAAA;AACf,iDAA4C;AAAnC,0GAAA,SAAS,OAAA;AAClB,qDAAgD;AAAvC,8GAAA,WAAW,OAAA"}
|