@devbie/apits 0.0.0-stage → 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/README.md +89 -2
- package/bin/apits +4 -0
- package/dist/cjs/core/cli.d.ts +29 -0
- package/dist/cjs/core/cli.js +396 -0
- package/dist/cjs/core/generator.d.ts +44 -0
- package/dist/cjs/core/generator.js +301 -0
- package/dist/cjs/core/writeRequestClient.d.ts +2 -0
- package/dist/cjs/core/writeRequestClient.js +93 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/types.d.ts +330 -0
- package/dist/cjs/types.js +90 -0
- package/dist/cjs/utils/console.d.ts +16 -0
- package/dist/cjs/utils/console.js +79 -0
- package/dist/cjs/utils/getOutputPath.d.ts +5 -0
- package/dist/cjs/utils/getOutputPath.js +43 -0
- package/dist/cjs/utils/helpers.d.ts +65 -0
- package/dist/cjs/utils/helpers.js +166 -0
- package/dist/cjs/utils/openApiToInterfaces.d.ts +14 -0
- package/dist/cjs/utils/openApiToInterfaces.js +229 -0
- package/dist/cjs/utils/spinner.d.ts +15 -0
- package/dist/cjs/utils/spinner.js +69 -0
- package/dist/cjs/utils/utils.d.ts +56 -0
- package/dist/cjs/utils/utils.js +355 -0
- package/dist/cjs/utils/vtilsLite.d.ts +55 -0
- package/dist/cjs/utils/vtilsLite.js +123 -0
- package/dist/esm/core/cli.d.mts +29 -0
- package/dist/esm/core/cli.mjs +713 -0
- package/dist/esm/core/generator.d.mts +44 -0
- package/dist/esm/core/generator.mjs +463 -0
- package/dist/esm/core/writeRequestClient.d.mts +2 -0
- package/dist/esm/core/writeRequestClient.mjs +54 -0
- package/dist/esm/index.d.mts +2 -0
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/types.d.mts +330 -0
- package/dist/esm/types.mjs +94 -0
- package/dist/esm/utils/console.d.mts +16 -0
- package/dist/esm/utils/console.mjs +65 -0
- package/dist/esm/utils/getOutputPath.d.mts +5 -0
- package/dist/esm/utils/getOutputPath.mjs +12 -0
- package/dist/esm/utils/helpers.d.mts +65 -0
- package/dist/esm/utils/helpers.mjs +226 -0
- package/dist/esm/utils/openApiToInterfaces.d.mts +14 -0
- package/dist/esm/utils/openApiToInterfaces.mjs +326 -0
- package/dist/esm/utils/spinner.d.mts +15 -0
- package/dist/esm/utils/spinner.mjs +58 -0
- package/dist/esm/utils/utils.d.mts +56 -0
- package/dist/esm/utils/utils.mjs +545 -0
- package/dist/esm/utils/vtilsLite.d.mts +55 -0
- package/dist/esm/utils/vtilsLite.mjs +142 -0
- package/package.json +68 -4
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
2
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
3
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
4
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
5
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
6
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
7
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
8
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
9
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
10
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
11
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
12
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
13
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
14
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
|
+
/**
|
|
20
|
+
* Normalize user configuration into a config array and apply built-in
|
|
21
|
+
* defaults.
|
|
22
|
+
*
|
|
23
|
+
* Defaults:
|
|
24
|
+
* - `output` falls back to `src/api`.
|
|
25
|
+
* - `client` falls back to `true`, except when a custom
|
|
26
|
+
* `clientImportTemplate` is provided without an explicit `client` value —
|
|
27
|
+
* in that case the scaffolded client is skipped automatically, otherwise
|
|
28
|
+
* the generated `request.ts` would be dead code (the generated file
|
|
29
|
+
* imports the custom client instead).
|
|
30
|
+
*
|
|
31
|
+
* @param config Configuration
|
|
32
|
+
*/
|
|
33
|
+
export function defineConfig(config) {
|
|
34
|
+
var configs = config instanceof Array ? config : [config];
|
|
35
|
+
var final = configs.map(function (item) {
|
|
36
|
+
var client = "client" in item ? item.client : item.clientImportTemplate ? false : true;
|
|
37
|
+
return _objectSpread({
|
|
38
|
+
output: "src/api",
|
|
39
|
+
client: client
|
|
40
|
+
}, item);
|
|
41
|
+
});
|
|
42
|
+
return final;
|
|
43
|
+
}
|
|
44
|
+
export var FileData = /*#__PURE__*/function () {
|
|
45
|
+
/**
|
|
46
|
+
* File data helper class, unified file upload for web, mini-program and other platforms.
|
|
47
|
+
*
|
|
48
|
+
* @param originalFileData Original file data
|
|
49
|
+
* @param options If using internal getFormData, options will be used by it
|
|
50
|
+
*/
|
|
51
|
+
function FileData(originalFileData, options) {
|
|
52
|
+
_classCallCheck(this, FileData);
|
|
53
|
+
/**
|
|
54
|
+
* Original file data.
|
|
55
|
+
*/
|
|
56
|
+
_defineProperty(this, "originalFileData", void 0);
|
|
57
|
+
/**
|
|
58
|
+
* Options.
|
|
59
|
+
*/
|
|
60
|
+
_defineProperty(this, "options", void 0);
|
|
61
|
+
this.originalFileData = originalFileData;
|
|
62
|
+
this.options = options;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Get original file data.
|
|
67
|
+
*
|
|
68
|
+
* @returns Original file data
|
|
69
|
+
*/
|
|
70
|
+
_createClass(FileData, [{
|
|
71
|
+
key: "getOriginalFileData",
|
|
72
|
+
value: function getOriginalFileData() {
|
|
73
|
+
return this.originalFileData;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Get options.
|
|
78
|
+
*/
|
|
79
|
+
}, {
|
|
80
|
+
key: "getOptions",
|
|
81
|
+
value: function getOptions() {
|
|
82
|
+
return this.options;
|
|
83
|
+
}
|
|
84
|
+
}]);
|
|
85
|
+
return FileData;
|
|
86
|
+
}();
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Parse request data, separating normal data and file data from request data.
|
|
90
|
+
*
|
|
91
|
+
* @param [requestData] Request data to parse
|
|
92
|
+
* @returns Object containing normal data (data) and file data (fileData), when data and fileData are empty objects, it means no such data exists
|
|
93
|
+
*/
|
|
94
|
+
export function parseRequestData(requestData) {
|
|
95
|
+
var result = {
|
|
96
|
+
data: {},
|
|
97
|
+
fileData: {}
|
|
98
|
+
};
|
|
99
|
+
/* istanbul ignore else */
|
|
100
|
+
if (requestData != null) {
|
|
101
|
+
if (_typeof(requestData) === "object" && !Array.isArray(requestData)) {
|
|
102
|
+
Object.keys(requestData).forEach(function (key) {
|
|
103
|
+
if (requestData[key] && requestData[key] instanceof FileData) {
|
|
104
|
+
result.fileData[key] = requestData[key].getOriginalFileData();
|
|
105
|
+
} else {
|
|
106
|
+
result.data[key] = requestData[key];
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
} else {
|
|
110
|
+
result.data = requestData;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Prepare parameters to be passed to the request function.
|
|
118
|
+
*/
|
|
119
|
+
export function prepare(requestConfig, requestData) {
|
|
120
|
+
var requestPath = requestConfig.path;
|
|
121
|
+
var _parseRequestData = parseRequestData(requestData),
|
|
122
|
+
data = _parseRequestData.data,
|
|
123
|
+
fileData = _parseRequestData.fileData;
|
|
124
|
+
var dataIsObject = data != null && _typeof(data) === "object" && !Array.isArray(data);
|
|
125
|
+
if (dataIsObject) {
|
|
126
|
+
// Replace path parameters
|
|
127
|
+
if (Array.isArray(requestConfig.paramNames) && requestConfig.paramNames.length > 0) {
|
|
128
|
+
Object.keys(data).forEach(function (key) {
|
|
129
|
+
if (requestConfig.paramNames.indexOf(key) >= 0) {
|
|
130
|
+
// ref: https://github.com/YMFE/yapi/blob/master/client/containers/Project/Interface/InterfaceList/InterfaceEditForm.js#L465
|
|
131
|
+
requestPath = requestPath.replace(new RegExp("\\{".concat(key, "\\}"), "g"), data[key]).replace(new RegExp("/:".concat(key, "(?=/|$)"), "g"), "/".concat(data[key]));
|
|
132
|
+
delete data[key];
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Append query parameters to path
|
|
138
|
+
var queryString = "";
|
|
139
|
+
if (Array.isArray(requestConfig.queryNames) && requestConfig.queryNames.length > 0) {
|
|
140
|
+
Object.keys(data).forEach(function (key) {
|
|
141
|
+
if (requestConfig.queryNames.indexOf(key) >= 0) {
|
|
142
|
+
if (data[key] != null) {
|
|
143
|
+
queryString += "".concat(queryString ? "&" : "").concat(encodeURIComponent(key), "=").concat(encodeURIComponent(data[key]));
|
|
144
|
+
}
|
|
145
|
+
delete data[key];
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
if (queryString) {
|
|
150
|
+
requestPath += "".concat(requestPath.indexOf("?") > -1 ? "&" : "?").concat(queryString);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// All data
|
|
155
|
+
var allData = _objectSpread(_objectSpread({}, dataIsObject ? data : {}), fileData);
|
|
156
|
+
|
|
157
|
+
// Get form data
|
|
158
|
+
var getFormData = function getFormData() {
|
|
159
|
+
var useNativeFormData = typeof FormData !== "undefined";
|
|
160
|
+
var useNodeFormData = !useNativeFormData &&
|
|
161
|
+
// https://github.com/fjc0k/vtils/blob/master/src/utils/inNodeJS.ts
|
|
162
|
+
(typeof global === "undefined" ? "undefined" : _typeof(global)) === "object" && _typeof(global.process) === "object" && _typeof(global.process.versions) === "object" && global.process.versions.node != null;
|
|
163
|
+
var UniFormData = useNativeFormData ? FormData : useNodeFormData ?
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
165
|
+
require("form-data") : undefined;
|
|
166
|
+
if (!UniFormData) {
|
|
167
|
+
throw new Error("FormData is not supported in the current environment");
|
|
168
|
+
}
|
|
169
|
+
var formData = new UniFormData();
|
|
170
|
+
Object.keys(data).forEach(function (key) {
|
|
171
|
+
formData.append(key, data[key]);
|
|
172
|
+
});
|
|
173
|
+
Object.keys(fileData).forEach(function (key) {
|
|
174
|
+
var options = requestData[key].getOptions();
|
|
175
|
+
formData.append(key, fileData[key], useNativeFormData ? options === null || options === void 0 ? void 0 : options.filename : options);
|
|
176
|
+
});
|
|
177
|
+
return formData;
|
|
178
|
+
};
|
|
179
|
+
return _objectSpread(_objectSpread({}, requestConfig), {}, {
|
|
180
|
+
path: requestPath,
|
|
181
|
+
rawData: requestData,
|
|
182
|
+
data: data,
|
|
183
|
+
hasFileData: fileData && Object.keys(fileData).length > 0,
|
|
184
|
+
fileData: fileData,
|
|
185
|
+
allData: allData,
|
|
186
|
+
getFormData: getFormData
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Execute async function queue sequentially
|
|
192
|
+
* @param fns
|
|
193
|
+
* @param results
|
|
194
|
+
* @returns
|
|
195
|
+
*/
|
|
196
|
+
export var asyncFnArrayOrderRun = /*#__PURE__*/function () {
|
|
197
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(fns, results) {
|
|
198
|
+
var res, res1;
|
|
199
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
200
|
+
while (1) switch (_context.prev = _context.next) {
|
|
201
|
+
case 0:
|
|
202
|
+
if (!fns.length) {
|
|
203
|
+
_context.next = 8;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
_context.next = 3;
|
|
207
|
+
return fns[0]();
|
|
208
|
+
case 3:
|
|
209
|
+
res = _context.sent;
|
|
210
|
+
_context.next = 6;
|
|
211
|
+
return asyncFnArrayOrderRun(fns.slice(1), [].concat(_toConsumableArray(results || []), [res]));
|
|
212
|
+
case 6:
|
|
213
|
+
res1 = _context.sent;
|
|
214
|
+
return _context.abrupt("return", res1);
|
|
215
|
+
case 8:
|
|
216
|
+
return _context.abrupt("return", results || []);
|
|
217
|
+
case 9:
|
|
218
|
+
case "end":
|
|
219
|
+
return _context.stop();
|
|
220
|
+
}
|
|
221
|
+
}, _callee);
|
|
222
|
+
}));
|
|
223
|
+
return function asyncFnArrayOrderRun(_x, _x2) {
|
|
224
|
+
return _ref.apply(this, arguments);
|
|
225
|
+
};
|
|
226
|
+
}();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
import { Interface } from "../types.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* Convert an OpenAPI 3.x document into the internal `Interface[]` format.
|
|
5
|
+
*
|
|
6
|
+
* Reads OAS3 directly — no intermediate Swagger 2.0 `openapi3Format` step,
|
|
7
|
+
* no YApi platform fields (`_id`/`project_id`/`catid`/`add_time`/`up_time`),
|
|
8
|
+
* no module-level mutable state.
|
|
9
|
+
*
|
|
10
|
+
* @param data OpenAPI 3.x document (object or JSON string)
|
|
11
|
+
*/
|
|
12
|
+
export declare function openApiToInterfaces(data: OpenAPIV3.Document | string): Promise<{
|
|
13
|
+
interfaces: Interface[];
|
|
14
|
+
}>;
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
2
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
3
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
7
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
8
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
9
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
10
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
11
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
12
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
13
|
+
import { RequestBodyType, RequestFormItemType, Required, ResponseBodyType } from "../types.mjs";
|
|
14
|
+
import { each, find } from "./vtilsLite.mjs";
|
|
15
|
+
import * as conso from "./console.mjs";
|
|
16
|
+
function handlePath(p) {
|
|
17
|
+
if (p === "/") return p;
|
|
18
|
+
if (p.charAt(0) !== "/") p = "/".concat(p);
|
|
19
|
+
if (p.charAt(p.length - 1) === "/") p = p.slice(0, -1);
|
|
20
|
+
return p;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Resolve a JSON `$ref` pointer (e.g. `#/components/parameters/Foo`) from the root spec. */
|
|
24
|
+
function resolveRef(ref, root) {
|
|
25
|
+
var _node;
|
|
26
|
+
if (!ref || typeof ref !== "string" || !ref.startsWith("#/") || ref.length <= 2) return null;
|
|
27
|
+
var parts = ref.slice(2).split("/").filter(Boolean);
|
|
28
|
+
var node = root;
|
|
29
|
+
var _iterator = _createForOfIteratorHelper(parts),
|
|
30
|
+
_step;
|
|
31
|
+
try {
|
|
32
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
33
|
+
var part = _step.value;
|
|
34
|
+
if (node == null) return null;
|
|
35
|
+
node = node[part];
|
|
36
|
+
}
|
|
37
|
+
} catch (err) {
|
|
38
|
+
_iterator.e(err);
|
|
39
|
+
} finally {
|
|
40
|
+
_iterator.f();
|
|
41
|
+
}
|
|
42
|
+
return (_node = node) !== null && _node !== void 0 ? _node : null;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** Check whether a value is a `$ref` object (vs a concrete schema). */
|
|
46
|
+
function isRef(obj) {
|
|
47
|
+
return obj != null && _typeof(obj) === "object" && "$ref" in obj;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Process the OAS3 request body directly — no intermediate Swagger 2.0
|
|
52
|
+
* `parameters[]` with `in:'body'`/`in:'formData'`.
|
|
53
|
+
*
|
|
54
|
+
* - `application/json` → `req_body_other` (JSON-stringified schema) + `req_body_type='json'`
|
|
55
|
+
* - `multipart/form-data` / `application/x-www-form-urlencoded` → expand schema
|
|
56
|
+
* properties into `req_body_form` + `req_body_type='form'`
|
|
57
|
+
* - `additionalProperties` on a form schema → `req_body_additional`
|
|
58
|
+
*/
|
|
59
|
+
function handleRequestBody(requestBody, api) {
|
|
60
|
+
if (!requestBody || _typeof(requestBody) !== "object") return;
|
|
61
|
+
var content = requestBody.content || {};
|
|
62
|
+
var jsonContent = content["application/json"];
|
|
63
|
+
if (jsonContent && jsonContent.schema) {
|
|
64
|
+
api.req_body_other = JSON.stringify(jsonContent.schema, null, 2);
|
|
65
|
+
api.req_body_type = RequestBodyType.json;
|
|
66
|
+
api.req_body_is_json_schema = true;
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Form-encoded bodies: expand the schema into individual form fields so
|
|
71
|
+
// binary fields render as `file` and the request body type becomes `form`.
|
|
72
|
+
var multipartContent = content["multipart/form-data"];
|
|
73
|
+
var formContent = multipartContent || content["application/x-www-form-urlencoded"];
|
|
74
|
+
if (formContent && formContent.schema) {
|
|
75
|
+
var schema = formContent.schema;
|
|
76
|
+
// Skip $ref schemas (not resolvable in this context).
|
|
77
|
+
if (isRef(schema)) return;
|
|
78
|
+
var required = schema.required || [];
|
|
79
|
+
var props = schema.properties || {};
|
|
80
|
+
for (var _i = 0, _Object$keys = Object.keys(props); _i < _Object$keys.length; _i++) {
|
|
81
|
+
var name = _Object$keys[_i];
|
|
82
|
+
var prop = props[name] || {};
|
|
83
|
+
// Binary arrays (`type:'array', items:{format:'binary'}`) describe
|
|
84
|
+
// multi-file upload fields such as `files: File[]`. Swagger 2.0
|
|
85
|
+
// formData has no array-of-file concept, so the field is emitted
|
|
86
|
+
// as `type:'file'` with an `isArray` marker.
|
|
87
|
+
var arrayItems = Array.isArray(prop.items) ? prop.items[0] : prop.items;
|
|
88
|
+
var isFileArray = prop.type === "array" && arrayItems && arrayItems.format === "binary";
|
|
89
|
+
var isFile = prop.format === "binary" || isFileArray;
|
|
90
|
+
api.req_body_form.push(_objectSpread(_objectSpread({
|
|
91
|
+
name: name,
|
|
92
|
+
type: isFile ? RequestFormItemType.file : RequestFormItemType.text,
|
|
93
|
+
desc: prop.description || "",
|
|
94
|
+
example: "",
|
|
95
|
+
required: required.indexOf(name) > -1 ? Required.true : Required.false
|
|
96
|
+
}, isFileArray ? {
|
|
97
|
+
isArray: true
|
|
98
|
+
} : {}), Array.isArray(prop.enum) && prop.enum.length ? {
|
|
99
|
+
enum: prop.enum
|
|
100
|
+
} : {}));
|
|
101
|
+
}
|
|
102
|
+
// Dynamic upload fields declared via `additionalProperties` (e.g.
|
|
103
|
+
// evidence_0, evidence_1, ...). Their names are derived at runtime so
|
|
104
|
+
// they cannot be expanded into named form params.
|
|
105
|
+
if (schema.additionalProperties && _typeof(schema.additionalProperties) === "object") {
|
|
106
|
+
api.req_body_additional = schema.additionalProperties;
|
|
107
|
+
}
|
|
108
|
+
api.req_body_type = RequestBodyType.form;
|
|
109
|
+
api.req_body_multipart = !!multipartContent;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Process the OAS3 responses object directly — no intermediate Swagger 2.0
|
|
115
|
+
* pre-flattening of `res.content['application/json']` to `res.schema`.
|
|
116
|
+
*
|
|
117
|
+
* Reads `res.content` media types to determine whether a JSON schema exists.
|
|
118
|
+
*/
|
|
119
|
+
function handleResponse(responses) {
|
|
120
|
+
if (!responses || _typeof(responses) !== "object") return {
|
|
121
|
+
body: "",
|
|
122
|
+
hasSchema: false
|
|
123
|
+
};
|
|
124
|
+
var codes = Object.keys(responses);
|
|
125
|
+
if (codes.length === 0) return {
|
|
126
|
+
body: "",
|
|
127
|
+
hasSchema: false
|
|
128
|
+
};
|
|
129
|
+
var curCode = codes.indexOf("200") > -1 ? "200" : codes[0];
|
|
130
|
+
var res = responses[curCode];
|
|
131
|
+
if (!res || _typeof(res) !== "object") {
|
|
132
|
+
return {
|
|
133
|
+
body: "",
|
|
134
|
+
hasSchema: false
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Skip $ref responses (not resolvable in this context).
|
|
139
|
+
if (isRef(res)) return {
|
|
140
|
+
body: "",
|
|
141
|
+
hasSchema: false
|
|
142
|
+
};
|
|
143
|
+
var content = res.content;
|
|
144
|
+
if (content && _typeof(content) === "object") {
|
|
145
|
+
// Prefer application/json, then hal+json, then */*.
|
|
146
|
+
var mediaType = content["application/json"] || content["application/hal+json"] || content["*/*"];
|
|
147
|
+
if (mediaType && mediaType.schema) {
|
|
148
|
+
return {
|
|
149
|
+
body: JSON.stringify(mediaType.schema, null, 2),
|
|
150
|
+
hasSchema: true
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// No schema found — fall back to description.
|
|
156
|
+
if (res.description) return {
|
|
157
|
+
body: res.description,
|
|
158
|
+
hasSchema: false
|
|
159
|
+
};
|
|
160
|
+
return {
|
|
161
|
+
body: "",
|
|
162
|
+
hasSchema: false
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** Convert a single OAS3 path-item operation into an `Interface`. */
|
|
167
|
+
function handleOpenApiOperation(operation, path, method, originTags, root) {
|
|
168
|
+
var api = {
|
|
169
|
+
title: operation.summary || path,
|
|
170
|
+
path: handlePath(path),
|
|
171
|
+
method: method.toUpperCase(),
|
|
172
|
+
req_params: [],
|
|
173
|
+
req_body_form: [],
|
|
174
|
+
req_query: [],
|
|
175
|
+
req_body_type: RequestBodyType.raw,
|
|
176
|
+
req_body_is_json_schema: false,
|
|
177
|
+
req_body_other: "",
|
|
178
|
+
res_body_type: ResponseBodyType.raw,
|
|
179
|
+
res_body_is_json_schema: false,
|
|
180
|
+
res_body: ""
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
// Category from tags.
|
|
184
|
+
api.catname = null;
|
|
185
|
+
if (Array.isArray(operation.tags)) {
|
|
186
|
+
var _iterator2 = _createForOfIteratorHelper(operation.tags),
|
|
187
|
+
_step2;
|
|
188
|
+
try {
|
|
189
|
+
var _loop = function _loop() {
|
|
190
|
+
var tag = _step2.value;
|
|
191
|
+
if (/v[0-9.]+/.test(tag)) return 0; // continue
|
|
192
|
+
if (originTags.length > 0 && find(originTags, function (item) {
|
|
193
|
+
return item.name === tag;
|
|
194
|
+
})) {
|
|
195
|
+
api.catname = tag;
|
|
196
|
+
return 1; // break
|
|
197
|
+
}
|
|
198
|
+
if (originTags.length === 0) {
|
|
199
|
+
api.catname = tag;
|
|
200
|
+
return 1; // break
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
_ret;
|
|
204
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
205
|
+
_ret = _loop();
|
|
206
|
+
if (_ret === 0) continue;
|
|
207
|
+
if (_ret === 1) break;
|
|
208
|
+
}
|
|
209
|
+
} catch (err) {
|
|
210
|
+
_iterator2.e(err);
|
|
211
|
+
} finally {
|
|
212
|
+
_iterator2.f();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Process OAS3 path/query/header parameters (native — no Swagger 2.0
|
|
217
|
+
// `in:'body'`/`in:'formData'` intermediates).
|
|
218
|
+
if (Array.isArray(operation.parameters)) {
|
|
219
|
+
var _iterator3 = _createForOfIteratorHelper(operation.parameters),
|
|
220
|
+
_step3;
|
|
221
|
+
try {
|
|
222
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
223
|
+
var param = _step3.value;
|
|
224
|
+
if (isRef(param)) {
|
|
225
|
+
param = resolveRef(param.$ref, root);
|
|
226
|
+
}
|
|
227
|
+
if (!param || _typeof(param) !== "object") continue;
|
|
228
|
+
var p = param;
|
|
229
|
+
var paramObj = {
|
|
230
|
+
name: p.name,
|
|
231
|
+
desc: p.description || "",
|
|
232
|
+
type: p.schema ? p.schema.type : p.type,
|
|
233
|
+
required: p.required ? Required.true : Required.false,
|
|
234
|
+
example: ""
|
|
235
|
+
};
|
|
236
|
+
switch (p.in) {
|
|
237
|
+
case "path":
|
|
238
|
+
api.req_params.push(paramObj);
|
|
239
|
+
break;
|
|
240
|
+
case "query":
|
|
241
|
+
api.req_query.push(paramObj);
|
|
242
|
+
break;
|
|
243
|
+
case "header":
|
|
244
|
+
// Headers are not consumed downstream; skip silently.
|
|
245
|
+
break;
|
|
246
|
+
default:
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
} catch (err) {
|
|
251
|
+
_iterator3.e(err);
|
|
252
|
+
} finally {
|
|
253
|
+
_iterator3.f();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Process the OAS3 request body directly.
|
|
258
|
+
var reqBody = operation.requestBody;
|
|
259
|
+
handleRequestBody(isRef(reqBody) ? undefined : reqBody, api);
|
|
260
|
+
|
|
261
|
+
// Process the OAS3 responses directly.
|
|
262
|
+
var _handleResponse = handleResponse(operation.responses),
|
|
263
|
+
resBody = _handleResponse.body,
|
|
264
|
+
hasSchema = _handleResponse.hasSchema;
|
|
265
|
+
api.res_body = resBody;
|
|
266
|
+
if (hasSchema) {
|
|
267
|
+
api.res_body_type = ResponseBodyType.json;
|
|
268
|
+
api.res_body_is_json_schema = true;
|
|
269
|
+
} else if (resBody) {
|
|
270
|
+
api.res_body_type = ResponseBodyType.raw;
|
|
271
|
+
}
|
|
272
|
+
return api;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Convert an OpenAPI 3.x document into the internal `Interface[]` format.
|
|
277
|
+
*
|
|
278
|
+
* Reads OAS3 directly — no intermediate Swagger 2.0 `openapi3Format` step,
|
|
279
|
+
* no YApi platform fields (`_id`/`project_id`/`catid`/`add_time`/`up_time`),
|
|
280
|
+
* no module-level mutable state.
|
|
281
|
+
*
|
|
282
|
+
* @param data OpenAPI 3.x document (object or JSON string)
|
|
283
|
+
*/
|
|
284
|
+
export function openApiToInterfaces(_x) {
|
|
285
|
+
return _openApiToInterfaces.apply(this, arguments);
|
|
286
|
+
}
|
|
287
|
+
function _openApiToInterfaces() {
|
|
288
|
+
_openApiToInterfaces = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(data) {
|
|
289
|
+
var doc, tags, interfaces;
|
|
290
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
291
|
+
while (1) switch (_context.prev = _context.next) {
|
|
292
|
+
case 0:
|
|
293
|
+
if (typeof data === "string" && data) {
|
|
294
|
+
try {
|
|
295
|
+
data = JSON.parse(data);
|
|
296
|
+
} catch (e) {
|
|
297
|
+
conso.error("Failed to parse JSON: ".concat(e.message));
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
doc = data;
|
|
301
|
+
tags = Array.isArray(doc.tags) ? doc.tags : [];
|
|
302
|
+
interfaces = [];
|
|
303
|
+
each(doc.paths || {}, function (pathItem, path) {
|
|
304
|
+
// `parameters` at the path-item level are common parameters, not an operation.
|
|
305
|
+
delete pathItem.parameters;
|
|
306
|
+
each(pathItem, function (operation, method) {
|
|
307
|
+
if (!operation || _typeof(operation) !== "object") return;
|
|
308
|
+
try {
|
|
309
|
+
var iface = handleOpenApiOperation(operation, path, method, tags, doc);
|
|
310
|
+
interfaces.push(iface);
|
|
311
|
+
} catch (_unused) {
|
|
312
|
+
// Skip malformed operations silently.
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
return _context.abrupt("return", {
|
|
317
|
+
interfaces: interfaces
|
|
318
|
+
});
|
|
319
|
+
case 6:
|
|
320
|
+
case "end":
|
|
321
|
+
return _context.stop();
|
|
322
|
+
}
|
|
323
|
+
}, _callee);
|
|
324
|
+
}));
|
|
325
|
+
return _openApiToInterfaces.apply(this, arguments);
|
|
326
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Ora } from "ora";
|
|
2
|
+
declare class Spin {
|
|
3
|
+
spinnerInstance: Ora;
|
|
4
|
+
constructor();
|
|
5
|
+
clear(): void;
|
|
6
|
+
start(text?: string): void;
|
|
7
|
+
succeed(text?: string): void;
|
|
8
|
+
fail(text?: string): void;
|
|
9
|
+
render(): void;
|
|
10
|
+
frame(): void;
|
|
11
|
+
info(text?: string): void;
|
|
12
|
+
stop(): void;
|
|
13
|
+
}
|
|
14
|
+
export declare const spinnerInstance: Spin;
|
|
15
|
+
export {};
|