@st-gr/sail-proxy 0.9.2 → 0.9.4

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 (244) hide show
  1. package/bundled/gateway/node_modules/.package-lock.json +142 -93
  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/form-data/CHANGELOG.md +29 -2
  89. package/bundled/gateway/node_modules/form-data/README.md +4 -4
  90. package/bundled/gateway/node_modules/form-data/lib/form_data.js +14 -2
  91. package/bundled/gateway/node_modules/form-data/package.json +7 -7
  92. package/bundled/gateway/node_modules/http-errors/HISTORY.md +0 -6
  93. package/bundled/gateway/node_modules/http-errors/index.js +3 -4
  94. package/bundled/gateway/node_modules/http-errors/package.json +8 -12
  95. package/bundled/gateway/node_modules/raw-body/HISTORY.md +308 -0
  96. package/bundled/gateway/node_modules/raw-body/SECURITY.md +24 -0
  97. package/bundled/gateway/node_modules/raw-body/package.json +7 -5
  98. package/bundled/gateway/node_modules/semver/classes/range.js +17 -4
  99. package/bundled/gateway/node_modules/semver/package.json +2 -2
  100. package/bundled/gateway/node_modules/send/HISTORY.md +7 -19
  101. package/bundled/gateway/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
  102. package/bundled/gateway/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
  103. package/bundled/gateway/node_modules/send/node_modules/encodeurl/README.md +128 -0
  104. package/bundled/gateway/node_modules/send/node_modules/encodeurl/index.js +60 -0
  105. package/bundled/gateway/node_modules/send/node_modules/encodeurl/package.json +40 -0
  106. package/bundled/gateway/node_modules/send/package.json +6 -6
  107. package/bundled/gateway/node_modules/serve-static/HISTORY.md +0 -16
  108. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/HISTORY.md +14 -0
  109. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/LICENSE +22 -0
  110. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/README.md +128 -0
  111. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/index.js +60 -0
  112. package/bundled/gateway/node_modules/serve-static/node_modules/encodeurl/package.json +40 -0
  113. package/bundled/gateway/node_modules/serve-static/package.json +3 -3
  114. package/bundled/gateway/node_modules/side-channel/CHANGELOG.md +10 -0
  115. package/bundled/gateway/node_modules/side-channel/README.md +1 -1
  116. package/bundled/gateway/node_modules/side-channel/index.js +5 -2
  117. package/bundled/gateway/node_modules/side-channel/package.json +10 -10
  118. package/bundled/gateway/node_modules/side-channel/test/index.js +16 -0
  119. package/bundled/gateway/node_modules/statuses/HISTORY.md +0 -5
  120. package/bundled/gateway/node_modules/statuses/README.md +0 -3
  121. package/bundled/gateway/node_modules/statuses/package.json +7 -7
  122. package/bundled/gateway/package-lock.json +150 -101
  123. package/bundled/gateway/package.json +31 -5
  124. package/bundled/gateway/services/gateway/src/controllers/anthropicController.js +1 -1
  125. package/bundled/gateway/services/gateway/src/controllers/awsBedrockController.js +5 -1
  126. package/bundled/gateway/services/gateway/src/index.js +14 -0
  127. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/detectors/index.js +23 -1
  128. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/detectors/regexDetectors.js +149 -10
  129. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/entityToggles.d.ts +24 -0
  130. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/entityToggles.js +54 -0
  131. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/index.d.ts +2 -1
  132. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/index.js +441 -92
  133. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/replacementMap.d.ts +24 -0
  134. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/replacementMap.js +93 -4
  135. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/replacer.d.ts +22 -0
  136. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/replacer.js +77 -0
  137. package/bundled/gateway/services/gateway/src/plugins/pseudonymization/streamBuffer.js +26 -8
  138. package/bundled/gateway/services/gateway/src/services/awsBedrockService.js +118 -46
  139. package/bundled/gateway/services/gateway/src/services/betaFlagQuarantine.d.ts +18 -0
  140. package/bundled/gateway/services/gateway/src/services/betaFlagQuarantine.js +111 -0
  141. package/bundled/gateway/services/gateway/src/services/configService.d.ts +8 -0
  142. package/bundled/gateway/services/gateway/src/services/configService.js +61 -53
  143. package/bundled/gateway/services/gateway/src/utils/bedrockStreamParser.d.ts +9 -0
  144. package/bundled/gateway/services/gateway/src/utils/bedrockStreamParser.js +69 -3
  145. package/bundled/gateway/services/gateway/src/utils/betaFeatureFilter.d.ts +31 -0
  146. package/bundled/gateway/services/gateway/src/utils/betaFeatureFilter.js +58 -0
  147. package/bundled/gateway/services/gateway/src/utils/payloadLogger.d.ts +6 -0
  148. package/bundled/gateway/services/gateway/src/utils/payloadLogger.js +11 -7
  149. package/bundled/gateway/services/gateway/src/utils/pluginCacheSelector.d.ts +15 -0
  150. package/bundled/gateway/services/gateway/src/utils/pluginCacheSelector.js +24 -0
  151. package/bundled/gateway/services/gateway/src/utils/sseWriter.js +4 -2
  152. package/bundled/gateway/services/gateway/src/utils/upstreamErrorBody.d.ts +10 -0
  153. package/bundled/gateway/services/gateway/src/utils/upstreamErrorBody.js +71 -0
  154. package/bundled/ollama/node_modules/.package-lock.json +111 -92
  155. package/bundled/ollama/node_modules/axios/CHANGELOG.md +0 -42
  156. package/bundled/ollama/node_modules/axios/README.md +237 -237
  157. package/bundled/ollama/node_modules/axios/dist/axios.js +21 -113
  158. package/bundled/ollama/node_modules/axios/dist/axios.js.map +1 -0
  159. package/bundled/ollama/node_modules/axios/dist/axios.min.js +2 -2
  160. package/bundled/ollama/node_modules/axios/dist/axios.min.js.map +1 -1
  161. package/bundled/ollama/node_modules/axios/dist/browser/axios.cjs +15 -121
  162. package/bundled/ollama/node_modules/axios/dist/browser/axios.cjs.map +1 -0
  163. package/bundled/ollama/node_modules/axios/dist/esm/axios.js +15 -121
  164. package/bundled/ollama/node_modules/axios/dist/esm/axios.js.map +1 -0
  165. package/bundled/ollama/node_modules/axios/dist/esm/axios.min.js +2 -2
  166. package/bundled/ollama/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  167. package/bundled/ollama/node_modules/axios/dist/node/axios.cjs +107 -249
  168. package/bundled/ollama/node_modules/axios/dist/node/axios.cjs.map +1 -0
  169. package/bundled/ollama/node_modules/axios/index.d.cts +3 -8
  170. package/bundled/ollama/node_modules/axios/index.d.ts +1 -4
  171. package/bundled/ollama/node_modules/axios/lib/adapters/fetch.js +0 -79
  172. package/bundled/ollama/node_modules/axios/lib/adapters/http.js +118 -62
  173. package/bundled/ollama/node_modules/axios/lib/core/Axios.js +0 -1
  174. package/bundled/ollama/node_modules/axios/lib/core/AxiosHeaders.js +2 -2
  175. package/bundled/ollama/node_modules/axios/lib/defaults/transitional.js +0 -1
  176. package/bundled/ollama/node_modules/axios/lib/env/data.js +1 -1
  177. package/bundled/ollama/node_modules/axios/lib/helpers/buildURL.js +1 -1
  178. package/bundled/ollama/node_modules/axios/lib/helpers/formDataToStream.js +2 -2
  179. package/bundled/ollama/node_modules/axios/lib/helpers/resolveConfig.js +6 -12
  180. package/bundled/ollama/node_modules/axios/lib/helpers/toFormData.js +1 -1
  181. package/bundled/ollama/node_modules/axios/lib/utils.js +2 -23
  182. package/bundled/ollama/node_modules/axios/package.json +13 -29
  183. package/bundled/ollama/node_modules/body-parser/HISTORY.md +0 -14
  184. package/bundled/ollama/node_modules/body-parser/SECURITY.md +25 -0
  185. package/bundled/ollama/node_modules/body-parser/lib/types/json.js +5 -1
  186. package/bundled/ollama/node_modules/body-parser/lib/types/urlencoded.js +15 -7
  187. package/bundled/ollama/node_modules/body-parser/package.json +10 -9
  188. package/bundled/ollama/node_modules/cookie/index.js +35 -24
  189. package/bundled/ollama/node_modules/cookie/package.json +1 -1
  190. package/bundled/ollama/node_modules/cookie-signature/History.md +1 -5
  191. package/bundled/ollama/node_modules/cookie-signature/index.js +6 -6
  192. package/bundled/ollama/node_modules/cookie-signature/package.json +2 -2
  193. package/bundled/ollama/node_modules/express/History.md +0 -43
  194. package/bundled/ollama/node_modules/express/lib/response.js +0 -1
  195. package/bundled/ollama/node_modules/express/lib/utils.js +1 -2
  196. package/bundled/ollama/node_modules/express/package.json +17 -21
  197. package/bundled/ollama/node_modules/finalhandler/HISTORY.md +0 -21
  198. package/bundled/ollama/node_modules/finalhandler/README.md +2 -2
  199. package/bundled/ollama/node_modules/finalhandler/index.js +2 -7
  200. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/HISTORY.md +14 -0
  201. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/LICENSE +22 -0
  202. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/README.md +128 -0
  203. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/index.js +60 -0
  204. package/bundled/ollama/node_modules/finalhandler/node_modules/encodeurl/package.json +40 -0
  205. package/bundled/ollama/node_modules/finalhandler/package.json +9 -10
  206. package/bundled/ollama/node_modules/form-data/CHANGELOG.md +29 -2
  207. package/bundled/ollama/node_modules/form-data/README.md +4 -4
  208. package/bundled/ollama/node_modules/form-data/lib/form_data.js +14 -2
  209. package/bundled/ollama/node_modules/form-data/package.json +7 -7
  210. package/bundled/ollama/node_modules/http-errors/HISTORY.md +0 -6
  211. package/bundled/ollama/node_modules/http-errors/index.js +3 -4
  212. package/bundled/ollama/node_modules/http-errors/package.json +8 -12
  213. package/bundled/ollama/node_modules/raw-body/HISTORY.md +308 -0
  214. package/bundled/ollama/node_modules/raw-body/SECURITY.md +24 -0
  215. package/bundled/ollama/node_modules/raw-body/package.json +7 -5
  216. package/bundled/ollama/node_modules/send/HISTORY.md +7 -19
  217. package/bundled/ollama/node_modules/send/node_modules/encodeurl/HISTORY.md +14 -0
  218. package/bundled/ollama/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
  219. package/bundled/ollama/node_modules/send/node_modules/encodeurl/README.md +128 -0
  220. package/bundled/ollama/node_modules/send/node_modules/encodeurl/index.js +60 -0
  221. package/bundled/ollama/node_modules/send/node_modules/encodeurl/package.json +40 -0
  222. package/bundled/ollama/node_modules/send/package.json +6 -6
  223. package/bundled/ollama/node_modules/serve-static/HISTORY.md +0 -16
  224. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/HISTORY.md +14 -0
  225. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/LICENSE +22 -0
  226. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/README.md +128 -0
  227. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/index.js +60 -0
  228. package/bundled/ollama/node_modules/serve-static/node_modules/encodeurl/package.json +40 -0
  229. package/bundled/ollama/node_modules/serve-static/package.json +3 -3
  230. package/bundled/ollama/node_modules/side-channel/CHANGELOG.md +10 -0
  231. package/bundled/ollama/node_modules/side-channel/README.md +1 -1
  232. package/bundled/ollama/node_modules/side-channel/index.js +5 -2
  233. package/bundled/ollama/node_modules/side-channel/package.json +10 -10
  234. package/bundled/ollama/node_modules/side-channel/test/index.js +16 -0
  235. package/bundled/ollama/node_modules/statuses/HISTORY.md +0 -5
  236. package/bundled/ollama/node_modules/statuses/README.md +0 -3
  237. package/bundled/ollama/node_modules/statuses/package.json +7 -7
  238. package/bundled/ollama/package-lock.json +114 -95
  239. package/bundled/ollama/package.json +32 -4
  240. package/dist/templates/api_config.template.json +266 -18
  241. package/node_modules/@sap-llm-gateway/service-key-parser/package.json +1 -1
  242. package/package.json +2 -2
  243. package/bundled/gateway/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
  244. package/bundled/ollama/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
