swagger-client 3.29.0 → 3.29.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.
@@ -1,4 +1,3 @@
1
- import qs from 'qs';
2
1
  import formatKeyValue from './format.js';
3
2
  import { isFile, isArrayOfFile, FileWithData } from './file.js';
4
3
  function buildFormData(reqForm) {
@@ -37,6 +36,27 @@ function buildFormData(reqForm) {
37
36
  return formData;
38
37
  }, new FormData());
39
38
  }
39
+ export const stringifyQuery = (queryObject, {
40
+ encode = true
41
+ } = {}) => {
42
+ const buildNestedParams = (params, key, value) => {
43
+ if (value == null) {
44
+ params.append(key, '');
45
+ } else if (Array.isArray(value)) {
46
+ value.reduce((acc, v) => buildNestedParams(params, key, v), params);
47
+ } else if (value instanceof Date) {
48
+ params.append(key, value.toISOString());
49
+ } else if (typeof value === 'object') {
50
+ Object.entries(value).reduce((acc, [k, v]) => buildNestedParams(params, `${key}[${k}]`, v), params);
51
+ } else {
52
+ params.append(key, value);
53
+ }
54
+ return params;
55
+ };
56
+ const params = Object.entries(queryObject).reduce((acc, [key, value]) => buildNestedParams(acc, key, value), new URLSearchParams());
57
+ const queryString = String(params);
58
+ return encode ? queryString : decodeURIComponent(queryString);
59
+ };
40
60
 
41
61
  // Encodes an object using appropriate serializer.
