@zowe/db2-for-zowe-cli 6.1.17 → 6.1.19

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 (282) hide show
  1. package/README.md +12 -10
  2. package/lib/Db2PluginLifeCycle.d.ts +11 -9
  3. package/lib/Db2PluginLifeCycle.js +18 -13
  4. package/lib/Db2PluginLifeCycle.js.map +1 -1
  5. package/node_modules/adm-zip/adm-zip.js +32 -6
  6. package/node_modules/adm-zip/headers/entryHeader.js +13 -1
  7. package/node_modules/adm-zip/methods/inflater.js +33 -3
  8. package/node_modules/adm-zip/package.json +2 -2
  9. package/node_modules/adm-zip/util/errors.js +3 -0
  10. package/node_modules/adm-zip/util/utils.js +102 -14
  11. package/node_modules/adm-zip/zipEntry.js +43 -18
  12. package/node_modules/adm-zip/zipFile.js +10 -0
  13. package/node_modules/axios/CHANGELOG.md +62 -0
  14. package/node_modules/axios/README.md +236 -73
  15. package/node_modules/axios/dist/axios.js +1308 -357
  16. package/node_modules/axios/dist/axios.min.js +3 -3
  17. package/node_modules/axios/dist/axios.min.js.map +1 -1
  18. package/node_modules/axios/dist/browser/axios.cjs +1443 -403
  19. package/node_modules/axios/dist/esm/axios.js +1443 -403
  20. package/node_modules/axios/dist/esm/axios.min.js +2 -2
  21. package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
  22. package/node_modules/axios/dist/node/axios.cjs +1483 -348
  23. package/node_modules/axios/index.d.cts +24 -1
  24. package/node_modules/axios/index.d.ts +22 -1
  25. package/node_modules/axios/lib/adapters/fetch.js +136 -30
  26. package/node_modules/axios/lib/adapters/http.js +277 -74
  27. package/node_modules/axios/lib/adapters/xhr.js +172 -16
  28. package/node_modules/axios/lib/core/Axios.js +87 -27
  29. package/node_modules/axios/lib/core/AxiosError.js +59 -0
  30. package/node_modules/axios/lib/core/AxiosHeaders.js +17 -4
  31. package/node_modules/axios/lib/core/InterceptorManager.js +118 -8
  32. package/node_modules/axios/lib/core/assertParamsAcyclic.js +49 -0
  33. package/node_modules/axios/lib/core/buildFullPath.js +1 -13
  34. package/node_modules/axios/lib/core/createMultipartBody.js +37 -0
  35. package/node_modules/axios/lib/core/dispatchRequest.js +28 -2
  36. package/node_modules/axios/lib/core/mergeConfig.js +183 -120
  37. package/node_modules/axios/lib/core/methodList.js +17 -0
  38. package/node_modules/axios/lib/defaults/index.js +2 -1
  39. package/node_modules/axios/lib/defaults/transitional.js +1 -0
  40. package/node_modules/axios/lib/env/data.js +1 -1
  41. package/node_modules/axios/lib/helpers/AxiosTransformStream.js +11 -2
  42. package/node_modules/axios/lib/helpers/Http2Sessions.js +4 -1
  43. package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
  44. package/node_modules/axios/lib/helpers/composeSignals.js +6 -3
  45. package/node_modules/axios/lib/helpers/cookies.js +30 -6
  46. package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +34 -7
  47. package/node_modules/axios/lib/helpers/formDataToBlob.js +113 -0
  48. package/node_modules/axios/lib/helpers/formDataToJSON.js +25 -1
  49. package/node_modules/axios/lib/helpers/fromDataURI.js +11 -4
  50. package/node_modules/axios/lib/helpers/isURLSameOrigin.js +4 -9
  51. package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
  52. package/node_modules/axios/lib/helpers/parseHeaders.js +2 -1
  53. package/node_modules/axios/lib/helpers/parseProtocol.js +1 -1
  54. package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
  55. package/node_modules/axios/lib/helpers/resolveConfig.js +20 -5
  56. package/node_modules/axios/lib/helpers/shouldBypassProxy.js +197 -6
  57. package/node_modules/axios/lib/helpers/throttle.js +3 -2
  58. package/node_modules/axios/lib/helpers/toFormData.js +14 -21
  59. package/node_modules/axios/lib/utils.js +192 -20
  60. package/node_modules/axios/package.json +1 -2
  61. package/node_modules/follow-redirects/README.md +27 -1
  62. package/node_modules/follow-redirects/index.js +11 -6
  63. package/node_modules/follow-redirects/package.json +1 -1
  64. package/node_modules/fs-extra/README.md +0 -1
  65. package/node_modules/fs-extra/lib/empty/index.js +4 -2
  66. package/node_modules/fs-extra/lib/util/stat.js +12 -2
  67. package/node_modules/fs-extra/package.json +1 -1
  68. package/node_modules/ibm_db/APIDocumentation.md +2883 -2024
  69. package/node_modules/ibm_db/LICENSE +23 -23
  70. package/node_modules/ibm_db/README.md +735 -735
  71. package/node_modules/ibm_db/binding.gyp +99 -98
  72. package/node_modules/ibm_db/installer/driverInstall.js +984 -958
  73. package/node_modules/ibm_db/installer/ifx.sh +38 -38
  74. package/node_modules/ibm_db/installer/setenv.sh +23 -23
  75. package/node_modules/ibm_db/installer/testODBCConnection.bat +51 -51
  76. package/node_modules/ibm_db/installer/testODBCConnection.sh +61 -61
  77. package/node_modules/ibm_db/lib/climacros.js +431 -431
  78. package/node_modules/ibm_db/lib/odbc.js +4293 -3487
  79. package/node_modules/ibm_db/lib/simple-queue.js +41 -41
  80. package/node_modules/ibm_db/package.json +70 -70
  81. package/node_modules/ibm_db/src/odbc.cpp +1495 -1396
  82. package/node_modules/ibm_db/src/odbc.h +477 -473
  83. package/node_modules/ibm_db/src/odbc_connection.cpp +1762 -1612
  84. package/node_modules/ibm_db/src/odbc_connection.h +228 -215
  85. package/node_modules/ibm_db/src/odbc_result.cpp +1547 -1547
  86. package/node_modules/ibm_db/src/odbc_result.h +152 -152
  87. package/node_modules/ibm_db/src/odbc_statement.cpp +2047 -861
  88. package/node_modules/ibm_db/src/odbc_statement.h +257 -135
  89. package/node_modules/ibm_db/src/strptime.c +389 -389
  90. package/node_modules/ibm_db/src/strptime.h +46 -46
  91. package/node_modules/ibm_db/test/README +23 -23
  92. package/node_modules/ibm_db/test/bench-insert.js +62 -62
  93. package/node_modules/ibm_db/test/bench-insertBatch10.js +74 -74
  94. package/node_modules/ibm_db/test/bench-insertBatch100.js +75 -75
  95. package/node_modules/ibm_db/test/bench-insertBatch1000.js +75 -75
  96. package/node_modules/ibm_db/test/bench-insertBatch10000.js +75 -75
  97. package/node_modules/ibm_db/test/bench-prepare-bind-execute-closeSync.js +60 -60
  98. package/node_modules/ibm_db/test/bench-prepare-bind-executeNonQuery.js +53 -53
  99. package/node_modules/ibm_db/test/bench-prepare-bindSync-execute-closeSync.js +50 -50
  100. package/node_modules/ibm_db/test/bench-prepare-bindSync-executeNonQuery.js +48 -48
  101. package/node_modules/ibm_db/test/bench-prepare-execute-closeSync.js +51 -51
  102. package/node_modules/ibm_db/test/bench-prepare-executeNonQuery.js +47 -47
  103. package/node_modules/ibm_db/test/bench-prepare-not.js +43 -43
  104. package/node_modules/ibm_db/test/bench-query-fetch.js +59 -59
  105. package/node_modules/ibm_db/test/bench-query-fetchAll.js +49 -49
  106. package/node_modules/ibm_db/test/bench-query-fetchAllSync.js +43 -43
  107. package/node_modules/ibm_db/test/bench-query.js +40 -40
  108. package/node_modules/ibm_db/test/bench-querySync-fetchArray.js +28 -28
  109. package/node_modules/ibm_db/test/bench-querySync.js +29 -29
  110. package/node_modules/ibm_db/test/common.d.ts +10 -10
  111. package/node_modules/ibm_db/test/common.js +127 -127
  112. package/node_modules/ibm_db/test/config.json +7 -7
  113. package/node_modules/ibm_db/test/config.zos.json +4 -4
  114. package/node_modules/ibm_db/test/data/sample1.txt +9 -9
  115. package/node_modules/ibm_db/test/data/trc.fmt +30114 -30114
  116. package/node_modules/ibm_db/test/nodeEE-leak-huge-query.js +152 -152
  117. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-multiple-connections.js +148 -148
  118. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-pool-connections.js +154 -154
  119. package/node_modules/ibm_db/test/nodeEE-leak-multiple-query.js +133 -133
  120. package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall-multiple-connections.js +174 -174
  121. package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall.js +169 -169
  122. package/node_modules/ibm_db/test/nodeEE-stress-mixed-query-multiple-connections.js +159 -159
  123. package/node_modules/ibm_db/test/nodeEE-stress-mixed-query.js +148 -148
  124. package/node_modules/ibm_db/test/odbc-bench.c +123 -123
  125. package/node_modules/ibm_db/test/perfTest.js +53 -53
  126. package/node_modules/ibm_db/test/quick-example.sh +30 -30
  127. package/node_modules/ibm_db/test/quick-example.ts +80 -80
  128. package/node_modules/ibm_db/test/run-bench.js +96 -96
  129. package/node_modules/ibm_db/test/run-nodeEE.js +132 -132
  130. package/node_modules/ibm_db/test/run-tests.js +132 -138
  131. package/node_modules/ibm_db/test/sql-cli.js +28 -28
  132. package/node_modules/ibm_db/test/test-all-data-types.js +109 -109
  133. package/node_modules/ibm_db/test/test-array-insert.js +178 -178
  134. package/node_modules/ibm_db/test/test-async-await.js +105 -105
  135. package/node_modules/ibm_db/test/test-attributes.js +34 -34
  136. package/node_modules/ibm_db/test/test-bad-pool-connection-prepare-execute.js +57 -57
  137. package/node_modules/ibm_db/test/test-basic-test.js +138 -138
  138. package/node_modules/ibm_db/test/test-binary-array-insert.js +73 -73
  139. package/node_modules/ibm_db/test/test-blob-from-file.js +90 -90
  140. package/node_modules/ibm_db/test/test-blob-insert.js +144 -144
  141. package/node_modules/ibm_db/test/test-blob-stream-insert.js +321 -299
  142. package/node_modules/ibm_db/test/test-blob-to-file.js +370 -370
  143. package/node_modules/ibm_db/test/test-block-fetch.js +364 -364
  144. package/node_modules/ibm_db/test/test-blocking-issue210.js +123 -123
  145. package/node_modules/ibm_db/test/test-call-async.js +64 -64
  146. package/node_modules/ibm_db/test/test-call-stmt.js +53 -53
  147. package/node_modules/ibm_db/test/test-cancel.js +703 -0
  148. package/node_modules/ibm_db/test/test-chinese-char.js +59 -59
  149. package/node_modules/ibm_db/test/test-connection.js +306 -0
  150. package/node_modules/ibm_db/test/test-date.js +32 -32
  151. package/node_modules/ibm_db/test/test-dbclob.js +93 -93
  152. package/node_modules/ibm_db/test/test-decimals.js +135 -135
  153. package/node_modules/ibm_db/test/test-describe-metadata.js +148 -0
  154. package/node_modules/ibm_db/test/test-executeFile.js +167 -167
  155. package/node_modules/ibm_db/test/test-executeFileSync.js +85 -85
  156. package/node_modules/ibm_db/test/test-fetch-apis.js +146 -146
  157. package/node_modules/ibm_db/test/test-fetchN.js +130 -130
  158. package/node_modules/ibm_db/test/test-getinfo.js +197 -197
  159. package/node_modules/ibm_db/test/test-ibm-db-issue14.js +58 -58
  160. package/node_modules/ibm_db/test/test-ibm-db-issue17.js +54 -54
  161. package/node_modules/ibm_db/test/test-ibm-db-issue18.js +54 -54
  162. package/node_modules/ibm_db/test/test-issue-1059-fetchAll-undefined.js +67 -67
  163. package/node_modules/ibm_db/test/test-issue-1080-array-blob-insert.js +40 -0
  164. package/node_modules/ibm_db/test/test-issue-54.js +39 -39
  165. package/node_modules/ibm_db/test/test-issue-get-column-value-2.js +44 -44
  166. package/node_modules/ibm_db/test/test-issue211.js +80 -80
  167. package/node_modules/ibm_db/test/test-issue253.js +39 -39
  168. package/node_modules/ibm_db/test/test-max-pool-size.js +96 -96
  169. package/node_modules/ibm_db/test/test-memory-leaks-new-objects.js +32 -32
  170. package/node_modules/ibm_db/test/test-multi-open-query-close.js +75 -75
  171. package/node_modules/ibm_db/test/test-param-put-data.js +713 -0
  172. package/node_modules/ibm_db/test/test-pool-idle-connection.js +72 -72
  173. package/node_modules/ibm_db/test/test-pool-operations.js +325 -0
  174. package/node_modules/ibm_db/test/test-pool-stale-connections.js +111 -111
  175. package/node_modules/ibm_db/test/test-pool-uncommited.js +33 -33
  176. package/node_modules/ibm_db/test/test-prepare-execute.js +339 -0
  177. package/node_modules/ibm_db/test/test-prepareSync-multiple-execution.js +93 -93
  178. package/node_modules/ibm_db/test/test-primary-foreign-keys.js +246 -0
  179. package/node_modules/ibm_db/test/test-procedures.js +243 -0
  180. package/node_modules/ibm_db/test/test-promise-all-data-types.js +42 -42
  181. package/node_modules/ibm_db/test/test-query-operations.js +405 -0
  182. package/node_modules/ibm_db/test/test-quick-example.js +25 -25
  183. package/node_modules/ibm_db/test/test-row-array-insert.js +167 -167
  184. package/node_modules/ibm_db/test/test-sp-array.js +54 -54
  185. package/node_modules/ibm_db/test/test-sp-dbc-6000.js +88 -88
  186. package/node_modules/ibm_db/test/test-sp-memleak.js +136 -136
  187. package/node_modules/ibm_db/test/test-sp-resultset-execute.js +269 -269
  188. package/node_modules/ibm_db/test/test-sp-resultset.js +228 -228
  189. package/node_modules/ibm_db/test/test-transactions.js +261 -0
  190. package/node_modules/ibm_db/test/test-typescript.js +48 -48
  191. package/node_modules/ibm_db/test/test-xml-datatype.js +70 -70
  192. package/node_modules/ibm_db/test/testWebApp.js +56 -56
  193. package/node_modules/ibm_db/test/trace +51 -51
  194. package/node_modules/ibm_db/test/typescript-apis-test.js +978 -978
  195. package/node_modules/ibm_db/test/webapp.html +17 -17
  196. package/node_modules/ibm_db/test/webapp.js +79 -79
  197. package/node_modules/ibm_db/typescript/README.md +28 -28
  198. package/node_modules/ibm_db/typescript/dist/Database.d.ts +26 -0
  199. package/node_modules/ibm_db/typescript/dist/ODBCStatement.d.ts +93 -0
  200. package/node_modules/string_decoder/node_modules/safe-buffer/LICENSE +21 -0
  201. package/node_modules/string_decoder/node_modules/safe-buffer/README.md +584 -0
  202. package/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts +187 -0
  203. package/node_modules/string_decoder/node_modules/safe-buffer/index.js +62 -0
  204. package/node_modules/string_decoder/node_modules/safe-buffer/package.json +37 -0
  205. package/node_modules/which-typed-array/CHANGELOG.md +14 -0
  206. package/node_modules/which-typed-array/README.md +0 -2
  207. package/node_modules/which-typed-array/index.d.ts +288 -11
  208. package/node_modules/which-typed-array/index.js +6 -7
  209. package/node_modules/which-typed-array/package.json +12 -11
  210. package/package.json +10 -11
  211. package/node_modules/ibm_db/test/disabled/test-binding-statement-rebinding.js +0 -59
  212. package/node_modules/ibm_db/test/disabled/test-open-dont-close.js +0 -12
  213. package/node_modules/ibm_db/test/disabled/test-param-select-with-booleans-only.js +0 -21
  214. package/node_modules/ibm_db/test/disabled/test-param-select-with-decimals-only.js +0 -20
  215. package/node_modules/ibm_db/test/disabled/test-param-select-with-null.js +0 -21
  216. package/node_modules/ibm_db/test/disabled/test-param-select-with-nulls-mixed.js +0 -23
  217. package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-mixed.js +0 -22
  218. package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-only.js +0 -24
  219. package/node_modules/ibm_db/test/disabled/test-param-select-with-strings-only.js +0 -23
  220. package/node_modules/ibm_db/test/disabled/test-param-select-with-unicode.js +0 -15
  221. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-closeSync.js +0 -62
  222. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-error.js +0 -49
  223. package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-long-string.js +0 -63
  224. package/node_modules/ibm_db/test/disabled/test-prepare-bind-executeNonQuery.js +0 -63
  225. package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-execute-closeSync.js +0 -46
  226. package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-executeNonQuery.js +0 -50
  227. package/node_modules/ibm_db/test/disabled/test-prepare.js +0 -34
  228. package/node_modules/ibm_db/test/disabled/test-prepareSync.js +0 -29
  229. package/node_modules/ibm_db/test/disabled/test-query-select-fetchAll.js +0 -23
  230. package/node_modules/ibm_db/test/disabled/test-query-select-fetchAllSync.js +0 -23
  231. package/node_modules/ibm_db/test/disabled/test-query-select-unicode.js +0 -15
  232. package/node_modules/ibm_db/test/disabled/test-querySync-select-unicode.js +0 -20
  233. package/node_modules/ibm_db/test/test-affected-rows.js +0 -55
  234. package/node_modules/ibm_db/test/test-bad-connection-string.js +0 -30
  235. package/node_modules/ibm_db/test/test-binding-connection-timeOut.js +0 -31
  236. package/node_modules/ibm_db/test/test-binding-statement-executeSync.js +0 -84
  237. package/node_modules/ibm_db/test/test-binding-transaction-commit.js +0 -79
  238. package/node_modules/ibm_db/test/test-binding-transaction-commitSync.js +0 -53
  239. package/node_modules/ibm_db/test/test-closed.js +0 -14
  240. package/node_modules/ibm_db/test/test-connection-object.js +0 -16
  241. package/node_modules/ibm_db/test/test-describe-column.js +0 -92
  242. package/node_modules/ibm_db/test/test-describe-database.js +0 -18
  243. package/node_modules/ibm_db/test/test-describe-table.js +0 -31
  244. package/node_modules/ibm_db/test/test-domains-open.js +0 -19
  245. package/node_modules/ibm_db/test/test-global-open-close.js +0 -11
  246. package/node_modules/ibm_db/test/test-instantiate-one-and-end.js +0 -9
  247. package/node_modules/ibm_db/test/test-multi-open-close.js +0 -45
  248. package/node_modules/ibm_db/test/test-multi-openSync-closeSync.js +0 -52
  249. package/node_modules/ibm_db/test/test-open-close.js +0 -29
  250. package/node_modules/ibm_db/test/test-open-connectTimeout.js +0 -33
  251. package/node_modules/ibm_db/test/test-openSync.js +0 -31
  252. package/node_modules/ibm_db/test/test-pool-close.js +0 -120
  253. package/node_modules/ibm_db/test/test-pool-connect.js +0 -36
  254. package/node_modules/ibm_db/test/test-pool-rollbackTransaction.js +0 -35
  255. package/node_modules/ibm_db/test/test-prepareSync-bad-sql.js +0 -34
  256. package/node_modules/ibm_db/test/test-promise-open-close.js +0 -33
  257. package/node_modules/ibm_db/test/test-query-create-table-fetchSync.js +0 -23
  258. package/node_modules/ibm_db/test/test-query-create-table.js +0 -12
  259. package/node_modules/ibm_db/test/test-query-drop-table.js +0 -13
  260. package/node_modules/ibm_db/test/test-query-insert.js +0 -38
  261. package/node_modules/ibm_db/test/test-query-select-fetch.js +0 -21
  262. package/node_modules/ibm_db/test/test-query-select-fetchMode-array.js +0 -17
  263. package/node_modules/ibm_db/test/test-query-select.js +0 -64
  264. package/node_modules/ibm_db/test/test-queryResult.js +0 -35
  265. package/node_modules/ibm_db/test/test-queryStream.js +0 -43
  266. package/node_modules/ibm_db/test/test-querySync-select-with-exception.js +0 -25
  267. package/node_modules/ibm_db/test/test-querySync-select.js +0 -28
  268. package/node_modules/ibm_db/test/test-require-and-end.js +0 -8
  269. package/node_modules/ibm_db/test/test-statement-close.js +0 -118
  270. package/node_modules/ibm_db/test/test-transaction-commit-sync.js +0 -54
  271. package/node_modules/ibm_db/test/test-transaction-commit.js +0 -79
  272. package/node_modules/which-typed-array/eslint.config.mjs +0 -12
  273. package/node_modules/which-typed-array/test/index.js +0 -105
  274. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/LICENSE +0 -0
  275. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/README.md +0 -0
  276. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/chownr.js +0 -0
  277. /package/node_modules/{tar-fs/node_modules/chownr → chownr}/package.json +0 -0
  278. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/.travis.yml +0 -0
  279. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/LICENSE +0 -0
  280. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/README.md +0 -0
  281. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/lib/string_decoder.js +0 -0
  282. /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/package.json +0 -0
