corexxx 1.0.17 → 1.0.21

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.
@@ -11,6 +11,14 @@
11
11
  "program": "${workspaceFolder}/src/test.ts",
12
12
  "preLaunchTask": "tsc: build - tsconfig.json",
13
13
  "outFiles": ["${workspaceFolder}/dist/**/*.js"]
14
+ },
15
+ {
16
+ "type": "node",
17
+ "request": "launch",
18
+ "name": "Run yahoofin.ts",
19
+ "program": "${workspaceFolder}/src/yahoofin.ts",
20
+ "preLaunchTask": "tsc: build - tsconfig.json",
21
+ "outFiles": ["${workspaceFolder}/dist/**/*.js"]
14
22
  }
15
23
  ]
16
24
  }
package/dist/dtime.js CHANGED
@@ -41,7 +41,7 @@ var dtime;
41
41
  }
42
42
  dtime.isSameDay = isSameDay;
43
43
  function fromNow(str) {
44
- return (0, moment_1.default)(str).fromNow();
44
+ return moment_1.default(str).fromNow();
45
45
  }
46
46
  dtime.fromNow = fromNow;
47
47
  function addDay(offset, error = "Invalid date") {
package/dist/dtime.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dtime.js","sourceRoot":"","sources":["../src/dtime.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;;;;AAEjD,oDAA4B;AAE5B,IAAiB,KAAK,CA+DrB;AA/DD,WAAiB,KAAK;IACpB,SAAgB,cAAc;QAC5B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAFe,oBAAc,iBAE7B,CAAA;IAED,SAAgB,iBAAiB,CAAC,GAAW;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAFe,uBAAiB,oBAEhC,CAAA;IAED,SAAgB,YAAY,CAAC,GAAW;QACtC,IAAI;YACF,uCAAuC;SACxC;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,UAAU,CAAC;SACnB;IACH,CAAC;IANe,kBAAY,eAM3B,CAAA;IAED,SAAgB,gBAAgB,CAAC,GAAW;QAC1C,IAAI;YACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;SAC3B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAPe,sBAAgB,mBAO/B,CAAA;IAED,SAAgB,SAAS,CAAC,IAAY,EAAE,IAAY;QAClD,OAAO;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAHe,eAAS,YAGxB,CAAA;IAED,SAAgB,OAAO,CAAC,GAAW;QACjC,OAAO,IAAA,gBAAM,EAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAFe,aAAO,UAEtB,CAAA;IAED,SAAgB,MAAM,CAAC,MAAW,EAAE,KAAK,GAAG,cAAc;QACxD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,cAAc,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IANe,YAAM,SAMrB,CAAA;IACD,SAAgB,eAAe,CAAC,IAAU,EAAE,KAAK,GAAG,0BAA0B;QAC5E,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;IACH,CAAC;IAJe,qBAAe,kBAI9B,CAAA;IACD,SAAgB,kBAAkB,CAAC,GAAW;QAC5C,IAAI;YACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,cAAc,CAAC;SACvB;IACH,CAAC;IAPe,wBAAkB,qBAOjC,CAAA;IACD,SAAgB,kBAAkB,CAAC,GAAW;QAC5C,IAAI;YACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,cAAc,CAAC;SACvB;IACH,CAAC;IAPe,wBAAkB,qBAOjC,CAAA;AACH,CAAC,EA/DgB,KAAK,GAAL,aAAK,KAAL,aAAK,QA+DrB"}
1
+ {"version":3,"file":"dtime.js","sourceRoot":"","sources":["../src/dtime.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;;;;AAEjD,oDAA4B;AAE5B,IAAiB,KAAK,CA+DrB;AA/DD,WAAiB,KAAK;IACpB,SAAgB,cAAc;QAC5B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAFe,oBAAc,iBAE7B,CAAA;IAED,SAAgB,iBAAiB,CAAC,GAAW;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAFe,uBAAiB,oBAEhC,CAAA;IAED,SAAgB,YAAY,CAAC,GAAW;QACtC,IAAI;YACF,uCAAuC;SACxC;QAAC,OAAO,EAAE,EAAE;YACX,OAAO,UAAU,CAAC;SACnB;IACH,CAAC;IANe,kBAAY,eAM3B,CAAA;IAED,SAAgB,gBAAgB,CAAC,GAAW;QAC1C,IAAI;YACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,cAAc,EAAE,CAAC;SAC3B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAPe,sBAAgB,mBAO/B,CAAA;IAED,SAAgB,SAAS,CAAC,IAAY,EAAE,IAAY;QAClD,OAAO;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IAHe,eAAS,YAGxB,CAAA;IAED,SAAgB,OAAO,CAAC,GAAW;QACjC,OAAO,gBAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,CAAC;IAFe,aAAO,UAEtB,CAAA;IAED,SAAgB,MAAM,CAAC,MAAW,EAAE,KAAK,GAAG,cAAc;QACxD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnF,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,cAAc,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IANe,YAAM,SAMrB,CAAA;IACD,SAAgB,eAAe,CAAC,IAAU,EAAE,KAAK,GAAG,0BAA0B;QAC5E,IAAI,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;IACH,CAAC;IAJe,qBAAe,kBAI9B,CAAA;IACD,SAAgB,kBAAkB,CAAC,GAAW;QAC5C,IAAI;YACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,cAAc,CAAC;SACvB;IACH,CAAC;IAPe,wBAAkB,qBAOjC,CAAA;IACD,SAAgB,kBAAkB,CAAC,GAAW;QAC5C,IAAI;YACF,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,cAAc,CAAC;SACvB;IACH,CAAC;IAPe,wBAAkB,qBAOjC,CAAA;AACH,CAAC,EA/DgB,KAAK,GAAL,aAAK,KAAL,aAAK,QA+DrB"}
@@ -9,7 +9,7 @@ const dvalidation_1 = require("./dvalidation");
9
9
  function autoIncrementVersionInPackageJSON(file) {
10
10
  console.log(`Processing ${file}`);
11
11
  try {
12
- let data = (0, fs_1.readFileSync)(file);
12
+ let data = fs_1.readFileSync(file);
13
13
  dvalidation_1.dvalidation.validateOrThrow(data != null, "Not able to read given file");
14
14
  let data1 = data.toString();
15
15
  let match_str = data1.match(/"version": "[0-9]?\.[0-9]?\.([0-9]*?)",/);
@@ -18,7 +18,7 @@ function autoIncrementVersionInPackageJSON(file) {
18
18
  dlog_1.dlog.d(`Creating new version to ${patch_num + 1}`);
19
19
  let result = data1.replace(/("version": "[0-9]?\.[0-9]?\.)([0-9]*?)(",)/, `$1${patch_num + 1}$3`);
20
20
  console.log(result);
21
- (0, fs_1.writeFileSync)(file, result);
21
+ fs_1.writeFileSync(file, result);
22
22
  }
23
23
  catch (err) {
24
24
  dlog_1.dlog.ex(err);
@@ -1 +1 @@
1
- {"version":3,"file":"incVersion.js","sourceRoot":"","sources":["../src/incVersion.ts"],"names":[],"mappings":";;;AACA,+BAA+B;AAC/B,2BAAiD;AACjD,iCAA8B;AAC9B,+CAA4C;AAE5C,kGAAkG;AAClG,SAAS,iCAAiC,CAAC,IAAY;IACrD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAClC,IAAI;QACF,IAAI,IAAI,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,CAAC;QAC9B,yBAAW,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,EAAE,6BAA6B,CAAC,CAAC;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAoB,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxF,yBAAW,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,EAAE,wCAAwC,CAAC,CAAC;QACzF,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,WAAI,CAAC,CAAC,CAAC,2BAA2B,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,6CAA6C,EAAE,KAAK,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,IAAA,kBAAa,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC7B;IAAC,OAAO,GAAG,EAAE;QACZ,WAAI,CAAC,EAAE,CAAC,GAAY,CAAC,CAAC;KACvB;AACH,CAAC;AAED,qBAAqB;AACrB,yBAAW,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACxF,iCAAiC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"incVersion.js","sourceRoot":"","sources":["../src/incVersion.ts"],"names":[],"mappings":";;;AACA,+BAA+B;AAC/B,2BAAiD;AACjD,iCAA8B;AAC9B,+CAA4C;AAE5C,kGAAkG;AAClG,SAAS,iCAAiC,CAAC,IAAY;IACrD,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAClC,IAAI;QACF,IAAI,IAAI,GAAG,iBAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,yBAAW,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,EAAE,6BAA6B,CAAC,CAAC;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,SAAS,GAAoB,KAAK,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACxF,yBAAW,CAAC,eAAe,CAAC,SAAS,IAAI,IAAI,EAAE,wCAAwC,CAAC,CAAC;QACzF,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,WAAI,CAAC,CAAC,CAAC,2BAA2B,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,6CAA6C,EAAE,KAAK,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,kBAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC7B;IAAC,OAAO,GAAG,EAAE;QACZ,WAAI,CAAC,EAAE,CAAC,GAAY,CAAC,CAAC;KACvB;AACH,CAAC;AAED,qBAAqB;AACrB,yBAAW,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,gCAAgC,CAAC,CAAC;AACxF,iCAAiC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
package/dist/test.d.ts CHANGED
@@ -0,0 +1 @@
1
+ export {};
package/dist/test.js CHANGED
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dlog_1 = require("./dlog");
4
+ dlog_1.dlog.d("hello world");
2
5
  //# sourceMappingURL=test.js.map
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAAA,iCAA8B;AAE9B,WAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC"}
@@ -1,19 +1,39 @@
1
1
  export declare namespace yahooFin {
2
2
  type TStockInfo = {
3
+ _id: string;
3
4
  ltp: number;
4
5
  open: number;
5
6
  symbol: string;
6
7
  name: string;
7
- exchange: string;
8
+ exchange: TExchange;
8
9
  volume: number;
9
10
  high: number;
10
11
  low: number;
11
- week52High: number;
12
- week52Low: number;
13
- avgVolume: number;
14
12
  change: number;
15
13
  pChange: number;
14
+ week52High?: number;
15
+ week52Low?: number;
16
+ avgVolume?: number;
16
17
  yAnalystRating?: string;
18
+ pre_ltp?: number;
19
+ pre_pChange?: number;
20
+ post_ltp?: number;
21
+ post_pChange?: number;
17
22
  };
23
+ type TExchange = "NSE" | "BSE" | "NASDAQ" | "LSE";
24
+ function getExchangeFromKey(id: string): TExchange;
18
25
  function getBulkStockQuote(symbols: string[], exchange: "NSE" | "BSE" | "LSE" | "NASDAQ"): Promise<TStockInfo[]>;
26
+ function getBulkStockQuoteWithFullKey(symbols: string[]): Promise<TStockInfo[]>;
27
+ type TInterval = "1d" | "5m" | "15m" | "1h";
28
+ type THistoryData = {
29
+ timestamp: number[];
30
+ open: number[];
31
+ close: number[];
32
+ high: number[];
33
+ low: number[];
34
+ volume: number[];
35
+ date: Date[];
36
+ };
37
+ function getHistoryData(symbol: string, interval: TInterval, candle_count?: number): Promise<THistoryData | undefined>;
38
+ function getBulkHistoryData(symbols: string[], interval: TInterval, candle_count?: number): Promise<Map<string, THistoryData> | undefined>;
19
39
  }
package/dist/yahoofin.js CHANGED
@@ -10,16 +10,34 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.yahooFin = void 0;
13
- const dlog_1 = require("./dlog");
14
13
  const axios = require("axios").default;
14
+ const dlog_1 = require("./dlog");
15
15
  var yahooFin;
16
16
  (function (yahooFin) {
17
17
  const extMap = { NSE: ".NS", BSE: ".BS", NASDAQ: "", LSE: ".L" };
18
+ function getExchangeFromKey(id) {
19
+ if (id.endsWith(".BS"))
20
+ return "BSE";
21
+ if (id.endsWith(".NS"))
22
+ return "NSE";
23
+ if (id.endsWith(".L"))
24
+ return "LSE";
25
+ return "NASDAQ";
26
+ }
27
+ yahooFin.getExchangeFromKey = getExchangeFromKey;
18
28
  function getBulkStockQuote(symbols, exchange) {
19
- var _a;
20
29
  return __awaiter(this, void 0, void 0, function* () {
21
- symbols = symbols.map((x) => x + extMap[exchange]);
22
- console.log(symbols);
30
+ return yield getBulkStockQuoteWithFullKey(symbols.map((x) => x + extMap[exchange]));
31
+ });
32
+ }
33
+ yahooFin.getBulkStockQuote = getBulkStockQuote;
34
+ // Get map
35
+ function getBulkStockQuoteWithFullKey(symbols) {
36
+ var _a, _b, _c, _d, _e;
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ if (!symbols || symbols.length == 0) {
39
+ return [];
40
+ }
23
41
  let result = [];
24
42
  try {
25
43
  let resp = yield axios.get(`https://query1.finance.yahoo.com/v7/finance/quote?formatted=true&symbols=${symbols.join(",")}`, {
@@ -29,10 +47,12 @@ var yahooFin;
29
47
  });
30
48
  let data = resp.data;
31
49
  for (let d of data.quoteResponse.result) {
50
+ //dlog.obj(d.postMarketChangePercent);
32
51
  result.push({
33
- symbol: d.symbol.replace(extMap[exchange], ""),
52
+ _id: d.symbol,
53
+ symbol: d.symbol.replace(".NS", "").d.symbol.replace(".BS", "").d.symbol.replace(".L", ""),
34
54
  name: d.shortName,
35
- exchange: exchange,
55
+ exchange: getExchangeFromKey(d.symbol),
36
56
  ltp: d.regularMarketPrice.raw,
37
57
  open: d.regularMarketOpen.raw,
38
58
  low: d.regularMarketDayLow.raw,
@@ -44,16 +64,66 @@ var yahooFin;
44
64
  change: d.regularMarketChange.raw,
45
65
  pChange: d.regularMarketChangePercent.raw,
46
66
  yAnalystRating: d.averageAnalystRating,
67
+ post_ltp: (_b = d.postMarketPrice) === null || _b === void 0 ? void 0 : _b.raw,
68
+ post_pChange: (_c = d.postMarketChangePercent) === null || _c === void 0 ? void 0 : _c.raw,
69
+ pre_ltp: (_d = d.preMarketPrice) === null || _d === void 0 ? void 0 : _d.raw,
70
+ pre_pChange: (_e = d.preMarketChangePercent) === null || _e === void 0 ? void 0 : _e.raw,
47
71
  });
48
72
  }
73
+ //dlog.obj(result);
49
74
  return result;
50
75
  }
51
- catch (err) {
52
- dlog_1.dlog.ex(err);
76
+ catch (e) {
77
+ dlog_1.dlog.ex(e, true);
53
78
  }
54
79
  return result;
55
80
  });
56
81
  }
57
- yahooFin.getBulkStockQuote = getBulkStockQuote;
82
+ yahooFin.getBulkStockQuoteWithFullKey = getBulkStockQuoteWithFullKey;
83
+ function getHistoryData(symbol, interval, candle_count) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ candle_count = candle_count || 14;
86
+ try {
87
+ let resp = yield axios.get(`https://query1.finance.yahoo.com/v8/finance/chart/${symbol}?symbol=${symbol}&range=1mo&interval=${interval}`);
88
+ console.log(resp);
89
+ let head = resp.data.chart.result[0];
90
+ return {
91
+ timestamp: head.timestamp.slice(-candle_count),
92
+ date: head.timestamp.slice(-candle_count).map((x) => new Date(x * 1000)),
93
+ open: head.indicators.quote[0].open.slice(-candle_count),
94
+ close: head.indicators.quote[0].close.slice(-candle_count),
95
+ high: head.indicators.quote[0].high.slice(-candle_count),
96
+ low: head.indicators.quote[0].low.slice(-candle_count),
97
+ volume: head.indicators.quote[0].volume.slice(-candle_count),
98
+ };
99
+ }
100
+ catch (e) {
101
+ dlog_1.dlog.ex(e, true);
102
+ }
103
+ return undefined;
104
+ });
105
+ }
106
+ yahooFin.getHistoryData = getHistoryData;
107
+ // verified -- works fine
108
+ function getBulkHistoryData(symbols, interval, candle_count) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ let result = new Map();
111
+ for (let s of symbols) {
112
+ let data = yield getHistoryData(s, interval, candle_count);
113
+ if (!data) {
114
+ throw Error("not found");
115
+ }
116
+ result.set(s, data);
117
+ }
118
+ return result;
119
+ });
120
+ }
121
+ yahooFin.getBulkHistoryData = getBulkHistoryData;
122
+ // end of lib
58
123
  })(yahooFin = exports.yahooFin || (exports.yahooFin = {}));
