befly 3.16.9 → 3.16.11

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 (178) hide show
  1. package/README.md +0 -129
  2. package/befly.js +12769 -0
  3. package/befly.min.js +47 -0
  4. package/package.json +18 -29
  5. package/dist/befly.config.d.ts +0 -7
  6. package/dist/befly.config.js +0 -128
  7. package/dist/befly.js +0 -17276
  8. package/dist/befly.min.js +0 -23
  9. package/dist/checks/checkApi.d.ts +0 -1
  10. package/dist/checks/checkApi.js +0 -124
  11. package/dist/checks/checkConfig.d.ts +0 -9
  12. package/dist/checks/checkConfig.js +0 -255
  13. package/dist/checks/checkHook.d.ts +0 -1
  14. package/dist/checks/checkHook.js +0 -132
  15. package/dist/checks/checkMenu.d.ts +0 -3
  16. package/dist/checks/checkMenu.js +0 -106
  17. package/dist/checks/checkPlugin.d.ts +0 -1
  18. package/dist/checks/checkPlugin.js +0 -132
  19. package/dist/checks/checkTable.d.ts +0 -7
  20. package/dist/checks/checkTable.js +0 -431
  21. package/dist/configs/presetRegexp.d.ts +0 -145
  22. package/dist/configs/presetRegexp.js +0 -218
  23. package/dist/hooks/auth.d.ts +0 -3
  24. package/dist/hooks/auth.js +0 -24
  25. package/dist/hooks/cors.d.ts +0 -7
  26. package/dist/hooks/cors.js +0 -36
  27. package/dist/hooks/parser.d.ts +0 -10
  28. package/dist/hooks/parser.js +0 -76
  29. package/dist/hooks/permission.d.ts +0 -10
  30. package/dist/hooks/permission.js +0 -64
  31. package/dist/hooks/validator.d.ts +0 -7
  32. package/dist/hooks/validator.js +0 -52
  33. package/dist/index.d.ts +0 -28
  34. package/dist/index.js +0 -316
  35. package/dist/lib/asyncContext.d.ts +0 -21
  36. package/dist/lib/asyncContext.js +0 -27
  37. package/dist/lib/cacheHelper.d.ts +0 -128
  38. package/dist/lib/cacheHelper.js +0 -477
  39. package/dist/lib/cacheKeys.d.ts +0 -27
  40. package/dist/lib/cacheKeys.js +0 -37
  41. package/dist/lib/cipher.d.ts +0 -153
  42. package/dist/lib/cipher.js +0 -237
  43. package/dist/lib/connect.d.ts +0 -95
  44. package/dist/lib/connect.js +0 -313
  45. package/dist/lib/dbHelper.d.ts +0 -229
  46. package/dist/lib/dbHelper.js +0 -1069
  47. package/dist/lib/dbUtils.d.ts +0 -91
  48. package/dist/lib/dbUtils.js +0 -544
  49. package/dist/lib/jwt.d.ts +0 -13
  50. package/dist/lib/jwt.js +0 -77
  51. package/dist/lib/logger.d.ts +0 -46
  52. package/dist/lib/logger.js +0 -731
  53. package/dist/lib/redisHelper.d.ts +0 -193
  54. package/dist/lib/redisHelper.js +0 -598
  55. package/dist/lib/sqlBuilder.d.ts +0 -160
  56. package/dist/lib/sqlBuilder.js +0 -837
  57. package/dist/lib/sqlCheck.d.ts +0 -23
  58. package/dist/lib/sqlCheck.js +0 -119
  59. package/dist/lib/validator.d.ts +0 -45
  60. package/dist/lib/validator.js +0 -424
  61. package/dist/loader/loadApis.d.ts +0 -12
  62. package/dist/loader/loadApis.js +0 -71
  63. package/dist/loader/loadHooks.d.ts +0 -7
  64. package/dist/loader/loadHooks.js +0 -50
  65. package/dist/loader/loadPlugins.d.ts +0 -8
  66. package/dist/loader/loadPlugins.js +0 -69
  67. package/dist/paths.d.ts +0 -93
  68. package/dist/paths.js +0 -100
  69. package/dist/plugins/cache.d.ts +0 -10
  70. package/dist/plugins/cache.js +0 -24
  71. package/dist/plugins/cipher.d.ts +0 -7
  72. package/dist/plugins/cipher.js +0 -14
  73. package/dist/plugins/config.d.ts +0 -3
  74. package/dist/plugins/config.js +0 -9
  75. package/dist/plugins/db.d.ts +0 -10
  76. package/dist/plugins/db.js +0 -48
  77. package/dist/plugins/jwt.d.ts +0 -6
  78. package/dist/plugins/jwt.js +0 -13
  79. package/dist/plugins/logger.d.ts +0 -10
  80. package/dist/plugins/logger.js +0 -21
  81. package/dist/plugins/redis.d.ts +0 -10
  82. package/dist/plugins/redis.js +0 -40
  83. package/dist/plugins/tool.d.ts +0 -75
  84. package/dist/plugins/tool.js +0 -105
  85. package/dist/router/api.d.ts +0 -14
  86. package/dist/router/api.js +0 -109
  87. package/dist/router/static.d.ts +0 -9
  88. package/dist/router/static.js +0 -56
  89. package/dist/scripts/ensureDist.d.ts +0 -1
  90. package/dist/scripts/ensureDist.js +0 -296
  91. package/dist/sync/syncApi.d.ts +0 -3
  92. package/dist/sync/syncApi.js +0 -140
  93. package/dist/sync/syncCache.d.ts +0 -2
  94. package/dist/sync/syncCache.js +0 -14
  95. package/dist/sync/syncDev.d.ts +0 -6
  96. package/dist/sync/syncDev.js +0 -166
  97. package/dist/sync/syncMenu.d.ts +0 -14
  98. package/dist/sync/syncMenu.js +0 -308
  99. package/dist/sync/syncTable.d.ts +0 -126
  100. package/dist/sync/syncTable.js +0 -1129
  101. package/dist/types/api.d.ts +0 -175
  102. package/dist/types/api.js +0 -4
  103. package/dist/types/befly.d.ts +0 -231
  104. package/dist/types/befly.js +0 -4
  105. package/dist/types/cache.d.ts +0 -96
  106. package/dist/types/cache.js +0 -4
  107. package/dist/types/cipher.d.ts +0 -27
  108. package/dist/types/cipher.js +0 -7
  109. package/dist/types/common.d.ts +0 -127
  110. package/dist/types/common.js +0 -5
  111. package/dist/types/context.d.ts +0 -39
  112. package/dist/types/context.js +0 -4
  113. package/dist/types/coreError.d.ts +0 -31
  114. package/dist/types/coreError.js +0 -38
  115. package/dist/types/crypto.d.ts +0 -20
  116. package/dist/types/crypto.js +0 -4
  117. package/dist/types/database.d.ts +0 -182
  118. package/dist/types/database.js +0 -4
  119. package/dist/types/hook.d.ts +0 -30
  120. package/dist/types/hook.js +0 -19
  121. package/dist/types/jwt.d.ts +0 -76
  122. package/dist/types/jwt.js +0 -4
  123. package/dist/types/logger.d.ts +0 -95
  124. package/dist/types/logger.js +0 -6
  125. package/dist/types/plugin.d.ts +0 -27
  126. package/dist/types/plugin.js +0 -17
  127. package/dist/types/redis.d.ts +0 -80
  128. package/dist/types/redis.js +0 -4
  129. package/dist/types/roleApisCache.d.ts +0 -21
  130. package/dist/types/roleApisCache.js +0 -8
  131. package/dist/types/sync.d.ts +0 -93
  132. package/dist/types/sync.js +0 -4
  133. package/dist/types/table.d.ts +0 -34
  134. package/dist/types/table.js +0 -4
  135. package/dist/types/validate.d.ts +0 -113
  136. package/dist/types/validate.js +0 -4
  137. package/dist/utils/calcPerfTime.d.ts +0 -4
  138. package/dist/utils/calcPerfTime.js +0 -13
  139. package/dist/utils/cors.d.ts +0 -8
  140. package/dist/utils/cors.js +0 -17
  141. package/dist/utils/dbFieldRules.d.ts +0 -31
  142. package/dist/utils/dbFieldRules.js +0 -94
  143. package/dist/utils/fieldClear.d.ts +0 -11
  144. package/dist/utils/fieldClear.js +0 -57
  145. package/dist/utils/formatYmdHms.d.ts +0 -1
  146. package/dist/utils/formatYmdHms.js +0 -20
  147. package/dist/utils/getClientIp.d.ts +0 -6
  148. package/dist/utils/getClientIp.js +0 -39
  149. package/dist/utils/importDefault.d.ts +0 -1
  150. package/dist/utils/importDefault.js +0 -53
  151. package/dist/utils/isDirentDirectory.d.ts +0 -3
  152. package/dist/utils/isDirentDirectory.js +0 -18
  153. package/dist/utils/loadMenuConfigs.d.ts +0 -11
  154. package/dist/utils/loadMenuConfigs.js +0 -130
  155. package/dist/utils/loggerUtils.d.ts +0 -18
  156. package/dist/utils/loggerUtils.js +0 -171
  157. package/dist/utils/mergeAndConcat.d.ts +0 -7
  158. package/dist/utils/mergeAndConcat.js +0 -77
  159. package/dist/utils/normalizeFieldDefinition.d.ts +0 -18
  160. package/dist/utils/normalizeFieldDefinition.js +0 -27
  161. package/dist/utils/processInfo.d.ts +0 -26
  162. package/dist/utils/processInfo.js +0 -41
  163. package/dist/utils/response.d.ts +0 -20
  164. package/dist/utils/response.js +0 -96
  165. package/dist/utils/scanAddons.d.ts +0 -15
  166. package/dist/utils/scanAddons.js +0 -35
  167. package/dist/utils/scanCoreBuiltins.d.ts +0 -3
  168. package/dist/utils/scanCoreBuiltins.js +0 -72
  169. package/dist/utils/scanFiles.d.ts +0 -32
  170. package/dist/utils/scanFiles.js +0 -124
  171. package/dist/utils/scanSources.d.ts +0 -10
  172. package/dist/utils/scanSources.js +0 -46
  173. package/dist/utils/sortModules.d.ts +0 -28
  174. package/dist/utils/sortModules.js +0 -105
  175. package/dist/utils/sqlUtil.d.ts +0 -33
  176. package/dist/utils/sqlUtil.js +0 -146
  177. package/dist/utils/util.d.ts +0 -172
  178. package/dist/utils/util.js +0 -517
