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.
Files changed (109) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/LICENSE +22 -0
  3. package/README.md +788 -0
  4. package/dist/package.json +61 -0
  5. package/dist/src/core/apifox-client.d.ts +6 -0
  6. package/dist/src/core/apifox-client.d.ts.map +1 -0
  7. package/dist/src/core/apifox-client.js +114 -0
  8. package/dist/src/core/apifox-client.js.map +1 -0
  9. package/dist/src/core/config-loader.d.ts +6 -0
  10. package/dist/src/core/config-loader.d.ts.map +1 -0
  11. package/dist/src/core/config-loader.js +16 -0
  12. package/dist/src/core/config-loader.js.map +1 -0
  13. package/dist/src/core/endpoint-filter.d.ts +12 -0
  14. package/dist/src/core/endpoint-filter.d.ts.map +1 -0
  15. package/dist/src/core/endpoint-filter.js +77 -0
  16. package/dist/src/core/endpoint-filter.js.map +1 -0
  17. package/dist/src/core/openapi-converter.d.ts +6 -0
  18. package/dist/src/core/openapi-converter.d.ts.map +1 -0
  19. package/dist/src/core/openapi-converter.js +35 -0
  20. package/dist/src/core/openapi-converter.js.map +1 -0
  21. package/dist/src/generators/mock-generator.d.ts +6 -0
  22. package/dist/src/generators/mock-generator.d.ts.map +1 -0
  23. package/dist/src/generators/mock-generator.js +30 -0
  24. package/dist/src/generators/mock-generator.js.map +1 -0
  25. package/dist/src/generators/templates/mock-template.d.ts +6 -0
  26. package/dist/src/generators/templates/mock-template.d.ts.map +1 -0
  27. package/dist/src/generators/templates/mock-template.js +283 -0
  28. package/dist/src/generators/templates/mock-template.js.map +1 -0
  29. package/dist/src/generators/templates/type-template.d.ts +18 -0
  30. package/dist/src/generators/templates/type-template.d.ts.map +1 -0
  31. package/dist/src/generators/templates/type-template.js +201 -0
  32. package/dist/src/generators/templates/type-template.js.map +1 -0
  33. package/dist/src/generators/type-generator.d.ts +6 -0
  34. package/dist/src/generators/type-generator.d.ts.map +1 -0
  35. package/dist/src/generators/type-generator.js +31 -0
  36. package/dist/src/generators/type-generator.js.map +1 -0
  37. package/dist/src/index.d.ts +4 -0
  38. package/dist/src/index.d.ts.map +1 -0
  39. package/dist/src/index.js +9 -0
  40. package/dist/src/index.js.map +1 -0
  41. package/dist/src/scripts/cli.d.ts +3 -0
  42. package/dist/src/scripts/cli.d.ts.map +1 -0
  43. package/dist/src/scripts/cli.js +28 -0
  44. package/dist/src/scripts/cli.js.map +1 -0
  45. package/dist/src/scripts/generate-mock.d.ts +2 -0
  46. package/dist/src/scripts/generate-mock.d.ts.map +1 -0
  47. package/dist/src/scripts/generate-mock.js +49 -0
  48. package/dist/src/scripts/generate-mock.js.map +1 -0
  49. package/dist/src/scripts/serve-mock.d.ts +2 -0
  50. package/dist/src/scripts/serve-mock.d.ts.map +1 -0
  51. package/dist/src/scripts/serve-mock.js +49 -0
  52. package/dist/src/scripts/serve-mock.js.map +1 -0
  53. package/dist/src/server/express-server.d.ts +7 -0
  54. package/dist/src/server/express-server.d.ts.map +1 -0
  55. package/dist/src/server/express-server.js +85 -0
  56. package/dist/src/server/express-server.js.map +1 -0
  57. package/dist/src/server/hot-reload.d.ts +7 -0
  58. package/dist/src/server/hot-reload.d.ts.map +1 -0
  59. package/dist/src/server/hot-reload.js +57 -0
  60. package/dist/src/server/hot-reload.js.map +1 -0
  61. package/dist/src/server/route-loader.d.ts +13 -0
  62. package/dist/src/server/route-loader.d.ts.map +1 -0
  63. package/dist/src/server/route-loader.js +147 -0
  64. package/dist/src/server/route-loader.js.map +1 -0
  65. package/dist/src/server/route-manager.d.ts +13 -0
  66. package/dist/src/server/route-manager.d.ts.map +1 -0
  67. package/dist/src/server/route-manager.js +25 -0
  68. package/dist/src/server/route-manager.js.map +1 -0
  69. package/dist/src/server/route-matcher.d.ts +10 -0
  70. package/dist/src/server/route-matcher.d.ts.map +1 -0
  71. package/dist/src/server/route-matcher.js +35 -0
  72. package/dist/src/server/route-matcher.js.map +1 -0
  73. package/dist/src/server/validation.d.ts +6 -0
  74. package/dist/src/server/validation.d.ts.map +1 -0
  75. package/dist/src/server/validation.js +119 -0
  76. package/dist/src/server/validation.js.map +1 -0
  77. package/dist/src/types/index.d.ts +167 -0
  78. package/dist/src/types/index.d.ts.map +1 -0
  79. package/dist/src/types/index.js +2 -0
  80. package/dist/src/types/index.js.map +1 -0
  81. package/dist/src/utils/block-updater.d.ts +6 -0
  82. package/dist/src/utils/block-updater.d.ts.map +1 -0
  83. package/dist/src/utils/block-updater.js +73 -0
  84. package/dist/src/utils/block-updater.js.map +1 -0
  85. package/dist/src/utils/code-formatter.d.ts +5 -0
  86. package/dist/src/utils/code-formatter.d.ts.map +1 -0
  87. package/dist/src/utils/code-formatter.js +43 -0
  88. package/dist/src/utils/code-formatter.js.map +1 -0
  89. package/dist/src/utils/file-helper.d.ts +21 -0
  90. package/dist/src/utils/file-helper.d.ts.map +1 -0
  91. package/dist/src/utils/file-helper.js +25 -0
  92. package/dist/src/utils/file-helper.js.map +1 -0
  93. package/dist/src/utils/file-operations.d.ts +29 -0
  94. package/dist/src/utils/file-operations.d.ts.map +1 -0
  95. package/dist/src/utils/file-operations.js +62 -0
  96. package/dist/src/utils/file-operations.js.map +1 -0
  97. package/dist/src/utils/logger.d.ts +10 -0
  98. package/dist/src/utils/logger.d.ts.map +1 -0
  99. package/dist/src/utils/logger.js +27 -0
  100. package/dist/src/utils/logger.js.map +1 -0
  101. package/dist/src/utils/path-utils.d.ts +13 -0
  102. package/dist/src/utils/path-utils.d.ts.map +1 -0
  103. package/dist/src/utils/path-utils.js +64 -0
  104. package/dist/src/utils/path-utils.js.map +1 -0
  105. package/dist/src/utils/type-mapping.d.ts +17 -0
  106. package/dist/src/utils/type-mapping.d.ts.map +1 -0
  107. package/dist/src/utils/type-mapping.js +75 -0
  108. package/dist/src/utils/type-mapping.js.map +1 -0
  109. 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
+