@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,94 @@
1
+ export * from "json-schema";
2
+
3
+ /** Returns the client import snippet placed at the top of each generated file. */
4
+
5
+ /** Interface definition */
6
+
7
+ /** Category information */
8
+
9
+ /** Request method */
10
+ export var Method = /*#__PURE__*/function (Method) {
11
+ Method["GET"] = "GET";
12
+ Method["POST"] = "POST";
13
+ Method["PUT"] = "PUT";
14
+ Method["DELETE"] = "DELETE";
15
+ Method["HEAD"] = "HEAD";
16
+ Method["OPTIONS"] = "OPTIONS";
17
+ Method["PATCH"] = "PATCH";
18
+ return Method;
19
+ }({});
20
+
21
+ /** Required */
22
+ export var Required = /*#__PURE__*/function (Required) {
23
+ Required["false"] = "0";
24
+ Required["true"] = "1";
25
+ return Required;
26
+ }({});
27
+
28
+ /** Request body type */
29
+ export var RequestBodyType = /*#__PURE__*/function (RequestBodyType) {
30
+ RequestBodyType["query"] = "query";
31
+ RequestBodyType["form"] = "form";
32
+ RequestBodyType["json"] = "json";
33
+ RequestBodyType["text"] = "text";
34
+ RequestBodyType["file"] = "file";
35
+ RequestBodyType["raw"] = "raw";
36
+ RequestBodyType["none"] = "none";
37
+ return RequestBodyType;
38
+ }({});
39
+
40
+ /** Request path parameter type */
41
+ export var RequestParamType = /*#__PURE__*/function (RequestParamType) {
42
+ RequestParamType["string"] = "string";
43
+ RequestParamType["number"] = "number";
44
+ return RequestParamType;
45
+ }({});
46
+
47
+ /** Request query parameter type */
48
+ export var RequestQueryType = /*#__PURE__*/function (RequestQueryType) {
49
+ RequestQueryType["string"] = "string";
50
+ RequestQueryType["number"] = "number";
51
+ return RequestQueryType;
52
+ }({});
53
+
54
+ /** Request form item type */
55
+ export var RequestFormItemType = /*#__PURE__*/function (RequestFormItemType) {
56
+ RequestFormItemType["text"] = "text";
57
+ RequestFormItemType["file"] = "file";
58
+ return RequestFormItemType;
59
+ }({});
60
+
61
+ /** Response body type */
62
+ export var ResponseBodyType = /*#__PURE__*/function (ResponseBodyType) {
63
+ ResponseBodyType["json"] = "json";
64
+ ResponseBodyType["text"] = "text";
65
+ ResponseBodyType["xml"] = "xml";
66
+ ResponseBodyType["raw"] = "raw";
67
+ return ResponseBodyType;
68
+ }({});
69
+
70
+ /** Extended interface definition */
71
+
72
+ /**
73
+ * Generator configuration for one OpenAPI source.
74
+ */
75
+
76
+ /** Combined configuration. */
77
+
78
+ /** Configuration. */
79
+
80
+ /**
81
+ * Request configuration.
82
+ */
83
+
84
+ /**
85
+ * Request parameters.
86
+ */
87
+
88
+ /** Additional parameters of the request function */
89
+
90
+ /** Property definition */
91
+
92
+ /** Property definition list */
93
+
94
+ /** Request function body generation template function */
@@ -0,0 +1,65 @@
1
+ import chalk from "chalk";
2
+
3
+ /** Log a plain message. */
4
+ export function log(message) {
5
+ var _console;
6
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
7
+ args[_key - 1] = arguments[_key];
8
+ }
9
+ (_console = console).log.apply(_console, [message].concat(args));
10
+ }
11
+
12
+ /** Log an error message. */
13
+ export function error(message) {
14
+ var _console2;
15
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
16
+ args[_key2 - 1] = arguments[_key2];
17
+ }
18
+ (_console2 = console).error.apply(_console2, [chalk.magenta(message)].concat(args));
19
+ }
20
+
21
+ /** Log an info message. */
22
+ export function info(message) {
23
+ var _console3;
24
+ for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
25
+ args[_key3 - 1] = arguments[_key3];
26
+ }
27
+ (_console3 = console).info.apply(_console3, [chalk.yellowBright(message)].concat(args));
28
+ }
29
+
30
+ /** Log a warning message. */
31
+ export function warn(message) {
32
+ var _console4;
33
+ for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
34
+ args[_key4 - 1] = arguments[_key4];
35
+ }
36
+ (_console4 = console).warn.apply(_console4, [chalk.blue(message)].concat(args));
37
+ }
38
+
39
+ /** Log a soft tip message with a prefix icon. */
40
+ export function tips(message) {
41
+ var _console5;
42
+ for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {
43
+ args[_key5 - 1] = arguments[_key5];
44
+ }
45
+ (_console5 = console).log.apply(_console5, [chalk.yellow("\uD83D\uDD08 ".concat(message, "\n"))].concat(args));
46
+ }
47
+
48
+ /** Log a success message. */
49
+ export function success(message) {
50
+ var _console6;
51
+ for (var _len6 = arguments.length, args = new Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {
52
+ args[_key6 - 1] = arguments[_key6];
53
+ }
54
+ (_console6 = console).log.apply(_console6, [chalk.cyan("\u2713 ".concat(message))].concat(args));
55
+ }
56
+
57
+ /** Print tabular data as a table. */
58
+ export function table(tabularData, properties) {
59
+ console.table(tabularData, properties);
60
+ }
61
+
62
+ /** Print a separator line (or a blank line). */
63
+ export function line(blank) {
64
+ console.log("\n".concat(!blank ? "-----------------------" : ""));
65
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Resolve the output file path for a generated file.
3
+ */
4
+
5
+ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */
6
+ import path from "path";
7
+ export var getOutputFilePath = function getOutputFilePath(config, file) {
8
+ var _path$parse = path.parse(config.output || ""),
9
+ dir = _path$parse.dir,
10
+ name = _path$parse.name;
11
+ return path.join(dir, name, file);
12
+ };
@@ -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
+ }();