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,493 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.BSE = void 0;
40
+ const axios_1 = __importDefault(require("axios"));
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const index_js_1 = require("./types/index.js");
44
+ const SymbolParser_js_1 = require("./utils/SymbolParser.js");
45
+ const throttle_js_1 = require("./utils/throttle.js");
46
+ const helpers_js_1 = require("./utils/helpers.js");
47
+ /**
48
+ * Unofficial TypeScript API for BSE India
49
+ */
50
+ class BSE {
51
+ static version = '1.0.0';
52
+ static baseUrl = 'https://www.bseindia.com/';
53
+ static apiUrl = 'https://api.bseindia.com/BseIndiaAPI/api';
54
+ static validGroups = [
55
+ 'A', 'B', 'E', 'F', 'FC', 'GC', 'I', 'IF', 'IP', 'M', 'MS', 'MT',
56
+ 'P', 'R', 'T', 'TS', 'W', 'X', 'XD', 'XT', 'Y', 'Z', 'ZP', 'ZY'
57
+ ];
58
+ session;
59
+ dir;
60
+ symbolParser;
61
+ constructor(config = {}) {
62
+ this.dir = (0, helpers_js_1.getPath)(config.downloadFolder || './downloads', true);
63
+ this.symbolParser = new SymbolParser_js_1.SymbolParser();
64
+ const userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:138.0) Gecko/20100101 Firefox/138.0';
65
+ this.session = axios_1.default.create({
66
+ timeout: config.timeout || 10000,
67
+ headers: {
68
+ 'User-Agent': userAgent,
69
+ 'Accept': 'application/json, text/plain, */*',
70
+ 'Accept-Language': 'en-US,en;q=0.5',
71
+ 'Origin': BSE.baseUrl,
72
+ 'Referer': BSE.baseUrl,
73
+ 'Connection': 'keep-alive',
74
+ },
75
+ });
76
+ }
77
+ /**
78
+ * Close the HTTP session
79
+ */
80
+ close() {
81
+ // Axios doesn't need explicit closing like Python requests
82
+ }
83
+ async download(url, folder, params, filename) {
84
+ const fname = filename || url.split('/').pop() || 'download';
85
+ const filePath = path.join(folder, fname);
86
+ await throttle_js_1.Throttle.check();
87
+ try {
88
+ const response = await this.session.get(url, {
89
+ params,
90
+ responseType: 'stream',
91
+ timeout: 30000, // 30 seconds for downloads
92
+ });
93
+ if (response.status === 404) {
94
+ throw new index_js_1.BSEError('Report is unavailable or not yet updated.');
95
+ }
96
+ const writer = fs.createWriteStream(filePath);
97
+ response.data.pipe(writer);
98
+ return new Promise((resolve, reject) => {
99
+ writer.on('finish', () => resolve(filePath));
100
+ writer.on('error', reject);
101
+ });
102
+ }
103
+ catch (error) {
104
+ if (error.code === 'ECONNABORTED') {
105
+ throw new index_js_1.TimeoutError('Request timed out');
106
+ }
107
+ throw error;
108
+ }
109
+ }
110
+ async request(url, params, timeout = 10000) {
111
+ try {
112
+ const response = await this.session.get(url, {
113
+ params,
114
+ timeout,
115
+ });
116
+ return response;
117
+ }
118
+ catch (error) {
119
+ if (error.code === 'ECONNABORTED') {
120
+ throw new index_js_1.TimeoutError('Request timed out');
121
+ }
122
+ if (error.response) {
123
+ throw new index_js_1.ConnectionError(`${error.response.status}: ${error.response.statusText}`);
124
+ }
125
+ throw error;
126
+ }
127
+ }
128
+ async lookup(scrip) {
129
+ const url = `${BSE.apiUrl}/PeerSmartSearch/w`;
130
+ const params = { Type: 'SS', text: scrip };
131
+ await throttle_js_1.Throttle.check('lookup');
132
+ const response = await this.request(url, params);
133
+ return response.data.replace(/&nbsp;/g, ' ');
134
+ }
135
+ /**
136
+ * Download the daily bhavcopy report for specified date
137
+ */
138
+ async bhavcopyReport(date, folder) {
139
+ const targetFolder = folder ? (0, helpers_js_1.getPath)(folder, true) : this.dir;
140
+ const dateStr = (0, helpers_js_1.formatDate)(date);
141
+ const url = `${BSE.baseUrl}/download/BhavCopy/Equity/BhavCopy_BSE_CM_0_0_0_${dateStr}_F_0000.CSV`;
142
+ const filePath = await this.download(url, targetFolder);
143
+ if (!fs.existsSync(filePath)) {
144
+ throw new index_js_1.BSEError(`Failed to download file: ${path.basename(filePath)}`);
145
+ }
146
+ return filePath;
147
+ }
148
+ /**
149
+ * Download the daily delivery report for specified date
150
+ */
151
+ async deliveryReport(date, folder) {
152
+ const targetFolder = folder ? (0, helpers_js_1.getPath)(folder, true) : this.dir;
153
+ const day = String(date.getDate()).padStart(2, '0');
154
+ const month = String(date.getMonth() + 1).padStart(2, '0');
155
+ const year = date.getFullYear();
156
+ const url = `${BSE.baseUrl}/BSEDATA/gross/${year}/SCBSEALL${day}${month}.zip`;
157
+ let filePath = await this.download(url, targetFolder);
158
+ if (!fs.existsSync(filePath)) {
159
+ throw new index_js_1.BSEError(`Failed to download file: ${path.basename(filePath)}`);
160
+ }
161
+ // Extract zip file
162
+ filePath = await (0, helpers_js_1.unzipFile)(filePath, targetFolder);
163
+ // Convert pipe-separated to CSV
164
+ const content = fs.readFileSync(filePath);
165
+ const csvContent = content.toString().replace(/\|/g, ',');
166
+ const csvPath = filePath.replace(path.extname(filePath), '.csv');
167
+ fs.writeFileSync(csvPath, csvContent);
168
+ if (filePath !== csvPath) {
169
+ fs.unlinkSync(filePath);
170
+ }
171
+ return csvPath;
172
+ }
173
+ /**
174
+ * All corporate announcements
175
+ */
176
+ async announcements(options = {}) {
177
+ const { pageNo = 1, fromDate = new Date(), toDate = new Date(), segment = 'equity', scripcode, category = '-1', subcategory = '-1' } = options;
178
+ const segmentType = segment === 'equity' ? 'C' : (segment === 'debt' ? 'D' : 'M');
179
+ if (fromDate > toDate) {
180
+ throw new index_js_1.BSEError("'fromDate' cannot be greater than 'toDate'");
181
+ }
182
+ if (subcategory !== '-1' && category === '-1') {
183
+ throw new index_js_1.BSEError(`Specify a 'category' for subcategory: ${subcategory}`);
184
+ }
185
+ const url = `${BSE.apiUrl}/AnnSubCategoryGetData/w`;
186
+ const params = {
187
+ pageno: pageNo,
188
+ strCat: category,
189
+ subcategory: subcategory,
190
+ strPrevDate: (0, helpers_js_1.formatDate)(fromDate),
191
+ strToDate: (0, helpers_js_1.formatDate)(toDate),
192
+ strSearch: 'P',
193
+ strscrip: scripcode,
194
+ strType: segmentType,
195
+ };
196
+ await throttle_js_1.Throttle.check();
197
+ const response = await this.request(url, params);
198
+ return response.data;
199
+ }
200
+ /**
201
+ * All forthcoming corporate actions
202
+ */
203
+ async actions(options = {}) {
204
+ const { segment = 'equity', fromDate, toDate, byDate = 'ex', scripcode, sector = '', purposeCode } = options;
205
+ const segmentType = segment === 'equity' ? '0' : (segment === 'debt' ? '1' : '2');
206
+ const byType = byDate === 'ex' ? 'E' : (byDate === 'record' ? 'R' : 'B');
207
+ const params = {
208
+ ddlcategorys: byType,
209
+ ddlindustrys: sector,
210
+ segment: segmentType,
211
+ strSearch: 'D',
212
+ };
213
+ if (fromDate && toDate) {
214
+ if (fromDate > toDate) {
215
+ throw new index_js_1.BSEError("'fromDate' cannot be greater than 'toDate'");
216
+ }
217
+ params.Fdate = (0, helpers_js_1.formatDate)(fromDate);
218
+ params.TDate = (0, helpers_js_1.formatDate)(toDate);
219
+ }
220
+ if (purposeCode) {
221
+ params.Purposecode = purposeCode;
222
+ }
223
+ if (scripcode) {
224
+ params.scripcode = scripcode;
225
+ }
226
+ const response = await this.request(`${BSE.apiUrl}/DefaultData/w`, params);
227
+ return response.data;
228
+ }
229
+ /**
230
+ * Corporate result calendar
231
+ */
232
+ async resultCalendar(options = {}) {
233
+ const { fromDate, toDate, scripcode } = options;
234
+ const params = {};
235
+ if (fromDate && toDate) {
236
+ if (fromDate > toDate) {
237
+ throw new index_js_1.BSEError("'fromDate' cannot be greater than 'toDate'");
238
+ }
239
+ params.fromdate = (0, helpers_js_1.formatDate)(fromDate);
240
+ params.todate = (0, helpers_js_1.formatDate)(toDate);
241
+ }
242
+ if (scripcode) {
243
+ params.scripcode = scripcode;
244
+ }
245
+ const url = `${BSE.apiUrl}/Corpforthresults/w`;
246
+ const response = await this.request(url, params);
247
+ return response.data;
248
+ }
249
+ /**
250
+ * Advance decline values for all BSE indices
251
+ */
252
+ async advanceDecline() {
253
+ const url = `${BSE.apiUrl}/advanceDecline/w`;
254
+ await throttle_js_1.Throttle.check();
255
+ const response = await this.request(url, { val: 'Index' });
256
+ return response.data;
257
+ }
258
+ /**
259
+ * List of top gainers
260
+ */
261
+ async gainers(options = {}) {
262
+ const { by = 'group', name, pctChange = 'all' } = options;
263
+ const params = {
264
+ GLtype: 'gainer',
265
+ IndxGrp: by,
266
+ orderby: pctChange,
267
+ };
268
+ if (by === 'group') {
269
+ const groupName = name || 'A';
270
+ if (!BSE.validGroups.includes(groupName.toUpperCase())) {
271
+ throw new index_js_1.BSEError(`${groupName}: Not a valid BSE stock group`);
272
+ }
273
+ params.IndxGrpval = groupName.toUpperCase();
274
+ }
275
+ else if (by === 'index') {
276
+ params.IndxGrpval = (name || 'S&P BSE SENSEX').toUpperCase();
277
+ }
278
+ const url = `${BSE.apiUrl}/MktRGainerLoserData/w`;
279
+ const response = await this.request(url, params);
280
+ return response.data.Table;
281
+ }
282
+ /**
283
+ * List of top losers
284
+ */
285
+ async losers(options = {}) {
286
+ const { by = 'group', name, pctChange = 'all' } = options;
287
+ const params = {
288
+ GLtype: 'loser',
289
+ IndxGrp: by,
290
+ orderby: pctChange,
291
+ };
292
+ if (by === 'group') {
293
+ const groupName = name || 'A';
294
+ if (!BSE.validGroups.includes(groupName.toUpperCase())) {
295
+ throw new index_js_1.BSEError(`${groupName}: Not a valid BSE group`);
296
+ }
297
+ params.IndxGrpval = groupName.toUpperCase();
298
+ }
299
+ else if (by === 'index') {
300
+ params.IndxGrpval = (name || 'S&P BSE SENSEX').toUpperCase();
301
+ }
302
+ const url = `${BSE.apiUrl}/MktRGainerLoserData/w`;
303
+ const response = await this.request(url, params);
304
+ return response.data.Table;
305
+ }
306
+ /**
307
+ * Get stocks near 52 week highs and lows
308
+ */
309
+ async near52WeekHighLow(options = {}) {
310
+ const { by = 'group', name } = options;
311
+ const url = `${BSE.apiUrl}/MktHighLowData/w`;
312
+ const params = {
313
+ HLflag: 'H',
314
+ Grpcode: '',
315
+ indexcode: '',
316
+ scripcode: '',
317
+ };
318
+ if (by === 'group') {
319
+ const groupName = name || 'A';
320
+ if (!BSE.validGroups.includes(groupName.toUpperCase())) {
321
+ throw new index_js_1.BSEError(`${groupName}: Not a valid BSE stock group`);
322
+ }
323
+ params.Grpcode = groupName.toUpperCase();
324
+ }
325
+ else if (by === 'index') {
326
+ params.indexcode = name || 'S&P BSE SENSEX';
327
+ }
328
+ await throttle_js_1.Throttle.check();
329
+ const response = await this.request(url, params);
330
+ const data = response.data;
331
+ const result = {};
332
+ if (data.Table) {
333
+ result.highs = data.Table;
334
+ }
335
+ if (data.Table1) {
336
+ result.lows = data.Table1;
337
+ }
338
+ return result;
339
+ }
340
+ /**
341
+ * Get OHLC quotes for given scripcode
342
+ */
343
+ async quote(scripcode) {
344
+ const url = `${BSE.apiUrl}/getScripHeaderData/w`;
345
+ const params = {
346
+ scripcode: scripcode,
347
+ };
348
+ await throttle_js_1.Throttle.check();
349
+ const response = await this.request(url, params);
350
+ const header = response.data.Header;
351
+ const fields = ['PrevClose', 'Open', 'High', 'Low', 'LTP'];
352
+ const data = {};
353
+ for (const field of fields) {
354
+ data[field] = parseFloat(header[field]);
355
+ }
356
+ return data;
357
+ }
358
+ /**
359
+ * Get 52 week and monthly high & low data for given stock
360
+ */
361
+ async quoteWeeklyHL(scripcode) {
362
+ const params = { Type: 'EQ', flag: 'C', scripcode: scripcode };
363
+ await throttle_js_1.Throttle.check();
364
+ const response = await this.request(`${BSE.apiUrl}/HighLow/w`, params);
365
+ const data = response.data;
366
+ const [wHigh, wLow] = data.WeekHighLow.split(' / ');
367
+ const [mHigh, mLow] = data.MonthHighLow.split(' / ');
368
+ return {
369
+ fifty2WeekHigh: parseFloat(data.Fifty2WkHigh_adj),
370
+ dateHigh: data.Fifty2WkHigh_adjDt.replace(/[()]/g, '').trim(),
371
+ fifty2WeekLow: parseFloat(data.Fifty2WkLow_adj),
372
+ dateLow: data.Fifty2WkLow_adjDt.replace(/[()]/g, '').trim(),
373
+ monthlyHigh: parseFloat(mHigh),
374
+ monthlyLow: parseFloat(mLow),
375
+ weeklyHigh: parseFloat(wHigh),
376
+ weeklyLow: parseFloat(wLow),
377
+ };
378
+ }
379
+ /**
380
+ * List securities and their meta info
381
+ */
382
+ async listSecurities(options = {}) {
383
+ const { industry = '', scripcode = '', group = 'A', segment = 'Equity', status = 'Active' } = options;
384
+ const url = `${BSE.apiUrl}/ListofScripData/w`;
385
+ const params = {
386
+ scripcode,
387
+ Group: group,
388
+ industry,
389
+ segment,
390
+ status,
391
+ };
392
+ if (group && !BSE.validGroups.includes(group.toUpperCase())) {
393
+ throw new index_js_1.BSEError(`${group} not a valid BSE stock group`);
394
+ }
395
+ await throttle_js_1.Throttle.check();
396
+ const response = await this.request(url, params);
397
+ return response.data;
398
+ }
399
+ /**
400
+ * Search by Company name, stock symbol, ISIN or BSE code
401
+ */
402
+ async lookupSymbol(text) {
403
+ const response = await this.lookup(text);
404
+ this.symbolParser.feed(response);
405
+ const result = this.symbolParser.getResult();
406
+ this.symbolParser.resetData();
407
+ return result;
408
+ }
409
+ /**
410
+ * Get stock symbol name for BSE scrip code
411
+ */
412
+ async getScripName(scripcode) {
413
+ // <span>HDFC INE001A01036<strong>500010
414
+ const regex = new RegExp(`<\\w+>([A-Z0-9]+)\\s+\\w+\\s+<\\w+>${scripcode}`);
415
+ const response = await this.lookup(scripcode);
416
+ const match = response.match(regex);
417
+ if (match) {
418
+ return match[1];
419
+ }
420
+ throw new index_js_1.BSEError(`Could not find scrip name for ${scripcode}`);
421
+ }
422
+ /**
423
+ * Get BSE scrip code for stock symbol name
424
+ */
425
+ async getScripCode(scripname) {
426
+ // <strong>HDFC</strong> INE001A01036 500010
427
+ const regex = new RegExp(`<\\w+>${scripname.toUpperCase()}<\\/\\w+>\\s+\\w+\\s+(\\d{6})`);
428
+ const response = await this.lookup(scripname);
429
+ const match = response.match(regex);
430
+ if (match) {
431
+ return match[1];
432
+ }
433
+ throw new index_js_1.BSEError(`Could not find scrip code for ${scripname}`);
434
+ }
435
+ /**
436
+ * Fetch daily data for all indices for a given date
437
+ */
438
+ async fetchAllIndicesDataByDate(date) {
439
+ await throttle_js_1.Throttle.check();
440
+ const dateStr = (0, helpers_js_1.formatDateSlash)(date);
441
+ const response = await this.request(`${BSE.apiUrl}/IndexArchDailyAll/w`, {
442
+ fmdt: dateStr,
443
+ todt: dateStr,
444
+ index: 'All',
445
+ period: 'D',
446
+ });
447
+ return response.data;
448
+ }
449
+ /**
450
+ * Download historical data for the specified index for the given date range
451
+ */
452
+ async fetchHistoricalIndexData(options) {
453
+ const { index, fromDate, toDate, period = 'D', folder } = options;
454
+ if (toDate < fromDate) {
455
+ throw new index_js_1.BSEError('`toDate` must be greater than `fromDate`');
456
+ }
457
+ await throttle_js_1.Throttle.check();
458
+ const targetFolder = folder ? (0, helpers_js_1.getPath)(folder, true) : this.dir;
459
+ const fname = `${index}_${(0, helpers_js_1.formatDate)(fromDate)}_${(0, helpers_js_1.formatDate)(toDate)}.csv`;
460
+ const filePath = await this.download(`${BSE.apiUrl}/ProduceCSVForDate/w`, targetFolder, {
461
+ strIndex: index,
462
+ dtFromDate: (0, helpers_js_1.formatDateSlash)(fromDate),
463
+ dtToDate: (0, helpers_js_1.formatDateSlash)(toDate),
464
+ period: period,
465
+ }, fname);
466
+ if (fs.statSync(filePath).size > 0) {
467
+ return filePath;
468
+ }
469
+ else {
470
+ fs.unlinkSync(filePath);
471
+ return null;
472
+ }
473
+ }
474
+ /**
475
+ * Fetch the list of Indices
476
+ */
477
+ async fetchIndexNames() {
478
+ const url = `${BSE.apiUrl}/FillddlIndex/w?fmdt=&todt=`;
479
+ await throttle_js_1.Throttle.check();
480
+ const response = await this.request(url);
481
+ return response.data;
482
+ }
483
+ /**
484
+ * Returns metadata about AllIndices report
485
+ */
486
+ async fetchIndexReportMetadata() {
487
+ await throttle_js_1.Throttle.check();
488
+ const response = await this.request(`${BSE.apiUrl}/Indexarchive_filedownload/w`);
489
+ return response.data;
490
+ }
491
+ }
492
+ exports.BSE = BSE;
493
+ //# sourceMappingURL=BSE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BSE.js","sourceRoot":"","sources":["../../src/bse/BSE.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA4D;AAC5D,uCAAyB;AACzB,2CAA6B;AAC7B,+CAsB0B;AAC1B,6DAAuD;AACvD,qDAA+C;AAC/C,mDAAqF;AAErF;;GAEG;AACH,MAAa,GAAG;IACd,MAAM,CAAU,OAAO,GAAG,OAAO,CAAC;IAClC,MAAM,CAAU,OAAO,GAAG,2BAA2B,CAAC;IACtD,MAAM,CAAU,MAAM,GAAG,0CAA0C,CAAC;IAEpE,MAAM,CAAU,WAAW,GAAG;QAC5B,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;QAChE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI;KAChE,CAAC;IAEM,OAAO,CAAgB;IACvB,GAAG,CAAS;IACZ,YAAY,CAAe;IAEnC,YAAY,SAAoB,EAAE;QAChC,IAAI,CAAC,GAAG,GAAG,IAAA,oBAAO,EAAC,MAAM,CAAC,cAAc,IAAI,aAAa,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,IAAI,8BAAY,EAAE,CAAC;QAEvC,MAAM,SAAS,GAAG,kFAAkF,CAAC;QAErG,IAAI,CAAC,OAAO,GAAG,eAAK,CAAC,MAAM,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,OAAO,EAAE;gBACP,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,mCAAmC;gBAC7C,iBAAiB,EAAE,gBAAgB;gBACnC,QAAQ,EAAE,GAAG,CAAC,OAAO;gBACrB,SAAS,EAAE,GAAG,CAAC,OAAO;gBACtB,YAAY,EAAE,YAAY;aAC3B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK;QACH,2DAA2D;IAC7D,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,GAAW,EACX,MAAc,EACd,MAA4B,EAC5B,QAAiB;QAEjB,MAAM,KAAK,GAAG,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3C,MAAM;gBACN,YAAY,EAAE,QAAQ;gBACtB,OAAO,EAAE,KAAK,EAAE,2BAA2B;aAC5C,CAAC,CAAC;YAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,MAAM,IAAI,mBAAQ,CAAC,2CAA2C,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,MAAM,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC7C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,IAAI,uBAAY,CAAC,mBAAmB,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,GAAW,EACX,MAA4B,EAC5B,OAAO,GAAG,KAAK;QAEf,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAI,GAAG,EAAE;gBAC9C,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,IAAI,uBAAY,CAAC,mBAAmB,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,IAAI,0BAAe,CACvB,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CACzD,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAAa;QAChC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,oBAAoB,CAAC;QAC9C,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAE3C,MAAM,sBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAS,GAAG,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAU,EAAE,MAAe;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,oBAAO,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAA,uBAAU,EAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,mDAAmD,OAAO,aAAa,CAAC;QAElG,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,mBAAQ,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAU,EAAE,MAAe;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,oBAAO,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAEhC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,kBAAkB,IAAI,YAAY,GAAG,GAAG,KAAK,MAAM,CAAC;QAE9E,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,mBAAQ,CAAC,4BAA4B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,mBAAmB;QACnB,QAAQ,GAAG,MAAM,IAAA,sBAAS,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEnD,gCAAgC;QAChC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAEjE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,UAQhB,EAAE;QACJ,MAAM,EACJ,MAAM,GAAG,CAAC,EACV,QAAQ,GAAG,IAAI,IAAI,EAAE,EACrB,MAAM,GAAG,IAAI,IAAI,EAAE,EACnB,OAAO,GAAG,QAAQ,EAClB,SAAS,EACT,QAAQ,GAAG,IAAI,EACf,WAAW,GAAG,IAAI,EACnB,GAAG,OAAO,CAAC;QAEZ,MAAM,WAAW,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAElF,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAQ,CAAC,4CAA4C,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,WAAW,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,mBAAQ,CAAC,yCAAyC,WAAW,EAAE,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,0BAA0B,CAAC;QAEpD,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,IAAA,uBAAU,EAAC,QAAQ,CAAC;YACjC,SAAS,EAAE,IAAA,uBAAU,EAAC,MAAM,CAAC;YAC7B,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,WAAW;SACrB,CAAC;QAEF,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAwB,GAAG,EAAE,MAAM,CAAC,CAAC;QACxE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,UAQV,EAAE;QACJ,MAAM,EACJ,OAAO,GAAG,QAAQ,EAClB,QAAQ,EACR,MAAM,EACN,MAAM,GAAG,IAAI,EACb,SAAS,EACT,MAAM,GAAG,EAAE,EACX,WAAW,EACZ,GAAG,OAAO,CAAC;QAEZ,MAAM,WAAW,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAwB;YAClC,YAAY,EAAE,MAAM;YACpB,YAAY,EAAE,MAAM;YACpB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,mBAAQ,CAAC,4CAA4C,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,CAAC,KAAK,GAAG,IAAA,uBAAU,EAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,KAAK,GAAG,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QACnC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAe,GAAG,GAAG,CAAC,MAAM,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAIjB,EAAE;QACJ,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAEhD,MAAM,MAAM,GAAwB,EAAE,CAAC;QAEvC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,mBAAQ,CAAC,4CAA4C,CAAC,CAAC;YACnE,CAAC;YAED,MAAM,CAAC,QAAQ,GAAG,IAAA,uBAAU,EAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,GAAG,IAAA,uBAAU,EAAC,MAAM,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,qBAAqB,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,GAAG,EAAE,MAAM,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,mBAAmB,CAAC;QAE7C,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,UAIV,EAAE;QACJ,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE1D,MAAM,MAAM,GAAwB;YAClC,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACnB,CAAC;QAEF,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,IAAI,GAAG,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,mBAAQ,CAAC,GAAG,SAAS,+BAA+B,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,wBAAwB,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,UAIT,EAAE;QACJ,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAE1D,MAAM,MAAM,GAAwB;YAClC,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,SAAS;SACnB,CAAC;QAEF,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,IAAI,GAAG,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,mBAAQ,CAAC,GAAG,SAAS,yBAAyB,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,wBAAwB,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAGpB,EAAE;QACJ,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAEvC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,mBAAmB,CAAC;QAE7C,MAAM,MAAM,GAAwB;YAClC,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,EAAE;SACd,CAAC;QAEF,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,IAAI,GAAG,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,mBAAQ,CAAC,GAAG,SAAS,+BAA+B,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC3C,CAAC;aAAM,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,gBAAgB,CAAC;QAC9C,CAAC;QAED,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAM,GAAG,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,SAAiB;QAC3B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,uBAAuB,CAAC;QAEjD,MAAM,MAAM,GAAG;YACb,SAAS,EAAE,SAAS;SACrB,CAAC;QAEF,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkB,GAAG,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAEpC,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAQ,EAAE,CAAC;QAErB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,IAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAE/D,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAM,GAAG,GAAG,CAAC,MAAM,YAAY,EAAE,MAAM,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAE3B,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErD,OAAO;YACL,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;YAC7D,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;YAC/C,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;YAC3D,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC;YAC9B,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC;YAC5B,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;YAC7B,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAMjB,EAAE;QACJ,MAAM,EACJ,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,GAAG,EACX,OAAO,GAAG,QAAQ,EAClB,MAAM,GAAG,QAAQ,EAClB,GAAG,OAAO,CAAC;QAEZ,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,oBAAoB,CAAC;QAE9C,MAAM,MAAM,GAAG;YACb,SAAS;YACT,KAAK,EAAE,KAAK;YACZ,QAAQ;YACR,OAAO;YACP,MAAM;SACP,CAAC;QAEF,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,mBAAQ,CAAC,GAAG,KAAK,8BAA8B,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,GAAG,EAAE,MAAM,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAE9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,0CAA0C;QAC1C,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,sCAAsC,SAAS,EAAE,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,mBAAQ,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,gDAAgD;QAChD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,SAAS,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;QAE1F,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,mBAAQ,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAAC,IAAU;QACxC,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAA,4BAAe,EAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,GAAG,GAAG,CAAC,MAAM,sBAAsB,EACnC;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,GAAG;SACZ,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB,CAAC,OAM9B;QACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAElE,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAQ,CAAC,0CAA0C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,oBAAO,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC/D,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,IAAA,uBAAU,EAAC,QAAQ,CAAC,IAAI,IAAA,uBAAU,EAAC,MAAM,CAAC,MAAM,CAAC;QAE3E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAClC,GAAG,GAAG,CAAC,MAAM,sBAAsB,EACnC,YAAY,EACZ;YACE,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAA,4BAAe,EAAC,QAAQ,CAAC;YACrC,QAAQ,EAAE,IAAA,4BAAe,EAAC,MAAM,CAAC;YACjC,MAAM,EAAE,MAAM;SACf,EACD,KAAK,CACN,CAAC;QAEF,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,6BAA6B,CAAC;QAEvD,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAA8B,GAAG,CAAC,CAAC;QACtE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,MAAM,sBAAQ,CAAC,KAAK,EAAE,CAAC;QAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CACjC,GAAG,GAAG,CAAC,MAAM,8BAA8B,CAC5C,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;;AAznBH,kBA0nBC"}