124
+ // test
125
+ (() => __awaiter(void 0, void 0, void 0, function* () {
126
+ //let data = await yahooFin.getHistoryData("TCS.NS", "1h", 50);
127
+ //dlog.obj(data);
128
+ }))();
59
129
  //# sourceMappingURL=yahoofin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"yahoofin.js","sourceRoot":"","sources":["../src/yahoofin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iCAA8B;AAE9B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAEvC,IAAiB,QAAQ,CAsDxB;AAtDD,WAAiB,QAAQ;IAiBvB,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAEjE,SAAsB,iBAAiB,CAAC,OAAiB,EAAE,QAA0C;;;YACnG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,IAAI,MAAM,GAAiB,EAAE,CAAC;YAC9B,IAAI;gBACF,IAAI,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,4EAA4E,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;oBAC1H,OAAO,EAAE;wBACP,YAAY,EAAE,qHAAqH;qBACpI;iBACF,CAAC,CAAC;gBACH,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACrB,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;oBACvC,MAAM,CAAC,IAAI,CAAC;wBACV,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBAC9C,IAAI,EAAE,CAAC,CAAC,SAAS;wBACjB,QAAQ,EAAE,QAAQ;wBAClB,GAAG,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG;wBAC7B,IAAI,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG;wBAC7B,GAAG,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG;wBAC9B,IAAI,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG;wBAChC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG;wBACjC,SAAS,EAAE,MAAA,CAAC,CAAC,wBAAwB,0CAAE,GAAG;wBAC1C,UAAU,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG;wBAClC,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG;wBAChC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,GAAG;wBACjC,OAAO,EAAE,CAAC,CAAC,0BAA0B,CAAC,GAAG;wBACzC,cAAc,EAAE,CAAC,CAAC,oBAAoB;qBACvC,CAAC,CAAC;iBACJ;gBACD,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACZ,WAAI,CAAC,EAAE,CAAC,GAAY,CAAC,CAAC;aACvB;YACD,OAAO,MAAM,CAAC;;KACf;IAlCqB,0BAAiB,oBAkCtC,CAAA;AACH,CAAC,EAtDgB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAsDxB"}
