@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.
- package/README.md +12 -10
- package/lib/Db2PluginLifeCycle.d.ts +11 -9
- package/lib/Db2PluginLifeCycle.js +18 -13
- package/lib/Db2PluginLifeCycle.js.map +1 -1
- package/node_modules/adm-zip/adm-zip.js +32 -6
- package/node_modules/adm-zip/headers/entryHeader.js +13 -1
- package/node_modules/adm-zip/methods/inflater.js +33 -3
- package/node_modules/adm-zip/package.json +2 -2
- package/node_modules/adm-zip/util/errors.js +3 -0
- package/node_modules/adm-zip/util/utils.js +102 -14
- package/node_modules/adm-zip/zipEntry.js +43 -18
- package/node_modules/adm-zip/zipFile.js +10 -0
- package/node_modules/axios/CHANGELOG.md +62 -0
- package/node_modules/axios/README.md +236 -73
- package/node_modules/axios/dist/axios.js +1308 -357
- package/node_modules/axios/dist/axios.min.js +3 -3
- package/node_modules/axios/dist/axios.min.js.map +1 -1
- package/node_modules/axios/dist/browser/axios.cjs +1443 -403
- package/node_modules/axios/dist/esm/axios.js +1443 -403
- package/node_modules/axios/dist/esm/axios.min.js +2 -2
- package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
- package/node_modules/axios/dist/node/axios.cjs +1483 -348
- package/node_modules/axios/index.d.cts +24 -1
- package/node_modules/axios/index.d.ts +22 -1
- package/node_modules/axios/lib/adapters/fetch.js +136 -30
- package/node_modules/axios/lib/adapters/http.js +277 -74
- package/node_modules/axios/lib/adapters/xhr.js +172 -16
- package/node_modules/axios/lib/core/Axios.js +87 -27
- package/node_modules/axios/lib/core/AxiosError.js +59 -0
- package/node_modules/axios/lib/core/AxiosHeaders.js +17 -4
- package/node_modules/axios/lib/core/InterceptorManager.js +118 -8
- package/node_modules/axios/lib/core/assertParamsAcyclic.js +49 -0
- package/node_modules/axios/lib/core/buildFullPath.js +1 -13
- package/node_modules/axios/lib/core/createMultipartBody.js +37 -0
- package/node_modules/axios/lib/core/dispatchRequest.js +28 -2
- package/node_modules/axios/lib/core/mergeConfig.js +183 -120
- package/node_modules/axios/lib/core/methodList.js +17 -0
- package/node_modules/axios/lib/defaults/index.js +2 -1
- package/node_modules/axios/lib/defaults/transitional.js +1 -0
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/AxiosTransformStream.js +11 -2
- package/node_modules/axios/lib/helpers/Http2Sessions.js +4 -1
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
- package/node_modules/axios/lib/helpers/composeSignals.js +6 -3
- package/node_modules/axios/lib/helpers/cookies.js +30 -6
- package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +34 -7
- package/node_modules/axios/lib/helpers/formDataToBlob.js +113 -0
- package/node_modules/axios/lib/helpers/formDataToJSON.js +25 -1
- package/node_modules/axios/lib/helpers/fromDataURI.js +11 -4
- package/node_modules/axios/lib/helpers/isURLSameOrigin.js +4 -9
- package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
- package/node_modules/axios/lib/helpers/parseHeaders.js +2 -1
- package/node_modules/axios/lib/helpers/parseProtocol.js +1 -1
- package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
- package/node_modules/axios/lib/helpers/resolveConfig.js +20 -5
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +197 -6
- package/node_modules/axios/lib/helpers/throttle.js +3 -2
- package/node_modules/axios/lib/helpers/toFormData.js +14 -21
- package/node_modules/axios/lib/utils.js +192 -20
- package/node_modules/axios/package.json +1 -2
- package/node_modules/follow-redirects/README.md +27 -1
- package/node_modules/follow-redirects/index.js +11 -6
- package/node_modules/follow-redirects/package.json +1 -1
- package/node_modules/fs-extra/README.md +0 -1
- package/node_modules/fs-extra/lib/empty/index.js +4 -2
- package/node_modules/fs-extra/lib/util/stat.js +12 -2
- package/node_modules/fs-extra/package.json +1 -1
- package/node_modules/ibm_db/APIDocumentation.md +2883 -2024
- package/node_modules/ibm_db/LICENSE +23 -23
- package/node_modules/ibm_db/README.md +735 -735
- package/node_modules/ibm_db/binding.gyp +99 -98
- package/node_modules/ibm_db/installer/driverInstall.js +984 -958
- package/node_modules/ibm_db/installer/ifx.sh +38 -38
- package/node_modules/ibm_db/installer/setenv.sh +23 -23
- package/node_modules/ibm_db/installer/testODBCConnection.bat +51 -51
- package/node_modules/ibm_db/installer/testODBCConnection.sh +61 -61
- package/node_modules/ibm_db/lib/climacros.js +431 -431
- package/node_modules/ibm_db/lib/odbc.js +4293 -3487
- package/node_modules/ibm_db/lib/simple-queue.js +41 -41
- package/node_modules/ibm_db/package.json +70 -70
- package/node_modules/ibm_db/src/odbc.cpp +1495 -1396
- package/node_modules/ibm_db/src/odbc.h +477 -473
- package/node_modules/ibm_db/src/odbc_connection.cpp +1762 -1612
- package/node_modules/ibm_db/src/odbc_connection.h +228 -215
- package/node_modules/ibm_db/src/odbc_result.cpp +1547 -1547
- package/node_modules/ibm_db/src/odbc_result.h +152 -152
- package/node_modules/ibm_db/src/odbc_statement.cpp +2047 -861
- package/node_modules/ibm_db/src/odbc_statement.h +257 -135
- package/node_modules/ibm_db/src/strptime.c +389 -389
- package/node_modules/ibm_db/src/strptime.h +46 -46
- package/node_modules/ibm_db/test/README +23 -23
- package/node_modules/ibm_db/test/bench-insert.js +62 -62
- package/node_modules/ibm_db/test/bench-insertBatch10.js +74 -74
- package/node_modules/ibm_db/test/bench-insertBatch100.js +75 -75
- package/node_modules/ibm_db/test/bench-insertBatch1000.js +75 -75
- package/node_modules/ibm_db/test/bench-insertBatch10000.js +75 -75
- package/node_modules/ibm_db/test/bench-prepare-bind-execute-closeSync.js +60 -60
- package/node_modules/ibm_db/test/bench-prepare-bind-executeNonQuery.js +53 -53
- package/node_modules/ibm_db/test/bench-prepare-bindSync-execute-closeSync.js +50 -50
- package/node_modules/ibm_db/test/bench-prepare-bindSync-executeNonQuery.js +48 -48
- package/node_modules/ibm_db/test/bench-prepare-execute-closeSync.js +51 -51
- package/node_modules/ibm_db/test/bench-prepare-executeNonQuery.js +47 -47
- package/node_modules/ibm_db/test/bench-prepare-not.js +43 -43
- package/node_modules/ibm_db/test/bench-query-fetch.js +59 -59
- package/node_modules/ibm_db/test/bench-query-fetchAll.js +49 -49
- package/node_modules/ibm_db/test/bench-query-fetchAllSync.js +43 -43
- package/node_modules/ibm_db/test/bench-query.js +40 -40
- package/node_modules/ibm_db/test/bench-querySync-fetchArray.js +28 -28
- package/node_modules/ibm_db/test/bench-querySync.js +29 -29
- package/node_modules/ibm_db/test/common.d.ts +10 -10
- package/node_modules/ibm_db/test/common.js +127 -127
- package/node_modules/ibm_db/test/config.json +7 -7
- package/node_modules/ibm_db/test/config.zos.json +4 -4
- package/node_modules/ibm_db/test/data/sample1.txt +9 -9
- package/node_modules/ibm_db/test/data/trc.fmt +30114 -30114
- package/node_modules/ibm_db/test/nodeEE-leak-huge-query.js +152 -152
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-multiple-connections.js +148 -148
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query-pool-connections.js +154 -154
- package/node_modules/ibm_db/test/nodeEE-leak-multiple-query.js +133 -133
- package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall-multiple-connections.js +174 -174
- package/node_modules/ibm_db/test/nodeEE-stress-async-waterfall.js +169 -169
- package/node_modules/ibm_db/test/nodeEE-stress-mixed-query-multiple-connections.js +159 -159
- package/node_modules/ibm_db/test/nodeEE-stress-mixed-query.js +148 -148
- package/node_modules/ibm_db/test/odbc-bench.c +123 -123
- package/node_modules/ibm_db/test/perfTest.js +53 -53
- package/node_modules/ibm_db/test/quick-example.sh +30 -30
- package/node_modules/ibm_db/test/quick-example.ts +80 -80
- package/node_modules/ibm_db/test/run-bench.js +96 -96
- package/node_modules/ibm_db/test/run-nodeEE.js +132 -132
- package/node_modules/ibm_db/test/run-tests.js +132 -138
- package/node_modules/ibm_db/test/sql-cli.js +28 -28
- package/node_modules/ibm_db/test/test-all-data-types.js +109 -109
- package/node_modules/ibm_db/test/test-array-insert.js +178 -178
- package/node_modules/ibm_db/test/test-async-await.js +105 -105
- package/node_modules/ibm_db/test/test-attributes.js +34 -34
- package/node_modules/ibm_db/test/test-bad-pool-connection-prepare-execute.js +57 -57
- package/node_modules/ibm_db/test/test-basic-test.js +138 -138
- package/node_modules/ibm_db/test/test-binary-array-insert.js +73 -73
- package/node_modules/ibm_db/test/test-blob-from-file.js +90 -90
- package/node_modules/ibm_db/test/test-blob-insert.js +144 -144
- package/node_modules/ibm_db/test/test-blob-stream-insert.js +321 -299
- package/node_modules/ibm_db/test/test-blob-to-file.js +370 -370
- package/node_modules/ibm_db/test/test-block-fetch.js +364 -364
- package/node_modules/ibm_db/test/test-blocking-issue210.js +123 -123
- package/node_modules/ibm_db/test/test-call-async.js +64 -64
- package/node_modules/ibm_db/test/test-call-stmt.js +53 -53
- package/node_modules/ibm_db/test/test-cancel.js +703 -0
- package/node_modules/ibm_db/test/test-chinese-char.js +59 -59
- package/node_modules/ibm_db/test/test-connection.js +306 -0
- package/node_modules/ibm_db/test/test-date.js +32 -32
- package/node_modules/ibm_db/test/test-dbclob.js +93 -93
- package/node_modules/ibm_db/test/test-decimals.js +135 -135
- package/node_modules/ibm_db/test/test-describe-metadata.js +148 -0
- package/node_modules/ibm_db/test/test-executeFile.js +167 -167
- package/node_modules/ibm_db/test/test-executeFileSync.js +85 -85
- package/node_modules/ibm_db/test/test-fetch-apis.js +146 -146
- package/node_modules/ibm_db/test/test-fetchN.js +130 -130
- package/node_modules/ibm_db/test/test-getinfo.js +197 -197
- package/node_modules/ibm_db/test/test-ibm-db-issue14.js +58 -58
- package/node_modules/ibm_db/test/test-ibm-db-issue17.js +54 -54
- package/node_modules/ibm_db/test/test-ibm-db-issue18.js +54 -54
- package/node_modules/ibm_db/test/test-issue-1059-fetchAll-undefined.js +67 -67
- package/node_modules/ibm_db/test/test-issue-1080-array-blob-insert.js +40 -0
- package/node_modules/ibm_db/test/test-issue-54.js +39 -39
- package/node_modules/ibm_db/test/test-issue-get-column-value-2.js +44 -44
- package/node_modules/ibm_db/test/test-issue211.js +80 -80
- package/node_modules/ibm_db/test/test-issue253.js +39 -39
- package/node_modules/ibm_db/test/test-max-pool-size.js +96 -96
- package/node_modules/ibm_db/test/test-memory-leaks-new-objects.js +32 -32
- package/node_modules/ibm_db/test/test-multi-open-query-close.js +75 -75
- package/node_modules/ibm_db/test/test-param-put-data.js +713 -0
- package/node_modules/ibm_db/test/test-pool-idle-connection.js +72 -72
- package/node_modules/ibm_db/test/test-pool-operations.js +325 -0
- package/node_modules/ibm_db/test/test-pool-stale-connections.js +111 -111
- package/node_modules/ibm_db/test/test-pool-uncommited.js +33 -33
- package/node_modules/ibm_db/test/test-prepare-execute.js +339 -0
- package/node_modules/ibm_db/test/test-prepareSync-multiple-execution.js +93 -93
- package/node_modules/ibm_db/test/test-primary-foreign-keys.js +246 -0
- package/node_modules/ibm_db/test/test-procedures.js +243 -0
- package/node_modules/ibm_db/test/test-promise-all-data-types.js +42 -42
- package/node_modules/ibm_db/test/test-query-operations.js +405 -0
- package/node_modules/ibm_db/test/test-quick-example.js +25 -25
- package/node_modules/ibm_db/test/test-row-array-insert.js +167 -167
- package/node_modules/ibm_db/test/test-sp-array.js +54 -54
- package/node_modules/ibm_db/test/test-sp-dbc-6000.js +88 -88
- package/node_modules/ibm_db/test/test-sp-memleak.js +136 -136
- package/node_modules/ibm_db/test/test-sp-resultset-execute.js +269 -269
- package/node_modules/ibm_db/test/test-sp-resultset.js +228 -228
- package/node_modules/ibm_db/test/test-transactions.js +261 -0
- package/node_modules/ibm_db/test/test-typescript.js +48 -48
- package/node_modules/ibm_db/test/test-xml-datatype.js +70 -70
- package/node_modules/ibm_db/test/testWebApp.js +56 -56
- package/node_modules/ibm_db/test/trace +51 -51
- package/node_modules/ibm_db/test/typescript-apis-test.js +978 -978
- package/node_modules/ibm_db/test/webapp.html +17 -17
- package/node_modules/ibm_db/test/webapp.js +79 -79
- package/node_modules/ibm_db/typescript/README.md +28 -28
- package/node_modules/ibm_db/typescript/dist/Database.d.ts +26 -0
- package/node_modules/ibm_db/typescript/dist/ODBCStatement.d.ts +93 -0
- package/node_modules/string_decoder/node_modules/safe-buffer/LICENSE +21 -0
- package/node_modules/string_decoder/node_modules/safe-buffer/README.md +584 -0
- package/node_modules/string_decoder/node_modules/safe-buffer/index.d.ts +187 -0
- package/node_modules/string_decoder/node_modules/safe-buffer/index.js +62 -0
- package/node_modules/string_decoder/node_modules/safe-buffer/package.json +37 -0
- package/node_modules/which-typed-array/CHANGELOG.md +14 -0
- package/node_modules/which-typed-array/README.md +0 -2
- package/node_modules/which-typed-array/index.d.ts +288 -11
- package/node_modules/which-typed-array/index.js +6 -7
- package/node_modules/which-typed-array/package.json +12 -11
- package/package.json +10 -11
- package/node_modules/ibm_db/test/disabled/test-binding-statement-rebinding.js +0 -59
- package/node_modules/ibm_db/test/disabled/test-open-dont-close.js +0 -12
- package/node_modules/ibm_db/test/disabled/test-param-select-with-booleans-only.js +0 -21
- package/node_modules/ibm_db/test/disabled/test-param-select-with-decimals-only.js +0 -20
- package/node_modules/ibm_db/test/disabled/test-param-select-with-null.js +0 -21
- package/node_modules/ibm_db/test/disabled/test-param-select-with-nulls-mixed.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-mixed.js +0 -22
- package/node_modules/ibm_db/test/disabled/test-param-select-with-numbers-only.js +0 -24
- package/node_modules/ibm_db/test/disabled/test-param-select-with-strings-only.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-param-select-with-unicode.js +0 -15
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-closeSync.js +0 -62
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-error.js +0 -49
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-execute-long-string.js +0 -63
- package/node_modules/ibm_db/test/disabled/test-prepare-bind-executeNonQuery.js +0 -63
- package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-execute-closeSync.js +0 -46
- package/node_modules/ibm_db/test/disabled/test-prepare-bindSync-executeNonQuery.js +0 -50
- package/node_modules/ibm_db/test/disabled/test-prepare.js +0 -34
- package/node_modules/ibm_db/test/disabled/test-prepareSync.js +0 -29
- package/node_modules/ibm_db/test/disabled/test-query-select-fetchAll.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-query-select-fetchAllSync.js +0 -23
- package/node_modules/ibm_db/test/disabled/test-query-select-unicode.js +0 -15
- package/node_modules/ibm_db/test/disabled/test-querySync-select-unicode.js +0 -20
- package/node_modules/ibm_db/test/test-affected-rows.js +0 -55
- package/node_modules/ibm_db/test/test-bad-connection-string.js +0 -30
- package/node_modules/ibm_db/test/test-binding-connection-timeOut.js +0 -31
- package/node_modules/ibm_db/test/test-binding-statement-executeSync.js +0 -84
- package/node_modules/ibm_db/test/test-binding-transaction-commit.js +0 -79
- package/node_modules/ibm_db/test/test-binding-transaction-commitSync.js +0 -53
- package/node_modules/ibm_db/test/test-closed.js +0 -14
- package/node_modules/ibm_db/test/test-connection-object.js +0 -16
- package/node_modules/ibm_db/test/test-describe-column.js +0 -92
- package/node_modules/ibm_db/test/test-describe-database.js +0 -18
- package/node_modules/ibm_db/test/test-describe-table.js +0 -31
- package/node_modules/ibm_db/test/test-domains-open.js +0 -19
- package/node_modules/ibm_db/test/test-global-open-close.js +0 -11
- package/node_modules/ibm_db/test/test-instantiate-one-and-end.js +0 -9
- package/node_modules/ibm_db/test/test-multi-open-close.js +0 -45
- package/node_modules/ibm_db/test/test-multi-openSync-closeSync.js +0 -52
- package/node_modules/ibm_db/test/test-open-close.js +0 -29
- package/node_modules/ibm_db/test/test-open-connectTimeout.js +0 -33
- package/node_modules/ibm_db/test/test-openSync.js +0 -31
- package/node_modules/ibm_db/test/test-pool-close.js +0 -120
- package/node_modules/ibm_db/test/test-pool-connect.js +0 -36
- package/node_modules/ibm_db/test/test-pool-rollbackTransaction.js +0 -35
- package/node_modules/ibm_db/test/test-prepareSync-bad-sql.js +0 -34
- package/node_modules/ibm_db/test/test-promise-open-close.js +0 -33
- package/node_modules/ibm_db/test/test-query-create-table-fetchSync.js +0 -23
- package/node_modules/ibm_db/test/test-query-create-table.js +0 -12
- package/node_modules/ibm_db/test/test-query-drop-table.js +0 -13
- package/node_modules/ibm_db/test/test-query-insert.js +0 -38
- package/node_modules/ibm_db/test/test-query-select-fetch.js +0 -21
- package/node_modules/ibm_db/test/test-query-select-fetchMode-array.js +0 -17
- package/node_modules/ibm_db/test/test-query-select.js +0 -64
- package/node_modules/ibm_db/test/test-queryResult.js +0 -35
- package/node_modules/ibm_db/test/test-queryStream.js +0 -43
- package/node_modules/ibm_db/test/test-querySync-select-with-exception.js +0 -25
- package/node_modules/ibm_db/test/test-querySync-select.js +0 -28
- package/node_modules/ibm_db/test/test-require-and-end.js +0 -8
- package/node_modules/ibm_db/test/test-statement-close.js +0 -118
- package/node_modules/ibm_db/test/test-transaction-commit-sync.js +0 -54
- package/node_modules/ibm_db/test/test-transaction-commit.js +0 -79
- package/node_modules/which-typed-array/eslint.config.mjs +0 -12
- package/node_modules/which-typed-array/test/index.js +0 -105
- /package/node_modules/{tar-fs/node_modules/chownr → chownr}/LICENSE +0 -0
- /package/node_modules/{tar-fs/node_modules/chownr → chownr}/README.md +0 -0
- /package/node_modules/{tar-fs/node_modules/chownr → chownr}/chownr.js +0 -0
- /package/node_modules/{tar-fs/node_modules/chownr → chownr}/package.json +0 -0
- /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/.travis.yml +0 -0
- /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/LICENSE +0 -0
- /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/README.md +0 -0
- /package/node_modules/{tar-stream/node_modules/string_decoder → string_decoder}/lib/string_decoder.js +0 -0
- /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
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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 =
|
|
107
|
+
const metaTokens = option('metaTokens', true);
|
|
118
108
|
// eslint-disable-next-line no-use-before-define
|
|
119
|
-
const visitor =
|
|
120
|
-
const dots =
|
|
121
|
-
const indexes =
|
|
122
|
-
const _Blob =
|
|
123
|
-
const 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(
|
|
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
|
|
20
|
-
* an own `prop`. This distinguishes genuine own/inherited members
|
|
21
|
-
* class accessors and template prototypes — from members injected
|
|
22
|
-
* Object.prototype pollution (e.g. `Object.prototype.username = '...'`),
|
|
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
|
|
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 =
|
|
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
|
-
|
|
195
|
-
|
|
196
|
-
//
|
|
197
|
-
//
|
|
198
|
-
//
|
|
199
|
-
|
|
200
|
-
|
|
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
|
-
|
|
471
|
-
|
|
472
|
-
|
|
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 (!
|
|
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.
|
|
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
|
-
##
|
|
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
|
|