@@ -0,0 +1,351 @@
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 push = Array.prototype.push;
23
+ var pushToArray = function (arr, valueOrArray) {
24
+ push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);
25
+ };
26
+
27
+ var toISO = Date.prototype.toISOString;
28
+
29
+ var defaultFormat = formats['default'];
30
+ var defaults = {
31
+ addQueryPrefix: false,
32
+ allowDots: false,
33
+ allowEmptyArrays: false,
34
+ arrayFormat: 'indices',
35
+ charset: 'utf-8',
36
+ charsetSentinel: false,
37
+ delimiter: '&',
38
+ encode: true,
39
+ encodeDotInKeys: false,
40
+ encoder: utils.encode,
41
+ encodeValuesOnly: false,
42
+ format: defaultFormat,
43
+ formatter: formats.formatters[defaultFormat],
44
+ // deprecated
45
+ indices: false,
46
+ serializeDate: function serializeDate(date) {
47
+ return toISO.call(date);
48
+ },
49
+ skipNulls: false,
50
+ strictNullHandling: false
51
+ };
52
+
53
+ var isNonNullishPrimitive = function isNonNullishPrimitive(v) {
54
+ return typeof v === 'string'
55
+ || typeof v === 'number'
56
+ || typeof v === 'boolean'
57
+ || typeof v === 'symbol'
58
+ || typeof v === 'bigint';
59
+ };
60
+
61
+ var sentinel = {};
62
+
63
+ var stringify = function stringify(
64
+ object,
65
+ prefix,
66
+ generateArrayPrefix,
67
+ commaRoundTrip,
68
+ allowEmptyArrays,
69
+ strictNullHandling,
70
+ skipNulls,
71
+ encodeDotInKeys,
72
+ encoder,
73
+ filter,
74
+ sort,
75
+ allowDots,
76
+ serializeDate,
77
+ format,
78
+ formatter,
79
+ encodeValuesOnly,
80
+ charset,
81
+ sideChannel
82
+ ) {
83
+ var obj = object;
84
+
85
+ var tmpSc = sideChannel;
86
+ var step = 0;
87
+ var findFlag = false;
88
+ while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {
89
+ // Where object last appeared in the ref tree
90
+ var pos = tmpSc.get(object);
91
+ step += 1;
92
+ if (typeof pos !== 'undefined') {
93
+ if (pos === step) {
94
+ throw new RangeError('Cyclic object value');
95
+ } else {
96
+ findFlag = true; // Break while
97
+ }
98
+ }
99
+ if (typeof tmpSc.get(sentinel) === 'undefined') {
100
+ step = 0;
101
+ }
102
+ }
103
+
104
+ if (typeof filter === 'function') {
105
+ obj = filter(prefix, obj);
106
+ } else if (obj instanceof Date) {
107
+ obj = serializeDate(obj);
108
+ } else if (generateArrayPrefix === 'comma' && isArray(obj)) {
109
+ obj = utils.maybeMap(obj, function (value) {
110
+ if (value instanceof Date) {
111
+ return serializeDate(value);
112
+ }
113
+ return value;
114
+ });
115
+ }
116
+
117
+ if (obj === null) {
118
+ if (strictNullHandling) {
119
+ return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;
120
+ }
121
+
122
+ obj = '';
123
+ }
124
+
125
+ if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {
126
+ if (encoder) {
127
+ var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);
128
+ return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];
129
+ }
130
+ return [formatter(prefix) + '=' + formatter(String(obj))];
131
+ }
132
+
133
+ var values = [];
134
+
135
+ if (typeof obj === 'undefined') {
136
+ return values;
137
+ }
138
+
139
+ var objKeys;
140
+ if (generateArrayPrefix === 'comma' && isArray(obj)) {
141
+ // we need to join elements in
142
+ if (encodeValuesOnly && encoder) {
143
+ obj = utils.maybeMap(obj, encoder);
144
+ }
145
+ objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];
146
+ } else if (isArray(filter)) {
147
+ objKeys = filter;
148
+ } else {
149
+ var keys = Object.keys(obj);
150
+ objKeys = sort ? keys.sort(sort) : keys;
151
+ }
152
+
153
+ var encodedPrefix = encodeDotInKeys ? prefix.replace(/\./g, '%2E') : prefix;
154
+
155
+ var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;
156
+
157
+ if (allowEmptyArrays && isArray(obj) && obj.length === 0) {
158
+ return adjustedPrefix + '[]';
159
+ }
160
+
161
+ for (var j = 0; j < objKeys.length; ++j) {
162
+ var key = objKeys[j];
163
+ var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];
164
+
165
+ if (skipNulls && value === null) {
166
+ continue;
167
+ }
168
+
169
+ var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\./g, '%2E') : key;
170
+ var keyPrefix = isArray(obj)
171
+ ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix
172
+ : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');
173
+
174
+ sideChannel.set(object, step);
175
+ var valueSideChannel = getSideChannel();
176
+ valueSideChannel.set(sentinel, sideChannel);
177
+ pushToArray(values, stringify(
178
+ value,
179
+ keyPrefix,
180
+ generateArrayPrefix,
181
+ commaRoundTrip,
182
+ allowEmptyArrays,
183
+ strictNullHandling,
184
+ skipNulls,
185
+ encodeDotInKeys,
186
+ generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,
187
+ filter,
188
+ sort,
189
+ allowDots,
190
+ serializeDate,
191
+ format,
192
+ formatter,
193
+ encodeValuesOnly,
194
+ charset,
195
+ valueSideChannel
196
+ ));
197
+ }
198
+
199
+ return values;
200
+ };
201
+
202
+ var normalizeStringifyOptions = function normalizeStringifyOptions(opts) {
203
+ if (!opts) {
204
+ return defaults;
205
+ }
206
+
207
+ if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {
208
+ throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');
209
+ }
210
+
211
+ if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {
212
+ throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');
213
+ }
214
+
215
+ if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {
216
+ throw new TypeError('Encoder has to be a function.');
217
+ }
218
+
219
+ var charset = opts.charset || defaults.charset;
220
+ if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {
221
+ throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');
222
+ }
223
+
224
+ var format = formats['default'];
225
+ if (typeof opts.format !== 'undefined') {
226
+ if (!has.call(formats.formatters, opts.format)) {
227
+ throw new TypeError('Unknown format option provided.');
228
+ }
229
+ format = opts.format;
230
+ }
231
+ var formatter = formats.formatters[format];
232
+
233
+ var filter = defaults.filter;
234
+ if (typeof opts.filter === 'function' || isArray(opts.filter)) {
235
+ filter = opts.filter;
236
+ }
237
+
238
+ var arrayFormat;
239
+ if (opts.arrayFormat in arrayPrefixGenerators) {
240
+ arrayFormat = opts.arrayFormat;
241
+ } else if ('indices' in opts) {
242
+ arrayFormat = opts.indices ? 'indices' : 'repeat';
243
+ } else {
244
+ arrayFormat = defaults.arrayFormat;
245
+ }
246
+
247
+ if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {
248
+ throw new TypeError('`commaRoundTrip` must be a boolean, or absent');
249
+ }
250
+
251
+ var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;
252
+
253
+ return {
254
+ addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,
255
+ allowDots: allowDots,
256
+ allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,
257
+ arrayFormat: arrayFormat,
258
+ charset: charset,
259
+ charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,
260
+ commaRoundTrip: opts.commaRoundTrip,
261
+ delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,
262
+ encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,
263
+ encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,
264
+ encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,
265
+ encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,
266
+ filter: filter,
267
+ format: format,
268
+ formatter: formatter,
269
+ serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,
270
+ skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,
271
+ sort: typeof opts.sort === 'function' ? opts.sort : null,
272
+ strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling
273
+ };
274
+ };
275
+
276
+ module.exports = function (object, opts) {
277
+ var obj = object;
278
+ var options = normalizeStringifyOptions(opts);
279
+
280
+ var objKeys;
281
+ var filter;
282
+
283
+ if (typeof options.filter === 'function') {
284
+ filter = options.filter;
285
+ obj = filter('', obj);
286
+ } else if (isArray(options.filter)) {
287
+ filter = options.filter;
288
+ objKeys = filter;
289
+ }
290
+
291
+ var keys = [];
292
+
293
+ if (typeof obj !== 'object' || obj === null) {
294
+ return '';
295
+ }
296
+
297
+ var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];
298
+ var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;
299
+
300
+ if (!objKeys) {
301
+ objKeys = Object.keys(obj);
302
+ }
303
+
304
+ if (options.sort) {
305
+ objKeys.sort(options.sort);
306
+ }
307
+
308
+ var sideChannel = getSideChannel();
309
+ for (var i = 0; i < objKeys.length; ++i) {
310
+ var key = objKeys[i];
311
+
312
+ if (options.skipNulls && obj[key] === null) {
313
+ continue;
314
+ }
315
+ pushToArray(keys, stringify(
316
+ obj[key],
317
+ key,
318
+ generateArrayPrefix,
319
+ commaRoundTrip,
320
+ options.allowEmptyArrays,
321
+ options.strictNullHandling,
322
+ options.skipNulls,
323
+ options.encodeDotInKeys,
324
+ options.encode ? options.encoder : null,
325
+ options.filter,
326
+ options.sort,
327
+ options.allowDots,
328
+ options.serializeDate,
329
+ options.format,
330
+ options.formatter,
331
+ options.encodeValuesOnly,
332
+ options.charset,
333
+ sideChannel
334
+ ));
335
+ }
336
+
337
+ var joined = keys.join(options.delimiter);
338
+ var prefix = options.addQueryPrefix === true ? '?' : '';
339
+
340
+ if (options.charsetSentinel) {
341
+ if (options.charset === 'iso-8859-1') {
342
+ // encodeURIComponent('&#10003;'), the "numeric entity" representation of a checkmark
343
+ prefix += 'utf8=%26%2310003%3B&';
344
+ } else {
345
+ // encodeURIComponent('✓')
346
+ prefix += 'utf8=%E2%9C%93&';
347
+ }
348
+ }
349
+
350
+ return joined.length > 0 ? prefix + joined : '';
351
+ };
@@ -0,0 +1,265 @@
1
+ 'use strict';
2
+
3
+ var formats = require('./formats');
4
+
5
+ var has = Object.prototype.hasOwnProperty;
6
+ var isArray = Array.isArray;
7
+
8
+ var hexTable = (function () {
9
+ var array = [];
10
+ for (var i = 0; i < 256; ++i) {
11
+ array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
12
+ }
13
+
14
+ return array;
15
+ }());
16
+
17
+ var compactQueue = function compactQueue(queue) {
18
+ while (queue.length > 1) {
19
+ var item = queue.pop();
20
+ var obj = item.obj[item.prop];
21
+
22
+ if (isArray(obj)) {
23
+ var compacted = [];
24
+
25
+ for (var j = 0; j < obj.length; ++j) {
26
+ if (typeof obj[j] !== 'undefined') {
27
+ compacted.push(obj[j]);
28
+ }
29
+ }
30
+
31
+ item.obj[item.prop] = compacted;
32
+ }
33
+ }
34
+ };
35
+
36
+ var arrayToObject = function arrayToObject(source, options) {
37
+ var obj = options && options.plainObjects ? Object.create(null) : {};
38
+ for (var i = 0; i < source.length; ++i) {
39
+ if (typeof source[i] !== 'undefined') {
40
+ obj[i] = source[i];
41
+ }
42
+ }
43
+
44
+ return obj;
45
+ };
46
+
47
+ var merge = function merge(target, source, options) {
48
+ /* eslint no-param-reassign: 0 */
49
+ if (!source) {
50
+ return target;
51
+ }
52
+
53
+ if (typeof source !== 'object') {
54
+ if (isArray(target)) {
55
+ target.push(source);
56
+ } else if (target && typeof target === 'object') {
57
+ if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {
58
+ target[source] = true;
59
+ }
60
+ } else {
61
+ return [target, source];
62
+ }
63
+
64
+ return target;
65
+ }
66
+
67
+ if (!target || typeof target !== 'object') {
68
+ return [target].concat(source);
69
+ }
70
+
71
+ var mergeTarget = target;
72
+ if (isArray(target) && !isArray(source)) {
73
+ mergeTarget = arrayToObject(target, options);
74
+ }
75
+
76
+ if (isArray(target) && isArray(source)) {
77
+ source.forEach(function (item, i) {
78
+ if (has.call(target, i)) {
79
+ var targetItem = target[i];
80
+ if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {
81
+ target[i] = merge(targetItem, item, options);
82
+ } else {
83
+ target.push(item);
84
+ }
85
+ } else {
86
+ target[i] = item;
87
+ }
88
+ });
89
+ return target;
90
+ }
91
+
92
+ return Object.keys(source).reduce(function (acc, key) {
93
+ var value = source[key];
94
+
95
+ if (has.call(acc, key)) {
96
+ acc[key] = merge(acc[key], value, options);
97
+ } else {
98
+ acc[key] = value;
99
+ }
100
+ return acc;
101
+ }, mergeTarget);
102
+ };
103
+
104
+ var assign = function assignSingleSource(target, source) {
105
+ return Object.keys(source).reduce(function (acc, key) {
106
+ acc[key] = source[key];
107
+ return acc;
108
+ }, target);
109
+ };
110
+
111
+ var decode = function (str, decoder, charset) {
112
+ var strWithoutPlus = str.replace(/\+/g, ' ');
113
+ if (charset === 'iso-8859-1') {
114
+ // unescape never throws, no try...catch needed:
115
+ return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);
116
+ }
117
+ // utf-8
118
+ try {
119
+ return decodeURIComponent(strWithoutPlus);
120
+ } catch (e) {
121
+ return strWithoutPlus;
122
+ }
123
+ };
124
+
125
+ var limit = 1024;
126
+
127
+ /* eslint operator-linebreak: [2, "before"] */
128
+
129
+ var encode = function encode(str, defaultEncoder, charset, kind, format) {
130
+ // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
131
+ // It has been adapted here for stricter adherence to RFC 3986
132
+ if (str.length === 0) {
133
+ return str;
134
+ }
135
+
136
+ var string = str;
137
+ if (typeof str === 'symbol') {
138
+ string = Symbol.prototype.toString.call(str);
139
+ } else if (typeof str !== 'string') {
140
+ string = String(str);
141
+ }
142
+
143
+ if (charset === 'iso-8859-1') {
144
+ return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {
145
+ return '%26%23' + parseInt($0.slice(2), 16) + '%3B';
146
+ });
147
+ }
148
+
149
+ var out = '';
150
+ for (var j = 0; j < string.length; j += limit) {
151
+ var segment = string.length >= limit ? string.slice(j, j + limit) : string;
152
+ var arr = [];
153
+
154
+ for (var i = 0; i < segment.length; ++i) {
155
+ var c = segment.charCodeAt(i);
156
+ if (
157
+ c === 0x2D // -
158
+ || c === 0x2E // .
159
+ || c === 0x5F // _
160
+ || c === 0x7E // ~
161
+ || (c >= 0x30 && c <= 0x39) // 0-9
162
+ || (c >= 0x41 && c <= 0x5A) // a-z
163
+ || (c >= 0x61 && c <= 0x7A) // A-Z
164
+ || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )
165
+ ) {
166
+ arr[arr.length] = segment.charAt(i);
167
+ continue;
168
+ }
169
+
170
+ if (c < 0x80) {
171
+ arr[arr.length] = hexTable[c];
172
+ continue;
173
+ }
174
+
175
+ if (c < 0x800) {
176
+ arr[arr.length] = hexTable[0xC0 | (c >> 6)]
177
+ + hexTable[0x80 | (c & 0x3F)];
178
+ continue;
179
+ }
180
+
181
+ if (c < 0xD800 || c >= 0xE000) {
182
+ arr[arr.length] = hexTable[0xE0 | (c >> 12)]
183
+ + hexTable[0x80 | ((c >> 6) & 0x3F)]
184
+ + hexTable[0x80 | (c & 0x3F)];
185
+ continue;
186
+ }
187
+
188
+ i += 1;
189
+ c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));
190
+
191
+ arr[arr.length] = hexTable[0xF0 | (c >> 18)]
192
+ + hexTable[0x80 | ((c >> 12) & 0x3F)]
193
+ + hexTable[0x80 | ((c >> 6) & 0x3F)]
194
+ + hexTable[0x80 | (c & 0x3F)];
195
+ }
196
+
197
+ out += arr.join('');
198
+ }
199
+
200
+ return out;
201
+ };
202
+
203
+ var compact = function compact(value) {
204
+ var queue = [{ obj: { o: value }, prop: 'o' }];
205
+ var refs = [];
206
+
207
+ for (var i = 0; i < queue.length; ++i) {
208
+ var item = queue[i];
209
+ var obj = item.obj[item.prop];
210
+
211
+ var keys = Object.keys(obj);
212
+ for (var j = 0; j < keys.length; ++j) {
213
+ var key = keys[j];
214
+ var val = obj[key];
215
+ if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {
216
+ queue.push({ obj: obj, prop: key });
217
+ refs.push(val);
218
+ }
219
+ }
220
+ }
221
+
222
+ compactQueue(queue);
223
+
224
+ return value;
225
+ };
226
+
227
+ var isRegExp = function isRegExp(obj) {
228
+ return Object.prototype.toString.call(obj) === '[object RegExp]';
229
+ };
230
+
231
+ var isBuffer = function isBuffer(obj) {
232
+ if (!obj || typeof obj !== 'object') {
233
+ return false;
234
+ }
235
+
236
+ return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));
237
+ };
238
+
239
+ var combine = function combine(a, b) {
240
+ return [].concat(a, b);
241
+ };
242
+
243
+ var maybeMap = function maybeMap(val, fn) {
244
+ if (isArray(val)) {
245
+ var mapped = [];
246
+ for (var i = 0; i < val.length; i += 1) {
247
+ mapped.push(fn(val[i]));
248
+ }
249
+ return mapped;
250
+ }
251
+ return fn(val);
252
+ };
253
+
254
+ module.exports = {
255
+ arrayToObject: arrayToObject,
256
+ assign: assign,
257
+ combine: combine,
258
+ compact: compact,
259
+ decode: decode,
260
+ encode: encode,
261
+ isBuffer: isBuffer,
262
+ isRegExp: isRegExp,
263
+ maybeMap: maybeMap,
264
+ merge: merge
265
+ };
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "qs",
3
+ "description": "A querystring parser that supports nesting and arrays, with a depth limit",
4
+ "homepage": "https://github.com/ljharb/qs",
5
+ "version": "6.13.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/ljharb/qs.git"
9
+ },
10
+ "funding": {
11
+ "url": "https://github.com/sponsors/ljharb"
12
+ },
13
+ "main": "lib/index.js",
14
+ "sideEffects": false,
15
+ "contributors": [
16
+ {
17
+ "name": "Jordan Harband",
18
+ "email": "ljharb@gmail.com",
19
+ "url": "http://ljharb.codes"
20
+ }
21
+ ],
22
+ "keywords": [
23
+ "querystring",
24
+ "qs",
25
+ "query",
26
+ "url",
27
+ "parse",
28
+ "stringify"
29
+ ],
30
+ "engines": {
31
+ "node": ">=0.6"
32
+ },
33
+ "dependencies": {
34
+ "side-channel": "^1.0.6"
35
+ },
36
+ "devDependencies": {
37
+ "@browserify/envify": "^6.0.0",
38
+ "@browserify/uglifyify": "^6.0.0",
39
+ "@ljharb/eslint-config": "^21.1.1",
40
+ "browserify": "^16.5.2",
41
+ "bundle-collapser": "^1.4.0",
42
+ "common-shakeify": "~1.0.0",
43
+ "eclint": "^2.8.1",
44
+ "es-value-fixtures": "^1.4.2",
45
+ "eslint": "=8.8.0",
46
+ "evalmd": "^0.0.19",
47
+ "for-each": "^0.3.3",
48
+ "glob": "=10.3.7",
49
+ "has-override-mistake": "^1.0.1",
50
+ "has-property-descriptors": "^1.0.2",
51
+ "has-symbols": "^1.0.3",
52
+ "iconv-lite": "^0.5.1",
53
+ "in-publish": "^2.0.1",
54
+ "jackspeak": "=2.1.1",
55
+ "mkdirp": "^0.5.5",
56
+ "mock-property": "^1.0.3",
57
+ "module-deps": "^6.2.3",
58
+ "npmignore": "^0.3.1",
59
+ "nyc": "^10.3.2",
60
+ "object-inspect": "^1.13.2",
61
+ "qs-iconv": "^1.0.4",
62
+ "safe-publish-latest": "^2.0.0",
63
+ "safer-buffer": "^2.1.2",
64
+ "tape": "^5.8.1",
65
+ "unassertify": "^3.0.1"
66
+ },
67
+ "scripts": {
68
+ "prepack": "npmignore --auto --commentLines=autogenerated && npm run dist",
69
+ "prepublishOnly": "safe-publish-latest",
70
+ "prepublish": "not-in-publish || npm run prepublishOnly",
71
+ "pretest": "npm run --silent readme && npm run --silent lint",
72
+ "test": "npm run tests-only",
73
+ "tests-only": "nyc tape 'test/**/*.js'",
74
+ "posttest": "npx npm@'>=10.2' audit --production",
75
+ "readme": "evalmd README.md",
76
+ "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)",
77
+ "lint": "eslint --ext=js,mjs .",
78
+ "dist": "mkdirp dist && browserify --standalone Qs -g unassertify -g @browserify/envify -g [@browserify/uglifyify --mangle.keep_fnames --compress.keep_fnames --format.indent_level=1 --compress.arrows=false --compress.passes=4 --compress.typeofs=false] -p common-shakeify -p bundle-collapser/plugin lib/index.js > dist/qs.js"
79
+ },
80
+ "license": "BSD-3-Clause",
81
+ "publishConfig": {
82
+ "ignore": [
83
+ "!dist/*",
84
+ "bower.json",
85
+ "component.json",
86
+ ".github/workflows",
87
+ "logos",
88
+ "tea.yaml"
89
+ ]
90
+ }
91
+ }