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
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "befly",
3
- "version": "3.16.9",
4
- "gitHead": "1eb2938e503ab476d4292da5099f8e55dfe249d4",
3
+ "version": "3.16.11",
4
+ "gitHead": "3f389979b8d565fe0476e0859df5a2c94627137c",
5
5
  "private": false,
6
- "description": "Befly - 为 Bun 专属打造的 TypeScript API 接口框架核心引擎",
6
+ "description": "Befly - 为 Bun 专属打造的 JavaScript API 接口框架核心引擎",
7
7
  "keywords": [
8
8
  "api",
9
9
  "backend",
@@ -13,34 +13,23 @@
13
13
  "http",
14
14
  "javascript",
15
15
  "rest",
16
- "type-safe",
17
- "typescript"
16
+ "type-safe"
18
17
  ],
19
18
  "homepage": "https://chensuiyi.me",
20
19
  "license": "Apache-2.0",
21
20
  "author": "chensuiyi <bimostyle@qq.com>",
21
+ "main": "./befly.js",
22
22
  "files": [
23
23
  "LICENSE",
24
24
  "README.md",
25
- "dist/"
25
+ "befly.js",
26
+ "befly.min.js"
26
27
  ],
27
28
  "type": "module",
28
- "types": "./dist/index.d.ts",
29
29
  "exports": {
30
30
  ".": {
31
- "import": "./dist/index.js",
32
- "default": "./dist/index.js"
33
- },
34
- "./all": {
35
- "import": "./dist/befly.js",
36
- "default": "./dist/befly.js"
37
- },
38
- "./min": {
39
- "import": "./dist/befly.min.js",
40
- "default": "./dist/befly.min.js"
41
- },
42
- "./types/*": {
43
- "types": "./dist/types/*.d.ts"
31
+ "import": "./index.js",
32
+ "default": "./index.js"
44
33
  }
45
34
  },
46
35
  "publishConfig": {
@@ -48,18 +37,18 @@
48
37
  "registry": "https://registry.npmjs.org"
49
38
  },
50
39
  "scripts": {
51
- "clean": "rimraf dist",
40
+ "clean": "rimraf befly.js befly.min.js dist",
52
41
  "test": "bun test",
53
- "bundle": "bun build ./index.ts --outfile ./dist/befly.js --target bun --format esm --packages bundle",
54
- "bundle:min": "bun build ./index.ts --outdir ./dist --entry-naming befly.min.js --target bun --format esm --packages bundle --minify",
55
- "build": "rimraf dist && bunx tsgo -p tsconfig.build.json && bun run bundle && bun run bundle:min",
56
- "prepack": "bun run build && bun run ./scripts/ensureDist.ts",
57
- "typecheck": "bunx tsgo -p tsconfig.json --noEmit"
42
+ "bundle": "bun build ./index.js --outfile ./befly.js --target bun --format esm --packages bundle",
43
+ "bundle:min": "bun build ./index.js --outfile ./befly.min.js --target bun --format esm --packages bundle --minify",
44
+ "build": "rimraf befly.js befly.min.js && bun run bundle && bun run bundle:min"
58
45
  },
59
46
  "dependencies": {
60
- "fast-jwt": "^6.1.0",
61
- "fast-xml-parser": "^5.3.4",
62
- "pathe": "^2.0.3"
47
+ "fast-xml-parser": "^5.3.6",
48
+ "nodemailer": "^8.0.1",
49
+ "pathe": "^2.0.3",
50
+ "ua-parser-js": "^2.0.9",
51
+ "zod": "^4.0.0"
63
52
  },
