befly-tpl 3.2.6 → 3.3.2
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/.env.development +3 -3
- package/apis/article/articleDel.ts +2 -2
- package/apis/article/articleDetail.ts +2 -2
- package/apis/article/articleList.ts +2 -4
- package/apis/article/articleUpd.ts +2 -2
- package/apis/article/increment.ts +2 -2
- package/apis/user/login.ts +3 -3
- package/apis/user/userList.ts +3 -5
- package/package.json +6 -10
- package/pm2.config.cjs +3 -3
- package/tables/user.json +1 -1
- package/addons/_template/README.md +0 -123
- package/addons/_template/addon.config.json +0 -17
- package/addons/_template/apis/example.ts +0 -33
- package/addons/_template/checks/example.ts +0 -23
- package/addons/_template/config/default.ts +0 -12
- package/addons/_template/plugins/example.ts +0 -39
- package/addons/_template/tables/example.json +0 -7
- package/addons/_template/types/index.d.ts +0 -21
- package/addons/admin/README.md +0 -179
- package/addons/admin/addon.config.json +0 -13
- package/addons/admin/apis/adminDel.ts +0 -37
- package/addons/admin/apis/adminInfo.ts +0 -50
- package/addons/admin/apis/adminIns.ts +0 -70
- package/addons/admin/apis/adminList.ts +0 -24
- package/addons/admin/apis/adminRoleDetail.ts +0 -38
- package/addons/admin/apis/adminRoleSave.ts +0 -40
- package/addons/admin/apis/adminUpd.ts +0 -54
- package/addons/admin/apis/apiAll.ts +0 -38
- package/addons/admin/apis/cacheRefresh.ts +0 -36
- package/addons/admin/apis/dashboardAddonList.ts +0 -16
- package/addons/admin/apis/dashboardChangelog.ts +0 -41
- package/addons/admin/apis/dashboardConfigStatus.ts +0 -56
- package/addons/admin/apis/dashboardEnvironmentInfo.ts +0 -48
- package/addons/admin/apis/dashboardPerformanceMetrics.ts +0 -25
- package/addons/admin/apis/dashboardPermissionStats.ts +0 -33
- package/addons/admin/apis/dashboardServiceStatus.ts +0 -84
- package/addons/admin/apis/dashboardSystemInfo.ts +0 -34
- package/addons/admin/apis/dashboardSystemOverview.ts +0 -34
- package/addons/admin/apis/dashboardSystemResources.ts +0 -119
- package/addons/admin/apis/dictAll.ts +0 -26
- package/addons/admin/apis/dictDel.ts +0 -27
- package/addons/admin/apis/dictDetail.ts +0 -28
- package/addons/admin/apis/dictIns.ts +0 -38
- package/addons/admin/apis/dictList.ts +0 -27
- package/addons/admin/apis/dictUpd.ts +0 -44
- package/addons/admin/apis/login.ts +0 -123
- package/addons/admin/apis/logout.ts +0 -23
- package/addons/admin/apis/menuAll.ts +0 -70
- package/addons/admin/apis/menuDel.ts +0 -40
- package/addons/admin/apis/menuIns.ts +0 -31
- package/addons/admin/apis/menuList.ts +0 -26
- package/addons/admin/apis/menuUpd.ts +0 -41
- package/addons/admin/apis/register.ts +0 -50
- package/addons/admin/apis/roleApiDetail.ts +0 -34
- package/addons/admin/apis/roleApiSave.ts +0 -44
- package/addons/admin/apis/roleDel.ts +0 -48
- package/addons/admin/apis/roleDetail.ts +0 -28
- package/addons/admin/apis/roleIns.ts +0 -40
- package/addons/admin/apis/roleList.ts +0 -18
- package/addons/admin/apis/roleMenuDetail.ts +0 -33
- package/addons/admin/apis/roleMenuSave.ts +0 -39
- package/addons/admin/apis/roleSave.ts +0 -45
- package/addons/admin/apis/roleUpd.ts +0 -53
- package/addons/admin/apis/sendSmsCode.ts +0 -36
- package/addons/admin/checks/admin.ts +0 -36
- package/addons/admin/config/index.ts +0 -45
- package/addons/admin/config/menu.json +0 -44
- package/addons/admin/scripts/syncApi.ts +0 -285
- package/addons/admin/scripts/syncDev.ts +0 -203
- package/addons/admin/scripts/syncMenu.ts +0 -210
- package/addons/admin/tables/admin.json +0 -14
- package/addons/admin/tables/api.json +0 -8
- package/addons/admin/tables/dict.json +0 -8
- package/addons/admin/tables/menu.json +0 -8
- package/addons/admin/tables/role.json +0 -8
- package/addons/admin/types/index.ts +0 -44
- package/addons/admin/util.ts +0 -266
- package/addons/befly/addon.config.json +0 -13
- package/addons/befly/apis/health/info.ts +0 -77
- package/addons/befly/apis/tool/tokenCheck.ts +0 -52
- package/addons/demo/README.md +0 -62
- package/addons/demo/addon.config.json +0 -13
- package/addons/demo/apis/demoIns.ts +0 -36
- package/addons/demo/apis/demoList.ts +0 -36
- package/addons/demo/checks/demo.ts +0 -30
- package/addons/demo/config/default.ts +0 -17
- package/addons/demo/plugins/tool.ts +0 -61
- package/addons/demo/tables/todo.json +0 -6
- package/addons/demo/types/index.d.ts +0 -56
- package/tests/core.test.ts +0 -13
package/.env.development
CHANGED
|
@@ -4,10 +4,10 @@ DEBUG=1
|
|
|
4
4
|
# 项目名称
|
|
5
5
|
APP_NAME="易接口"
|
|
6
6
|
APP_PORT=3000
|
|
7
|
-
# MD5加密盐
|
|
8
|
-
MD5_SALT="a2ccfeba-818a-51c8-b1a4-939bade73088"
|
|
9
7
|
# 监听端口
|
|
10
8
|
APP_HOST="127.0.0.1"
|
|
9
|
+
# 开发管理员邮箱
|
|
10
|
+
DEV_EMAIL="dev@qq.com"
|
|
11
11
|
# 开发管理员密码
|
|
12
12
|
DEV_PASSWORD="111111"
|
|
13
13
|
# 请求体大小
|
|
@@ -41,7 +41,7 @@ DB_HOST="127.0.0.1"
|
|
|
41
41
|
DB_PORT=3306
|
|
42
42
|
DB_USER="root2"
|
|
43
43
|
DB_PASS="root2"
|
|
44
|
-
DB_NAME="
|
|
44
|
+
DB_NAME="test4"
|
|
45
45
|
DB_POOL_MAX=10
|
|
46
46
|
DB_DEBUG=0
|
|
47
47
|
DB_CONNECTION_TIMEOUT=5000 # 数据库连接超时时间(毫秒),默认5秒
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* 删除文章接口(软删除)
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Yes, No
|
|
5
|
+
import { Yes, No } from 'befly';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
name: '删除文章',
|
|
9
9
|
auth: false,
|
|
10
10
|
fields: {
|
|
11
|
-
id
|
|
11
|
+
// id 会自动从默认字段合并
|
|
12
12
|
},
|
|
13
13
|
required: ['id'],
|
|
14
14
|
handler: async (befly, ctx) => {
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* 获取文章详情接口
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Yes, No
|
|
5
|
+
import { Yes, No } from 'befly';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
name: '获取文章详情',
|
|
9
9
|
auth: false,
|
|
10
10
|
fields: {
|
|
11
|
-
id
|
|
11
|
+
// id 会自动从默认字段合并
|
|
12
12
|
},
|
|
13
13
|
required: ['id'],
|
|
14
14
|
handler: async (befly, ctx) => {
|
|
@@ -2,17 +2,15 @@
|
|
|
2
2
|
* 获取文章列表接口 - TypeScript 示例
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Yes
|
|
5
|
+
import { Yes } from 'befly';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
name: '获取文章列表',
|
|
9
9
|
auth: false,
|
|
10
10
|
fields: {
|
|
11
|
-
|
|
12
|
-
limit: Fields.limit,
|
|
11
|
+
// page, limit, keyword 会自动从默认字段合并
|
|
13
12
|
categoryId: '分类ID|number|0|999999|null|0|null',
|
|
14
13
|
authorId: '作者ID|number|0|999999|null|0|null',
|
|
15
|
-
keyword: Fields.keyword,
|
|
16
14
|
published: '是否发布|number|0|1|null|0|^(0|1)'
|
|
17
15
|
},
|
|
18
16
|
handler: async (befly, ctx) => {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* 更新文章接口
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Yes, No
|
|
5
|
+
import { Yes, No } from 'befly';
|
|
6
6
|
|
|
7
7
|
import articleTable from '../../tables/article.json';
|
|
8
8
|
|
|
@@ -10,7 +10,7 @@ export default {
|
|
|
10
10
|
name: '更新文章',
|
|
11
11
|
auth: false,
|
|
12
12
|
fields: {
|
|
13
|
-
id
|
|
13
|
+
// id 会自动从默认字段合并
|
|
14
14
|
title: articleTable.title,
|
|
15
15
|
content: articleTable.content,
|
|
16
16
|
summary: articleTable.summary,
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
* 文章字段增量接口
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Yes, No
|
|
5
|
+
import { Yes, No } from 'befly';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
name: '文章字段增量',
|
|
9
9
|
auth: false,
|
|
10
10
|
fields: {
|
|
11
|
-
id
|
|
11
|
+
// id 会自动从默认字段合并
|
|
12
12
|
field: '字段名|string|1|50|null|1|^[a-zA-Z_][a-zA-Z0-9_]*$',
|
|
13
13
|
value: '自增值|number|-999999|999999|1|0|null'
|
|
14
14
|
},
|
package/apis/user/login.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { Yes, No } from 'befly';
|
|
6
|
-
import {
|
|
6
|
+
import { Cipher } from 'befly';
|
|
7
7
|
import { Jwt } from 'befly';
|
|
8
8
|
|
|
9
9
|
export default {
|
|
@@ -11,7 +11,7 @@ export default {
|
|
|
11
11
|
auth: false, // 公开接口
|
|
12
12
|
fields: {
|
|
13
13
|
username: '用户名|string|3|50|null|0|^[a-zA-Z0-9_]+$',
|
|
14
|
-
password: '密码|string|6|
|
|
14
|
+
password: '密码|string|6|500|null|0|null'
|
|
15
15
|
},
|
|
16
16
|
required: ['username', 'password'],
|
|
17
17
|
handler: async (befly, ctx) => {
|
|
@@ -26,7 +26,7 @@ export default {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
// 验证密码
|
|
29
|
-
const isValid = await
|
|
29
|
+
const isValid = await Cipher.verifyPassword(ctx.body.password, user.password);
|
|
30
30
|
if (!isValid) {
|
|
31
31
|
return No('用户名或密码错误');
|
|
32
32
|
}
|
package/apis/user/userList.ts
CHANGED
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
* 获取用户列表接口 - TypeScript 示例
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { Yes
|
|
5
|
+
import { Yes } from 'befly';
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
name: '获取用户列表',
|
|
9
9
|
auth: true, // 需要登录(权限由角色接口列表控制)
|
|
10
10
|
fields: {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
role: '角色|string|0|20|null|0|^(admin|user|guest)$',
|
|
14
|
-
keyword: Fields.keyword
|
|
11
|
+
// page, limit, keyword 会自动从默认字段合并
|
|
12
|
+
role: '角色|string|0|20|null|0|^(admin|user|guest)$'
|
|
15
13
|
},
|
|
16
14
|
handler: async (befly, ctx) => {
|
|
17
15
|
const params = ctx.body as GetUsersRequest;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "befly-tpl",
|
|
3
|
-
"version": "3.2
|
|
3
|
+
"version": "3.3.2",
|
|
4
4
|
"main": "main.ts",
|
|
5
5
|
"types": "main.ts",
|
|
6
6
|
"description": "Befly 3.0 TypeScript Template",
|
|
@@ -10,15 +10,11 @@
|
|
|
10
10
|
"registry": "https://registry.npmjs.org"
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
|
-
"dev": "bun run main.ts",
|
|
13
|
+
"dev": "bun --env-file=.env.development run main.ts",
|
|
14
14
|
"serve": "bunx --bun pm2 start pm2.config.cjs -a",
|
|
15
|
-
"test": "bun test"
|
|
16
|
-
"test:api": "bun run test-api-runner.ts",
|
|
17
|
-
"syncDb": "befly syncDb",
|
|
18
|
-
"syncDev": " befly syncDev"
|
|
15
|
+
"test": "bun test"
|
|
19
16
|
},
|
|
20
17
|
"files": [
|
|
21
|
-
"addons",
|
|
22
18
|
"apis",
|
|
23
19
|
"checks",
|
|
24
20
|
"plugins",
|
|
@@ -37,11 +33,11 @@
|
|
|
37
33
|
],
|
|
38
34
|
"type": "module",
|
|
39
35
|
"dependencies": {
|
|
40
|
-
"befly": "
|
|
41
|
-
"befly
|
|
36
|
+
"@befly-addon/admin": "1.0.2",
|
|
37
|
+
"befly": "3.3.2"
|
|
42
38
|
},
|
|
43
39
|
"engines": {
|
|
44
40
|
"bun": ">=1.3.0"
|
|
45
41
|
},
|
|
46
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "031b4a753e40d888648335a9ff4e085ba42010ad"
|
|
47
43
|
}
|
package/pm2.config.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
apps: [
|
|
3
3
|
{
|
|
4
|
-
name: '
|
|
4
|
+
name: 'tpl',
|
|
5
5
|
instances: 4,
|
|
6
6
|
script: './main.js',
|
|
7
7
|
exec_mode: 'cluster',
|
|
@@ -15,10 +15,10 @@ module.exports = {
|
|
|
15
15
|
// 项目名称
|
|
16
16
|
APP_NAME: '易接口',
|
|
17
17
|
APP_PORT: 3000,
|
|
18
|
-
// MD5加密盐
|
|
19
|
-
MD5_SALT: 'a2ccfeba-818a-51c8-b1a4-939bade73088',
|
|
20
18
|
// 监听端口,
|
|
21
19
|
APP_HOST: '127.0.0.1',
|
|
20
|
+
// 开发管理员邮箱
|
|
21
|
+
DEV_EMAIL: 'dev@qq.com',
|
|
22
22
|
// 开发管理员密码,
|
|
23
23
|
DEV_PASSWORD: '123456',
|
|
24
24
|
// 请求体大小,
|
package/tables/user.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"username": "用户名|string|3|50|null|1|^[a-zA-Z0-9_]+$",
|
|
3
|
-
"password": "密码|string|6|
|
|
3
|
+
"password": "密码|string|6|500|null|0|null",
|
|
4
4
|
"email": "邮箱|string|5|100|null|1|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
|
5
5
|
"role": "角色|string|1|20|user|1|^(admin|user|guest)$",
|
|
6
6
|
"nickname": "昵称|string|0|50|null|0|null",
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# Befly Addon 模板
|
|
2
|
-
|
|
3
|
-
这是一个 Befly Addon 的标准模板,以 `_` 开头的目录会被框架自动跳过,不会被加载。
|
|
4
|
-
|
|
5
|
-
## 目录结构
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
_template/
|
|
9
|
-
├── README.md # 本文档
|
|
10
|
-
├── apis/ # API 接口目录
|
|
11
|
-
│ └── example.ts # 示例接口
|
|
12
|
-
├── checks/ # 检查脚本目录
|
|
13
|
-
│ └── example.ts # 示例检查
|
|
14
|
-
├── plugins/ # 插件目录
|
|
15
|
-
│ └── example.ts # 示例插件
|
|
16
|
-
├── tables/ # 表定义目录
|
|
17
|
-
│ └── example.json # 示例表定义
|
|
18
|
-
├── types/ # 类型定义目录
|
|
19
|
-
│ └── index.d.ts # 类型定义文件
|
|
20
|
-
└── config/ # 配置目录
|
|
21
|
-
└── default.ts # 默认配置文件
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## 使用方法
|
|
25
|
-
|
|
26
|
-
1. 复制此模板目录到 `tpl/addons/` 下
|
|
27
|
-
2. 重命名为你的组件名(小驼峰命名,如 `payment`、`smsService`)
|
|
28
|
-
3. 根据需要删除不需要的子目录
|
|
29
|
-
4. 实现你的功能代码
|
|
30
|
-
|
|
31
|
-
## 命名规则
|
|
32
|
-
|
|
33
|
-
### 组件目录名
|
|
34
|
-
|
|
35
|
-
- 使用小驼峰命名:`payment`、`userCenter`、`smsService`
|
|
36
|
-
- 以 `_` 开头的目录会被跳过:`_template`、`_disabled`
|
|
37
|
-
|
|
38
|
-
### API 路由
|
|
39
|
-
|
|
40
|
-
- 自动添加组件名前缀:`/api/{组件名}/{API路径}`
|
|
41
|
-
- 示例:`payment/apis/create.ts` → `POST /api/payment/create`
|
|
42
|
-
|
|
43
|
-
### 数据库表名
|
|
44
|
-
|
|
45
|
-
- 自动添加组件名前缀:`{组件名}_{表名}`
|
|
46
|
-
- 示例:`payment/tables/order.json` → `payment_order` 表
|
|
47
|
-
|
|
48
|
-
### 插件名称
|
|
49
|
-
|
|
50
|
-
- 自动添加组件名前缀:`{组件名}.{插件名}`
|
|
51
|
-
- 示例:`payment/plugins/alipay.ts` → `payment.alipay` 插件
|
|
52
|
-
|
|
53
|
-
## 子目录说明
|
|
54
|
-
|
|
55
|
-
### apis/ - API 接口
|
|
56
|
-
|
|
57
|
-
存放组件的 HTTP API 接口定义,使用 `Api()` 函数创建。
|
|
58
|
-
|
|
59
|
-
**特点:**
|
|
60
|
-
|
|
61
|
-
- 路由自动添加 `/api/{组件名}/` 前缀
|
|
62
|
-
- 可以访问所有已加载的插件
|
|
63
|
-
|
|
64
|
-
### checks/ - 检查脚本
|
|
65
|
-
|
|
66
|
-
存放组件的启动检查脚本,在框架启动前执行。
|
|
67
|
-
|
|
68
|
-
**要求:**
|
|
69
|
-
|
|
70
|
-
- 必须使用 `export default` 导出函数
|
|
71
|
-
- 函数返回 `true`(通过)或 `false`(失败)
|
|
72
|
-
- 检查失败会阻止框架启动
|
|
73
|
-
|
|
74
|
-
### plugins/ - 插件
|
|
75
|
-
|
|
76
|
-
存放组件的插件,用于扩展 befly 对象功能。
|
|
77
|
-
|
|
78
|
-
**特点:**
|
|
79
|
-
|
|
80
|
-
- 插件名自动添加组件名前缀
|
|
81
|
-
- 可以注册中间件、扩展 befly 对象等
|
|
82
|
-
- 加载顺序:核心 → addons → 项目
|
|
83
|
-
|
|
84
|
-
### tables/ - 表定义
|
|
85
|
-
|
|
86
|
-
存放组件的数据库表定义(JSON 格式)。
|
|
87
|
-
|
|
88
|
-
**特点:**
|
|
89
|
-
|
|
90
|
-
- 表名自动添加组件名前缀
|
|
91
|
-
- 使用 `bun syncDb` 自动同步到数据库
|
|
92
|
-
- 支持字段规则定义(类型、长度、默认值等)
|
|
93
|
-
|
|
94
|
-
### types/ - 类型定义
|
|
95
|
-
|
|
96
|
-
存放组件的 TypeScript 类型定义。
|
|
97
|
-
|
|
98
|
-
**建议:**
|
|
99
|
-
|
|
100
|
-
- 统一导出到 `index.d.ts`
|
|
101
|
-
- 声明全局类型时使用 `declare global`
|
|
102
|
-
|
|
103
|
-
### config/ - 配置文件
|
|
104
|
-
|
|
105
|
-
存放组件的配置文件,通常在插件初始化时加载。
|
|
106
|
-
|
|
107
|
-
**建议:**
|
|
108
|
-
|
|
109
|
-
- 配置项从环境变量读取
|
|
110
|
-
- 提供合理的默认值
|
|
111
|
-
- 在插件的 `onInit` 中加载配置
|
|
112
|
-
|
|
113
|
-
## 开发建议
|
|
114
|
-
|
|
115
|
-
1. **保持独立性**:组件应该是自包含的,尽量减少对其他组件的依赖
|
|
116
|
-
2. **环境变量**:使用 `{ADDON_NAME}_{CONFIG_KEY}` 格式命名
|
|
117
|
-
3. **错误处理**:使用 `Logger` 统一记录错误,关键错误使用 `process.exit(1)` 退出
|
|
118
|
-
4. **日志记录**:使用 `Logger` 记录关键操作
|
|
119
|
-
5. **测试覆盖**:为组件编写测试用例
|
|
120
|
-
|
|
121
|
-
## 示例
|
|
122
|
-
|
|
123
|
-
参考 `tpl/addons/demo/` 目录下的完整示例。
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "your-addon-name",
|
|
3
|
-
"title": "你的组件名称",
|
|
4
|
-
"version": "0.0.1",
|
|
5
|
-
"description": "组件简短描述",
|
|
6
|
-
"author": {
|
|
7
|
-
"name": "作者名称",
|
|
8
|
-
"email": "author@example.com",
|
|
9
|
-
"url": "https://example.com"
|
|
10
|
-
},
|
|
11
|
-
"repo": "https://github.com/username/repo",
|
|
12
|
-
"keywords": ["keyword1", "keyword2"],
|
|
13
|
-
"entry": "index.ts",
|
|
14
|
-
"enabled": true,
|
|
15
|
-
"dependencies": {},
|
|
16
|
-
"license": "MIT"
|
|
17
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Addon API 示例
|
|
3
|
-
* 路由会自动添加组件名前缀:/api/{addonName}/example
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
name: '示例接口',
|
|
8
|
-
auth: false,
|
|
9
|
-
fields: {
|
|
10
|
-
name: '名称|string|1|50|null|0|null',
|
|
11
|
-
age: '年龄|number|1|150|18|0|null'
|
|
12
|
-
},
|
|
13
|
-
required: ['name'],
|
|
14
|
-
handler: async (befly, ctx) => {
|
|
15
|
-
// 访问组件的插件(如果有)
|
|
16
|
-
// const myPlugin = befly['addonName.pluginName'];
|
|
17
|
-
|
|
18
|
-
// 访问数据库
|
|
19
|
-
// const result = await befly.db.getOne({
|
|
20
|
-
// table: 'addon_addonName_tableName',
|
|
21
|
-
// where: { id: 1 }
|
|
22
|
-
// });
|
|
23
|
-
|
|
24
|
-
return {
|
|
25
|
-
code: 0,
|
|
26
|
-
msg: '操作成功',
|
|
27
|
-
data: {
|
|
28
|
-
name: ctx.body.name,
|
|
29
|
-
age: ctx.body.age || 18
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Addon 检查示例
|
|
3
|
-
* 在框架启动前执行,用于验证配置、依赖等
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Logger } from 'befly';
|
|
7
|
-
|
|
8
|
-
export default async function (): Promise<boolean> {
|
|
9
|
-
try {
|
|
10
|
-
// 检查环境变量配置
|
|
11
|
-
// const config = process.env.ADDON_NAME_CONFIG;
|
|
12
|
-
// if (!config) {
|
|
13
|
-
// Logger.error('未配置 ADDON_NAME_CONFIG 环境变量');
|
|
14
|
-
// return false;
|
|
15
|
-
// }
|
|
16
|
-
|
|
17
|
-
Logger.info('Addon 示例检查通过');
|
|
18
|
-
return true;
|
|
19
|
-
} catch (error: any) {
|
|
20
|
-
Logger.error('Addon 示例检查失败:', error);
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Addon 默认配置
|
|
3
|
-
* 建议从环境变量读取配置
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export default {
|
|
7
|
-
// 示例配置
|
|
8
|
-
apiKey: process.env.ADDON_API_KEY || '',
|
|
9
|
-
apiSecret: process.env.ADDON_API_SECRET || '',
|
|
10
|
-
timeout: Number(process.env.ADDON_TIMEOUT) || 30000,
|
|
11
|
-
enabled: process.env.ADDON_ENABLED === 'true'
|
|
12
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Addon 插件示例
|
|
3
|
-
* 用于扩展 befly 对象功能
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { Logger } from 'befly';
|
|
7
|
-
|
|
8
|
-
export default {
|
|
9
|
-
name: 'example', // 实际插件名会是:{addonName}.example
|
|
10
|
-
version: '1.0.0',
|
|
11
|
-
priority: 100, // 优先级(数字越大越先加载)
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* 插件加载时执行
|
|
15
|
-
*/
|
|
16
|
-
async onLoad(befly) {
|
|
17
|
-
Logger.info('Addon 示例插件加载中...');
|
|
18
|
-
},
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* 插件初始化时执行
|
|
22
|
-
* 这里可以扩展 befly 对象
|
|
23
|
-
*/
|
|
24
|
-
async onInit(befly) {
|
|
25
|
-
// 扩展 befly 对象
|
|
26
|
-
return {
|
|
27
|
-
// 添加自定义方法或属性
|
|
28
|
-
sayHello: (name: string) => {
|
|
29
|
-
return `Hello, ${name}!`;
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
// 添加配置
|
|
33
|
-
config: {
|
|
34
|
-
apiKey: process.env.ADDON_API_KEY || '',
|
|
35
|
-
timeout: 30000
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
} as BeflyPlugin;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "名称|string|1|100|null|1|null",
|
|
3
|
-
"age": "年龄|number|1|150|18|0|null",
|
|
4
|
-
"email": "邮箱|string|5|100|null|1|^[\\w\\.-]+@[\\w\\.-]+\\.\\w+$",
|
|
5
|
-
"status": "状态|string|1|20|active|1|^(active|inactive|pending)$",
|
|
6
|
-
"createdAt": "创建时间|number|0|9999999999999|0|1|null"
|
|
7
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Addon 类型定义
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
declare global {
|
|
6
|
-
namespace Befly {
|
|
7
|
-
interface Context {
|
|
8
|
-
// 扩展 befly 对象的类型
|
|
9
|
-
// 示例:如果插件名是 payment.alipay
|
|
10
|
-
// 'payment.alipay'?: {
|
|
11
|
-
// createOrder: (params: any) => Promise<string>;
|
|
12
|
-
// config: {
|
|
13
|
-
// appId: string;
|
|
14
|
-
// timeout: number;
|
|
15
|
-
// };
|
|
16
|
-
// };
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export {};
|