befly 2.3.3 → 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.
Files changed (93) hide show
  1. package/apis/health/info.ts +64 -0
  2. package/apis/tool/tokenCheck.ts +51 -0
  3. package/bin/befly.ts +202 -0
  4. package/checks/conflict.ts +408 -0
  5. package/checks/{table.js → table.ts} +139 -61
  6. package/config/env.ts +218 -0
  7. package/config/reserved.ts +96 -0
  8. package/main.ts +101 -0
  9. package/package.json +44 -8
  10. package/plugins/{db.js → db.ts} +24 -11
  11. package/plugins/logger.ts +28 -0
  12. package/plugins/redis.ts +51 -0
  13. package/plugins/tool.ts +34 -0
  14. package/scripts/syncDb/apply.ts +171 -0
  15. package/scripts/syncDb/constants.ts +70 -0
  16. package/scripts/syncDb/ddl.ts +182 -0
  17. package/scripts/syncDb/helpers.ts +172 -0
  18. package/scripts/syncDb/index.ts +215 -0
  19. package/scripts/syncDb/schema.ts +199 -0
  20. package/scripts/syncDb/sqlite.ts +50 -0
  21. package/scripts/syncDb/state.ts +104 -0
  22. package/scripts/syncDb/table.ts +204 -0
  23. package/scripts/syncDb/tableCreate.ts +142 -0
  24. package/scripts/syncDb/tests/constants.test.ts +104 -0
  25. package/scripts/syncDb/tests/ddl.test.ts +134 -0
  26. package/scripts/syncDb/tests/helpers.test.ts +70 -0
  27. package/scripts/syncDb/types.ts +92 -0
  28. package/scripts/syncDb/version.ts +73 -0
  29. package/scripts/syncDb.ts +9 -0
  30. package/scripts/{syncDev.js → syncDev.ts} +41 -25
  31. package/system.ts +149 -0
  32. package/tables/_common.json +21 -0
  33. package/tables/admin.json +10 -0
  34. package/tsconfig.json +58 -0
  35. package/types/api.d.ts +246 -0
  36. package/types/befly.d.ts +234 -0
  37. package/types/common.d.ts +215 -0
  38. package/types/context.ts +167 -0
  39. package/types/crypto.d.ts +23 -0
  40. package/types/database.d.ts +278 -0
  41. package/types/index.d.ts +16 -0
  42. package/types/index.ts +459 -0
  43. package/types/jwt.d.ts +99 -0
  44. package/types/logger.d.ts +43 -0
  45. package/types/plugin.d.ts +109 -0
  46. package/types/redis.d.ts +44 -0
  47. package/types/tool.d.ts +67 -0
  48. package/types/validator.d.ts +45 -0
  49. package/utils/addonHelper.ts +60 -0
  50. package/utils/api.ts +23 -0
  51. package/utils/{colors.js → colors.ts} +79 -21
  52. package/utils/crypto.ts +308 -0
  53. package/utils/datetime.ts +51 -0
  54. package/utils/dbHelper.ts +142 -0
  55. package/utils/errorHandler.ts +68 -0
  56. package/utils/index.ts +46 -0
  57. package/utils/jwt.ts +493 -0
  58. package/utils/logger.ts +284 -0
  59. package/utils/objectHelper.ts +68 -0
  60. package/utils/pluginHelper.ts +62 -0
  61. package/utils/redisHelper.ts +338 -0
  62. package/utils/response.ts +38 -0
  63. package/utils/{sqlBuilder.js → sqlBuilder.ts} +233 -97
  64. package/utils/sqlHelper.ts +447 -0
  65. package/utils/tableHelper.ts +167 -0
  66. package/utils/tool.ts +230 -0
  67. package/utils/typeHelper.ts +101 -0
  68. package/utils/validate.ts +451 -0
  69. package/utils/{xml.js → xml.ts} +100 -74
  70. package/.npmrc +0 -3
  71. package/.prettierignore +0 -2
  72. package/.prettierrc +0 -11
  73. package/apis/health/info.js +0 -49
  74. package/apis/tool/tokenCheck.js +0 -29
  75. package/bin/befly.js +0 -109
  76. package/config/env.js +0 -64
  77. package/main.js +0 -579
  78. package/plugins/logger.js +0 -14
  79. package/plugins/redis.js +0 -32
  80. package/plugins/tool.js +0 -8
  81. package/scripts/syncDb.js +0 -752
  82. package/system.js +0 -118
  83. package/tables/common.json +0 -16
  84. package/tables/tool.json +0 -6
  85. package/utils/api.js +0 -27
  86. package/utils/crypto.js +0 -260
  87. package/utils/index.js +0 -334
  88. package/utils/jwt.js +0 -387
  89. package/utils/logger.js +0 -143
  90. package/utils/redisHelper.js +0 -74
  91. package/utils/sqlManager.js +0 -471
  92. package/utils/tool.js +0 -31
  93. package/utils/validate.js +0 -226
