@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
@@ -6,11 +6,11 @@ The API of this library is inspired by the [XMLHttpRequest-2 FormData Interface]
6
6
 
7
7
  [xhr2-fd]: http://dev.w3.org/2006/webapi/XMLHttpRequest-2/Overview.html#the-formdata-interface
8
8
 
9
- [![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data)
10
- [![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data)
11
- [![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.5.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data)
9
+ [![Linux Build](https://img.shields.io/travis/form-data/form-data/v4.0.6.svg?label=linux:6.x-12.x)](https://travis-ci.org/form-data/form-data)
10
+ [![MacOS Build](https://img.shields.io/travis/form-data/form-data/v4.0.6.svg?label=macos:6.x-12.x)](https://travis-ci.org/form-data/form-data)
11
+ [![Windows Build](https://img.shields.io/travis/form-data/form-data/v4.0.6.svg?label=windows:6.x-12.x)](https://travis-ci.org/form-data/form-data)
12
12
 
13
- [![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.5.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master)
13
+ [![Coverage Status](https://img.shields.io/coveralls/form-data/form-data/v4.0.6.svg?label=code+coverage)](https://coveralls.io/github/form-data/form-data?branch=master)
14
14
  [![Dependency Status](https://img.shields.io/david/form-data/form-data.svg)](https://david-dm.org/form-data/form-data)
15
15
 
16
16
  ## Install
@@ -15,6 +15,18 @@ var setToStringTag = require('es-set-tostringtag');
15
15
  var hasOwn = require('hasown');
16
16
  var populate = require('./populate.js');
17
17
 
18
+ /**
19
+ * Escape CR, LF, and `"` in a multipart `name`/`filename` parameter, so a field
20
+ * name or filename can not break out of its header line to inject headers or
21
+ * smuggle additional parts. Matches the WHATWG HTML multipart/form-data encoding.
22
+ *
23
+ * @param {string} str - the parameter value to escape
24
+ * @returns {string} the escaped value
25
+ */
26
+ function escapeHeaderParam(str) {
27
+ return String(str).replace(/\r/g, '%0D').replace(/\n/g, '%0A').replace(/"/g, '%22');
28
+ }
29
+
18
30
  /**
19
31
  * Create readable "multipart/form-data" streams.
20
32
  * Can be used to submit forms
@@ -180,7 +192,7 @@ FormData.prototype._multiPartHeader = function (field, value, options) {
180
192
  var contents = '';
181
193
  var headers = {
182
194
  // add custom disposition as third element or keep it two elements if not
183
- 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []),
195
+ 'Content-Disposition': ['form-data', 'name="' + escapeHeaderParam(field) + '"'].concat(contentDisposition || []),
184
196
  // if no content type. allow it to be empty array
185
197
  'Content-Type': [].concat(contentType || [])
186
198
  };
@@ -234,7 +246,7 @@ FormData.prototype._getContentDisposition = function (value, options) { // eslin
234
246
  }
235
247
 
236
248
  if (filename) {
237
- return 'filename="' + filename + '"';
249
+ return 'filename="' + escapeHeaderParam(filename) + '"';
238
250
  }
239
251
  };
240
252
 
@@ -2,7 +2,7 @@
2
2
  "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)",
3
3
  "name": "form-data",
4
4
  "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.",
5
- "version": "4.0.5",
5
+ "version": "4.0.6",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git://github.com/form-data/form-data.git"
@@ -43,12 +43,12 @@
43
43
  "asynckit": "^0.4.0",
44
44
  "combined-stream": "^1.0.8",
45
45
  "es-set-tostringtag": "^2.1.0",
46
- "hasown": "^2.0.2",
47
- "mime-types": "^2.1.12"
46
+ "hasown": "^2.0.4",
47
+ "mime-types": "^2.1.35"
48
48
  },
49
49
  "devDependencies": {
50
- "@ljharb/eslint-config": "^21.4.0",
51
- "auto-changelog": "^2.5.0",
50
+ "@ljharb/eslint-config": "^22.2.3",
51
+ "auto-changelog": "^2.6.0",
52
52
  "browserify": "^13.3.0",
53
53
  "browserify-istanbul": "^2.0.0",
54
54
  "coveralls": "^3.1.1",
@@ -60,7 +60,7 @@
60
60
  "in-publish": "^2.0.1",
61
61
  "is-node-modern": "^1.0.0",
62
62
  "istanbul": "^0.4.5",
63
- "js-randomness-predictor": "^1.5.5",
63
+ "js-randomness-predictor": "^3.6.0",
64
64
  "obake": "^0.1.2",
65
65
  "pkgfiles": "^2.3.2",
66
66
  "pre-commit": "^1.2.2",
@@ -68,7 +68,7 @@
68
68
  "request": "~2.87.0",
69
69
  "rimraf": "^2.7.1",
70
70
  "semver": "^6.3.1",
71
- "tape": "^5.9.0"
71
+ "tape": "^5.10.1"
72
72
  },
73
73
  "license": "MIT",
74
74
  "auto-changelog": {
@@ -1,9 +1,3 @@
1
- 2.0.1 / 2025-11-20
2
- ==================
3
-
4
- * deps: use tilde notation for dependencies
5
- * deps: update statuses to 2.0.2
6
-
7
1
  2.0.0 / 2021-12-17
8
2
  ==================
9
3
 
@@ -279,12 +279,11 @@ function populateConstructorExports (exports, codes, HttpError) {
279
279
 
280
280
  /**
281
281
  * Get a class name from a name identifier.
282
- *
283
- * @param {string} name
284
- * @returns {string}
285
282
  * @private
286
283
  */
287
284
 
288
285
  function toClassName (name) {
289
- return name.slice(-5) === 'Error' ? name : name + 'Error'
286
+ return name.substr(-5) !== 'Error'
287
+ ? name + 'Error'
288
+ : name
290
289
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "http-errors",
3
3
  "description": "Create HTTP error objects",
4
- "version": "2.0.1",
4
+ "version": "2.0.0",
5
5
  "author": "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
6
6
  "contributors": [
7
7
  "Alan Plum <me@pluma.io>",
@@ -9,21 +9,17 @@
9
9
  ],
10
10
  "license": "MIT",
11
11
  "repository": "jshttp/http-errors",
12
- "funding": {
13
- "type": "opencollective",
14
- "url": "https://opencollective.com/express"
15
- },
16
12
  "dependencies": {
17
- "depd": "~2.0.0",
18
- "inherits": "~2.0.4",
19
- "setprototypeof": "~1.2.0",
20
- "statuses": "~2.0.2",
21
- "toidentifier": "~1.0.1"
13
+ "depd": "2.0.0",
14
+ "inherits": "2.0.4",
15
+ "setprototypeof": "1.2.0",
16
+ "statuses": "2.0.1",
17
+ "toidentifier": "1.0.1"
22
18
  },
23
19
  "devDependencies": {
24
20
  "eslint": "7.32.0",
25
21
  "eslint-config-standard": "14.1.1",
26
- "eslint-plugin-import": "2.32.0",
22
+ "eslint-plugin-import": "2.25.3",
27
23
  "eslint-plugin-markdown": "2.2.1",
28
24
  "eslint-plugin-node": "11.1.0",
29
25
  "eslint-plugin-promise": "5.2.0",
@@ -36,7 +32,7 @@
36
32
  },
37
33
  "scripts": {
38
34
  "lint": "eslint . && node ./scripts/lint-readme-list.js",
39
- "test": "mocha --reporter spec",
35
+ "test": "mocha --reporter spec --bail",
40
36
  "test-ci": "nyc --reporter=lcov --reporter=text npm test",
41
37
  "test-cov": "nyc --reporter=html --reporter=text npm test",
42
38
  "version": "node scripts/version-history.js && git add HISTORY.md"
@@ -0,0 +1,308 @@
1
+ 2.5.2 / 2023-02-21
2
+ ==================
3
+
4
+ * Fix error message for non-stream argument
5
+
6
+ 2.5.1 / 2022-02-28
7
+ ==================
8
+
9
+ * Fix error on early async hooks implementations
10
+
11
+ 2.5.0 / 2022-02-21
12
+ ==================
13
+
14
+ * Prevent loss of async hooks context
15
+ * Prevent hanging when stream is not readable
16
+ * deps: http-errors@2.0.0
17
+ - deps: depd@2.0.0
18
+ - deps: statuses@2.0.1
19
+
20
+ 2.4.3 / 2022-02-14
21
+ ==================
22
+
23
+ * deps: bytes@3.1.2
24
+
25
+ 2.4.2 / 2021-11-16
26
+ ==================
27
+
28
+ * deps: bytes@3.1.1
29
+ * deps: http-errors@1.8.1
30
+ - deps: setprototypeof@1.2.0
31
+ - deps: toidentifier@1.0.1
32
+
33
+ 2.4.1 / 2019-06-25
34
+ ==================
35
+
36
+ * deps: http-errors@1.7.3
37
+ - deps: inherits@2.0.4
38
+
39
+ 2.4.0 / 2019-04-17
40
+ ==================
41
+
42
+ * deps: bytes@3.1.0
43
+ - Add petabyte (`pb`) support
44
+ * deps: http-errors@1.7.2
45
+ - Set constructor name when possible
46
+ - deps: setprototypeof@1.1.1
47
+ - deps: statuses@'>= 1.5.0 < 2'
48
+ * deps: iconv-lite@0.4.24
49
+ - Added encoding MIK
50
+
51
+ 2.3.3 / 2018-05-08
52
+ ==================
53
+
54
+ * deps: http-errors@1.6.3
55
+ - deps: depd@~1.1.2
56
+ - deps: setprototypeof@1.1.0
57
+ - deps: statuses@'>= 1.3.1 < 2'
58
+ * deps: iconv-lite@0.4.23
59
+ - Fix loading encoding with year appended
60
+ - Fix deprecation warnings on Node.js 10+
61
+
62
+ 2.3.2 / 2017-09-09
63
+ ==================
64
+
65
+ * deps: iconv-lite@0.4.19
66
+ - Fix ISO-8859-1 regression
67
+ - Update Windows-1255
68
+
69
+ 2.3.1 / 2017-09-07
70
+ ==================
71
+
72
+ * deps: bytes@3.0.0
73
+ * deps: http-errors@1.6.2
74
+ - deps: depd@1.1.1
75
+ * perf: skip buffer decoding on overage chunk
76
+
77
+ 2.3.0 / 2017-08-04
78
+ ==================
79
+
80
+ * Add TypeScript definitions
81
+ * Use `http-errors` for standard emitted errors
82
+ * deps: bytes@2.5.0
83
+ * deps: iconv-lite@0.4.18
84
+ - Add support for React Native
85
+ - Add a warning if not loaded as utf-8
86
+ - Fix CESU-8 decoding in Node.js 8
87
+ - Improve speed of ISO-8859-1 encoding
88
+
89
+ 2.2.0 / 2017-01-02
90
+ ==================
91
+
92
+ * deps: iconv-lite@0.4.15
93
+ - Added encoding MS-31J
94
+ - Added encoding MS-932
95
+ - Added encoding MS-936
96
+ - Added encoding MS-949
97
+ - Added encoding MS-950
98
+ - Fix GBK/GB18030 handling of Euro character
99
+
100
+ 2.1.7 / 2016-06-19
101
+ ==================
102
+
103
+ * deps: bytes@2.4.0
104
+ * perf: remove double-cleanup on happy path
105
+
106
+ 2.1.6 / 2016-03-07
107
+ ==================
108
+
109
+ * deps: bytes@2.3.0
110
+ - Drop partial bytes on all parsed units
111
+ - Fix parsing byte string that looks like hex
112
+
113
+ 2.1.5 / 2015-11-30
114
+ ==================
115
+
116
+ * deps: bytes@2.2.0
117
+ * deps: iconv-lite@0.4.13
118
+
119
+ 2.1.4 / 2015-09-27
120
+ ==================
121
+
122
+ * Fix masking critical errors from `iconv-lite`
123
+ * deps: iconv-lite@0.4.12
124
+ - Fix CESU-8 decoding in Node.js 4.x
125
+
126
+ 2.1.3 / 2015-09-12
127
+ ==================
128
+
129
+ * Fix sync callback when attaching data listener causes sync read
130
+ - Node.js 0.10 compatibility issue
131
+
132
+ 2.1.2 / 2015-07-05
133
+ ==================
134
+
135
+ * Fix error stack traces to skip `makeError`
136
+ * deps: iconv-lite@0.4.11
137
+ - Add encoding CESU-8
138
+
139
+ 2.1.1 / 2015-06-14
140
+ ==================
141
+
142
+ * Use `unpipe` module for unpiping requests
143
+
144
+ 2.1.0 / 2015-05-28
145
+ ==================
146
+
147
+ * deps: iconv-lite@0.4.10
148
+ - Improved UTF-16 endianness detection
149
+ - Leading BOM is now removed when decoding
150
+ - The encoding UTF-16 without BOM now defaults to UTF-16LE when detection fails
151
+
152
+ 2.0.2 / 2015-05-21
153
+ ==================
154
+
155
+ * deps: bytes@2.1.0
156
+ - Slight optimizations
157
+
158
+ 2.0.1 / 2015-05-10
159
+ ==================
160
+
161
+ * Fix a false-positive when unpiping in Node.js 0.8
162
+
163
+ 2.0.0 / 2015-05-08
164
+ ==================
165
+
166
+ * Return a promise without callback instead of thunk
167
+ * deps: bytes@2.0.1
168
+ - units no longer case sensitive when parsing
169
+
170
+ 1.3.4 / 2015-04-15
171
+ ==================
172
+
173
+ * Fix hanging callback if request aborts during read
174
+ * deps: iconv-lite@0.4.8
175
+ - Add encoding alias UNICODE-1-1-UTF-7
176
+
177
+ 1.3.3 / 2015-02-08
178
+ ==================
179
+
180
+ * deps: iconv-lite@0.4.7
181
+ - Gracefully support enumerables on `Object.prototype`
182
+
183
+ 1.3.2 / 2015-01-20
184
+ ==================
185
+
186
+ * deps: iconv-lite@0.4.6
187
+ - Fix rare aliases of single-byte encodings
188
+
189
+ 1.3.1 / 2014-11-21
190
+ ==================
191
+
192
+ * deps: iconv-lite@0.4.5
193
+ - Fix Windows-31J and X-SJIS encoding support
194
+
195
+ 1.3.0 / 2014-07-20
196
+ ==================
197
+
198
+ * Fully unpipe the stream on error
199
+ - Fixes `Cannot switch to old mode now` error on Node.js 0.10+
200
+
201
+ 1.2.3 / 2014-07-20
202
+ ==================
203
+
204
+ * deps: iconv-lite@0.4.4
205
+ - Added encoding UTF-7
206
+
207
+ 1.2.2 / 2014-06-19
208
+ ==================
209
+
210
+ * Send invalid encoding error to callback
211
+
212
+ 1.2.1 / 2014-06-15
213
+ ==================
214
+
215
+ * deps: iconv-lite@0.4.3
216
+ - Added encodings UTF-16BE and UTF-16 with BOM
217
+
218
+ 1.2.0 / 2014-06-13
219
+ ==================
220
+
221
+ * Passing string as `options` interpreted as encoding
222
+ * Support all encodings from `iconv-lite`
223
+
224
+ 1.1.7 / 2014-06-12
225
+ ==================
226
+
227
+ * use `string_decoder` module from npm
228
+
229
+ 1.1.6 / 2014-05-27
230
+ ==================
231
+
232
+ * check encoding for old streams1
233
+ * support node.js < 0.10.6
234
+
235
+ 1.1.5 / 2014-05-14
236
+ ==================
237
+
238
+ * bump bytes
239
+
240
+ 1.1.4 / 2014-04-19
241
+ ==================
242
+
243
+ * allow true as an option
244
+ * bump bytes
245
+
246
+ 1.1.3 / 2014-03-02
247
+ ==================
248
+
249
+ * fix case when length=null
250
+
251
+ 1.1.2 / 2013-12-01
252
+ ==================
253
+
254
+ * be less strict on state.encoding check
255
+
256
+ 1.1.1 / 2013-11-27
257
+ ==================
258
+
259
+ * add engines
260
+
261
+ 1.1.0 / 2013-11-27
262
+ ==================
263
+
264
+ * add err.statusCode and err.type
265
+ * allow for encoding option to be true
266
+ * pause the stream instead of dumping on error
267
+ * throw if the stream's encoding is set
268
+
269
+ 1.0.1 / 2013-11-19
270
+ ==================
271
+
272
+ * dont support streams1, throw if dev set encoding
273
+
274
+ 1.0.0 / 2013-11-17
275
+ ==================
276
+
277
+ * rename `expected` option to `length`
278
+
279
+ 0.2.0 / 2013-11-15
280
+ ==================
281
+
282
+ * republish
283
+
284
+ 0.1.1 / 2013-11-15
285
+ ==================
286
+
287
+ * use bytes
288
+
289
+ 0.1.0 / 2013-11-11
290
+ ==================
291
+
292
+ * generator support
293
+
294
+ 0.0.3 / 2013-10-10
295
+ ==================
296
+
297
+ * update repo
298
+
299
+ 0.0.2 / 2013-09-14
300
+ ==================
301
+
302
+ * dump stream on bad headers
303
+ * listen to events after defining received and buffers
304
+
305
+ 0.0.1 / 2013-09-14
306
+ ==================
307
+
308
+ * Initial release
@@ -0,0 +1,24 @@
1
+ # Security Policies and Procedures
2
+
3
+ ## Reporting a Bug
4
+
5
+ The `raw-body` team and community take all security bugs seriously. Thank you
6
+ for improving the security of Express. We appreciate your efforts and
7
+ responsible disclosure and will make every effort to acknowledge your
8
+ contributions.
9
+
10
+ Report security bugs by emailing the current owners of `raw-body`. This information
11
+ can be found in the npm registry using the command `npm owner ls raw-body`.
12
+ If unsure or unable to get the information from the above, open an issue
13
+ in the [project issue tracker](https://github.com/stream-utils/raw-body/issues)
14
+ asking for the current contact information.
15
+
16
+ To ensure the timely response to your report, please ensure that the entirety
17
+ of the report is contained within the email body and not solely behind a web
18
+ link or an attachment.
19
+
20
+ At least one owner will acknowledge your email within 48 hours, and will send a
21
+ more detailed response within 48 hours indicating the next steps in handling
22
+ your report. After the initial reply to your report, the owners will
23
+ endeavor to keep you informed of the progress towards a fix and full
24
+ announcement, and may ask for additional information or guidance.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "raw-body",
3
3
  "description": "Get and validate the raw body of a readable stream.",
4
- "version": "2.5.3",
4
+ "version": "2.5.2",
5
5
  "author": "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)",
6
6
  "contributors": [
7
7
  "Douglas Christopher Wilson <doug@somethingdoug.com>",
@@ -10,10 +10,10 @@
10
10
  "license": "MIT",
11
11
  "repository": "stream-utils/raw-body",
12
12
  "dependencies": {
13
- "bytes": "~3.1.2",
14
- "http-errors": "~2.0.1",
15
- "iconv-lite": "~0.4.24",
16
- "unpipe": "~1.0.0"
13
+ "bytes": "3.1.2",
14
+ "http-errors": "2.0.0",
15
+ "iconv-lite": "0.4.24",
16
+ "unpipe": "1.0.0"
17
17
  },
18
18
  "devDependencies": {
19
19
  "bluebird": "3.7.2",
@@ -33,8 +33,10 @@
33
33
  "node": ">= 0.8"
34
34
  },
35
35
  "files": [
36
+ "HISTORY.md",
36
37
  "LICENSE",
37
38
  "README.md",
39
+ "SECURITY.md",
38
40
  "index.d.ts",
39
41
  "index.js"
40
42
  ],
@@ -277,6 +277,11 @@ const parseComparator = (comp, options) => {
277
277
 
278
278
  const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
279
279
 
280
+ const invalidXRangeOrder = (M, m, p) => (
281
+ (isX(M) && !isX(m)) ||
282
+ (isX(m) && p && !isX(p))
283
+ )
284
+
280
285
  // ~, ~> --> * (any, kinda silly)
281
286
  // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
282
287
  // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
@@ -294,6 +299,10 @@ const replaceTildes = (comp, options) => {
294
299
 
295
300
  const replaceTilde = (comp, options) => {
296
301
  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
302
+ // if we're including prereleases in the match, then the lower bound is
303
+ // -0, the lowest possible prerelease value, just like x-ranges and carets.
304
+ // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as.
305
+ const z = options.includePrerelease ? '-0' : ''
297
306
  return comp.replace(r, (_, M, m, p, pr) => {
298
307
  debug('tilde', comp, _, M, m, p, pr)
299
308
  let ret
@@ -301,10 +310,10 @@ const replaceTilde = (comp, options) => {
301
310
  if (isX(M)) {
302
311
  ret = ''
303
312
  } else if (isX(m)) {
304
- ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
313
+ ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
305
314
  } else if (isX(p)) {
306
315
  // ~1.2 == >=1.2.0 <1.3.0-0
307
- ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
316
+ ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
308
317
  } else if (pr) {
309
318
  debug('replaceTilde pr', pr)
310
319
  ret = `>=${M}.${m}.${p}-${pr
@@ -373,10 +382,10 @@ const replaceCaret = (comp, options) => {
373
382
  if (M === '0') {
374
383
  if (m === '0') {
375
384
  ret = `>=${M}.${m}.${p
376
- }${z} <${M}.${m}.${+p + 1}-0`
385
+ } <${M}.${m}.${+p + 1}-0`
377
386
  } else {
378
387
  ret = `>=${M}.${m}.${p
379
- }${z} <${M}.${+m + 1}.0-0`
388
+ } <${M}.${+m + 1}.0-0`
380
389
  }
381
390
  } else {
382
391
  ret = `>=${M}.${m}.${p
@@ -402,6 +411,10 @@ const replaceXRange = (comp, options) => {
402
411
  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
403
412
  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
404
413
  debug('xRange', comp, ret, gtlt, M, m, p, pr)
414
+ if (invalidXRangeOrder(M, m, p)) {
415
+ return comp
416
+ }
417
+
405
418
  const xM = isX(M)
406
419
  const xm = xM || isX(m)
407
420
  const xp = xm || isX(p)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "semver",
3
- "version": "7.8.2",
3
+ "version": "7.8.5",
4
4
  "description": "The semantic version parser used by npm.",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -14,7 +14,7 @@
14
14
  "eslint": "eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""
15
15
  },
16
16
  "devDependencies": {
17
- "@npmcli/eslint-config": "^6.0.0",
17
+ "@npmcli/eslint-config": "^7.0.0",
18
18
  "@npmcli/template-oss": "5.0.0",
19
19
  "benchmark": "^2.1.4",
20
20
  "tap": "^16.0.0"
@@ -1,15 +1,3 @@
1
- 0.19.2 / 2025-12-15
2
- ===================
3
-
4
- * deps: use tilde notation for dependencies
5
- * deps: http-errors@~2.0.1
6
- * deps: statuses@~2.0.2
7
-
8
- 0.19.1 / 2024-10-09
9
- ===================
10
-
11
- * deps: encodeurl@~2.0.0
12
-
13
1
  0.19.0 / 2024-09-10
14
2
  ===================
15
3
 
@@ -497,37 +485,37 @@
497
485
 
498
486
  * update range-parser and fresh
499
487
 
500
- 0.1.4 / 2013-08-11
488
+ 0.1.4 / 2013-08-11
501
489
  ==================
502
490
 
503
491
  * update fresh
504
492
 
505
- 0.1.3 / 2013-07-08
493
+ 0.1.3 / 2013-07-08
506
494
  ==================
507
495
 
508
496
  * Revert "Fix fd leak"
509
497
 
510
- 0.1.2 / 2013-07-03
498
+ 0.1.2 / 2013-07-03
511
499
  ==================
512
500
 
513
501
  * Fix fd leak
514
502
 
515
- 0.1.0 / 2012-08-25
503
+ 0.1.0 / 2012-08-25
516
504
  ==================
517
505
 
518
506
  * add options parameter to send() that is passed to fs.createReadStream() [kanongil]
519
507
 
520
- 0.0.4 / 2012-08-16
508
+ 0.0.4 / 2012-08-16
521
509
  ==================
522
510
 
523
511
  * allow custom "Accept-Ranges" definition
524
512
 
525
- 0.0.3 / 2012-07-16
513
+ 0.0.3 / 2012-07-16
526
514
  ==================
527
515
 
528
516
  * fix normalization of the root directory. Closes #3
529
517
 
530
- 0.0.2 / 2012-07-09
518
+ 0.0.2 / 2012-07-09
531
519
  ==================
532
520
 
533
521
  * add passing of req explicitly for now (YUCK)
@@ -0,0 +1,14 @@
1
+ 1.0.2 / 2018-01-21
2
+ ==================
3
+
4
+ * Fix encoding `%` as last character
5
+
6
+ 1.0.1 / 2016-06-09
7
+ ==================
8
+
9
+ * Fix encoding unpaired surrogates at start/end of string
10
+
11
+ 1.0.0 / 2016-06-08
12
+ ==================
13
+
14
+ * Initial release