@zowe/db2-for-zowe-cli 6.1.17 → 6.1.18
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/axios/CHANGELOG.md +62 -0
- package/node_modules/axios/README.md +233 -5
- package/node_modules/axios/dist/axios.js +387 -89
- 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 +458 -98
- package/node_modules/axios/dist/esm/axios.js +458 -98
- 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 +568 -116
- package/node_modules/axios/index.d.cts +4 -0
- package/node_modules/axios/index.d.ts +4 -0
- package/node_modules/axios/lib/adapters/fetch.js +64 -11
- package/node_modules/axios/lib/adapters/http.js +134 -50
- package/node_modules/axios/lib/adapters/xhr.js +52 -3
- package/node_modules/axios/lib/core/Axios.js +19 -14
- package/node_modules/axios/lib/core/InterceptorManager.js +107 -8
- package/node_modules/axios/lib/core/buildFullPath.js +1 -13
- package/node_modules/axios/lib/core/dispatchRequest.js +8 -2
- package/node_modules/axios/lib/core/mergeConfig.js +1 -1
- 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/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/Http2Sessions.js +2 -0
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +11 -1
- package/node_modules/axios/lib/helpers/fromDataURI.js +5 -4
- package/node_modules/axios/lib/helpers/normalizeURLForProtocolCheck.js +24 -0
- package/node_modules/axios/lib/helpers/progressEventReducer.js +1 -1
- package/node_modules/axios/lib/helpers/resolveConfig.js +4 -2
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +182 -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 +134 -13
- package/node_modules/axios/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/package.json +10 -6
- 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
|
@@ -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,12 +312,10 @@ const isPlainObject = (val) => {
|
|
|
190
312
|
|
|
191
313
|
const prototype = getPrototypeOf(val);
|
|
192
314
|
return (
|
|
193
|
-
(prototype === null ||
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
//
|
|
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.
|
|
315
|
+
(prototype === null || prototype === Object.prototype || getPrototypeOf(prototype) === null) &&
|
|
316
|
+
// Treat safe own/inherited Symbol.toStringTag or Symbol.iterator members as
|
|
317
|
+
// evidence the value is tagged/iterable, while ignoring members reachable
|
|
318
|
+
// only through shared or terminal prototype boundaries.
|
|
199
319
|
!hasOwnInPrototypeChain(val, toStringTag) &&
|
|
200
320
|
!hasOwnInPrototypeChain(val, iterator)
|
|
201
321
|
);
|
|
@@ -1009,6 +1129,7 @@ export default {
|
|
|
1009
1129
|
hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
|
|
1010
1130
|
hasOwnInPrototypeChain,
|
|
1011
1131
|
getSafeProp,
|
|
1132
|
+
toSafeFlatObject,
|
|
1012
1133
|
reduceDescriptors,
|
|
1013
1134
|
freezeMethods,
|
|
1014
1135
|
toObjectSet,
|