1
+ {"version":3,"file":"yahoofin.js","sourceRoot":"","sources":["../src/yahoofin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "corexxx",
3
- "version": "1.0.17",
3
+ "version": "1.0.21",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/test.ts CHANGED
@@ -0,0 +1,3 @@
1
+ import { dlog } from "./dlog";
2
+
3
+ dlog.d("hello world");
package/src/yahoofin.ts CHANGED
@@ -1,29 +1,52 @@
1
- import { dlog } from "./dlog";
2
-
3
1
  const axios = require("axios").default;
2
+ import { dlog } from "./dlog";
4
3
 
5
4
  export namespace yahooFin {
5
+ // define types
6
6
  export type TStockInfo = {
7
+ _id: string;
7
8
  ltp: number;
8
9
  open: number;
9
10
  symbol: string;
10
11
  name: string;
11
- exchange: string;
12
+ exchange: TExchange;
12
13
  volume: number;
13
14
  high: number;
14
15
  low: number;
15
- week52High: number;
16
- week52Low: number;
17
- avgVolume: number;
18
16
  change: number;
19
17
  pChange: number;
18
+
19
+ // opt
20
+ week52High?: number;
21
+ week52Low?: number;
22
+ avgVolume?: number;
20
23
  yAnalystRating?: string;
24
+ pre_ltp?: number;
25
+ pre_pChange?: number;
26
+ post_ltp?: number;
27
+ post_pChange?: number;
21
28
  };
29
+
30
+ export type TExchange = "NSE" | "BSE" | "NASDAQ" | "LSE";
31
+
22
32
  const extMap = { NSE: ".NS", BSE: ".BS", NASDAQ: "", LSE: ".L" };
23
33
 
34
+ export function getExchangeFromKey(id: string): TExchange {
35
+ if (id.endsWith(".BS")) return "BSE";
36
+ if (id.endsWith(".NS")) return "NSE";
37
+ if (id.endsWith(".L")) return "LSE";
38
+ return "NASDAQ";
39
+ }
40
+
24
41
  export async function getBulkStockQuote(symbols: string[], exchange: "NSE" | "BSE" | "LSE" | "NASDAQ"): Promise<TStockInfo[]> {
25
- symbols = symbols.map((x) => x + extMap[exchange]);
26
- console.log(symbols);
42
+ return await getBulkStockQuoteWithFullKey(symbols.map((x) => x + extMap[exchange]));
43
+ }
44
+
45
+ // Get map
46
+ export async function getBulkStockQuoteWithFullKey(symbols: string[]): Promise<TStockInfo[]> {
47
+ if (!symbols || symbols.length == 0) {
48
+ return [];
49
+ }
27
50
  let result: TStockInfo[] = [];
28
51
  try {
29
52
  let resp = await axios.get(`https://query1.finance.yahoo.com/v7/finance/quote?formatted=true&symbols=${symbols.join(",")}`, {
@@ -33,10 +56,12 @@ export namespace yahooFin {
33
56
  });
34
57
  let data = resp.data;
35
58
  for (let d of data.quoteResponse.result) {
59
+ //dlog.obj(d.postMarketChangePercent);
36
60
  result.push({
37
- symbol: d.symbol.replace(extMap[exchange], ""),
61
+ _id: d.symbol,
62
+ symbol: d.symbol.replace(".NS", "").d.symbol.replace(".BS", "").d.symbol.replace(".L", ""),
38
63
  name: d.shortName,
39
- exchange: exchange,
64
+ exchange: getExchangeFromKey(d.symbol),
40
65
  ltp: d.regularMarketPrice.raw,
41
66
  open: d.regularMarketOpen.raw,
42
67
  low: d.regularMarketDayLow.raw,
@@ -48,12 +73,65 @@ export namespace yahooFin {
48
73
  change: d.regularMarketChange.raw,
49
74
  pChange: d.regularMarketChangePercent.raw,
50
75
  yAnalystRating: d.averageAnalystRating,
76
+ post_ltp: d.postMarketPrice?.raw,
77
+ post_pChange: d.postMarketChangePercent?.raw,
78
+ pre_ltp: d.preMarketPrice?.raw,
79
+ pre_pChange: d.preMarketChangePercent?.raw,
51
80
  });
52
81
  }
82
+ //dlog.obj(result);
53
83
  return result;
54
- } catch (err) {
55
- dlog.ex(err as Error);
84
+ } catch (e) {
85
+ dlog.ex(e as Error, true);
56
86
  }
57
87
  return result;
58
88
  }
89
+
90
+ export type TInterval = "1d" | "5m" | "15m" | "1h";
91
+ export type THistoryData = { timestamp: number[]; open: number[]; close: number[]; high: number[]; low: number[]; volume: number[]; date: Date[] };
92
+
93
+ export async function getHistoryData(symbol: string, interval: TInterval, candle_count?: number): Promise<THistoryData | undefined> {
94
+ candle_count = candle_count || 14;
95
+ try {
96
+ let resp = await axios.get(`https://query1.finance.yahoo.com/v8/finance/chart/${symbol}?symbol=${symbol}&range=1mo&interval=${interval}`);
97
+ console.log(resp);
98
+ let head = resp.data.chart.result[0];
99
+ return {
100
+ timestamp: head.timestamp.slice(-candle_count),
101
+ date: head.timestamp.slice(-candle_count).map((x: number) => new Date(x * 1000)),
102
+ open: head.indicators.quote[0].open.slice(-candle_count),
103
+ close: head.indicators.quote[0].close.slice(-candle_count),
104
+ high: head.indicators.quote[0].high.slice(-candle_count),
105
+ low: head.indicators.quote[0].low.slice(-candle_count),
106
+ volume: head.indicators.quote[0].volume.slice(-candle_count),
107
+ };
108
+ } catch (e) {
109
+ dlog.ex(e as Error, true);
110
+ }
111
+ return undefined;
112
+ }
113
+
114
+ // verified -- works fine
115
+ export async function getBulkHistoryData(
116
+ symbols: string[],
117
+ interval: TInterval,
118
+ candle_count?: number
119
+ ): Promise<Map<string, THistoryData> | undefined> {
120
+ let result = new Map<string, THistoryData>();
121
+ for (let s of symbols) {
122
+ let data = await getHistoryData(s, interval, candle_count);
123
+ if (!data) {
124
+ throw Error("not found");
125
+ }
126
+ result.set(s, data);
127
+ }
128
+ return result;
129
+ }
130
+
131
+ // end of lib
59
132
  }
133
+ // test
134
+ (async () => {
135
+ //let data = await yahooFin.getHistoryData("TCS.NS", "1h", 50);
136
+ //dlog.obj(data);
137
+ })();
package/dist/dfile.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { TObject } from "./dtypes";
2
- export declare namespace dfile {
3
- function readConfigFile(path: string): TObject;
4
- function loadFile(path: string): Promise<string>;
5
- }
package/dist/dfile.js DELETED
@@ -1,45 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.dfile = void 0;
16
- const fs_1 = __importDefault(require("fs"));
17
- const dlog_1 = require("./dlog");
18
- const fsPromises = fs_1.default.promises;
19
- var dfile;
20
- (function (dfile) {
21
- // We remove c like comments from the config file
22
- function readConfigFile(path) {
23
- var data = fs_1.default.readFileSync(path, "utf8");
24
- // remove comments https://stackoverflow.com/questions/37051797/remove-comments-from-string-with-javascript-using-javascript
25
- data = data.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, "");
26
- return JSON.parse(data);
27
- }
28
- dfile.readConfigFile = readConfigFile;
29
- // load file async
30
- function loadFile(path) {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- console.log(path);
33
- try {
34
- let res = yield fsPromises.readFile(path);
35
- return res.toString();
36
- }
37
- catch (e) {
38
- dlog_1.dlog.ex(e);
39
- return "not able to read file:" + path + e;
40
- }
41
- });
42
- }
43
- dfile.loadFile = loadFile;
44
- })(dfile = exports.dfile || (exports.dfile = {}));
45
- //# sourceMappingURL=dfile.js.map
package/dist/dfile.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"dfile.js","sourceRoot":"","sources":["../src/dfile.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,iCAA8B;AAG9B,MAAM,UAAU,GAAG,YAAE,CAAC,QAAQ,CAAC;AAE/B,IAAiB,KAAK,CAmBrB;AAnBD,WAAiB,KAAK;IACpB,iDAAiD;IACjD,SAAgB,cAAc,CAAC,IAAY;QACzC,IAAI,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACzC,4HAA4H;QAC5H,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IALe,oBAAc,iBAK7B,CAAA;IACD,kBAAkB;IAClB,SAAsB,QAAQ,CAAC,IAAY;;YACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI;gBACF,IAAI,GAAG,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;aACvB;YAAC,OAAO,CAAC,EAAE;gBACV,WAAI,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC;gBACpB,OAAO,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC;aAC5C;QACH,CAAC;KAAA;IATqB,cAAQ,WAS7B,CAAA;AACH,CAAC,EAnBgB,KAAK,GAAL,aAAK,KAAL,aAAK,QAmBrB"}