itrm-tools 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/web3/Coin.d.ts +17 -0
- package/dist/web3/Coin.js +22 -0
- package/dist/web3/Coin.js.map +1 -0
- package/dist/web3/coingecko/CoingeckoPriceFinder.d.ts +10 -0
- package/dist/web3/coingecko/CoingeckoPriceFinder.js +88 -0
- package/dist/web3/coingecko/CoingeckoPriceFinder.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -18,3 +18,5 @@ export { SequelizeModelManager as SequelizeModelManager } from './database/seque
|
|
|
18
18
|
export { Logger as Logger } from './log/Logger';
|
|
19
19
|
export { LoggerManager as LoggerManager } from './log/LoggerManager';
|
|
20
20
|
export { LoggerWebSocket as LoggerWebSocket } from './log/LoggerWebSocket';
|
|
21
|
+
export { Coin } from './web3/Coin';
|
|
22
|
+
export { CoingeckoPriceFinder } from './web3/coingecko/CoingeckoPriceFinder';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LoggerWebSocket = exports.LoggerManager = exports.Logger = exports.SequelizeModelManager = exports.SequelizeConnection = exports.MongooseModelManager = exports.CheckablePutRequest = exports.CheckablePostRequest = exports.CheckableGetRequest = exports.CheckableDeleteRequest = exports.CheckableAPIRequest = exports.DeleteRequest = exports.PutRequest = exports.PostRequest = exports.GetRequest = exports.RequestContext = exports.RequestMethod = exports.APIRequest = exports.ExpressStandardConfiguration = exports.HttpsAPIService = exports.APIService = void 0;
|
|
3
|
+
exports.CoingeckoPriceFinder = exports.Coin = exports.LoggerWebSocket = exports.LoggerManager = exports.Logger = exports.SequelizeModelManager = exports.SequelizeConnection = exports.MongooseModelManager = exports.CheckablePutRequest = exports.CheckablePostRequest = exports.CheckableGetRequest = exports.CheckableDeleteRequest = exports.CheckableAPIRequest = exports.DeleteRequest = exports.PutRequest = exports.PostRequest = exports.GetRequest = exports.RequestContext = exports.RequestMethod = exports.APIRequest = exports.ExpressStandardConfiguration = exports.HttpsAPIService = exports.APIService = void 0;
|
|
4
4
|
var APIService_1 = require("./api/APIService");
|
|
5
5
|
Object.defineProperty(exports, "APIService", { enumerable: true, get: function () { return APIService_1.APIService; } });
|
|
6
6
|
var HttpsAPIService_1 = require("./api/HttpsAPIService");
|
|
@@ -41,4 +41,8 @@ var LoggerManager_1 = require("./log/LoggerManager");
|
|
|
41
41
|
Object.defineProperty(exports, "LoggerManager", { enumerable: true, get: function () { return LoggerManager_1.LoggerManager; } });
|
|
42
42
|
var LoggerWebSocket_1 = require("./log/LoggerWebSocket");
|
|
43
43
|
Object.defineProperty(exports, "LoggerWebSocket", { enumerable: true, get: function () { return LoggerWebSocket_1.LoggerWebSocket; } });
|
|
44
|
+
var Coin_1 = require("./web3/Coin");
|
|
45
|
+
Object.defineProperty(exports, "Coin", { enumerable: true, get: function () { return Coin_1.Coin; } });
|
|
46
|
+
var CoingeckoPriceFinder_1 = require("./web3/coingecko/CoingeckoPriceFinder");
|
|
47
|
+
Object.defineProperty(exports, "CoingeckoPriceFinder", { enumerable: true, get: function () { return CoingeckoPriceFinder_1.CoingeckoPriceFinder; } });
|
|
44
48
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA4I;AAA7F,wGAAA,UAAU,OAAc;AACvE,yDAA2E;AAAlE,kHAAA,eAAe,OAAmB;AAG3C,2FAA0H;AAAjH,4IAAA,4BAA4B,OAAgC;AAErE,+CAA4M;AAAnM,wGAAA,UAAU,OAAc;AAAE,2GAAA,aAAa,OAAiB;AAAE,4GAAA,cAAc,OAAkB;AACnG,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,yDAAuE;AAA9D,0GAAA,WAAW,OAAe;AACnC,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,6DAA6E;AAApE,8GAAA,aAAa,OAAiB;AAEvC,uEAA2L;AAApF,0HAAA,mBAAmB,OAAuB;AACjJ,qFAA8G;AAArG,gIAAA,sBAAsB,OAA0B;AACzD,+EAAqG;AAA5F,0HAAA,mBAAmB,OAAuB;AACnD,iFAAwG;AAA/F,4HAAA,oBAAoB,OAAwB;AACrD,+EAAqG;AAA5F,0HAAA,mBAAmB,OAAuB;AAInD,iFAAwG;AAA/F,4HAAA,oBAAoB,OAAwB;AAErD,gFAAsG;AAA7F,0HAAA,mBAAmB,OAAuB;AACnD,oFAA4G;AAAnG,8HAAA,qBAAqB,OAAyB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,+CAA4I;AAA7F,wGAAA,UAAU,OAAc;AACvE,yDAA2E;AAAlE,kHAAA,eAAe,OAAmB;AAG3C,2FAA0H;AAAjH,4IAAA,4BAA4B,OAAgC;AAErE,+CAA4M;AAAnM,wGAAA,UAAU,OAAc;AAAE,2GAAA,aAAa,OAAiB;AAAE,4GAAA,cAAc,OAAkB;AACnG,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,yDAAuE;AAA9D,0GAAA,WAAW,OAAe;AACnC,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,6DAA6E;AAApE,8GAAA,aAAa,OAAiB;AAEvC,uEAA2L;AAApF,0HAAA,mBAAmB,OAAuB;AACjJ,qFAA8G;AAArG,gIAAA,sBAAsB,OAA0B;AACzD,+EAAqG;AAA5F,0HAAA,mBAAmB,OAAuB;AACnD,iFAAwG;AAA/F,4HAAA,oBAAoB,OAAwB;AACrD,+EAAqG;AAA5F,0HAAA,mBAAmB,OAAuB;AAInD,iFAAwG;AAA/F,4HAAA,oBAAoB,OAAwB;AAErD,gFAAsG;AAA7F,0HAAA,mBAAmB,OAAuB;AACnD,oFAA4G;AAAnG,8HAAA,qBAAqB,OAAyB;AAIvD,uCAAgD;AAAvC,gGAAA,MAAM,OAAU;AACzB,qDAAqE;AAA5D,8GAAA,aAAa,OAAiB;AACvC,yDAA2E;AAAlE,kHAAA,eAAe,OAAmB;AAI3C,oCAAmC;AAA1B,4FAAA,IAAI,OAAA;AACb,8EAA6E;AAApE,4HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum Coin {
|
|
2
|
+
APE = "APE",
|
|
3
|
+
ARTX = "ARTX",
|
|
4
|
+
ATRI = "ATRI",
|
|
5
|
+
BTC = "BTC",
|
|
6
|
+
CUBE = "CUBE",
|
|
7
|
+
DAI = "DAI",
|
|
8
|
+
ETH = "ETH",
|
|
9
|
+
MANA = "MANA",
|
|
10
|
+
MATIC = "MATIC",
|
|
11
|
+
RARI = "RARI",
|
|
12
|
+
SAND = "SAND",
|
|
13
|
+
SCOTT = "SCOTT",
|
|
14
|
+
USDC = "USDC",
|
|
15
|
+
WBTC = "WBTC",
|
|
16
|
+
WETH = "WETH"
|
|
17
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Coin = void 0;
|
|
4
|
+
var Coin;
|
|
5
|
+
(function (Coin) {
|
|
6
|
+
Coin["APE"] = "APE";
|
|
7
|
+
Coin["ARTX"] = "ARTX";
|
|
8
|
+
Coin["ATRI"] = "ATRI";
|
|
9
|
+
Coin["BTC"] = "BTC";
|
|
10
|
+
Coin["CUBE"] = "CUBE";
|
|
11
|
+
Coin["DAI"] = "DAI";
|
|
12
|
+
Coin["ETH"] = "ETH";
|
|
13
|
+
Coin["MANA"] = "MANA";
|
|
14
|
+
Coin["MATIC"] = "MATIC";
|
|
15
|
+
Coin["RARI"] = "RARI";
|
|
16
|
+
Coin["SAND"] = "SAND";
|
|
17
|
+
Coin["SCOTT"] = "SCOTT";
|
|
18
|
+
Coin["USDC"] = "USDC";
|
|
19
|
+
Coin["WBTC"] = "WBTC";
|
|
20
|
+
Coin["WETH"] = "WETH";
|
|
21
|
+
})(Coin = exports.Coin || (exports.Coin = {}));
|
|
22
|
+
//# sourceMappingURL=Coin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Coin.js","sourceRoot":"","sources":["../../src/web3/Coin.ts"],"names":[],"mappings":";;;AAAA,IAAY,IAgBX;AAhBD,WAAY,IAAI;IACZ,mBAAW,CAAA;IACX,qBAAa,CAAA;IACb,qBAAa,CAAA;IACb,mBAAW,CAAA;IACX,qBAAa,CAAA;IACb,mBAAW,CAAA;IACX,mBAAW,CAAA;IACX,qBAAa,CAAA;IACb,uBAAe,CAAA;IACf,qBAAa,CAAA;IACb,qBAAa,CAAA;IACb,uBAAe,CAAA;IACf,qBAAa,CAAA;IACb,qBAAa,CAAA;IACb,qBAAa,CAAA;AACjB,CAAC,EAhBW,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAgBf"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Coin } from '../Coin';
|
|
2
|
+
export declare class CoingeckoPriceFinder {
|
|
3
|
+
private prices;
|
|
4
|
+
private pair;
|
|
5
|
+
constructor(pair?: string);
|
|
6
|
+
getPrice(symbol: Coin, date?: Date): Promise<any>;
|
|
7
|
+
private adjustDate;
|
|
8
|
+
private findPrice;
|
|
9
|
+
parseSymbolId(symbol: Coin): "apecoin" | "artx" | "atari" | "bitcoin" | "somnium-space-cubes" | "dai" | "decentraland" | "matic-network" | "rarible" | "the-sandbox" | "scotty-beam" | "usd-coin" | "ethereum";
|
|
10
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
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.CoingeckoPriceFinder = void 0;
|
|
16
|
+
const axios_1 = __importDefault(require("axios"));
|
|
17
|
+
const Coin_1 = require("../Coin");
|
|
18
|
+
class CoingeckoPriceFinder {
|
|
19
|
+
constructor(pair) {
|
|
20
|
+
this.prices = {};
|
|
21
|
+
this.pair = pair !== null && pair !== void 0 ? pair : "eth";
|
|
22
|
+
}
|
|
23
|
+
getPrice(symbol, date) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
date = date !== null && date !== void 0 ? date : new Date();
|
|
26
|
+
let id = this.parseSymbolId(symbol);
|
|
27
|
+
let key = (10000 * date.getFullYear()) + (100 * (date.getMonth() + 1)) + date.getDate();
|
|
28
|
+
return yield this.findPrice(id, "" + this.adjustDate(symbol, key));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
adjustDate(symbol, date) {
|
|
32
|
+
switch (symbol) {
|
|
33
|
+
case Coin_1.Coin.APE: return Math.max(date, 20220317);
|
|
34
|
+
case Coin_1.Coin.ARTX: return Math.max(date, 20210404);
|
|
35
|
+
case Coin_1.Coin.ATRI: return Math.max(date, 20201102);
|
|
36
|
+
case Coin_1.Coin.BTC: return Math.max(date, 20130428);
|
|
37
|
+
case Coin_1.Coin.CUBE: return Math.max(date, 20200221);
|
|
38
|
+
case Coin_1.Coin.DAI: return Math.max(date, 20191119);
|
|
39
|
+
case Coin_1.Coin.MANA: return Math.max(date, 20171028);
|
|
40
|
+
case Coin_1.Coin.MATIC: return Math.max(date, 20190427);
|
|
41
|
+
case Coin_1.Coin.RARI: return Math.max(date, 20200717);
|
|
42
|
+
case Coin_1.Coin.SAND: return Math.max(date, 20200814);
|
|
43
|
+
case Coin_1.Coin.SCOTT: return Math.max(date, 20211220);
|
|
44
|
+
case Coin_1.Coin.USDC: return Math.max(date, 20181005);
|
|
45
|
+
case Coin_1.Coin.WBTC: return Math.max(date, 20130428);
|
|
46
|
+
default: return Math.max(date, 20150807);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
findPrice(symbol, date) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
let key = symbol + "_" + date;
|
|
52
|
+
if (!this.prices[key])
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
let url = "https://api.coingecko.com/api/v3/coins/" + symbol + "/history?date="
|
|
55
|
+
+ date.substring(6) + "-" + date.substring(4, 6) + "-" + date.substring(0, 4);
|
|
56
|
+
console.log("> url:", url);
|
|
57
|
+
axios_1.default.get(url, { headers: {
|
|
58
|
+
'Content-Type': 'application/json'
|
|
59
|
+
} }).then(response => {
|
|
60
|
+
if (response.data.market_data && response.data.market_data.current_price)
|
|
61
|
+
this.prices[key] = response.data.market_data.current_price[this.pair];
|
|
62
|
+
resolve(this.prices[key]);
|
|
63
|
+
}).catch(err => { resolve(this.prices[key]); });
|
|
64
|
+
});
|
|
65
|
+
return this.prices[key];
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
parseSymbolId(symbol) {
|
|
69
|
+
switch (symbol) {
|
|
70
|
+
case Coin_1.Coin.APE: return "apecoin";
|
|
71
|
+
case Coin_1.Coin.ARTX: return "artx";
|
|
72
|
+
case Coin_1.Coin.ATRI: return "atari";
|
|
73
|
+
case Coin_1.Coin.BTC: return "bitcoin";
|
|
74
|
+
case Coin_1.Coin.CUBE: return "somnium-space-cubes";
|
|
75
|
+
case Coin_1.Coin.DAI: return "dai";
|
|
76
|
+
case Coin_1.Coin.MANA: return "decentraland";
|
|
77
|
+
case Coin_1.Coin.MATIC: return "matic-network";
|
|
78
|
+
case Coin_1.Coin.RARI: return "rarible";
|
|
79
|
+
case Coin_1.Coin.SAND: return "the-sandbox";
|
|
80
|
+
case Coin_1.Coin.SCOTT: return "scotty-beam";
|
|
81
|
+
case Coin_1.Coin.USDC: return "usd-coin";
|
|
82
|
+
case Coin_1.Coin.WBTC: return "bitcoin";
|
|
83
|
+
default: return "ethereum";
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.CoingeckoPriceFinder = CoingeckoPriceFinder;
|
|
88
|
+
//# sourceMappingURL=CoingeckoPriceFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoingeckoPriceFinder.js","sourceRoot":"","sources":["../../../src/web3/coingecko/CoingeckoPriceFinder.ts"],"names":[],"mappings":"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"}
|