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,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility function to get and validate path
|
|
3
|
+
*/
|
|
4
|
+
export declare function getPath(inputPath: string, isFolder?: boolean): string;
|
|
5
|
+
/**
|
|
6
|
+
* Split date range into chunks
|
|
7
|
+
*/
|
|
8
|
+
export declare function splitDateRange(fromDate: Date, toDate: Date, maxChunkSize?: number): Array<[Date, Date]>;
|
|
9
|
+
/**
|
|
10
|
+
* Format date to YYYYMMDD string
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatDate(date: Date): string;
|
|
13
|
+
/**
|
|
14
|
+
* Format date to DD/MM/YYYY string
|
|
15
|
+
*/
|
|
16
|
+
export declare function formatDateSlash(date: Date): string;
|
|
17
|
+
/**
|
|
18
|
+
* Extract and unzip file
|
|
19
|
+
*/
|
|
20
|
+
export declare function unzipFile(filePath: string, extractPath: string): Promise<string>;
|
|
21
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/bse/utils/helpers.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,MAAM,CAcnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,IAAI,EACd,MAAM,EAAE,IAAI,EACZ,YAAY,SAAK,GAChB,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CA0BrB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAK7C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAKlD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBtF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
import { BSEError } from '../types/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Utility function to get and validate path
|
|
6
|
+
*/
|
|
7
|
+
export function getPath(inputPath, isFolder = false) {
|
|
8
|
+
const resolvedPath = path.resolve(inputPath);
|
|
9
|
+
if (isFolder) {
|
|
10
|
+
if (fs.existsSync(resolvedPath) && fs.statSync(resolvedPath).isFile()) {
|
|
11
|
+
throw new BSEError(`${resolvedPath}: must be a folder`);
|
|
12
|
+
}
|
|
13
|
+
if (!fs.existsSync(resolvedPath)) {
|
|
14
|
+
fs.mkdirSync(resolvedPath, { recursive: true });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return resolvedPath;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Split date range into chunks
|
|
21
|
+
*/
|
|
22
|
+
export function splitDateRange(fromDate, toDate, maxChunkSize = 30) {
|
|
23
|
+
if (fromDate > toDate) {
|
|
24
|
+
throw new BSEError("'fromDate' cannot be greater than 'toDate'");
|
|
25
|
+
}
|
|
26
|
+
const chunks = [];
|
|
27
|
+
let currentStart = new Date(fromDate);
|
|
28
|
+
while (currentStart <= toDate) {
|
|
29
|
+
// Calculate the end of the current chunk
|
|
30
|
+
const currentEnd = new Date(currentStart);
|
|
31
|
+
currentEnd.setDate(currentEnd.getDate() + maxChunkSize - 1);
|
|
32
|
+
// Don't go past the final date
|
|
33
|
+
if (currentEnd > toDate) {
|
|
34
|
+
currentEnd.setTime(toDate.getTime());
|
|
35
|
+
}
|
|
36
|
+
chunks.push([new Date(currentStart), new Date(currentEnd)]);
|
|
37
|
+
// Start next chunk the day after the current end
|
|
38
|
+
currentStart = new Date(currentEnd);
|
|
39
|
+
currentStart.setDate(currentStart.getDate() + 1);
|
|
40
|
+
}
|
|
41
|
+
return chunks;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Format date to YYYYMMDD string
|
|
45
|
+
*/
|
|
46
|
+
export function formatDate(date) {
|
|
47
|
+
const year = date.getFullYear();
|
|
48
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
49
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
50
|
+
return `${year}${month}${day}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Format date to DD/MM/YYYY string
|
|
54
|
+
*/
|
|
55
|
+
export function formatDateSlash(date) {
|
|
56
|
+
const year = date.getFullYear();
|
|
57
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
58
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
59
|
+
return `${day}/${month}/${year}`;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Extract and unzip file
|
|
63
|
+
*/
|
|
64
|
+
export async function unzipFile(filePath, extractPath) {
|
|
65
|
+
const AdmZip = require('adm-zip');
|
|
66
|
+
const zip = new AdmZip(filePath);
|
|
67
|
+
const zipEntries = zip.getEntries();
|
|
68
|
+
if (zipEntries.length === 0) {
|
|
69
|
+
throw new BSEError('Empty zip file');
|
|
70
|
+
}
|
|
71
|
+
const extractedPath = path.join(extractPath, zipEntries[0].entryName);
|
|
72
|
+
zip.extractAllTo(extractPath, true);
|
|
73
|
+
// Remove the original zip file
|
|
74
|
+
fs.unlinkSync(filePath);
|
|
75
|
+
return extractedPath;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/bse/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"throttle.d.ts","sourceRoot":"","sources":["../../../src/bse/utils/throttle.ts"],"names":[],"mappings":"AA8BA,qBAAa,QAAQ;WACN,KAAK,CAAC,IAAI,GAAE,QAAQ,GAAG,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CAwB1E"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const throttleConfig = {
|
|
2
|
+
lookup: {
|
|
3
|
+
rps: 15,
|
|
4
|
+
delay: Math.ceil(1000 / 15), // ~67ms between requests
|
|
5
|
+
},
|
|
6
|
+
default: {
|
|
7
|
+
rps: 8,
|
|
8
|
+
delay: Math.ceil(1000 / 8), // 125ms between requests
|
|
9
|
+
},
|
|
10
|
+
};
|
|
11
|
+
// Simple delay function
|
|
12
|
+
const delay = (ms) => new Promise(resolve => setTimeout(resolve, Math.max(0, ms)));
|
|
13
|
+
// Track last request times
|
|
14
|
+
let lastDefaultRequest = 0;
|
|
15
|
+
let lastLookupRequest = 0;
|
|
16
|
+
export class Throttle {
|
|
17
|
+
static async check(type = 'default') {
|
|
18
|
+
const now = Date.now();
|
|
19
|
+
const config = throttleConfig[type];
|
|
20
|
+
if (type === 'lookup') {
|
|
21
|
+
const timeSinceLastRequest = now - lastLookupRequest;
|
|
22
|
+
const waitTime = config.delay - timeSinceLastRequest;
|
|
23
|
+
if (waitTime > 0) {
|
|
24
|
+
await delay(waitTime);
|
|
25
|
+
}
|
|
26
|
+
lastLookupRequest = Date.now();
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const timeSinceLastRequest = now - lastDefaultRequest;
|
|
30
|
+
const waitTime = config.delay - timeSinceLastRequest;
|
|
31
|
+
if (waitTime > 0) {
|
|
32
|
+
await delay(waitTime);
|
|
33
|
+
}
|
|
34
|
+
lastDefaultRequest = Date.now();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# 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,MAAM,OAAO,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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NSE-BSE API - Unified TypeScript API for NSE and BSE India stock exchanges
|
|
3
|
+
*
|
|
4
|
+
* This package provides separate APIs for NSE and BSE while maintaining
|
|
5
|
+
* their individual functionality and keeping them isolated.
|
|
6
|
+
*/
|
|
7
|
+
export { NSEClient as NSE } from './nse/index.js';
|
|
8
|
+
export { BSE } from './bse/index.js';
|
|
9
|
+
export { NSEClient } from './nse/index.js';
|
|
10
|
+
export * as NSEApi from './nse/index.js';
|
|
11
|
+
export * as BSEApi from './bse/index.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NSE-BSE API - Unified TypeScript API for NSE and BSE India stock exchanges
|
|
3
|
+
*
|
|
4
|
+
* This package provides separate APIs for NSE and BSE while maintaining
|
|
5
|
+
* their individual functionality and keeping them isolated.
|
|
6
|
+
*/
|
|
7
|
+
// Main exports for convenience
|
|
8
|
+
export { NSEClient as NSE } from './nse/index.js';
|
|
9
|
+
export { BSE } from './bse/index.js';
|
|
10
|
+
// Named exports for specific usage
|
|
11
|
+
export { NSEClient } from './nse/index.js';
|
|
12
|
+
// Export namespaced APIs to avoid conflicts
|
|
13
|
+
export * as NSEApi from './nse/index.js';
|
|
14
|
+
export * as BSEApi from './bse/index.js';
|
|
15
|
+
//# 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,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,mCAAmC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,4CAA4C;AAC5C,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Corporate actions and announcements API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
import { ActionParams, AnnouncementParams, BoardMeetingParams, CircularParams } from "../types/index.js";
|
|
6
|
+
export declare class CorporateApi {
|
|
7
|
+
private httpClient;
|
|
8
|
+
constructor(httpClient: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get corporate actions
|
|
11
|
+
*/
|
|
12
|
+
getActions(params?: ActionParams): Promise<any[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Get corporate announcements
|
|
15
|
+
*/
|
|
16
|
+
getAnnouncements(params?: AnnouncementParams): Promise<any[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Get board meetings
|
|
19
|
+
*/
|
|
20
|
+
getBoardMeetings(params?: BoardMeetingParams): Promise<any[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Get annual reports
|
|
23
|
+
*/
|
|
24
|
+
getAnnualReports(symbol: string, segment?: "equities" | "sme"): Promise<any>;
|
|
25
|
+
/**
|
|
26
|
+
* Get circulars
|
|
27
|
+
*/
|
|
28
|
+
getCirculars(params?: CircularParams): Promise<any>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=corporate-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corporate-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/corporate-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,YAAY;IACX,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,UAAU,CAAC,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgB3D;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBvE;;OAEG;IACG,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBvE;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,UAAU,GAAG,KAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IAO9F;;OAEG;IACG,YAAY,CAAC,MAAM,GAAE,cAAmB,GAAG,OAAO,CAAC,GAAG,CAAC;CAe9D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Corporate actions and announcements API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { BASE_URL } from "../constants/index.js";
|
|
5
|
+
import { formatDateDMY, validateDateRange } from "../utils/date-formatter.js";
|
|
6
|
+
export class CorporateApi {
|
|
7
|
+
httpClient;
|
|
8
|
+
constructor(httpClient) {
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Get corporate actions
|
|
13
|
+
*/
|
|
14
|
+
async getActions(params = {}) {
|
|
15
|
+
const query = {
|
|
16
|
+
index: params.segment ?? "equities",
|
|
17
|
+
};
|
|
18
|
+
if (params.symbol)
|
|
19
|
+
query.symbol = params.symbol;
|
|
20
|
+
if (params.from_date && params.to_date) {
|
|
21
|
+
validateDateRange(params.from_date, params.to_date);
|
|
22
|
+
query.from_date = formatDateDMY(params.from_date);
|
|
23
|
+
query.to_date = formatDateDMY(params.to_date);
|
|
24
|
+
}
|
|
25
|
+
return await this.httpClient.request(`${BASE_URL}/corporates-corporateActions`, query);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get corporate announcements
|
|
29
|
+
*/
|
|
30
|
+
async getAnnouncements(params = {}) {
|
|
31
|
+
const query = {
|
|
32
|
+
index: params.index ?? "equities",
|
|
33
|
+
};
|
|
34
|
+
if (params.symbol)
|
|
35
|
+
query.symbol = params.symbol;
|
|
36
|
+
if (params.fno)
|
|
37
|
+
query.fo_sec = true;
|
|
38
|
+
if (params.from_date && params.to_date) {
|
|
39
|
+
validateDateRange(params.from_date, params.to_date);
|
|
40
|
+
query.from_date = formatDateDMY(params.from_date);
|
|
41
|
+
query.to_date = formatDateDMY(params.to_date);
|
|
42
|
+
}
|
|
43
|
+
return await this.httpClient.request(`${BASE_URL}/corporate-announcements`, query);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get board meetings
|
|
47
|
+
*/
|
|
48
|
+
async getBoardMeetings(params = {}) {
|
|
49
|
+
const query = {
|
|
50
|
+
index: params.index ?? "equities",
|
|
51
|
+
};
|
|
52
|
+
if (params.symbol)
|
|
53
|
+
query.symbol = params.symbol;
|
|
54
|
+
if (params.fno)
|
|
55
|
+
query.fo_sec = true;
|
|
56
|
+
if (params.from_date && params.to_date) {
|
|
57
|
+
validateDateRange(params.from_date, params.to_date);
|
|
58
|
+
query.from_date = formatDateDMY(params.from_date);
|
|
59
|
+
query.to_date = formatDateDMY(params.to_date);
|
|
60
|
+
}
|
|
61
|
+
return await this.httpClient.request(`${BASE_URL}/corporate-board-meetings`, query);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get annual reports
|
|
65
|
+
*/
|
|
66
|
+
async getAnnualReports(symbol, segment = "equities") {
|
|
67
|
+
return await this.httpClient.request(`${BASE_URL}/annual-reports`, {
|
|
68
|
+
index: segment,
|
|
69
|
+
symbol,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get circulars
|
|
74
|
+
*/
|
|
75
|
+
async getCirculars(params = {}) {
|
|
76
|
+
const to = params.to_date ?? new Date();
|
|
77
|
+
const from = params.from_date ?? new Date(to.getTime() - 7 * 86400000);
|
|
78
|
+
validateDateRange(from, to);
|
|
79
|
+
const query = {
|
|
80
|
+
from_date: formatDateDMY(from),
|
|
81
|
+
to_date: formatDateDMY(to),
|
|
82
|
+
};
|
|
83
|
+
if (params.subject)
|
|
84
|
+
query.sub = params.subject;
|
|
85
|
+
if (params.dept_code)
|
|
86
|
+
query.dept = params.dept_code.toUpperCase();
|
|
87
|
+
return await this.httpClient.request(`${BASE_URL}/circulars`, query);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# 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,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File download and bhavcopy API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
export declare class DownloadApi {
|
|
6
|
+
private httpClient;
|
|
7
|
+
private downloadDir;
|
|
8
|
+
constructor(httpClient: HttpClient, downloadDir: string);
|
|
9
|
+
/**
|
|
10
|
+
* Download and extract equity bhavcopy
|
|
11
|
+
*/
|
|
12
|
+
downloadEquityBhavcopy(date: Date, folder?: string): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Download delivery bhavcopy
|
|
15
|
+
*/
|
|
16
|
+
downloadDeliveryBhavcopy(date: Date, folder?: string): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Download indices bhavcopy
|
|
19
|
+
*/
|
|
20
|
+
downloadIndicesBhavcopy(date: Date, folder?: string): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Download F&O bhavcopy
|
|
23
|
+
*/
|
|
24
|
+
downloadFnoBhavcopy(date: Date, folder?: string): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* Download priceband report
|
|
27
|
+
*/
|
|
28
|
+
downloadPricebandReport(date: Date, folder?: string): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Download PR bhavcopy
|
|
31
|
+
*/
|
|
32
|
+
downloadPrBhavcopy(date: Date, folder?: string): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Download CM MII security report
|
|
35
|
+
*/
|
|
36
|
+
downloadCmMiiSecurityReport(date: Date, folder?: string): Promise<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Download any document from URL
|
|
39
|
+
*/
|
|
40
|
+
downloadDocument(url: string, folder?: string, extractFiles?: string[]): Promise<string>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=download-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/download-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKpD,qBAAa,WAAW;IAEpB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;gBADX,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM;IAG7B;;OAEG;IACG,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB1E;;OAEG;IACG,wBAAwB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe5E;;OAEG;IACG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe3E;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAevE;;OAEG;IACG,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe3E;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAetE;;OAEG;IACG,2BAA2B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAe/E;;OAEG;IACG,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAoB/F"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File download and bhavcopy API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import { ARCHIVE_URL, UDIFF_SWITCH_DATE } from "../constants/index.js";
|
|
7
|
+
import { getPath, unzipFile } from "../utils/file-operations.js";
|
|
8
|
+
import { formatDateArchive, formatDateYMD, formatDateDDMMYYYY, formatDateDDMMYY } from "../utils/date-formatter.js";
|
|
9
|
+
export class DownloadApi {
|
|
10
|
+
httpClient;
|
|
11
|
+
downloadDir;
|
|
12
|
+
constructor(httpClient, downloadDir) {
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
this.downloadDir = downloadDir;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Download and extract equity bhavcopy
|
|
18
|
+
*/
|
|
19
|
+
async downloadEquityBhavcopy(date, folder) {
|
|
20
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
21
|
+
let url;
|
|
22
|
+
if (date < UDIFF_SWITCH_DATE) {
|
|
23
|
+
const dateStr = formatDateArchive(date);
|
|
24
|
+
const month = dateStr.substring(2, 5);
|
|
25
|
+
url = `${ARCHIVE_URL}/content/historical/EQUITIES/${date.getFullYear()}/${month}/cm${dateStr}bhav.csv.zip`;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const ymd = formatDateYMD(date);
|
|
29
|
+
url = `${ARCHIVE_URL}/content/cm/BhavCopy_NSE_CM_0_0_0_${ymd}_F_0000.csv.zip`;
|
|
30
|
+
}
|
|
31
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
32
|
+
if (!fs.existsSync(file)) {
|
|
33
|
+
fs.rmSync(file, { force: true });
|
|
34
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
35
|
+
}
|
|
36
|
+
return await unzipFile(file, path.dirname(file));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Download delivery bhavcopy
|
|
40
|
+
*/
|
|
41
|
+
async downloadDeliveryBhavcopy(date, folder) {
|
|
42
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
43
|
+
const ddmmyyyy = formatDateDDMMYYYY(date);
|
|
44
|
+
const url = `${ARCHIVE_URL}/products/content/sec_bhavdata_full_${ddmmyyyy}.csv`;
|
|
45
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
46
|
+
if (!fs.existsSync(file)) {
|
|
47
|
+
fs.rmSync(file, { force: true });
|
|
48
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
49
|
+
}
|
|
50
|
+
return file;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Download indices bhavcopy
|
|
54
|
+
*/
|
|
55
|
+
async downloadIndicesBhavcopy(date, folder) {
|
|
56
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
57
|
+
const ddmmyyyy = formatDateDDMMYYYY(date);
|
|
58
|
+
const url = `${ARCHIVE_URL}/content/indices/ind_close_all_${ddmmyyyy}.csv`;
|
|
59
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
60
|
+
if (!fs.existsSync(file)) {
|
|
61
|
+
fs.rmSync(file, { force: true });
|
|
62
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
63
|
+
}
|
|
64
|
+
return file;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Download F&O bhavcopy
|
|
68
|
+
*/
|
|
69
|
+
async downloadFnoBhavcopy(date, folder) {
|
|
70
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
71
|
+
const ymd = formatDateYMD(date);
|
|
72
|
+
const url = `${ARCHIVE_URL}/content/fo/BhavCopy_NSE_FO_0_0_0_${ymd}_F_0000.csv.zip`;
|
|
73
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
74
|
+
if (!fs.existsSync(file)) {
|
|
75
|
+
fs.rmSync(file, { force: true });
|
|
76
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
77
|
+
}
|
|
78
|
+
return await unzipFile(file, path.dirname(file));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Download priceband report
|
|
82
|
+
*/
|
|
83
|
+
async downloadPricebandReport(date, folder) {
|
|
84
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
85
|
+
const ddmmyyyy = formatDateDDMMYYYY(date);
|
|
86
|
+
const url = `${ARCHIVE_URL}/content/equities/sec_list_${ddmmyyyy}.csv`;
|
|
87
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
88
|
+
if (!fs.existsSync(file)) {
|
|
89
|
+
fs.rmSync(file, { force: true });
|
|
90
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
91
|
+
}
|
|
92
|
+
return file;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Download PR bhavcopy
|
|
96
|
+
*/
|
|
97
|
+
async downloadPrBhavcopy(date, folder) {
|
|
98
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
99
|
+
const ddmmyy = formatDateDDMMYY(date);
|
|
100
|
+
const url = `${ARCHIVE_URL}/archives/equities/bhavcopy/pr/PR${ddmmyy}.zip`;
|
|
101
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
102
|
+
if (!fs.existsSync(file)) {
|
|
103
|
+
fs.rmSync(file, { force: true });
|
|
104
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
105
|
+
}
|
|
106
|
+
return file;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Download CM MII security report
|
|
110
|
+
*/
|
|
111
|
+
async downloadCmMiiSecurityReport(date, folder) {
|
|
112
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
113
|
+
const ddmmyyyy = formatDateDDMMYYYY(date);
|
|
114
|
+
const url = `${ARCHIVE_URL}/content/cm/NSE_CM_security_${ddmmyyyy}.csv.gz`;
|
|
115
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
116
|
+
if (!fs.existsSync(file)) {
|
|
117
|
+
fs.rmSync(file, { force: true });
|
|
118
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
119
|
+
}
|
|
120
|
+
return await unzipFile(file, path.dirname(file));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Download any document from URL
|
|
124
|
+
*/
|
|
125
|
+
async downloadDocument(url, folder, extractFiles) {
|
|
126
|
+
const outDir = folder ? getPath(folder, true) : this.downloadDir;
|
|
127
|
+
const file = await this.httpClient.downloadFile(url, outDir);
|
|
128
|
+
if (!fs.existsSync(file)) {
|
|
129
|
+
fs.rmSync(file, { force: true });
|
|
130
|
+
throw new Error(`Failed to download file: ${path.basename(file)}`);
|
|
131
|
+
}
|
|
132
|
+
if (path.extname(file).toLowerCase() === ".zip") {
|
|
133
|
+
try {
|
|
134
|
+
return await unzipFile(file, path.dirname(file), extractFiles);
|
|
135
|
+
}
|
|
136
|
+
catch (e) {
|
|
137
|
+
fs.rmSync(file, { force: true });
|
|
138
|
+
throw new Error(`Failed to extract zip file: ${String(e?.message ?? e)}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return file;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# 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":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAEpH,MAAM,OAAO,WAAW;IAEZ;IACA;IAFV,YACU,UAAsB,EACtB,WAAmB;QADnB,eAAU,GAAV,UAAU,CAAY;QACtB,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,sBAAsB,CAAC,IAAU,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,IAAI,GAAW,CAAC;QAEhB,IAAI,IAAI,GAAG,iBAAiB,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,GAAG,GAAG,GAAG,WAAW,gCAAgC,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,MAAM,OAAO,cAAc,CAAC;QAC7G,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;YAChC,GAAG,GAAG,GAAG,WAAW,qCAAqC,GAAG,iBAAiB,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,IAAU,EAAE,MAAe;QACxD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,GAAG,WAAW,uCAAuC,QAAQ,MAAM,CAAC;QAEhF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,IAAU,EAAE,MAAe;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,GAAG,WAAW,kCAAkC,QAAQ,MAAM,CAAC;QAE3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,IAAU,EAAE,MAAe;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,GAAG,WAAW,qCAAqC,GAAG,iBAAiB,CAAC;QAEpF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,uBAAuB,CAAC,IAAU,EAAE,MAAe;QACvD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,GAAG,WAAW,8BAA8B,QAAQ,MAAM,CAAC;QAEvE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAU,EAAE,MAAe;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,GAAG,WAAW,oCAAoC,MAAM,MAAM,CAAC;QAE3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAAC,IAAU,EAAE,MAAe;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,GAAG,WAAW,+BAA+B,QAAQ,SAAS,CAAC;QAE3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAe,EAAE,YAAuB;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Equity-related API methods for NSE
|
|
3
|
+
*/
|
|
4
|
+
import { HttpClient } from "../http/http-client.js";
|
|
5
|
+
import { EquityQuoteData, QuoteParams, MarketData } from "../types/index.js";
|
|
6
|
+
export declare class EquityApi {
|
|
7
|
+
private httpClient;
|
|
8
|
+
constructor(httpClient: HttpClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get equity metadata information
|
|
11
|
+
*/
|
|
12
|
+
getEquityMetaInfo(symbol: string): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Get quote for equity or derivative
|
|
15
|
+
*/
|
|
16
|
+
getQuote(params: QuoteParams): Promise<any>;
|
|
17
|
+
/**
|
|
18
|
+
* Get simplified equity quote with OHLC data
|
|
19
|
+
*/
|
|
20
|
+
getEquityQuote(symbol: string): Promise<EquityQuoteData>;
|
|
21
|
+
/**
|
|
22
|
+
* Filter gainers from market data
|
|
23
|
+
*/
|
|
24
|
+
getGainers(data: MarketData, count?: number): any[];
|
|
25
|
+
/**
|
|
26
|
+
* Filter losers from market data
|
|
27
|
+
*/
|
|
28
|
+
getLosers(data: MarketData, count?: number): any[];
|
|
29
|
+
/**
|
|
30
|
+
* List equity stocks by index
|
|
31
|
+
*/
|
|
32
|
+
listEquityStocksByIndex(index?: string): Promise<any>;
|
|
33
|
+
/**
|
|
34
|
+
* List all indices
|
|
35
|
+
*/
|
|
36
|
+
listIndices(): Promise<any>;
|
|
37
|
+
/**
|
|
38
|
+
* List ETFs
|
|
39
|
+
*/
|
|
40
|
+
listEtf(): Promise<any>;
|
|
41
|
+
/**
|
|
42
|
+
* List SME stocks
|
|
43
|
+
*/
|
|
44
|
+
listSme(): Promise<any>;
|
|
45
|
+
/**
|
|
46
|
+
* List Sovereign Gold Bonds
|
|
47
|
+
*/
|
|
48
|
+
listSgb(): Promise<any>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=equity-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equity-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/equity-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE7E,qBAAa,SAAS;IACR,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAMrD;;OAEG;IACG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAkBjD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmB9D;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAQnD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,EAAE;IAQlD;;OAEG;IACG,uBAAuB,CAAC,KAAK,SAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAI/D;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAIjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;CAG9B"}
|