@gaias/basenode 0.0.1
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/.dockerignore +12 -0
- package/.drone.yml +54 -0
- package/.eslintignore +4 -0
- package/.ncurc.json +8 -0
- package/Dockerfile +15 -0
- package/README.adoc +44 -0
- package/README.md +47 -0
- package/dist/deps/Libs.d.ts +10 -0
- package/dist/deps/Libs.js +46 -0
- package/dist/deps/Libs.js.map +1 -0
- package/dist/deps/index.d.ts +1 -0
- package/dist/deps/index.js +18 -0
- package/dist/deps/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/libs/ApiGatewayLoader.d.ts +3 -0
- package/dist/libs/ApiGatewayLoader.js +82 -0
- package/dist/libs/ApiGatewayLoader.js.map +1 -0
- package/dist/libs/ApiRegisterController.d.ts +12 -0
- package/dist/libs/ApiRegisterController.js +245 -0
- package/dist/libs/ApiRegisterController.js.map +1 -0
- package/dist/libs/ApplicationConfig.d.ts +12 -0
- package/dist/libs/ApplicationConfig.js +3 -0
- package/dist/libs/ApplicationConfig.js.map +1 -0
- package/dist/libs/BizError.d.ts +8 -0
- package/dist/libs/BizError.js +14 -0
- package/dist/libs/BizError.js.map +1 -0
- package/dist/libs/CacheService.d.ts +57 -0
- package/dist/libs/CacheService.js +309 -0
- package/dist/libs/CacheService.js.map +1 -0
- package/dist/libs/ConfigManager.d.ts +19 -0
- package/dist/libs/ConfigManager.js +52 -0
- package/dist/libs/ConfigManager.js.map +1 -0
- package/dist/libs/Converter.d.ts +32 -0
- package/dist/libs/Converter.js +148 -0
- package/dist/libs/Converter.js.map +1 -0
- package/dist/libs/CurrentUserToken.d.ts +7 -0
- package/dist/libs/CurrentUserToken.js +3 -0
- package/dist/libs/CurrentUserToken.js.map +1 -0
- package/dist/libs/DistributedEvents.d.ts +13 -0
- package/dist/libs/DistributedEvents.js +102 -0
- package/dist/libs/DistributedEvents.js.map +1 -0
- package/dist/libs/DistributedEventsLoader.d.ts +6 -0
- package/dist/libs/DistributedEventsLoader.js +30 -0
- package/dist/libs/DistributedEventsLoader.js.map +1 -0
- package/dist/libs/EventsManager.d.ts +16 -0
- package/dist/libs/EventsManager.js +56 -0
- package/dist/libs/EventsManager.js.map +1 -0
- package/dist/libs/HealthCheckController.d.ts +24 -0
- package/dist/libs/HealthCheckController.js +83 -0
- package/dist/libs/HealthCheckController.js.map +1 -0
- package/dist/libs/HttpMethods.d.ts +8 -0
- package/dist/libs/HttpMethods.js +80 -0
- package/dist/libs/HttpMethods.js.map +1 -0
- package/dist/libs/IdGenerator.d.ts +1 -0
- package/dist/libs/IdGenerator.js +7 -0
- package/dist/libs/IdGenerator.js.map +1 -0
- package/dist/libs/KoaControllerReturnHandler.d.ts +6 -0
- package/dist/libs/KoaControllerReturnHandler.js +83 -0
- package/dist/libs/KoaControllerReturnHandler.js.map +1 -0
- package/dist/libs/KoaLoader.d.ts +20 -0
- package/dist/libs/KoaLoader.js +177 -0
- package/dist/libs/KoaLoader.js.map +1 -0
- package/dist/libs/Leader.d.ts +39 -0
- package/dist/libs/Leader.js +145 -0
- package/dist/libs/Leader.js.map +1 -0
- package/dist/libs/Logger.d.ts +8 -0
- package/dist/libs/Logger.js +48 -0
- package/dist/libs/Logger.js.map +1 -0
- package/dist/libs/Pagination.d.ts +23 -0
- package/dist/libs/Pagination.js +120 -0
- package/dist/libs/Pagination.js.map +1 -0
- package/dist/libs/RedisClient.d.ts +15 -0
- package/dist/libs/RedisClient.js +84 -0
- package/dist/libs/RedisClient.js.map +1 -0
- package/dist/libs/RedisLoader.d.ts +3 -0
- package/dist/libs/RedisLoader.js +31 -0
- package/dist/libs/RedisLoader.js.map +1 -0
- package/dist/libs/ResRegTypes.d.ts +17 -0
- package/dist/libs/ResRegTypes.js +3 -0
- package/dist/libs/ResRegTypes.js.map +1 -0
- package/dist/libs/Timer.d.ts +13 -0
- package/dist/libs/Timer.js +62 -0
- package/dist/libs/Timer.js.map +1 -0
- package/dist/libs/TypeormLoader.d.ts +8 -0
- package/dist/libs/TypeormLoader.js +49 -0
- package/dist/libs/TypeormLoader.js.map +1 -0
- package/dist/libs/ValidationHelper.d.ts +13 -0
- package/dist/libs/ValidationHelper.js +73 -0
- package/dist/libs/ValidationHelper.js.map +1 -0
- package/dist/libs/apisix/ApisixTemplate.d.ts +6 -0
- package/dist/libs/apisix/ApisixTemplate.js +88 -0
- package/dist/libs/apisix/ApisixTemplate.js.map +1 -0
- package/dist/libs/apisix/HttpPutter.d.ts +1 -0
- package/dist/libs/apisix/HttpPutter.js +51 -0
- package/dist/libs/apisix/HttpPutter.js.map +1 -0
- package/dist/libs/apisix/index.d.ts +2 -0
- package/dist/libs/apisix/index.js +19 -0
- package/dist/libs/apisix/index.js.map +1 -0
- package/dist/libs/i18nValidator.d.ts +3 -0
- package/dist/libs/i18nValidator.js +38 -0
- package/dist/libs/i18nValidator.js.map +1 -0
- package/dist/libs/index.d.ts +28 -0
- package/dist/libs/index.js +45 -0
- package/dist/libs/index.js.map +1 -0
- package/dist/libs/types.d.ts +3 -0
- package/dist/libs/types.js +3 -0
- package/dist/libs/types.js.map +1 -0
- package/dist/server/bootstrap.d.ts +14 -0
- package/dist/server/bootstrap.js +63 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +18 -0
- package/dist/server/index.js.map +1 -0
- package/dist/utils/YamlUtil.d.ts +1 -0
- package/dist/utils/YamlUtil.js +43 -0
- package/dist/utils/YamlUtil.js.map +1 -0
- package/dist/utils/crypto.d.ts +9 -0
- package/dist/utils/crypto.js +34 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jwtUtil.d.ts +9 -0
- package/dist/utils/jwtUtil.js +41 -0
- package/dist/utils/jwtUtil.js.map +1 -0
- package/dist/utils/transformer.d.ts +9 -0
- package/dist/utils/transformer.js +44 -0
- package/dist/utils/transformer.js.map +1 -0
- package/gen_db.json +7 -0
- package/package.json +127 -0
|
@@ -0,0 +1,84 @@
|
|
|
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.RedisClient = void 0;
|
|
16
|
+
const ioredis_1 = __importDefault(require("ioredis"));
|
|
17
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
18
|
+
const Logger_1 = require("./Logger");
|
|
19
|
+
class RedisClient {
|
|
20
|
+
constructor(redisCfg) {
|
|
21
|
+
this.redisCfg = redisCfg;
|
|
22
|
+
this.logger = Logger_1.Logger.getLogger(RedisClient);
|
|
23
|
+
this.redis = this.newClient();
|
|
24
|
+
}
|
|
25
|
+
newClient() {
|
|
26
|
+
return new ioredis_1.default(this.redisCfg);
|
|
27
|
+
}
|
|
28
|
+
saveCounter(counterName, counter, overwrite = false) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
if (overwrite) {
|
|
31
|
+
yield this.redis.hset(counterName, counter);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const pl = this.redis.multi();
|
|
35
|
+
Object.keys(counter).forEach((field) => {
|
|
36
|
+
const value = counter[field];
|
|
37
|
+
if (!lodash_1.default.isNil(value)) {
|
|
38
|
+
pl.hsetnx(counterName, field, value);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
yield pl.exec();
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
increaseCounter(counterName, name, step = 1) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
return this.redis.hincrby(counterName, name, step);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
decreaseCounter(counterName, name, step = 1) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
return this.redis.hincrby(counterName, name, 0 - step);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
removeCounter(counterName, name) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
if (typeof name === 'string') {
|
|
58
|
+
return this.redis.hdel(counterName, name);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const pl = this.redis.multi();
|
|
62
|
+
name.forEach((n) => pl.hdel(counterName, n));
|
|
63
|
+
return pl.exec();
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
getCounterKeys(counterName) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
return this.redis.hkeys(counterName);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getCounterValues(counterName, name) {
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
if (typeof name === 'string') {
|
|
75
|
+
return this.redis.hget(counterName, name);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return this.redis.hmget(counterName, name);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.RedisClient = RedisClient;
|
|
84
|
+
//# sourceMappingURL=RedisClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedisClient.js","sourceRoot":"","sources":["../../../src/libs/RedisClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sDAA8B;AAC9B,oDAAuB;AACvB,qCAAkC;AAElC,MAAa,WAAW;IAKtB,YAA4B,QAAsB;QAAtB,aAAQ,GAAR,QAAQ,CAAc;QAJlD,WAAM,GAAG,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAKrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,iBAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAEK,WAAW,CAAC,WAAmB,EAAE,OAA+B,EAAE,SAAS,GAAG,KAAK;;YACvF,IAAI,SAAS,EAAE;gBACb,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;aAC7C;iBAAM;gBACL,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC7B,IAAI,CAAC,gBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;wBACnB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;qBACtC;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;aACjB;QACH,CAAC;KAAA;IAEK,eAAe,CAAC,WAAmB,EAAE,IAAY,EAAE,IAAI,GAAG,CAAC;;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;KAAA;IAEK,eAAe,CAAC,WAAmB,EAAE,IAAY,EAAE,IAAI,GAAG,CAAC;;YAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACzD,CAAC;KAAA;IAEK,aAAa,CAAC,WAAmB,EAAE,IAAuB;;YAC9D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAC3C;iBAAM;gBACL,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;aAClB;QACH,CAAC;KAAA;IAEK,cAAc,CAAC,WAAmB;;YACtC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;KAAA;IAEK,gBAAgB,CAAC,WAAmB,EAAE,IAAuB;;YACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAC3C;iBAAM;gBACL,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAC5C;QACH,CAAC;KAAA;CACF;AAzDD,kCAyDC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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.redisLoader = void 0;
|
|
13
|
+
const typedi_1 = require("typedi");
|
|
14
|
+
const ConfigManager_1 = require("./ConfigManager");
|
|
15
|
+
const Logger_1 = require("./Logger");
|
|
16
|
+
const RedisClient_1 = require("./RedisClient");
|
|
17
|
+
const redisLoader = (option) => (settings) => {
|
|
18
|
+
const cfg = ConfigManager_1.ConfigManager.getConfig('database');
|
|
19
|
+
const redisClient = new RedisClient_1.RedisClient(cfg.redis);
|
|
20
|
+
typedi_1.Container.set(RedisClient_1.RedisClient, redisClient);
|
|
21
|
+
const { redis } = redisClient;
|
|
22
|
+
settings === null || settings === void 0 ? void 0 : settings.onShutdown(() => __awaiter(void 0, void 0, void 0, function* () { return redis.disconnect(); }));
|
|
23
|
+
Logger_1.Logger.getLogger('RedisLoader').info(`🔗Redis connected.`);
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
redis.once('connect', () => {
|
|
26
|
+
resolve();
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
exports.redisLoader = redisLoader;
|
|
31
|
+
//# sourceMappingURL=RedisLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RedisLoader.js","sourceRoot":"","sources":["../../../src/libs/RedisLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,mCAAmC;AAEnC,mDAAgD;AAChD,qCAAkC;AAClC,+CAA4C;AAKrC,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAE,EAAE,CAAC,CAAC,QAAiC,EAAE,EAAE;IAC9F,MAAM,GAAG,GAAG,6BAAa,CAAC,SAAS,CAAiB,UAAU,CAAC,CAAC;IAChE,MAAM,WAAW,GAAgB,IAAI,yBAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5D,kBAAS,CAAC,GAAG,CAAC,yBAAW,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC;IAC9B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,GAAS,EAAE,kDAAC,OAAA,KAAK,CAAC,UAAU,EAAE,CAAA,GAAA,CAAC,CAAC;IACrD,eAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE3D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAbW,QAAA,WAAW,eAatB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare type HttpMethodsRegistry = {
|
|
2
|
+
[parentPath: string]: {
|
|
3
|
+
[path: string]: Array<{
|
|
4
|
+
app: string | string[];
|
|
5
|
+
functionName: string;
|
|
6
|
+
method: string;
|
|
7
|
+
_apiName: string;
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export declare type UIRegistry = {
|
|
12
|
+
[uiName: string]: {
|
|
13
|
+
app: string | string[];
|
|
14
|
+
functionName: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export declare type MenuRegistry = UIRegistry;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResRegTypes.js","sourceRoot":"","sources":["../../../src/libs/ResRegTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'eventemitter3';
|
|
3
|
+
export declare const TIME_EVENT = "FmkTimer.TimeIsUp";
|
|
4
|
+
declare type Handlers = Record<string, () => any>;
|
|
5
|
+
export declare class FmkTimer extends EventEmitter {
|
|
6
|
+
timer: Record<number, [NodeJS.Timer, Handlers]>;
|
|
7
|
+
private start;
|
|
8
|
+
stop(): void;
|
|
9
|
+
offTimer(name: string): void;
|
|
10
|
+
onTimer(name: string, callback: () => any, interval?: number): void;
|
|
11
|
+
}
|
|
12
|
+
export declare const fmkTimer: FmkTimer;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fmkTimer = exports.FmkTimer = exports.TIME_EVENT = void 0;
|
|
7
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
exports.TIME_EVENT = 'FmkTimer.TimeIsUp';
|
|
10
|
+
class FmkTimer extends eventemitter3_1.EventEmitter {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.timer = {};
|
|
14
|
+
}
|
|
15
|
+
start(interval = 1) {
|
|
16
|
+
const time = interval * 1000;
|
|
17
|
+
if (!this.timer[time]) {
|
|
18
|
+
this.timer[time] = [
|
|
19
|
+
setInterval(() => {
|
|
20
|
+
this.emit(`${exports.TIME_EVENT}#${interval}s`);
|
|
21
|
+
}, time),
|
|
22
|
+
{},
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
stop() {
|
|
27
|
+
Object.values(this.timer)
|
|
28
|
+
.map((v) => v[0])
|
|
29
|
+
.forEach(clearInterval);
|
|
30
|
+
}
|
|
31
|
+
offTimer(name) {
|
|
32
|
+
Object.values(this.timer)
|
|
33
|
+
.map((v) => v[1])
|
|
34
|
+
.filter((handler) => {
|
|
35
|
+
return !lodash_1.default.isNil(handler[name]);
|
|
36
|
+
})
|
|
37
|
+
.forEach((handler) => {
|
|
38
|
+
delete handler[name];
|
|
39
|
+
});
|
|
40
|
+
Object.keys(this.timer)
|
|
41
|
+
.filter((key) => {
|
|
42
|
+
return Object.keys(this.timer[key][1]).length === 0;
|
|
43
|
+
})
|
|
44
|
+
.forEach((key) => {
|
|
45
|
+
clearInterval(this.timer[key][0]);
|
|
46
|
+
delete this.timer[key];
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
onTimer(name, callback, interval = 1) {
|
|
50
|
+
const time = interval * 1000;
|
|
51
|
+
if (!this.timer[time]) {
|
|
52
|
+
this.start(interval);
|
|
53
|
+
this.on(`${exports.TIME_EVENT}#${interval}s`, () => {
|
|
54
|
+
Promise.all(Object.values(this.timer[time][1]).map((cb) => Promise.resolve(cb())));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
this.timer[time][1][name] = callback;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.FmkTimer = FmkTimer;
|
|
61
|
+
exports.fmkTimer = new FmkTimer();
|
|
62
|
+
//# sourceMappingURL=Timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../src/libs/Timer.ts"],"names":[],"mappings":";;;;;;AAAA,iDAA6C;AAC7C,oDAAuB;AAEV,QAAA,UAAU,GAAG,mBAAmB,CAAC;AAI9C,MAAa,QAAS,SAAQ,4BAAY;IAA1C;;QACE,UAAK,GAA6C,EAAE,CAAC;IAiDvD,CAAC;IA/CS,KAAK,CAAC,QAAQ,GAAG,CAAC;QACxB,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;gBACjB,WAAW,CAAC,GAAG,EAAE;oBACf,IAAI,CAAC,IAAI,CAAC,GAAG,kBAAU,IAAI,QAAQ,GAAG,CAAC,CAAC;gBAC1C,CAAC,EAAE,IAAI,CAAC;gBACR,EAAE;aACH,CAAC;SACH;IACH,CAAC;IAED,IAAI;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAChB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,CAAC,gBAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;aACpB,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE;YACnB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC;aACD,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;YACpB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,QAAmB,EAAE,QAAQ,GAAG,CAAC;QACrD,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,CAAC,EAAE,CAAC,GAAG,kBAAU,IAAI,QAAQ,GAAG,EAAE,GAAG,EAAE;gBACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACrF,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;IACvC,CAAC;CACF;AAlDD,4BAkDC;AAEY,QAAA,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MicroframeworkSettings } from 'microframework';
|
|
2
|
+
import 'reflect-metadata';
|
|
3
|
+
import { ClassType } from './types';
|
|
4
|
+
export declare type TypeormLoaderOption = {
|
|
5
|
+
entities?: ClassType[];
|
|
6
|
+
synchronize?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare const typeormLoader: (option: TypeormLoaderOption) => (settings?: MicroframeworkSettings) => Promise<import("typeorm").Connection>;
|
|
@@ -0,0 +1,49 @@
|
|
|
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.typeormLoader = void 0;
|
|
13
|
+
const os_1 = require("os");
|
|
14
|
+
require("reflect-metadata");
|
|
15
|
+
const typedi_1 = require("typedi");
|
|
16
|
+
const typeorm_1 = require("typeorm");
|
|
17
|
+
const typeorm_transactional_cls_hooked_1 = require("typeorm-transactional-cls-hooked");
|
|
18
|
+
const url_1 = require("url");
|
|
19
|
+
const ConfigManager_1 = require("./ConfigManager");
|
|
20
|
+
const Logger_1 = require("./Logger");
|
|
21
|
+
(0, typeorm_transactional_cls_hooked_1.initializeTransactionalContext)();
|
|
22
|
+
(0, typeorm_transactional_cls_hooked_1.patchTypeORMRepositoryWithBaseRepository)();
|
|
23
|
+
let dbUrl;
|
|
24
|
+
const typeormLoader = (option) => (settings) => {
|
|
25
|
+
var _a;
|
|
26
|
+
const entities = option.entities || [];
|
|
27
|
+
(0, typeorm_1.useContainer)(typedi_1.Container);
|
|
28
|
+
const cfg = ConfigManager_1.ConfigManager.getConfig('database');
|
|
29
|
+
dbUrl = new url_1.URL(cfg.mariaDBUrl);
|
|
30
|
+
return (0, typeorm_1.createConnection)({
|
|
31
|
+
type: 'mariadb',
|
|
32
|
+
url: cfg.mariaDBUrl,
|
|
33
|
+
charset: 'utf8mb4',
|
|
34
|
+
synchronize: (_a = option.synchronize) !== null && _a !== void 0 ? _a : false,
|
|
35
|
+
logging: ConfigManager_1.ConfigManager.isDevelopment(),
|
|
36
|
+
entities,
|
|
37
|
+
extra: {
|
|
38
|
+
waitForConnections: true,
|
|
39
|
+
connectionLimit: (0, os_1.cpus)().length * 2 + 1,
|
|
40
|
+
},
|
|
41
|
+
}).then((conn) => {
|
|
42
|
+
settings === null || settings === void 0 ? void 0 : settings.onShutdown(() => __awaiter(void 0, void 0, void 0, function* () { return conn.close(); }));
|
|
43
|
+
const logger = Logger_1.Logger.getLogger('TypeormLoader');
|
|
44
|
+
logger.info(`🔗Database connected to ${dbUrl === null || dbUrl === void 0 ? void 0 : dbUrl.hostname}:${dbUrl === null || dbUrl === void 0 ? void 0 : dbUrl.port}${dbUrl === null || dbUrl === void 0 ? void 0 : dbUrl.pathname}. CPU: ${(0, os_1.cpus)().length}`);
|
|
45
|
+
return conn;
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
exports.typeormLoader = typeormLoader;
|
|
49
|
+
//# sourceMappingURL=TypeormLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeormLoader.js","sourceRoot":"","sources":["../../../src/libs/TypeormLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2BAA0B;AAC1B,4BAA0B;AAC1B,mCAAmC;AACnC,qCAAyD;AACzD,uFAA4H;AAC5H,6BAA0B;AAE1B,mDAAgD;AAChD,qCAAkC;AAElC,IAAA,iEAA8B,GAAE,CAAC;AACjC,IAAA,2EAAwC,GAAE,CAAC;AAM3C,IAAI,KAAU,CAAC;AACR,MAAM,aAAa,GAAG,CAAC,MAA2B,EAAE,EAAE,CAAC,CAAC,QAAiC,EAAE,EAAE;;IAClG,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACvC,IAAA,sBAAY,EAAC,kBAAS,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,6BAAa,CAAC,SAAS,CAAiB,UAAU,CAAC,CAAC;IAChE,KAAK,GAAG,IAAI,SAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO,IAAA,0BAAgB,EAAC;QACtB,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,GAAG,CAAC,UAAU;QACnB,OAAO,EAAE,SAAS;QAElB,WAAW,EAAE,MAAA,MAAM,CAAC,WAAW,mCAAI,KAAK;QACxC,OAAO,EAAE,6BAAa,CAAC,aAAa,EAAE;QACtC,QAAQ;QACR,KAAK,EAAE;YACL,kBAAkB,EAAE,IAAI;YACxB,eAAe,EAAE,IAAA,SAAI,GAAE,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC;SACvC;KACF,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAC,GAAS,EAAE,kDAAC,OAAA,IAAI,CAAC,KAAK,EAAE,CAAA,GAAA,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,eAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,2BAA2B,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,UAAU,IAAA,SAAI,GAAE,CAAC,MAAM,EAAE,CAAC,CAAC;QAClH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAvBW,QAAA,aAAa,iBAuBxB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidatorOptions } from 'class-validator';
|
|
2
|
+
export declare type ValidationParam = {
|
|
3
|
+
result: boolean | Promise<boolean>;
|
|
4
|
+
property: string;
|
|
5
|
+
msgKey: string;
|
|
6
|
+
param?: any;
|
|
7
|
+
};
|
|
8
|
+
export declare class ValidationHelper {
|
|
9
|
+
static mustBeArray(obj: any): Promise<boolean>;
|
|
10
|
+
static mustNotBeArray(obj: any): Promise<boolean>;
|
|
11
|
+
static check(...params: ValidationParam[]): Promise<boolean>;
|
|
12
|
+
static validateOrReject(object: object, validatorOptions?: ValidatorOptions | undefined): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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.ValidationHelper = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const routing_controllers_1 = require("routing-controllers");
|
|
15
|
+
class ValidationHelper {
|
|
16
|
+
static mustBeArray(obj) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
return ValidationHelper.check({
|
|
19
|
+
result: Array.isArray(obj),
|
|
20
|
+
property: '',
|
|
21
|
+
msgKey: 'input.mustBeArray.',
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
static mustNotBeArray(obj) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
return ValidationHelper.check({
|
|
28
|
+
result: !Array.isArray(obj),
|
|
29
|
+
property: '',
|
|
30
|
+
msgKey: 'input.mustNotBeArray.',
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
static check(...params) {
|
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
const validateErrors = new Array();
|
|
37
|
+
yield Promise.all(params.map((p) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const checkResult = yield Promise.resolve(p.result);
|
|
39
|
+
if (!checkResult) {
|
|
40
|
+
const err = new class_validator_1.ValidationError();
|
|
41
|
+
err.property = p.property;
|
|
42
|
+
err.constraints = {
|
|
43
|
+
validationError: JSON.stringify({
|
|
44
|
+
key: p.msgKey,
|
|
45
|
+
param: p.param,
|
|
46
|
+
}),
|
|
47
|
+
};
|
|
48
|
+
validateErrors.push(err);
|
|
49
|
+
}
|
|
50
|
+
})));
|
|
51
|
+
if (validateErrors.length > 0) {
|
|
52
|
+
const httpErr = new routing_controllers_1.BadRequestError(`Invalid input, check 'errors' property for more info.`);
|
|
53
|
+
httpErr.errors = validateErrors;
|
|
54
|
+
throw httpErr;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
static validateOrReject(object, validatorOptions) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const errors = yield (0, class_validator_1.validate)(object, validatorOptions);
|
|
64
|
+
if (errors.length > 0) {
|
|
65
|
+
const httpErr = new routing_controllers_1.BadRequestError(`Invalid input, check 'errors' property for more info.`);
|
|
66
|
+
httpErr.errors = errors;
|
|
67
|
+
throw httpErr;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.ValidationHelper = ValidationHelper;
|
|
73
|
+
//# sourceMappingURL=ValidationHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidationHelper.js","sourceRoot":"","sources":["../../../src/libs/ValidationHelper.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,qDAA8E;AAC9E,6DAAsD;AAStD,MAAa,gBAAgB;IAC3B,MAAM,CAAO,WAAW,CAAC,GAAQ;;YAC/B,OAAO,gBAAgB,CAAC,KAAK,CAAC;gBAC5B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC1B,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,oBAAoB;aAC7B,CAAC,CAAC;QACL,CAAC;KAAA;IAED,MAAM,CAAO,cAAc,CAAC,GAAQ;;YAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC;gBAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;gBAC3B,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,uBAAuB;aAChC,CAAC,CAAC;QACL,CAAC;KAAA;IAED,MAAM,CAAO,KAAK,CAAC,GAAG,MAAyB;;YAC7C,MAAM,cAAc,GAAG,IAAI,KAAK,EAAmB,CAAC;YACpD,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,CAAO,CAAC,EAAE,EAAE;gBACrB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,CAAC,WAAW,EAAE;oBAChB,MAAM,GAAG,GAAG,IAAI,iCAAe,EAAE,CAAC;oBAClC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;oBAC1B,GAAG,CAAC,WAAW,GAAG;wBAChB,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC;4BAC9B,GAAG,EAAE,CAAC,CAAC,MAAM;4BACb,KAAK,EAAE,CAAC,CAAC,KAAK;yBACf,CAAC;qBACH,CAAC;oBACF,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC1B;YACH,CAAC,CAAA,CAAC,CACH,CAAC;YACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,OAAO,GAAG,IAAI,qCAAe,CAAC,uDAAuD,CAAQ,CAAC;gBACpG,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC;gBAChC,MAAM,OAAO,CAAC;aACf;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KAAA;IAED,MAAM,CAAO,gBAAgB,CAAC,MAAc,EAAE,gBAA+C;;YAC3F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAQ,EAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACxD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,MAAM,OAAO,GAAG,IAAI,qCAAe,CAAC,uDAAuD,CAAQ,CAAC;gBACpG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;gBACxB,MAAM,OAAO,CAAC;aACf;QACH,CAAC;KAAA;CACF;AApDD,4CAoDC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const upstreamUriTemplate: (appName: string) => string;
|
|
2
|
+
export declare const upstreamTemplate: (appName: string, version: string, port: number) => string;
|
|
3
|
+
export declare const serviceUriTemplate: (appName: string) => string;
|
|
4
|
+
export declare const serviceTemplate: (appName: string, enableApiGatewayAuth?: boolean) => string;
|
|
5
|
+
export declare const routeUriTemplate: (appName: string) => string;
|
|
6
|
+
export declare const routeTemplate: (appName: string, domains: string[], apiVersion: string, build: string, version: string) => string;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.routeTemplate = exports.routeUriTemplate = exports.serviceTemplate = exports.serviceUriTemplate = exports.upstreamTemplate = exports.upstreamUriTemplate = void 0;
|
|
4
|
+
const crypto_1 = require("../../utils/crypto");
|
|
5
|
+
const upstreamUriTemplate = (appName) => `/apisix/admin/upstreams/${crypto_1.crypto.md5(`upstream_${appName}`)}`;
|
|
6
|
+
exports.upstreamUriTemplate = upstreamUriTemplate;
|
|
7
|
+
const upstreamTemplate = (appName, version, port) => `{
|
|
8
|
+
"name": "${appName}",
|
|
9
|
+
"type": "roundrobin",
|
|
10
|
+
"nodes": {
|
|
11
|
+
"${appName}:${port}": 1
|
|
12
|
+
},
|
|
13
|
+
"retries": 1,
|
|
14
|
+
"timeout": {
|
|
15
|
+
"connect": 500,
|
|
16
|
+
"send": 500,
|
|
17
|
+
"read": 500
|
|
18
|
+
},
|
|
19
|
+
"enable_websocket": true,
|
|
20
|
+
"checks": {
|
|
21
|
+
"active": {
|
|
22
|
+
"timeout": 5,
|
|
23
|
+
"http_path": "/api/v${version}/${appName}/_healthcheck",
|
|
24
|
+
"host": "${appName}",
|
|
25
|
+
"port": ${port},
|
|
26
|
+
"healthy": {
|
|
27
|
+
"interval": 2,
|
|
28
|
+
"successes": 1
|
|
29
|
+
},
|
|
30
|
+
"unhealthy": {
|
|
31
|
+
"interval": 1,
|
|
32
|
+
"http_failures": 2
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"passive": {
|
|
36
|
+
"healthy": {
|
|
37
|
+
"http_statuses": [
|
|
38
|
+
200,
|
|
39
|
+
201
|
|
40
|
+
],
|
|
41
|
+
"successes": 3
|
|
42
|
+
},
|
|
43
|
+
"unhealthy": {
|
|
44
|
+
"http_statuses": [
|
|
45
|
+
500
|
|
46
|
+
],
|
|
47
|
+
"http_failures": 3,
|
|
48
|
+
"tcp_failures": 3
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}`;
|
|
53
|
+
exports.upstreamTemplate = upstreamTemplate;
|
|
54
|
+
const serviceUriTemplate = (appName) => `/apisix/admin/services/${crypto_1.crypto.md5(`service_${appName}`)}`;
|
|
55
|
+
exports.serviceUriTemplate = serviceUriTemplate;
|
|
56
|
+
const serviceTemplate = (appName, enableApiGatewayAuth = false) => `{
|
|
57
|
+
"name": "${appName}",
|
|
58
|
+
"plugins": {
|
|
59
|
+
"prometheus": {},
|
|
60
|
+
"cors": {},
|
|
61
|
+
${enableApiGatewayAuth ? '"fot-usercenter-auth": {},' : ''}
|
|
62
|
+
"limit-count": {
|
|
63
|
+
"count": 200,
|
|
64
|
+
"time_window": 10,
|
|
65
|
+
"rejected_code": 503,
|
|
66
|
+
"key": "remote_addr"
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
"enable_websocket": true,
|
|
70
|
+
"upstream_id": "${crypto_1.crypto.md5(`upstream_${appName}`)}"
|
|
71
|
+
}`;
|
|
72
|
+
exports.serviceTemplate = serviceTemplate;
|
|
73
|
+
const routeUriTemplate = (appName) => `/apisix/admin/routes/${crypto_1.crypto.md5(`route_${appName}`)}`;
|
|
74
|
+
exports.routeUriTemplate = routeUriTemplate;
|
|
75
|
+
const routeTemplate = (appName, domains, apiVersion, build, version) => `{
|
|
76
|
+
"name": "${appName}",
|
|
77
|
+
"uri": "/api/v${apiVersion}/${appName}/*",
|
|
78
|
+
"hosts": ${JSON.stringify(domains)},
|
|
79
|
+
"enable_websocket": true,
|
|
80
|
+
"service_id": "${crypto_1.crypto.md5(`service_${appName}`)}",
|
|
81
|
+
"labels": {
|
|
82
|
+
"API_VERSION": "v${apiVersion}",
|
|
83
|
+
"build": "${build}",
|
|
84
|
+
"version": "${version}"
|
|
85
|
+
}
|
|
86
|
+
}`;
|
|
87
|
+
exports.routeTemplate = routeTemplate;
|
|
88
|
+
//# sourceMappingURL=ApisixTemplate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApisixTemplate.js","sourceRoot":"","sources":["../../../../src/libs/apisix/ApisixTemplate.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAErC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,2BAA2B,eAAM,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,EAAE,CAAC;AAA1G,QAAA,mBAAmB,uBAAuF;AAChH,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,OAAe,EAAE,IAAY,EAAE,EAAE,CAAC;eACrE,OAAO;;;WAGX,OAAO,IAAI,IAAI;;;;;;;;;;;;kCAYQ,OAAO,IAAI,OAAO;uBAC7B,OAAO;sBACR,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BxB,CAAC;AA7CU,QAAA,gBAAgB,oBA6C1B;AAEI,MAAM,kBAAkB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,0BAA0B,eAAM,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,CAAC;AAAvG,QAAA,kBAAkB,sBAAqF;AAC7G,MAAM,eAAe,GAAG,CAAC,OAAe,EAAE,oBAAoB,GAAG,KAAK,EAAE,EAAE,CAAC;YACtE,OAAO;;;;UAIT,oBAAoB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;;;;;;;;;mBAS/C,eAAM,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC;EAClD,CAAC;AAfU,QAAA,eAAe,mBAezB;AAEI,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,wBAAwB,eAAM,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC;AAAjG,QAAA,gBAAgB,oBAAiF;AACvG,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,OAAiB,EAAE,UAAkB,EAAE,KAAa,EAAE,OAAe,EAAE,EAAE,CAAC;eAC1G,OAAO;oBACF,UAAU,IAAI,OAAO;eAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;;qBAEjB,eAAM,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC;;2BAE1B,UAAU;oBACjB,KAAK;sBACH,OAAO;;EAE3B,CAAC;AAXU,QAAA,aAAa,iBAWvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const httpPut: (hostname: string, port: number, path: string, data: string, xApiKey: string, log?: boolean) => Promise<number>;
|
|
@@ -0,0 +1,51 @@
|
|
|
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.httpPut = void 0;
|
|
16
|
+
const http_1 = __importDefault(require("http"));
|
|
17
|
+
const httpPut = (hostname, port, path, data, xApiKey, log = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
const options = {
|
|
20
|
+
hostname,
|
|
21
|
+
port,
|
|
22
|
+
path,
|
|
23
|
+
method: 'PUT',
|
|
24
|
+
headers: {
|
|
25
|
+
'X-API-KEY': xApiKey,
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
'Content-Length': data.length,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
let statusCode = 200;
|
|
31
|
+
const req = http_1.default.request(options, (res) => {
|
|
32
|
+
var _a;
|
|
33
|
+
statusCode = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 500;
|
|
34
|
+
if (log) {
|
|
35
|
+
console.log(path, statusCode);
|
|
36
|
+
res.on('data', (d) => {
|
|
37
|
+
process.stdout.write(d);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
req.on('error', (error) => {
|
|
42
|
+
reject(error);
|
|
43
|
+
});
|
|
44
|
+
req.write(data);
|
|
45
|
+
req.end(() => {
|
|
46
|
+
resolve(statusCode);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
exports.httpPut = httpPut;
|
|
51
|
+
//# sourceMappingURL=HttpPutter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpPutter.js","sourceRoot":"","sources":["../../../../src/libs/apisix/HttpPutter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gDAAwB;AAEjB,MAAM,OAAO,GAAG,CAAO,QAAgB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,OAAe,EAAE,GAAG,GAAG,KAAK,EAAE,EAAE;IACxH,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,IAAI;YACJ,IAAI;YACJ,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,WAAW,EAAE,OAAO;gBACpB,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,IAAI,CAAC,MAAM;aAC9B;SACF,CAAC;QACF,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;;YACxC,UAAU,GAAG,MAAA,GAAG,CAAC,UAAU,mCAAI,GAAG,CAAC;YACnC,IAAI,GAAG,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC9B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;oBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE;YACX,OAAO,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAA,CAAC;AAjCW,QAAA,OAAO,WAiClB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ApisixTemplate"), exports);
|
|
18
|
+
__exportStar(require("./HttpPutter"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/libs/apisix/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,mDAAiC;AACjC,+CAA6B"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.i18n = void 0;
|
|
4
|
+
const i18nKey = (key, params = []) => {
|
|
5
|
+
const msgObj = { key, param: {} };
|
|
6
|
+
params.forEach((p) => {
|
|
7
|
+
msgObj.param[p] = `$${p}`;
|
|
8
|
+
});
|
|
9
|
+
return (obj) => {
|
|
10
|
+
const message = JSON.stringify(msgObj);
|
|
11
|
+
return Object.assign({}, obj !== null && obj !== void 0 ? obj : {}, {
|
|
12
|
+
message,
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
const i18n = (decorator, ...args) => {
|
|
17
|
+
const param = ['property'];
|
|
18
|
+
for (let i = 0; i < decorator.length - 1; i++) {
|
|
19
|
+
param.push(`constraint${i + 1}`);
|
|
20
|
+
}
|
|
21
|
+
const fn = i18nKey(`validation.rule.${decorator.name}`, param);
|
|
22
|
+
const filledArgs = [...args];
|
|
23
|
+
for (let i = 0; i < decorator.length - args.length - 1; i++) {
|
|
24
|
+
filledArgs.push(undefined);
|
|
25
|
+
}
|
|
26
|
+
if (decorator.length === filledArgs.length) {
|
|
27
|
+
filledArgs[filledArgs.length - 1] = fn(filledArgs[filledArgs.length - 1]);
|
|
28
|
+
return decorator(...filledArgs);
|
|
29
|
+
}
|
|
30
|
+
else if (decorator.length > filledArgs.length) {
|
|
31
|
+
return decorator(...filledArgs, fn({}));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
throw 'Too many args!';
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.i18n = i18n;
|
|
38
|
+
//# sourceMappingURL=i18nValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18nValidator.js","sourceRoot":"","sources":["../../../src/libs/i18nValidator.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,SAAmB,EAAE,EAAE,EAAE;IACrD,MAAM,MAAM,GAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACvC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAQ,EAAE,EAAE;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,EAAE;YAClC,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AAIK,MAAM,IAAI,GAAG,CAAC,SAA8B,EAAE,GAAG,IAAW,EAAqB,EAAE;IACxF,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7C,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;KAClC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,SAAS,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC3D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC5B;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;QAC1C,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC;KACjC;SAAM,IAAI,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE;QAC/C,OAAO,SAAS,CAAC,GAAG,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACzC;SAAM;QACL,MAAM,gBAAgB,CAAC;KACxB;AACH,CAAC,CAAC;AAnBW,QAAA,IAAI,QAmBf"}
|