@devbie/apits 0.0.0-stage → 1.0.1

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.
@@ -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,58 @@
1
+ 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); }
2
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3
+ 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); } }
4
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
5
+ 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; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ 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); }
8
+ import ora from "ora";
9
+ var Spin = /*#__PURE__*/function () {
10
+ function Spin() {
11
+ _classCallCheck(this, Spin);
12
+ _defineProperty(this, "spinnerInstance", void 0);
13
+ this.spinnerInstance = ora();
14
+ }
15
+ _createClass(Spin, [{
16
+ key: "clear",
17
+ value: function clear() {
18
+ this.spinnerInstance.clear();
19
+ }
20
+ }, {
21
+ key: "start",
22
+ value: function start(text) {
23
+ this.spinnerInstance.start(text);
24
+ }
25
+ }, {
26
+ key: "succeed",
27
+ value: function succeed(text) {
28
+ this.spinnerInstance.succeed(text);
29
+ }
30
+ }, {
31
+ key: "fail",
32
+ value: function fail(text) {
33
+ this.spinnerInstance.fail(text);
34
+ }
35
+ }, {
36
+ key: "render",
37
+ value: function render() {
38
+ this.spinnerInstance.render();
39
+ }
40
+ }, {
41
+ key: "frame",
42
+ value: function frame() {
43
+ this.spinnerInstance.frame();
44
+ }
45
+ }, {
46
+ key: "info",
47
+ value: function info(text) {
48
+ this.spinnerInstance.info(text);
49
+ }
50
+ }, {
51
+ key: "stop",
52
+ value: function stop() {
53
+ this.spinnerInstance.stop();
54
+ }
55
+ }]);
56
+ return Spin;
57
+ }();
58
+ export var spinnerInstance = new Spin();
@@ -0,0 +1,56 @@
1
+ import { Interface } from "../types.mjs";
2
+ import { JSONSchema4 } from "json-schema";
3
+ /**
4
+ * Process a JSON Schema in place.
5
+ *
6
+ * @param jsonSchema JSON Schema to process
7
+ * @returns the processed JSON Schema
8
+ */
9
+ export declare function processJsonSchema<T extends JSONSchema4>(jsonSchema: T): T;
10
+ /**
11
+ * Pre-process a schema before compiling it to TypeScript.
12
+ *
13
+ * Handles edge cases such as empty enums and normalizes OpenAPI 3.x
14
+ * `nullable: true` into the JSON Schema union-null form
15
+ * (`type: [T, 'null']`) so json-schema-to-typescript emits `T | null`.
16
+ * Component schemas reach the compiler through this preprocessor instead of
17
+ * `processJsonSchema`, and jstt silently ignores the OpenAPI `nullable`
18
+ * keyword. Every node here is a fresh copy, so the source document is never
19
+ * mutated.
20
+ *
21
+ * @param schema input JSON Schema
22
+ * @returns normalized JSON Schema (fresh copy, source is not mutated)
23
+ */
24
+ export declare function preprocessSchema(schema: JSONSchema4): JSONSchema4;
25
+ /**
26
+ * Generate a TypeScript type definition from a JSON Schema object.
27
+ *
28
+ * @param jsonSchema JSON Schema object
29
+ * @param typeName type name
30
+ * @returns TypeScript type definition
31
+ */
32
+ export declare function jsonSchemaToTsCode(jsonSchema: JSONSchema4, typeName: string): Promise<string>;
33
+ export declare function getRequestDataJsonSchema(interfaceInfo: Interface): JSONSchema4;
34
+ export declare function getResponseDataJsonSchema(interfaceInfo: Interface): JSONSchema4;
35
+ /**
36
+ * Format generated code with prettier.
37
+ *
38
+ * When the output file path is known, the consumer project's own prettier
39
+ * config is resolved from it (resolveConfig walks up from the file location),
40
+ * so generated code lands clean under the consumer's `prettier --check`. When
41
+ * the consumer has no config, pure prettier defaults are used, mirroring what
42
+ * the consumer's own prettier would produce. `filepath` is always set so
43
+ * prettier infers the parser from the extension and applies any matching
44
+ * `overrides` from the consumer config.
45
+ *
46
+ * @param content code to format
47
+ * @param filePath output file path used to resolve the consumer config
48
+ * @returns formatted code
49
+ * @see https://prettier.io/docs/en/options.html
50
+ */
51
+ export declare function formatContent(content: string, filePath?: string): Promise<string>;
52
+ /**
53
+ * Generate the banner comment placed at the top of every generated file.
54
+ * @returns banner comment
55
+ */
56
+ export declare function topNotesContent(): string;