@st-gr/sail-proxy 0.9.2 → 0.9.3

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.
Files changed (213) hide show
  1. package/bundled/gateway/node_modules/.package-lock.json +132 -83
  2. package/bundled/gateway/node_modules/axios/CHANGELOG.md +0 -42
  3. package/bundled/gateway/node_modules/axios/README.md +237 -237
  4. package/bundled/gateway/node_modules/axios/dist/axios.js +21 -113
  5. package/bundled/gateway/node_modules/axios/dist/axios.js.map +1 -0
  6. package/bundled/gateway/node_modules/axios/dist/axios.min.js +2 -2
  7. package/bundled/gateway/node_modules/axios/dist/axios.min.js.map +1 -1
  8. package/bundled/gateway/node_modules/axios/dist/browser/axios.cjs +15 -121
  9. package/bundled/gateway/node_modules/axios/dist/browser/axios.cjs.map +1 -0
  10. package/bundled/gateway/node_modules/axios/dist/esm/axios.js +15 -121
  11. package/bundled/gateway/node_modules/axios/dist/esm/axios.js.map +1 -0
  12. package/bundled/gateway/node_modules/axios/dist/esm/axios.min.js +2 -2
  13. package/bundled/gateway/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  14. package/bundled/gateway/node_modules/axios/dist/node/axios.cjs +107 -249
  15. package/bundled/gateway/node_modules/axios/dist/node/axios.cjs.map +1 -0
  16. package/bundled/gateway/node_modules/axios/index.d.cts +3 -8
  17. package/bundled/gateway/node_modules/axios/index.d.ts +1 -4
  18. package/bundled/gateway/node_modules/axios/lib/adapters/fetch.js +0 -79
  19. package/bundled/gateway/node_modules/axios/lib/adapters/http.js +118 -62
  20. package/bundled/gateway/node_modules/axios/lib/core/Axios.js +0 -1
  21. package/bundled/gateway/node_modules/axios/lib/core/AxiosHeaders.js +2 -2
  22. package/bundled/gateway/node_modules/axios/lib/defaults/transitional.js +0 -1
  23. package/bundled/gateway/node_modules/axios/lib/env/data.js +1 -1
  24. package/bundled/gateway/node_modules/axios/lib/helpers/buildURL.js +1 -1
  25. package/bundled/gateway/node_modules/axios/lib/helpers/formDataToStream.js +2 -2
  26. package/bundled/gateway/node_modules/axios/lib/helpers/resolveConfig.js +6 -12
  27. package/bundled/gateway/node_modules/axios/lib/helpers/toFormData.js +1 -1
  28. package/bundled/gateway/node_modules/axios/lib/utils.js +2 -23
  29. package/bundled/gateway/node_modules/axios/package.json +13 -29
  30. package/bundled/gateway/node_modules/body-parser/HISTORY.md +0 -14
  31. package/bundled/gateway/node_modules/body-parser/SECURITY.md +25 -0
  32. package/bundled/gateway/node_modules/body-parser/lib/types/json.js +5 -1
  33. package/bundled/gateway/node_modules/body-parser/lib/types/urlencoded.js +15 -7
  34. package/bundled/gateway/node_modules/body-parser/node_modules/qs/.editorconfig +46 -0
  35. package/bundled/gateway/node_modules/body-parser/node_modules/qs/.eslintrc +38 -0
  36. package/bundled/gateway/node_modules/body-parser/node_modules/qs/.github/FUNDING.yml +12 -0
  37. package/bundled/gateway/node_modules/body-parser/node_modules/qs/.nycrc +13 -0
  38. package/bundled/gateway/node_modules/body-parser/node_modules/qs/CHANGELOG.md +600 -0
  39. package/bundled/gateway/node_modules/body-parser/node_modules/qs/LICENSE.md +29 -0
  40. package/bundled/gateway/node_modules/body-parser/node_modules/qs/README.md +709 -0
  41. package/bundled/gateway/node_modules/body-parser/node_modules/qs/dist/qs.js +90 -0
  42. package/bundled/gateway/node_modules/body-parser/node_modules/qs/lib/formats.js +23 -0
  43. package/bundled/gateway/node_modules/body-parser/node_modules/qs/lib/index.js +11 -0
  44. package/bundled/gateway/node_modules/body-parser/node_modules/qs/lib/parse.js +296 -0
  45. package/bundled/gateway/node_modules/body-parser/node_modules/qs/lib/stringify.js +351 -0
  46. package/bundled/gateway/node_modules/body-parser/node_modules/qs/lib/utils.js +265 -0
  47. package/bundled/gateway/node_modules/body-parser/node_modules/qs/package.json +91 -0
  48. package/bundled/gateway/node_modules/body-parser/node_modules/qs/test/empty-keys-cases.js +267 -0
  49. package/bundled/gateway/node_modules/body-parser/node_modules/qs/test/parse.js +1170 -0
  50. package/bundled/gateway/node_modules/body-parser/node_modules/qs/test/stringify.js +1298 -0
  51. package/bundled/gateway/node_modules/body-parser/node_modules/qs/test/utils.js +136 -0
  52. package/bundled/gateway/node_modules/body-parser/package.json +10 -9
  53. package/bundled/gateway/node_modules/cookie/index.js +35 -24
  54. package/bundled/gateway/node_modules/cookie/package.json +1 -1
  55. package/bundled/gateway/node_modules/cookie-signature/History.md +1 -5
  56. package/bundled/gateway/node_modules/cookie-signature/index.js +6 -6
  57. package/bundled/gateway/node_modules/cookie-signature/package.json +2 -2
  58. package/bundled/gateway/node_modules/express/History.md +0 -43
  59. package/bundled/gateway/node_modules/express/lib/response.js +0 -1
  60. package/bundled/gateway/node_modules/express/lib/utils.js +1 -2
  61. package/bundled/gateway/node_modules/express/node_modules/qs/.editorconfig +43 -0
  62. package/bundled/gateway/node_modules/express/node_modules/qs/.eslintrc +38 -0
  63. package/bundled/gateway/node_modules/express/node_modules/qs/.github/FUNDING.yml +12 -0
  64. package/bundled/gateway/node_modules/express/node_modules/qs/.nycrc +13 -0
  65. package/bundled/gateway/node_modules/express/node_modules/qs/CHANGELOG.md +546 -0
  66. package/bundled/gateway/node_modules/express/node_modules/qs/LICENSE.md +29 -0
  67. package/bundled/gateway/node_modules/express/node_modules/qs/README.md +625 -0
  68. package/bundled/gateway/node_modules/express/node_modules/qs/dist/qs.js +2054 -0
  69. package/bundled/gateway/node_modules/express/node_modules/qs/lib/formats.js +23 -0
  70. package/bundled/gateway/node_modules/express/node_modules/qs/lib/index.js +11 -0
  71. package/bundled/gateway/node_modules/express/node_modules/qs/lib/parse.js +263 -0
  72. package/bundled/gateway/node_modules/express/node_modules/qs/lib/stringify.js +326 -0
  73. package/bundled/gateway/node_modules/express/node_modules/qs/lib/utils.js +252 -0
  74. package/bundled/gateway/node_modules/express/node_modules/qs/package.json +77 -0
  75. package/bundled/gateway/node_modules/express/node_modules/qs/test/parse.js +855 -0
  76. package/bundled/gateway/node_modules/express/node_modules/qs/test/stringify.js +909 -0
  77. package/bundled/gateway/node_modules/express/node_modules/qs/test/utils.js +136 -0
  78. package/bundled/gateway/node_modules/express/package.json +17 -21
  79. package/bundled/gateway/node_modules/finalhandler/HISTORY.md +0 -21
  80. package/bundled/gateway/node_modules/finalhandler/README.md +2 -2
  81. package/bundled/gateway/node_modules/finalhandler/index.js +2 -7
  82. package/bundled/gateway/node_modules/finalhandler/node_modules/encodeurl/HISTORY.md +14 -0
  83. package/bundled/gateway/node_modules/finalhandler/node_modules/encodeurl/LICENSE +22 -0
  84. package/bundled/gateway/node_modules/finalhandler/node_modules/encodeurl/README.md +128 -0
  85. package/bundled/gateway/node_modules/finalhandler/node_modules/encodeurl/index.js +60 -0
  86. package/bundled/gateway/node_modules/finalhandler/node_modules/encodeurl/package.json +40 -0
  87. package/bundled/gateway/node_modules/finalhandler/package.json +9 -10
  88. package/bundled/gateway/node_modules/http-errors/HISTORY.md +0 -6
  89. package/bundled/gateway/node_modules/http-errors/index.js +3 -4
  90. package/bundled/gateway/node_modules/http-errors/package.json +8 -12
  91. package/bundled/gateway/node_modules/qs/CHANGELOG.md +0 -16
  92. package/bundled/gateway/node_modules/qs/README.md +1 -1
  93. package/bundled/gateway/node_modules/qs/dist/qs.js +15 -15
  94. package/bundled/gateway/node_modules/qs/eslint.config.mjs +0 -1
  95. package/bundled/gateway/node_modules/qs/lib/parse.js +24 -54
  96. package/bundled/gateway/node_modules/qs/lib/stringify.js +4 -11
  97. package/bundled/gateway/node_modules/qs/package.json +3 -3
  98. package/bundled/gateway/node_modules/qs/test/parse.js +0 -135
  99. package/bundled/gateway/node_modules/qs/test/stringify.js +0 -138
  100. package/bundled/gateway/node_modules/qs/test/utils.js +3 -31
  101. package/bundled/gateway/node_modules/raw-body/HISTORY.md +308 -0
  102. package/bundled/gateway/node_modules/raw-body/SECURITY.md +24 -0
  103. package/bundled/gateway/node_modules/raw-body/package.json +7 -5
  104. package/bundled/gateway/node_modules/send/HISTORY.md +7 -19
  105. package/bundled/gateway/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
  106. package/bundled/gateway/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
  107. package/bundled/gateway/node_modules/send/node_modules/encodeurl/README.md +128 -0
  108. package/bundled/gateway/node_modules/send/node_modules/encodeurl/index.js +60 -0
  109. package/bundled/gateway/node_modules/send/node_modules/encodeurl/package.json +40 -0
  110. package/bundled/gateway/node_modules/send/package.json +6 -6
  111. package/bundled/gateway/node_modules/serve-static/HISTORY.md +0 -16
  112. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/HISTORY.md +14 -0
  113. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/LICENSE +22 -0
  114. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/README.md +128 -0
  115. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/index.js +60 -0
  116. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/package.json +40 -0
  117. package/bundled/gateway/node_modules/serve-static/package.json +3 -3
  118. package/bundled/gateway/node_modules/statuses/HISTORY.md +0 -5
  119. package/bundled/gateway/node_modules/statuses/README.md +0 -3
  120. package/bundled/gateway/node_modules/statuses/package.json +7 -7
  121. package/bundled/gateway/package-lock.json +137 -88
  122. package/bundled/gateway/package.json +23 -5
  123. package/bundled/ollama/node_modules/.package-lock.json +104 -85
  124. package/bundled/ollama/node_modules/axios/CHANGELOG.md +0 -42
  125. package/bundled/ollama/node_modules/axios/README.md +237 -237
  126. package/bundled/ollama/node_modules/axios/dist/axios.js +21 -113
  127. package/bundled/ollama/node_modules/axios/dist/axios.js.map +1 -0
  128. package/bundled/ollama/node_modules/axios/dist/axios.min.js +2 -2
  129. package/bundled/ollama/node_modules/axios/dist/axios.min.js.map +1 -1
  130. package/bundled/ollama/node_modules/axios/dist/browser/axios.cjs +15 -121
  131. package/bundled/ollama/node_modules/axios/dist/browser/axios.cjs.map +1 -0
  132. package/bundled/ollama/node_modules/axios/dist/esm/axios.js +15 -121
  133. package/bundled/ollama/node_modules/axios/dist/esm/axios.js.map +1 -0
  134. package/bundled/ollama/node_modules/axios/dist/esm/axios.min.js +2 -2
  135. package/bundled/ollama/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  136. package/bundled/ollama/node_modules/axios/dist/node/axios.cjs +107 -249
  137. package/bundled/ollama/node_modules/axios/dist/node/axios.cjs.map +1 -0
  138. package/bundled/ollama/node_modules/axios/index.d.cts +3 -8
  139. package/bundled/ollama/node_modules/axios/index.d.ts +1 -4
  140. package/bundled/ollama/node_modules/axios/lib/adapters/fetch.js +0 -79
  141. package/bundled/ollama/node_modules/axios/lib/adapters/http.js +118 -62
  142. package/bundled/ollama/node_modules/axios/lib/core/Axios.js +0 -1
  143. package/bundled/ollama/node_modules/axios/lib/core/AxiosHeaders.js +2 -2
  144. package/bundled/ollama/node_modules/axios/lib/defaults/transitional.js +0 -1
  145. package/bundled/ollama/node_modules/axios/lib/env/data.js +1 -1
  146. package/bundled/ollama/node_modules/axios/lib/helpers/buildURL.js +1 -1
  147. package/bundled/ollama/node_modules/axios/lib/helpers/formDataToStream.js +2 -2
  148. package/bundled/ollama/node_modules/axios/lib/helpers/resolveConfig.js +6 -12
  149. package/bundled/ollama/node_modules/axios/lib/helpers/toFormData.js +1 -1
  150. package/bundled/ollama/node_modules/axios/lib/utils.js +2 -23
  151. package/bundled/ollama/node_modules/axios/package.json +13 -29
  152. package/bundled/ollama/node_modules/body-parser/HISTORY.md +0 -14
  153. package/bundled/ollama/node_modules/body-parser/SECURITY.md +25 -0
  154. package/bundled/ollama/node_modules/body-parser/lib/types/json.js +5 -1
  155. package/bundled/ollama/node_modules/body-parser/lib/types/urlencoded.js +15 -7
  156. package/bundled/ollama/node_modules/body-parser/package.json +10 -9
  157. package/bundled/ollama/node_modules/cookie/index.js +35 -24
  158. package/bundled/ollama/node_modules/cookie/package.json +1 -1
  159. package/bundled/ollama/node_modules/cookie-signature/History.md +1 -5
  160. package/bundled/ollama/node_modules/cookie-signature/index.js +6 -6
  161. package/bundled/ollama/node_modules/cookie-signature/package.json +2 -2
  162. package/bundled/ollama/node_modules/express/History.md +0 -43
  163. package/bundled/ollama/node_modules/express/lib/response.js +0 -1
  164. package/bundled/ollama/node_modules/express/lib/utils.js +1 -2
  165. package/bundled/ollama/node_modules/express/package.json +17 -21
  166. package/bundled/ollama/node_modules/finalhandler/HISTORY.md +0 -21
  167. package/bundled/ollama/node_modules/finalhandler/README.md +2 -2
  168. package/bundled/ollama/node_modules/finalhandler/index.js +2 -7
  169. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/HISTORY.md +14 -0
  170. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/LICENSE +22 -0
  171. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/README.md +128 -0
  172. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/index.js +60 -0
  173. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/package.json +40 -0
  174. package/bundled/ollama/node_modules/finalhandler/package.json +9 -10
  175. package/bundled/ollama/node_modules/http-errors/HISTORY.md +0 -6
  176. package/bundled/ollama/node_modules/http-errors/index.js +3 -4
  177. package/bundled/ollama/node_modules/http-errors/package.json +8 -12
  178. package/bundled/ollama/node_modules/qs/CHANGELOG.md +0 -16
  179. package/bundled/ollama/node_modules/qs/README.md +1 -1
  180. package/bundled/ollama/node_modules/qs/dist/qs.js +15 -15
  181. package/bundled/ollama/node_modules/qs/eslint.config.mjs +0 -1
  182. package/bundled/ollama/node_modules/qs/lib/parse.js +24 -54
  183. package/bundled/ollama/node_modules/qs/lib/stringify.js +4 -11
  184. package/bundled/ollama/node_modules/qs/package.json +3 -3
  185. package/bundled/ollama/node_modules/qs/test/parse.js +0 -135
  186. package/bundled/ollama/node_modules/qs/test/stringify.js +0 -138
  187. package/bundled/ollama/node_modules/qs/test/utils.js +3 -31
  188. package/bundled/ollama/node_modules/raw-body/HISTORY.md +308 -0
  189. package/bundled/ollama/node_modules/raw-body/SECURITY.md +24 -0
  190. package/bundled/ollama/node_modules/raw-body/package.json +7 -5
  191. package/bundled/ollama/node_modules/send/HISTORY.md +7 -19
  192. package/bundled/ollama/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
  193. package/bundled/ollama/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
  194. package/bundled/ollama/node_modules/send/node_modules/encodeurl/README.md +128 -0
  195. package/bundled/ollama/node_modules/send/node_modules/encodeurl/index.js +60 -0
  196. package/bundled/ollama/node_modules/send/node_modules/encodeurl/package.json +40 -0
  197. package/bundled/ollama/node_modules/send/package.json +6 -6
  198. package/bundled/ollama/node_modules/serve-static/HISTORY.md +0 -16
  199. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/HISTORY.md +14 -0
  200. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/LICENSE +22 -0
  201. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/README.md +128 -0
  202. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/index.js +60 -0
  203. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/package.json +40 -0
  204. package/bundled/ollama/node_modules/serve-static/package.json +3 -3
  205. package/bundled/ollama/node_modules/statuses/HISTORY.md +0 -5
  206. package/bundled/ollama/node_modules/statuses/README.md +0 -3
  207. package/bundled/ollama/node_modules/statuses/package.json +7 -7
  208. package/bundled/ollama/package-lock.json +107 -88
  209. package/bundled/ollama/package.json +24 -4
  210. package/node_modules/@sap-llm-gateway/service-key-parser/package.json +1 -1
  211. package/package.json +2 -2
  212. package/bundled/gateway/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
  213. package/bundled/ollama/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var replace = String.prototype.replace;
