yapi-apifox-to-typescript 4.2.2 → 5.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.
@@ -1,336 +1,125 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
- exports.__esModule = true;
6
- exports.SwaggerToYApiServer = void 0;
7
-
8
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
-
10
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
-
12
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
-
14
- var _getPort2 = _interopRequireDefault(require("get-port"));
15
-
16
- var _http = _interopRequireDefault(require("http"));
17
-
18
- var _signalExit = _interopRequireDefault(require("signal-exit"));
19
-
20
- var _url = _interopRequireDefault(require("url"));
21
-
22
- var _utils = require("./utils");
23
-
24
- var _vtils = require("vtils");
25
-
26
- var _swaggerJsonToYApiData = require("./swaggerJsonToYApiData");
27
-
28
- var SwaggerToYApiServer = /*#__PURE__*/function () {
29
- function SwaggerToYApiServer(options) {
30
- this.options = options;
31
- this.port = 0;
32
- this.swaggerJson = {};
33
- this.httpServer = null;
34
- this.yapiData = {};
35
- }
36
-
37
- var _proto = SwaggerToYApiServer.prototype;
38
-
39
- _proto.getPort = /*#__PURE__*/function () {
40
- var _getPort = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
41
- return _regenerator.default.wrap(function _callee$(_context) {
42
- while (1) {
43
- switch (_context.prev = _context.next) {
44
- case 0:
45
- if (!(this.port === 0)) {
46
- _context.next = 4;
47
- break;
48
- }
49
-
50
- _context.next = 3;
51
- return (0, _getPort2.default)({
52
- port: 50505
53
- });
54
-
55
- case 3:
56
- this.port = _context.sent;
57
-
58
- case 4:
59
- return _context.abrupt("return", this.port);
60
-
61
- case 5:
62
- case "end":
63
- return _context.stop();
64
- }
65
- }
66
- }, _callee, this);
67
- }));
68
-
69
- function getPort() {
70
- return _getPort.apply(this, arguments);
71
- }
72
-
73
- return getPort;
74
- }();
75
-
76
- _proto.getUrl = /*#__PURE__*/function () {
77
- var _getUrl = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
78
- return _regenerator.default.wrap(function _callee2$(_context2) {
79
- while (1) {
80
- switch (_context2.prev = _context2.next) {
81
- case 0:
82
- _context2.next = 2;
83
- return this.getPort();
84
-
85
- case 2:
86
- _context2.t0 = _context2.sent;
87
- return _context2.abrupt("return", "http://127.0.0.1:" + _context2.t0);
88
-
89
- case 4:
90
- case "end":
91
- return _context2.stop();
92
- }
93
- }
94
- }, _callee2, this);
95
- }));
96
-
97
- function getUrl() {
98
- return _getUrl.apply(this, arguments);
99
- }
100
-
101
- return getUrl;
102
- }();
103
-
104
- _proto.getSwaggerJson = /*#__PURE__*/function () {
105
- var _getSwaggerJson = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
106
- var res;
107
- return _regenerator.default.wrap(function _callee3$(_context3) {
108
- while (1) {
109
- switch (_context3.prev = _context3.next) {
110
- case 0:
111
- if (!(0, _vtils.isEmpty)(this.swaggerJson)) {
112
- _context3.next = 5;
113
- break;
114
- }
115
-
116
- _context3.next = 3;
117
- return (0, _utils.httpGet)(this.options.swaggerJsonUrl);
118
-
119
- case 3:
120
- res = _context3.sent;
121
- this.swaggerJson = res;
122
-
123
- case 5:
124
- return _context3.abrupt("return", this.swaggerJson);
125
-
126
- case 6:
127
- case "end":
128
- return _context3.stop();
129
- }
130
- }
131
- }, _callee3, this);
132
- }));
133
-
134
- function getSwaggerJson() {
135
- return _getSwaggerJson.apply(this, arguments);
136
- }
137
-
138
- return getSwaggerJson;
139
- }();
140
-
141
- _proto.getYApiData = /*#__PURE__*/function () {
142
- var _getYApiData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
143
- return _regenerator.default.wrap(function _callee4$(_context4) {
144
- while (1) {
145
- switch (_context4.prev = _context4.next) {
146
- case 0:
147
- if (!(0, _vtils.isEmpty)(this.yapiData)) {
148
- _context4.next = 8;
149
- break;
150
- }
151
-
152
- _context4.t0 = _swaggerJsonToYApiData.swaggerJsonToYApiData;
153
- _context4.next = 4;
154
- return this.getSwaggerJson();
155
-
156
- case 4:
157
- _context4.t1 = _context4.sent;
158
- _context4.next = 7;
159
- return (0, _context4.t0)(_context4.t1);
160
-
161
- case 7:
162
- this.yapiData = _context4.sent;
163
-
164
- case 8:
165
- return _context4.abrupt("return", this.yapiData);
166
-
167
- case 9:
168
- case "end":
169
- return _context4.stop();
170
- }
171
- }
172
- }, _callee4, this);
173
- }));
174
-
175
- function getYApiData() {
176
- return _getYApiData.apply(this, arguments);
177
- }
178
-
179
- return getYApiData;
180
- }();
181
-
182
- _proto.start = /*#__PURE__*/function () {
183
- var _start = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
184
- var _this = this;
185
-
186
- var yapiData;
187
- return _regenerator.default.wrap(function _callee7$(_context7) {
188
- while (1) {
189
- switch (_context7.prev = _context7.next) {
190
- case 0:
191
- _context7.next = 2;
192
- return this.getYApiData();
193
-
194
- case 2:
195
- yapiData = _context7.sent;
196
- _context7.next = 5;
197
- return new Promise( /*#__PURE__*/function () {
198
- var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(resolve) {
199
- return _regenerator.default.wrap(function _callee6$(_context6) {
200
- while (1) {
201
- switch (_context6.prev = _context6.next) {
202
- case 0:
203
- _context6.t0 = _http.default.createServer( /*#__PURE__*/function () {
204
- var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(req, res) {
205
- var _url$parse, pathname;
206
-
207
- return _regenerator.default.wrap(function _callee5$(_context5) {
208
- while (1) {
209
- switch (_context5.prev = _context5.next) {
210
- case 0:
211
- _url$parse = _url.default.parse(req.url || ''), pathname = _url$parse.pathname;
212
- res.setHeader('Content-Type', 'application/json');
213
-
214
- if (pathname.includes('/api/plugin/export')) {
215
- res.end(JSON.stringify(yapiData.cats.map(function (cat) {
216
- return (0, _extends2.default)({}, cat, {
217
- list: yapiData.interfaces.filter(function (item) {
218
- return item.catid === cat._id;
219
- })
220
- });
221
- })));
222
- } else if (pathname.includes('/api/interface/getCatMenu')) {
223
- res.end(JSON.stringify({
224
- errcode: 0,
225
- errmsg: '成功!',
226
- data: yapiData.cats
227
- }));
228
- } else if (pathname.includes('/api/project/get')) {
229
- res.end(JSON.stringify({
230
- errcode: 0,
231
- errmsg: '成功!',
232
- data: yapiData.project
233
- }));
234
- } else {
235
- res.end('404');
236
- }
237
-
238
- case 3:
239
- case "end":
240
- return _context5.stop();
241
- }
242
- }
243
- }, _callee5);
244
- }));
245
-
246
- return function (_x2, _x3) {
247
- return _ref2.apply(this, arguments);
248
- };
249
- }());
250
- _context6.next = 3;
251
- return _this.getPort();
252
-
253
- case 3:
254
- _context6.t1 = _context6.sent;
255
-
256
- _context6.t2 = function () {
257
- (0, _signalExit.default)(function () {
258
- return _this.stop();
259
- });
260
- resolve();
261
- };
262
-
263
- _this.httpServer = _context6.t0.listen.call(_context6.t0, _context6.t1, '127.0.0.1', _context6.t2);
264
-
265
- case 6:
266
- case "end":
267
- return _context6.stop();
268
- }
269
- }
270
- }, _callee6);
271
- }));
272
-
273
- return function (_x) {
274
- return _ref.apply(this, arguments);
275
- };
276
- }());
277
-
278
- case 5:
279
- return _context7.abrupt("return", this.getUrl());
280
-
281
- case 6:
282
- case "end":
283
- return _context7.stop();
284
- }
285
- }
286
- }, _callee7, this);
287
- }));
288
-
289
- function start() {
290
- return _start.apply(this, arguments);
291
- }
292
-
293
- return start;
294
- }();
295
-
296
- _proto.stop = /*#__PURE__*/function () {
297
- var _stop = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
298
- var _this2 = this;
299
-
300
- return _regenerator.default.wrap(function _callee8$(_context8) {
301
- while (1) {
302
- switch (_context8.prev = _context8.next) {
303
- case 0:
304
- return _context8.abrupt("return", new Promise(function (resolve, reject) {
305
- if (!_this2.httpServer) {
306
- resolve();
307
- } else {
308
- _this2.httpServer.close(function (err) {
309
- if (err) {
310
- reject(err);
311
- } else {
312
- resolve();
313
- }
314
- });
315
- }
316
- }));
317
-
318
- case 1:
319
- case "end":
320
- return _context8.stop();
321
- }
322
- }
323
- }, _callee8);
324
- }));
325
-
326
- function stop() {
327
- return _stop.apply(this, arguments);
328
- }
329
-
330
- return stop;
331
- }();
332
-
333
- return SwaggerToYApiServer;
334
- }();
335
-
336
- exports.SwaggerToYApiServer = SwaggerToYApiServer;
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.js");
2
+ const require_mini_ut = require("./mini-ut.js");
3
+ const require_utils = require("./utils.js");
4
+ const require_swaggerJsonToYApiData = require("./swaggerJsonToYApiData.js");
5
+ let fs_extra = require("fs-extra");
6
+ fs_extra = require_runtime.__toESM(fs_extra);
7
+ let path = require("path");
8
+ path = require_runtime.__toESM(path);
9
+ let url = require("url");
10
+ url = require_runtime.__toESM(url);
11
+ let get_port = require("get-port");
12
+ get_port = require_runtime.__toESM(get_port);
13
+ let http = require("http");
14
+ http = require_runtime.__toESM(http);
15
+ let signal_exit = require("signal-exit");
16
+ //#region src/SwaggerToYApiServer.ts
17
+ var SwaggerToYApiServer = class {
18
+ constructor(options) {
19
+ this.options = options;
20
+ this.port = 0;
21
+ this.swaggerJson = {};
22
+ this.httpServer = null;
23
+ this.yapiData = {};
24
+ }
25
+ async getPort() {
26
+ if (this.port === 0) this.port = await (0, get_port.default)({ port: 50505 });
27
+ return this.port;
28
+ }
29
+ async getUrl() {
30
+ return `http://127.0.0.1:${await this.getPort()}`;
31
+ }
32
+ async getSwaggerJson() {
33
+ if (require_mini_ut.isEmpty(this.swaggerJson)) {
34
+ if (this.options.swaggerJsonPath) {
35
+ const absPath = path.default.resolve(this.options.swaggerJsonPath);
36
+ if (!await fs_extra.default.pathExists(absPath)) throw new Error(`本地 OpenAPI/Swagger JSON 文件不存在: ${absPath}`);
37
+ if ((await fs_extra.default.stat(absPath)).isDirectory()) {
38
+ const files = (await fs_extra.default.readdir(absPath)).filter((f) => f.endsWith(".json")).sort();
39
+ if (files.length === 0) throw new Error(`目录中没有找到 JSON 文件: ${absPath}`);
40
+ const docs = await Promise.all(files.map(async (f) => {
41
+ const raw = await fs_extra.default.readFile(path.default.join(absPath, f), "utf-8");
42
+ try {
43
+ return JSON.parse(raw);
44
+ } catch (err) {
45
+ throw new Error(`解析本地 OpenAPI/Swagger JSON 失败: ${path.default.join(absPath, f)}\n${err.message}`);
46
+ }
47
+ }));
48
+ this.swaggerJson = docs.reduce((acc, doc, i) => {
49
+ if (i === 0) return { ...doc };
50
+ return {
51
+ ...acc,
52
+ paths: {
53
+ ...acc.paths,
54
+ ...doc.paths
55
+ },
56
+ components: {
57
+ ...acc.components,
58
+ schemas: {
59
+ ...acc.components?.schemas,
60
+ ...doc.components?.schemas
61
+ }
62
+ }
63
+ };
64
+ });
65
+ } else {
66
+ const raw = await fs_extra.default.readFile(absPath, "utf-8");
67
+ try {
68
+ this.swaggerJson = JSON.parse(raw);
69
+ } catch (err) {
70
+ throw new Error(`解析本地 OpenAPI/Swagger JSON 失败: ${absPath}\n${err.message}`);
71
+ }
72
+ }
73
+ } else if (this.options.swaggerJsonUrl) {
74
+ const res = await require_utils.httpGet(this.options.swaggerJsonUrl);
75
+ this.swaggerJson = res;
76
+ } else throw new Error("SwaggerToYApiServer: 必须提供 swaggerJsonUrl 或 swaggerJsonPath");
77
+ }
78
+ return this.swaggerJson;
79
+ }
80
+ async getYApiData() {
81
+ if (require_mini_ut.isEmpty(this.yapiData)) this.yapiData = await require_swaggerJsonToYApiData.swaggerJsonToYApiData(await this.getSwaggerJson());
82
+ return this.yapiData;
83
+ }
84
+ async start() {
85
+ const yapiData = await this.getYApiData();
86
+ await new Promise(async (resolve) => {
87
+ this.httpServer = http.default.createServer(async (req, res) => {
88
+ const { pathname } = url.default.parse(req.url || "");
89
+ res.setHeader("Content-Type", "application/json");
90
+ if (pathname.includes("/api/plugin/export")) res.end(JSON.stringify(yapiData.cats.map((cat) => ({
91
+ ...cat,
92
+ list: yapiData.interfaces.filter((item) => item.catid === cat._id)
93
+ }))));
94
+ else if (pathname.includes("/api/interface/getCatMenu")) res.end(JSON.stringify({
95
+ errcode: 0,
96
+ errmsg: "成功!",
97
+ data: yapiData.cats
98
+ }));
99
+ else if (pathname.includes("/api/project/get")) res.end(JSON.stringify({
100
+ errcode: 0,
101
+ errmsg: "成功!",
102
+ data: yapiData.project
103
+ }));
104
+ else res.end("404");
105
+ }).listen(await this.getPort(), "127.0.0.1", () => {
106
+ (0, signal_exit.onExit)(() => {
107
+ this.stop();
108
+ });
109
+ resolve();
110
+ });
111
+ });
112
+ return this.getUrl();
113
+ }
114
+ async stop() {
115
+ return new Promise((resolve, reject) => {
116
+ if (!this.httpServer) resolve();
117
+ else this.httpServer.close((err) => {
118
+ if (err) reject(err);
119
+ else resolve();
120
+ });
121
+ });
122
+ }
123
+ };
124
+ //#endregion
125
+ exports.SwaggerToYApiServer = SwaggerToYApiServer;
@@ -0,0 +1,23 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;