64
53
  "engines": {
65
54
  "bun": ">=1.3.0"
@@ -1,7 +0,0 @@
1
- /**
2
- * Befly 配置模块
3
- * 自动加载 configs 目录下的配置文件并与默认配置合并
4
- * 支持环境分离:befly.common.json + befly.development/production.json
5
- */
6
- import type { BeflyOptions } from "./types/befly";
7
- export declare function loadBeflyConfig(nodeEnv?: string): Promise<BeflyOptions>;
@@ -1,128 +0,0 @@
1
- import { join } from "node:path";
2
- import { CoreError } from "./types/coreError";
3
- import { importDefault } from "./utils/importDefault";
4
- import { mergeAndConcat } from "./utils/mergeAndConcat";
5
- /** 默认配置 */
6
- const defaultOptions = {
7
- // ========== 核心参数 ==========
8
- nodeEnv: "development",
9
- appName: "野蜂飞舞",
10
- appPort: 3000,
11
- appHost: "127.0.0.1",
12
- devEmail: "dev@qq.com",
13
- devPassword: "beflydev123456",
14
- bodyLimit: 1048576, // 1MB
15
- tz: "Asia/Shanghai",
16
- strict: true,
17
- // ========== 日志配置 ==========
18
- logger: {
19
- debug: 1,
20
- excludeFields: ["password", "token", "secret"],
21
- dir: "./logs",
22
- console: 1,
23
- maxSize: 20, // 20MB
24
- maxStringLen: 100,
25
- maxArrayItems: 100
26
- },
27
- // ========== 数据库配置 ==========
28
- db: {
29
- idMode: "timeId",
30
- host: "127.0.0.1",
31
- port: 3306,
32
- username: "root",
33
- password: "root",
34
- database: "befly_demo",
35
- poolMax: 10
36
- },
37
- // ========== Redis 配置 ==========
38
- redis: {
39
- host: "127.0.0.1",
40
- port: 6379,
41
- username: "",
42
- password: "",
43
- db: 0,
44
- prefix: "befly_demo"
45
- },
46
- // ========== 认证配置 ==========
47
- auth: {
48
- secret: "befly-secret",
49
- expiresIn: "7d",
50
- algorithm: "HS256"
51
- },
52
- // ========== CORS 配置 ==========
53
- cors: {
54
- origin: "*",
55
- methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
56
- allowedHeaders: "Content-Type,Authorization",
57
- exposedHeaders: "",
58
- maxAge: 86400,
59
- credentials: "true"
60
- },
61
- // ========== Hook:全局限流 ==========
62
- rateLimit: {
63
- enable: 1,
64
- // 默认兜底规则:所有接口按 IP 限流(如需更细粒度请配置 rules)
65
- defaultLimit: 1000,
66
- defaultWindow: 60,
67
- key: "ip",
68
- skipRoutes: [],
69
- rules: []
70
- },
71
- // ========== 菜单禁用配置 ==========
72
- disableMenus: ["**/404", "**/403", "**/500", "/addon/admin/login"],
73
- // ========== Addon 配置 ==========
74
- addons: {}
75
- };
76
- export async function loadBeflyConfig(nodeEnv) {
77
- if (nodeEnv !== "development" && nodeEnv !== "production") {
78
- throw new CoreError({
79
- message: `配置错误:NODE_ENV 只能是 'development' 或 'production',当前值=${String(nodeEnv)}`,
80
- kind: "validation",
81
- noLog: true,
82
- meta: { subsystem: "config", operation: "loadBeflyConfig" }
83
- });
84
- }
85
- // 使用 importDefault 加载 configs 目录下的配置文件。2222
86
- // 合并顺序:defaultOptions ← befly.common.json ← befly.development/production.json
87
- const configsDir = join(process.cwd(), "configs");
88
- const commonConfig = await importDefault(join(configsDir, "befly.common.json"), {});
89
- const envConfig = await importDefault(join(configsDir, `befly.${nodeEnv}.json`), {});
90
- const config = mergeAndConcat(defaultOptions, commonConfig, envConfig);
91
- // 重要:nodeEnv 的来源只从 Befly.start(env) 的入参 env.NODE_ENV 传入,避免 process.env 在 bundle 阶段被常量折叠。
92
- // 同时确保运行时行为(例如 Bun.serve development 标记)与实际选择的配置文件一致。
93
- config.nodeEnv = nodeEnv;
94
- // 配置校验:redis.prefix 作为 key 前缀,由 RedisHelper 统一拼接 ":"。
95
- // 因此 prefix 本身不允许包含 ":",否则会导致 key 结构出现空段或多段分隔(例如 "prefix::key"),
96
- // 在 RedisInsight 等工具里可能显示 [NO NAME] 空分组,且容易造成 key 管理混乱。
97
- const redisPrefix = config.redis?.prefix;
98
- if (typeof redisPrefix === "string") {
99
- const trimmedPrefix = redisPrefix.trim();
100
- if (trimmedPrefix.includes(":")) {
101
- throw new CoreError({
102
- message: `配置错误:redis.prefix 不允许包含 ':'(RedisHelper 会自动拼接分隔符 ':'),请改为不带冒号的前缀,例如 'befly_demo',当前值=${redisPrefix}`,
103
- kind: "validation",
104
- noLog: true,
105
- meta: { subsystem: "config", operation: "loadBeflyConfig" }
106
- });
107
- }
108
- }
109
- const idMode = config.db?.idMode;
110
- if (idMode !== undefined && idMode !== "timeId" && idMode !== "autoId") {
111
- throw new CoreError({
112
- message: `配置错误:db.idMode 只能是 'timeId' 或 'autoId',当前值=${String(idMode)}`,
113
- kind: "validation",
114
- noLog: true,
115
- meta: { subsystem: "config", operation: "loadBeflyConfig" }
116
- });
117
- }
118
- const strict = config.strict;
119
- if (strict !== undefined && typeof strict !== "boolean") {
120
- throw new CoreError({
121
- message: `配置错误:strict 必须为 boolean,当前值=${String(strict)}`,
122
- kind: "validation",
123
- noLog: true,
124
- meta: { subsystem: "config", operation: "loadBeflyConfig" }
125
- });
126
- }
127
- return config;
128
- }