@@ -1,5 +1,17 @@
1
+ import { domainToASCII } from 'url';
2
+
1
3
  const LOOPBACK_HOSTNAMES = new Set(['localhost', '0.0.0.0']);
2
4
 
5
+ const trimTrailingDots = (value) => {
6
+ let end = value.length;
7
+
8
+ while (end && value.charCodeAt(end - 1) === 46) {
9
+ end--;
10
+ }
11
+
12
+ return end === value.length ? value : value.slice(0, end);
13
+ };
14
+
3
15
  const isIPv4Loopback = (host) => {
4
16
  const parts = host.split('.');
5
17
  if (parts.length !== 4) return false;
@@ -57,7 +69,7 @@ const normalizeIPAddress = (host) => {
57
69
  if (h.charAt(0) === '[' && h.charAt(h.length - 1) === ']') {
58
70
  h = h.slice(1, -1);
59
71
  }
60
- h = h.replace(/\.+$/, '');
72
+ h = trimTrailingDots(h);
61
73
 
62
74
  // Allowed characters for any IPv4 shape: digits, dot, 'x', 'X', hex digits.
63
75
  if (!/^[0-9.xXa-fA-F]+$/.test(h)) return host;
@@ -134,9 +146,7 @@ const isIPv6Unspecified = (host) => {
134
146
  const explicitGroups = leftGroups.length + rightGroups.length;
135
147
 
136
148
  return (
137
- explicitGroups < 8 &&
138
- leftGroups.every(isIPv6ZeroGroup) &&
139
- rightGroups.every(isIPv6ZeroGroup)
149
+ explicitGroups < 8 && leftGroups.every(isIPv6ZeroGroup) && rightGroups.every(isIPv6ZeroGroup)
140
150
  );
141
151
  }
142
152
 
@@ -232,7 +242,8 @@ const parseNoProxyEntry = (entry) => {
232
242
  // allowing the proxy-bypass policy to be circumvented by using the alternate
233
243
  // representation. Returns the input unchanged when not IPv4-mapped.
234
244
  const IPV4_MAPPED_DOTTED_RE = /^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:(\d+\.\d+\.\d+\.\d+)$/i;
235
- const IPV4_MAPPED_HEX_RE = /^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i;
245
+ const IPV4_MAPPED_HEX_RE =
246
+ /^(?:::|(?:0{1,4}:){1,4}:|(?:0{1,4}:){5})ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i;
236
247
 
237
248
  const unmapIPv4MappedIPv6 = (host) => {
238
249
  if (typeof host !== 'string' || host.indexOf(':') === -1) return host;
@@ -250,6 +261,57 @@ const unmapIPv4MappedIPv6 = (host) => {
250
261
  return host;
251
262
  };
252
263
 
264
+ const IPV4_OCTET_RE = /^(?:0|[1-9]\d{0,2})$/;
265
+
266
+ const ipv4ToBytes = (host) => {
267
+ const parts = host.split('.');
268
+
269
+ return parts.length === 4 &&
270
+ parts.every((part) => IPV4_OCTET_RE.test(part) && Number(part) <= 255)
271
+ ? parts.map(Number)
272
+ : null;
273
+ };
274
+
275
+ const IPV6_GROUP_RE = /^[0-9a-f]{1,4}$/i;
276
+
277
+ const ipv6ToBytes = (host) => {
278
+ const halves = host.split('::');
279
+
280
+ if (halves.length > 2) {
281
+ return null;
282
+ }
283
+
284
+ const groups = halves[0] ? halves[0].split(':') : [];
285
+
286
+ if (halves.length === 2) {
287
+ const rear = halves[1] ? halves[1].split(':') : [];
288
+ const missing = 8 - groups.length - rear.length;
289
+
290
+ if (missing < 1) {
291
+ return null;
292
+ }
293
+
294
+ groups.push(...new Array(missing).fill('0'), ...rear);
295
+ }
296
+
297
+ if (groups.length !== 8 || groups.some((group) => !IPV6_GROUP_RE.test(group))) {
298
+ return null;
299
+ }
300
+
301
+ return groups.flatMap((group) => {
302
+ const value = Number.parseInt(group, 16);
303
+ return [(value >> 8) & 0xff, value & 0xff];
304
+ });
305
+ };
306
+
307
+ const ipToBytes = (host) => {
308
+ if (typeof host !== 'string' || !host) {
309
+ return null;
310
+ }
311
+
312
+ return host.indexOf(':') !== -1 ? ipv6ToBytes(host) : ipv4ToBytes(host);
313
+ };
314
+
253
315
  const normalizeNoProxyHost = (hostname) => {
254
316
  if (!hostname) {
255
317
  return hostname;
@@ -259,7 +321,20 @@ const normalizeNoProxyHost = (hostname) => {
259
321
  hostname = hostname.slice(1, -1);
260
322
  }
261
323
 
262
- const trimmed = hostname.replace(/\.+$/, '');
324
+ let trimmed = trimTrailingDots(hostname);
325
+ if (trimmed.indexOf(':') !== -1) {
326
+ try {
327
+ trimmed = new URL('http://[' + trimmed + ']/').hostname.slice(1, -1);
328
+ } catch (_err) {
329
+ return trimmed;
330
+ }
331
+ } else if (/[\u0080-\uffff]/.test(trimmed)) {
332
+ const prefix = /^[*.]+/.exec(trimmed);
333
+ const start = prefix ? prefix[0] : '';
334
+ const ascii = domainToASCII(trimmed.slice(start.length));
335
+ if (!ascii) return '';
336
+ trimmed = start + trimTrailingDots(ascii);
337
+ }
263
338
 
264
339
  // IPv4 shorthand/octal/hex → dotted-decimal; helper is a no-op for inputs
265
340
  // containing ':' (IPv6 and IPv4-mapped IPv6) so we fall through to unmap.
@@ -271,6 +346,110 @@ const normalizeNoProxyHost = (hostname) => {
271
346
  return unmapIPv4MappedIPv6(trimmed);
272
347
  };
273
348
 
349
+ const normalizeCidrBase = (input) => {
350
+ let base = input;
351
+ const startsBracket = base.charAt(0) === '[';
352
+ const endsBracket = base.charAt(base.length - 1) === ']';
353
+ const hasBracket = base.includes('[') || base.includes(']');
354
+
355
+ if (startsBracket || endsBracket) {
356
+ if (!startsBracket || !endsBracket) {
357
+ return null;
358
+ }
359
+
360
+ base = base.slice(1, -1);
361
+
362
+ if (base.indexOf(':') === -1 || base.includes('[') || base.includes(']')) {
363
+ return null;
364
+ }
365
+ } else if (hasBracket) {
366
+ return null;
367
+ }
368
+
369
+ if (!base || base.charAt(base.length - 1) === '.') {
370
+ return null;
371
+ }
372
+
373
+ const wasIPv6 = base.indexOf(':') !== -1;
374
+
375
+ if (wasIPv6) {
376
+ try {
377
+ base = new URL(`http://[${base}]/`).hostname.slice(1, -1);
378
+ } catch (_err) {
379
+ return null;
380
+ }
381
+ } else {
382
+ base = normalizeIPAddress(base);
383
+
384
+ if (!ipv4ToBytes(base)) {
385
+ return null;
386
+ }
387
+ }
388
+
389
+ return { normalized: unmapIPv4MappedIPv6(base), wasIPv6 };
390
+ };
391
+
392
+ const CIDR_ENTRY_RE = /^(.+)\/(0|[1-9]\d{0,2})$/;
393
+
394
+ const parseCidrEntry = (entry) => {
395
+ if (entry.indexOf('/') === -1) {
396
+ return undefined;
397
+ }
398
+
399
+ const match = CIDR_ENTRY_RE.exec(entry);
400
+
401
+ if (!match) {
402
+ return null;
403
+ }
404
+
405
+ let prefix = Number(match[2]);
406
+ const parsedBase = normalizeCidrBase(match[1]);
407
+
408
+ if (!parsedBase) {
409
+ return null;
410
+ }
411
+
412
+ const { normalized, wasIPv6 } = parsedBase;
413
+
414
+ if (wasIPv6 && normalized.indexOf(':') === -1) {
415
+ if (prefix < 96) {
416
+ return null;
417
+ }
418
+
419
+ prefix -= 96;
420
+ }
421
+
422
+ const bytes = ipToBytes(normalized);
423
+
424
+ if (!bytes || prefix > bytes.length * 8) {
425
+ return null;
426
+ }
427
+
428
+ return { bytes, prefix };
429
+ };
430
+
431
+ const isInSubnet = (addressBytes, networkBytes, prefix) => {
432
+ const fullBytes = prefix >> 3;
433
+
434
+ for (let i = 0; i < fullBytes; i++) {
435
+ if (addressBytes[i] !== networkBytes[i]) {
436
+ return false;
437
+ }
438
+ }
439
+
440
+ const remainingBits = prefix & 7;
441
+
442
+ if (remainingBits) {
443
+ const mask = (0xff << (8 - remainingBits)) & 0xff;
444
+
445
+ if ((addressBytes[fullBytes] & mask) !== (networkBytes[fullBytes] & mask)) {
446
+ return false;
447
+ }
448
+ }
449
+
450
+ return true;
451
+ };
452
+
274
453
  export default function shouldBypassProxy(location) {
275
454
  let parsed;
276
455
 
@@ -294,6 +473,7 @@ export default function shouldBypassProxy(location) {
294
473
  Number.parseInt(parsed.port, 10) || DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0;
295
474
 
296
475
  const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase());
476
+ const hostnameBytes = ipToBytes(hostname);
297
477
 
298
478
  return noProxy.split(/[\s,]+/).some((entry) => {
299
479
  if (!entry) {
@@ -304,6 +484,17 @@ export default function shouldBypassProxy(location) {
304
484
  return true;
305
485
  }
306
486
 
487
+ const cidr = parseCidrEntry(entry);
488
+
489
+ if (cidr !== undefined) {
490
+ return (
491
+ cidr !== null &&
492
+ !!hostnameBytes &&
493
+ hostnameBytes.length === cidr.bytes.length &&
494
+ isInSubnet(hostnameBytes, cidr.bytes, cidr.prefix)
495
+ );
496
+ }
497
+
307
498
  let [entryHost, entryPort] = parseNoProxyEntry(entry);
308
499
 
309
500
  entryHost = normalizeNoProxyHost(entryHost);
@@ -2,7 +2,7 @@
2
2
  * Throttle decorator
3
3
  * @param {Function} fn
4
4
  * @param {Number} freq
5
- * @return {Function}
5
+ * @return {Array<Function>}
6
6
  */
7
7
  function throttle(fn, freq) {
8
8
  let timestamp = 0;
@@ -37,8 +37,9 @@ function throttle(fn, freq) {
37
37
  };
38
38
 
39
39
  const flush = () => lastArgs && invoke(lastArgs);
40
+ const flushWith = (...args) => invoke(args);
40
41
 
41
- return [throttled, flush];
42
+ return [throttled, flush, flushWith];
42
43
  }
43
44
 
44
45
  export default throttle;
@@ -99,28 +99,18 @@ function toFormData(obj, formData, options) {
99
99
  // eslint-disable-next-line no-param-reassign
100
100
  formData = formData || new (PlatformFormData || FormData)();
101
101
 
102
- // eslint-disable-next-line no-param-reassign
103
- options = utils.toFlatObject(
104
- options,
105
- {
106
- metaTokens: true,
107
- dots: false,
108
- indexes: false,
109
- },
110
- false,
111
- function defined(option, source) {
112
- // eslint-disable-next-line no-eq-null,eqeqeq
113
- return !utils.isUndefined(source[option]);
114
- }
115
- );
102
+ const option = (name, fallback) => {
103
+ const value = utils.getSafeProp(options, name);
104
+ return utils.isUndefined(value) ? fallback : value;
105
+ };
116
106
 
117
- const metaTokens = options.metaTokens;
107
+ const metaTokens = option('metaTokens', true);
118
108
  // eslint-disable-next-line no-use-before-define
119
- const visitor = options.visitor || defaultVisitor;
120
- const dots = options.dots;
121
- const indexes = options.indexes;
122
- const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob);
123
- const maxDepth = options.maxDepth === undefined ? DEFAULT_FORM_DATA_MAX_DEPTH : options.maxDepth;
109
+ const visitor = option('visitor') || defaultVisitor;
110
+ const dots = option('dots', false);
111
+ const indexes = option('indexes', false);
112
+ const _Blob = option('Blob') || (typeof Blob !== 'undefined' && Blob);
113
+ const maxDepth = option('maxDepth', DEFAULT_FORM_DATA_MAX_DEPTH);
124
114
  const useBlob = _Blob && utils.isSpecCompliantForm(formData);
125
115
  const stack = [];
126
116
 
@@ -150,7 +140,10 @@ function toFormData(obj, formData, options) {
150
140
  if (PlatformBuffer && PlatformBuffer.isBufferAvailable()) {
151
141
  return PlatformBuffer.from(value);
152
142
  }
153
- throw new AxiosError('Blob is not supported. Use a Buffer instead.', AxiosError.ERR_NOT_SUPPORT);
143
+ throw new AxiosError(
144
+ 'Blob is not supported. Use a Buffer instead.',
145
+ AxiosError.ERR_NOT_SUPPORT
146
+ );
154
147
  }
155
148
 
156
149
  return value;
@@ -15,12 +15,65 @@ const hasOwnProperty = (
15
15
  hasOwnProperty.call(obj, prop)
16
16
  )(Object.prototype);
17
17
 
18
+ const isUnsafeObjectKey = (prop) =>
19
+ typeof prop === 'string' &&
20
+ (prop === '__proto__' || prop === 'constructor' || prop === 'prototype');
21
+
22
+ /**
23
+ * Determine whether an inherited object must be treated as a shared-prototype
24
+ * boundary. Cross-realm Object.prototype objects cannot be distinguished
25
+ * reliably from application-created null-prototype objects because their
26
+ * properties are mutable, so all inherited terminal prototypes are excluded
27
+ * as a fail-closed boundary. A null-prototype source still keeps its own
28
+ * properties, as produced by mergeConfig and other safe materialization paths.
29
+ *
30
+ * @param {*} obj The object to inspect
31
+ * @param {*} prototype The object's prototype
32
+ * @param {boolean} source Whether obj is the original traversal source
33
+ *
34
+ * @returns {boolean} True when obj is a safe prototype traversal boundary
35
+ */
36
+ const isPrototypeBoundary = (obj, prototype, source) =>
37
+ obj === Object.prototype || (!source && prototype === null);
38
+
39
+ /**
40
+ * Determine whether an object can retain its identity through code paths that
41
+ * add, replace, and remove config properties without bypassing unsafe-key
42
+ * filtering. Immutable objects, unsafe-key-bearing objects, and objects with
43
+ * accessor or restricted data properties must be materialized instead.
44
+ *
45
+ * @param {*} obj The object to inspect
46
+ *
47
+ * @returns {boolean} True when every own property is safe and fully mutable
48
+ */
49
+ const isSafeAndFullyMutable = (obj) => {
50
+ if (!Object.isExtensible(obj)) {
51
+ return false;
52
+ }
53
+
54
+ const props = Object.getOwnPropertyNames(obj);
55
+
56
+ if (Object.getOwnPropertySymbols) {
57
+ props.push(...Object.getOwnPropertySymbols(obj));
58
+ }
59
+
60
+ return props.every((prop) => {
61
+ if (isUnsafeObjectKey(prop)) {
62
+ return false;
63
+ }
64
+
65
+ const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
66
+
67
+ return !!descriptor && descriptor.configurable && descriptor.writable === true;
68
+ });
69
+ };
70
+
18
71
  /**
19
- * Walk the prototype chain (excluding the shared Object.prototype) looking for
20
- * an own `prop`. This distinguishes genuine own/inherited members — including
21
- * class accessors and template prototypes — from members injected via
22
- * Object.prototype pollution (e.g. `Object.prototype.username = '...'`), which
23
- * live on Object.prototype itself and are therefore never matched.
72
+ * Walk the prototype chain (excluding the source realm's Object.prototype)
73
+ * looking for an own `prop`. This distinguishes genuine own/inherited members
74
+ * — including class accessors and template prototypes — from members injected
75
+ * via Object.prototype pollution (e.g. `Object.prototype.username = '...'`),
76
+ * which live on Object.prototype itself and are therefore never matched.
24
77
  *
25
78
  * @param {*} thing The value whose chain to inspect
26
79
  * @param {string|symbol} prop The property key to look for
@@ -31,16 +84,22 @@ const hasOwnInPrototypeChain = (thing, prop) => {
31
84
  let obj = thing;
32
85
  const seen = [];
33
86
 
34
- while (obj != null && obj !== Object.prototype) {
87
+ while (obj != null) {
35
88
  if (seen.indexOf(obj) !== -1) {
36
89
  return false;
37
90
  }
38
91
  seen.push(obj);
39
92
 
93
+ const prototype = getPrototypeOf(obj);
94
+
95
+ if (isPrototypeBoundary(obj, prototype, obj === thing)) {
96
+ return false;
97
+ }
98
+
40
99
  if (hasOwnProperty(obj, prop)) {
41
100
  return true;
42
101
  }
43
- obj = getPrototypeOf(obj);
102
+ obj = prototype;
44
103
  }
45
104
  return false;
46
105
  };
@@ -59,6 +118,69 @@ const hasOwnInPrototypeChain = (thing, prop) => {
59
118
  const getSafeProp = (obj, prop) =>
60
119
  obj != null && hasOwnInPrototypeChain(obj, prop) ? obj[prop] : undefined;
61
120
 
121
+ /**
122
+ * Flatten an object and its application-defined prototype chain into a
123
+ * null-prototype object. Members inherited only from the source realm's
124
+ * Object.prototype are deliberately excluded, while class/template members
125
+ * below that boundary are preserved.
126
+ *
127
+ * @param {*} thing The value to flatten
128
+ *
129
+ * @returns {*} A null-prototype copy, or the original value when it is already
130
+ * structurally safe or is not an object
131
+ */
132
+ const toSafeFlatObject = (thing) => {
133
+ if (thing == null || (typeof thing !== 'object' && typeof thing !== 'function')) {
134
+ return thing;
135
+ }
136
+
137
+ const sourcePrototype = getPrototypeOf(thing);
138
+
139
+ if (sourcePrototype === null && isSafeAndFullyMutable(thing)) {
140
+ return thing;
141
+ }
142
+
143
+ const result = Object.create(null);
144
+ const merged = Object.create(null);
145
+ const seen = [];
146
+ let current = thing;
147
+
148
+ while (current != null) {
149
+ if (seen.indexOf(current) !== -1) {
150
+ break;
151
+ }
152
+
153
+ seen.push(current);
154
+
155
+ const prototype = current === thing ? sourcePrototype : getPrototypeOf(current);
156
+
157
+ if (isPrototypeBoundary(current, prototype, current === thing)) {
158
+ break;
159
+ }
160
+
161
+ const props = Object.getOwnPropertyNames(current);
162
+
163
+ if (Object.getOwnPropertySymbols) {
164
+ props.push(...Object.getOwnPropertySymbols(current));
165
+ }
166
+
167
+ for (const prop of props) {
168
+ if (isUnsafeObjectKey(prop)) {
169
+ continue;
170
+ }
171
+
172
+ if (!hasOwnProperty(merged, prop)) {
173
+ result[prop] = thing[prop];
174
+ merged[prop] = true;
175
+ }
176
+ }
177
+
178
+ current = prototype;
179
+ }
180
+
181
+ return result;
182
+ };
183
+
62
184
  const kindOf = ((cache) => (thing) => {
63
185
  const str = toString.call(thing);
64
186
  return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
@@ -190,14 +312,18 @@ const isPlainObject = (val) => {
190
312
 
191
313
  const prototype = getPrototypeOf(val);
192
314
  return (
193
- (prototype === null ||
194
- prototype === Object.prototype ||
195
- getPrototypeOf(prototype) === null) &&
196
- // Treat any genuine (non-Object.prototype-polluted) Symbol.toStringTag or
197
- // Symbol.iterator as evidence the value is a tagged/iterable type rather
198
- // than a plain object, while ignoring keys injected onto Object.prototype.
199
- !hasOwnInPrototypeChain(val, toStringTag) &&
200
- !hasOwnInPrototypeChain(val, iterator)
315
+ (prototype === null || prototype === Object.prototype || getPrototypeOf(prototype) === null) &&
316
+ // Treat own Symbol.toStringTag or Symbol.iterator members as evidence the
317
+ // value is tagged/iterable, ignoring members reachable only through shared
318
+ // or terminal prototype boundaries. This is exactly what
319
+ // hasOwnInPrototypeChain(val, prop) computes here: every prototype admitted
320
+ // above (null, Object.prototype, or a terminal null-prototype template) is
321
+ // a boundary, so the walk never inspects anything but `val`'s own members,
322
+ // and stops before even those when `val` is itself the boundary
323
+ // Object.prototype. Checking that inline avoids allocating the walker's
324
+ // `seen` list twice per call on the mergeConfig / merge hot path.
325
+ (isPrototypeBoundary(val, prototype, true) ||
326
+ (!hasOwnProperty(val, toStringTag) && !hasOwnProperty(val, iterator)))
201
327
  );
202
328
  };
203
329
 
@@ -461,15 +587,30 @@ const isContextDefined = (context) => !isUndefined(context) && context !== _glob
461
587
  function merge(...objs) {
462
588
  const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};
463
589
  const result = {};
590
+ // Caseless lookup only applies to string keys — symbol keys are
591
+ // identity-matched. Every string key that reaches `result` passes through
592
+ // this index first, so it can never hold two case variants of one key and a
593
+ // lowercase -> key map is exactly what findKey(result, key) would rescan
594
+ // Object.keys(result) for on each assignment.
595
+ const lowerCaseKeys = caseless ? Object.create(null) : null;
464
596
  const assignValue = (val, key) => {
465
597
  // Skip dangerous property names to prevent prototype pollution
466
598
  if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
467
599
  return;
468
600
  }
469
601
 
470
- // findKey lowercases the key, so caseless lookup only applies to strings —
471
- // symbol keys are identity-matched.
472
- const targetKey = (caseless && typeof key === 'string' && findKey(result, key)) || key;
602
+ let targetKey = key;
603
+ if (lowerCaseKeys && typeof key === 'string') {
604
+ const lowerKey = key.toLowerCase();
605
+ const knownKey = lowerCaseKeys[lowerKey];
606
+ // A key recorded but absent from `result` was skipped by skipUndefined;
607
+ // the later spelling wins then, as it does for findKey.
608
+ if (knownKey !== undefined && hasOwnProperty(result, knownKey)) {
609
+ targetKey = knownKey;
610
+ } else {
611
+ lowerCaseKeys[lowerKey] = key;
612
+ }
613
+ }
473
614
  // Read via own-prop only — a bare `result[targetKey]` walks the prototype
474
615
  // chain, so a polluted Object.prototype value could surface here and get
475
616
  // copied into the merged result.
@@ -493,7 +634,7 @@ function merge(...objs) {
493
634
 
494
635
  forEach(source, assignValue);
495
636
 
496
- if (typeof source !== 'object' || isArray(source)) {
637
+ if (typeof source !== 'object' || isArray(source) || !Object.getOwnPropertySymbols) {
497
638
  continue;
498
639
  }
499
640
 
@@ -652,7 +793,37 @@ const toArray = (thing) => {
652
793
  if (!thing) return null;
653
794
  if (isArray(thing)) return thing;
654
795
  let i = thing.length;
655
- if (!isNumber(i)) return null;
796
+ if (!Number.isSafeInteger(i) || i < 0 || i > 0xffffffff) return null;
797
+
798
+ // Bound the copy by actual indexed properties, including hidden and inherited
799
+ // members of array-like collections, rather than by the declared length alone.
800
+ const indexes = new Set();
801
+ const seen = new Set();
802
+ let source = thing;
803
+
804
+ while (source != null && indexes.size < i) {
805
+ if (seen.has(source)) return null;
806
+ seen.add(source);
807
+
808
+ const prototype = getPrototypeOf(source);
809
+ if (isPrototypeBoundary(source, prototype, source === thing)) break;
810
+
811
+ Object.getOwnPropertyNames(source).forEach((key) => {
812
+ const index = +key;
813
+ if (
814
+ Number.isInteger(index) &&
815
+ index >= 0 &&
816
+ index < i &&
817
+ String(index) === key &&
818
+ hasOwnProperty(source, key)
819
+ ) {
820
+ indexes.add(index);
821
+ }
822
+ });
823
+ source = prototype;
824
+ }
825
+
826
+ if (indexes.size !== i) return null;
656
827
  const arr = new Array(i);
657
828
  while (i-- > 0) {
658
829
  arr[i] = thing[i];
@@ -1009,6 +1180,7 @@ export default {
1009
1180
  hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
1010
1181
  hasOwnInPrototypeChain,
1011
1182
  getSafeProp,
1183
+ toSafeFlatObject,
1012
1184
  reduceDescriptors,
1013
1185
  freezeMethods,
1014
1186
  toObjectSet,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axios",
3
- "version": "1.19.0",
3
+ "version": "1.21.0",
4
4
  "description": "Promise based HTTP client for the browser and node.js",
5
5
  "main": "./dist/node/axios.cjs",
6
6
  "module": "./index.js",
@@ -161,7 +161,6 @@
161
161
  "abortcontroller-polyfill": "^1.7.8",
162
162
  "acorn": "^8.17.0",
163
163
  "body-parser": "^2.3.0",
164
- "chalk": "^5.6.2",
165
164
  "cross-env": "^10.1.0",
166
165
  "dev-null": "^0.1.1",
167
166
  "eslint": "^10.6.0",
@@ -1,4 +1,30 @@
1
- ## Follow Redirects
1
+ ## _Follow Redirects_ is in need of funding
2
+
3
+ > [!IMPORTANT]
4
+ > **Maintenance paused until funding found.**
5
+ >
6
+ > follow-redirects is downloaded over 400 million times per month,
7
+ > It has been maintained for over ten years by one volunteer,
8
+ > who has no funds to provide update and security guarantees.
9
+ >
10
+ > **What this means for you:**
11
+ > the package stays published and keeps working as it does today,
12
+ > but there are no guarantees of bug fixes, security fixes,
13
+ > or replies to issues and pull requests.
14
+ > Security reports are handled best-effort only; see [SECURITY.md](SECURITY.md).
15
+ >
16
+ > **What can restart maintenance:**
17
+ > Even if only 0.1% of downloads paid $0.01, we'd be fully funded
18
+ > with $4000 per month.
19
+ > That's not the case, and that's okay,
20
+ > but unfortunately also insufficient to continue.
21
+ > We need to cover security triage, CVE handling, fixes, and releases.
22
+ > Progress toward that goal will be posted here.
23
+ >
24
+ > **If your company depends on follow-redirects,**
25
+ > directly or another library,
26
+ > please [sponsor on GitHub](https://github.com/sponsors/RubenVerborgh)
27
+ > or email us for invoice-based funding or a security support agreement.
2
28
 
3
29
  Drop-in replacement for Node's `http` and `https` modules that automatically follows redirects.
4
30