@@ -1,229 +0,0 @@
1
- /**
2
- * 数据库助手 - TypeScript 版本
3
- * 提供数据库 CRUD 操作的封装
4
- */
5
- import type { WhereConditions, SqlValue } from "../types/common";
6
- import type { QueryOptions, InsertOptions, UpdateOptions, DeleteOptions, DbPageResult, DbListResult, TransactionCallback, DbResult, ListSql } from "../types/database";
7
- type RedisCacheLike = {
8
- getObject<T = unknown>(key: string): Promise<T | null>;
9
- setObject<T = unknown>(key: string, obj: T, ttl?: number | null): Promise<string | null>;
10
- genTimeID(): Promise<number>;
11
- };
12
- type SqlClientLike = {
13
- unsafe<TResult = unknown>(sqlStr: string, params?: SqlValue[]): Promise<TResult>;
14
- };
15
- type DbIdMode = "timeId" | "autoId";
16
- /**
17
- * 数据库助手类
18
- */
19
- export declare class DbHelper {
20
- private redis;
21
- private dbName;
22
- private sql;
23
- private isTransaction;
24
- private idMode;
25
- static convertBigIntFields<T extends Record<string, unknown> = Record<string, unknown>>(arr: T[], fields?: readonly string[]): T[];
26
- static convertBigIntFields<T>(arr: T, fields?: readonly string[]): T;
27
- /**
28
- * 构造函数
29
- * @param redis - Redis 实例
30
- * @param sql - Bun SQL 客户端(可选,用于事务)
31
- */
32
- constructor(options: {
33
- redis: RedisCacheLike;
34
- dbName: string;
35
- sql?: SqlClientLike | null;
36
- idMode?: DbIdMode;
37
- });
38
- private createSqlBuilder;
39
- private getTableColumns;
40
- private prepareQueryOptions;
41
- /**
42
- * 为 builder 添加 JOIN
43
- */
44
- private applyJoins;
45
- private executeSelect;
46
- private executeRun;
47
- private executeWithConn;
48
- /**
49
- * 执行原生 SQL(内部工具/同步脚本专用)
50
- *
51
- * - 复用当前 DbHelper 持有的连接/事务
52
- * - 统一走 executeWithConn,保持参数校验与错误行为一致
53
- */
54
- unsafe<TResult = unknown>(sqlStr: string, params?: unknown[]): Promise<DbResult<TResult>>;
55
- /**
56
- * 检查表是否存在
57
- * @param tableName - 表名(支持小驼峰,会自动转换为下划线)
58
- * @returns 表是否存在
59
- */
60
- tableExists(tableName: string): Promise<DbResult<boolean>>;
61
- /**
62
- * 查询记录数
63
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
64
- * @param options.where - 查询条件
65
- * @param options.joins - 多表联查选项
66
- * @example
67
- * // 查询总数
68
- * const count = await db.getCount({ table: 'user' });
69
- * // 查询指定条件的记录数
70
- * const activeCount = await db.getCount({ table: 'user', where: { state: 1 } });
71
- * // 联查计数
72
- * const count = await db.getCount({
73
- * table: 'order o',
74
- * joins: [{ table: 'user u', on: 'o.user_id = u.id' }],
75
- * where: { 'o.state': 1 }
76
- * });
77
- */
78
- getCount(options: Omit<QueryOptions, "fields" | "page" | "limit" | "orderBy">): Promise<DbResult<number>>;
79
- /**
80
- * 查询单条数据
81
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换;联查时可带别名如 'order o')
82
- * @param options.fields - 字段列表(联查时需带表别名,如 'o.id', 'u.username')
83
- * @param options.joins - 多表联查选项
84
- * @returns DbResult<TItem>
85
- *
86
- * 语义说明(重要):
87
- * - 本方法不再用 `null` 表示“未命中”。
88
- * - 当查询未命中(或数据反序列化失败)时,`data` 将返回空对象 `{}`。
89
- * - 因此业务侧应通过关键字段判断是否存在(例如 `if (!res.data?.id) { ... }`)。
90
- * @example
91
- * // 单表查询
92
- * getOne({ table: 'userProfile', fields: ['userId', 'userName'] })
93
- * // 联查
94
- * getOne({
95
- * table: 'order o',
96
- * joins: [{ table: 'user u', on: 'o.user_id = u.id' }],
97
- * fields: ['o.id', 'o.totalAmount', 'u.username'],
98
- * where: { 'o.id': 1 }
99
- * })
100
- */
101
- getOne<TItem extends Record<string, unknown> = Record<string, unknown>>(options: QueryOptions): Promise<DbResult<TItem>>;
102
- /**
103
- * 语义化别名:getDetail(与 getOne 一致)
104
- *
105
- * 说明:Befly 早期业务侧习惯用 getDetail 表达“查详情”;这里不引入新的查询逻辑,直接复用 getOne。
106
- *
107
- * 语义说明:与 getOne 完全一致,未命中时 `data` 返回 `{}`。
108
- */
109
- getDetail<TItem extends Record<string, unknown> = Record<string, unknown>>(options: QueryOptions): Promise<DbResult<TItem>>;
110
- /**
111
- * 查询列表(带分页)
112
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换;联查时可带别名)
113
- * @param options.fields - 字段列表(联查时需带表别名)
114
- * @param options.joins - 多表联查选项
115
- * @example
116
- * // 单表分页
117
- * getList({ table: 'userProfile', fields: ['userId', 'userName', 'createdAt'] })
118
- * // 联查分页
119
- * getList({
120
- * table: 'order o',
121
- * joins: [
122
- * { table: 'user u', on: 'o.user_id = u.id' },
123
- * { table: 'product p', on: 'o.product_id = p.id' }
124
- * ],
125
- * fields: ['o.id', 'o.totalAmount', 'u.username', 'p.name AS productName'],
126
- * where: { 'o.status': 'paid' },
127
- * orderBy: ['o.createdAt#DESC'],
128
- * page: 1,
129
- * limit: 10
130
- * })
131
- */
132
- getList<TItem extends Record<string, unknown> = Record<string, unknown>>(options: QueryOptions): Promise<DbResult<DbPageResult<TItem>, ListSql>>;
133
- /**
134
- * 查询所有数据(不分页,有上限保护)
135
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换;联查时可带别名)
136
- * @param options.fields - 字段列表(联查时需带表别名)
137
- * @param options.joins - 多表联查选项
138
- * ⚠️ 警告:此方法会查询大量数据,建议使用 getList 分页查询
139
- * @example
140
- * // 单表查询
141
- * getAll({ table: 'userProfile', fields: ['userId', 'userName'] })
142
- * // 联查
143
- * getAll({
144
- * table: 'order o',
145
- * joins: [{ table: 'user u', on: 'o.user_id = u.id' }],
146
- * fields: ['o.id', 'u.username'],
147
- * where: { 'o.state': 1 }
148
- * })
149
- */
150
- getAll<TItem extends Record<string, unknown> = Record<string, unknown>>(options: Omit<QueryOptions, "page" | "limit">): Promise<DbResult<DbListResult<TItem>, ListSql>>;
151
- /**
152
- * 插入数据(自动生成 ID、时间戳、state)
153
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
154
- */
155
- insData<TInsert extends Record<string, SqlValue> = Record<string, SqlValue>>(options: Omit<InsertOptions, "data"> & {
156
- data: TInsert;
157
- }): Promise<DbResult<number>>;
158
- /**
159
- * 批量插入数据(真正的批量操作)
160
- * 使用 INSERT INTO ... VALUES (...), (...), (...) 语法
161
- * 自动生成系统字段并包装在事务中
162
- * @param table - 表名(支持小驼峰或下划线格式,会自动转换)
163
- */
164
- insBatch<TInsert extends Record<string, SqlValue> = Record<string, SqlValue>>(table: string, dataList: TInsert[]): Promise<DbResult<number[]>>;
165
- delForceBatch(table: string, ids: number[]): Promise<DbResult<number>>;
166
- updBatch(table: string, dataList: Array<{
167
- id: number;
168
- data: Record<string, unknown>;
169
- }>): Promise<DbResult<number>>;
170
- /**
171
- * 更新数据(强制更新时间戳,系统字段不可修改)
172
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
173
- */
174
- updData(options: UpdateOptions): Promise<DbResult<number>>;
175
- /**
176
- * 软删除数据(deleted_at 设置为当前时间,state 设置为 0)
177
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
178
- */
179
- delData(options: DeleteOptions): Promise<DbResult<number>>;
180
- /**
181
- * 硬删除数据(物理删除,不可恢复)
182
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
183
- */
184
- delForce(options: Omit<DeleteOptions, "hard">): Promise<DbResult<number>>;
185
- /**
186
- * 禁用数据(设置 state=2)
187
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
188
- */
189
- disableData(options: Omit<DeleteOptions, "hard">): Promise<DbResult<number>>;
190
- /**
191
- * 启用数据(设置 state=1)
192
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
193
- */
194
- enableData(options: Omit<DeleteOptions, "hard">): Promise<DbResult<number>>;
195
- /**
196
- * 执行事务
197
- * 使用 Bun SQL 的 begin 方法开启事务
198
- */
199
- trans<TResult = unknown>(callback: TransactionCallback<TResult, DbHelper>): Promise<TResult>;
200
- /**
201
- * 执行原始 SQL
202
- */
203
- query<TResult = unknown>(sql: string, params?: unknown[]): Promise<DbResult<TResult>>;
204
- /**
205
- * 检查数据是否存在(优化性能)
206
- * @param options.table - 表名(支持小驼峰或下划线格式,会自动转换)
207
- */
208
- exists(options: Omit<QueryOptions, "fields" | "orderBy" | "page" | "limit">): Promise<DbResult<boolean>>;
209
- /**
210
- * 查询单个字段值(带字段名验证)
211
- * @param field - 字段名(支持小驼峰或下划线格式)
212
- */
213
- getFieldValue<TValue = unknown>(options: Omit<QueryOptions, "fields"> & {
214
- field: string;
215
- }): Promise<DbResult<TValue | null>>;
216
- /**
217
- * 自增字段(安全实现,防止 SQL 注入)
218
- * @param table - 表名(支持小驼峰或下划线格式,会自动转换)
219
- * @param field - 字段名(支持小驼峰或下划线格式,会自动转换)
220
- */
221
- increment(table: string, field: string, where: WhereConditions, value?: number): Promise<DbResult<number>>;
222
- /**
223
- * 自减字段
224
- * @param table - 表名(支持小驼峰或下划线格式,会自动转换)
225
- * @param field - 字段名(支持小驼峰或下划线格式,会自动转换)
226
- */
227
- decrement(table: string, field: string, where: WhereConditions, value?: number): Promise<DbResult<number>>;
228
- }
229
- export {};