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.
Files changed (154) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +194 -0
  3. package/dist/bse/BSE.d.ts +141 -0
  4. package/dist/bse/BSE.d.ts.map +1 -0
  5. package/dist/bse/BSE.js +453 -0
  6. package/dist/bse/BSE.js.map +1 -0
  7. package/dist/bse/constants/index.d.ts +341 -0
  8. package/dist/bse/constants/index.d.ts.map +1 -0
  9. package/dist/bse/constants/index.js +341 -0
  10. package/dist/bse/constants/index.js.map +1 -0
  11. package/dist/bse/index.d.ts +12 -0
  12. package/dist/bse/index.d.ts.map +1 -0
  13. package/dist/bse/index.js +16 -0
  14. package/dist/bse/index.js.map +1 -0
  15. package/dist/bse/types/index.d.ts +120 -0
  16. package/dist/bse/types/index.d.ts.map +1 -0
  17. package/dist/bse/types/index.js +20 -0
  18. package/dist/bse/types/index.js.map +1 -0
  19. package/dist/bse/utils/SymbolParser.d.ts +16 -0
  20. package/dist/bse/utils/SymbolParser.d.ts.map +1 -0
  21. package/dist/bse/utils/SymbolParser.js +58 -0
  22. package/dist/bse/utils/SymbolParser.js.map +1 -0
  23. package/dist/bse/utils/helpers.d.ts +21 -0
  24. package/dist/bse/utils/helpers.d.ts.map +1 -0
  25. package/dist/bse/utils/helpers.js +77 -0
  26. package/dist/bse/utils/helpers.js.map +1 -0
  27. package/dist/bse/utils/throttle.d.ts +4 -0
  28. package/dist/bse/utils/throttle.d.ts.map +1 -0
  29. package/dist/bse/utils/throttle.js +38 -0
  30. package/dist/bse/utils/throttle.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +15 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/nse/api/corporate-api.d.ts +30 -0
  36. package/dist/nse/api/corporate-api.d.ts.map +1 -0
  37. package/dist/nse/api/corporate-api.js +90 -0
  38. package/dist/nse/api/corporate-api.js.map +1 -0
  39. package/dist/nse/api/download-api.d.ts +42 -0
  40. package/dist/nse/api/download-api.d.ts.map +1 -0
  41. package/dist/nse/api/download-api.js +144 -0
  42. package/dist/nse/api/download-api.js.map +1 -0
  43. package/dist/nse/api/equity-api.d.ts +50 -0
  44. package/dist/nse/api/equity-api.d.ts.map +1 -0
  45. package/dist/nse/api/equity-api.js +103 -0
  46. package/dist/nse/api/equity-api.js.map +1 -0
  47. package/dist/nse/api/historical-api.d.ts +34 -0
  48. package/dist/nse/api/historical-api.d.ts.map +1 -0
  49. package/dist/nse/api/historical-api.js +126 -0
  50. package/dist/nse/api/historical-api.js.map +1 -0
  51. package/dist/nse/api/index.d.ts +11 -0
  52. package/dist/nse/api/index.d.ts.map +1 -0
  53. package/dist/nse/api/index.js +11 -0
  54. package/dist/nse/api/index.js.map +1 -0
  55. package/dist/nse/api/ipo-api.d.ts +26 -0
  56. package/dist/nse/api/ipo-api.d.ts.map +1 -0
  57. package/dist/nse/api/ipo-api.js +46 -0
  58. package/dist/nse/api/ipo-api.js.map +1 -0
  59. package/dist/nse/api/market-api.d.ts +34 -0
  60. package/dist/nse/api/market-api.d.ts.map +1 -0
  61. package/dist/nse/api/market-api.js +58 -0
  62. package/dist/nse/api/market-api.js.map +1 -0
  63. package/dist/nse/api/options-api.d.ts +35 -0
  64. package/dist/nse/api/options-api.d.ts.map +1 -0
  65. package/dist/nse/api/options-api.js +207 -0
  66. package/dist/nse/api/options-api.js.map +1 -0
  67. package/dist/nse/constants/index.d.ts +29 -0
  68. package/dist/nse/constants/index.d.ts.map +1 -0
  69. package/dist/nse/constants/index.js +43 -0
  70. package/dist/nse/constants/index.js.map +1 -0
  71. package/dist/nse/http/http-client.d.ts +38 -0
  72. package/dist/nse/http/http-client.d.ts.map +1 -0
  73. package/dist/nse/http/http-client.js +164 -0
  74. package/dist/nse/http/http-client.js.map +1 -0
  75. package/dist/nse/index.d.ts +19 -0
  76. package/dist/nse/index.d.ts.map +1 -0
  77. package/dist/nse/index.js +24 -0
  78. package/dist/nse/index.js.map +1 -0
  79. package/dist/nse/nse/nse-client.d.ts +85 -0
  80. package/dist/nse/nse/nse-client.d.ts.map +1 -0
  81. package/dist/nse/nse/nse-client.js +105 -0
  82. package/dist/nse/nse/nse-client.js.map +1 -0
  83. package/dist/nse/types/index.d.ts +123 -0
  84. package/dist/nse/types/index.d.ts.map +1 -0
  85. package/dist/nse/types/index.js +5 -0
  86. package/dist/nse/types/index.js.map +1 -0
  87. package/dist/nse/utils/date-formatter.d.ts +36 -0
  88. package/dist/nse/utils/date-formatter.d.ts.map +1 -0
  89. package/dist/nse/utils/date-formatter.js +70 -0
  90. package/dist/nse/utils/date-formatter.js.map +1 -0
  91. package/dist/nse/utils/file-operations.d.ts +16 -0
  92. package/dist/nse/utils/file-operations.d.ts.map +1 -0
  93. package/dist/nse/utils/file-operations.js +74 -0
  94. package/dist/nse/utils/file-operations.js.map +1 -0
  95. package/dist/nse/utils/index.d.ts +6 -0
  96. package/dist/nse/utils/index.d.ts.map +1 -0
  97. package/dist/nse/utils/index.js +6 -0
  98. package/dist/nse/utils/index.js.map +1 -0
  99. package/dist/types/index.d.ts +17 -0
  100. package/dist/types/index.d.ts.map +1 -0
  101. package/dist/types/index.js +11 -0
  102. package/dist/types/index.js.map +1 -0
  103. package/dist-cjs/bse/BSE.js +493 -0
  104. package/dist-cjs/bse/BSE.js.map +1 -0
  105. package/dist-cjs/bse/constants/index.js +352 -0
  106. package/dist-cjs/bse/constants/index.js.map +1 -0
  107. package/dist-cjs/bse/index.js +36 -0
  108. package/dist-cjs/bse/index.js.map +1 -0
  109. package/dist-cjs/bse/types/index.js +26 -0
  110. package/dist-cjs/bse/types/index.js.map +1 -0
  111. package/dist-cjs/bse/utils/SymbolParser.js +62 -0
  112. package/dist-cjs/bse/utils/SymbolParser.js.map +1 -0
  113. package/dist-cjs/bse/utils/helpers.js +117 -0
  114. package/dist-cjs/bse/utils/helpers.js.map +1 -0
  115. package/dist-cjs/bse/utils/throttle.js +42 -0
  116. package/dist-cjs/bse/utils/throttle.js.map +1 -0
  117. package/dist-cjs/index.js +54 -0
  118. package/dist-cjs/index.js.map +1 -0
  119. package/dist-cjs/nse/api/corporate-api.js +94 -0
  120. package/dist-cjs/nse/api/corporate-api.js.map +1 -0
  121. package/dist-cjs/nse/api/download-api.js +151 -0
  122. package/dist-cjs/nse/api/download-api.js.map +1 -0
  123. package/dist-cjs/nse/api/equity-api.js +107 -0
  124. package/dist-cjs/nse/api/equity-api.js.map +1 -0
  125. package/dist-cjs/nse/api/historical-api.js +130 -0
  126. package/dist-cjs/nse/api/historical-api.js.map +1 -0
  127. package/dist-cjs/nse/api/index.js +21 -0
  128. package/dist-cjs/nse/api/index.js.map +1 -0
  129. package/dist-cjs/nse/api/ipo-api.js +50 -0
  130. package/dist-cjs/nse/api/ipo-api.js.map +1 -0
  131. package/dist-cjs/nse/api/market-api.js +62 -0
  132. package/dist-cjs/nse/api/market-api.js.map +1 -0
  133. package/dist-cjs/nse/api/options-api.js +211 -0
  134. package/dist-cjs/nse/api/options-api.js.map +1 -0
  135. package/dist-cjs/nse/constants/index.js +46 -0
  136. package/dist-cjs/nse/constants/index.js.map +1 -0
  137. package/dist-cjs/nse/http/http-client.js +171 -0
  138. package/dist-cjs/nse/http/http-client.js.map +1 -0
  139. package/dist-cjs/nse/index.js +50 -0
  140. package/dist-cjs/nse/index.js.map +1 -0
  141. package/dist-cjs/nse/nse/nse-client.js +109 -0
  142. package/dist-cjs/nse/nse/nse-client.js.map +1 -0
  143. package/dist-cjs/nse/types/index.js +6 -0
  144. package/dist-cjs/nse/types/index.js.map +1 -0
  145. package/dist-cjs/nse/utils/date-formatter.js +80 -0
  146. package/dist-cjs/nse/utils/date-formatter.js.map +1 -0
  147. package/dist-cjs/nse/utils/file-operations.js +82 -0
  148. package/dist-cjs/nse/utils/file-operations.js.map +1 -0
  149. package/dist-cjs/nse/utils/index.js +22 -0
  150. package/dist-cjs/nse/utils/index.js.map +1 -0
  151. package/dist-cjs/package.json +3 -0
  152. package/dist-cjs/types/index.js +47 -0
  153. package/dist-cjs/types/index.js.map +1 -0
  154. 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,4 @@
1
+ export declare class Throttle {
2
+ static check(type?: 'lookup' | 'default'): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=throttle.d.ts.map
@@ -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"}
@@ -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":"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"}
@@ -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"}