evaengine 1.0.14 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -7
- package/bin/engine +2 -31
- package/dist/bin.d.ts +1 -0
- package/dist/bin.js +32 -0
- package/dist/bin.js.map +1 -0
- package/{src/commands/index.js → dist/commands/index.d.ts} +1 -8
- package/dist/commands/index.js +6 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/interface.d.ts +18 -0
- package/dist/commands/interface.js +40 -0
- package/dist/commands/interface.js.map +1 -0
- package/dist/commands/make_entity.d.ts +47 -0
- package/dist/commands/make_entity.js +410 -0
- package/dist/commands/make_entity.js.map +1 -0
- package/dist/commands/tramp.d.ts +7 -0
- package/dist/commands/tramp.js +29 -0
- package/dist/commands/tramp.js.map +1 -0
- package/dist/config/index.d.ts +92 -0
- package/dist/config/index.js +96 -0
- package/dist/config/index.js.map +1 -0
- package/dist/di.d.ts +131 -0
- package/dist/di.js +197 -0
- package/dist/di.js.map +1 -0
- package/dist/engine.d.ts +85 -0
- package/dist/engine.js +404 -0
- package/dist/engine.js.map +1 -0
- package/dist/entities/index.d.ts +54 -0
- package/dist/entities/index.js +228 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/exceptions/index.d.ts +153 -0
- package/dist/exceptions/index.js +466 -0
- package/dist/exceptions/index.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/middlewares/auth.d.ts +5 -0
- package/dist/middlewares/auth.js +63 -0
- package/dist/middlewares/auth.js.map +1 -0
- package/dist/middlewares/auth_kong.d.ts +2 -0
- package/dist/middlewares/auth_kong.js +24 -0
- package/dist/middlewares/auth_kong.js.map +1 -0
- package/dist/middlewares/debug.d.ts +3 -0
- package/dist/middlewares/debug.js +50 -0
- package/dist/middlewares/debug.js.map +1 -0
- package/{src/middlewares/index.js → dist/middlewares/index.d.ts} +1 -11
- package/dist/middlewares/index.js +9 -0
- package/dist/middlewares/index.js.map +1 -0
- package/dist/middlewares/providers.d.ts +25 -0
- package/dist/middlewares/providers.js +63 -0
- package/dist/middlewares/providers.js.map +1 -0
- package/dist/middlewares/session.d.ts +5 -0
- package/dist/middlewares/session.js +46 -0
- package/dist/middlewares/session.js.map +1 -0
- package/dist/middlewares/trace.d.ts +52 -0
- package/dist/middlewares/trace.js +225 -0
- package/dist/middlewares/trace.js.map +1 -0
- package/dist/middlewares/validator.d.ts +10 -0
- package/dist/middlewares/validator.js +43 -0
- package/dist/middlewares/validator.js.map +1 -0
- package/dist/middlewares/view_cache.d.ts +14 -0
- package/dist/middlewares/view_cache.js +102 -0
- package/dist/middlewares/view_cache.js.map +1 -0
- package/dist/services/cache.d.ts +68 -0
- package/dist/services/cache.js +206 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/config.d.ts +17 -0
- package/dist/services/config.js +67 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/env.d.ts +12 -0
- package/dist/services/env.js +24 -0
- package/dist/services/env.js.map +1 -0
- package/dist/services/event_manager.d.ts +30 -0
- package/dist/services/event_manager.js +74 -0
- package/dist/services/event_manager.js.map +1 -0
- package/dist/services/http_client.d.ts +67 -0
- package/dist/services/http_client.js +61 -0
- package/dist/services/http_client.js.map +1 -0
- package/{src/services/index.js → dist/services/index.d.ts} +1 -15
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -0
- package/{src/services/interface.js → dist/services/interface.d.ts} +1 -3
- package/dist/services/interface.js +6 -0
- package/dist/services/interface.js.map +1 -0
- package/{src/services/joi.js → dist/services/joi.d.ts} +2 -9
- package/dist/services/joi.js +11 -0
- package/dist/services/joi.js.map +1 -0
- package/dist/services/jwt_token.d.ts +25 -0
- package/dist/services/jwt_token.js +76 -0
- package/dist/services/jwt_token.js.map +1 -0
- package/dist/services/jwt_token_kong.d.ts +26 -0
- package/dist/services/jwt_token_kong.js +64 -0
- package/dist/services/jwt_token_kong.js.map +1 -0
- package/dist/services/logger.d.ts +31 -0
- package/dist/services/logger.js +125 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/namespace.d.ts +62 -0
- package/dist/services/namespace.js +171 -0
- package/dist/services/namespace.js.map +1 -0
- package/dist/services/now.d.ts +15 -0
- package/dist/services/now.js +42 -0
- package/dist/services/now.js.map +1 -0
- package/dist/services/providers.d.ts +55 -0
- package/dist/services/providers.js +134 -0
- package/dist/services/providers.js.map +1 -0
- package/dist/services/redis.d.ts +19 -0
- package/dist/services/redis.js +52 -0
- package/dist/services/redis.js.map +1 -0
- package/dist/services/rest_client.d.ts +49 -0
- package/dist/services/rest_client.js +95 -0
- package/dist/services/rest_client.js.map +1 -0
- package/dist/swagger/index.d.ts +223 -0
- package/dist/swagger/index.js +564 -0
- package/dist/swagger/index.js.map +1 -0
- package/dist/types/express.d.ts +14 -0
- package/dist/types/vendor.d.ts +30 -0
- package/dist/utils/api_scaffold.d.ts +74 -0
- package/dist/utils/api_scaffold.js +220 -0
- package/dist/utils/api_scaffold.js.map +1 -0
- package/dist/utils/case_converter.d.ts +7 -0
- package/dist/utils/case_converter.js +29 -0
- package/dist/utils/case_converter.js.map +1 -0
- package/dist/utils/crc32.d.ts +2 -0
- package/dist/utils/crc32.js +43 -0
- package/dist/utils/crc32.js.map +1 -0
- package/dist/utils/cron.d.ts +27 -0
- package/dist/utils/cron.js +186 -0
- package/dist/utils/cron.js.map +1 -0
- package/dist/utils/datetime.d.ts +4 -0
- package/dist/utils/datetime.js +6 -0
- package/dist/utils/datetime.js.map +1 -0
- package/dist/utils/host.d.ts +18 -0
- package/dist/utils/host.js +33 -0
- package/dist/utils/host.js.map +1 -0
- package/{src/utils/index.js → dist/utils/index.d.ts} +2 -26
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jwt.d.ts +16 -0
- package/dist/utils/jwt.js +93 -0
- package/dist/utils/jwt.js.map +1 -0
- package/dist/utils/pagination.d.ts +150 -0
- package/dist/utils/pagination.js +242 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/random.d.ts +3 -0
- package/dist/utils/random.js +18 -0
- package/dist/utils/random.js.map +1 -0
- package/dist/utils/request_client.d.ts +33 -0
- package/dist/utils/request_client.js +153 -0
- package/dist/utils/request_client.js.map +1 -0
- package/dist/utils/smart_query.d.ts +144 -0
- package/dist/utils/smart_query.js +310 -0
- package/dist/utils/smart_query.js.map +1 -0
- package/dist/utils/test.d.ts +14 -0
- package/dist/utils/test.js +37 -0
- package/dist/utils/test.js.map +1 -0
- package/dist/utils/wrapper.d.ts +3 -0
- package/dist/utils/wrapper.js +5 -0
- package/dist/utils/wrapper.js.map +1 -0
- package/package.json +22 -15
- package/index.js +0 -2
- package/src/commands/interface.js +0 -45
- package/src/commands/make_entity.js +0 -490
- package/src/commands/tramp.js +0 -34
- package/src/config/index.js +0 -95
- package/src/di.js +0 -96
- package/src/engine.js +0 -556
- package/src/entities/index.js +0 -272
- package/src/exceptions/index.js +0 -501
- package/src/index.js +0 -55
- package/src/middlewares/auth.js +0 -67
- package/src/middlewares/auth_kong.js +0 -28
- package/src/middlewares/debug.js +0 -88
- package/src/middlewares/providers.js +0 -73
- package/src/middlewares/session.js +0 -63
- package/src/middlewares/trace.js +0 -254
- package/src/middlewares/validator.js +0 -50
- package/src/middlewares/view_cache.js +0 -127
- package/src/services/cache.js +0 -223
- package/src/services/config.js +0 -115
- package/src/services/env.js +0 -28
- package/src/services/event_manager.js +0 -84
- package/src/services/http_client.js +0 -69
- package/src/services/jwt_token.js +0 -89
- package/src/services/jwt_token_kong.js +0 -75
- package/src/services/logger.js +0 -150
- package/src/services/namespace.js +0 -176
- package/src/services/now.js +0 -49
- package/src/services/providers.js +0 -158
- package/src/services/redis.js +0 -63
- package/src/services/rest_client.js +0 -112
- package/src/swagger/index.js +0 -665
- package/src/utils/api_scaffold.js +0 -240
- package/src/utils/case_converter.js +0 -33
- package/src/utils/crc32.js +0 -44
- package/src/utils/cron.js +0 -208
- package/src/utils/datetime.js +0 -13
- package/src/utils/host.js +0 -39
- package/src/utils/pagination.js +0 -260
- package/src/utils/random.js +0 -23
- package/src/utils/request_client.js +0 -179
- package/src/utils/smart_query.js +0 -352
- package/src/utils/test.js +0 -48
- package/src/utils/wrapper.js +0 -8
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
import Config from "./config.js";
|
|
3
|
+
import { OperationUnsupportedException } from "../exceptions/index.js";
|
|
4
|
+
import ServiceInterface from "./interface.js";
|
|
5
|
+
const stores = {};
|
|
6
|
+
const namespaces = new Map();
|
|
7
|
+
export class Store {
|
|
8
|
+
// Concrete stores forward their arguments to the underlying namespace
|
|
9
|
+
// implementations while these base implementations are no-ops that accept
|
|
10
|
+
// and ignore whatever is passed, as in the original JS signatures.
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
12
|
+
get(...args) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
16
|
+
set(...args) {
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
+
bind(...args) {
|
|
21
|
+
return this;
|
|
22
|
+
}
|
|
23
|
+
reset() {
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
active() {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
30
|
+
run(callback, ...args) {
|
|
31
|
+
return callback();
|
|
32
|
+
}
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
34
|
+
bindEmitter(...args) {
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
getContext() {
|
|
38
|
+
throw new OperationUnsupportedException('Not able to get namespace context when it be disabled');
|
|
39
|
+
}
|
|
40
|
+
createContext() {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class NullStore extends Store {
|
|
45
|
+
// Accepts and ignores the namespace argument, as the implicit constructor did.
|
|
46
|
+
constructor(...args) {
|
|
47
|
+
super(...args);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export class NsStore extends Store {
|
|
51
|
+
name;
|
|
52
|
+
storage;
|
|
53
|
+
constructor(name) {
|
|
54
|
+
super();
|
|
55
|
+
this.name = name;
|
|
56
|
+
this.storage = new AsyncLocalStorage();
|
|
57
|
+
namespaces.set(name, this.storage);
|
|
58
|
+
}
|
|
59
|
+
get(key) {
|
|
60
|
+
return this.storage.getStore()?.get(key);
|
|
61
|
+
}
|
|
62
|
+
set(key, value) {
|
|
63
|
+
// 在 run 上下文之外没有可写的 context;原 CLS 行为只对 run 内的消费方可见,
|
|
64
|
+
// 这里保持一致,直接丢弃。
|
|
65
|
+
this.storage.getStore()?.set(key, value);
|
|
66
|
+
return this;
|
|
67
|
+
}
|
|
68
|
+
bind(fn) {
|
|
69
|
+
// Node 24 已移除 AsyncLocalStorage 实例的 bind,这里按其原语义实现:
|
|
70
|
+
// 捕获绑定时刻的 context,调用时重新进入。
|
|
71
|
+
const context = this.storage.getStore();
|
|
72
|
+
return (...args) => this.storage.run(context, () => fn(...args));
|
|
73
|
+
}
|
|
74
|
+
active() {
|
|
75
|
+
return this.storage.getStore();
|
|
76
|
+
}
|
|
77
|
+
run(callback, ...args) {
|
|
78
|
+
// CLS 的 run 会把新建的 context 作为回调首参传入(Sequelize._clsRun 依赖此行为)
|
|
79
|
+
const context = new Map();
|
|
80
|
+
return this.storage.run(context, () => callback(context, ...args));
|
|
81
|
+
}
|
|
82
|
+
bindEmitter(emitter) {
|
|
83
|
+
// AsyncLocalStorage 通过 async chain 自动传播上下文,无需 CLS 式的 emitter 绑定;
|
|
84
|
+
// 保留方法以兼容原调用面(trace 中间件等),原样返回 emitter。
|
|
85
|
+
return emitter;
|
|
86
|
+
}
|
|
87
|
+
getContext() {
|
|
88
|
+
// CLS 消费方(Sequelize.useCLS、session clsify)只依赖 get/set/run/bind 方法面,
|
|
89
|
+
// NsStore 自身即满足该接口,直接返回实例。
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
createContext() {
|
|
93
|
+
return new Map();
|
|
94
|
+
}
|
|
95
|
+
reset() {
|
|
96
|
+
this.storage.disable();
|
|
97
|
+
this.storage = new AsyncLocalStorage();
|
|
98
|
+
namespaces.set(this.name, this.storage);
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
class Namespace extends ServiceInterface {
|
|
103
|
+
config;
|
|
104
|
+
defaultName;
|
|
105
|
+
store;
|
|
106
|
+
name;
|
|
107
|
+
static dependencies = [Config];
|
|
108
|
+
constructor(config) {
|
|
109
|
+
super();
|
|
110
|
+
this.config = config.get('namespace');
|
|
111
|
+
// The original code reads defaultName off the Config service itself (not
|
|
112
|
+
// off the `namespace` config object), so the quirk is kept.
|
|
113
|
+
this.defaultName = config.defaultName || 'eva.ns';
|
|
114
|
+
this.store = null;
|
|
115
|
+
this.name = null;
|
|
116
|
+
}
|
|
117
|
+
isEnabled() {
|
|
118
|
+
return this.config.enable;
|
|
119
|
+
}
|
|
120
|
+
getDefaultName() {
|
|
121
|
+
return this.defaultName;
|
|
122
|
+
}
|
|
123
|
+
setDefaultName(name) {
|
|
124
|
+
this.defaultName = name;
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
getName() {
|
|
128
|
+
return this.name;
|
|
129
|
+
}
|
|
130
|
+
getStore() {
|
|
131
|
+
if ({}.hasOwnProperty.call(stores, this.name)) {
|
|
132
|
+
return stores[this.name];
|
|
133
|
+
}
|
|
134
|
+
stores[this.name] = this.config.enable === true ?
|
|
135
|
+
new NsStore(this.name) : new NullStore(this.name);
|
|
136
|
+
return stores[this.name];
|
|
137
|
+
}
|
|
138
|
+
destroy(name) {
|
|
139
|
+
namespaces.get(name)?.disable();
|
|
140
|
+
namespaces.delete(name);
|
|
141
|
+
delete stores[name];
|
|
142
|
+
return this;
|
|
143
|
+
}
|
|
144
|
+
use(ns) {
|
|
145
|
+
this.name = ns || this.defaultName;
|
|
146
|
+
return this.getStore();
|
|
147
|
+
}
|
|
148
|
+
get(key) {
|
|
149
|
+
return this.use().get(key);
|
|
150
|
+
}
|
|
151
|
+
set(key, value) {
|
|
152
|
+
return this.use().set(key, value);
|
|
153
|
+
}
|
|
154
|
+
bind(...args) {
|
|
155
|
+
return this.use().bind(...args);
|
|
156
|
+
}
|
|
157
|
+
active() {
|
|
158
|
+
return this.use().active();
|
|
159
|
+
}
|
|
160
|
+
run(...args) {
|
|
161
|
+
return this.use().run(...args);
|
|
162
|
+
}
|
|
163
|
+
bindEmitter(...args) {
|
|
164
|
+
return this.use().bindEmitter(...args);
|
|
165
|
+
}
|
|
166
|
+
createContext() {
|
|
167
|
+
return this.use().createContext();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export default Namespace;
|
|
171
|
+
//# sourceMappingURL=namespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/services/namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import moment from 'moment-timezone';
|
|
2
|
+
import Logger from './logger.js';
|
|
3
|
+
import ServiceInterface from './interface.js';
|
|
4
|
+
declare class Now extends ServiceInterface {
|
|
5
|
+
logger: Logger;
|
|
6
|
+
now: number | null;
|
|
7
|
+
static dependencies: (typeof Logger)[];
|
|
8
|
+
constructor(logger: Logger);
|
|
9
|
+
setNow(now: number | moment.Moment | string | Date): this;
|
|
10
|
+
clear(): this;
|
|
11
|
+
getTimestamp(): number;
|
|
12
|
+
getMoment(): moment.Moment;
|
|
13
|
+
getDatabaseDatetime(): string;
|
|
14
|
+
}
|
|
15
|
+
export default Now;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import moment from 'moment-timezone';
|
|
2
|
+
import { getTimestamp, getDatabaseDatetime } from "../utils/datetime.js";
|
|
3
|
+
import Logger from "./logger.js";
|
|
4
|
+
import ServiceInterface from "./interface.js";
|
|
5
|
+
class Now extends ServiceInterface {
|
|
6
|
+
logger;
|
|
7
|
+
now;
|
|
8
|
+
static dependencies = [Logger];
|
|
9
|
+
constructor(logger) {
|
|
10
|
+
super();
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
this.now = null;
|
|
13
|
+
}
|
|
14
|
+
setNow(now) {
|
|
15
|
+
if (typeof now === 'number') {
|
|
16
|
+
this.now = now;
|
|
17
|
+
}
|
|
18
|
+
else if (now instanceof moment) {
|
|
19
|
+
this.now = now.unix();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.now = moment(now).unix();
|
|
23
|
+
}
|
|
24
|
+
this.logger.warn('Now has been force changed to %s', moment.unix(this.now));
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
clear() {
|
|
28
|
+
this.now = null;
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
getTimestamp() {
|
|
32
|
+
return this.now || getTimestamp();
|
|
33
|
+
}
|
|
34
|
+
getMoment() {
|
|
35
|
+
return this.now ? moment.unix(this.now) : moment();
|
|
36
|
+
}
|
|
37
|
+
getDatabaseDatetime() {
|
|
38
|
+
return this.now ? moment.unix(this.now).format('YYYY-MM-DD HH:mm:ss') : getDatabaseDatetime();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export default Now;
|
|
42
|
+
//# sourceMappingURL=now.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"now.js","sourceRoot":"","sources":["../../src/services/now.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAE9C,MAAM,GAAI,SAAQ,gBAAgB;IAChC,MAAM,CAAS;IACf,GAAG,CAAgB;IAEnB,MAAM,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAA2C;QAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,CAAC;aAAM,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,GAAI,GAAqB,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrD,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC;IAChG,CAAC;;AAGH,eAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { EngineLike } from '../di.js';
|
|
2
|
+
export declare class ServiceProvider {
|
|
3
|
+
engine: EngineLike;
|
|
4
|
+
constructor(engine: EngineLike);
|
|
5
|
+
get name(): string;
|
|
6
|
+
register(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare class EnvProvider extends ServiceProvider {
|
|
9
|
+
get name(): string;
|
|
10
|
+
register(): void;
|
|
11
|
+
}
|
|
12
|
+
export declare class ConfigProvider extends ServiceProvider {
|
|
13
|
+
get name(): string;
|
|
14
|
+
register(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare class LoggerProvider extends ServiceProvider {
|
|
17
|
+
get name(): string;
|
|
18
|
+
register(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare class RedisProvider extends ServiceProvider {
|
|
21
|
+
get name(): string;
|
|
22
|
+
register(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare class JsonWebTokenProvider extends ServiceProvider {
|
|
25
|
+
get name(): string;
|
|
26
|
+
register(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare class HttpClientProvider extends ServiceProvider {
|
|
29
|
+
get name(): string;
|
|
30
|
+
register(): void;
|
|
31
|
+
}
|
|
32
|
+
export declare class RestClientProvider extends ServiceProvider {
|
|
33
|
+
get name(): string;
|
|
34
|
+
register(): void;
|
|
35
|
+
}
|
|
36
|
+
export declare class CacheProvider extends ServiceProvider {
|
|
37
|
+
get name(): string;
|
|
38
|
+
register(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare class NamespaceProvider extends ServiceProvider {
|
|
41
|
+
get name(): string;
|
|
42
|
+
register(): void;
|
|
43
|
+
}
|
|
44
|
+
export declare class ValidatorBaseProvider extends ServiceProvider {
|
|
45
|
+
get name(): string;
|
|
46
|
+
register(): void;
|
|
47
|
+
}
|
|
48
|
+
export declare class EventManagerProvider extends ServiceProvider {
|
|
49
|
+
get name(): string;
|
|
50
|
+
register(): void;
|
|
51
|
+
}
|
|
52
|
+
export declare class NowProvider extends ServiceProvider {
|
|
53
|
+
get name(): string;
|
|
54
|
+
register(): void;
|
|
55
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import Cache from "./cache.js";
|
|
2
|
+
import Config from "./config.js";
|
|
3
|
+
import Env from "./env.js";
|
|
4
|
+
import HttpClient from "./http_client.js";
|
|
5
|
+
import JsonWebToken from "./jwt_token.js";
|
|
6
|
+
import KongJsonWebToken from "./jwt_token_kong.js";
|
|
7
|
+
import Logger from "./logger.js";
|
|
8
|
+
import Redis from "./redis.js";
|
|
9
|
+
import RestClient from "./rest_client.js";
|
|
10
|
+
import Namespace from "./namespace.js";
|
|
11
|
+
import Now from "./now.js";
|
|
12
|
+
import ValidatorBase from "./joi.js";
|
|
13
|
+
import EventManager from "./event_manager.js";
|
|
14
|
+
import DI from "../di.js";
|
|
15
|
+
export class ServiceProvider {
|
|
16
|
+
engine;
|
|
17
|
+
constructor(engine) {
|
|
18
|
+
this.engine = engine;
|
|
19
|
+
}
|
|
20
|
+
get name() {
|
|
21
|
+
return 'default';
|
|
22
|
+
}
|
|
23
|
+
register() {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class EnvProvider extends ServiceProvider {
|
|
27
|
+
get name() {
|
|
28
|
+
return 'env';
|
|
29
|
+
}
|
|
30
|
+
register() {
|
|
31
|
+
DI.bindClass(this.name, Env);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class ConfigProvider extends ServiceProvider {
|
|
35
|
+
get name() {
|
|
36
|
+
return 'config';
|
|
37
|
+
}
|
|
38
|
+
register() {
|
|
39
|
+
const config = DI.get(Config);
|
|
40
|
+
config.setPath(this.engine.getMeta().configPath);
|
|
41
|
+
DI.bindClass(this.name, Config, [config]);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class LoggerProvider extends ServiceProvider {
|
|
45
|
+
get name() {
|
|
46
|
+
return 'logger';
|
|
47
|
+
}
|
|
48
|
+
register() {
|
|
49
|
+
const logger = DI.get(Logger);
|
|
50
|
+
const { mode } = this.engine.getMeta();
|
|
51
|
+
const loggerLabel = mode === 'web' ? mode + this.engine.getMeta().port
|
|
52
|
+
: process.env.CLI_NAME || 'cli';
|
|
53
|
+
logger.setLabel(loggerLabel);
|
|
54
|
+
DI.bindClass(this.name, Logger, [logger]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export class RedisProvider extends ServiceProvider {
|
|
58
|
+
get name() {
|
|
59
|
+
return 'redis';
|
|
60
|
+
}
|
|
61
|
+
register() {
|
|
62
|
+
DI.bindClass(this.name, Redis);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export class JsonWebTokenProvider extends ServiceProvider {
|
|
66
|
+
get name() {
|
|
67
|
+
return 'jwt';
|
|
68
|
+
}
|
|
69
|
+
register() {
|
|
70
|
+
if (DI.get('config').get('token.provider') === 'kong') {
|
|
71
|
+
DI.bindClass(this.name, KongJsonWebToken);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
DI.bindClass(this.name, JsonWebToken);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export class HttpClientProvider extends ServiceProvider {
|
|
79
|
+
get name() {
|
|
80
|
+
return 'http_client';
|
|
81
|
+
}
|
|
82
|
+
register() {
|
|
83
|
+
DI.bindClass(this.name, HttpClient);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
export class RestClientProvider extends ServiceProvider {
|
|
87
|
+
get name() {
|
|
88
|
+
return 'rest_client';
|
|
89
|
+
}
|
|
90
|
+
register() {
|
|
91
|
+
DI.bindClass(this.name, RestClient);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export class CacheProvider extends ServiceProvider {
|
|
95
|
+
get name() {
|
|
96
|
+
return 'cache';
|
|
97
|
+
}
|
|
98
|
+
register() {
|
|
99
|
+
DI.bindClass(this.name, Cache);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export class NamespaceProvider extends ServiceProvider {
|
|
103
|
+
get name() {
|
|
104
|
+
return 'namespace';
|
|
105
|
+
}
|
|
106
|
+
register() {
|
|
107
|
+
DI.bindClass(this.name, Namespace);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
export class ValidatorBaseProvider extends ServiceProvider {
|
|
111
|
+
get name() {
|
|
112
|
+
return 'validator_base';
|
|
113
|
+
}
|
|
114
|
+
register() {
|
|
115
|
+
DI.bindClass(this.name, ValidatorBase);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export class EventManagerProvider extends ServiceProvider {
|
|
119
|
+
get name() {
|
|
120
|
+
return 'event_manager';
|
|
121
|
+
}
|
|
122
|
+
register() {
|
|
123
|
+
DI.bindClass(this.name, EventManager);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export class NowProvider extends ServiceProvider {
|
|
127
|
+
get name() {
|
|
128
|
+
return 'now';
|
|
129
|
+
}
|
|
130
|
+
register() {
|
|
131
|
+
DI.bindClass(this.name, Now);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/services/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Ioredis from 'ioredis';
|
|
2
|
+
import type { Redis as RedisClient, RedisOptions } from 'ioredis';
|
|
3
|
+
import Config from './config.js';
|
|
4
|
+
import ServiceInterface from './interface.js';
|
|
5
|
+
type RedisConstructor = typeof Ioredis.default;
|
|
6
|
+
declare class Redis extends ServiceInterface {
|
|
7
|
+
config: Config;
|
|
8
|
+
options: RedisOptions | null;
|
|
9
|
+
client: RedisClient | null;
|
|
10
|
+
static dependencies: (typeof Config)[];
|
|
11
|
+
constructor(config: Config);
|
|
12
|
+
getProto(): RedisConstructor;
|
|
13
|
+
getRedis(): RedisConstructor;
|
|
14
|
+
setOptions(options: RedisOptions): this;
|
|
15
|
+
isConnected(): boolean;
|
|
16
|
+
cleanup(): void;
|
|
17
|
+
getInstance(): RedisClient;
|
|
18
|
+
}
|
|
19
|
+
export default Redis;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import Ioredis from 'ioredis';
|
|
2
|
+
import DI from "../di.js";
|
|
3
|
+
import Config from "./config.js";
|
|
4
|
+
import ServiceInterface from "./interface.js";
|
|
5
|
+
class Redis extends ServiceInterface {
|
|
6
|
+
config;
|
|
7
|
+
options;
|
|
8
|
+
client;
|
|
9
|
+
static dependencies = [Config];
|
|
10
|
+
constructor(config) {
|
|
11
|
+
super();
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.options = null;
|
|
14
|
+
this.client = null;
|
|
15
|
+
}
|
|
16
|
+
getProto() {
|
|
17
|
+
return Ioredis;
|
|
18
|
+
}
|
|
19
|
+
getRedis() {
|
|
20
|
+
return Ioredis;
|
|
21
|
+
}
|
|
22
|
+
setOptions(options) {
|
|
23
|
+
this.options = options;
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
isConnected() {
|
|
27
|
+
return this.client !== null;
|
|
28
|
+
}
|
|
29
|
+
cleanup() {
|
|
30
|
+
return this.getInstance().end();
|
|
31
|
+
}
|
|
32
|
+
getInstance() {
|
|
33
|
+
if (this.client) {
|
|
34
|
+
return this.client;
|
|
35
|
+
}
|
|
36
|
+
this.client = new Ioredis(Object.assign({
|
|
37
|
+
enableOfflineQueue: true //make redis connect failings throw error
|
|
38
|
+
}, this.options || this.config.get('redis')));
|
|
39
|
+
this.client.on('error', (err) => {
|
|
40
|
+
try {
|
|
41
|
+
DI.get('logger').error('Redis client error:', err);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
//Logger not bound yet, keep the error visible on stderr
|
|
45
|
+
console.error('Redis client error:', err);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return this.client;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export default Redis;
|
|
52
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/services/redis.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAO9C,MAAM,KAAM,SAAQ,gBAAgB;IAClC,MAAM,CAAS;IACf,OAAO,CAAsB;IAC7B,MAAM,CAAqB;IAE3B,MAAM,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,CAAC;IAE/B,YAAY,MAAc;QACxB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEQ,QAAQ;QACf,OAAO,OAAsC,CAAC;IAChD,CAAC;IAED,QAAQ;QACN,OAAO,OAAsC,CAAC;IAChD,CAAC;IAED,UAAU,CAAC,OAAqB;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAK,OAAuC,CAAC,MAAM,CAAC,MAAM,CAAC;YACvE,kBAAkB,EAAE,IAAI,CAAC,yCAAyC;SACnE,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,IAAI,CAAC;gBACH,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;gBACxD,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;AAGH,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import HttpClient from './http_client.js';
|
|
2
|
+
import Namespace from './namespace.js';
|
|
3
|
+
import ServiceInterface from './interface.js';
|
|
4
|
+
interface RequestParams {
|
|
5
|
+
url?: string;
|
|
6
|
+
uri?: string;
|
|
7
|
+
headers?: Record<string, unknown>;
|
|
8
|
+
[key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
declare class RestClient extends ServiceInterface {
|
|
11
|
+
client: HttpClient;
|
|
12
|
+
ns: Namespace;
|
|
13
|
+
baseUrl: string | null;
|
|
14
|
+
static dependencies: (typeof Namespace | typeof HttpClient)[];
|
|
15
|
+
constructor(client: HttpClient, ns: Namespace);
|
|
16
|
+
setBaseUrl(baseUrl: string): this;
|
|
17
|
+
getBaseUrl(): string | null;
|
|
18
|
+
getProto(): (params?: {
|
|
19
|
+
url?: string;
|
|
20
|
+
method?: string;
|
|
21
|
+
headers?: Record<string, unknown>;
|
|
22
|
+
body?: unknown;
|
|
23
|
+
json?: unknown;
|
|
24
|
+
qs?: Record<string, unknown> | string;
|
|
25
|
+
form?: Record<string, unknown>;
|
|
26
|
+
formData?: Record<string, unknown>;
|
|
27
|
+
simple?: boolean;
|
|
28
|
+
resolveWithFullResponse?: boolean;
|
|
29
|
+
timeout?: number;
|
|
30
|
+
}) => Promise<unknown>;
|
|
31
|
+
getInstance(): (params?: {
|
|
32
|
+
url?: string;
|
|
33
|
+
method?: string;
|
|
34
|
+
headers?: Record<string, unknown>;
|
|
35
|
+
body?: unknown;
|
|
36
|
+
json?: unknown;
|
|
37
|
+
qs?: Record<string, unknown> | string;
|
|
38
|
+
form?: Record<string, unknown>;
|
|
39
|
+
formData?: Record<string, unknown>;
|
|
40
|
+
simple?: boolean;
|
|
41
|
+
resolveWithFullResponse?: boolean;
|
|
42
|
+
timeout?: number;
|
|
43
|
+
}) => Promise<unknown>;
|
|
44
|
+
populateTrace(params: RequestParams): RequestParams;
|
|
45
|
+
saveToTracer(headers?: Record<string, unknown>): void;
|
|
46
|
+
rawRequest(params: RequestParams): Promise<unknown>;
|
|
47
|
+
request(params: RequestParams): Promise<unknown>;
|
|
48
|
+
}
|
|
49
|
+
export default RestClient;
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import HttpClient from "./http_client.js";
|
|
2
|
+
import Namespace from "./namespace.js";
|
|
3
|
+
import { RestServiceLogicException, RestServiceIOException } from "../exceptions/index.js";
|
|
4
|
+
import ServiceInterface from "./interface.js";
|
|
5
|
+
class RestClient extends ServiceInterface {
|
|
6
|
+
client;
|
|
7
|
+
ns;
|
|
8
|
+
baseUrl;
|
|
9
|
+
static dependencies = [HttpClient, Namespace];
|
|
10
|
+
constructor(client, ns) {
|
|
11
|
+
super();
|
|
12
|
+
this.client = client;
|
|
13
|
+
this.ns = ns;
|
|
14
|
+
this.baseUrl = null;
|
|
15
|
+
}
|
|
16
|
+
setBaseUrl(baseUrl) {
|
|
17
|
+
this.baseUrl = baseUrl;
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
getBaseUrl() {
|
|
21
|
+
return this.baseUrl;
|
|
22
|
+
}
|
|
23
|
+
getProto() {
|
|
24
|
+
return this.client.getProto();
|
|
25
|
+
}
|
|
26
|
+
getInstance() {
|
|
27
|
+
return this.client.getInstance();
|
|
28
|
+
}
|
|
29
|
+
populateTrace(params) {
|
|
30
|
+
const { traceId, spanId, sampled } = (this.ns.get('tracer') || {});
|
|
31
|
+
if (!traceId || !spanId) {
|
|
32
|
+
return params;
|
|
33
|
+
}
|
|
34
|
+
if (!params.headers) {
|
|
35
|
+
Object.assign(params, { headers: {} });
|
|
36
|
+
}
|
|
37
|
+
Object.assign(params.headers, {
|
|
38
|
+
'X-B3-TraceId': traceId,
|
|
39
|
+
'X-B3-SpanId': spanId,
|
|
40
|
+
'X-B3-Sampled': sampled
|
|
41
|
+
});
|
|
42
|
+
return params;
|
|
43
|
+
}
|
|
44
|
+
saveToTracer(headers) {
|
|
45
|
+
if (!headers || Object.keys(headers).length < 1) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const tracer = this.ns.get('tracer');
|
|
49
|
+
if (!tracer) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
Object.entries(headers).forEach(([key, value]) => {
|
|
53
|
+
if (key.startsWith('x-debug-')) {
|
|
54
|
+
tracer.debug[key] = value;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
rawRequest(params) {
|
|
59
|
+
if (this.baseUrl) {
|
|
60
|
+
Object.assign(params, { url: this.baseUrl + (params.url || params.uri) });
|
|
61
|
+
if (params.uri) {
|
|
62
|
+
delete params.uri;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return this.client.getInstance()(this.populateTrace(params));
|
|
66
|
+
}
|
|
67
|
+
async request(params) {
|
|
68
|
+
if (this.baseUrl) {
|
|
69
|
+
Object.assign(params, {
|
|
70
|
+
url: this.baseUrl + (params.url || params.uri)
|
|
71
|
+
});
|
|
72
|
+
if (params.uri) {
|
|
73
|
+
delete params.uri;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const { headers, body } = (await this.client.getInstance()(Object.assign(this.populateTrace(params), {
|
|
78
|
+
json: true,
|
|
79
|
+
resolveWithFullResponse: true
|
|
80
|
+
})));
|
|
81
|
+
this.saveToTracer(headers);
|
|
82
|
+
return body;
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
//FIXME TypeError无法被记录?
|
|
86
|
+
const { statusCode } = e;
|
|
87
|
+
if (statusCode && statusCode >= 400 && statusCode < 500) {
|
|
88
|
+
throw new RestServiceLogicException(e);
|
|
89
|
+
}
|
|
90
|
+
throw new RestServiceIOException(e);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export default RestClient;
|
|
95
|
+
//# sourceMappingURL=rest_client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest_client.js","sourceRoot":"","sources":["../../src/services/rest_client.ts"],"names":[],"mappings":"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"}
|