4
+ var percentTwenties = /%20/g;
5
+
6
+ var Format = {
7
+ RFC1738: 'RFC1738',
8
+ RFC3986: 'RFC3986'
9
+ };
10
+
11
+ module.exports = {
12
+ 'default': Format.RFC3986,
13
+ formatters: {
14
+ RFC1738: function (value) {
15
+ return replace.call(value, percentTwenties, '+');
16
+ },
17
+ RFC3986: function (value) {
18
+ return String(value);
19
+ }
20
+ },
21
+ RFC1738: Format.RFC1738,
22
+ RFC3986: Format.RFC3986
23
+ };
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var stringify = require('./stringify');
4
+ var parse = require('./parse');
5
+ var formats = require('./formats');
6
+
7
+ module.exports = {
8
+ formats: formats,
9
+ parse: parse,
10
+ stringify: stringify
11
+ };
@@ -0,0 +1,263 @@
1
+ 'use strict';
2
+
3
+ var utils = require('./utils');
4
+
5
+ var has = Object.prototype.hasOwnProperty;
6
+ var isArray = Array.isArray;
7
+
8
+ var defaults = {
9
+ allowDots: false,
10
+ allowPrototypes: false,
11
+ allowSparse: false,
12
+ arrayLimit: 20,
13
+ charset: 'utf-8',
14
+ charsetSentinel: false,
15
+ comma: false,
16
+ decoder: utils.decode,
17
+ delimiter: '&',
18
+ depth: 5,
19
+ ignoreQueryPrefix: false,
20
+ interpretNumericEntities: false,
21
+ parameterLimit: 1000,
22
+ parseArrays: true,
23
+ plainObjects: false,
24
+ strictNullHandling: false
25
+ };
26
+
27
+ var interpretNumericEntities = function (str) {
28
+ return str.replace(/&#(\d+);/g, function ($0, numberStr) {
29
+ return String.fromCharCode(parseInt(numberStr, 10));
30
+ });
31
+ };
32
+
33
+ var parseArrayValue = function (val, options) {
34
+ if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {
35
+ return val.split(',');
36
+ }
37
+
38
+ return val;
39
+ };
40
+
41
+ // This is what browsers will submit when the ✓ character occurs in an
42
+ // application/x-www-form-urlencoded body and the encoding of the page containing
43
+ // the form is iso-8859-1, or when the submitted form has an accept-charset
44
+ // attribute of iso-8859-1. Presumably also with other charsets that do not contain
45
+ // the ✓ character, such as us-ascii.
46
+ var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')
47
+
48
+ // These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.
49
+ var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')
50
+
51
+ var parseValues = function parseQueryStringValues(str, options) {
52
+ var obj = {};
53
+ var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str;
54
+ var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;
55
+ var parts = cleanStr.split(options.delimiter, limit);
56
+ var skipIndex = -1; // Keep track of where the utf8 sentinel was found
57
+ var i;
58
+
59
+ var charset = options.charset;
60
+ if (options.charsetSentinel) {
61
+ for (i = 0; i < parts.length; ++i) {
62
+ if (parts[i].indexOf('utf8=') === 0) {
63
+ if (parts[i] === charsetSentinel) {
64
+ charset = 'utf-8';
65
+ } else if (parts[i] === isoSentinel) {
66
+ charset = 'iso-8859-1';
67
+ }
68
+ skipIndex = i;
69
+ i = parts.length; // The eslint settings do not allow break;
70
+ }
71
+ }
72
+ }
73
+
74
+ for (i = 0; i < parts.length; ++i) {
75
+ if (i === skipIndex) {
76
+ continue;
77
+ }
78
+ var part = parts[i];
79
+
80
+ var bracketEqualsPos = part.indexOf(']=');
81
+ var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;
82
+
83
+ var key, val;
84
+ if (pos === -1) {
85
+ key = options.decoder(part, defaults.decoder, charset, 'key');
86
+ val = options.strictNullHandling ? null : '';
87
+ } else {
88
+ key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');
89
+ val = utils.maybeMap(
90
+ parseArrayValue(part.slice(pos + 1), options),
91
+ function (encodedVal) {
92
+ return options.decoder(encodedVal, defaults.decoder, charset, 'value');
93
+ }
94
+ );
95
+ }
96
+
97
+ if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {
98
+ val = interpretNumericEntities(val);
99
+ }
100
+
101
+ if (part.indexOf('[]=') > -1) {
102
+ val = isArray(val) ? [val] : val;
103
+ }
104
+
105
+ if (has.call(obj, key)) {
106
+ obj[key] = utils.combine(obj[key], val);
107
+ } else {
108
+ obj[key] = val;
109
+ }
110
+ }
111
+
112
+ return obj;
113
+ };
114
+
115
+ var parseObject = function (chain, val, options, valuesParsed) {
116
+ var leaf = valuesParsed ? val : parseArrayValue(val, options);
117
+
118
+ for (var i = chain.length - 1; i >= 0; --i) {
119
+ var obj;
120
+ var root = chain[i];
121
+
122
+ if (root === '[]' && options.parseArrays) {
123
+ obj = [].concat(leaf);
124
+ } else {
125
+ obj = options.plainObjects ? Object.create(null) : {};
126
+ var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;
127
+ var index = parseInt(cleanRoot, 10);
128
+ if (!options.parseArrays && cleanRoot === '') {
129
+ obj = { 0: leaf };
130
+ } else if (
131
+ !isNaN(index)
132
+ && root !== cleanRoot
133
+ && String(index) === cleanRoot
134
+ && index >= 0
135
+ && (options.parseArrays && index <= options.arrayLimit)
136
+ ) {
137
+ obj = [];
138
+ obj[index] = leaf;
139
+ } else if (cleanRoot !== '__proto__') {
140
+ obj[cleanRoot] = leaf;
141
+ }
142
+ }
143
+
144
+ leaf = obj;
145
+ }
146
+
147
+ return leaf;
148
+ };
149
+
150
+ var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {
151
+ if (!givenKey) {
152
+ return;
153
+ }
154
+
155
+ // Transform dot notation to bracket notation
156
+ var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey;
157
+
158
+ // The regex chunks
159
+
160
+ var brackets = /(\[[^[\]]*])/;
161
+ var child = /(\[[^[\]]*])/g;
162
+
163
+ // Get the parent
164
+
165
+ var segment = options.depth > 0 && brackets.exec(key);
166
+ var parent = segment ? key.slice(0, segment.index) : key;
167
+
168
+ // Stash the parent if it exists
169
+
170
+ var keys = [];
171
+ if (parent) {
172
+ // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties
173
+ if (!options.plainObjects && has.call(Object.prototype, parent)) {
174
+ if (!options.allowPrototypes) {
175
+ return;
176
+ }
177
+ }
178
+
179
+ keys.push(parent);
180
+ }
181
+
182
+ // Loop through children appending to the array until we hit depth
183
+
184
+ var i = 0;
185
+ while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {
186
+ i += 1;
187
+ if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {
188
+ if (!options.allowPrototypes) {
189
+ return;
190
+ }
191
+ }
192
+ keys.push(segment[1]);
193
+ }
194
+
195
+ // If there's a remainder, just add whatever is left
196
+
197
+ if (segment) {
198
+ keys.push('[' + key.slice(segment.index) + ']');
199
+ }
200
+
201
+ return parseObject(keys, val, options, valuesParsed);
202
+ };
203
+
204
+ var normalizeParseOptions = function normalizeParseOptions(opts) {
205
+ if (!opts) {
206
+ return defaults;
207
+ }
208
+
209
+ if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {
210
+ throw new TypeError('Decoder has to be a function.');
211
+ }
212
+
213
+ if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
214
+ throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
215
+ }
216
+ var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;
217
+
218
+ return {
219
+ allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
220
+ allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,
221
+ allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,
222
+ arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,
223
+ charset: charset,
224
+ charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
225
+ comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,
226
+ decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,
227
+ delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,
228
+ // eslint-disable-next-line no-implicit-coercion, no-extra-parens
229
+ depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,
230
+ ignoreQueryPrefix: opts.ignoreQueryPrefix === true,
231
+ interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,
232
+ parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,
233
+ parseArrays: opts.parseArrays !== false,
234
+ plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,
235
+ strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
236
+ };
237
+ };
238
+
239
+ module.exports = function (str, opts) {
240
+ var options = normalizeParseOptions(opts);
241
+
242
+ if (str === '' || str === null || typeof str === 'undefined') {
243
+ return options.plainObjects ? Object.create(null) : {};
244
+ }
245
+
246
+ var tempObj = typeof str === 'string' ? parseValues(str, options) : str;
247
+ var obj = options.plainObjects ? Object.create(null) : {};
248
+
249
+ // Iterate over the keys and setup the new object
250
+
251
+ var keys = Object.keys(tempObj);
252
+ for (var i = 0; i < keys.length; ++i) {
253
+ var key = keys[i];
254
+ var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');
255
+ obj = utils.merge(obj, newObj, options);
256
+ }
257
+
258
+ if (options.allowSparse === true) {
259
+ return obj;
260
+ }
261
+
262
+ return utils.compact(obj);
263
+ };
@@ -0,0 +1,326 @@
1
+ 'use strict';
2
+
3
+ var getSideChannel = require('side-channel');
4
+ var utils = require('./utils');
5
+ var formats = require('./formats');
6
+ var has = Object.prototype.hasOwnProperty;
7
+
8
+ var arrayPrefixGenerators = {
9
+ brackets: function brackets(prefix) {
10
+ return prefix + '[]';
11
+ },
12
+ comma: 'comma',
13
+ indices: function indices(prefix, key) {
14
+ return prefix + '[' + key + ']';
15
+ },
16
+ repeat: function repeat(prefix) {
17
+ return prefix;
18
+ }
19
+ };
20
+
21
+ var isArray = Array.isArray;
22
+ var split = String.prototype.split;
23
+ var push = Array.prototype.push;
24
+ var pushToArray = function (arr, valueOrArray) {
25
+ push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
26
+ };
27
+
28
+ var toISO = Date.prototype.toISOString;
29
+
30
+ var defaultFormat = formats['default'];
31
+ var defaults = {
32
+ addQueryPrefix: false,
33
+ allowDots: false,
34
+ charset: 'utf-8',
35
+ charsetSentinel: false,
36
+ delimiter: '&',
37
+ encode: true,
38
+ encoder: utils.encode,
39
+ encodeValuesOnly: false,
40
+ format: defaultFormat,
41
+ formatter: formats.formatters[defaultFormat],
42
+ // deprecated
43
+ indices: false,
44
+ serializeDate: function serializeDate(date) {
45
+ return toISO.call(date);
46
+ },
47
+ skipNulls: false,
48
+ strictNullHandling: false
49
+ };
50
+
51
+ var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
52
+ return typeof v === 'string'
53
+ || typeof v === 'number'
54
+ || typeof v === 'boolean'
55
+ || typeof v === 'symbol'
56
+ || typeof v === 'bigint';
57
+ };
58
+
59
+ var sentinel = {};
60
+
61
+ var stringify = function stringify(
62
+ object,
63
+ prefix,
64
+ generateArrayPrefix,
65
+ commaRoundTrip,
66
+ strictNullHandling,
67
+ skipNulls,
68
+ encoder,
69
+ filter,
70
+ sort,
71
+ allowDots,
72
+ serializeDate,
73
+ format,
74
+ formatter,
75
+ encodeValuesOnly,
76
+ charset,
77
+ sideChannel
78
+ ) {
79
+ var obj = object;
80
+
81
+ var tmpSc = sideChannel;
82
+ var step = 0;
83
+ var findFlag = false;
84
+ while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {
85
+ // Where object last appeared in the ref tree
86
+ var pos = tmpSc.get(object);
87
+ step += 1;
88
+ if (typeof pos !== 'undefined') {
89
+ if (pos === step) {
90
+ throw new RangeError('Cyclic object value');
91
+ } else {
92
+ findFlag = true; // Break while
93
+ }
94
+ }
95
+ if (typeof tmpSc.get(sentinel) === 'undefined') {
96
+ step = 0;
97
+ }
98
+ }
99
+
100
+ if (typeof filter === 'function') {
101
+ obj = filter(prefix, obj);
102
+ } else if (obj instanceof Date) {
103
+ obj = serializeDate(obj);
104
+ } else if (generateArrayPrefix === 'comma' && isArray(obj)) {
105
+ obj = utils.maybeMap(obj, function (value) {
106
+ if (value instanceof Date) {
107
+ return serializeDate(value);
108
+ }
109
+ return value;
110
+ });
111
+ }
112
+
113
+ if (obj === null) {
114
+ if (strictNullHandling) {
115
+ return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;
116
+ }
117
+
118
+ obj = '';
119
+ }
120
+
121
+ if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
122
+ if (encoder) {
123
+ var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);
124
+ if (generateArrayPrefix === 'comma' && encodeValuesOnly) {
125
+ var valuesArray = split.call(String(obj), ',');
126
+ var valuesJoined = '';
127
+ for (var i = 0; i < valuesArray.length; ++i) {
128
+ valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));
129
+ }
130
+ return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];
131
+ }
132
+ return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
133
+ }
134
+ return [formatter(prefix) + '=' + formatter(String(obj))];
135
+ }
136
+
137
+ var values = [];
138
+
139
+ if (typeof obj === 'undefined') {
140
+ return values;
141
+ }
142
+
143
+ var objKeys;
144
+ if (generateArrayPrefix === 'comma' && isArray(obj)) {
145
+ // we need to join elements in
146
+ objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
147
+ } else if (isArray(filter)) {
148
+ objKeys = filter;
149
+ } else {
150
+ var keys = Object.keys(obj);
151
+ objKeys = sort ? keys.sort(sort) : keys;
152
+ }
153
+
154
+ var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;
155
+
156
+ for (var j = 0; j < objKeys.length; ++j) {
157
+ var key = objKeys[j];
158
+ var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
159
+
160
+ if (skipNulls && value === null) {
161
+ continue;
162
+ }
163
+
164
+ var keyPrefix = isArray(obj)
165
+ ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix
166
+ : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');
167
+
168
+ sideChannel.set(object, step);
169
+ var valueSideChannel = getSideChannel();
170
+ valueSideChannel.set(sentinel, sideChannel);
171
+ pushToArray(values, stringify(
172
+ value,
173
+ keyPrefix,
174
+ generateArrayPrefix,
175
+ commaRoundTrip,
176
+ strictNullHandling,
177
+ skipNulls,
178
+ encoder,
179
+ filter,
180
+ sort,
181
+ allowDots,
182
+ serializeDate,
183
+ format,
184
+ formatter,
185
+ encodeValuesOnly,
186
+ charset,
187
+ valueSideChannel
188
+ ));
189
+ }
190
+
191
+ return values;
192
+ };
193
+
194
+ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
195
+ if (!opts) {
196
+ return defaults;
197
+ }
198
+
199
+ if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {
200
+ throw new TypeError('Encoder has to be a function.');
201
+ }
202
+
203
+ var charset = opts.charset || defaults.charset;
204
+ if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
205
+ throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
206
+ }
207
+
208
+ var format = formats['default'];
209
+ if (typeof opts.format !== 'undefined') {
210
+ if (!has.call(formats.formatters, opts.format)) {
211
+ throw new TypeError('Unknown format option provided.');
212
+ }
213
+ format = opts.format;
214
+ }
215
+ var formatter = formats.formatters[format];
216
+
217
+ var filter = defaults.filter;
218
+ if (typeof opts.filter === 'function' || isArray(opts.filter)) {
219
+ filter = opts.filter;
220
+ }
221
+
222
+ return {
223
+ addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
224
+ allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,
225
+ charset: charset,
226
+ charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
227
+ delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
228
+ encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
229
+ encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
230
+ encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
231
+ filter: filter,
232
+ format: format,
233
+ formatter: formatter,
234
+ serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
235
+ skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
236
+ sort: typeof opts.sort === 'function' ? opts.sort : null,
237
+ strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
238
+ };
239
+ };
240
+
241
+ module.exports = function (object, opts) {
242
+ var obj = object;
243
+ var options = normalizeStringifyOptions(opts);
244
+
245
+ var objKeys;
246
+ var filter;
247
+
248
+ if (typeof options.filter === 'function') {
249
+ filter = options.filter;
250
+ obj = filter('', obj);
251
+ } else if (isArray(options.filter)) {
252
+ filter = options.filter;
253
+ objKeys = filter;
254
+ }
255
+
256
+ var keys = [];
257
+
258
+ if (typeof obj !== 'object' || obj === null) {
259
+ return '';
260
+ }
261
+
262
+ var arrayFormat;
263
+ if (opts && opts.arrayFormat in arrayPrefixGenerators) {
264
+ arrayFormat = opts.arrayFormat;
265
+ } else if (opts && 'indices' in opts) {
266
+ arrayFormat = opts.indices ? 'indices' : 'repeat';
267
+ } else {
268
+ arrayFormat = 'indices';
269
+ }
270
+
271
+ var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];
272
+ if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
273
+ throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
274
+ }
275
+ var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;
276
+
277
+ if (!objKeys) {
278
+ objKeys = Object.keys(obj);
279
+ }
280
+
281
+ if (options.sort) {
282
+ objKeys.sort(options.sort);
283
+ }
284
+
285
+ var sideChannel = getSideChannel();
286
+ for (var i = 0; i < objKeys.length; ++i) {
287
+ var key = objKeys[i];
288
+
289
+ if (options.skipNulls && obj[key] === null) {
290
+ continue;
291
+ }
292
+ pushToArray(keys, stringify(
293
+ obj[key],
294
+ key,
295
+ generateArrayPrefix,
296
+ commaRoundTrip,
297
+ options.strictNullHandling,
298
+ options.skipNulls,
299
+ options.encode ? options.encoder : null,
300
+ options.filter,
301
+ options.sort,
302
+ options.allowDots,
303
+ options.serializeDate,
304
+ options.format,
305
+ options.formatter,
306
+ options.encodeValuesOnly,
307
+ options.charset,
308
+ sideChannel
309
+ ));
310
+ }
311
+
312
+ var joined = keys.join(options.delimiter);
313
+ var prefix = options.addQueryPrefix === true ? '?' : '';
314
+
315
+ if (options.charsetSentinel) {
316
+ if (options.charset === 'iso-8859-1') {
317
+ // encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
318
+ prefix += 'utf8=%26%2310003%3B&';
319
+ } else {
320
+ // encodeURIComponent('✓')
321
+ prefix += 'utf8=%E2%9C%93&';
322
+ }
323
+ }
324
+
325
+ return joined.length > 0 ? prefix + joined : '';
326
+ };