itrm-tools 1.0.6 → 1.0.8
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/api/APIRequest.d.ts +4 -2
- package/dist/api/APIRequest.js +13 -8
- package/dist/api/APIRequest.js.map +1 -1
- package/dist/api/APIRouter.d.ts +9 -0
- package/dist/api/APIRouter.js +18 -0
- package/dist/api/APIRouter.js.map +1 -0
- package/dist/api/APIService.d.ts +3 -0
- package/dist/api/APIService.js +6 -1
- package/dist/api/APIService.js.map +1 -1
- package/dist/api/check/APIChecker.d.ts +21 -0
- package/dist/api/check/APIChecker.js +37 -0
- package/dist/api/check/APIChecker.js.map +1 -0
- package/dist/api/check/CheckableAPIRequest.d.ts +3 -18
- package/dist/api/check/CheckableAPIRequest.js +6 -20
- package/dist/api/check/CheckableAPIRequest.js.map +1 -1
- package/dist/api/check/request/CheckableDeleteRequest.d.ts +3 -2
- package/dist/api/check/request/CheckableDeleteRequest.js +4 -1
- package/dist/api/check/request/CheckableDeleteRequest.js.map +1 -1
- package/dist/api/check/request/CheckableGetRequest.d.ts +3 -2
- package/dist/api/check/request/CheckableGetRequest.js +4 -1
- package/dist/api/check/request/CheckableGetRequest.js.map +1 -1
- package/dist/api/check/request/CheckablePostRequest.d.ts +3 -2
- package/dist/api/check/request/CheckablePostRequest.js +4 -1
- package/dist/api/check/request/CheckablePostRequest.js.map +1 -1
- package/dist/api/check/request/CheckablePutRequest.d.ts +3 -2
- package/dist/api/check/request/CheckablePutRequest.js +4 -1
- package/dist/api/check/request/CheckablePutRequest.js.map +1 -1
- package/dist/api/check/route/CheckableAPIRouter.d.ts +9 -0
- package/dist/api/check/route/CheckableAPIRouter.js +35 -0
- package/dist/api/check/route/CheckableAPIRouter.js.map +1 -0
- package/dist/api/express/ExpressStandardConfiguration.js +3 -3
- package/dist/api/express/ExpressStandardConfiguration.js.map +1 -1
- package/dist/api/request/DeleteRequest.d.ts +3 -2
- package/dist/api/request/DeleteRequest.js +4 -1
- package/dist/api/request/DeleteRequest.js.map +1 -1
- package/dist/api/request/GetRequest.d.ts +3 -2
- package/dist/api/request/GetRequest.js +4 -1
- package/dist/api/request/GetRequest.js.map +1 -1
- package/dist/api/request/PostRequest.d.ts +3 -2
- package/dist/api/request/PostRequest.js +4 -1
- package/dist/api/request/PostRequest.js.map +1 -1
- package/dist/api/request/PutRequest.d.ts +3 -2
- package/dist/api/request/PutRequest.js +4 -1
- package/dist/api/request/PutRequest.js.map +1 -1
- package/dist/api/route/SimpleAPIRouter.d.ts +6 -0
- package/dist/api/route/SimpleAPIRouter.js +25 -0
- package/dist/api/route/SimpleAPIRouter.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.js +13 -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/api/APIRequest.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Express, Request, Response } from 'express';
|
|
1
|
+
import { Express, Request, Response, Router } from 'express';
|
|
2
2
|
export declare enum RequestMethod {
|
|
3
3
|
GET = "GET",
|
|
4
4
|
POST = "POST",
|
|
@@ -24,10 +24,12 @@ export declare abstract class APIRequest {
|
|
|
24
24
|
path: string;
|
|
25
25
|
private params;
|
|
26
26
|
constructor(method: RequestMethod, config: APIRequestConfig);
|
|
27
|
-
abstract
|
|
27
|
+
abstract addToApp(app: Express): void;
|
|
28
|
+
abstract addToRouter(router: Router): void;
|
|
28
29
|
abstract apply(req: Request, res: Response): Promise<any>;
|
|
29
30
|
process(req: Request, res: Response): Promise<any>;
|
|
30
31
|
private checkParameters;
|
|
32
|
+
private buildResponseMessage;
|
|
31
33
|
private buildMissingParametersMessage;
|
|
32
34
|
private findMissingParameters;
|
|
33
35
|
}
|
package/dist/api/APIRequest.js
CHANGED
|
@@ -34,24 +34,29 @@ class APIRequest {
|
|
|
34
34
|
process(req, res) {
|
|
35
35
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
36
|
let request = APIService_1.ITRMAPIServiceGlobal.requests[req.method + "_" + req.route.path];
|
|
37
|
-
let check = request.checkParameters(req
|
|
37
|
+
let check = request.checkParameters(req);
|
|
38
38
|
for (let key of Object.keys(check))
|
|
39
39
|
if (check[key].status !== 'OK')
|
|
40
40
|
return yield res.status(400).json(check[key]);
|
|
41
41
|
return yield request.apply(req, res);
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
|
-
checkParameters(req
|
|
44
|
+
checkParameters(req) {
|
|
45
45
|
let result = {};
|
|
46
|
-
for (let group of
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
result[group.context] =
|
|
46
|
+
for (let group of this.params)
|
|
47
|
+
if (req[group.context]) {
|
|
48
|
+
let missing = this.findMissingParameters(req[group.context], group.properties);
|
|
49
|
+
result[group.context] = this.buildResponseMessage(result[group.context], group.context, missing);
|
|
50
|
+
}
|
|
50
51
|
else
|
|
51
|
-
|
|
52
|
-
}
|
|
52
|
+
return { status: 'Error', message: group.context + " was not found, check your express configuration" };
|
|
53
53
|
return result;
|
|
54
54
|
}
|
|
55
|
+
buildResponseMessage(response, context, missing) {
|
|
56
|
+
if (missing.length > 0)
|
|
57
|
+
return response ? response : { status: 'Error', message: this.buildMissingParametersMessage(context, missing) };
|
|
58
|
+
return { status: 'OK' };
|
|
59
|
+
}
|
|
55
60
|
buildMissingParametersMessage(context, missing) {
|
|
56
61
|
let message = "Parameters";
|
|
57
62
|
for (let i = 0; i < missing.length; i++)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIRequest.js","sourceRoot":"","sources":["../../src/api/APIRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6CAAoD;AAEpD,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,4BAAW,CAAA;IACX,8BAAa,CAAA;IACb,4BAAW,CAAA;IACX,kCAAiB,CAAA;AACrB,CAAC,EALW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAKxB;AAED,IAAY,cAKX;AALD,WAAY,cAAc;IACtB,+BAAa,CAAA;IACb,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;IACjB,iCAAe,CAAA;AACnB,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB;AAYD,MAAsB,UAAU;IAK5B,YAAY,MAAqB,EAAE,MAAwB;QACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,CAAC;
|
|
1
|
+
{"version":3,"file":"APIRequest.js","sourceRoot":"","sources":["../../src/api/APIRequest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NextFunction, Router, RouterOptions, Request, Response } from 'express';
|
|
2
|
+
import { APIRequest } from './APIRequest';
|
|
3
|
+
export declare abstract class APIRouter {
|
|
4
|
+
path: string;
|
|
5
|
+
router: Router;
|
|
6
|
+
constructor(path: string, options?: RouterOptions);
|
|
7
|
+
addRequest(request: APIRequest): void;
|
|
8
|
+
protected abstract middleware(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APIRouter = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const APIService_1 = require("./APIService");
|
|
6
|
+
class APIRouter {
|
|
7
|
+
constructor(path, options) {
|
|
8
|
+
this.path = path;
|
|
9
|
+
this.router = (0, express_1.Router)(options);
|
|
10
|
+
this.router.use(this.middleware);
|
|
11
|
+
}
|
|
12
|
+
addRequest(request) {
|
|
13
|
+
APIService_1.ITRMAPIServiceGlobal.requests[request.method + "_" + this.path + request.path] = request;
|
|
14
|
+
request.addToRouter(this.router);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.APIRouter = APIRouter;
|
|
18
|
+
//# sourceMappingURL=APIRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"APIRouter.js","sourceRoot":"","sources":["../../src/api/APIRouter.ts"],"names":[],"mappings":";;;AAAA,qCAAgF;AAEhF,6CAAoD;AAEpD,MAAsB,SAAS;IAI3B,YAAY,IAAY,EAAE,OAAuB;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAEM,UAAU,CAAC,OAAmB;QACjC,iCAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QACzF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;CAGJ;AAhBD,8BAgBC"}
|
package/dist/api/APIService.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { Express } from 'express';
|
|
2
2
|
import { APIRequest } from './APIRequest';
|
|
3
|
+
import { APIRouter } from './APIRouter';
|
|
3
4
|
import { ExpressConfiguration } from './ExpressConfiguration';
|
|
4
5
|
export declare namespace ITRMAPIServiceGlobal {
|
|
5
6
|
var memory: any;
|
|
6
7
|
var service: APIService | undefined;
|
|
7
8
|
var requests: any;
|
|
9
|
+
var routers: any;
|
|
8
10
|
var whitelist: string[];
|
|
9
11
|
}
|
|
10
12
|
export declare interface APIServiceConfig {
|
|
@@ -25,6 +27,7 @@ export declare class APIService {
|
|
|
25
27
|
protected config: ExpressConfiguration;
|
|
26
28
|
constructor(config: APIServiceConfig);
|
|
27
29
|
init(): void;
|
|
30
|
+
addRouter(router: APIRouter): void;
|
|
28
31
|
addRequest(request: APIRequest): void;
|
|
29
32
|
run(init: Function): Promise<APIServiceResponse>;
|
|
30
33
|
close(finish: Function): Promise<APIServiceResponse>;
|
package/dist/api/APIService.js
CHANGED
|
@@ -19,6 +19,7 @@ var ITRMAPIServiceGlobal;
|
|
|
19
19
|
ITRMAPIServiceGlobal.memory = {};
|
|
20
20
|
ITRMAPIServiceGlobal.service = undefined;
|
|
21
21
|
ITRMAPIServiceGlobal.requests = {};
|
|
22
|
+
ITRMAPIServiceGlobal.routers = {};
|
|
22
23
|
ITRMAPIServiceGlobal.whitelist = [];
|
|
23
24
|
})(ITRMAPIServiceGlobal = exports.ITRMAPIServiceGlobal || (exports.ITRMAPIServiceGlobal = {}));
|
|
24
25
|
class APIService {
|
|
@@ -36,9 +37,13 @@ class APIService {
|
|
|
36
37
|
return res.send('Server working!');
|
|
37
38
|
});
|
|
38
39
|
}
|
|
40
|
+
addRouter(router) {
|
|
41
|
+
ITRMAPIServiceGlobal.routers[router.path] = router;
|
|
42
|
+
this.app.use(router.path, router.router);
|
|
43
|
+
}
|
|
39
44
|
addRequest(request) {
|
|
40
45
|
ITRMAPIServiceGlobal.requests[request.method + "_" + request.path] = request;
|
|
41
|
-
request.
|
|
46
|
+
request.addToApp(this.app);
|
|
42
47
|
}
|
|
43
48
|
run(init) {
|
|
44
49
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIService.js","sourceRoot":"","sources":["../../src/api/APIService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA8D;
|
|
1
|
+
{"version":3,"file":"APIService.js","sourceRoot":"","sources":["../../src/api/APIService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Request, Response } from "express";
|
|
2
|
+
export declare interface APICheckResult {
|
|
3
|
+
approved: boolean;
|
|
4
|
+
rejection?: {
|
|
5
|
+
code: number;
|
|
6
|
+
payload: any;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export declare interface APICheckConfig {
|
|
10
|
+
check: string;
|
|
11
|
+
}
|
|
12
|
+
export interface APICheck {
|
|
13
|
+
getConfig(): APICheckConfig;
|
|
14
|
+
apply(config: APICheckConfig, req: Request): PromiseLike<APICheckResult>;
|
|
15
|
+
}
|
|
16
|
+
export declare class APIChecker {
|
|
17
|
+
private checks;
|
|
18
|
+
addCheck(checker: APICheck): void;
|
|
19
|
+
applyChecks(req: Request): Promise<APICheckResult>;
|
|
20
|
+
reject(res: Response, result: APICheckResult): Response<any, Record<string, any>>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.APIChecker = void 0;
|
|
13
|
+
class APIChecker {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.checks = [];
|
|
16
|
+
}
|
|
17
|
+
addCheck(checker) {
|
|
18
|
+
this.checks.push(checker);
|
|
19
|
+
}
|
|
20
|
+
applyChecks(req) {
|
|
21
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
for (let checker of this.checks) {
|
|
23
|
+
let result = yield checker.apply(checker.getConfig(), req);
|
|
24
|
+
if (!result.approved)
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
return { approved: true };
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
reject(res, result) {
|
|
31
|
+
if (result.rejection)
|
|
32
|
+
return res.status(result.rejection.code).json(result.rejection.payload);
|
|
33
|
+
return res.status(401).json({ message: 'Unknown reason' });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.APIChecker = APIChecker;
|
|
37
|
+
//# sourceMappingURL=APIChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"APIChecker.js","sourceRoot":"","sources":["../../../src/api/check/APIChecker.ts"],"names":[],"mappings":";;;;;;;;;;;;AAmBA,MAAa,UAAU;IAAvB;QACY,WAAM,GAAe,EAAE,CAAC;IAoBpC,CAAC;IAlBU,QAAQ,CAAC,OAAiB;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEY,WAAW,CAAC,GAAY;;YACjC,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC7B,IAAI,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ;oBAChB,OAAO,MAAM,CAAC;aACrB;YACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;KAAA;IAEM,MAAM,CAAC,GAAa,EAAE,MAAsB;QAC/C,IAAI,MAAM,CAAC,SAAS;YAChB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC/D,CAAC;CACJ;AArBD,gCAqBC"}
|
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
import { Request, Response, NextFunction } from "express";
|
|
2
2
|
import { APIRequest, APIRequestConfig, RequestMethod } from "../APIRequest";
|
|
3
|
-
|
|
4
|
-
approved: boolean;
|
|
5
|
-
rejection?: {
|
|
6
|
-
code: number;
|
|
7
|
-
payload: any;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
export declare interface APICheckConfig {
|
|
11
|
-
check: string;
|
|
12
|
-
}
|
|
13
|
-
export interface APIChecker {
|
|
14
|
-
getConfig(): APICheckConfig;
|
|
15
|
-
apply(config: APICheckConfig, req: Request): PromiseLike<APICheckResult>;
|
|
16
|
-
}
|
|
3
|
+
import { APICheck } from "./APIChecker";
|
|
17
4
|
export declare abstract class CheckableAPIRequest extends APIRequest {
|
|
18
|
-
private
|
|
5
|
+
private checker;
|
|
19
6
|
constructor(method: RequestMethod, config: APIRequestConfig);
|
|
20
|
-
|
|
7
|
+
addCheck(checker: APICheck): void;
|
|
21
8
|
check(req: Request, res: Response, next: NextFunction): Promise<void | Response<any, Record<string, any>>>;
|
|
22
|
-
private reject;
|
|
23
|
-
protected applyChecks(req: Request): Promise<APICheckResult>;
|
|
24
9
|
}
|
|
@@ -12,36 +12,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.CheckableAPIRequest = void 0;
|
|
13
13
|
const APIRequest_1 = require("../APIRequest");
|
|
14
14
|
const APIService_1 = require("../APIService");
|
|
15
|
+
const APIChecker_1 = require("./APIChecker");
|
|
15
16
|
class CheckableAPIRequest extends APIRequest_1.APIRequest {
|
|
16
17
|
constructor(method, config) {
|
|
17
18
|
super(method, config);
|
|
18
|
-
this.
|
|
19
|
+
this.checker = new APIChecker_1.APIChecker();
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
this.
|
|
21
|
+
addCheck(checker) {
|
|
22
|
+
this.checker.addCheck(checker);
|
|
22
23
|
}
|
|
23
24
|
check(req, res, next) {
|
|
24
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
26
|
let request = APIService_1.ITRMAPIServiceGlobal.requests[req.method + "_" + req.route.path];
|
|
26
|
-
let result = yield request.applyChecks(req);
|
|
27
|
+
let result = yield request.checker.applyChecks(req);
|
|
27
28
|
if (result.approved)
|
|
28
29
|
return next();
|
|
29
|
-
return request.reject(res, result);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
reject(res, result) {
|
|
33
|
-
if (result.rejection)
|
|
34
|
-
return res.status(result.rejection.code).json(result.rejection.payload);
|
|
35
|
-
return res.status(401).json({ message: 'Unknown reason' });
|
|
36
|
-
}
|
|
37
|
-
applyChecks(req) {
|
|
38
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
for (let checker of this.checkers) {
|
|
40
|
-
let result = yield checker.apply(checker.getConfig(), req);
|
|
41
|
-
if (!result.approved)
|
|
42
|
-
return result;
|
|
43
|
-
}
|
|
44
|
-
return { approved: true };
|
|
30
|
+
return request.checker.reject(res, result);
|
|
45
31
|
});
|
|
46
32
|
}
|
|
47
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckableAPIRequest.js","sourceRoot":"","sources":["../../../src/api/check/CheckableAPIRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,8CAA4E;AAC5E,8CAAqD;
|
|
1
|
+
{"version":3,"file":"CheckableAPIRequest.js","sourceRoot":"","sources":["../../../src/api/check/CheckableAPIRequest.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,8CAA4E;AAC5E,8CAAqD;AACrD,6CAAoE;AAEpE,MAAsB,mBAAoB,SAAQ,uBAAU;IAGxD,YAAY,MAAqB,EAAE,MAAwB;QACvD,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAHlB,YAAO,GAAe,IAAI,uBAAU,EAAE,CAAC;IAI/C,CAAC;IAEM,QAAQ,CAAC,OAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEY,KAAK,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;;YAC9D,IAAI,OAAO,GAAwB,iCAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpG,IAAI,MAAM,GAAmB,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACnE,IAAI,MAAM,CAAC,QAAQ;gBACf,OAAO,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;KAAA;CACJ;AAlBD,kDAkBC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequestConfig } from "../../APIRequest";
|
|
3
3
|
import { CheckableAPIRequest } from "../CheckableAPIRequest";
|
|
4
4
|
export declare abstract class CheckableDeleteRequest extends CheckableAPIRequest {
|
|
5
5
|
constructor(config: APIRequestConfig);
|
|
6
|
-
|
|
6
|
+
addToApp(app: Express): void;
|
|
7
|
+
addToRouter(router: Router): void;
|
|
7
8
|
}
|
|
@@ -7,9 +7,12 @@ class CheckableDeleteRequest extends CheckableAPIRequest_1.CheckableAPIRequest {
|
|
|
7
7
|
constructor(config) {
|
|
8
8
|
super(APIRequest_1.RequestMethod.DELETE, config);
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
addToApp(app) {
|
|
11
11
|
app.delete(this.path, this.check, this.process);
|
|
12
12
|
}
|
|
13
|
+
addToRouter(router) {
|
|
14
|
+
router.delete(this.path, this.check, this.process);
|
|
15
|
+
}
|
|
13
16
|
}
|
|
14
17
|
exports.CheckableDeleteRequest = CheckableDeleteRequest;
|
|
15
18
|
//# sourceMappingURL=CheckableDeleteRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckableDeleteRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckableDeleteRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,sBAAuB,SAAQ,yCAAmB;IACpE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"CheckableDeleteRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckableDeleteRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,sBAAuB,SAAQ,yCAAmB;IACpE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;CACJ;AAZD,wDAYC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequestConfig } from "../../APIRequest";
|
|
3
3
|
import { CheckableAPIRequest } from "../CheckableAPIRequest";
|
|
4
4
|
export declare abstract class CheckableGetRequest extends CheckableAPIRequest {
|
|
5
5
|
constructor(config: APIRequestConfig);
|
|
6
|
-
|
|
6
|
+
addToApp(app: Express): void;
|
|
7
|
+
addToRouter(router: Router): void;
|
|
7
8
|
}
|
|
@@ -7,9 +7,12 @@ class CheckableGetRequest extends CheckableAPIRequest_1.CheckableAPIRequest {
|
|
|
7
7
|
constructor(config) {
|
|
8
8
|
super(APIRequest_1.RequestMethod.GET, config);
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
addToApp(app) {
|
|
11
11
|
app.get(this.path, this.check, this.process);
|
|
12
12
|
}
|
|
13
|
+
addToRouter(router) {
|
|
14
|
+
router.get(this.path, this.check, this.process);
|
|
15
|
+
}
|
|
13
16
|
}
|
|
14
17
|
exports.CheckableGetRequest = CheckableGetRequest;
|
|
15
18
|
//# sourceMappingURL=CheckableGetRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckableGetRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckableGetRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,mBAAoB,SAAQ,yCAAmB;IACjE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"CheckableGetRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckableGetRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,mBAAoB,SAAQ,yCAAmB;IACjE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;CACJ;AAZD,kDAYC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequestConfig } from "../../APIRequest";
|
|
3
3
|
import { CheckableAPIRequest } from "../CheckableAPIRequest";
|
|
4
4
|
export declare abstract class CheckablePostRequest extends CheckableAPIRequest {
|
|
5
5
|
constructor(config: APIRequestConfig);
|
|
6
|
-
|
|
6
|
+
addToApp(app: Express): void;
|
|
7
|
+
addToRouter(router: Router): void;
|
|
7
8
|
}
|
|
@@ -7,9 +7,12 @@ class CheckablePostRequest extends CheckableAPIRequest_1.CheckableAPIRequest {
|
|
|
7
7
|
constructor(config) {
|
|
8
8
|
super(APIRequest_1.RequestMethod.POST, config);
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
addToApp(app) {
|
|
11
11
|
app.post(this.path, this.check, this.process);
|
|
12
12
|
}
|
|
13
|
+
addToRouter(router) {
|
|
14
|
+
router.post(this.path, this.check, this.process);
|
|
15
|
+
}
|
|
13
16
|
}
|
|
14
17
|
exports.CheckablePostRequest = CheckablePostRequest;
|
|
15
18
|
//# sourceMappingURL=CheckablePostRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckablePostRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckablePostRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,oBAAqB,SAAQ,yCAAmB;IAClE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"CheckablePostRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckablePostRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,oBAAqB,SAAQ,yCAAmB;IAClE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;CACJ;AAZD,oDAYC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequestConfig } from "../../APIRequest";
|
|
3
3
|
import { CheckableAPIRequest } from "../CheckableAPIRequest";
|
|
4
4
|
export declare abstract class CheckablePutRequest extends CheckableAPIRequest {
|
|
5
5
|
constructor(config: APIRequestConfig);
|
|
6
|
-
|
|
6
|
+
addToApp(app: Express): void;
|
|
7
|
+
addToRouter(router: Router): void;
|
|
7
8
|
}
|
|
@@ -7,9 +7,12 @@ class CheckablePutRequest extends CheckableAPIRequest_1.CheckableAPIRequest {
|
|
|
7
7
|
constructor(config) {
|
|
8
8
|
super(APIRequest_1.RequestMethod.PUT, config);
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
addToApp(app) {
|
|
11
11
|
app.put(this.path, this.check, this.process);
|
|
12
12
|
}
|
|
13
|
+
addToRouter(router) {
|
|
14
|
+
router.put(this.path, this.check, this.process);
|
|
15
|
+
}
|
|
13
16
|
}
|
|
14
17
|
exports.CheckablePutRequest = CheckablePutRequest;
|
|
15
18
|
//# sourceMappingURL=CheckablePutRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckablePutRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckablePutRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,mBAAoB,SAAQ,yCAAmB;IACjE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"CheckablePutRequest.js","sourceRoot":"","sources":["../../../../src/api/check/request/CheckablePutRequest.ts"],"names":[],"mappings":";;;AACA,iDAAmE;AACnE,gEAA6D;AAE7D,MAAsB,mBAAoB,SAAQ,yCAAmB;IACjE,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;CACJ;AAZD,kDAYC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RouterOptions, Request, Response, NextFunction } from "express";
|
|
2
|
+
import { APIRouter } from "../../APIRouter";
|
|
3
|
+
import { APICheck } from "../APIChecker";
|
|
4
|
+
export declare class CheckableAPIRouter extends APIRouter {
|
|
5
|
+
private checker;
|
|
6
|
+
constructor(path: string, options?: RouterOptions);
|
|
7
|
+
addCheck(checker: APICheck): void;
|
|
8
|
+
protected middleware(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CheckableAPIRouter = void 0;
|
|
13
|
+
const APIRouter_1 = require("../../APIRouter");
|
|
14
|
+
const APIService_1 = require("../../APIService");
|
|
15
|
+
const APIChecker_1 = require("../APIChecker");
|
|
16
|
+
class CheckableAPIRouter extends APIRouter_1.APIRouter {
|
|
17
|
+
constructor(path, options) {
|
|
18
|
+
super(path, options);
|
|
19
|
+
this.checker = new APIChecker_1.APIChecker();
|
|
20
|
+
}
|
|
21
|
+
addCheck(checker) {
|
|
22
|
+
this.checker.addCheck(checker);
|
|
23
|
+
}
|
|
24
|
+
middleware(req, res, next) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
let request = APIService_1.ITRMAPIServiceGlobal.routers[req.baseUrl];
|
|
27
|
+
let result = yield request.checker.applyChecks(req);
|
|
28
|
+
if (result.approved)
|
|
29
|
+
return next();
|
|
30
|
+
return request.checker.reject(res, result);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.CheckableAPIRouter = CheckableAPIRouter;
|
|
35
|
+
//# sourceMappingURL=CheckableAPIRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CheckableAPIRouter.js","sourceRoot":"","sources":["../../../../src/api/check/route/CheckableAPIRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,+CAA4C;AAC5C,iDAAwD;AACxD,8CAAqE;AAErE,MAAa,kBAAmB,SAAQ,qBAAS;IAG7C,YAAY,IAAY,EAAE,OAAuB;QAC7C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAHjB,YAAO,GAAe,IAAI,uBAAU,EAAE,CAAC;IAI/C,CAAC;IAEM,QAAQ,CAAC,OAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEe,UAAU,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;;YACtE,IAAI,OAAO,GAAuB,iCAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC5E,IAAI,MAAM,GAAmB,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;YACnE,IAAI,MAAM,CAAC,QAAQ;gBACf,OAAO,IAAI,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;KAAA;CACJ;AAlBD,gDAkBC"}
|
|
@@ -4,14 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ExpressStandardConfiguration = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
7
8
|
const cors_1 = __importDefault(require("cors"));
|
|
8
|
-
const body_parser_1 = __importDefault(require("body-parser"));
|
|
9
9
|
const APIService_1 = require("../APIService");
|
|
10
10
|
class ExpressStandardConfiguration {
|
|
11
11
|
apply(app) {
|
|
12
12
|
app.use(ExpressStandardConfiguration.getCorsConfiguration());
|
|
13
|
-
app.use(
|
|
14
|
-
app.use(
|
|
13
|
+
app.use(express_1.default.json({ limit: '50mb' }));
|
|
14
|
+
app.use(express_1.default.urlencoded({ limit: '50mb', extended: true }));
|
|
15
15
|
}
|
|
16
16
|
static getCorsConfiguration() {
|
|
17
17
|
return (0, cors_1.default)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExpressStandardConfiguration.js","sourceRoot":"","sources":["../../../src/api/express/ExpressStandardConfiguration.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ExpressStandardConfiguration.js","sourceRoot":"","sources":["../../../src/api/express/ExpressStandardConfiguration.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA2C;AAC3C,gDAAwB;AAExB,8CAAqD;AAErD,MAAa,4BAA4B;IAC9B,KAAK,CAAC,GAAY;QACrB,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC7D,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,oBAAoB;QAC9B,OAAO,IAAA,cAAI,EAAC;YACR,MAAM,EAAE,UAAU,MAAM,EAAE,QAAQ;gBAC9B,IAAI,SAAS,GAAG,iCAAoB,CAAC,SAAS,CAAC;gBAC/C,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;;oBAErB,QAAQ,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AAlBD,oEAkBC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequest, APIRequestConfig } from "../APIRequest";
|
|
3
3
|
export declare abstract class DeleteRequest extends APIRequest {
|
|
4
4
|
constructor(config: APIRequestConfig);
|
|
5
|
-
|
|
5
|
+
addToApp(app: Express): void;
|
|
6
|
+
addToRouter(router: Router): void;
|
|
6
7
|
}
|
|
@@ -6,9 +6,12 @@ class DeleteRequest extends APIRequest_1.APIRequest {
|
|
|
6
6
|
constructor(config) {
|
|
7
7
|
super(APIRequest_1.RequestMethod.DELETE, config);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
addToApp(app) {
|
|
10
10
|
app.delete(this.path, this.process);
|
|
11
11
|
}
|
|
12
|
+
addToRouter(router) {
|
|
13
|
+
router.delete(this.path, this.process);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
exports.DeleteRequest = DeleteRequest;
|
|
14
17
|
//# sourceMappingURL=DeleteRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeleteRequest.js","sourceRoot":"","sources":["../../../src/api/request/DeleteRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,aAAc,SAAQ,uBAAU;IAClD,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"DeleteRequest.js","sourceRoot":"","sources":["../../../src/api/request/DeleteRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,aAAc,SAAQ,uBAAU;IAClD,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACJ;AAZD,sCAYC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequest, APIRequestConfig } from "../APIRequest";
|
|
3
3
|
export declare abstract class GetRequest extends APIRequest {
|
|
4
4
|
constructor(config: APIRequestConfig);
|
|
5
|
-
|
|
5
|
+
addToApp(app: Express): void;
|
|
6
|
+
addToRouter(router: Router): void;
|
|
6
7
|
}
|
|
@@ -6,9 +6,12 @@ class GetRequest extends APIRequest_1.APIRequest {
|
|
|
6
6
|
constructor(config) {
|
|
7
7
|
super(APIRequest_1.RequestMethod.GET, config);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
addToApp(app) {
|
|
10
10
|
app.get(this.path, this.process);
|
|
11
11
|
}
|
|
12
|
+
addToRouter(router) {
|
|
13
|
+
router.get(this.path, this.process);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
exports.GetRequest = GetRequest;
|
|
14
17
|
//# sourceMappingURL=GetRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GetRequest.js","sourceRoot":"","sources":["../../../src/api/request/GetRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,UAAW,SAAQ,uBAAU;IAC/C,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"GetRequest.js","sourceRoot":"","sources":["../../../src/api/request/GetRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,UAAW,SAAQ,uBAAU;IAC/C,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACJ;AAZD,gCAYC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequest, APIRequestConfig } from "../APIRequest";
|
|
3
3
|
export declare abstract class PostRequest extends APIRequest {
|
|
4
4
|
constructor(config: APIRequestConfig);
|
|
5
|
-
|
|
5
|
+
addToApp(app: Express): void;
|
|
6
|
+
addToRouter(router: Router): void;
|
|
6
7
|
}
|
|
@@ -6,9 +6,12 @@ class PostRequest extends APIRequest_1.APIRequest {
|
|
|
6
6
|
constructor(config) {
|
|
7
7
|
super(APIRequest_1.RequestMethod.POST, config);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
addToApp(app) {
|
|
10
10
|
app.post(this.path, this.process);
|
|
11
11
|
}
|
|
12
|
+
addToRouter(router) {
|
|
13
|
+
router.post(this.path, this.process);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
exports.PostRequest = PostRequest;
|
|
14
17
|
//# sourceMappingURL=PostRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostRequest.js","sourceRoot":"","sources":["../../../src/api/request/PostRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,WAAY,SAAQ,uBAAU;IAChD,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"PostRequest.js","sourceRoot":"","sources":["../../../src/api/request/PostRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,WAAY,SAAQ,uBAAU;IAChD,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;CACJ;AAZD,kCAYC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Express } from "express";
|
|
1
|
+
import { Express, Router } from "express";
|
|
2
2
|
import { APIRequest, APIRequestConfig } from "../APIRequest";
|
|
3
3
|
export declare abstract class PutRequest extends APIRequest {
|
|
4
4
|
constructor(config: APIRequestConfig);
|
|
5
|
-
|
|
5
|
+
addToApp(app: Express): void;
|
|
6
|
+
addToRouter(router: Router): void;
|
|
6
7
|
}
|
|
@@ -6,9 +6,12 @@ class PutRequest extends APIRequest_1.APIRequest {
|
|
|
6
6
|
constructor(config) {
|
|
7
7
|
super(APIRequest_1.RequestMethod.PUT, config);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
addToApp(app) {
|
|
10
10
|
app.put(this.path, this.process);
|
|
11
11
|
}
|
|
12
|
+
addToRouter(router) {
|
|
13
|
+
router.put(this.path, this.process);
|
|
14
|
+
}
|
|
12
15
|
}
|
|
13
16
|
exports.PutRequest = PutRequest;
|
|
14
17
|
//# sourceMappingURL=PutRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PutRequest.js","sourceRoot":"","sources":["../../../src/api/request/PutRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,UAAW,SAAQ,uBAAU;IAC/C,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,
|
|
1
|
+
{"version":3,"file":"PutRequest.js","sourceRoot":"","sources":["../../../src/api/request/PutRequest.ts"],"names":[],"mappings":";;;AACA,8CAA4E;AAE5E,MAAsB,UAAW,SAAQ,uBAAU;IAC/C,YAAY,MAAwB;QAChC,KAAK,CAAC,0BAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ,CAAC,GAAY;QACxB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,MAAc;QAC7B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;CACJ;AAZD,gCAYC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NextFunction, Request, Response, RouterOptions } from "express";
|
|
2
|
+
import { APIRouter } from "../APIRouter";
|
|
3
|
+
export declare class SimpleAPIRouter extends APIRouter {
|
|
4
|
+
constructor(path: string, options?: RouterOptions);
|
|
5
|
+
protected middleware(req: Request, res: Response, next: NextFunction): Promise<void | Response>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SimpleAPIRouter = void 0;
|
|
13
|
+
const APIRouter_1 = require("../APIRouter");
|
|
14
|
+
class SimpleAPIRouter extends APIRouter_1.APIRouter {
|
|
15
|
+
constructor(path, options) {
|
|
16
|
+
super(path, options);
|
|
17
|
+
}
|
|
18
|
+
middleware(req, res, next) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
return next();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.SimpleAPIRouter = SimpleAPIRouter;
|
|
25
|
+
//# sourceMappingURL=SimpleAPIRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleAPIRouter.js","sourceRoot":"","sources":["../../../src/api/route/SimpleAPIRouter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,4CAAyC;AAEzC,MAAa,eAAgB,SAAQ,qBAAS;IAC1C,YAAY,IAAY,EAAE,OAAuB;QAC7C,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzB,CAAC;IAEe,UAAU,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;;YACtE,OAAO,IAAI,EAAE,CAAC;QAClB,CAAC;KAAA;CACJ;AARD,0CAQC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,18 +3,24 @@ export { HttpsAPIService as HttpsAPIService } from './api/HttpsAPIService';
|
|
|
3
3
|
export { ExpressConfiguration as ExpressConfiguration } from './api/ExpressConfiguration';
|
|
4
4
|
export { ExpressStandardConfiguration as ExpressStandardConfiguration } from './api/express/ExpressStandardConfiguration';
|
|
5
5
|
export { APIRequest as APIRequest, RequestMethod as RequestMethod, RequestContext as RequestContext, GroupedParameters as GroupedParameters, APIRequestConfig as APIRequestConfig } from './api/APIRequest';
|
|
6
|
+
export { APIRouter as APIRouter } from './api/APIRouter';
|
|
7
|
+
export { SimpleAPIRouter as SimpleAPIRouter } from './api/route/SimpleAPIRouter';
|
|
6
8
|
export { GetRequest as GetRequest } from './api/request/GetRequest';
|
|
7
9
|
export { PostRequest as PostRequest } from './api/request/PostRequest';
|
|
8
10
|
export { PutRequest as PutRequest } from './api/request/PutRequest';
|
|
9
11
|
export { DeleteRequest as DeleteRequest } from './api/request/DeleteRequest';
|
|
10
|
-
export {
|
|
12
|
+
export { CheckableAPIRequest as CheckableAPIRequest } from './api/check/CheckableAPIRequest';
|
|
13
|
+
export { APICheckResult as APICheckResult, APICheck as APICheck, APIChecker as APIChecker, APICheckConfig as APICheckConfig } from './api/check/APIChecker';
|
|
11
14
|
export { CheckableDeleteRequest as CheckableDeleteRequest } from './api/check/request/CheckableDeleteRequest';
|
|
12
15
|
export { CheckableGetRequest as CheckableGetRequest } from './api/check/request/CheckableGetRequest';
|
|
13
16
|
export { CheckablePostRequest as CheckablePostRequest } from './api/check/request/CheckablePostRequest';
|
|
14
17
|
export { CheckablePutRequest as CheckablePutRequest } from './api/check/request/CheckablePutRequest';
|
|
18
|
+
export { CheckableAPIRouter as CheckableAPIRouter } from './api/check/route/CheckableAPIRouter';
|
|
15
19
|
export { MongooseModelManager as MongooseModelManager } from './database/mongoose/MongooseModelManager';
|
|
16
20
|
export { SequelizeConnection as SequelizeConnection } from './database/sequelize/SequelizeConnection';
|
|
17
21
|
export { SequelizeModelManager as SequelizeModelManager } from './database/sequelize/SequelizeModelManager';
|
|
18
22
|
export { Logger as Logger } from './log/Logger';
|
|
19
23
|
export { LoggerManager as LoggerManager } from './log/LoggerManager';
|
|
20
24
|
export { LoggerWebSocket as LoggerWebSocket } from './log/LoggerWebSocket';
|
|
25
|
+
export { Coin } from './web3/Coin';
|
|
26
|
+
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.CheckableAPIRouter = exports.CheckablePutRequest = exports.CheckablePostRequest = exports.CheckableGetRequest = exports.CheckableDeleteRequest = exports.APIChecker = exports.CheckableAPIRequest = exports.DeleteRequest = exports.PutRequest = exports.PostRequest = exports.GetRequest = exports.SimpleAPIRouter = exports.APIRouter = 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");
|
|
@@ -11,6 +11,10 @@ var APIRequest_1 = require("./api/APIRequest");
|
|
|
11
11
|
Object.defineProperty(exports, "APIRequest", { enumerable: true, get: function () { return APIRequest_1.APIRequest; } });
|
|
12
12
|
Object.defineProperty(exports, "RequestMethod", { enumerable: true, get: function () { return APIRequest_1.RequestMethod; } });
|
|
13
13
|
Object.defineProperty(exports, "RequestContext", { enumerable: true, get: function () { return APIRequest_1.RequestContext; } });
|
|
14
|
+
var APIRouter_1 = require("./api/APIRouter");
|
|
15
|
+
Object.defineProperty(exports, "APIRouter", { enumerable: true, get: function () { return APIRouter_1.APIRouter; } });
|
|
16
|
+
var SimpleAPIRouter_1 = require("./api/route/SimpleAPIRouter");
|
|
17
|
+
Object.defineProperty(exports, "SimpleAPIRouter", { enumerable: true, get: function () { return SimpleAPIRouter_1.SimpleAPIRouter; } });
|
|
14
18
|
var GetRequest_1 = require("./api/request/GetRequest");
|
|
15
19
|
Object.defineProperty(exports, "GetRequest", { enumerable: true, get: function () { return GetRequest_1.GetRequest; } });
|
|
16
20
|
var PostRequest_1 = require("./api/request/PostRequest");
|
|
@@ -21,6 +25,8 @@ var DeleteRequest_1 = require("./api/request/DeleteRequest");
|
|
|
21
25
|
Object.defineProperty(exports, "DeleteRequest", { enumerable: true, get: function () { return DeleteRequest_1.DeleteRequest; } });
|
|
22
26
|
var CheckableAPIRequest_1 = require("./api/check/CheckableAPIRequest");
|
|
23
27
|
Object.defineProperty(exports, "CheckableAPIRequest", { enumerable: true, get: function () { return CheckableAPIRequest_1.CheckableAPIRequest; } });
|
|
28
|
+
var APIChecker_1 = require("./api/check/APIChecker");
|
|
29
|
+
Object.defineProperty(exports, "APIChecker", { enumerable: true, get: function () { return APIChecker_1.APIChecker; } });
|
|
24
30
|
var CheckableDeleteRequest_1 = require("./api/check/request/CheckableDeleteRequest");
|
|
25
31
|
Object.defineProperty(exports, "CheckableDeleteRequest", { enumerable: true, get: function () { return CheckableDeleteRequest_1.CheckableDeleteRequest; } });
|
|
26
32
|
var CheckableGetRequest_1 = require("./api/check/request/CheckableGetRequest");
|
|
@@ -29,6 +35,8 @@ var CheckablePostRequest_1 = require("./api/check/request/CheckablePostRequest")
|
|
|
29
35
|
Object.defineProperty(exports, "CheckablePostRequest", { enumerable: true, get: function () { return CheckablePostRequest_1.CheckablePostRequest; } });
|
|
30
36
|
var CheckablePutRequest_1 = require("./api/check/request/CheckablePutRequest");
|
|
31
37
|
Object.defineProperty(exports, "CheckablePutRequest", { enumerable: true, get: function () { return CheckablePutRequest_1.CheckablePutRequest; } });
|
|
38
|
+
var CheckableAPIRouter_1 = require("./api/check/route/CheckableAPIRouter");
|
|
39
|
+
Object.defineProperty(exports, "CheckableAPIRouter", { enumerable: true, get: function () { return CheckableAPIRouter_1.CheckableAPIRouter; } });
|
|
32
40
|
var MongooseModelManager_1 = require("./database/mongoose/MongooseModelManager");
|
|
33
41
|
Object.defineProperty(exports, "MongooseModelManager", { enumerable: true, get: function () { return MongooseModelManager_1.MongooseModelManager; } });
|
|
34
42
|
var SequelizeConnection_1 = require("./database/sequelize/SequelizeConnection");
|
|
@@ -41,4 +49,8 @@ var LoggerManager_1 = require("./log/LoggerManager");
|
|
|
41
49
|
Object.defineProperty(exports, "LoggerManager", { enumerable: true, get: function () { return LoggerManager_1.LoggerManager; } });
|
|
42
50
|
var LoggerWebSocket_1 = require("./log/LoggerWebSocket");
|
|
43
51
|
Object.defineProperty(exports, "LoggerWebSocket", { enumerable: true, get: function () { return LoggerWebSocket_1.LoggerWebSocket; } });
|
|
52
|
+
var Coin_1 = require("./web3/Coin");
|
|
53
|
+
Object.defineProperty(exports, "Coin", { enumerable: true, get: function () { return Coin_1.Coin; } });
|
|
54
|
+
var CoingeckoPriceFinder_1 = require("./web3/coingecko/CoingeckoPriceFinder");
|
|
55
|
+
Object.defineProperty(exports, "CoingeckoPriceFinder", { enumerable: true, get: function () { return CoingeckoPriceFinder_1.CoingeckoPriceFinder; } });
|
|
44
56
|
//# 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;
|
|
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;AAE3C,2FAA0H;AAAjH,4IAAA,4BAA4B,OAAgC;AACrE,+CAA4M;AAAnM,wGAAA,UAAU,OAAc;AAAE,2GAAA,aAAa,OAAiB;AAAE,4GAAA,cAAc,OAAkB;AACnG,6CAAyD;AAAhD,sGAAA,SAAS,OAAa;AAC/B,+DAAgF;AAAvE,kHAAA,eAAe,OAAmB;AAC3C,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,yDAAuE;AAA9D,0GAAA,WAAW,OAAe;AACnC,uDAAoE;AAA3D,wGAAA,UAAU,OAAc;AACjC,6DAA6E;AAApE,8GAAA,aAAa,OAAiB;AACvC,uEAA6F;AAApF,0HAAA,mBAAmB,OAAuB;AACnD,qDAA4J;AAA3F,wGAAA,UAAU,OAAc;AACzF,qFAA8G;AAArG,gIAAA,sBAAsB,OAA0B;AACzD,+EAAqG;AAA5F,0HAAA,mBAAmB,OAAuB;AACnD,iFAAwG;AAA/F,4HAAA,oBAAoB,OAAwB;AACrD,+EAAqG;AAA5F,0HAAA,mBAAmB,OAAuB;AACnD,2EAAgG;AAAvF,wHAAA,kBAAkB,OAAsB;AAEjD,iFAAwG;AAA/F,4HAAA,oBAAoB,OAAwB;AACrD,gFAAsG;AAA7F,0HAAA,mBAAmB,OAAuB;AACnD,oFAA4G;AAAnG,8HAAA,qBAAqB,OAAyB;AAEvD,uCAAgD;AAAvC,gGAAA,MAAM,OAAU;AACzB,qDAAqE;AAA5D,8GAAA,aAAa,OAAiB;AACvC,yDAA2E;AAAlE,kHAAA,eAAe,OAAmB;AAE3C,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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"}
|