@jayfong/x-server 2.2.16 → 2.4.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/lib/_cjs/cli/build_util.js +1 -0
- package/lib/_cjs/cli/cli.js +2 -1
- package/lib/_cjs/cli/deploy_util.js +1 -1
- package/lib/_cjs/index.js +20 -4
- package/lib/_cjs/services/template_renderer.js +36 -0
- package/lib/_cjs/x.js +3 -1
- package/lib/cli/api_generator.d.ts +1 -1
- package/lib/cli/build_util.js +1 -0
- package/lib/cli/cli.js +2 -1
- package/lib/cli/deploy_util.d.ts +1 -0
- package/lib/cli/deploy_util.js +1 -1
- package/lib/core/define_bus.d.ts +6 -6
- package/lib/core/types.d.ts +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +4 -2
- package/lib/services/cache.d.ts +5 -5
- package/lib/services/log.d.ts +3 -3
- package/lib/services/template_renderer.d.ts +14 -0
- package/lib/services/template_renderer.js +29 -0
- package/lib/types/index.d.ts +6 -6
- package/lib/x.d.ts +1 -0
- package/lib/x.js +2 -1
- package/package.json +3 -3
package/lib/_cjs/cli/cli.js
CHANGED
|
@@ -49,7 +49,7 @@ class DeployUtil {
|
|
|
49
49
|
cd ${appDir}/dist
|
|
50
50
|
[ -f no_install.lock ] && yarn_disable_self_update_check=true tyn
|
|
51
51
|
${options.cmd || ''}
|
|
52
|
-
pm2 startOrReload pm2.config.js
|
|
52
|
+
${options.memory ? `PM2_MEMORY=${options.memory} ` : ''}pm2 startOrReload pm2.config.js
|
|
53
53
|
`, {
|
|
54
54
|
cwd: options.cwd,
|
|
55
55
|
onStdout: buf => console.log(buf.toString()),
|
package/lib/_cjs/index.js
CHANGED
|
@@ -202,6 +202,14 @@ Object.keys(_jwt).forEach(function (key) {
|
|
|
202
202
|
exports[key] = _jwt[key];
|
|
203
203
|
});
|
|
204
204
|
|
|
205
|
+
var _log = require("./services/log");
|
|
206
|
+
|
|
207
|
+
Object.keys(_log).forEach(function (key) {
|
|
208
|
+
if (key === "default" || key === "__esModule") return;
|
|
209
|
+
if (key in exports && exports[key] === _log[key]) return;
|
|
210
|
+
exports[key] = _log[key];
|
|
211
|
+
});
|
|
212
|
+
|
|
205
213
|
var _mail = require("./services/mail");
|
|
206
214
|
|
|
207
215
|
Object.keys(_mail).forEach(function (key) {
|
|
@@ -242,12 +250,12 @@ Object.keys(_sensitive_words).forEach(function (key) {
|
|
|
242
250
|
exports[key] = _sensitive_words[key];
|
|
243
251
|
});
|
|
244
252
|
|
|
245
|
-
var
|
|
253
|
+
var _template_renderer = require("./services/template_renderer");
|
|
246
254
|
|
|
247
|
-
Object.keys(
|
|
255
|
+
Object.keys(_template_renderer).forEach(function (key) {
|
|
248
256
|
if (key === "default" || key === "__esModule") return;
|
|
249
|
-
if (key in exports && exports[key] ===
|
|
250
|
-
exports[key] =
|
|
257
|
+
if (key in exports && exports[key] === _template_renderer[key]) return;
|
|
258
|
+
exports[key] = _template_renderer[key];
|
|
251
259
|
});
|
|
252
260
|
|
|
253
261
|
var _index = require("./types/index");
|
|
@@ -258,6 +266,14 @@ Object.keys(_index).forEach(function (key) {
|
|
|
258
266
|
exports[key] = _index[key];
|
|
259
267
|
});
|
|
260
268
|
|
|
269
|
+
var _x = require("./x");
|
|
270
|
+
|
|
271
|
+
Object.keys(_x).forEach(function (key) {
|
|
272
|
+
if (key === "default" || key === "__esModule") return;
|
|
273
|
+
if (key in exports && exports[key] === _x[key]) return;
|
|
274
|
+
exports[key] = _x[key];
|
|
275
|
+
});
|
|
276
|
+
|
|
261
277
|
var _models = require(".x/models");
|
|
262
278
|
|
|
263
279
|
Object.keys(_models).forEach(function (key) {
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.TemplateRendererService = void 0;
|
|
5
|
+
|
|
6
|
+
class TemplateRendererService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.serviceName = 'templateRenderer';
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
render(text, data, options) {
|
|
12
|
+
const keys = Object.keys(data);
|
|
13
|
+
|
|
14
|
+
for (const key of keys) {
|
|
15
|
+
text = typeof data[key] === 'function' ? text.replace(new RegExp(`\\{${key}(:.+?)?\\}`, 'g'), (_, params) => {
|
|
16
|
+
return data[key].call(null, ...(params ? params.substring(1) : '').split(','));
|
|
17
|
+
}) : text.replaceAll(`{${key}}`, data[key]);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (options != null && options.code) {
|
|
21
|
+
text = text.replace(/\{\{(.+?)\}\}/g, (_, code) => {
|
|
22
|
+
return eval(`
|
|
23
|
+
(() => {
|
|
24
|
+
const {${keys.join(',')}} = ${JSON.stringify(data)};
|
|
25
|
+
return ${code};
|
|
26
|
+
})()
|
|
27
|
+
`);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return text;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
exports.TemplateRendererService = TemplateRendererService;
|
package/lib/_cjs/x.js
CHANGED
|
@@ -15,6 +15,8 @@ var _dispose = require("./services/dispose");
|
|
|
15
15
|
|
|
16
16
|
var _log = require("./services/log");
|
|
17
17
|
|
|
18
|
+
var _template_renderer = require("./services/template_renderer");
|
|
19
|
+
|
|
18
20
|
const env = JSON.parse(process.env.X_SERVER_ENVS || '{}');
|
|
19
21
|
const x = {
|
|
20
22
|
appId: env.APP_ID,
|
|
@@ -33,4 +35,4 @@ _fsExtra.default.ensureDirSync(x.dataDir);
|
|
|
33
35
|
|
|
34
36
|
x.register(new _dispose.DisposeService({
|
|
35
37
|
disposeOnExit: true
|
|
36
|
-
}), new _log.LogService());
|
|
38
|
+
}), new _log.LogService(), new _template_renderer.TemplateRendererService());
|
package/lib/cli/build_util.js
CHANGED
package/lib/cli/cli.js
CHANGED
package/lib/cli/deploy_util.d.ts
CHANGED
package/lib/cli/deploy_util.js
CHANGED
|
@@ -37,7 +37,7 @@ export class DeployUtil {
|
|
|
37
37
|
cd ${appDir}/dist
|
|
38
38
|
[ -f no_install.lock ] && yarn_disable_self_update_check=true tyn
|
|
39
39
|
${options.cmd || ''}
|
|
40
|
-
pm2 startOrReload pm2.config.js
|
|
40
|
+
${options.memory ? `PM2_MEMORY=${options.memory} ` : ''}pm2 startOrReload pm2.config.js
|
|
41
41
|
`, {
|
|
42
42
|
cwd: options.cwd,
|
|
43
43
|
onStdout: buf => console.log(buf.toString()),
|
package/lib/core/define_bus.d.ts
CHANGED
|
@@ -10,10 +10,10 @@ interface TypeRecord<T, U, V> {
|
|
|
10
10
|
' _eventsType'?: U;
|
|
11
11
|
' _emitType'?: V;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
type InnerEEMethodReturnType<T, TValue, FValue> = T extends (...args: any[]) => any ? ReturnType<T> extends void | undefined ? FValue : TValue : FValue;
|
|
14
|
+
type EEMethodReturnType<T, S extends string, TValue, FValue = void> = S extends keyof T ? InnerEEMethodReturnType<T[S], TValue, FValue> : FValue;
|
|
15
|
+
type ListenerType<T> = [T] extends [(...args: infer U) => any] ? U : [T] extends [void] ? [] : [T];
|
|
16
|
+
type OverriddenMethods<TEmitter, TEventRecord, TEmitRecord = TEventRecord> = {
|
|
17
17
|
on<P extends keyof TEventRecord, T>(this: T, event: P, listener: (...args: ListenerType<TEventRecord[P]>) => void): EEMethodReturnType<TEmitter, 'on', T>;
|
|
18
18
|
on(event: typeof assignmentCompatibilityHack, listener: (...args: any[]) => any): void;
|
|
19
19
|
addListener<P extends keyof TEventRecord, T>(this: T, event: P, listener: (...args: ListenerType<TEventRecord[P]>) => void): EEMethodReturnType<TEmitter, 'addListener', T>;
|
|
@@ -33,6 +33,6 @@ declare type OverriddenMethods<TEmitter, TEventRecord, TEmitRecord = TEventRecor
|
|
|
33
33
|
onReturnOff<P extends keyof TEventRecord, T>(this: T, event: P, listener: (...args: ListenerType<TEventRecord[P]>) => void): () => any;
|
|
34
34
|
onReturnOff(event: typeof assignmentCompatibilityHack, listener: (...args: any[]) => any): () => any;
|
|
35
35
|
};
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
type OverriddenKeys = keyof OverriddenMethods<any, any, any>;
|
|
37
|
+
type StrictEventEmitter<TEmitterType, TEventRecord, TEmitRecord = TEventRecord, UnneededMethods extends Exclude<OverriddenKeys, keyof TEmitterType> = Exclude<OverriddenKeys, keyof TEmitterType>, NeededMethods extends Exclude<OverriddenKeys, UnneededMethods> = Exclude<OverriddenKeys, UnneededMethods>> = TypeRecord<TEmitterType, TEventRecord, TEmitRecord> & Pick<TEmitterType, Exclude<keyof TEmitterType, OverriddenKeys>> & Pick<OverriddenMethods<TEmitterType, TEventRecord, TEmitRecord>, NeededMethods>;
|
|
38
38
|
export {};
|
package/lib/core/types.d.ts
CHANGED
package/lib/index.d.ts
CHANGED
|
@@ -23,11 +23,13 @@ export * from './services/captcha';
|
|
|
23
23
|
export * from './services/dingtalk';
|
|
24
24
|
export * from './services/dispose';
|
|
25
25
|
export * from './services/jwt';
|
|
26
|
+
export * from './services/log';
|
|
26
27
|
export * from './services/mail';
|
|
27
28
|
export * from './services/pay';
|
|
28
29
|
export * from './services/rate_limit';
|
|
29
30
|
export * from './services/redis';
|
|
30
31
|
export * from './services/sensitive_words';
|
|
31
|
-
export * from './
|
|
32
|
+
export * from './services/template_renderer';
|
|
32
33
|
export * from './types/index';
|
|
34
|
+
export * from './x';
|
|
33
35
|
export * from '.x/models';
|
package/lib/index.js
CHANGED
|
@@ -24,13 +24,15 @@ export * from "./services/captcha";
|
|
|
24
24
|
export * from "./services/dingtalk";
|
|
25
25
|
export * from "./services/dispose";
|
|
26
26
|
export * from "./services/jwt";
|
|
27
|
+
export * from "./services/log";
|
|
27
28
|
export * from "./services/mail";
|
|
28
29
|
export * from "./services/pay";
|
|
29
30
|
export * from "./services/rate_limit";
|
|
30
31
|
export * from "./services/redis";
|
|
31
32
|
export * from "./services/sensitive_words";
|
|
33
|
+
export * from "./services/template_renderer";
|
|
34
|
+
export * from "./types/index";
|
|
32
35
|
export * from "./x"; // @endindex
|
|
33
|
-
|
|
34
|
-
export * from "./types/index"; // @ts-ignore
|
|
36
|
+
// @ts-ignore
|
|
35
37
|
|
|
36
38
|
export * from '.x/models';
|
package/lib/services/cache.d.ts
CHANGED
|
@@ -5,17 +5,17 @@ export interface CacheServiceOptions {
|
|
|
5
5
|
/** 默认过期时间 */
|
|
6
6
|
ttl: MsValue;
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
type Data = {
|
|
9
9
|
[K in string]: (...args: any[]) => any;
|
|
10
10
|
};
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
type Key<T extends Data> = keyof T;
|
|
12
|
+
type KeyPath<T extends Data> = {
|
|
13
13
|
[K in keyof T]: T[K] extends (...args: infer X) => any ? IsEmptyArray<X> extends true ? K : [K, ...X] : never;
|
|
14
14
|
}[keyof T];
|
|
15
|
-
|
|
15
|
+
type KeyPathForNumberValue<T extends Data> = {
|
|
16
16
|
[K in keyof T]: T[K] extends (...args: infer X) => number ? IsEmptyArray<X> extends true ? K : [K, ...X] : never;
|
|
17
17
|
}[keyof T];
|
|
18
|
-
|
|
18
|
+
type Value<T extends Data, P extends KeyPath<T>> = ReturnType<T[P extends any[] ? P[0] : P]>;
|
|
19
19
|
export declare class CacheService<TData extends Data = Data, TKey extends Key<TData> = any, TKeyPath extends KeyPath<TData> = any, TKeyPathForNumberValue extends KeyPathForNumberValue<TData> = any> implements BaseService {
|
|
20
20
|
options: CacheServiceOptions;
|
|
21
21
|
serviceName: string;
|
package/lib/services/log.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { BaseService } from './base';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
2
|
+
export type LogServiceLevel = 'error' | 'info' | 'success';
|
|
3
|
+
export type LogServicePayload = {
|
|
4
4
|
level: LogServiceLevel;
|
|
5
5
|
title: string;
|
|
6
6
|
desc?: Record<string, any>;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
8
|
+
export type LogServicePayloadWithTime = LogServicePayload & {
|
|
9
9
|
time: string;
|
|
10
10
|
};
|
|
11
11
|
export declare class LogService implements BaseService {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseService } from './base';
|
|
2
|
+
export interface TemplateRendererServiceRenderOptions {
|
|
3
|
+
/** 是否启用代码渲染 */
|
|
4
|
+
code?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class TemplateRendererService implements BaseService {
|
|
7
|
+
serviceName: string;
|
|
8
|
+
render(text: string, data: Record<string, any>, options?: TemplateRendererServiceRenderOptions): string;
|
|
9
|
+
}
|
|
10
|
+
declare module '../x' {
|
|
11
|
+
interface X {
|
|
12
|
+
templateRenderer: TemplateRendererService;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class TemplateRendererService {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.serviceName = 'templateRenderer';
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
render(text, data, options) {
|
|
7
|
+
const keys = Object.keys(data);
|
|
8
|
+
|
|
9
|
+
for (const key of keys) {
|
|
10
|
+
text = typeof data[key] === 'function' ? text.replace(new RegExp(`\\{${key}(:.+?)?\\}`, 'g'), (_, params) => {
|
|
11
|
+
return data[key].call(null, ...(params ? params.substring(1) : '').split(','));
|
|
12
|
+
}) : text.replaceAll(`{${key}}`, data[key]);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
if (options != null && options.code) {
|
|
16
|
+
text = text.replace(/\{\{(.+?)\}\}/g, (_, code) => {
|
|
17
|
+
return eval(`
|
|
18
|
+
(() => {
|
|
19
|
+
const {${keys.join(',')}} = ${JSON.stringify(data)};
|
|
20
|
+
return ${code};
|
|
21
|
+
})()
|
|
22
|
+
`);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return text;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { OmitStrict, PartialBy, RequiredBy, RequiredDeep, Simplify } from 'vtils/types';
|
|
2
|
-
export
|
|
2
|
+
export type MakeDtoRequired<TRawData extends Record<any, any>, TPickKey extends keyof TRawData = never, TPartialKey extends keyof Pick<RequiredDeep<TRawData>, [
|
|
3
3
|
TPickKey
|
|
4
4
|
] extends [never] ? keyof TRawData : TPickKey> = never> = Simplify<PartialBy<Pick<RequiredDeep<TRawData>, [
|
|
5
5
|
TPickKey
|
|
6
6
|
] extends [never] ? keyof TRawData : TPickKey>, TPartialKey>>;
|
|
7
|
-
export
|
|
7
|
+
export type MakeDtoPartial<TRawData extends Record<any, any>, TPickKey extends keyof TRawData = never, TRequiredKey extends keyof Pick<Partial<TRawData>, [
|
|
8
8
|
TPickKey
|
|
9
9
|
] extends [never] ? keyof TRawData : TPickKey> = never> = Simplify<RequiredBy<Pick<Partial<TRawData>, [
|
|
10
10
|
TPickKey
|
|
11
11
|
] extends [never] ? keyof TRawData : TPickKey>, TRequiredKey>>;
|
|
12
|
-
export
|
|
12
|
+
export type MakeDtoExcludeRequired<TRawData extends Record<any, any>, TExcludeKey extends keyof TRawData = never, TPartialKey extends keyof Omit<RequiredDeep<TRawData>, [
|
|
13
13
|
TExcludeKey
|
|
14
14
|
] extends [never] ? never : TExcludeKey> = never> = Simplify<PartialBy<Omit<RequiredDeep<TRawData>, [
|
|
15
15
|
TExcludeKey
|
|
16
16
|
] extends [never] ? never : TExcludeKey>, TPartialKey>>;
|
|
17
|
-
export
|
|
17
|
+
export type MakeDtoExcludePartial<TRawData extends Record<any, any>, TExcludeKey extends keyof TRawData = never, TRequiredKey extends keyof Omit<Partial<TRawData>, [
|
|
18
18
|
TExcludeKey
|
|
19
19
|
] extends [never] ? never : TExcludeKey> = never> = Simplify<RequiredBy<Omit<Partial<TRawData>, [
|
|
20
20
|
TExcludeKey
|
|
21
21
|
] extends [never] ? never : TExcludeKey>, TRequiredKey>>;
|
|
22
|
-
export
|
|
23
|
-
export
|
|
22
|
+
export type MakeDtoExclude<T, K extends keyof T> = OmitStrict<T, K>;
|
|
23
|
+
export type MakeDtoInclude<T, K extends keyof T> = Pick<T, K>;
|
package/lib/x.d.ts
CHANGED
package/lib/x.js
CHANGED
|
@@ -3,6 +3,7 @@ import os from 'os';
|
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { DisposeService } from "./services/dispose";
|
|
5
5
|
import { LogService } from "./services/log";
|
|
6
|
+
import { TemplateRendererService } from "./services/template_renderer";
|
|
6
7
|
const env = JSON.parse(process.env.X_SERVER_ENVS || '{}');
|
|
7
8
|
export const x = {
|
|
8
9
|
appId: env.APP_ID,
|
|
@@ -18,4 +19,4 @@ export const x = {
|
|
|
18
19
|
fs.ensureDirSync(x.dataDir);
|
|
19
20
|
x.register(new DisposeService({
|
|
20
21
|
disposeOnExit: true
|
|
21
|
-
}), new LogService());
|
|
22
|
+
}), new LogService(), new TemplateRendererService());
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jayfong/x-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "lib/_cjs/index.js",
|
|
@@ -88,9 +88,9 @@
|
|
|
88
88
|
"jest": "^27.5.1",
|
|
89
89
|
"lint-staged": "^10.5.4",
|
|
90
90
|
"npm-check-updates": "^12.5.9",
|
|
91
|
-
"prettier": "^2.
|
|
91
|
+
"prettier": "^2.8.8",
|
|
92
92
|
"standard-version": "^9.3.2",
|
|
93
|
-
"typescript": "^
|
|
93
|
+
"typescript": "^5.0.4",
|
|
94
94
|
"typescript-snapshots-plugin": "^1.7.0"
|
|
95
95
|
},
|
|
96
96
|
"publishConfig": {
|