apifox-mock-generator 1.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.
- package/CHANGELOG.md +131 -0
- package/LICENSE +22 -0
- package/README.md +788 -0
- package/dist/package.json +61 -0
- package/dist/src/core/apifox-client.d.ts +6 -0
- package/dist/src/core/apifox-client.d.ts.map +1 -0
- package/dist/src/core/apifox-client.js +114 -0
- package/dist/src/core/apifox-client.js.map +1 -0
- package/dist/src/core/config-loader.d.ts +6 -0
- package/dist/src/core/config-loader.d.ts.map +1 -0
- package/dist/src/core/config-loader.js +16 -0
- package/dist/src/core/config-loader.js.map +1 -0
- package/dist/src/core/endpoint-filter.d.ts +12 -0
- package/dist/src/core/endpoint-filter.d.ts.map +1 -0
- package/dist/src/core/endpoint-filter.js +77 -0
- package/dist/src/core/endpoint-filter.js.map +1 -0
- package/dist/src/core/openapi-converter.d.ts +6 -0
- package/dist/src/core/openapi-converter.d.ts.map +1 -0
- package/dist/src/core/openapi-converter.js +35 -0
- package/dist/src/core/openapi-converter.js.map +1 -0
- package/dist/src/generators/mock-generator.d.ts +6 -0
- package/dist/src/generators/mock-generator.d.ts.map +1 -0
- package/dist/src/generators/mock-generator.js +30 -0
- package/dist/src/generators/mock-generator.js.map +1 -0
- package/dist/src/generators/templates/mock-template.d.ts +6 -0
- package/dist/src/generators/templates/mock-template.d.ts.map +1 -0
- package/dist/src/generators/templates/mock-template.js +283 -0
- package/dist/src/generators/templates/mock-template.js.map +1 -0
- package/dist/src/generators/templates/type-template.d.ts +18 -0
- package/dist/src/generators/templates/type-template.d.ts.map +1 -0
- package/dist/src/generators/templates/type-template.js +201 -0
- package/dist/src/generators/templates/type-template.js.map +1 -0
- package/dist/src/generators/type-generator.d.ts +6 -0
- package/dist/src/generators/type-generator.d.ts.map +1 -0
- package/dist/src/generators/type-generator.js +31 -0
- package/dist/src/generators/type-generator.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/scripts/cli.d.ts +3 -0
- package/dist/src/scripts/cli.d.ts.map +1 -0
- package/dist/src/scripts/cli.js +28 -0
- package/dist/src/scripts/cli.js.map +1 -0
- package/dist/src/scripts/generate-mock.d.ts +2 -0
- package/dist/src/scripts/generate-mock.d.ts.map +1 -0
- package/dist/src/scripts/generate-mock.js +49 -0
- package/dist/src/scripts/generate-mock.js.map +1 -0
- package/dist/src/scripts/serve-mock.d.ts +2 -0
- package/dist/src/scripts/serve-mock.d.ts.map +1 -0
- package/dist/src/scripts/serve-mock.js +49 -0
- package/dist/src/scripts/serve-mock.js.map +1 -0
- package/dist/src/server/express-server.d.ts +7 -0
- package/dist/src/server/express-server.d.ts.map +1 -0
- package/dist/src/server/express-server.js +85 -0
- package/dist/src/server/express-server.js.map +1 -0
- package/dist/src/server/hot-reload.d.ts +7 -0
- package/dist/src/server/hot-reload.d.ts.map +1 -0
- package/dist/src/server/hot-reload.js +57 -0
- package/dist/src/server/hot-reload.js.map +1 -0
- package/dist/src/server/route-loader.d.ts +13 -0
- package/dist/src/server/route-loader.d.ts.map +1 -0
- package/dist/src/server/route-loader.js +147 -0
- package/dist/src/server/route-loader.js.map +1 -0
- package/dist/src/server/route-manager.d.ts +13 -0
- package/dist/src/server/route-manager.d.ts.map +1 -0
- package/dist/src/server/route-manager.js +25 -0
- package/dist/src/server/route-manager.js.map +1 -0
- package/dist/src/server/route-matcher.d.ts +10 -0
- package/dist/src/server/route-matcher.d.ts.map +1 -0
- package/dist/src/server/route-matcher.js +35 -0
- package/dist/src/server/route-matcher.js.map +1 -0
- package/dist/src/server/validation.d.ts +6 -0
- package/dist/src/server/validation.d.ts.map +1 -0
- package/dist/src/server/validation.js +119 -0
- package/dist/src/server/validation.js.map +1 -0
- package/dist/src/types/index.d.ts +167 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +2 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/block-updater.d.ts +6 -0
- package/dist/src/utils/block-updater.d.ts.map +1 -0
- package/dist/src/utils/block-updater.js +73 -0
- package/dist/src/utils/block-updater.js.map +1 -0
- package/dist/src/utils/code-formatter.d.ts +5 -0
- package/dist/src/utils/code-formatter.d.ts.map +1 -0
- package/dist/src/utils/code-formatter.js +43 -0
- package/dist/src/utils/code-formatter.js.map +1 -0
- package/dist/src/utils/file-helper.d.ts +21 -0
- package/dist/src/utils/file-helper.d.ts.map +1 -0
- package/dist/src/utils/file-helper.js +25 -0
- package/dist/src/utils/file-helper.js.map +1 -0
- package/dist/src/utils/file-operations.d.ts +29 -0
- package/dist/src/utils/file-operations.d.ts.map +1 -0
- package/dist/src/utils/file-operations.js +62 -0
- package/dist/src/utils/file-operations.js.map +1 -0
- package/dist/src/utils/logger.d.ts +10 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +27 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/path-utils.d.ts +13 -0
- package/dist/src/utils/path-utils.d.ts.map +1 -0
- package/dist/src/utils/path-utils.js +64 -0
- package/dist/src/utils/path-utils.js.map +1 -0
- package/dist/src/utils/type-mapping.d.ts +17 -0
- package/dist/src/utils/type-mapping.d.ts.map +1 -0
- package/dist/src/utils/type-mapping.js +75 -0
- package/dist/src/utils/type-mapping.js.map +1 -0
- package/package.json +61 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# 更新日志
|
|
2
|
+
|
|
3
|
+
所有重要的项目变更都会记录在这个文件中。
|
|
4
|
+
|
|
5
|
+
格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
|
|
6
|
+
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
7
|
+
|
|
8
|
+
## [1.0.0] - 2025-10-10
|
|
9
|
+
|
|
10
|
+
### ✨ 初始版本发布
|
|
11
|
+
|
|
12
|
+
#### 核心功能
|
|
13
|
+
|
|
14
|
+
- 🚀 **Apifox API 客户端** - 从 Apifox 项目拉取 API 接口定义
|
|
15
|
+
- 📝 **类型生成器** - 自动生成 TypeScript 类型文件(.ts 格式)
|
|
16
|
+
- 🎭 **Mock 生成器** - 基于 Schema 自动生成 Mock 数据文件
|
|
17
|
+
- 🌐 **Mock 服务器** - 基于 Express 的本地 Mock 服务
|
|
18
|
+
- 🔥 **热重载** - 修改 Mock 文件自动生效,无需重启服务器
|
|
19
|
+
- 🎯 **API 筛选** - 支持多种筛选规则精确控制导出的 API
|
|
20
|
+
- 路径模式筛选(支持通配符 `*` 和 `**`)
|
|
21
|
+
- HTTP 方法筛选
|
|
22
|
+
- Apifox 标签筛选
|
|
23
|
+
- 操作 ID 筛选
|
|
24
|
+
- 排除废弃接口
|
|
25
|
+
- ⚡ **增量更新** - 智能识别文件变化,仅更新必要的内容
|
|
26
|
+
- 🎨 **代码格式化** - 使用 Prettier 格式化生成的代码
|
|
27
|
+
|
|
28
|
+
#### 命令行工具
|
|
29
|
+
|
|
30
|
+
- `npm run build` - 编译 TypeScript 代码
|
|
31
|
+
- `npm run generate` - 拉取 API 并生成 Mock 和类型文件
|
|
32
|
+
- `npm run serve` - 启动 Mock 服务器
|
|
33
|
+
- `npm run dev` - 开发模式(生成 + 服务器)
|
|
34
|
+
|
|
35
|
+
#### 服务器功能
|
|
36
|
+
|
|
37
|
+
- 🌐 **Express 服务器** - 快速响应的本地 Mock 服务
|
|
38
|
+
- 🔄 **动态路由** - 自动发现和加载 Mock 路由,零配置
|
|
39
|
+
- 🎯 **路由匹配** - 支持路径参数、查询参数、请求体
|
|
40
|
+
- ✅ **参数校验** - 基于 Schema 的请求参数验证
|
|
41
|
+
- 🔥 **文件监听** - 监听 Mock 文件变化并自动重载
|
|
42
|
+
- 🌍 **CORS 支持** - 跨域请求支持
|
|
43
|
+
|
|
44
|
+
#### 代码架构
|
|
45
|
+
|
|
46
|
+
- **core/** - 核心模块
|
|
47
|
+
- `apifox-client.ts` - Apifox API 客户端
|
|
48
|
+
- `config-loader.ts` - 配置加载器
|
|
49
|
+
- `endpoint-filter.ts` - API 端点筛选器
|
|
50
|
+
- `openapi-converter.ts` - OpenAPI 数据转换器
|
|
51
|
+
- **generators/** - 生成器模块
|
|
52
|
+
- `mock-generator.ts` - Mock 文件生成器
|
|
53
|
+
- `type-generator.ts` - TypeScript 类型生成器
|
|
54
|
+
- `templates/` - 代码生成模板
|
|
55
|
+
- **server/** - Mock 服务器模块
|
|
56
|
+
- `express-server.ts` - Express 服务器配置
|
|
57
|
+
- `hot-reload.ts` - 热重载功能
|
|
58
|
+
- `route-loader.ts` - 路由加载器
|
|
59
|
+
- `route-manager.ts` - 路由管理器
|
|
60
|
+
- `route-matcher.ts` - 路由匹配器
|
|
61
|
+
- `validation.ts` - 参数校验
|
|
62
|
+
- **utils/** - 工具模块
|
|
63
|
+
- `block-updater.ts` - 增量更新工具
|
|
64
|
+
- `code-formatter.ts` - 代码格式化(Prettier)
|
|
65
|
+
- `file-operations.ts` - 文件操作封装
|
|
66
|
+
- `logger.ts` - 彩色日志工具
|
|
67
|
+
- `path-utils.ts` - 路径处理工具
|
|
68
|
+
- `type-mapping.ts` - OpenAPI 到 TypeScript 类型映射
|
|
69
|
+
|
|
70
|
+
#### 配置文件
|
|
71
|
+
|
|
72
|
+
- **apifox.config.json** - Apifox 项目配置和 API 筛选规则
|
|
73
|
+
- `projectId` - Apifox 项目 ID
|
|
74
|
+
- `token` - Apifox 访问令牌
|
|
75
|
+
- `mockDir` - Mock 文件输出目录
|
|
76
|
+
- `typesDir` - 类型文件输出目录
|
|
77
|
+
- `mockPort` - Mock 服务器端口
|
|
78
|
+
- `apiFilter` - API 筛选配置(服务端 + 客户端双重过滤)
|
|
79
|
+
- **tsconfig.json** - TypeScript 编译配置
|
|
80
|
+
- **package.json** - 项目依赖和脚本
|
|
81
|
+
|
|
82
|
+
#### 技术栈
|
|
83
|
+
|
|
84
|
+
- **语言**: TypeScript 5.3+
|
|
85
|
+
- **运行时**: Node.js 16+
|
|
86
|
+
- **Web 框架**: Express 4.x
|
|
87
|
+
- **HTTP 客户端**: Axios
|
|
88
|
+
- **Mock 数据**: @faker-js/faker, Mock.js
|
|
89
|
+
- **文件监听**: Chokidar
|
|
90
|
+
- **代码格式化**: Prettier
|
|
91
|
+
- **日志工具**: Chalk
|
|
92
|
+
- **API 工具**: Apifox CLI
|
|
93
|
+
|
|
94
|
+
#### 支持的 OpenAPI 特性
|
|
95
|
+
|
|
96
|
+
- ✅ OpenAPI 3.0 规范
|
|
97
|
+
- ✅ HTTP 方法:GET、POST、PUT、DELETE、PATCH
|
|
98
|
+
- ✅ 路径参数 (Path Parameters)
|
|
99
|
+
- ✅ 查询参数 (Query Parameters)
|
|
100
|
+
- ✅ 请求头 (Headers)
|
|
101
|
+
- ✅ 请求体 (Request Body)
|
|
102
|
+
- ✅ 响应体 (Response Body)
|
|
103
|
+
- ✅ 复杂对象类型
|
|
104
|
+
- ✅ 数组类型和嵌套数组
|
|
105
|
+
- ✅ 枚举类型 (enum)
|
|
106
|
+
- ✅ 嵌套对象和深层嵌套
|
|
107
|
+
- ✅ Schema 引用 ($ref)
|
|
108
|
+
- ✅ allOf / anyOf / oneOf
|
|
109
|
+
- ✅ 必填字段和可选字段
|
|
110
|
+
|
|
111
|
+
#### 已知限制
|
|
112
|
+
|
|
113
|
+
- ⚠️ 暂不支持 OpenAPI 2.0 (Swagger)
|
|
114
|
+
- ⚠️ 暂不支持文件上传/下载类型
|
|
115
|
+
- ⚠️ 暂不支持 WebSocket
|
|
116
|
+
- ⚠️ 暂不支持 GraphQL
|
|
117
|
+
|
|
118
|
+
### 📚 文档
|
|
119
|
+
|
|
120
|
+
- `README.md` - 完整的项目说明和使用指南
|
|
121
|
+
- `CHANGELOG.md` - 版本更新日志
|
|
122
|
+
- `apifox.config.json` - 详细的配置示例
|
|
123
|
+
|
|
124
|
+
## 贡献
|
|
125
|
+
|
|
126
|
+
欢迎贡献代码、报告问题或提出建议!
|
|
127
|
+
|
|
128
|
+
## 许可证
|
|
129
|
+
|
|
130
|
+
MIT License - 详见 [LICENSE](./LICENSE) 文件
|
|
131
|
+
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Apifox Mock Generator Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|