befly 3.8.30 → 3.8.32
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 +83 -0
- package/{config.ts → befly.config.ts} +26 -6
- package/checks/checkApp.ts +31 -1
- package/hooks/cors.ts +3 -3
- package/hooks/parser.ts +3 -3
- package/hooks/validator.ts +1 -1
- package/lib/cacheHelper.ts +0 -6
- package/lib/cipher.ts +2 -1
- package/lib/connect.ts +17 -19
- package/lib/jwt.ts +1 -1
- package/lib/logger.ts +1 -1
- package/lib/validator.ts +149 -384
- package/loader/loadHooks.ts +4 -3
- package/loader/loadPlugins.ts +7 -9
- package/main.ts +22 -36
- package/package.json +6 -5
- package/plugins/cipher.ts +1 -1
- package/plugins/config.ts +3 -4
- package/plugins/db.ts +4 -5
- package/plugins/jwt.ts +3 -2
- package/plugins/logger.ts +6 -6
- package/plugins/redis.ts +8 -12
- package/router/static.ts +3 -6
- package/sync/syncAll.ts +7 -12
- package/sync/syncApi.ts +4 -3
- package/sync/syncDb.ts +6 -5
- package/sync/syncDev.ts +9 -8
- package/sync/syncMenu.ts +174 -132
- package/tests/integration.test.ts +2 -6
- package/tests/redisHelper.test.ts +1 -2
- package/tests/validator.test.ts +611 -85
- package/types/befly.d.ts +7 -0
- package/types/cache.d.ts +73 -0
- package/types/common.d.ts +1 -37
- package/types/database.d.ts +5 -0
- package/types/index.ts +5 -5
- package/types/plugin.d.ts +1 -4
- package/types/redis.d.ts +37 -2
- package/types/table.d.ts +6 -44
- package/util.ts +283 -0
- package/tests/validator-advanced.test.ts +0 -653
- package/types/addon.d.ts +0 -50
- package/types/crypto.d.ts +0 -23
- package/types/jwt.d.ts +0 -99
- package/types/logger.d.ts +0 -13
- package/types/tool.d.ts +0 -67
- package/types/validator.d.ts +0 -43
package/types/crypto.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 加密相关类型定义
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 编码类型
|
|
7
|
-
*/
|
|
8
|
-
export type EncodingType = 'hex' | 'base64' | 'base64url';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 哈希算法类型
|
|
12
|
-
*/
|
|
13
|
-
export type HashAlgorithm = 'md5' | 'sha1' | 'sha256' | 'sha512' | 'sha384' | 'sha224';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 密码哈希选项
|
|
17
|
-
*/
|
|
18
|
-
export interface PasswordHashOptions {
|
|
19
|
-
algorithm?: 'argon2' | 'bcrypt';
|
|
20
|
-
memoryCost?: number;
|
|
21
|
-
timeCost?: number;
|
|
22
|
-
[key: string]: any;
|
|
23
|
-
}
|
package/types/jwt.d.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JWT 相关类型定义
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* JWT 算法类型
|
|
7
|
-
*/
|
|
8
|
-
export type JwtAlgorithm = 'HS256' | 'HS384' | 'HS512';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* JWT Header 接口
|
|
12
|
-
*/
|
|
13
|
-
export interface JwtHeader {
|
|
14
|
-
alg: JwtAlgorithm;
|
|
15
|
-
typ: 'JWT';
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* JWT 完整解码结果
|
|
20
|
-
*/
|
|
21
|
-
export interface JwtDecoded {
|
|
22
|
-
header: JwtHeader;
|
|
23
|
-
payload: JwtPayload;
|
|
24
|
-
signature: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* JWT 载荷
|
|
29
|
-
*/
|
|
30
|
-
export interface JwtPayload {
|
|
31
|
-
/** 用户 ID */
|
|
32
|
-
userId?: string;
|
|
33
|
-
/** 用户名 */
|
|
34
|
-
username?: string;
|
|
35
|
-
/** 角色 */
|
|
36
|
-
role?: string;
|
|
37
|
-
/** 角色列表 */
|
|
38
|
-
roles?: string[];
|
|
39
|
-
/** 权限列表 */
|
|
40
|
-
permissions?: string[];
|
|
41
|
-
/** 签发时间 */
|
|
42
|
-
iat?: number;
|
|
43
|
-
/** 过期时间 */
|
|
44
|
-
exp?: number;
|
|
45
|
-
/** 主题 */
|
|
46
|
-
sub?: string;
|
|
47
|
-
/** 签发者 */
|
|
48
|
-
iss?: string;
|
|
49
|
-
/** 受众 */
|
|
50
|
-
aud?: string | string[];
|
|
51
|
-
/** JWT ID */
|
|
52
|
-
jti?: string;
|
|
53
|
-
/** 生效时间 */
|
|
54
|
-
nbf?: number;
|
|
55
|
-
/** 其他自定义字段 */
|
|
56
|
-
[key: string]: any;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* JWT 签名选项
|
|
61
|
-
*/
|
|
62
|
-
export interface JwtSignOptions {
|
|
63
|
-
/** 密钥 */
|
|
64
|
-
secret?: string;
|
|
65
|
-
/** 算法 */
|
|
66
|
-
algorithm?: JwtAlgorithm;
|
|
67
|
-
/** 过期时间 */
|
|
68
|
-
expiresIn?: string | number;
|
|
69
|
-
/** 签发者 */
|
|
70
|
-
issuer?: string;
|
|
71
|
-
/** 受众 */
|
|
72
|
-
audience?: string;
|
|
73
|
-
/** 主题 */
|
|
74
|
-
subject?: string;
|
|
75
|
-
/** 生效时间 */
|
|
76
|
-
notBefore?: string | number;
|
|
77
|
-
/** JWT ID */
|
|
78
|
-
jwtId?: string;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* JWT 验证选项
|
|
83
|
-
*/
|
|
84
|
-
export interface JwtVerifyOptions {
|
|
85
|
-
/** 密钥 */
|
|
86
|
-
secret?: string;
|
|
87
|
-
/** 算法列表 */
|
|
88
|
-
algorithms?: JwtAlgorithm[];
|
|
89
|
-
/** 签发者 */
|
|
90
|
-
issuer?: string;
|
|
91
|
-
/** 受众 */
|
|
92
|
-
audience?: string;
|
|
93
|
-
/** 主题 */
|
|
94
|
-
subject?: string;
|
|
95
|
-
/** 是否忽略过期 */
|
|
96
|
-
ignoreExpiration?: boolean;
|
|
97
|
-
/** 是否忽略生效时间 */
|
|
98
|
-
ignoreNotBefore?: boolean;
|
|
99
|
-
}
|
package/types/logger.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 日志配置
|
|
3
|
-
*/
|
|
4
|
-
export interface LoggerConfig {
|
|
5
|
-
/** 是否开启调试模式 (0: 关闭, 1: 开启) @default 0 */
|
|
6
|
-
debug?: number;
|
|
7
|
-
/** 日志目录 @default './logs' */
|
|
8
|
-
dir?: string;
|
|
9
|
-
/** 是否输出到控制台 (0: 关闭, 1: 开启) @default 1 */
|
|
10
|
-
console?: number;
|
|
11
|
-
/** 单个日志文件最大大小 (MB) @default 10 */
|
|
12
|
-
maxSize?: number;
|
|
13
|
-
}
|
package/types/tool.d.ts
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 工具函数相关类型定义
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 日期格式化类型
|
|
7
|
-
*/
|
|
8
|
-
export type DateFormat = 'YYYY-MM-DD' | 'YYYY-MM-DD HH:mm:ss' | 'HH:mm:ss' | 'YYYY/MM/DD' | 'MM-DD' | string;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 颜色代码
|
|
12
|
-
*/
|
|
13
|
-
export type ColorCode = 'reset' | 'bright' | 'dim' | 'underscore' | 'blink' | 'reverse' | 'hidden' | 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 分页参数
|
|
17
|
-
*/
|
|
18
|
-
export interface PaginationParams {
|
|
19
|
-
/** 页码(从 1 开始) */
|
|
20
|
-
page?: number;
|
|
21
|
-
/** 每页数量 */
|
|
22
|
-
limit?: number;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* 分页结果
|
|
27
|
-
*/
|
|
28
|
-
export interface PaginationResult<T = any> {
|
|
29
|
-
/** 数据列表 */
|
|
30
|
-
list: T[];
|
|
31
|
-
/** 总条数 */
|
|
32
|
-
total: number;
|
|
33
|
-
/** 当前页码 */
|
|
34
|
-
page: number;
|
|
35
|
-
/** 每页数量 */
|
|
36
|
-
limit: number;
|
|
37
|
-
/** 总页数 */
|
|
38
|
-
pages: number;
|
|
39
|
-
/** 是否有下一页 */
|
|
40
|
-
hasNext: boolean;
|
|
41
|
-
/** 是否有上一页 */
|
|
42
|
-
hasPrev: boolean;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* 文件类型
|
|
47
|
-
*/
|
|
48
|
-
export type FileType = 'image' | 'video' | 'audio' | 'document' | 'archive' | 'other';
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* MIME 类型
|
|
52
|
-
*/
|
|
53
|
-
export type MimeType = string;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* 文件上传选项
|
|
57
|
-
*/
|
|
58
|
-
export interface FileUploadOptions {
|
|
59
|
-
/** 允许的文件类型 */
|
|
60
|
-
allowedTypes?: string[];
|
|
61
|
-
/** 最大文件大小(字节) */
|
|
62
|
-
maxSize?: number;
|
|
63
|
-
/** 保存目录 */
|
|
64
|
-
saveDir?: string;
|
|
65
|
-
/** 文件名生成函数 */
|
|
66
|
-
filename?: (originalName: string) => string;
|
|
67
|
-
}
|
package/types/validator.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 验证器相关类型定义
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 字段验证错误信息
|
|
7
|
-
*/
|
|
8
|
-
export type ValidationError = string | null;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* 字段类型
|
|
12
|
-
*/
|
|
13
|
-
export type FieldType = 'string' | 'number' | 'text' | 'array';
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 验证结果
|
|
17
|
-
*/
|
|
18
|
-
export interface ValidationResult {
|
|
19
|
-
/** 验证状态码:0=成功,1=失败 */
|
|
20
|
-
code: 0 | 1;
|
|
21
|
-
/** 字段验证结果 */
|
|
22
|
-
fields: Record<string, any>;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* 字段规则
|
|
27
|
-
*/
|
|
28
|
-
export interface FieldRule {
|
|
29
|
-
/** 字段名 */
|
|
30
|
-
name: string;
|
|
31
|
-
/** 字段类型 */
|
|
32
|
-
type: FieldType;
|
|
33
|
-
/** 最小值/长度 */
|
|
34
|
-
min: number | null;
|
|
35
|
-
/** 最大值/长度 */
|
|
36
|
-
max: number | null;
|
|
37
|
-
/** 默认值 */
|
|
38
|
-
default: any;
|
|
39
|
-
/** 是否索引 */
|
|
40
|
-
index: 0 | 1;
|
|
41
|
-
/** 正则约束 */
|
|
42
|
-
regex: string | null;
|
|
43
|
-
}
|