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,103 @@
1
+ /**
2
+ * Equity-related API methods for NSE
3
+ */
4
+ import { BASE_URL } from "../constants/index.js";
5
+ export class EquityApi {
6
+ httpClient;
7
+ constructor(httpClient) {
8
+ this.httpClient = httpClient;
9
+ }
10
+ /**
11
+ * Get equity metadata information
12
+ */
13
+ async getEquityMetaInfo(symbol) {
14
+ return await this.httpClient.request(`${BASE_URL}/equity-meta-info`, {
15
+ symbol: symbol.toUpperCase()
16
+ });
17
+ }
18
+ /**
19
+ * Get quote for equity or derivative
20
+ */
21
+ async getQuote(params) {
22
+ const type = params.type ?? "equity";
23
+ const url = type === "equity"
24
+ ? `${BASE_URL}/quote-equity`
25
+ : `${BASE_URL}/quote-derivative`;
26
+ const query = { symbol: params.symbol.toUpperCase() };
27
+ if (params.section) {
28
+ if (params.section !== "trade_info") {
29
+ throw new Error("'Section' if specified must be 'trade_info'");
30
+ }
31
+ query.section = params.section;
32
+ }
33
+ return await this.httpClient.request(url, query);
34
+ }
35
+ /**
36
+ * Get simplified equity quote with OHLC data
37
+ */
38
+ async getEquityQuote(symbol) {
39
+ const q = await this.getQuote({ symbol, type: "equity" });
40
+ const v = await this.getQuote({ symbol, type: "equity", section: "trade_info" });
41
+ const open = q.priceInfo?.open;
42
+ const minmax = q.priceInfo?.intraDayHighLow;
43
+ const close = q.priceInfo?.close;
44
+ const ltp = q.priceInfo?.lastPrice;
45
+ return {
46
+ date: q.metadata?.lastUpdateTime,
47
+ open,
48
+ high: minmax?.max,
49
+ low: minmax?.min,
50
+ close: close ?? ltp,
51
+ volume: v.securityWiseDP?.quantityTraded,
52
+ };
53
+ }
54
+ /**
55
+ * Filter gainers from market data
56
+ */
57
+ getGainers(data, count) {
58
+ const filtered = data.data
59
+ .filter((d) => d.pChange > 0)
60
+ .sort((a, b) => b.pChange - a.pChange);
61
+ return typeof count === "number" ? filtered.slice(0, count) : filtered;
62
+ }
63
+ /**
64
+ * Filter losers from market data
65
+ */
66
+ getLosers(data, count) {
67
+ const filtered = data.data
68
+ .filter((d) => d.pChange < 0)
69
+ .sort((a, b) => a.pChange - b.pChange);
70
+ return typeof count === "number" ? filtered.slice(0, count) : filtered;
71
+ }
72
+ /**
73
+ * List equity stocks by index
74
+ */
75
+ async listEquityStocksByIndex(index = "NIFTY 50") {
76
+ return await this.httpClient.request(`${BASE_URL}/equity-stockIndices`, { index });
77
+ }
78
+ /**
79
+ * List all indices
80
+ */
81
+ async listIndices() {
82
+ return await this.httpClient.request(`${BASE_URL}/allIndices`);
83
+ }
84
+ /**
85
+ * List ETFs
86
+ */
87
+ async listEtf() {
88
+ return await this.httpClient.request(`${BASE_URL}/etf`);
89
+ }
90
+ /**
91
+ * List SME stocks
92
+ */
93
+ async listSme() {
94
+ return await this.httpClient.request(`${BASE_URL}/live-analysis-emerge`);
95
+ }
96
+ /**
97
+ * List Sovereign Gold Bonds
98
+ */
99
+ async listSgb() {
100
+ return await this.httpClient.request(`${BASE_URL}/sovereign-gold-bonds`);
101
+ }
102
+ }
103
+ //# 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":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Historical data API methods for NSE
3
+ */
4
+ import { HttpClient } from "../http/http-client.js";
5
+ import { EquityHistoricalParams, VixHistoricalParams, FnoHistoricalParams, IndexHistoricalParams, IndexHistoricalData, FnoUnderlyingData } from "../types/index.js";
6
+ export declare class HistoricalApi {
7
+ private httpClient;
8
+ constructor(httpClient: HttpClient);
9
+ /**
10
+ * Fetch equity historical data
11
+ */
12
+ fetchEquityHistoricalData(params: EquityHistoricalParams): Promise<Record<string, any>[]>;
13
+ /**
14
+ * Fetch VIX historical data
15
+ */
16
+ fetchHistoricalVixData(params?: VixHistoricalParams): Promise<Record<string, any>[]>;
17
+ /**
18
+ * Fetch F&O historical data
19
+ */
20
+ fetchHistoricalFnoData(params: FnoHistoricalParams): Promise<Record<string, any>[]>;
21
+ /**
22
+ * Fetch index historical data
23
+ */
24
+ fetchHistoricalIndexData(params: IndexHistoricalParams): Promise<IndexHistoricalData>;
25
+ /**
26
+ * Fetch F&O underlying information
27
+ */
28
+ fetchFnoUnderlying(): Promise<FnoUnderlyingData>;
29
+ /**
30
+ * Fetch index names
31
+ */
32
+ fetchIndexNames(): Promise<Record<string, Array<[string, string]>>>;
33
+ }
34
+ //# sourceMappingURL=historical-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"historical-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/historical-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAQ3B,qBAAa,aAAa;IACZ,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IA+B/F;;OAEG;IACG,sBAAsB,CAAC,MAAM,GAAE,mBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IAmB9F;;OAEG;IACG,sBAAsB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;IA+CzF;;OAEG;IACG,wBAAwB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwB3F;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKtD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAG1E"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Historical data API methods for NSE
3
+ */
4
+ import { BASE_URL } from "../constants/index.js";
5
+ import { formatDateDMY, formatDateExpiry, validateDateRange, splitDateRange } from "../utils/date-formatter.js";
6
+ export class HistoricalApi {
7
+ httpClient;
8
+ constructor(httpClient) {
9
+ this.httpClient = httpClient;
10
+ }
11
+ /**
12
+ * Fetch equity historical data
13
+ */
14
+ async fetchEquityHistoricalData(params) {
15
+ const { symbol, from_date, to_date, series = ["EQ"] } = params;
16
+ // Simple case - no date range and EQ series only
17
+ if (!from_date && !to_date && JSON.stringify(series) === JSON.stringify(["EQ"])) {
18
+ const data = await this.httpClient.request(`${BASE_URL}/historical/cm/equity`, { symbol });
19
+ return data.data.slice().reverse();
20
+ }
21
+ const to = to_date ?? new Date();
22
+ const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
23
+ validateDateRange(from, to);
24
+ const chunks = splitDateRange(from, to, 100);
25
+ const results = [];
26
+ for (const [cFrom, cTo] of chunks) {
27
+ const data = await this.httpClient.request(`${BASE_URL}/historical/cm/equity`, {
28
+ symbol,
29
+ series: JSON.stringify(series),
30
+ from: formatDateDMY(cFrom),
31
+ to: formatDateDMY(cTo),
32
+ });
33
+ const arr = data.data.slice().reverse();
34
+ results.push(...arr);
35
+ }
36
+ return results;
37
+ }
38
+ /**
39
+ * Fetch VIX historical data
40
+ */
41
+ async fetchHistoricalVixData(params = {}) {
42
+ const to = params.to_date ?? new Date();
43
+ const from = params.from_date ?? new Date(to.getTime() - 30 * 86400000);
44
+ validateDateRange(from, to);
45
+ const chunks = splitDateRange(from, to, 365);
46
+ const data = [];
47
+ for (const [cFrom, cTo] of chunks) {
48
+ const result = await this.httpClient.request(`${BASE_URL}/historical/vixhistory`, {
49
+ from: formatDateDMY(cFrom),
50
+ to: formatDateDMY(cTo),
51
+ });
52
+ data.push(...result.data);
53
+ }
54
+ return data;
55
+ }
56
+ /**
57
+ * Fetch F&O historical data
58
+ */
59
+ async fetchHistoricalFnoData(params) {
60
+ const { symbol, instrument = "FUTIDX", from_date, to_date, expiry, option_type, strike_price } = params;
61
+ const instrumentType = instrument.toUpperCase();
62
+ const to = to_date ?? new Date();
63
+ const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
64
+ validateDateRange(from, to);
65
+ const query = {
66
+ instrumentType,
67
+ symbol: symbol.toUpperCase(),
68
+ };
69
+ if (expiry) {
70
+ query.expiryDate = formatDateExpiry(expiry);
71
+ query.year = expiry.getFullYear();
72
+ }
73
+ if (instrumentType === "OPTIDX" || instrumentType === "OPTSTK") {
74
+ if (!option_type) {
75
+ throw new Error("`option_type` param is required for Stock or Index options.");
76
+ }
77
+ query.optionType = option_type;
78
+ if (strike_price != null)
79
+ query.strikePrice = strike_price;
80
+ }
81
+ const chunks = splitDateRange(from, to, 365);
82
+ const data = [];
83
+ for (const [cFrom, cTo] of chunks) {
84
+ query.from = formatDateDMY(cFrom);
85
+ query.to = formatDateDMY(cTo);
86
+ const result = await this.httpClient.request(`${BASE_URL}/historical/foCPV`, query);
87
+ data.push(...result.data);
88
+ }
89
+ return data;
90
+ }
91
+ /**
92
+ * Fetch index historical data
93
+ */
94
+ async fetchHistoricalIndexData(params) {
95
+ const { index, from_date, to_date } = params;
96
+ const to = to_date ?? new Date();
97
+ const from = from_date ?? new Date(to.getTime() - 30 * 86400000);
98
+ validateDateRange(from, to);
99
+ const chunks = splitDateRange(from, to, 365);
100
+ const result = { price: [], turnover: [] };
101
+ for (const [cFrom, cTo] of chunks) {
102
+ const data = await this.httpClient.request(`${BASE_URL}/historical/indicesHistory`, {
103
+ indexType: index.toUpperCase(),
104
+ from: formatDateDMY(cFrom),
105
+ to: formatDateDMY(cTo),
106
+ });
107
+ result.price.push(...data.data.indexCloseOnlineRecords);
108
+ result.turnover.push(...data.data.indexTurnoverRecords);
109
+ }
110
+ return result;
111
+ }
112
+ /**
113
+ * Fetch F&O underlying information
114
+ */
115
+ async fetchFnoUnderlying() {
116
+ const data = await this.httpClient.request(`${BASE_URL}/underlying-information`);
117
+ return data.data;
118
+ }
119
+ /**
120
+ * Fetch index names
121
+ */
122
+ async fetchIndexNames() {
123
+ return await this.httpClient.request(`${BASE_URL}/index-names`);
124
+ }
125
+ }
126
+ //# 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,11 @@
1
+ /**
2
+ * API modules for NSE client
3
+ */
4
+ export { EquityApi } from "./equity-api.js";
5
+ export { OptionsApi } from "./options-api.js";
6
+ export { HistoricalApi } from "./historical-api.js";
7
+ export { CorporateApi } from "./corporate-api.js";
8
+ export { IpoApi } from "./ipo-api.js";
9
+ export { MarketApi } from "./market-api.js";
10
+ export { DownloadApi } from "./download-api.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/nse/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * API modules for NSE client
3
+ */
4
+ export { EquityApi } from "./equity-api.js";
5
+ export { OptionsApi } from "./options-api.js";
6
+ export { HistoricalApi } from "./historical-api.js";
7
+ export { CorporateApi } from "./corporate-api.js";
8
+ export { IpoApi } from "./ipo-api.js";
9
+ export { MarketApi } from "./market-api.js";
10
+ export { DownloadApi } from "./download-api.js";
11
+ //# 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,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * IPO-related API methods for NSE
3
+ */
4
+ import { HttpClient } from "../http/http-client.js";
5
+ import { IpoDetailsParams } from "../types/index.js";
6
+ export declare class IpoApi {
7
+ private httpClient;
8
+ constructor(httpClient: HttpClient);
9
+ /**
10
+ * List current IPOs
11
+ */
12
+ listCurrentIPO(): Promise<any>;
13
+ /**
14
+ * List upcoming IPOs
15
+ */
16
+ listUpcomingIPO(): Promise<any>;
17
+ /**
18
+ * Get IPO details
19
+ */
20
+ getIpoDetails(params: IpoDetailsParams): Promise<any>;
21
+ /**
22
+ * List past IPOs
23
+ */
24
+ listPastIPO(from_date?: Date, to_date?: Date): Promise<any>;
25
+ }
26
+ //# sourceMappingURL=ipo-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipo-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/ipo-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,MAAM;IACL,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAIpC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAIrC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC;IAO3D;;OAEG;IACG,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;CAalE"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * IPO-related API methods for NSE
3
+ */
4
+ import { BASE_URL } from "../constants/index.js";
5
+ import { formatDateDMY } from "../utils/date-formatter.js";
6
+ export class IpoApi {
7
+ httpClient;
8
+ constructor(httpClient) {
9
+ this.httpClient = httpClient;
10
+ }
11
+ /**
12
+ * List current IPOs
13
+ */
14
+ async listCurrentIPO() {
15
+ return await this.httpClient.request(`${BASE_URL}/ipo-current-issue`);
16
+ }
17
+ /**
18
+ * List upcoming IPOs
19
+ */
20
+ async listUpcomingIPO() {
21
+ return await this.httpClient.request(`${BASE_URL}/all-upcoming-issues?category=ipo`);
22
+ }
23
+ /**
24
+ * Get IPO details
25
+ */
26
+ async getIpoDetails(params) {
27
+ const symbol = params.symbol.toUpperCase();
28
+ const series = params.series ?? "EQ";
29
+ return await this.httpClient.request(`${BASE_URL}/ipo-detail`, { symbol, series });
30
+ }
31
+ /**
32
+ * List past IPOs
33
+ */
34
+ async listPastIPO(from_date, to_date) {
35
+ const to = to_date ?? new Date();
36
+ const from = from_date ?? new Date(to.getTime() - 90 * 86400000);
37
+ if (to < from) {
38
+ throw new Error("Argument `to_date` cannot be less than `from_date`");
39
+ }
40
+ return await this.httpClient.request(`${BASE_URL}/public-past-issues`, {
41
+ from_date: formatDateDMY(from),
42
+ to_date: formatDateDMY(to),
43
+ });
44
+ }
45
+ }
46
+ //# sourceMappingURL=ipo-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipo-api.js","sourceRoot":"","sources":["../../../src/nse/api/ipo-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAE9E,MAAM,OAAO,MAAM;IACG;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,oBAAoB,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,mCAAmC,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAAwB;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;QAErC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,SAAgB,EAAE,OAAc;QAChD,MAAM,EAAE,GAAG,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,SAAS,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;QAEjE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,qBAAqB,EAAE;YACrE,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC;YAC9B,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Market data and trading API methods for NSE
3
+ */
4
+ import { HttpClient } from "../http/http-client.js";
5
+ import { HolidayType, DailyReportSegment } from "../types/index.js";
6
+ export declare class MarketApi {
7
+ private httpClient;
8
+ constructor(httpClient: HttpClient);
9
+ /**
10
+ * Get market status
11
+ */
12
+ getStatus(): Promise<any[]>;
13
+ /**
14
+ * Search/lookup symbols
15
+ */
16
+ lookup(query: string): Promise<Record<string, any>>;
17
+ /**
18
+ * Get block deals
19
+ */
20
+ getBlockDeals(): Promise<any>;
21
+ /**
22
+ * Get bulk deals for date range
23
+ */
24
+ getBulkDeals(fromDate: Date, toDate: Date): Promise<any[]>;
25
+ /**
26
+ * Get holidays
27
+ */
28
+ getHolidays(type?: HolidayType): Promise<any>;
29
+ /**
30
+ * Get daily reports file metadata
31
+ */
32
+ getDailyReportsFileMetadata(segment?: DailyReportSegment): Promise<any>;
33
+ }
34
+ //# sourceMappingURL=market-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/market-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGpE,qBAAa,SAAS;IACR,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKjC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAIzD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAInC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAgBhE;;OAEG;IACG,WAAW,CAAC,IAAI,GAAE,WAAuB,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9D;;OAEG;IACG,2BAA2B,CAAC,OAAO,GAAE,kBAAyB,GAAG,OAAO,CAAC,GAAG,CAAC;CAGpF"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Market data and trading API methods for NSE
3
+ */
4
+ import { BASE_URL } from "../constants/index.js";
5
+ import { formatDateDMY } from "../utils/date-formatter.js";
6
+ export class MarketApi {
7
+ httpClient;
8
+ constructor(httpClient) {
9
+ this.httpClient = httpClient;
10
+ }
11
+ /**
12
+ * Get market status
13
+ */
14
+ async getStatus() {
15
+ const result = await this.httpClient.request(`${BASE_URL}/marketStatus`);
16
+ return result.marketState;
17
+ }
18
+ /**
19
+ * Search/lookup symbols
20
+ */
21
+ async lookup(query) {
22
+ return await this.httpClient.request(`${BASE_URL}/search/autocomplete`, { q: query });
23
+ }
24
+ /**
25
+ * Get block deals
26
+ */
27
+ async getBlockDeals() {
28
+ return await this.httpClient.request(`${BASE_URL}/block-deal`);
29
+ }
30
+ /**
31
+ * Get bulk deals for date range
32
+ */
33
+ async getBulkDeals(fromDate, toDate) {
34
+ const daysDiff = (toDate.getTime() - fromDate.getTime()) / 86400000;
35
+ if (daysDiff > 365) {
36
+ throw new Error("The date range cannot exceed one year.");
37
+ }
38
+ const url = `${BASE_URL}/historical/bulk-deals?from=${formatDateDMY(fromDate)}&to=${formatDateDMY(toDate)}`;
39
+ const data = await this.httpClient.request(url);
40
+ if (!data.data || data.data.length < 1) {
41
+ throw new Error("No bulk deals data available for the specified date range.");
42
+ }
43
+ return data.data;
44
+ }
45
+ /**
46
+ * Get holidays
47
+ */
48
+ async getHolidays(type = "trading") {
49
+ return await this.httpClient.request(`${BASE_URL}/holiday-master`, { type });
50
+ }
51
+ /**
52
+ * Get daily reports file metadata
53
+ */
54
+ async getDailyReportsFileMetadata(segment = "CM") {
55
+ return await this.httpClient.request(`${BASE_URL}/daily-reports`, { key: segment });
56
+ }
57
+ }
58
+ //# sourceMappingURL=market-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market-api.js","sourceRoot":"","sources":["../../../src/nse/api/market-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAqB,MAAM,4BAA4B,CAAC;AAE9E,MAAM,OAAO,SAAS;IACA;IAApB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE9C;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,eAAe,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,sBAAsB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QACjB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,aAAa,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAc,EAAE,MAAY;QAC7C,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC;QACpE,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,QAAQ,+BAA+B,aAAa,CAAC,QAAQ,CAAC,OAAO,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAAoB,SAAS;QAC7C,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,iBAAiB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,CAAC,UAA8B,IAAI;QAClE,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,gBAAgB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Options and derivatives API methods for NSE
3
+ */
4
+ import { HttpClient } from "../http/http-client.js";
5
+ import { OptionChainData, CompiledOptionChain, FnoIndex } from "../types/index.js";
6
+ export declare class OptionsApi {
7
+ private httpClient;
8
+ constructor(httpClient: HttpClient);
9
+ /**
10
+ * Get F&O lot sizes
11
+ */
12
+ getFnoLots(): Promise<Record<string, number>>;
13
+ /**
14
+ * Get option chain data
15
+ */
16
+ getOptionChain(symbol: string): Promise<any>;
17
+ /**
18
+ * Get filtered option chain data with only essential information for LLM processing
19
+ * Reduces data volume by ~90% while retaining key metrics
20
+ */
21
+ getFilteredOptionChain(symbol: string, strikeRange?: number): Promise<any>;
22
+ /**
23
+ * Calculate max pain for option chain
24
+ */
25
+ static calculateMaxPain(optionChain: OptionChainData, expiryDate: Date): number;
26
+ /**
27
+ * Get futures expiry dates
28
+ */
29
+ getFuturesExpiry(index?: FnoIndex): Promise<string[]>;
30
+ /**
31
+ * Compile option chain with calculated metrics
32
+ */
33
+ compileOptionChain(symbol: string, expiryDate: Date): Promise<CompiledOptionChain>;
34
+ }
35
+ //# sourceMappingURL=options-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-api.d.ts","sourceRoot":"","sources":["../../../src/nse/api/options-api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGnF,qBAAa,UAAU;IACT,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAiCnD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IASlD;;;OAGG;IACG,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAmDpF;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,GAAG,MAAM;IAyB/E;;OAEG;IACG,gBAAgB,CAAC,KAAK,GAAE,QAAkB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBpE;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAyEzF"}