@@ -0,0 +1,278 @@
1
+ /**
2
+ * 数据库相关类型定义
3
+ */
4
+
5
+ import type { SqlValue, WhereConditions } from './common';
6
+
7
+ // 重新导出 WhereOperator 和 WhereConditions,供其他模块使用
8
+ export type { WhereOperator, WhereConditions } from './index';
9
+
10
+ /**
11
+ * 查询选项
12
+ */
13
+ export interface QueryOptions {
14
+ /** 表名 */
15
+ table: string;
16
+ /** 查询字段 */
17
+ fields?: string[];
18
+ /** WHERE 条件 */
19
+ where?: WhereConditions;
20
+ /** 排序 */
21
+ orderBy?: string;
22
+ /** 页码(从 1 开始) */
23
+ page?: number;
24
+ /** 每页数量 */
25
+ limit?: number;
26
+ /** 是否包含已删除数据 */
27
+ includeDeleted?: boolean;
28
+ /** 自定义 state 条件 */
29
+ customState?: WhereConditions;
30
+ }
31
+
32
+ /**
33
+ * 插入选项
34
+ */
35
+ export interface InsertOptions {
36
+ /** 表名 */
37
+ table: string;
38
+ /** 插入数据(ID、时间戳、state 会自动生成) */
39
+ data: Record<string, any>;
40
+ }
41
+
42
+ /**
43
+ * 更新选项
44
+ */
45
+ export interface UpdateOptions {
46
+ /** 表名 */
47
+ table: string;
48
+ /** 更新数据(updated_at 会自动更新) */
49
+ data: Record<string, any>;
50
+ /** WHERE 条件 */
51
+ where: WhereConditions;
52
+ /** 是否包含已删除数据 */
53
+ includeDeleted?: boolean;
54
+ }
55
+
56
+ /**
57
+ * 删除选项
58
+ */
59
+ export interface DeleteOptions {
60
+ /** 表名 */
61
+ table: string;
62
+ /** WHERE 条件 */
63
+ where: WhereConditions;
64
+ /** 是否物理删除(false=软删除,true=物理删除) */
65
+ hard?: boolean;
66
+ }
67
+
68
+ /**
69
+ * 列表查询结果
70
+ */
71
+ export interface ListResult<T = any> {
72
+ /** 数据列表 */
73
+ list: T[];
74
+ /** 总条数 */
75
+ total: number;
76
+ /** 当前页码 */
77
+ page: number;
78
+ /** 每页数量 */
79
+ limit: number;
80
+ /** 总页数 */
81
+ pages: number;
82
+ }
83
+
84
+ /**
85
+ * 事务回调函数
86
+ */
87
+ export type TransactionCallback<T = any> = (trans: SqlHelper) => Promise<T>;
88
+
89
+ /**
90
+ * SQL 查询结果
91
+ */
92
+ export interface SqlQuery {
93
+ sql: string;
94
+ params: SqlValue[];
95
+ }
96
+
97
+ /**
98
+ * 插入数据类型
99
+ */
100
+ export type InsertData = Record<string, SqlValue> | Record<string, SqlValue>[];
101
+
102
+ /**
103
+ * 更新数据类型
104
+ */
105
+ export type UpdateData = Record<string, SqlValue>;
106
+
107
+ /**
108
+ * 数据库类型
109
+ */
110
+ export type DbType = 'mysql' | 'postgresql' | 'sqlite';
111
+
112
+ /**
113
+ * 列信息
114
+ */
115
+ export interface ColumnInfo {
116
+ /** 列名 */
117
+ name: string;
118
+ /** 数据类型 */
119
+ type: string;
120
+ /** 是否可空 */
121
+ nullable: boolean;
122
+ /** 默认值 */
123
+ default: any;
124
+ /** 注释 */
125
+ comment: string;
126
+ /** 长度 */
127
+ length?: number;
128
+ }
129
+
130
+ /**
131
+ * 索引信息
132
+ */
133
+ export interface IndexInfo {
134
+ /** 索引名 */
135
+ name: string;
136
+ /** 列名 */
137
+ column: string;
138
+ /** 是否唯一 */
139
+ unique: boolean;
140
+ }
141
+
142
+ /**
143
+ * 同步统计
144
+ */
145
+ export interface SyncStats {
146
+ /** 创建的表数 */
147
+ created: number;
148
+ /** 修改的表数 */
149
+ modified: number;
150
+ /** 创建的索引数 */
151
+ indexesCreated: number;
152
+ /** 删除的索引数 */
153
+ indexesDropped: number;
154
+ }
155
+
156
+ /**
157
+ * SqlHelper 接口(前向声明)
158
+ */
159
+ export interface SqlHelper {
160
+ getDetail<T = any>(options: QueryOptions): Promise<T | null>;
161
+ getList<T = any>(options: QueryOptions): Promise<ListResult<T>>;
162
+ getAll<T = any>(options: Omit<QueryOptions, 'page' | 'limit'>): Promise<T[]>;
163
+ insData(options: InsertOptions): Promise<number>;
164
+ updData(options: UpdateOptions): Promise<number>;
165
+ delData(options: DeleteOptions): Promise<number>;
166
+ trans<T = any>(callback: TransactionCallback<T>): Promise<T>;
167
+ query(sql: string, params?: any[]): Promise<any>;
168
+ }
169
+
170
+ /**
171
+ * SQL 客户端选项
172
+ */
173
+ export interface SqlClientOptions {
174
+ /** 最大连接数 */
175
+ max?: number;
176
+ /** 是否使用 BigInt */
177
+ bigint?: boolean;
178
+ /** 其他自定义选项 */
179
+ [key: string]: any;
180
+ }
181
+
182
+ // ========== 数据库同步相关类型 ==========
183
+
184
+ /**
185
+ * 列信息接口(用于数据库同步)
186
+ */
187
+ export interface ColumnInfo {
188
+ /** 字段类型(如 string, number 等) */
189
+ type: string;
190
+ /** 数据库列类型(如 VARCHAR, INT 等) */
191
+ columnType: string;
192
+ /** 字段长度 */
193
+ length: number | null;
194
+ /** 是否可空 */
195
+ nullable: boolean;
196
+ /** 默认值 */
197
+ defaultValue: any;
198
+ /** 字段注释 */
199
+ comment: string | null;
200
+ }
201
+
202
+ /**
203
+ * 索引信息接口
204
+ */
205
+ export interface IndexInfo {
206
+ /** 索引名称到字段数组的映射 */
207
+ [indexName: string]: string[];
208
+ }
209
+
210
+ /**
211
+ * 字段变更类型
212
+ */
213
+ export interface FieldChange {
214
+ /** 变更类型 */
215
+ type: 'length' | 'comment' | 'datatype' | 'default';
216
+ /** 当前值 */
217
+ current: any;
218
+ /** 新值 */
219
+ new: any;
220
+ }
221
+
222
+ /**
223
+ * 索引操作接口
224
+ */
225
+ export interface IndexAction {
226
+ /** 操作类型:create(创建)或 drop(删除) */
227
+ action: 'create' | 'drop';
228
+ /** 索引名称 */
229
+ indexName: string;
230
+ /** 字段名称 */
231
+ fieldName: string;
232
+ }
233
+
234
+ /**
235
+ * 表同步计划接口
236
+ */
237
+ export interface TablePlan {
238
+ /** 是否有变更 */
239
+ changed: boolean;
240
+ /** 添加字段的 SQL 子句 */
241
+ addClauses: string[];
242
+ /** 修改字段的 SQL 子句 */
243
+ modifyClauses: string[];
244
+ /** 默认值变更的 SQL 子句 */
245
+ defaultClauses: string[];
246
+ /** 索引操作列表 */
247
+ indexActions: IndexAction[];
248
+ /** 注释变更的 SQL 子句(可选) */
249
+ commentActions?: string[];
250
+ }
251
+
252
+ /**
253
+ * 全局统计计数接口
254
+ */
255
+ export interface GlobalCount {
256
+ /** 已处理表数量 */
257
+ processedTables: number;
258
+ /** 创建表数量 */
259
+ createdTables: number;
260
+ /** 修改表数量 */
261
+ modifiedTables: number;
262
+ /** 新增字段数量 */
263
+ addFields: number;
264
+ /** 类型变更数量 */
265
+ typeChanges: number;
266
+ /** 最大值变更数量 */
267
+ maxChanges: number;
268
+ /** 最小值变更数量 */
269
+ minChanges: number;
270
+ /** 默认值变更数量 */
271
+ defaultChanges: number;
272
+ /** 名称变更数量 */
273
+ nameChanges: number;
274
+ /** 索引创建数量 */
275
+ indexCreate: number;
276
+ /** 索引删除数量 */
277
+ indexDrop: number;
278
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Befly 类型定义入口文件
3
+ * 统一导出所有类型定义
4
+ */
5
+
6
+ // 通用类型
7
+ export * from './common.js';
8
+
9
+ // 插件系统
10
+ export * from './plugin.js';
11
+
12
+ // API 系统
13
+ export * from './api.js';
14
+
15
+ // Befly 核心
16
+ export * from './befly.js';