42
62
  export function encodeFormOrQuery(data) {
@@ -46,7 +66,7 @@ export function encodeFormOrQuery(data) {
46
66
  * @param {string} parameterName - Parameter name
47
67
  * @return {object} encoded parameter names and values
48
68
  */
49
- const encodedQuery = Object.keys(data).reduce((result, parameterName) => {
69
+ const encodedQueryObj = Object.keys(data).reduce((result, parameterName) => {
50
70
  // eslint-disable-next-line no-restricted-syntax
51
71
  for (const [key, value] of formatKeyValue(parameterName, data[parameterName])) {
52
72
  if (value instanceof FileWithData) {
@@ -57,10 +77,9 @@ export function encodeFormOrQuery(data) {
57
77
  }
58
78
  return result;
59
79
  }, {});
60
- return qs.stringify(encodedQuery, {
61
- encode: false,
62
- indices: false
63
- }) || '';
80
+ return stringifyQuery(encodedQueryObj, {
81
+ encode: false
82
+ });
64
83
  }
65
84
 
66
85
  // If the request has a `query` object, merge it into the request.url, and delete the object
@@ -96,12 +115,10 @@ export function serializeRequest(req = {}) {
96
115
  const [baseUrl, oriSearch] = url.split('?');
97
116
  let newStr = '';
98
117
  if (oriSearch) {
99
- const oriQuery = qs.parse(oriSearch);
118
+ const oriQuery = new URLSearchParams(oriSearch);
100
119
  const keysToRemove = Object.keys(query);
101
- keysToRemove.forEach(key => delete oriQuery[key]);
102
- newStr = qs.stringify(oriQuery, {
103
- encode: true
104
- });
120
+ keysToRemove.forEach(key => oriQuery.delete(key));
121
+ newStr = String(oriQuery);
105
122
  }
106
123
  const finalStr = joinSearch(newStr, encodeFormOrQuery(query));
107
124
  req.url = baseUrl + finalStr;
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
4
4
  exports.__esModule = true;
5
5
  exports.encodeFormOrQuery = encodeFormOrQuery;
6
6
  exports.serializeRequest = serializeRequest;
7
- var _qs = _interopRequireDefault(require("qs"));
7
+ exports.stringifyQuery = void 0;
8
8
  var _format = _interopRequireDefault(require("./format.js"));
9
9
  var _file = require("./file.js");
10
10
  function buildFormData(reqForm) {
@@ -43,8 +43,30 @@ function buildFormData(reqForm) {
43
43
  return formData;
44
44
  }, new FormData());
45
45
  }
46
+ const stringifyQuery = (queryObject, {
47
+ encode = true
48
+ } = {}) => {
49
+ const buildNestedParams = (params, key, value) => {
50
+ if (value == null) {
51
+ params.append(key, '');
52
+ } else if (Array.isArray(value)) {
53
+ value.reduce((acc, v) => buildNestedParams(params, key, v), params);
54
+ } else if (value instanceof Date) {
55
+ params.append(key, value.toISOString());
56
+ } else if (typeof value === 'object') {
57
+ Object.entries(value).reduce((acc, [k, v]) => buildNestedParams(params, `${key}[${k}]`, v), params);
58
+ } else {
59
+ params.append(key, value);
60
+ }
61
+ return params;
62
+ };
63
+ const params = Object.entries(queryObject).reduce((acc, [key, value]) => buildNestedParams(acc, key, value), new URLSearchParams());
64
+ const queryString = String(params);
65
+ return encode ? queryString : decodeURIComponent(queryString);
66
+ };
46
67
 
47
68
  // Encodes an object using appropriate serializer.
69
+ exports.stringifyQuery = stringifyQuery;
48
70
  function encodeFormOrQuery(data) {
49
71
  /**
50
72
  * Encode parameter names and values
@@ -52,7 +74,7 @@ function encodeFormOrQuery(data) {
52
74
  * @param {string} parameterName - Parameter name
53
75
  * @return {object} encoded parameter names and values
54
76
  */
55
- const encodedQuery = Object.keys(data).reduce((result, parameterName) => {
77
+ const encodedQueryObj = Object.keys(data).reduce((result, parameterName) => {
56
78
  // eslint-disable-next-line no-restricted-syntax
57
79
  for (const [key, value] of (0, _format.default)(parameterName, data[parameterName])) {
58
80
  if (value instanceof _file.FileWithData) {
@@ -63,10 +85,9 @@ function encodeFormOrQuery(data) {
63
85
  }
64
86
  return result;
65
87
  }, {});
66
- return _qs.default.stringify(encodedQuery, {
67
- encode: false,
68
- indices: false
69
- }) || '';
88
+ return stringifyQuery(encodedQueryObj, {
89
+ encode: false
90
+ });
70
91
  }
71
92
 
72
93
  // If the request has a `query` object, merge it into the request.url, and delete the object
@@ -102,12 +123,10 @@ function serializeRequest(req = {}) {
102
123
  const [baseUrl, oriSearch] = url.split('?');
103
124
  let newStr = '';
104
125
  if (oriSearch) {
105
- const oriQuery = _qs.default.parse(oriSearch);
126
+ const oriQuery = new URLSearchParams(oriSearch);
106
127
  const keysToRemove = Object.keys(query);
107
- keysToRemove.forEach(key => delete oriQuery[key]);
108
- newStr = _qs.default.stringify(oriQuery, {
109
- encode: true
110
- });
128
+ keysToRemove.forEach(key => oriQuery.delete(key));
129
+ newStr = String(oriQuery);
111
130
  }
112
131
  const finalStr = joinSearch(newStr, encodeFormOrQuery(query));
113
132
  req.url = baseUrl + finalStr;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "swagger-client",
3
- "version": "3.29.0",
3
+ "version": "3.29.1",
4
4
  "description": "SwaggerJS - a collection of interfaces for OAI specs",
5
5
  "browser": {
6
6
  "./src/helpers/btoa.node.js": "./src/helpers/btoa.browser.js",
@@ -86,9 +86,8 @@
86
86
  "node-fetch-commonjs": "^3.3.2",
87
87
  "openapi-path-templating": "^1.5.1",
88
88
  "openapi-server-url-templating": "^1.0.0",
89
- "qs": "^6.10.2",
90
89
  "ramda-adjunct": "^5.0.0",
91
- "neotraverse": "=0.6.15"
90
+ "neotraverse": "=0.6.18"
92
91
  },
93
92
  "devDependencies": {
94
93
  "@babel/cli": "^7.21.0",