diff --git a/.evergreen/functions.yml b/.evergreen/functions.yml index ca1e602d2c1..27787aa4999 100644 --- a/.evergreen/functions.yml +++ b/.evergreen/functions.yml @@ -64,10 +64,6 @@ variables: E2E_TESTS_ATLAS_READANYDATABASE_STRING: ${e2e_tests_atlas_readanydatabase_string} E2E_TESTS_ATLAS_CUSTOMROLE_STRING: ${e2e_tests_atlas_customrole_string} E2E_TESTS_ATLAS_SPECIFICPERMISSION_STRING: ${e2e_tests_atlas_specificpermission_string} - NOTARY_URL: http://notary-service.build.10gen.cc:5000 - NOTARY_AUTH_TOKEN: ${signing_auth_token} - NOTARY_SIGNING_KEY: ${signing_key_name} - NOTARY_SIGNING_COMMENT: Evergreen project mongodb/compass ${revision} - ${build_variant} - ${branch_name} MACOS_NOTARY_KEY: ${macos_notary_key} MACOS_NOTARY_SECRET: ${macos_notary_secret} MACOS_NOTARY_CLIENT_URL: 'https://macos-notary-1628249594.s3.amazonaws.com/releases/client/latest/darwin_amd64.zip' @@ -80,6 +76,10 @@ variables: MONGODB_RUNNER_LOG_DIR: ${workdir}/src/.testserver/ E2E_TESTS_ATLAS_CS_WITHOUT_SEARCH: ${e2e_tests_atlas_cs_without_search} E2E_TESTS_ATLAS_CS_WITH_SEARCH: ${e2e_tests_atlas_cs_with_search} + GARASIGN_USERNAME: ${garasign_username} + GARASIGN_PASSWORD: ${garasign_password} + ARTIFACTORY_USERNAME: ${artifactory_username} + ARTIFACTORY_PASSWORD: ${artifactory_password} # This is here with the variables because anchors aren't supported across includes post: @@ -306,6 +306,85 @@ functions: # and be able to find the binary that is used for the tests file: src/packages/compass/expansions.yml + spawn-signing-server: + # spawn + - command: host.create + type: setup + params: + provider: ec2 + distro: ubuntu2004-large + security_group_ids: + - sg-097bff6dd0d1d31d0 # Magic string that's needed for SSH'ing. + # write host info (this file will be read by signingtool when connection to ssh server) + - command: host.list + params: + num_hosts: 1 + path: spawned_hosts.json + timeout_seconds: 1200 + wait: true + # copy ssh key (this key will be used to connect to ssh server) + - command: shell.exec + params: + shell: bash + script: | + set -e + { + set +x + echo '${__project_aws_ssh_key_value}' > ~/.ssh/mcipacker.pem + chmod 0600 ~/.ssh/mcipacker.pem + set -x + } + # wait for host to be ready + - command: shell.exec + params: + exec_as_string: true + shell: bash + script: | + set -e + user=ubuntu + hostname=$(tr -d '"[]{}' < spawned_hosts.json | cut -d , -f 1 | awk -F : '{print $2}') + identity_file=$(echo ~/.ssh/mcipacker.pem) + + attempts=0 + connection_attempts=25 + + ## Check for remote connectivity + while ! ssh \ + -i "$identity_file" \ + -o ConnectTimeout=10 \ + -o ForwardAgent=yes \ + -o IdentitiesOnly=yes \ + -o StrictHostKeyChecking=no \ + "$(printf "%s@%s" "$user" "$hostname")" \ + exit + do + if [ "$attempts" -ge "$connection_attempts" ]; then + echo "SSH connection failed after $connection_attempts attempts. Exiting..." + exit 1 + fi + printf "SSH connection attempt %d/%d failed. Retrying...\n" "$((attempts++))" "$connection_attempts" + ## sleep for Permission denied (publickey) errors + sleep 20 + done + echo "SSH connection established after $attempts attempts" + + # Write the host info so that it can be used by the signing tool + if [[ $OSTYPE == "cygwin" ]]; then + identity_file=$(cygpath -wa "$identity_file") + else + identity_file=$(eval echo "$identity_file") + fi + cat < signing_host_info.yml + SIGNING_SERVER_HOSTNAME: $hostname + SIGNING_SERVER_PRIVATE_KEY: $identity_file + SIGNING_SERVER_USERNAME: $user + SIGNING_SERVER_PORT: 22 + EOL + # Update the expansions + - command: expansions.update + params: + file: signing_host_info.yml + package: - command: shell.exec params: @@ -316,6 +395,10 @@ functions: DEBUG: ${debug} npm_config_loglevel: ${npm_loglevel} COMPASS_DISTRIBUTION: ${compass_distribution} + SIGNING_SERVER_HOSTNAME: ${SIGNING_SERVER_HOSTNAME} + SIGNING_SERVER_PRIVATE_KEY: ${SIGNING_SERVER_PRIVATE_KEY} + SIGNING_SERVER_USERNAME: ${SIGNING_SERVER_USERNAME} + SIGNING_SERVER_PORT: ${SIGNING_SERVER_PORT} script: | set -e @@ -504,12 +587,26 @@ functions: remote_file: ${project}/${revision}_${revision_order_id}/${windows_zip_filename} content_type: application/zip optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${windows_zip_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${windows_zip_sign_filename} + content_type: application/pgp-signature + optional: true - command: s3.put params: <<: *save-artifact-params-public local_file: src/packages/compass/dist/${windows_nupkg_full_filename} remote_file: ${project}/${revision}_${revision_order_id}/${windows_nupkg_full_filename} optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${windows_nupkg_full_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${windows_nupkg_full_sign_filename} + content_type: application/pgp-signature + optional: true - command: s3.put params: <<: *save-artifact-params-public @@ -530,6 +627,13 @@ functions: remote_file: ${project}/${revision}_${revision_order_id}/${osx_zip_filename} content_type: application/zip optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${osx_zip_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${osx_zip_sign_filename} + content_type: application/pgp-signature + optional: true - command: s3.put params: <<: *save-artifact-params-public @@ -537,6 +641,13 @@ functions: remote_file: ${project}/${revision}_${revision_order_id}/${linux_rpm_filename} content_type: application/x-redhat-package-manager optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${linux_rpm_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${linux_rpm_sign_filename} + content_type: application/pgp-signature + optional: true - command: s3.put params: <<: *save-artifact-params-public @@ -544,6 +655,13 @@ functions: remote_file: ${project}/${revision}_${revision_order_id}/${rhel_tar_filename} content_type: application/x-gzip optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${rhel_tar_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${rhel_tar_sign_filename} + content_type: application/pgp-signature + optional: true - command: s3.put params: <<: *save-artifact-params-public @@ -551,6 +669,13 @@ functions: remote_file: ${project}/${revision}_${revision_order_id}/${linux_deb_filename} content_type: application/vnd.debian.binary-package optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${linux_deb_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${linux_deb_sign_filename} + content_type: application/pgp-signature + optional: true - command: s3.put params: <<: *save-artifact-params-public @@ -558,6 +683,13 @@ functions: remote_file: ${project}/${revision}_${revision_order_id}/${linux_tar_filename} content_type: application/x-gzip optional: true + - command: s3.put + params: + <<: *save-artifact-params-public + local_file: src/packages/compass/dist/${linux_tar_sign_filename} + remote_file: ${project}/${revision}_${revision_order_id}/${linux_tar_sign_filename} + content_type: application/pgp-signature + optional: true get-all-artifacts: - command: shell.exec diff --git a/.evergreen/tasks.yml b/.evergreen/tasks.yml index 32115bec8f9..9d8ab9a0fbc 100644 --- a/.evergreen/tasks.yml +++ b/.evergreen/tasks.yml @@ -105,6 +105,7 @@ tasks: - func: apply-compass-target-expansion vars: compass_distribution: compass + - func: spawn-signing-server - func: package vars: debug: 'hadron*,mongo*,compass*,electron*' @@ -124,6 +125,7 @@ tasks: - func: apply-compass-target-expansion vars: compass_distribution: compass-readonly + - func: spawn-signing-server - func: package vars: debug: 'hadron*,mongo*,compass*,electron*' @@ -143,6 +145,7 @@ tasks: - func: apply-compass-target-expansion vars: compass_distribution: compass-isolated + - func: spawn-signing-server - func: package vars: debug: 'hadron*,mongo*,compass*,electron*' diff --git a/.snyk b/.snyk index ae36fd7d368..0789c2e20e2 100644 --- a/.snyk +++ b/.snyk @@ -13,8 +13,8 @@ ignore: SNYK-JS-AGGRIDCOMMUNITY-1932011: - '*': reason: None Given - expires: 2024-02-09T14:01:23.838Z - created: 2024-01-10T14:01:23.846Z + expires: 2024-07-17T18:27:24.346Z + created: 2024-01-18T18:27:24.353Z SNYK-JS-AXIOS-6032459: - '*': reason: Not applicable to axios usage inside node-analytics package diff --git a/README.md b/README.md index c4ca5ed3856..22f0d054cbc 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,6 @@ Is there anything else you’d like to see in Compass? Let us know by submitting - [**@mongodb-js/databases-collections-list**](packages/databases-collections-list): List view for the databases and collections - [**@mongodb-js/explain-plan-helper**](packages/explain-plan-helper): Explain plan utility methods for MongoDB Compass - [**@mongodb-js/hadron-plugin-manager**](packages/hadron-plugin-manager): Hadron Plugin Manager -- [**@mongodb-js/mongodb-notary-service-client**](packages/notary-service-client): A client for our notary-service: an API for codesigning - [**@mongodb-js/ssh-tunnel**](packages/ssh-tunnel): Yet another ssh tunnel based on ssh2 - [**bson-transpilers**](packages/bson-transpilers): Source to source compilers using ANTLR - [**compass-e2e-tests**](packages/compass-e2e-tests): E2E test suite for Compass app that follows smoke tests / feature testing matrix diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 5699dffde18..f7cce14def5 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Mon Jan 15 2024. +This document was automatically generated on Sun Jan 21 2024. ## List of dependencies @@ -176,7 +176,7 @@ This document was automatically generated on Mon Jan 15 2024. | **[antlr4](#c5ad356fae2f067425b6c90b7251290842a1f2dec296bbd5afd5ccc32dcf3acc)** | 4.7.2 | BSD-3-Clause | | **[array-flatten](#832052c97b92484a7685d432fbdac9cb8d6cd26a0de715df336780d91762bfc9)** | 1.1.1 | MIT | | **[array-next](#2eca7126c828f7c4b047e8bc3982acc390adc906c9e1fd2ab512d7ade811a40d)** | 0.0.1 | MIT | -| **[asn1](#5363ee1aa0a9a8fd1531804a5ce1572535002c9149fe851f53f26dfecfa36c81)** | 0.2.4 | MIT | +| **[asn1](#c03a7b8eb9b75e350660b88148698446ab536a4ea01c5f321c14036a86aac2ef)** | 0.2.6 | MIT | | **[aws4](#10a86cbc2356f4c2e30ecdd2d3f40dce2dee62e2a2efa860bf539568a5d14573)** | 1.11.0 | MIT | | **[balanced-match](#6e49452be6da3ff39a94487487f3deac4037af19d9c97eddf6794b8080252f20)** | 1.0.2 | MIT | | **[base64-js](#cf278cb8d073b3bd22b60816c2ba78b69043aec6bcd673437b4c1db3375153d6)** | 1.5.1 | MIT | @@ -218,7 +218,7 @@ This document was automatically generated on Mon Jan 15 2024. | **[cookie-signature](#28f6116b52488ac66a14424869fc346f611bea6c894e7d0f7f2ca701deb8e49c)** | 1.0.6 | MIT | | **[cookie](#9bf3d499045a2314903d567785cc2592bafc25b36c343a6fa843d86c5722ca74)** | 0.5.0 | MIT | | **[core-js](#2d0305d15eab4ad23db10b97faf9d8e8e0d5ad30a616c5892d1edd535d8a08c8)** | 3.17.3 | MIT | -| **[cpu-features](#8957e32154855b96327732ca511c702dcd9a73f017e3f95ad1631aeafcb8d2c9)** | 0.0.7 | MIT | +| **[cpu-features](#fa992e00865a6ed732ac63bbf64c89ee2da4ec39944684e6002a3a34b5adb65c)** | 0.0.9 | MIT | | **[crelt](#9eba7acaba2af9d27a0a18fcf40d1f133ffa888d85321e4633e7dac58cab2db9)** | 1.0.5 | MIT | | **[cross-fetch](#f948e64edfba7772a41d87641b0b5a2f7b23e88f1ae4c62fa9c425b76bd56670)** | 3.1.6 | MIT | | **[cross-spawn](#67de3a765808182ee1018c35bc07d7a023a8d645e98cc32814dcac2fc2c427ff)** | 7.0.3 | MIT | @@ -249,7 +249,7 @@ This document was automatically generated on Mon Jan 15 2024. | **[ejson-shell-parser](#1d4694ba430009acb84cb34d7d2f60a89bdb1f8fc199574ccb0c34b6c7e389a7)** | 2.0.0 | MIT | | **[electron-dl](#e97e034c7b93c63e7a433d75f6f1de3e0668764225ebbd61dbde8d1b55d6f3b7)** | 3.5.0 | MIT | | **[electron-squirrel-startup](#dcda22e402581a033ec2a017d6d05c094bf3173c1b03ae0471b2ce9078d3f601)** | 1.0.0 | Apache-2.0 | -| **[electron](#9f9cd5566dca23471439b2911ef131673369a7fbb7bf2dfbd640c21600334dfa)** | 28.1.0 | MIT | +| **[electron](#5ed223a1177f3a5efacab2f76611fab7dfbf6539cbb652918b5656115906a144)** | 28.1.4 | MIT | | **[encodeurl](#b89152db475e86531e570f87b45d8a51aa5e5d87d4cc3b960cee7b8febf1d26a)** | 1.0.2 | MIT | | **[end-of-stream](#fadc10994f5fa767d06fb25cfff35fb17a895daf3bc3477c782907668ed16563)** | 1.4.4 | MIT | | **[ensure-error](#3b1eba5276d89414cef21a1007e85c4f1d6749bf57b300e082ab23975a41dbc9)** | 3.0.1 | MIT | @@ -448,7 +448,7 @@ This document was automatically generated on Mon Jan 15 2024. | **[mustache](#9e574ae3fa6282e512b5f57e7b1b1e9463c95d0301c65e2684cb120df415c5ee)** | 4.2.0 | MIT | | **[napi-build-utils](#26912b5ff7632f262d64273f99cd1a869376c5c378960e24501585e35b31054a)** | 1.0.2 | MIT | | **[negotiator](#e3856213d8f0a7d28cd4166e53ec7e2c019cb7becf4a8535097bac28d21e8579)** | 0.6.3 | MIT | -| **[node-abi](#1ef183f825c770aa3067793626d6bf6250b15aff10395fc241a41ec281d302fd)** | 3.52.0 | MIT | +| **[node-abi](#27522d9e57504f18dd474099cf0d47b02d2bfe9b1b8622687cf42f8d215ccd34)** | 3.54.0 | MIT | | **[node-addon-api](#af9f7588524ca4e68f4efe7b24aea46d9c8004263b1d7cf3b558f86d87a163e8)** | 4.3.0 | MIT | | **[node-fetch](#ae6aab546df323cd6f4923b0c8f2d5d7119e13c5d5715a9a4983dccb054acf30)** | 2.6.11 | MIT | | **[node-fetch](#364527ef1b51cc6ac34872b931049c9e25b5014f9b40e3898c84e1a830e21720)** | 2.6.7 | MIT | @@ -538,7 +538,7 @@ This document was automatically generated on Mon Jan 15 2024. | **[source-map](#40ab158a4f9c7e0cb2e7fc113cfd0df14cabf73f76ff90e255227d216f5ce28c)** | 0.5.7 | BSD-3-Clause | | **[sparse-bitfield](#0cbcf2cac3ff859d288ae5ffc2c793bbd2430b120f5930bd09b6dba7259086d7)** | 3.0.3 | MIT | | **[sprintf](#c63a6bebfa83da6f3839f612c84417ced9cf8c00fbd6a4ca387a7e546f569deb)** | 0.1.3 | BSD-3-Clause | -| **[ssh2](#95d9a21dd6ddfaf052cd4ba91d8918f35d938053b60b69991db563aeca141654)** | 1.12.0 | MIT | +| **[ssh2](#caa88a7f6fedc946b33fe4cdcd84104598cca8b841b593d1ffb031578cd3d8c9)** | 1.15.0 | MIT | | **[statuses](#a347e5a1994ef74647a2af80f58030a572f71173d5c1dfc0ce6eb55f4005b17d)** | 2.0.1 | MIT | | **[stream-chain](#dbe4594ad347bd2850f84bc41ea7ed1f0bebb82c38b9e7e0f6820d1c071e534c)** | 2.2.5 | BSD-3-Clause | | **[stream-json](#ff32de703b38cb80287bf73b31ddc47fb97277eadcfb231017f31a06824e41e0)** | 1.7.5 | BSD-3-Clause | @@ -18176,9 +18176,9 @@ License files: License tags: MIT - + -### [asn1](https://www.npmjs.com/package/asn1) (version 0.2.4) +### [asn1](https://www.npmjs.com/package/asn1) (version 0.2.6) License tags: MIT @@ -19673,9 +19673,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [cpu-features](https://www.npmjs.com/package/cpu-features) (version 0.0.7) +### [cpu-features](https://www.npmjs.com/package/cpu-features) (version 0.0.9) License tags: MIT @@ -21058,9 +21058,9 @@ License files: See the License for the specific language governing permissions and limitations under the License. - + -### [electron](https://www.npmjs.com/package/electron) (version 28.1.0) +### [electron](https://www.npmjs.com/package/electron) (version 28.1.4) License tags: MIT @@ -30003,9 +30003,9 @@ License files: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [node-abi](https://www.npmjs.com/package/node-abi) (version 3.52.0) +### [node-abi](https://www.npmjs.com/package/node-abi) (version 3.54.0) License tags: MIT @@ -39265,9 +39265,9 @@ License files: License tags: BSD-3-Clause - + -### [ssh2](https://www.npmjs.com/package/ssh2) (version 1.12.0) +### [ssh2](https://www.npmjs.com/package/ssh2) (version 1.15.0) License tags: MIT diff --git a/configs/webpack-config-compass/package.json b/configs/webpack-config-compass/package.json index d92b41dfc93..e5b5db177d8 100644 --- a/configs/webpack-config-compass/package.json +++ b/configs/webpack-config-compass/package.json @@ -74,7 +74,7 @@ "cli-progress": "^3.9.1", "core-js": "^3.17.3", "css-loader": "^4.3.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "html-webpack-plugin": "^5.3.2", "less-loader": "^10.0.1", "mini-css-extract-plugin": "^2.3.0", diff --git a/package-lock.json b/package-lock.json index cda80972d88..7932ed6f8c1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -187,7 +187,7 @@ "cli-progress": "^3.9.1", "core-js": "^3.17.3", "css-loader": "^4.3.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "html-webpack-plugin": "^5.3.2", "less-loader": "^10.0.1", "mini-css-extract-plugin": "^2.3.0", @@ -4074,9 +4074,9 @@ } }, "node_modules/@electron/rebuild": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.4.1.tgz", - "integrity": "sha512-iMKb6KJgKcdURbejs0j2GLEmrY8uY4rg1ESThXx9sFTgdWb8UOfJuTqW6LIEtcoY8FrbFqDmJrkWc4tBpdStXw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.5.0.tgz", + "integrity": "sha512-pWRza7F+JxzTNATkEgI5iW7lAQTVBtU5r6ZjUSbrD04kbuQWUIHBcuvqosaHvKLmTpdRlsZQkPxTYciIoOWf3A==", "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", @@ -4085,7 +4085,7 @@ "fs-extra": "^10.0.0", "got": "^11.7.0", "node-abi": "^3.45.0", - "node-api-version": "^0.1.4", + "node-api-version": "^0.2.0", "node-gyp": "^9.0.0", "ora": "^5.1.0", "read-binary-file-arch": "^1.0.6", @@ -4792,9 +4792,9 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "node_modules/@gribnoysup/mongodb-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@gribnoysup/mongodb-browser/-/mongodb-browser-1.2.0.tgz", - "integrity": "sha512-K662GvGKghNtKcSE0bbJviieJ2dj8pFN+PRQf+a9ACy5dvO2rAzbY8uw+QDgkGnxgvqhWV/QKhyKnxi0JWF6Dw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@gribnoysup/mongodb-browser/-/mongodb-browser-1.3.0.tgz", + "integrity": "sha512-kvX0Tk0jNT0y4OZ7SUbe0yMC7A00PDOHDMLz0ScUPDmLsPCcPU7mbE3ESUgH98uidCxHGpTkg1LI+dSGOd6gZA==", "dev": true, "peerDependencies": { "bson": "^6.2.0", @@ -8327,10 +8327,6 @@ } } }, - "node_modules/@mongodb-js/mongodb-notary-service-client": { - "resolved": "packages/notary-service-client", - "link": true - }, "node_modules/@mongodb-js/mongodb-redux-common": { "resolved": "packages/redux-common", "link": true @@ -8549,9 +8545,9 @@ } }, "node_modules/@mongodb-js/saslprep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", "dependencies": { "sparse-bitfield": "^3.0.3" } @@ -8637,6 +8633,31 @@ "node": ">=8" } }, + "node_modules/@mongodb-js/signing-utils": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/signing-utils/-/signing-utils-0.2.3.tgz", + "integrity": "sha512-9JofubOY8B2I9+SoQCkDV3DC4xNU0Vevb6L/7FC3OmLz/5jzrmLkJ5B6VmLOi1nlIV+q0leEopIZUvJZ9BIPrQ==", + "dependencies": { + "debug": "^4.3.4", + "ssh2": "^1.15.0" + } + }, + "node_modules/@mongodb-js/signing-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/@mongodb-js/ssh-tunnel": { "resolved": "packages/ssh-tunnel", "link": true @@ -16185,9 +16206,9 @@ } }, "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { "safer-buffer": "~2.1.0" } @@ -18010,15 +18031,6 @@ "node": ">=8" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -18420,11 +18432,6 @@ "component-indexof": "0.0.3" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "node_modules/component-event": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.1.4.tgz", @@ -18793,11 +18800,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" - }, "node_modules/copy-anything": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", @@ -18859,9 +18861,9 @@ } }, "node_modules/cpu-features": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.7.tgz", - "integrity": "sha512-fjzFmsUKKCrC9GrM1eQTvQx18e+kjXFzjRLvJPNEDjk31+bJ6ZiV6uchv/hzbzXVIgbWdrEyyX1IFKwse65+8w==", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -18921,31 +18923,6 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -20460,14 +20437,6 @@ "node": ">=8" } }, - "node_modules/dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=", - "engines": { - "node": ">=4.6.0" - } - }, "node_modules/download": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", @@ -20867,9 +20836,9 @@ } }, "node_modules/electron": { - "version": "28.1.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.0.tgz", - "integrity": "sha512-82Y7o4PSWPn1o/aVwYPsgmBw6Gyf2lVHpaBu3Ef8LrLWXxytg7ZRZr/RtDqEMOzQp3+mcuy3huH84MyjdmP50Q==", + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.4.tgz", + "integrity": "sha512-WE6go611KOhtH6efRPMnVC7FE7DCKnQ3ZyHFeI1DbaCy8OU4UjZ8/CZGcuZmZgRdxSBEHoHdgaJkWRHZzF0FOg==", "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", @@ -24198,14 +24167,6 @@ "node": ">= 0.12" } }, - "node_modules/formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -25734,19 +25695,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", @@ -31070,16 +31018,6 @@ "is-buffer": "~1.1.6" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "node_modules/media-type": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-type/-/media-type-0.3.0.tgz", @@ -32809,9 +32747,9 @@ "dev": true }, "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, "node_modules/napi-build-utils": { @@ -32895,9 +32833,9 @@ } }, "node_modules/node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", "dependencies": { "semver": "^7.3.5" }, @@ -32911,9 +32849,9 @@ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node_modules/node-api-version": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", - "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", + "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", "dependencies": { "semver": "^7.3.5" } @@ -35139,21 +35077,6 @@ "node": "*" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -38510,15 +38433,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -38942,18 +38856,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -39964,20 +39866,20 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "node_modules/ssh2": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.12.0.tgz", - "integrity": "sha512-7mcLu8biO6/BjQQ1iCjCmuBiF0hXxo+JlHpJBPDTVsxU7evscWWiRUgYF5XIs4gLKmiPRHA0maund11QLWyDJg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", "hasInstallScript": true, "dependencies": { - "asn1": "^0.2.4", + "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2" }, "engines": { "node": ">=10.16.0" }, "optionalDependencies": { - "cpu-features": "~0.0.6", - "nan": "^2.17.0" + "cpu-features": "~0.0.9", + "nan": "^2.18.0" } }, "node_modules/sshpk": { @@ -40387,72 +40289,6 @@ "node": ">= 8.0" } }, - "node_modules/superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "dependencies": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/superagent/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/superagent/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/superagent/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/superagent/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -43334,7 +43170,7 @@ "@mongodb-js/devtools-connect": "^2.4.2", "@mongodb-js/oidc-plugin": "^0.3.0", "compass-preferences-model": "^2.17.3", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-ipc": "^3.2.9", "node-fetch": "^2.7.0", "react": "^17.0.2", @@ -44094,7 +43930,7 @@ "system-ca": "^1.0.2" }, "devDependencies": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@electron/remote": "^2.1.1", "@mongodb-js/atlas-service": "^0.14.3", "@mongodb-js/compass-home": "^6.25.2", @@ -44117,7 +43953,7 @@ "compass-preferences-model": "^2.17.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", @@ -44819,7 +44655,7 @@ "classnames": "^2.2.6", "depcheck": "^1.4.1", "ejson-shell-parser": "^2.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -44963,7 +44799,7 @@ "packages/compass-e2e-tests": { "version": "1.18.5", "devDependencies": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@mongodb-js/compass-test-server": "^0.1.11", "@mongodb-js/eslint-config-compass": "^1.0.15", "@mongodb-js/oidc-mock-provider": "^0.4.1", @@ -44981,7 +44817,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -45899,7 +45735,7 @@ "d3-flextree": "2.1.2", "d3-hierarchy": "^3.1.2", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "lodash": "^4.17.21", @@ -46122,7 +45958,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -46405,7 +46241,7 @@ "@mongodb-js/compass-workspaces": "^0.4.3", "bson": "^6.2.0", "compass-preferences-model": "^2.17.3", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-app-registry": "^9.1.6", "hadron-document": "^8.4.7", "mongodb-data-service": "^22.17.3" @@ -46465,7 +46301,7 @@ "@mongodb-js/compass-workspaces": "^0.4.3", "bson": "^6.2.0", "compass-preferences-model": "^2.17.3", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-app-registry": "^9.1.6", "hadron-document": "^8.4.7", "mongodb-data-service": "^22.17.3", @@ -46599,7 +46435,7 @@ "chai": "^4.2.0", "depcheck": "^1.4.1", "ejson-shell-parser": "^2.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "lodash": "^4.17.21", @@ -46980,7 +46816,7 @@ "@testing-library/user-event": "^13.5.0", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "lodash": "^4.17.21", @@ -47229,7 +47065,7 @@ "@mongodb-js/webpack-config-compass": "^1.3.2", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -47446,7 +47282,7 @@ "@mongosh/logging": "^2.1.1", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -47748,7 +47584,7 @@ }, "optionalDependencies": { "@electron/remote": "^2.1.1", - "electron": "^28.1.0" + "electron": "^28.1.4" } }, "packages/compass-utils/node_modules/sinon": { @@ -47783,7 +47619,7 @@ "version": "0.2.4", "license": "SSPL", "devDependencies": { - "@gribnoysup/mongodb-browser": "^1.2.0", + "@gribnoysup/mongodb-browser": "^1.3.0", "@mongodb-js/compass-aggregations": "^9.25.3", "@mongodb-js/compass-app-stores": "^7.9.3", "@mongodb-js/compass-collection": "^4.22.3", @@ -48569,7 +48405,7 @@ "@mongodb-js/compass-utils": "^0.5.10", "@mongodb-js/connection-info": "^0.1.2", "bson": "^6.2.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-ipc": "^3.2.9", "keytar": "^7.9.0", "lodash": "^4.17.21", @@ -49098,11 +48934,11 @@ "hasInstallScript": true, "license": "SSPL", "dependencies": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@mongodb-js/devtools-github-repo": "^1.4.1", "@mongodb-js/dl-center": "^1.0.1", "@mongodb-js/electron-wix-msi": "^3.0.0", - "@mongodb-js/mongodb-notary-service-client": "^2.0.4", + "@mongodb-js/signing-utils": "^0.2.3", "@npmcli/arborist": "^6.2.0", "@octokit/rest": "^18.6.2", "asar": "^3.0.3", @@ -49113,7 +48949,7 @@ "debug": "^4.2.0", "del": "^2.0.2", "download": "^8.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-packager": "^15.5.1", "electron-packager-plugin-non-proprietary-codecs-ffmpeg": "^1.0.2", "flatnest": "^1.0.0", @@ -49128,7 +48964,7 @@ "lodash": "^4.17.21", "moment": "^2.29.4", "mongodb-js-cli": "^0.0.3", - "node-abi": "^3.52.0", + "node-abi": "^3.54.0", "normalize-package-data": "^2.3.5", "parse-github-repo-url": "^1.3.0", "semver": "^5.1.0", @@ -49960,7 +49796,7 @@ "license": "SSPL", "dependencies": { "debug": "^4.3.4", - "electron": "^28.1.0", + "electron": "^28.1.4", "is-electron-renderer": "^2.0.1" }, "devDependencies": { @@ -50379,6 +50215,7 @@ "packages/notary-service-client": { "name": "@mongodb-js/mongodb-notary-service-client", "version": "2.0.4", + "extraneous": true, "license": "SSPL", "dependencies": { "debug": "^2.2.0", @@ -50395,7 +50232,136 @@ "mocha": "^10.2.0" } }, - "packages/notary-service-client/node_modules/acorn": { + "packages/redux-common": { + "name": "@mongodb-js/mongodb-redux-common", + "version": "2.0.19", + "license": "SSPL", + "devDependencies": { + "chai": "^4.1.2", + "depcheck": "^1.4.1", + "eslint": "^7.25.0", + "eslint-config-mongodb-js": "^3.0.1", + "eslint-plugin-react": "^7.24.0", + "hadron-app-registry": "^9.1.3", + "mocha": "^10.2.0", + "sinon": "^7.2.7" + } + }, + "packages/redux-common/node_modules/@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "dependencies": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "packages/redux-common/node_modules/@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "packages/redux-common/node_modules/@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "packages/redux-common/node_modules/@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.44" + } + }, + "packages/redux-common/node_modules/@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "dev": true, + "dependencies": { + "@babel/types": "7.0.0-beta.44" + } + }, + "packages/redux-common/node_modules/@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "dependencies": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + } + }, + "packages/redux-common/node_modules/@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" + } + }, + "packages/redux-common/node_modules/@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + } + }, + "packages/redux-common/node_modules/@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + }, + "packages/redux-common/node_modules/@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" + } + }, + "packages/redux-common/node_modules/acorn": { "version": "5.7.4", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", @@ -50407,7 +50373,7 @@ "node": ">=0.4.0" } }, - "packages/notary-service-client/node_modules/acorn-jsx": { + "packages/redux-common/node_modules/acorn-jsx": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", @@ -50416,7 +50382,7 @@ "acorn": "^3.0.4" } }, - "packages/notary-service-client/node_modules/acorn-jsx/node_modules/acorn": { + "packages/redux-common/node_modules/acorn-jsx/node_modules/acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", @@ -50428,207 +50394,228 @@ "node": ">=0.4.0" } }, - "packages/notary-service-client/node_modules/ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "packages/redux-common/node_modules/ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "dependencies": { "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, - "packages/notary-service-client/node_modules/ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "packages/redux-common/node_modules/ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true, "peerDependencies": { - "ajv": ">=4.10.0" + "ajv": "^5.0.0" } }, - "packages/notary-service-client/node_modules/ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "packages/redux-common/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "packages/redux-common/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "packages/redux-common/node_modules/babel-eslint": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", + "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", "dev": true, "dependencies": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" }, "engines": { - "node": ">= 0.4.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "packages/redux-common/node_modules/babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "bin": { + "babylon": "bin/babylon.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.2.0" } }, - "packages/notary-service-client/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "packages/redux-common/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "packages/redux-common/node_modules/chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "packages/redux-common/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "dependencies": { - "restore-cursor": "^1.0.1" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/cli-width": { + "packages/redux-common/node_modules/cli-width": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", "dev": true }, - "packages/notary-service-client/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "packages/redux-common/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "color-name": "1.1.3" } }, - "packages/notary-service-client/node_modules/deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "packages/redux-common/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "packages/redux-common/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "dependencies": { - "type-detect": "0.1.1" - }, - "engines": { - "node": "*" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "packages/notary-service-client/node_modules/deep-eql/node_modules/type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "packages/redux-common/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "ms": "^2.1.1" } }, - "packages/notary-service-client/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "packages/redux-common/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/eslint-config-mongodb-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-mongodb-js/-/eslint-config-mongodb-js-2.3.0.tgz", - "integrity": "sha512-9zxJawyp68GNX63pfqeLV47/ShSyY7Hce3l/XhrD8dihFhygs+5C7lk12ogDePK3OmOer1pREvwgR8q0YvV4Pw==", + "packages/redux-common/node_modules/eslint-config-mongodb-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-mongodb-js/-/eslint-config-mongodb-js-3.0.1.tgz", + "integrity": "sha512-UdiYQtDaxWewySEO26Tz3It8bH3PF6ldBZkCHh0iJc9U24hD1xMZdFM2/UcIFtuu/B1db7QxsF8cigGm3+4AuA==", "dev": true, "dependencies": { - "babel-eslint": "^7.1.0", - "eslint": "^3.3.1", - "eslint-plugin-chai-friendly": "^0.4.0", - "eslint-plugin-react": "^6.1.2" + "babel-eslint": "^8.1.0", + "eslint": "^4.19.1", + "eslint-plugin-chai-friendly": "^0.4.1", + "eslint-plugin-react": "^7.7.0" } }, - "packages/notary-service-client/node_modules/eslint-config-mongodb-js/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "packages/redux-common/node_modules/eslint-config-mongodb-js/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/eslint-config-mongodb-js/node_modules/eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "packages/redux-common/node_modules/eslint-config-mongodb-js/node_modules/eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "dependencies": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", "esquery": "^1.0.0", - "estraverse": "^4.2.0", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", + "inquirer": "^3.0.6", "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" + "table": "4.0.2", + "text-table": "~0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -50637,26 +50624,41 @@ "node": ">=4" } }, - "packages/notary-service-client/node_modules/eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", + "packages/redux-common/node_modules/eslint-config-mongodb-js/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "dependencies": { - "array.prototype.find": "^2.0.1", - "doctrine": "^1.2.2", - "has": "^1.0.1", - "jsx-ast-utils": "^1.3.4", - "object.assign": "^4.0.4" + "ansi-regex": "^3.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=4" + } + }, + "packages/redux-common/node_modules/eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, - "peerDependencies": { - "eslint": "^2.0.0 || ^3.0.0" + "engines": { + "node": ">=4.0.0" + } + }, + "packages/redux-common/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" } }, - "packages/notary-service-client/node_modules/espree": { + "packages/redux-common/node_modules/espree": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", @@ -50669,20 +50671,27 @@ "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "packages/redux-common/node_modules/external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12" } }, - "packages/notary-service-client/node_modules/file-entry-cache": { + "packages/redux-common/node_modules/fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "packages/redux-common/node_modules/file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", @@ -50695,7 +50704,7 @@ "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/flat-cache": { + "packages/redux-common/node_modules/flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", @@ -50710,64 +50719,99 @@ "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "packages/redux-common/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/ignore": { + "packages/redux-common/node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "packages/notary-service-client/node_modules/inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "packages/redux-common/node_modules/inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", "dev": true, "dependencies": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", - "figures": "^1.3.5", + "external-editor": "^2.0.4", + "figures": "^2.0.0", "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", "through": "^2.3.6" } }, - "packages/notary-service-client/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "packages/redux-common/node_modules/inquirer/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "packages/redux-common/node_modules/inquirer/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "dependencies": { - "number-is-nan": "^1.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", + "packages/redux-common/node_modules/inquirer/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "packages/redux-common/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/levn": { + "packages/redux-common/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "packages/redux-common/node_modules/json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "packages/redux-common/node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", @@ -50780,40 +50824,85 @@ "node": ">= 0.8.0" } }, - "packages/notary-service-client/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "packages/redux-common/node_modules/lolex": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", + "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, - "packages/notary-service-client/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "packages/redux-common/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "packages/redux-common/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "packages/redux-common/node_modules/mkdirp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { - "minimist": "0.0.8" + "minimist": "^1.2.5" }, "bin": { "mkdirp": "bin/cmd.js" } }, - "packages/notary-service-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "packages/redux-common/node_modules/mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true }, - "packages/notary-service-client/node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "packages/redux-common/node_modules/nise": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "dev": true, + "dependencies": { + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/text-encoding": "^0.7.1", + "just-extend": "^4.0.2", + "lolex": "^5.0.1", + "path-to-regexp": "^1.7.0" + } + }, + "packages/redux-common/node_modules/nise/node_modules/lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "packages/redux-common/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, + "dependencies": { + "mimic-fn": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/optionator": { + "packages/redux-common/node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", @@ -50830,7 +50919,16 @@ "node": ">= 0.8.0" } }, - "packages/notary-service-client/node_modules/prelude-ls": { + "packages/redux-common/node_modules/pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "packages/redux-common/node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", @@ -50839,29 +50937,29 @@ "node": ">= 0.8.0" } }, - "packages/notary-service-client/node_modules/progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "packages/redux-common/node_modules/regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=4.0.0" } }, - "packages/notary-service-client/node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "packages/redux-common/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", "dev": true, "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/notary-service-client/node_modules/rimraf": { + "packages/redux-common/node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", @@ -50873,48 +50971,67 @@ "rimraf": "bin.js" } }, - "packages/notary-service-client/node_modules/run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "packages/redux-common/node_modules/rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "packages/redux-common/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "once": "^1.3.0" + "bin": { + "semver": "bin/semver" } }, - "packages/notary-service-client/node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "packages/redux-common/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "packages/redux-common/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, "engines": { "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "packages/redux-common/node_modules/sinon": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", + "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.4.0", + "@sinonjs/formatio": "^3.2.1", + "@sinonjs/samsam": "^3.3.3", + "diff": "^3.5.0", + "lolex": "^4.2.0", + "nise": "^1.5.2", + "supports-color": "^5.5.0" + } + }, + "packages/redux-common/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/strip-json-comments": { + "packages/redux-common/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", @@ -50923,39 +51040,42 @@ "node": ">=0.10.0" } }, - "packages/notary-service-client/node_modules/table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "packages/redux-common/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "packages/notary-service-client/node_modules/table/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "packages/redux-common/node_modules/table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" } }, - "packages/notary-service-client/node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "packages/redux-common/node_modules/table/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true, "engines": { "node": ">=4" } }, - "packages/notary-service-client/node_modules/table/node_modules/string-width": { + "packages/redux-common/node_modules/table/node_modules/string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", @@ -50968,7 +51088,7 @@ "node": ">=4" } }, - "packages/notary-service-client/node_modules/table/node_modules/strip-ansi": { + "packages/redux-common/node_modules/table/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", @@ -50980,7 +51100,7 @@ "node": ">=4" } }, - "packages/notary-service-client/node_modules/type-check": { + "packages/redux-common/node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", @@ -50992,16 +51112,19 @@ "node": ">= 0.8.0" } }, - "packages/notary-service-client/node_modules/type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "packages/redux-common/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "packages/notary-service-client/node_modules/write": { + "packages/redux-common/node_modules/write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", @@ -51013,314 +51136,214 @@ "node": ">=0.10.0" } }, - "packages/redux-common": { - "name": "@mongodb-js/mongodb-redux-common", - "version": "2.0.19", + "packages/redux-common/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "packages/reflux-store": { + "name": "hadron-reflux-store", + "version": "2.0.2", "license": "SSPL", + "dependencies": { + "debug": "^2.2.0", + "react-dom": "^17.0.2", + "reflux": "^0.4.1" + }, "devDependencies": { - "chai": "^4.1.2", + "babel-preset-react": "^6.5.0", + "babel-register": "^6.26.0", + "chai": "^3.4.1", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "eslint-config-mongodb-js": "^3.0.1", - "eslint-plugin-react": "^7.24.0", - "hadron-app-registry": "^9.1.3", + "eslint-config-mongodb-js": "^2.2.0", "mocha": "^10.2.0", - "sinon": "^7.2.7" + "react": "^17.0.2" } }, - "packages/redux-common/node_modules/@babel/code-frame": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", - "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "packages/reflux-store/node_modules/acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true, - "dependencies": { - "@babel/highlight": "7.0.0-beta.44" + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "packages/redux-common/node_modules/@babel/generator": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", - "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "packages/reflux-store/node_modules/acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "dependencies": { - "@babel/types": "7.0.0-beta.44", - "jsesc": "^2.5.1", - "lodash": "^4.2.0", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "acorn": "^3.0.4" } }, - "packages/redux-common/node_modules/@babel/helper-function-name": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", - "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "packages/reflux-store/node_modules/acorn-jsx/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "7.0.0-beta.44", - "@babel/template": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44" + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "packages/redux-common/node_modules/@babel/helper-get-function-arity": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", - "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "packages/reflux-store/node_modules/ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "dev": true, "dependencies": { - "@babel/types": "7.0.0-beta.44" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, - "packages/redux-common/node_modules/@babel/helper-split-export-declaration": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", - "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "packages/reflux-store/node_modules/ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", "dev": true, - "dependencies": { - "@babel/types": "7.0.0-beta.44" + "peerDependencies": { + "ajv": ">=4.10.0" } }, - "packages/redux-common/node_modules/@babel/highlight": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", - "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "packages/reflux-store/node_modules/ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", "dev": true, - "dependencies": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^3.0.0" + "engines": { + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/@babel/template": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", - "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "lodash": "^4.2.0" - } - }, - "packages/redux-common/node_modules/@babel/traverse": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", - "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/generator": "7.0.0-beta.44", - "@babel/helper-function-name": "7.0.0-beta.44", - "@babel/helper-split-export-declaration": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "debug": "^3.1.0", - "globals": "^11.1.0", - "invariant": "^2.2.0", - "lodash": "^4.2.0" - } - }, - "packages/redux-common/node_modules/@babel/types": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", - "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "packages/reflux-store/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "lodash": "^4.2.0", - "to-fast-properties": "^2.0.0" + "engines": { + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "packages/reflux-store/node_modules/chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, - "packages/redux-common/node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.4.0" } }, - "packages/redux-common/node_modules/acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "packages/reflux-store/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "dependencies": { - "acorn": "^3.0.4" - } - }, - "packages/redux-common/node_modules/acorn-jsx/node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">=0.4.0" - } - }, - "packages/redux-common/node_modules/ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "packages/redux-common/node_modules/ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", - "dev": true, - "peerDependencies": { - "ajv": "^5.0.0" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "packages/reflux-store/node_modules/chalk/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.8.0" } }, - "packages/redux-common/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "packages/reflux-store/node_modules/cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "restore-cursor": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/babel-eslint": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", - "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "dev": true, + "packages/reflux-store/node_modules/cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "packages/reflux-store/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@babel/code-frame": "7.0.0-beta.44", - "@babel/traverse": "7.0.0-beta.44", - "@babel/types": "7.0.0-beta.44", - "babylon": "7.0.0-beta.44", - "eslint-scope": "3.7.1", - "eslint-visitor-keys": "^1.0.0" - }, - "engines": { - "node": ">=4" + "ms": "2.0.0" } }, - "packages/redux-common/node_modules/babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "packages/reflux-store/node_modules/deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "dependencies": { + "type-detect": "0.1.1" }, "engines": { - "node": ">=4.2.0" + "node": "*" } }, - "packages/redux-common/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "packages/reflux-store/node_modules/deep-eql/node_modules/type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" + "node": "*" } }, - "packages/redux-common/node_modules/chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "packages/redux-common/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "packages/reflux-store/node_modules/doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "dependencies": { - "restore-cursor": "^2.0.0" + "esutils": "^2.0.2", + "isarray": "^1.0.0" }, "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "packages/redux-common/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "packages/redux-common/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "packages/redux-common/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "packages/reflux-store/node_modules/eslint-config-mongodb-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/eslint-config-mongodb-js/-/eslint-config-mongodb-js-2.3.0.tgz", + "integrity": "sha512-9zxJawyp68GNX63pfqeLV47/ShSyY7Hce3l/XhrD8dihFhygs+5C7lk12ogDePK3OmOer1pREvwgR8q0YvV4Pw==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "babel-eslint": "^7.1.0", + "eslint": "^3.3.1", + "eslint-plugin-chai-friendly": "^0.4.0", + "eslint-plugin-react": "^6.1.2" } }, - "packages/redux-common/node_modules/doctrine": { + "packages/reflux-store/node_modules/eslint-config-mongodb-js/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", @@ -51332,71 +51355,47 @@ "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/eslint-config-mongodb-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-mongodb-js/-/eslint-config-mongodb-js-3.0.1.tgz", - "integrity": "sha512-UdiYQtDaxWewySEO26Tz3It8bH3PF6ldBZkCHh0iJc9U24hD1xMZdFM2/UcIFtuu/B1db7QxsF8cigGm3+4AuA==", - "dev": true, - "dependencies": { - "babel-eslint": "^8.1.0", - "eslint": "^4.19.1", - "eslint-plugin-chai-friendly": "^0.4.1", - "eslint-plugin-react": "^7.7.0" - } - }, - "packages/redux-common/node_modules/eslint-config-mongodb-js/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/eslint-config-mongodb-js/node_modules/eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "packages/reflux-store/node_modules/eslint-config-mongodb-js/node_modules/eslint": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", "dev": true, "dependencies": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", - "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", + "babel-code-frame": "^6.16.0", + "chalk": "^1.1.3", + "concat-stream": "^1.5.2", + "debug": "^2.1.1", + "doctrine": "^2.0.0", + "escope": "^3.6.0", + "espree": "^3.4.0", "esquery": "^1.0.0", + "estraverse": "^4.2.0", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "glob": "^7.0.3", + "globals": "^9.14.0", + "ignore": "^3.2.0", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", - "json-stable-stringify-without-jsonify": "^1.0.1", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", "levn": "^0.3.0", - "lodash": "^4.17.4", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", "natural-compare": "^1.4.0", "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", - "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.7.5", + "strip-bom": "^3.0.0", "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.0" + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" }, "bin": { "eslint": "bin/eslint.js" @@ -51405,41 +51404,26 @@ "node": ">=4" } }, - "packages/redux-common/node_modules/eslint-config-mongodb-js/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "packages/reflux-store/node_modules/eslint-plugin-react": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", + "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "array.prototype.find": "^2.0.1", + "doctrine": "^1.2.2", + "has": "^1.0.1", + "jsx-ast-utils": "^1.3.4", + "object.assign": "^4.0.4" }, "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", - "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "node": ">=0.10" }, - "engines": { - "node": ">=4.0.0" - } - }, - "packages/redux-common/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" + "peerDependencies": { + "eslint": "^2.0.0 || ^3.0.0" } }, - "packages/redux-common/node_modules/espree": { + "packages/reflux-store/node_modules/espree": { "version": "3.5.4", "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", @@ -51452,27 +51436,20 @@ "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "packages/reflux-store/node_modules/figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", "dev": true, "dependencies": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" }, "engines": { - "node": ">=0.12" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "packages/redux-common/node_modules/file-entry-cache": { + "packages/reflux-store/node_modules/file-entry-cache": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", @@ -51485,7 +51462,7 @@ "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/flat-cache": { + "packages/reflux-store/node_modules/flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", @@ -51500,99 +51477,64 @@ "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "packages/reflux-store/node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/ignore": { + "packages/reflux-store/node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", "dev": true }, - "packages/redux-common/node_modules/inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "packages/reflux-store/node_modules/inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", "dev": true, "dependencies": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", + "figures": "^1.3.5", "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", "through": "^2.3.6" } }, - "packages/redux-common/node_modules/inquirer/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/inquirer/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/inquirer/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "packages/reflux-store/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "number-is-nan": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "packages/reflux-store/node_modules/jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", "dev": true, "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "packages/redux-common/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, - "packages/redux-common/node_modules/json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "packages/redux-common/node_modules/levn": { + "packages/reflux-store/node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", @@ -51605,85 +51547,40 @@ "node": ">= 0.8.0" } }, - "packages/redux-common/node_modules/lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", - "dev": true - }, - "packages/redux-common/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "packages/redux-common/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } + "packages/reflux-store/node_modules/minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true }, - "packages/redux-common/node_modules/mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "packages/reflux-store/node_modules/mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "minimist": "0.0.8" }, "bin": { "mkdirp": "bin/cmd.js" } }, - "packages/redux-common/node_modules/mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "packages/redux-common/node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", - "dev": true, - "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" - } - }, - "packages/redux-common/node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } + "packages/reflux-store/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "packages/redux-common/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "packages/reflux-store/node_modules/onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/optionator": { + "packages/reflux-store/node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", @@ -51700,16 +51597,7 @@ "node": ">= 0.8.0" } }, - "packages/redux-common/node_modules/pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/prelude-ls": { + "packages/reflux-store/node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", @@ -51718,29 +51606,29 @@ "node": ">= 0.8.0" } }, - "packages/redux-common/node_modules/regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "packages/reflux-store/node_modules/progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">=0.4.0" } }, - "packages/redux-common/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "packages/reflux-store/node_modules/restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", "dev": true, "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/rimraf": { + "packages/reflux-store/node_modules/rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", @@ -51752,67 +51640,48 @@ "rimraf": "bin.js" } }, - "packages/redux-common/node_modules/rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "packages/redux-common/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "packages/redux-common/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "packages/reflux-store/node_modules/run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.3.0" } }, - "packages/redux-common/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "packages/reflux-store/node_modules/slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", "dev": true, "engines": { "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", + "packages/reflux-store/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "packages/reflux-store/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "packages/redux-common/node_modules/strip-json-comments": { + "packages/reflux-store/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", @@ -51821,33 +51690,21 @@ "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/redux-common/node_modules/table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "packages/reflux-store/node_modules/table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", "dev": true, "dependencies": { - "ajv": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" } }, - "packages/redux-common/node_modules/table/node_modules/ansi-regex": { + "packages/reflux-store/node_modules/table/node_modules/ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", @@ -51856,7 +51713,16 @@ "node": ">=4" } }, - "packages/redux-common/node_modules/table/node_modules/string-width": { + "packages/reflux-store/node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "packages/reflux-store/node_modules/table/node_modules/string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", @@ -51869,7 +51735,7 @@ "node": ">=4" } }, - "packages/redux-common/node_modules/table/node_modules/strip-ansi": { + "packages/reflux-store/node_modules/table/node_modules/strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", @@ -51881,7 +51747,7 @@ "node": ">=4" } }, - "packages/redux-common/node_modules/type-check": { + "packages/reflux-store/node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", @@ -51893,19 +51759,16 @@ "node": ">= 0.8.0" } }, - "packages/redux-common/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "packages/reflux-store/node_modules/type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "engines": { + "node": "*" } }, - "packages/redux-common/node_modules/write": { + "packages/reflux-store/node_modules/write": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", @@ -51917,1100 +51780,456 @@ "node": ">=0.10.0" } }, - "packages/redux-common/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "packages/reflux-store": { - "name": "hadron-reflux-store", - "version": "2.0.2", - "license": "SSPL", + "packages/ssh-tunnel": { + "name": "@mongodb-js/ssh-tunnel", + "version": "2.1.10", + "license": "Apache-2.0", "dependencies": { - "debug": "^2.2.0", - "react-dom": "^17.0.2", - "reflux": "^0.4.1" + "@mongodb-js/compass-logging": "^1.2.11", + "socksv5": "0.0.6", + "ssh2": "^1.12.0" }, "devDependencies": { - "babel-preset-react": "^6.5.0", - "babel-register": "^6.26.0", - "chai": "^3.4.1", + "@mongodb-js/eslint-config-compass": "^1.0.15", + "@mongodb-js/mocha-config-compass": "^1.3.6", + "@mongodb-js/prettier-config-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.3", + "@types/chai": "^4.2.21", + "@types/chai-as-promised": "^7.1.4", + "@types/mocha": "^9.0.0", + "@types/node-fetch": "^2.5.8", + "@types/sinon-chai": "^3.2.5", + "@types/ssh2": "^1.11.8", + "chai": "^4.3.4", + "chai-as-promised": "^7.1.1", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "eslint-config-mongodb-js": "^2.2.0", + "gen-esm-wrapper": "^1.1.0", "mocha": "^10.2.0", - "react": "^17.0.2" + "node-fetch": "^2.7.0", + "nyc": "^15.1.0", + "prettier": "^2.7.1", + "sinon": "^9.2.3", + "socks": "^2.7.1", + "typescript": "^5.0.4" } }, - "packages/reflux-store/node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "packages/ssh-tunnel/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">=0.4.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "packages/reflux-store/node_modules/acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "packages/ssh-tunnel/node_modules/sinon": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", + "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", "dev": true, "dependencies": { - "acorn": "^3.0.4" + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.0.4", + "supports-color": "^7.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "packages/reflux-store/node_modules/acorn-jsx/node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "packages/ssh-tunnel/node_modules/sinon/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=0.3.1" } }, - "packages/reflux-store/node_modules/ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, + "scripts": { + "name": "@mongodb-js/compass-scripts", + "version": "0.16.3", + "license": "SSPL", "dependencies": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" + "@mongodb-js/monorepo-tools": "^1.1.1", + "@mongodb-js/webpack-config-compass": "^1.3.2", + "commander": "^11.0.0", + "electron": "^28.1.4", + "glob": "^10.2.5", + "jsdom": "^21.1.0", + "make-fetch-happen": "^8.0.14", + "pacote": "^11.3.5", + "pkg-up": "^3.1.0", + "prompts": "^2.4.1", + "semver": "^7.5.4" + }, + "bin": { + "compass-scripts": "cli.js" + }, + "devDependencies": { + "@mongodb-js/eslint-config-compass": "^1.0.15", + "@mongodb-js/prettier-config-compass": "^1.0.1", + "depcheck": "^1.4.1", + "eslint": "^7.25.0", + "prettier": "^2.7.1" } }, - "packages/reflux-store/node_modules/ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true, - "peerDependencies": { - "ajv": ">=4.10.0" + "scripts/node_modules/@npmcli/move-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", + "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "packages/reflux-store/node_modules/ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true, + "scripts/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "packages/reflux-store/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true, + "scripts/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "scripts/node_modules/cacache": { + "version": "16.1.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", + "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "packages/reflux-store/node_modules/chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, + "scripts/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">= 0.4.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/reflux-store/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, + "scripts/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "packages/reflux-store/node_modules/chalk/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true, + "scripts/node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "engines": { - "node": ">=0.8.0" + "node": ">=16" } }, - "packages/reflux-store/node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, + "scripts/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { - "restore-cursor": "^1.0.1" + "ms": "2.1.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "packages/reflux-store/node_modules/cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "packages/reflux-store/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "packages/reflux-store/node_modules/deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "dependencies": { - "type-detect": "0.1.1" + "node": ">=6.0" }, - "engines": { - "node": "*" - } - }, - "packages/reflux-store/node_modules/deep-eql/node_modules/type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true, - "engines": { - "node": "*" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "packages/reflux-store/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, + "scripts/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "packages/reflux-store/node_modules/eslint-config-mongodb-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-mongodb-js/-/eslint-config-mongodb-js-2.3.0.tgz", - "integrity": "sha512-9zxJawyp68GNX63pfqeLV47/ShSyY7Hce3l/XhrD8dihFhygs+5C7lk12ogDePK3OmOer1pREvwgR8q0YvV4Pw==", - "dev": true, - "dependencies": { - "babel-eslint": "^7.1.0", - "eslint": "^3.3.1", - "eslint-plugin-chai-friendly": "^0.4.0", - "eslint-plugin-react": "^6.1.2" - } - }, - "packages/reflux-store/node_modules/eslint-config-mongodb-js/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" + "node": ">=14" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/reflux-store/node_modules/eslint-config-mongodb-js/node_modules/eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, + "scripts/node_modules/glob": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.5.tgz", + "integrity": "sha512-Gj+dFYPZ5hc5dazjXzB0iHg2jKWJZYMjITXYPBRQ/xc2Buw7H0BINknRTwURJ6IC6MEFpYbLvtgVb3qD+DwyuA==", "dependencies": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" }, "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": ">=4" - } - }, - "packages/reflux-store/node_modules/eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "dependencies": { - "array.prototype.find": "^2.0.1", - "doctrine": "^1.2.2", - "has": "^1.0.1", - "jsx-ast-utils": "^1.3.4", - "object.assign": "^4.0.4" + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=0.10" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "eslint": "^2.0.0 || ^3.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/reflux-store/node_modules/espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, + "scripts/node_modules/glob/node_modules/minimatch": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", + "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", "dependencies": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "packages/reflux-store/node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "node": ">=16 || 14 >=14.17" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/reflux-store/node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - }, + "scripts/node_modules/glob/node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" } }, - "packages/reflux-store/node_modules/flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, + "scripts/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dependencies": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "packages/reflux-store/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, + "scripts/node_modules/lru-cache": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", + "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", "engines": { - "node": ">=0.10.0" - } - }, - "packages/reflux-store/node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, - "packages/reflux-store/node_modules/inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "dependencies": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" + "node": ">=12" } }, - "packages/reflux-store/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, + "scripts/node_modules/make-fetch-happen": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz", + "integrity": "sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q==", "dependencies": { - "number-is-nan": "^1.0.0" + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "packages/reflux-store/node_modules/jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true, - "engines": { - "node": ">=4.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "packages/reflux-store/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, + "scripts/node_modules/minipass-fetch": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", + "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">= 0.8.0" - } - }, - "packages/reflux-store/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "packages/reflux-store/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true, - "dependencies": { - "minimist": "0.0.8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "optionalDependencies": { + "encoding": "^0.1.13" } }, - "packages/reflux-store/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "packages/reflux-store/node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true, + "scripts/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "packages/reflux-store/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, + "scripts/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { - "node": ">= 0.8.0" - } - }, - "packages/reflux-store/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "packages/reflux-store/node_modules/progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true, - "engines": { - "node": ">=0.4.0" + "node": ">= 10" } }, - "packages/reflux-store/node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, + "scripts/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "minipass": "^3.1.1" }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } - }, - "packages/reflux-store/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "packages/reflux-store/node_modules/run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", "dev": true, - "dependencies": { - "once": "^1.3.0" + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" } }, - "packages/reflux-store/node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "tslib": "^1.11.1" } }, - "packages/reflux-store/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "@aws-crypto/sha256-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", + "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "packages/reflux-store/node_modules/strip-bom": { + "@aws-crypto/sha256-js": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, - "engines": { - "node": ">=4" + "requires": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" } }, - "packages/reflux-store/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "tslib": "^1.11.1" } }, - "packages/reflux-store/node_modules/table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, - "dependencies": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - } - }, - "packages/reflux-store/node_modules/table/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "packages/reflux-store/node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "packages/reflux-store/node_modules/table/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/reflux-store/node_modules/table/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/reflux-store/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "packages/reflux-store/node_modules/type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "packages/reflux-store/node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "packages/ssh-tunnel": { - "name": "@mongodb-js/ssh-tunnel", - "version": "2.1.10", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/compass-logging": "^1.2.11", - "socksv5": "0.0.6", - "ssh2": "^1.12.0" - }, - "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.0.15", - "@mongodb-js/mocha-config-compass": "^1.3.6", - "@mongodb-js/prettier-config-compass": "^1.0.1", - "@mongodb-js/tsconfig-compass": "^1.0.3", - "@types/chai": "^4.2.21", - "@types/chai-as-promised": "^7.1.4", - "@types/mocha": "^9.0.0", - "@types/node-fetch": "^2.5.8", - "@types/sinon-chai": "^3.2.5", - "@types/ssh2": "^1.11.8", - "chai": "^4.3.4", - "chai-as-promised": "^7.1.1", - "depcheck": "^1.4.1", - "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.0", - "mocha": "^10.2.0", - "node-fetch": "^2.7.0", - "nyc": "^15.1.0", - "prettier": "^2.7.1", - "sinon": "^9.2.3", - "socks": "^2.7.1", - "typescript": "^5.0.4" - } - }, - "packages/ssh-tunnel/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "packages/ssh-tunnel/node_modules/sinon": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", - "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.8.1", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/samsam": "^5.3.1", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "packages/ssh-tunnel/node_modules/sinon/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "scripts": { - "name": "@mongodb-js/compass-scripts", - "version": "0.16.3", - "license": "SSPL", - "dependencies": { - "@mongodb-js/monorepo-tools": "^1.1.1", - "@mongodb-js/webpack-config-compass": "^1.3.2", - "commander": "^11.0.0", - "electron": "^28.1.0", - "glob": "^10.2.5", - "jsdom": "^21.1.0", - "make-fetch-happen": "^8.0.14", - "pacote": "^11.3.5", - "pkg-up": "^3.1.0", - "prompts": "^2.4.1", - "semver": "^7.5.4" - }, - "bin": { - "compass-scripts": "cli.js" - }, - "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.0.15", - "@mongodb-js/prettier-config-compass": "^1.0.1", - "depcheck": "^1.4.1", - "eslint": "^7.25.0", - "prettier": "^2.7.1" - } - }, - "scripts/node_modules/@npmcli/move-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "scripts/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "engines": { - "node": ">= 10" - } - }, - "scripts/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "scripts/node_modules/cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "scripts/node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "scripts/node_modules/cacache/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "scripts/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "engines": { - "node": ">=16" - } - }, - "scripts/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "scripts/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "scripts/node_modules/glob": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.5.tgz", - "integrity": "sha512-Gj+dFYPZ5hc5dazjXzB0iHg2jKWJZYMjITXYPBRQ/xc2Buw7H0BINknRTwURJ6IC6MEFpYbLvtgVb3qD+DwyuA==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "scripts/node_modules/glob/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "scripts/node_modules/glob/node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "scripts/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "scripts/node_modules/lru-cache": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.10.1.tgz", - "integrity": "sha512-BQuhQxPuRl79J5zSXRP+uNzPOyZw2oFI9JLRQ80XswSvg21KMKNtQza9eF42rfI/3Z40RvzBdXgziEkudzjo8A==", - "engines": { - "node": ">=12" - } - }, - "scripts/node_modules/make-fetch-happen": { - "version": "10.1.7", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.7.tgz", - "integrity": "sha512-J/2xa2+7zlIUKqfyXDCXFpH3ypxO4k3rgkZHPSZkyUYcBT/hM80M3oyKLM/9dVriZFiGeGGS2Ei+0v2zfhqj3Q==", - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "scripts/node_modules/minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "scripts/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "scripts/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, - "scripts/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - } - }, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", - "dev": true, - "requires": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, - "requires": { - "tslib": "^1.11.1" - } - }, - "@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, - "requires": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, - "requires": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, - "requires": { - "tslib": "^1.11.1" - } - }, - "@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "requires": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, "@aws-sdk/client-cognito-identity": { @@ -55500,9 +54719,9 @@ } }, "@electron/rebuild": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.4.1.tgz", - "integrity": "sha512-iMKb6KJgKcdURbejs0j2GLEmrY8uY4rg1ESThXx9sFTgdWb8UOfJuTqW6LIEtcoY8FrbFqDmJrkWc4tBpdStXw==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.5.0.tgz", + "integrity": "sha512-pWRza7F+JxzTNATkEgI5iW7lAQTVBtU5r6ZjUSbrD04kbuQWUIHBcuvqosaHvKLmTpdRlsZQkPxTYciIoOWf3A==", "requires": { "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", @@ -55511,7 +54730,7 @@ "fs-extra": "^10.0.0", "got": "^11.7.0", "node-abi": "^3.45.0", - "node-api-version": "^0.1.4", + "node-api-version": "^0.2.0", "node-gyp": "^9.0.0", "ora": "^5.1.0", "read-binary-file-arch": "^1.0.6", @@ -56040,9 +55259,9 @@ "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, "@gribnoysup/mongodb-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@gribnoysup/mongodb-browser/-/mongodb-browser-1.2.0.tgz", - "integrity": "sha512-K662GvGKghNtKcSE0bbJviieJ2dj8pFN+PRQf+a9ACy5dvO2rAzbY8uw+QDgkGnxgvqhWV/QKhyKnxi0JWF6Dw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@gribnoysup/mongodb-browser/-/mongodb-browser-1.3.0.tgz", + "integrity": "sha512-kvX0Tk0jNT0y4OZ7SUbe0yMC7A00PDOHDMLz0ScUPDmLsPCcPU7mbE3ESUgH98uidCxHGpTkg1LI+dSGOd6gZA==", "dev": true }, "@hapi/hoek": { @@ -58498,7 +57717,7 @@ "chai": "^4.3.6", "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "hadron-ipc": "^3.2.9", "mocha": "^10.2.0", @@ -59079,7 +58298,7 @@ "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", "ejson-shell-parser": "^2.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -59317,7 +58536,7 @@ "d3-flextree": "2.1.2", "d3-hierarchy": "^3.1.2", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.1.6", @@ -59490,7 +58709,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.1.6", @@ -59714,7 +58933,7 @@ "compass-preferences-model": "^2.17.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.1.6", @@ -59842,7 +59061,7 @@ "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", "ejson-shell-parser": "^2.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.1.6", @@ -60046,7 +59265,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.1.6", @@ -60258,7 +59477,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -60298,7 +59517,7 @@ "@mongodb-js/webpack-config-compass": "^1.3.2", "commander": "^11.0.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "glob": "^10.2.5", "jsdom": "^21.1.0", @@ -60622,7 +59841,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -60849,7 +60068,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", "mocha": "^10.2.0", @@ -60886,7 +60105,7 @@ "@mongodb-js/compass-web": { "version": "file:packages/compass-web", "requires": { - "@gribnoysup/mongodb-browser": "^1.2.0", + "@gribnoysup/mongodb-browser": "^1.3.0", "@mongodb-js/compass-aggregations": "^9.25.3", "@mongodb-js/compass-app-stores": "^7.9.3", "@mongodb-js/compass-collection": "^4.22.3", @@ -61504,454 +60723,115 @@ "dev": true, "requires": { "@sinonjs/commons": "^3.0.0" - }, - "dependencies": { - "@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - } - } - } - } - }, - "sinon": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", - "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.5", - "supports-color": "^7.2.0" - } - } - } - }, - "@mongodb-js/connection-storage": { - "version": "file:packages/connection-storage", - "requires": { - "@mongodb-js/compass-logging": "^1.2.11", - "@mongodb-js/compass-user-data": "^0.1.14", - "@mongodb-js/compass-utils": "^0.5.10", - "@mongodb-js/connection-info": "^0.1.2", - "@mongodb-js/eslint-config-compass": "^1.0.15", - "@mongodb-js/mocha-config-compass": "^1.3.6", - "@mongodb-js/prettier-config-compass": "^1.0.1", - "@mongodb-js/tsconfig-compass": "^1.0.3", - "@types/chai": "^4.2.21", - "@types/mocha": "^9.0.0", - "@types/sinon-chai": "^3.2.5", - "bson": "^6.2.0", - "chai": "^4.3.6", - "depcheck": "^1.4.1", - "electron": "^28.1.0", - "eslint": "^7.25.0", - "hadron-ipc": "^3.2.9", - "keytar": "^7.9.0", - "lodash": "^4.17.21", - "mocha": "^10.2.0", - "mongodb-connection-string-url": "^2.6.0", - "nyc": "^15.1.0", - "prettier": "^2.7.1", - "sinon": "^9.2.3", - "typescript": "^5.0.4" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "sinon": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", - "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.1", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/samsam": "^5.3.1", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - } - } - } - }, - "@mongodb-js/databases-collections-list": { - "version": "file:packages/databases-collections-list", - "requires": { - "@mongodb-js/compass-components": "^1.21.2", - "@mongodb-js/compass-logging": "^1.2.11", - "@mongodb-js/eslint-config-compass": "^1.0.15", - "@mongodb-js/mocha-config-compass": "^1.3.6", - "@mongodb-js/prettier-config-compass": "^1.0.1", - "@mongodb-js/tsconfig-compass": "^1.0.3", - "@testing-library/react": "^12.1.4", - "@testing-library/user-event": "^13.5.0", - "@types/chai": "^4.2.21", - "@types/chai-dom": "^0.0.10", - "@types/mocha": "^9.0.0", - "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", - "@types/sinon-chai": "^3.2.5", - "chai": "^4.3.4", - "compass-preferences-model": "^2.17.3", - "depcheck": "^1.4.1", - "eslint": "^7.25.0", - "mocha": "^10.2.0", - "nyc": "^15.1.0", - "prettier": "^2.7.1", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "sinon": "^9.2.3", - "typescript": "^5.0.4" - }, - "dependencies": { - "sinon": { - "version": "9.2.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", - "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.8.1", - "@sinonjs/fake-timers": "^6.0.1", - "@sinonjs/samsam": "^5.3.1", - "diff": "^4.0.2", - "nise": "^4.0.4", - "supports-color": "^7.1.0" - }, - "dependencies": { - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - } - } - } - } - }, - "@mongodb-js/devtools-connect": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-2.4.3.tgz", - "integrity": "sha512-JS288VVm/Mu8+kHL8ybKCpL2/AiA4CWhWun7FR3iRNH5NXbT9c6aovEc2pxjsCbmYUjzuTsRoIo9LTrNoCvNrQ==", - "requires": { - "lodash.merge": "^4.6.2", - "mongodb-connection-string-url": "^3.0.0", - "os-dns-native": "^1.2.0", - "resolve-mongodb-srv": "^1.1.1", - "system-ca": "^1.0.2" - }, - "dependencies": { - "@types/whatwg-url": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.3.tgz", - "integrity": "sha512-z1ELvMijRL1QmU7QuzDkeYXSF2+dXI0ITKoQsIoVKcNBOiK5RMmWy+pYYxJTHFt8vkpZe7UsvRErQwcxZkjoUw==", - "requires": { - "@types/webidl-conversions": "*" - } - }, - "mongodb-connection-string-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", - "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", - "requires": { - "@types/whatwg-url": "^11.0.2", - "whatwg-url": "^13.0.0" - } - }, - "tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", - "requires": { - "punycode": "^2.3.0" - } - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" - }, - "whatwg-url": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", - "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", - "requires": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - } - } - } - }, - "@mongodb-js/devtools-docker-test-envs": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-docker-test-envs/-/devtools-docker-test-envs-1.2.5.tgz", - "integrity": "sha512-4QN0C29alS9nHOe0s2BF2QF5c/JFVtCjZkxMg/fl6wH3f2nK/ILGHYzKJVnPQqRbxL1k2hxf5iw24bSLgYrXVg==", - "dev": true, - "requires": { - "eslint-plugin-mocha": "^9.0.0", - "execa": "^5.1.1", - "hostile": "^1.3.3", - "mongodb-connection-string-url": "^2.0.0", - "uuid": "^8.3.2", - "wait-on": "^6.0.0" - }, - "dependencies": { - "eslint-plugin-mocha": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", - "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==", - "dev": true, - "requires": { - "eslint-utils": "^3.0.0", - "ramda": "^0.27.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "rxjs": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", - "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", - "dev": true, - "requires": { - "tslib": "~2.1.0" - } - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "wait-on": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz", - "integrity": "sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==", - "dev": true, - "requires": { - "axios": "^0.21.1", - "joi": "^17.4.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^7.1.0" - } - } - } - }, - "@mongodb-js/devtools-github-repo": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-github-repo/-/devtools-github-repo-1.4.1.tgz", - "integrity": "sha512-wpVbM7MTft2mFc66ZOulAW4TnyK9fzYL/dqhcUk7DMcdwO8TcR1VZPkh55fRugSXgkfCUcxfZmqmuSSAudLGjA==" - }, - "@mongodb-js/dl-center": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@mongodb-js/dl-center/-/dl-center-1.0.1.tgz", - "integrity": "sha512-gUxfbhvYWjWK+QHyrB2iiwkN/EZqab6tJG33A7rNR5lPC9rmzzBAKU62AuB4vFhaMtT3m9Vswbu2040IqMm0xw==", - "requires": { - "ajv": "^6.12.5", - "aws-sdk": "^2.770.0", - "node-fetch": "^2.6.1" - } - }, - "@mongodb-js/electron-wix-msi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/electron-wix-msi/-/electron-wix-msi-3.0.0.tgz", - "integrity": "sha512-wcpOxuDmJKBBeB7MOor5tRutNViK0K+zK3N3yi/ZeLZinzD3JOWPaV7kwh+2EMiRJrfRz0IiS+d3SRsNaAWNYA==", - "requires": { - "debug": "^3.1.0", - "fs-extra": "^7.0.0", - "klaw": "^3.0.0", - "lodash": "^4.17.10", - "uuid": "^3.3.2" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - } - } - }, - "@mongodb-js/eslint-config-compass": { - "version": "file:configs/eslint-config-compass", - "requires": { - "@babel/core": "^7.21.4", - "@babel/eslint-parser": "^7.14.3", - "@mongodb-js/eslint-config-devtools": "^0.9.9", - "@mongodb-js/eslint-plugin-compass": "^1.0.14", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-filename-rules": "^1.2.0", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-mocha": "^8.0.0", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-react-hooks": "^4.2.0", - "prettier": "^2.7.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - } - }, - "@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@mongodb-js/eslint-config-devtools": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/eslint-config-devtools/-/eslint-config-devtools-0.9.9.tgz", - "integrity": "sha512-TnIAFO/40XsLRYbsWGzADbWXsFalVna///x0xxj622xfp4l4W9wXLeOHRSyCRu2S73qACzCX48MhuctjTS662A==", - "requires": { - "@babel/core": "^7.22.8", - "@babel/eslint-parser": "^7.22.7", - "@babel/preset-env": "^7.22.7", - "@babel/preset-react": "^7.22.5", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-filename-rules": "^1.2.0", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-mocha": "^8.0.0", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-react-hooks": "^4.2.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", - "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + } + } + } } }, - "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==" + "sinon": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.5", + "supports-color": "^7.2.0" + } } } }, - "@mongodb-js/eslint-plugin-compass": { - "version": "file:configs/eslint-plugin-compass", + "@mongodb-js/connection-storage": { + "version": "file:packages/connection-storage", "requires": { + "@mongodb-js/compass-logging": "^1.2.11", + "@mongodb-js/compass-user-data": "^0.1.14", + "@mongodb-js/compass-utils": "^0.5.10", + "@mongodb-js/connection-info": "^0.1.2", + "@mongodb-js/eslint-config-compass": "^1.0.15", "@mongodb-js/mocha-config-compass": "^1.3.6", "@mongodb-js/prettier-config-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.3", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.0.0", + "@types/sinon-chai": "^3.2.5", + "bson": "^6.2.0", + "chai": "^4.3.6", "depcheck": "^1.4.1", + "electron": "^28.1.4", "eslint": "^7.25.0", + "hadron-ipc": "^3.2.9", + "keytar": "^7.9.0", + "lodash": "^4.17.21", "mocha": "^10.2.0", + "mongodb-connection-string-url": "^2.6.0", "nyc": "^15.1.0", - "prettier": "^2.7.1" + "prettier": "^2.7.1", + "sinon": "^9.2.3", + "typescript": "^5.0.4" + }, + "dependencies": { + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "sinon": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", + "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.0.4", + "supports-color": "^7.1.0" + } + } } }, - "@mongodb-js/explain-plan-helper": { - "version": "file:packages/explain-plan-helper", + "@mongodb-js/databases-collections-list": { + "version": "file:packages/databases-collections-list", "requires": { + "@mongodb-js/compass-components": "^1.21.2", + "@mongodb-js/compass-logging": "^1.2.11", "@mongodb-js/eslint-config-compass": "^1.0.15", "@mongodb-js/mocha-config-compass": "^1.3.6", "@mongodb-js/prettier-config-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.3", + "@testing-library/react": "^12.1.4", + "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", + "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", + "@types/react": "^17.0.5", + "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", + "compass-preferences-model": "^2.17.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-explain-compat": "^3.0.2", "nyc": "^15.1.0", "prettier": "^2.7.1", + "react": "^17.0.2", + "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -61980,605 +60860,435 @@ } } }, - "@mongodb-js/get-os-info": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@mongodb-js/get-os-info/-/get-os-info-0.3.13.tgz", - "integrity": "sha512-Vdu445Edynic4nPOVQauwRcZwCESvafwOkBkkrpF4QKK70ffQMNxf9PSwG/q7G91RlUyKj2kAkXBv3vIqJ/Erg==", - "dev": true - }, - "@mongodb-js/mocha-config-compass": { - "version": "file:configs/mocha-config-compass", - "requires": { - "@electron/remote": "^2.1.1", - "@mongodb-js/mocha-config-devtools": "^1.0.0", - "@mongodb-js/prettier-config-compass": "^1.0.1", - "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", - "chai": "^4.3.4", - "chai-dom": "^1.9.0", - "chai-enzyme": "^1.0.0-beta.1", - "enzyme": "^3.11.0", - "global-jsdom": "^8.3.0", - "identity-obj-proxy": "^3.0.0", - "jsdom": "^21.1.0", - "prettier": "^2.7.1", - "react-16-node-hanging-test-fix": "^1.0.0", - "sinon-chai": "^3.7.0", - "ts-node": "^10.9.1", - "why-is-node-running": "^2.2.2" - } - }, - "@mongodb-js/mocha-config-devtools": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/mocha-config-devtools/-/mocha-config-devtools-1.0.0.tgz", - "integrity": "sha512-AKfi6jPl0TLyfmnK5Df5rBOtFb9x06KL3oxDROT8sNJMESQXD9nEXQKknoNr9oDAuvJTT9Gxoc8FlOuRHSghNQ==", - "requires": { - "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", - "chai": "^4.3.4", - "chai-dom": "^1.9.0", - "chai-enzyme": "^1.0.0-beta.1", - "enzyme": "^3.11.0", - "global-jsdom": "^8.3.0", - "identity-obj-proxy": "^3.0.0", - "jsdom": "^21.1.0", - "react-16-node-hanging-test-fix": "^1.0.0", - "sinon-chai": "^3.7.0", - "ts-node": "^10.9.1", - "why-is-node-running": "^2.2.2" - } - }, - "@mongodb-js/mongodb-constants": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/mongodb-constants/-/mongodb-constants-0.7.2.tgz", - "integrity": "sha512-ElaVCCQo80vQTX865RXbJoITaB6kHJmOWqv0ANO5I/S9nP5LaIEfA2QQuBmE4cHOmb3ZGfzLfyCCfwbeSBwE6w==", - "dev": true, - "requires": { - "dedent": "^1.5.1", - "semver": "^7.5.4" - }, - "dependencies": { - "dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true - } - } - }, - "@mongodb-js/mongodb-downloader": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@mongodb-js/mongodb-downloader/-/mongodb-downloader-0.2.8.tgz", - "integrity": "sha512-y+mgw9QspvgTLRNHZJRS+DUTPk45RWpvYD1MaGDWhZ4ajffvxGqanY+Z4R6z01n+tIRmQvpShzF6zk+2Pr9d6w==", - "requires": { - "debug": "^4.3.4", - "decompress": "^4.2.1", - "mongodb-download-url": "^1.3.0", - "node-fetch": "^2.6.11", - "tar": "^6.1.15" - }, - "dependencies": { - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, - "@mongodb-js/mongodb-notary-service-client": { - "version": "file:packages/notary-service-client", + "@mongodb-js/devtools-connect": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-2.4.3.tgz", + "integrity": "sha512-JS288VVm/Mu8+kHL8ybKCpL2/AiA4CWhWun7FR3iRNH5NXbT9c6aovEc2pxjsCbmYUjzuTsRoIo9LTrNoCvNrQ==", "requires": { - "chai": "^3.5.0", - "debug": "^2.2.0", - "depcheck": "^1.4.1", - "dotenv": "^4.0.0", - "eslint": "^7.25.0", - "eslint-config-mongodb-js": "^2.2.0", - "lodash": "^4.17.21", - "mocha": "^10.2.0", - "pbkdf2": "^3.0.9", - "superagent": "^3.3.1" + "lodash.merge": "^4.6.2", + "mongodb-connection-string-url": "^3.0.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1", + "system-ca": "^1.0.2" }, "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chai": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", - "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", - "dev": true, - "requires": { - "assertion-error": "^1.0.1", - "deep-eql": "^0.1.3", - "type-detect": "^1.0.0" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "dev": true, - "requires": { - "type-detect": "0.1.1" - }, - "dependencies": { - "type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true - } - } - }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - }, - "eslint-config-mongodb-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-mongodb-js/-/eslint-config-mongodb-js-2.3.0.tgz", - "integrity": "sha512-9zxJawyp68GNX63pfqeLV47/ShSyY7Hce3l/XhrD8dihFhygs+5C7lk12ogDePK3OmOer1pREvwgR8q0YvV4Pw==", - "dev": true, - "requires": { - "babel-eslint": "^7.1.0", - "eslint": "^3.3.1", - "eslint-plugin-chai-friendly": "^0.4.0", - "eslint-plugin-react": "^6.1.2" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - } - } - } - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "requires": { - "array.prototype.find": "^2.0.1", - "doctrine": "^1.2.2", - "has": "^1.0.1", - "jsx-ast-utils": "^1.3.4", - "object.assign": "^4.0.4" - } - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, + "@types/whatwg-url": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.3.tgz", + "integrity": "sha512-z1ELvMijRL1QmU7QuzDkeYXSF2+dXI0ITKoQsIoVKcNBOiK5RMmWy+pYYxJTHFt8vkpZe7UsvRErQwcxZkjoUw==", "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "@types/webidl-conversions": "*" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, + "mongodb-connection-string-url": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.0.tgz", + "integrity": "sha512-t1Vf+m1I5hC2M5RJx/7AtxgABy1cZmIPQRMXw+gEIPn/cZNF3Oiy+l0UIypUwVB5trcWHq3crg2g3uAR9aAwsQ==", "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" } }, - "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", - "dev": true, + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "requires": { - "circular-json": "^0.3.1", - "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", - "write": "^0.2.1" + "punycode": "^2.3.0" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true - }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, + "whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + } + } + }, + "@mongodb-js/devtools-docker-test-envs": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-docker-test-envs/-/devtools-docker-test-envs-1.2.5.tgz", + "integrity": "sha512-4QN0C29alS9nHOe0s2BF2QF5c/JFVtCjZkxMg/fl6wH3f2nK/ILGHYzKJVnPQqRbxL1k2hxf5iw24bSLgYrXVg==", + "dev": true, + "requires": { + "eslint-plugin-mocha": "^9.0.0", + "execa": "^5.1.1", + "hostile": "^1.3.3", + "mongodb-connection-string-url": "^2.0.0", + "uuid": "^8.3.2", + "wait-on": "^6.0.0" + }, + "dependencies": { + "eslint-plugin-mocha": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", + "integrity": "sha512-d7knAcQj1jPCzZf3caeBIn3BnW6ikcvfz0kSqQpwPYcVGLoJV5sz0l0OJB2LR8I7dvTDbqq1oV6ylhSgzA10zg==", "dev": true, "requires": { - "number-is-nan": "^1.0.0" + "eslint-utils": "^3.0.0", + "ramda": "^0.27.1" } }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "eslint-visitor-keys": "^2.0.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "rxjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", "dev": true, "requires": { - "minimist": "0.0.8" + "tslib": "~2.1.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "wait-on": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.0.tgz", + "integrity": "sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "axios": "^0.21.1", + "joi": "^17.4.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.1.0" } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, + } + } + }, + "@mongodb-js/devtools-github-repo": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-github-repo/-/devtools-github-repo-1.4.1.tgz", + "integrity": "sha512-wpVbM7MTft2mFc66ZOulAW4TnyK9fzYL/dqhcUk7DMcdwO8TcR1VZPkh55fRugSXgkfCUcxfZmqmuSSAudLGjA==" + }, + "@mongodb-js/dl-center": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/dl-center/-/dl-center-1.0.1.tgz", + "integrity": "sha512-gUxfbhvYWjWK+QHyrB2iiwkN/EZqab6tJG33A7rNR5lPC9rmzzBAKU62AuB4vFhaMtT3m9Vswbu2040IqMm0xw==", + "requires": { + "ajv": "^6.12.5", + "aws-sdk": "^2.770.0", + "node-fetch": "^2.6.1" + } + }, + "@mongodb-js/electron-wix-msi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/electron-wix-msi/-/electron-wix-msi-3.0.0.tgz", + "integrity": "sha512-wcpOxuDmJKBBeB7MOor5tRutNViK0K+zK3N3yi/ZeLZinzD3JOWPaV7kwh+2EMiRJrfRz0IiS+d3SRsNaAWNYA==", + "requires": { + "debug": "^3.1.0", + "fs-extra": "^7.0.0", + "klaw": "^3.0.0", + "lodash": "^4.17.10", + "uuid": "^3.3.2" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "ms": "^2.1.1" } }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { - "glob": "^7.1.3" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "once": "^1.3.0" + "graceful-fs": "^4.1.6" } }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "@mongodb-js/eslint-config-compass": { + "version": "file:configs/eslint-config-compass", + "requires": { + "@babel/core": "^7.21.4", + "@babel/eslint-parser": "^7.14.3", + "@mongodb-js/eslint-config-devtools": "^0.9.9", + "@mongodb-js/eslint-plugin-compass": "^1.0.14", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-filename-rules": "^1.2.0", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-mocha": "^8.0.0", + "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react-hooks": "^4.2.0", + "prettier": "^2.7.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", + "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-compilation-targets": "^7.21.5", + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helpers": "^7.21.5", + "@babel/parser": "^7.21.8", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "@babel/parser": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", + "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==" }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@mongodb-js/eslint-config-devtools": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/eslint-config-devtools/-/eslint-config-devtools-0.9.9.tgz", + "integrity": "sha512-TnIAFO/40XsLRYbsWGzADbWXsFalVna///x0xxj622xfp4l4W9wXLeOHRSyCRu2S73qACzCX48MhuctjTS662A==", + "requires": { + "@babel/core": "^7.22.8", + "@babel/eslint-parser": "^7.22.7", + "@babel/preset-env": "^7.22.7", + "@babel/preset-react": "^7.22.5", + "@typescript-eslint/eslint-plugin": "^5.59.0", + "@typescript-eslint/parser": "^5.59.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-filename-rules": "^1.2.0", + "eslint-plugin-jsx-a11y": "^6.4.1", + "eslint-plugin-mocha": "^8.0.0", + "eslint-plugin-react": "^7.24.0", + "eslint-plugin-react-hooks": "^4.2.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.22.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", + "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "@nicolo-ribaudo/semver-v6": "^6.3.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2" + } }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "@babel/parser": { + "version": "7.22.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", + "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==" + } + } + }, + "@mongodb-js/eslint-plugin-compass": { + "version": "file:configs/eslint-plugin-compass", + "requires": { + "@mongodb-js/mocha-config-compass": "^1.3.6", + "@mongodb-js/prettier-config-compass": "^1.0.1", + "depcheck": "^1.4.1", + "eslint": "^7.25.0", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "prettier": "^2.7.1" + } + }, + "@mongodb-js/explain-plan-helper": { + "version": "file:packages/explain-plan-helper", + "requires": { + "@mongodb-js/eslint-config-compass": "^1.0.15", + "@mongodb-js/mocha-config-compass": "^1.3.6", + "@mongodb-js/prettier-config-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.3", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.0.0", + "@types/sinon-chai": "^3.2.5", + "chai": "^4.3.4", + "depcheck": "^1.4.1", + "eslint": "^7.25.0", + "mocha": "^10.2.0", + "mongodb-explain-compat": "^3.0.2", + "nyc": "^15.1.0", + "prettier": "^2.7.1", + "sinon": "^9.2.3", + "typescript": "^5.0.4" + }, + "dependencies": { + "sinon": { + "version": "9.2.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", + "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", "dev": true, "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" + "@sinonjs/commons": "^1.8.1", + "@sinonjs/fake-timers": "^6.0.1", + "@sinonjs/samsam": "^5.3.1", + "diff": "^4.0.2", + "nise": "^4.0.4", + "supports-color": "^7.1.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } } } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, + } + } + }, + "@mongodb-js/get-os-info": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@mongodb-js/get-os-info/-/get-os-info-0.3.13.tgz", + "integrity": "sha512-Vdu445Edynic4nPOVQauwRcZwCESvafwOkBkkrpF4QKK70ffQMNxf9PSwG/q7G91RlUyKj2kAkXBv3vIqJ/Erg==", + "dev": true + }, + "@mongodb-js/mocha-config-compass": { + "version": "file:configs/mocha-config-compass", + "requires": { + "@electron/remote": "^2.1.1", + "@mongodb-js/mocha-config-devtools": "^1.0.0", + "@mongodb-js/prettier-config-compass": "^1.0.1", + "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", + "chai": "^4.3.4", + "chai-dom": "^1.9.0", + "chai-enzyme": "^1.0.0-beta.1", + "enzyme": "^3.11.0", + "global-jsdom": "^8.3.0", + "identity-obj-proxy": "^3.0.0", + "jsdom": "^21.1.0", + "prettier": "^2.7.1", + "react-16-node-hanging-test-fix": "^1.0.0", + "sinon-chai": "^3.7.0", + "ts-node": "^10.9.1", + "why-is-node-running": "^2.2.2" + } + }, + "@mongodb-js/mocha-config-devtools": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@mongodb-js/mocha-config-devtools/-/mocha-config-devtools-1.0.0.tgz", + "integrity": "sha512-AKfi6jPl0TLyfmnK5Df5rBOtFb9x06KL3oxDROT8sNJMESQXD9nEXQKknoNr9oDAuvJTT9Gxoc8FlOuRHSghNQ==", + "requires": { + "@wojtekmaj/enzyme-adapter-react-17": "^0.8.0", + "chai": "^4.3.4", + "chai-dom": "^1.9.0", + "chai-enzyme": "^1.0.0-beta.1", + "enzyme": "^3.11.0", + "global-jsdom": "^8.3.0", + "identity-obj-proxy": "^3.0.0", + "jsdom": "^21.1.0", + "react-16-node-hanging-test-fix": "^1.0.0", + "sinon-chai": "^3.7.0", + "ts-node": "^10.9.1", + "why-is-node-running": "^2.2.2" + } + }, + "@mongodb-js/mongodb-constants": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@mongodb-js/mongodb-constants/-/mongodb-constants-0.7.2.tgz", + "integrity": "sha512-ElaVCCQo80vQTX865RXbJoITaB6kHJmOWqv0ANO5I/S9nP5LaIEfA2QQuBmE4cHOmb3ZGfzLfyCCfwbeSBwE6w==", + "dev": true, + "requires": { + "dedent": "^1.5.1", + "semver": "^7.5.4" + }, + "dependencies": { + "dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true + } + } + }, + "@mongodb-js/mongodb-downloader": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@mongodb-js/mongodb-downloader/-/mongodb-downloader-0.2.8.tgz", + "integrity": "sha512-y+mgw9QspvgTLRNHZJRS+DUTPk45RWpvYD1MaGDWhZ4ajffvxGqanY+Z4R6z01n+tIRmQvpShzF6zk+2Pr9d6w==", + "requires": { + "debug": "^4.3.4", + "decompress": "^4.2.1", + "mongodb-download-url": "^1.3.0", + "node-fetch": "^2.6.11", + "tar": "^6.1.15" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { - "prelude-ls": "~1.1.2" + "ms": "2.1.2" } }, - "type-detect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", - "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", - "dev": true - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, + "node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "requires": { - "mkdirp": "^0.5.1" + "whatwg-url": "^5.0.0" } } } @@ -63545,9 +62255,9 @@ "dev": true }, "@mongodb-js/saslprep": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.0.tgz", - "integrity": "sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.4.tgz", + "integrity": "sha512-8zJ8N1x51xo9hwPh6AWnKdLGEC5N3lDa6kms1YHmFBoRhTpJR6HG8wWk0td1MVCu9cD4YBrvjZEtd5Obw0Fbnw==", "requires": { "sparse-bitfield": "^3.0.3" } @@ -63614,6 +62324,25 @@ } } }, + "@mongodb-js/signing-utils": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/signing-utils/-/signing-utils-0.2.3.tgz", + "integrity": "sha512-9JofubOY8B2I9+SoQCkDV3DC4xNU0Vevb6L/7FC3OmLz/5jzrmLkJ5B6VmLOi1nlIV+q0leEopIZUvJZ9BIPrQ==", + "requires": { + "debug": "^4.3.4", + "ssh2": "^1.15.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + } + } + }, "@mongodb-js/ssh-tunnel": { "version": "file:packages/ssh-tunnel", "requires": { @@ -63717,7 +62446,7 @@ "core-js": "^3.17.3", "css-loader": "^4.3.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "html-webpack-plugin": "^5.3.2", "less-loader": "^10.0.1", @@ -70255,9 +68984,9 @@ } }, "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "requires": { "safer-buffer": "~2.1.0" } @@ -72205,15 +70934,6 @@ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", "dev": true }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", @@ -72526,7 +71246,7 @@ "compass-e2e-tests": { "version": "file:packages/compass-e2e-tests", "requires": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@mongodb-js/compass-test-server": "^0.1.11", "@mongodb-js/eslint-config-compass": "^1.0.15", "@mongodb-js/oidc-mock-provider": "^0.4.1", @@ -72544,7 +71264,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -73217,11 +71937,6 @@ "component-indexof": "0.0.3" } }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "component-event": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/component-event/-/component-event-0.1.4.tgz", @@ -73267,401 +71982,371 @@ } } }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "optional": true, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "consolidate": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", - "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", - "dev": true, - "requires": { - "bluebird": "^3.7.2" - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "requires": { - "safe-buffer": "5.2.1" - } - }, - "content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" - }, - "conventional-changelog-angular": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", - "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", - "dev": true, - "requires": { - "compare-func": "^2.0.0" - } - }, - "conventional-changelog-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", - "integrity": "sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==", - "dev": true, - "requires": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^6.0.0", - "conventional-commits-parser": "^4.0.0", - "dateformat": "^3.0.3", - "get-pkg-repo": "^4.2.1", - "git-raw-commits": "^3.0.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^5.0.0", - "normalize-package-data": "^3.0.3", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - } - } - } - }, - "conventional-changelog-preset-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", - "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==", - "dev": true - }, - "conventional-changelog-writer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", - "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", - "dev": true, - "requires": { - "conventional-commits-filter": "^3.0.0", - "dateformat": "^3.0.3", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^8.1.2", - "semver": "^7.0.0", - "split": "^1.0.1" - } - }, - "conventional-commits-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", - "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", - "dev": true, - "requires": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.1" - } - }, - "conventional-commits-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", - "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", - "dev": true, - "requires": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.3.5", - "meow": "^8.1.2", - "split2": "^3.2.2" - } - }, - "conventional-recommended-bump": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz", - "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==", - "dev": true, - "requires": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^3.0.0", - "conventional-commits-filter": "^3.0.0", - "conventional-commits-parser": "^4.0.0", - "git-raw-commits": "^3.0.0", - "git-semver-tags": "^5.0.0", - "meow": "^8.1.2" - }, - "dependencies": { - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - } - } - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" - }, - "copy-anything": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", - "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", - "requires": { - "is-what": "^3.12.0" - } - }, - "core-js": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.17.3.tgz", - "integrity": "sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw==" - }, - "core-js-compat": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", - "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", - "requires": { - "browserslist": "^4.21.9" - } - }, - "core-js-pure": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.2.tgz", - "integrity": "sha512-D42L7RYh1J2grW8ttxoY1+17Y4wXZeKe7uyplAI3FkNQyI5OgBIAjUfFiTPfL1rs0qLpxaabITNbjKl1Sp82tA==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "cpu-features": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.7.tgz", - "integrity": "sha512-fjzFmsUKKCrC9GrM1eQTvQx18e+kjXFzjRLvJPNEDjk31+bJ6ZiV6uchv/hzbzXVIgbWdrEyyX1IFKwse65+8w==", - "optional": true, - "requires": { - "buildcheck": "~0.0.6", - "nan": "^2.17.0" - } - }, - "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } - }, - "crc32-stream": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.4.tgz", - "integrity": "sha1-c7wltF+sHbZjIjGnv86JJ+nwZVI=", - "requires": { - "buffer-crc32": "~0.2.1", - "readable-stream": "~1.0.24" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, - "create-hash": { + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, + "consolidate": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", + "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", + "dev": true, + "requires": { + "bluebird": "^3.7.2" + } + }, + "content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "requires": { + "safe-buffer": "5.2.1" + } + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", + "dev": true, + "requires": { + "compare-func": "^2.0.0" + } + }, + "conventional-changelog-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", + "integrity": "sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==", + "dev": true, + "requires": { + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-parser": "^4.0.0", + "dateformat": "^3.0.3", + "get-pkg-repo": "^4.2.1", + "git-raw-commits": "^3.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^5.0.0", + "normalize-package-data": "^3.0.3", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + } + } + }, + "conventional-changelog-preset-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", + "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", + "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", + "dev": true, + "requires": { + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + } + }, + "conventional-commits-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", + "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" + } + }, + "conventional-commits-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", + "dev": true, + "requires": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" + } + }, + "conventional-recommended-bump": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz", + "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^3.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^4.0.0", + "git-raw-commits": "^3.0.0", + "git-semver-tags": "^5.0.0", + "meow": "^8.1.2" + }, + "dependencies": { + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + } + } + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", + "requires": { + "is-what": "^3.12.0" + } + }, + "core-js": { + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.17.3.tgz", + "integrity": "sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw==" + }, + "core-js-compat": { + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.1.tgz", + "integrity": "sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA==", + "requires": { + "browserslist": "^4.21.9" + } + }, + "core-js-pure": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.15.2.tgz", + "integrity": "sha512-D42L7RYh1J2grW8ttxoY1+17Y4wXZeKe7uyplAI3FkNQyI5OgBIAjUfFiTPfL1rs0qLpxaabITNbjKl1Sp82tA==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "cpu-features": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", + "optional": true, + "requires": { + "buildcheck": "~0.0.6", + "nan": "^2.17.0" + } + }, + "crc-32": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dev": true, "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "crc32-stream": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.4.tgz", + "integrity": "sha1-c7wltF+sHbZjIjGnv86JJ+nwZVI=", "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "buffer-crc32": "~0.2.1", + "readable-stream": "~1.0.24" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } } }, "create-require": { @@ -74814,11 +73499,6 @@ "is-obj": "^2.0.0" } }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" - }, "download": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", @@ -75148,9 +73828,9 @@ } }, "electron": { - "version": "28.1.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.0.tgz", - "integrity": "sha512-82Y7o4PSWPn1o/aVwYPsgmBw6Gyf2lVHpaBu3Ef8LrLWXxytg7ZRZr/RtDqEMOzQp3+mcuy3huH84MyjdmP50Q==", + "version": "28.1.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-28.1.4.tgz", + "integrity": "sha512-WE6go611KOhtH6efRPMnVC7FE7DCKnQ3ZyHFeI1DbaCy8OU4UjZ8/CZGcuZmZgRdxSBEHoHdgaJkWRHZzF0FOg==", "requires": { "@electron/get": "^2.0.0", "@types/node": "^18.11.18", @@ -77751,11 +76431,6 @@ "mime-types": "^2.1.12" } }, - "formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" - }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -78869,11 +77544,11 @@ "hadron-build": { "version": "file:packages/hadron-build", "requires": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@mongodb-js/devtools-github-repo": "^1.4.1", "@mongodb-js/dl-center": "^1.0.1", "@mongodb-js/electron-wix-msi": "^3.0.0", - "@mongodb-js/mongodb-notary-service-client": "^2.0.4", + "@mongodb-js/signing-utils": "^0.2.3", "@npmcli/arborist": "^6.2.0", "@octokit/rest": "^18.6.2", "asar": "^3.0.3", @@ -78886,7 +77561,7 @@ "del": "^2.0.2", "depcheck": "^1.4.1", "download": "^8.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-installer-debian": "^3.2.0", "electron-installer-dmg": "^4.0.0", "electron-installer-redhat": "^2.0.0", @@ -78909,7 +77584,7 @@ "mocha": "^10.2.0", "moment": "^2.29.4", "mongodb-js-cli": "^0.0.3", - "node-abi": "^3.52.0", + "node-abi": "^3.54.0", "normalize-package-data": "^2.3.5", "parse-github-repo-url": "^1.3.0", "plist": "^3.0.1", @@ -79607,7 +78282,7 @@ "chai": "^4.3.6", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "is-electron-renderer": "^2.0.1", "mocha": "^10.2.0", @@ -80283,16 +78958,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, "hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", @@ -84612,16 +83277,6 @@ "is-buffer": "~1.1.6" } }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, "media-type": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-type/-/media-type-0.3.0.tgz", @@ -85319,7 +83974,7 @@ "mongodb-compass": { "version": "file:packages/compass", "requires": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@electron/remote": "^2.1.1", "@mongodb-js/atlas-service": "^0.14.3", "@mongodb-js/compass-home": "^6.25.2", @@ -85344,7 +83999,7 @@ "compass-preferences-model": "^2.17.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", @@ -86151,9 +84806,9 @@ "dev": true }, "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, "napi-build-utils": { @@ -86224,9 +84879,9 @@ } }, "node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", "requires": { "semver": "^7.3.5" } @@ -86237,9 +84892,9 @@ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node-api-version": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", - "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.2.0.tgz", + "integrity": "sha512-fthTTsi8CxaBXMaBAD7ST2uylwvsnYxh2PfaScwpMhos6KlSFajXQPcM4ogNE1q2s3Lbz9GCGqeIHC+C6OZnKg==", "requires": { "semver": "^7.3.5" } @@ -87935,18 +86590,6 @@ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, - "pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -90474,15 +89117,6 @@ "glob": "^7.1.3" } }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -90805,15 +89439,6 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, "shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", @@ -91606,14 +90231,14 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "ssh2": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.12.0.tgz", - "integrity": "sha512-7mcLu8biO6/BjQQ1iCjCmuBiF0hXxo+JlHpJBPDTVsxU7evscWWiRUgYF5XIs4gLKmiPRHA0maund11QLWyDJg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", "requires": { - "asn1": "^0.2.4", + "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2", - "cpu-features": "~0.0.6", - "nan": "^2.17.0" + "cpu-features": "~0.0.9", + "nan": "^2.18.0" } }, "sshpk": { @@ -91937,65 +90562,6 @@ "debug": "^4.1.0" } }, - "superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "requires": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index 76b810b62ea..afeabae5708 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -80,7 +80,7 @@ "@mongodb-js/devtools-connect": "^2.4.2", "@mongodb-js/oidc-plugin": "^0.3.0", "compass-preferences-model": "^2.17.3", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-ipc": "^3.2.9", "node-fetch": "^2.7.0", "react": "^17.0.2", diff --git a/packages/compass-components/src/components/document-list/element-editors.tsx b/packages/compass-components/src/components/document-list/element-editors.tsx index c91d76df8f2..0f7a0c0387b 100644 --- a/packages/compass-components/src/components/document-list/element-editors.tsx +++ b/packages/compass-components/src/components/document-list/element-editors.tsx @@ -69,7 +69,11 @@ export const KeyEditor: React.FunctionComponent<{ onEditStart, }) => { const darkMode = useDarkMode(); - const width = `${Math.max(value.length, 1)}ch`; + // On Safari if a text is 5 mono-characters wide and is supposed to overflow / + // get ellipse'd only when shorter than that, it would still overflow and get + // ellipse'd under normal conditions, for unknown reasons. For that, we add a + // small amount to the width to tackle this issue. + const width = `${Math.max(value.length, 1)}.5ch`; return ( <> diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index 44fc3122831..ab451687211 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -91,7 +91,7 @@ "classnames": "^2.2.6", "depcheck": "^1.4.1", "ejson-shell-parser": "^2.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-crud/src/stores/crud-store.spec.ts b/packages/compass-crud/src/stores/crud-store.spec.ts index a20f425ccdf..733d3d6ebc1 100644 --- a/packages/compass-crud/src/stores/crud-store.spec.ts +++ b/packages/compass-crud/src/stores/crud-store.spec.ts @@ -372,101 +372,6 @@ describe('store', function () { }); }); - describe('#onCollectionChanged', function () { - let store: CrudStore; - - beforeEach(function () { - const plugin = activateDocumentsPlugin( - { - isSearchIndexesSupported: true, - isReadonly: false, - isTimeSeries: false, - namespace: 'compass-crud.another', - }, - { - dataService, - localAppRegistry, - globalAppRegistry, - instance, - preferences, - logger: createNoopLoggerAndTelemetry(), - }, - createActivateHelpers() - ); - store = plugin.store; - deactivate = () => plugin.deactivate(); - }); - - context('when the collection is not readonly', function () { - beforeEach(function () { - store.state.table.path = ['test-path']; - store.state.table.types = ['test-types']; - store.state.table.doc = {}; - store.state.table.editParams = {}; - }); - - it('resets the state for the new editable collection', async function () { - const listener = waitForState(store, (state) => { - expect(state.table.path).to.deep.equal([]); - expect(state.table.types).to.deep.equal([]); - expect(state.table.doc).to.equal(null); - expect(state.table.editParams).to.equal(null); - expect(state.collection).to.equal('another'); - expect(state.isEditable).to.equal(true); - expect(state.ns).to.equal('compass-crud.another'); - }); - - store.onCollectionChanged('compass-crud.another'); - - await listener; - }); - }); - - context('when the collection is readonly', function () { - beforeEach(function () { - const plugin = activateDocumentsPlugin( - { - isSearchIndexesSupported: true, - isReadonly: true, - isTimeSeries: false, - namespace: 'compass-crud.another', - }, - { - dataService, - localAppRegistry, - globalAppRegistry, - instance, - preferences, - logger: createNoopLoggerAndTelemetry(), - }, - createActivateHelpers() - ); - store = plugin.store; - deactivate = () => plugin.deactivate(); - store.state.table.path = ['test-path']; - store.state.table.types = ['test-types']; - store.state.table.doc = {}; - store.state.table.editParams = {}; - }); - - it('resets the state for the new readonly collection', async function () { - const listener = waitForState(store, (state) => { - expect(state.table.path).to.deep.equal([]); - expect(state.table.types).to.deep.equal([]); - expect(state.table.doc).to.equal(null); - expect(state.table.editParams).to.equal(null); - expect(state.collection).to.equal('another'); - expect(state.isEditable).to.equal(false); - expect(state.ns).to.equal('compass-crud.another'); - }); - - store.onCollectionChanged('compass-crud.another'); - - await listener; - }); - }); - }); - describe('#onQueryChanged', function () { let store: CrudStore; diff --git a/packages/compass-crud/src/stores/crud-store.ts b/packages/compass-crud/src/stores/crud-store.ts index 2dd362c5b30..2ad2773090f 100644 --- a/packages/compass-crud/src/stores/crud-store.ts +++ b/packages/compass-crud/src/stores/crud-store.ts @@ -233,31 +233,6 @@ const DEFAULT_INITIAL_MAX_TIME_MS = 60000; */ const COUNT_MAX_TIME_MS_CAP = 5000; -/** - * Set the data provider. - * - * @param {Store} store - The store. - * @param {Error} error - The error (if any) while connecting. - * @param {Object} provider - The data provider. - */ -export const setDataProvider = ( - store: CrudStoreImpl, - error: Error | null | undefined, - provider: DataService -) => { - store.setDataService(error, provider); -}; - -/** - * Set the isReadonly flag in the store. - * - * @param {Store} store - The store. - * @param {Boolean} isReadonly - If the collection is readonly. - */ -export const setIsReadonly = (store: CrudStoreImpl, isReadonly: boolean) => { - store.onReadonlyChanged(isReadonly); -}; - /** * Set the isEditable flag in the store. * @@ -269,30 +244,7 @@ export const setIsEditable = (store: CrudStoreImpl, hasProjection: boolean) => { isReadonly: store.state.isReadonly, hasProjection, }); - store.onIsEditableChanged(isEditable); -}; - -/** - * Set the isTimeSeries flag in the store. - * - * @param {Store} store - The store. - * @param {Boolean} isTimeSeries - If the collection is a time-series collection. - */ -export const setIsTimeSeries = ( - store: CrudStoreImpl, - isTimeSeries: boolean -) => { - store.onTimeSeriesChanged(isTimeSeries); -}; - -/** - * Set the namespace in the store. - * - * @param {Store} store - The store. - * @param {String} ns - The namespace in "db.collection" format. - */ -export const setNamespace = (store: CrudStoreImpl, ns: string) => { - store.onCollectionChanged(ns); + store.setState({ isEditable }); }; /** @@ -442,11 +394,13 @@ class CrudStoreImpl favoriteQueriesStorage: FavoriteQueryStorage; recentQueriesStorage: RecentQueryStorage; logger: LoggerAndTelemetry; + instance: MongoDBInstance; constructor( options: CrudStoreOptions & CrudStoreActionsOptions, services: Pick< DocumentsPluginServices, + | 'instance' | 'dataService' | 'localAppRegistry' | 'globalAppRegistry' @@ -465,41 +419,51 @@ class CrudStoreImpl this.globalAppRegistry = services.globalAppRegistry; this.preferences = services.preferences; this.logger = services.logger; + this.instance = services.instance; } getInitialState(): CrudState { + const queryState = this.getInitialQueryState(); + const isDataLake = !!this.instance.dataLake.isDataLake; + const isReadonly = !!this.options.isReadonly; + return { - ns: '', - collection: '', + ns: this.options.namespace, + collection: toNS(this.options.namespace).collection, abortController: null, error: null, docs: [], start: 0, - version: '3.4.0', + version: this.instance.build.version, end: 0, page: 0, - isEditable: true, + isEditable: isListEditable({ + isDataLake, + isReadonly, + hasProjection: this.hasProjection(queryState), + }), view: LIST, count: 0, insert: this.getInitialInsertState(), bulkUpdate: this.getInitialBulkUpdateState(), bulkDelete: this.getInitialBulkDeleteState(), table: this.getInitialTableState(), - query: this.getInitialQueryState(), - isDataLake: false, - isReadonly: false, - isTimeSeries: false, + query: queryState, + isDataLake, + isReadonly, + isTimeSeries: !!this.options.isTimeSeries, status: DOCUMENTS_STATUS_INITIAL, debouncingLoad: false, loadingCount: false, outdated: false, shardKeys: null, resultId: resultId(), - isWritable: false, - instanceDescription: '', + isWritable: this.instance.isWritable, + instanceDescription: this.instance.description, isCollectionScan: false, - isSearchIndexesSupported: false, - isUpdatePreviewSupported: false, + isSearchIndexesSupported: this.options.isSearchIndexesSupported, + isUpdatePreviewSupported: + this.instance.topologyDescription.type !== 'Single', }; } @@ -582,65 +546,6 @@ class CrudStoreImpl return this.state.view.toLowerCase(); } - /** - * Set if the collection is readonly. - * - * @param {Boolean} isReadonly - If the collection is readonly. - */ - onReadonlyChanged(isReadonly: boolean) { - this.setState({ isReadonly }); - } - - /** - * Set if the connection supports search index management. - */ - setIsSearchIndexesSupported(isSearchIndexesSupported: boolean) { - this.setState({ isSearchIndexesSupported }); - } - - /** - * Set if the collection is readonly. - * - * @param {Boolean} isEditable - If Compass is readonly - */ - onIsEditableChanged(isEditable: boolean) { - this.setState({ isEditable }); - } - - /** - * Set if the collection is a time-series collection. - * - * @param {Boolean} isTimeSeries - If the collection is time-series. - */ - onTimeSeriesChanged(isTimeSeries: boolean) { - this.setState({ isTimeSeries }); - } - - /** - * Plugin lifecycle method that is called when the namespace changes in - * Compass. Trigger with new namespace and cleared path/types. - * - * @param {String} ns - The new namespace. - */ - onCollectionChanged(ns: string) { - // If the existing collection's bulk update operations are still in progress - // they will complete after we reset the state and change it for the - // previous collection - if (this.state.bulkUpdate.previewAbortController) { - this.state.bulkUpdate.previewAbortController.abort(); - } - - const nsobj = toNS(ns); - this.setState({ - ns: ns, - collection: nsobj.collection, - table: this.getInitialTableState(), - query: this.getInitialQueryState(), - bulkUpdate: this.getInitialBulkUpdateState(), - bulkDelete: this.getInitialBulkDeleteState(), - }); - } - /** * Fires when the query is changed. * @@ -1578,8 +1483,6 @@ class CrudStoreImpl * @param {String} view - The new view. */ viewChanged(view: CrudState['view']) { - this.globalAppRegistry.emit('document-view-changed', view); - this.localAppRegistry.emit('document-view-changed', view); this.setState({ view: view }); } @@ -1885,18 +1788,6 @@ class CrudStoreImpl return !!(query.project && Object.keys(query.project).length > 0); } - /** - * Set the data service on the store. - * - * @param {Error} error - The error connecting. - * @param {DataService} dataService - The data service. - */ - setDataService(error: Error | undefined | null, dataService: DataService) { - if (!error) { - this.dataService = dataService; - } - } - openCreateIndexModal() { this.localAppRegistry.emit('open-create-index-modal'); } @@ -2069,6 +1960,7 @@ export function activateDocumentsPlugin( new CrudStoreImpl( { ...options, actions }, { + instance, dataService, localAppRegistry, globalAppRegistry, @@ -2094,18 +1986,6 @@ export function activateDocumentsPlugin( } ); - // Set global app registry to get status actions. - const instanceState: Partial = { - isWritable: instance.isWritable, - instanceDescription: instance.description, - version: instance.build.version, - isUpdatePreviewSupported: instance.topologyDescription.type !== 'Single', - }; - if (instance.dataLake.isDataLake) { - instanceState.isDataLake = true; - } - store.setState(instanceState); - // these can change later on(instance, 'change:isWritable', () => { store.setState({ isWritable: instance.isWritable }); @@ -2125,20 +2005,10 @@ export function activateDocumentsPlugin( } }); - if (options.isReadonly !== null && options.isReadonly !== undefined) { - setIsReadonly(store, options.isReadonly); - } - - if (options.namespace) { - setNamespace(store, options.namespace); - } - - if (options.isTimeSeries) { - setIsTimeSeries(store, options.isTimeSeries); - } - if (!options.noRefreshOnConfigure) { - void store.refreshDocuments(); + queueMicrotask(() => { + void store.refreshDocuments(); + }); } if ((options.query as any)?.update) { @@ -2147,11 +2017,11 @@ export function activateDocumentsPlugin( ?.update; const updateText = initialUpdate ? toJSString(initialUpdate) : undefined; - void store.openBulkUpdateModal(updateText); + queueMicrotask(() => { + void store.openBulkUpdateModal(updateText); + }); } - store.setIsSearchIndexesSupported(options.isSearchIndexesSupported); - const gridStore = configureGridStore({ actions }); store.gridStore = gridStore; diff --git a/packages/compass-crud/src/stores/index.ts b/packages/compass-crud/src/stores/index.ts deleted file mode 100644 index 432575810f6..00000000000 --- a/packages/compass-crud/src/stores/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { setDataProvider } from './crud-store'; -import configureGridStore from './grid-store'; - -export { configureGridStore, setDataProvider }; diff --git a/packages/compass-e2e-tests/package.json b/packages/compass-e2e-tests/package.json index 7913cd54e63..5fc60f29225 100644 --- a/packages/compass-e2e-tests/package.json +++ b/packages/compass-e2e-tests/package.json @@ -27,7 +27,7 @@ "server-info": "ts-node ./scripts/server-info.ts" }, "devDependencies": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@mongodb-js/compass-test-server": "^0.1.11", "@mongodb-js/eslint-config-compass": "^1.0.15", "@mongodb-js/oidc-mock-provider": "^0.4.1", @@ -45,7 +45,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", diff --git a/packages/compass-explain-plan/package.json b/packages/compass-explain-plan/package.json index 178cdee3f19..a95d2ae1ed4 100644 --- a/packages/compass-explain-plan/package.json +++ b/packages/compass-explain-plan/package.json @@ -81,7 +81,7 @@ "d3-flextree": "2.1.2", "d3-hierarchy": "^3.1.2", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "lodash": "^4.17.21", diff --git a/packages/compass-find-in-page/package.json b/packages/compass-find-in-page/package.json index 33a5ee24c09..9ae470bde6b 100644 --- a/packages/compass-find-in-page/package.json +++ b/packages/compass-find-in-page/package.json @@ -77,7 +77,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-import-export/package.json b/packages/compass-import-export/package.json index 7a144890258..1e643872eb6 100644 --- a/packages/compass-import-export/package.json +++ b/packages/compass-import-export/package.json @@ -63,7 +63,7 @@ "@mongodb-js/compass-workspaces": "^0.4.3", "bson": "^6.2.0", "compass-preferences-model": "^2.17.3", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-app-registry": "^9.1.6", "hadron-document": "^8.4.7", "mongodb-data-service": "^22.17.3", @@ -77,7 +77,7 @@ "@mongodb-js/compass-workspaces": "^0.4.3", "bson": "^6.2.0", "compass-preferences-model": "^2.17.3", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-app-registry": "^9.1.6", "hadron-document": "^8.4.7", "mongodb-data-service": "^22.17.3" diff --git a/packages/compass-indexes/package.json b/packages/compass-indexes/package.json index 919e6304f80..707994d0502 100644 --- a/packages/compass-indexes/package.json +++ b/packages/compass-indexes/package.json @@ -81,7 +81,7 @@ "chai": "^4.2.0", "depcheck": "^1.4.1", "ejson-shell-parser": "^2.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "lodash": "^4.17.21", diff --git a/packages/compass-query-bar/package.json b/packages/compass-query-bar/package.json index 0e188cd12da..1c35ae5f8ca 100644 --- a/packages/compass-query-bar/package.json +++ b/packages/compass-query-bar/package.json @@ -83,7 +83,7 @@ "@testing-library/user-event": "^13.5.0", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "lodash": "^4.17.21", diff --git a/packages/compass-schema-validation/package.json b/packages/compass-schema-validation/package.json index 7fd86a23d92..a9f04921dcc 100644 --- a/packages/compass-schema-validation/package.json +++ b/packages/compass-schema-validation/package.json @@ -77,7 +77,7 @@ "@mongodb-js/webpack-config-compass": "^1.3.2", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index 61257814679..085f445161d 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -87,7 +87,7 @@ "@mongosh/logging": "^2.1.1", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-utils/package.json b/packages/compass-utils/package.json index 6a6f4d58082..a32445d3ae7 100644 --- a/packages/compass-utils/package.json +++ b/packages/compass-utils/package.json @@ -51,7 +51,7 @@ }, "optionalDependencies": { "@electron/remote": "^2.1.1", - "electron": "^28.1.0" + "electron": "^28.1.4" }, "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.0.15", diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index 4b7125f8224..52566fb0841 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -59,7 +59,7 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@gribnoysup/mongodb-browser": "^1.2.0", + "@gribnoysup/mongodb-browser": "^1.3.0", "@mongodb-js/compass-aggregations": "^9.25.3", "@mongodb-js/compass-app-stores": "^7.9.3", "@mongodb-js/compass-collection": "^4.22.3", diff --git a/packages/compass/package.json b/packages/compass/package.json index a20d3becfec..0da5aa3cdce 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -176,7 +176,7 @@ "system-ca": "^1.0.2" }, "devDependencies": { - "@electron/rebuild": "^3.4.1", + "@electron/rebuild": "^3.5.0", "@electron/remote": "^2.1.1", "@mongodb-js/atlas-service": "^0.14.3", "@mongodb-js/compass-home": "^6.25.2", @@ -199,7 +199,7 @@ "compass-preferences-model": "^2.17.3", "debug": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", diff --git a/packages/connection-storage/package.json b/packages/connection-storage/package.json index 5dea4e7312d..02ce72aca60 100644 --- a/packages/connection-storage/package.json +++ b/packages/connection-storage/package.json @@ -57,7 +57,7 @@ "@mongodb-js/compass-user-data": "^0.1.14", "@mongodb-js/compass-utils": "^0.5.10", "bson": "^6.2.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "hadron-ipc": "^3.2.9", "keytar": "^7.9.0", "lodash": "^4.17.21", diff --git a/packages/hadron-build/commands/release.js b/packages/hadron-build/commands/release.js index 3fee4a5b816..496d47b4c90 100644 --- a/packages/hadron-build/commands/release.js +++ b/packages/hadron-build/commands/release.js @@ -28,6 +28,7 @@ const packager = require('electron-packager'); const createApplicationZip = require('../lib/zip'); const run = require('./../lib/run'); const rebuild = require('@electron/rebuild').rebuild; +const { signArchive } = require('./../lib/signtool'); const ui = require('./ui'); const verify = require('./verify'); @@ -541,6 +542,7 @@ exports.run = (argv, done) => { !noAsar && task('create application asar', createApplicationAsar), !skipInstaller && task('create branded installer', createBrandedInstaller), task('create application zip', createApplicationZip), + task('sign zip', signArchive), task('store build configuration as json', writeConfigToJson) ].filter(Boolean)); diff --git a/packages/hadron-build/lib/mac-notary-service.js b/packages/hadron-build/lib/mac-notary-service.js new file mode 100644 index 00000000000..d45d0bb4464 --- /dev/null +++ b/packages/hadron-build/lib/mac-notary-service.js @@ -0,0 +1,90 @@ +// eslint-disable-next-line strict +'use strict'; +const download = require('download'); +const path = require('path'); +const { promises: fs } = require('fs'); +const debug = require('debug')('hadron-build:macos-notarization'); +const { promisify } = require('util'); +const childProcess = require('child_process'); +const execFile = promisify(childProcess.execFile); + +async function setupMacosNotary() { + try { + await fs.access('macnotary/macnotary'); + debug('macnotary already downloaded'); + } catch (err) { + debug('downloading macnotary'); + await download(process.env.MACOS_NOTARY_CLIENT_URL, 'macnotary', { + extract: true, + strip: 1 // remove leading platform + arch directory + }); + await fs.chmod('macnotary/macnotary', 0o755); // ensure +x is set + } +} + +/** + * Notarize a resource with the macOS notary service. + * https://wiki.corp.mongodb.com/display/BUILD/How+to+use+MacOS+notary+service + * + * Notarization is a three step process: + * 1. All the files to be notarized are zipped up into a single file. + * 2. The zip file is uploaded to the notary service. It signs all the + * files in the zip file and returns a new zip file with the signed files. + * 3. The orginal files are removed and the signed files are unzipped into + * their place. + * + * @param {string} src The path to the resource to notarize. It can be a directory or a file. + * @param {object} notarizeOptions + * @param {string} notarizeOptions.bundleId + * @param {string} [notarizeOptions.macosEntitlements] + */ +async function notarize(src, notarizeOptions) { + debug(`Signing and notarizing "${src}"`); + + await setupMacosNotary(); + + const fileName = path.basename(src); + const unsignedArchive = `${fileName}.zip`; + const signedArchive = `${fileName}.signed.zip`; + + const execOpts = { + cwd: path.dirname(src), + encoding: 'utf8', + }; + + // Step:1 - zip up the file/folder to unsignedArchive + debug(`running "zip -y -r '${unsignedArchive}' '${fileName}'"`); + await execFile('zip', ['-y', '-r', unsignedArchive, fileName], execOpts); + + try { + // Step:2 - send the zip to notary service and save the result to signedArchive + debug(`sending file to notary service (bundle id = ${notarizeOptions.bundleId})`); + const macnotaryResult = await execFile(path.resolve('macnotary/macnotary'), [ + '-t', 'app', + '-m', 'notarizeAndSign', + '-u', process.env.MACOS_NOTARY_API_URL, + '-b', notarizeOptions.bundleId, + '-f', unsignedArchive, + '-o', signedArchive, + '--verify', + ...(notarizeOptions.macosEntitlements ? ['-e', notarizeOptions.macosEntitlements] : []) + ], execOpts); + debug('macnotary result:', macnotaryResult.stdout, macnotaryResult.stderr); + debug('ls', (await execFile('ls', ['-lh'], execOpts)).stdout); + + // Step:3 - remove existing src, unzip signedArchive to src + debug('removing existing directory contents'); + await execFile('rm', ['-r', fileName], execOpts); + debug(`unzipping with "unzip -u ${signedArchive}"`); + await execFile('unzip', ['-u', signedArchive], execOpts); + } finally { + // cleanup - remove signedArchive and unsignedArchive + debug('ls', (await execFile('ls', ['-lh'], execOpts)).stdout); + debug(`removing ${signedArchive} and ${unsignedArchive}`); + await execFile('rm', ['-r', signedArchive, unsignedArchive], execOpts).catch(err => { + debug('error cleaning up', err); + }); + } +} + +module.exports = { notarize }; diff --git a/packages/hadron-build/lib/signtool.js b/packages/hadron-build/lib/signtool.js index 4746b00e864..5091d4e79da 100644 --- a/packages/hadron-build/lib/signtool.js +++ b/packages/hadron-build/lib/signtool.js @@ -1,22 +1,67 @@ -const debug = require('debug')('hadron-build:signtool'); -const { execFileSync } = require('child_process'); const path = require('path'); +const debug = require('debug')('hadron-build:target'); +const { sign: _garasign } = require('@mongodb-js/signing-utils'); -async function signtool(fileToSign) { - const signtoolPath = path.resolve(__dirname, '..', 'signtool/signtool.exe'); - - const execArgs = [signtoolPath, [path.resolve(fileToSign)], { stdio: 'inherit' }]; - debug(`Running signtool.exe to sign '${signtoolPath}'`, { - execArgs: execArgs, - env: { - NOTARY_SIGNING_COMMENT: process.env.NOTARY_SIGNING_COMMENT, - NOTARY_URL: process.env.NOTARY_URL, - NOTARY_SIGNING_KEY: process.env.NOTARY_SIGNING_KEY, - } - }); - - // eslint-disable-next-line no-sync - await execFileSync(...execArgs); +const canSign = () => ( + process.env.GARASIGN_USERNAME && + process.env.GARASIGN_PASSWORD && + process.env.ARTIFACTORY_USERNAME && + process.env.ARTIFACTORY_PASSWORD +); + +/** + * When using gpg to sign a file, it creates a signature file + * with same name as the original file and adds `.sig` to it. + * + * @param {string} filename + * @returns string + */ +function getSignedFilename(filename) { + return `${filename}.sig`; +} + +/** + * Currently, windows and macos zip are created from `zip` step + * of the release process and we sign them here. For linux, we + * create and sign the archive when creating corresponding deb/rpm file. + * + * @param {import('./Target')} target + */ +function signArchive(target, cb) { + const { app_archive_name, platform } = target; + if (platform === 'linux') { + debug('linux archive is signed when creating deb/rpm'); + return cb(); + } + sign(target.dest(app_archive_name)).then(cb).catch(cb); +} + +/** + * We are signing the file using `gpg` or `jsign` depending on the + * file extension. If the extension is `.exe` or `.msi`, we use `jsign` + * otherwise we use `gpg`. + * + * @param {string} src + * @returns {Promise} + */ +async function sign(src, garasign = _garasign) { + debug('Signing %s ...', src); + + if (!canSign()) { + debug('Skipping signing. Missing credentials.'); + return; + } + + const clientOptions = { + client: 'remote', + host: process.env.SIGNING_SERVER_HOSTNAME, + username: process.env.SIGNING_SERVER_USERNAME, + port: process.env.SIGNING_SERVER_PORT, + privateKey: process.env.SIGNING_SERVER_PRIVATE_KEY, + signingMethod: path.extname(src) === '.exe' || path.extname(src) === '.msi' ? 'jsign' : 'gpg' + }; + + return await garasign(src, clientOptions); } -module.exports = { signtool }; +module.exports = { sign, signArchive, getSignedFilename }; diff --git a/packages/hadron-build/lib/target.js b/packages/hadron-build/lib/target.js index 3fce92e4302..2ecc3746e7c 100644 --- a/packages/hadron-build/lib/target.js +++ b/packages/hadron-build/lib/target.js @@ -1,36 +1,20 @@ // eslint-disable-next-line strict 'use strict'; const chalk = require('chalk'); -const childProcess = require('child_process'); -const download = require('download'); const fs = require('fs'); const _ = require('lodash'); const semver = require('semver'); const path = require('path'); -const { promisify } = require('util'); const normalizePkg = require('normalize-package-data'); const parseGitHubRepoURL = require('parse-github-repo-url'); const ffmpegAfterExtract = require('electron-packager-plugin-non-proprietary-codecs-ffmpeg').default; const windowsInstallerVersion = require('./windows-installer-version'); const debug = require('debug')('hadron-build:target'); -const execFile = promisify(childProcess.execFile); -const mongodbNotaryServiceClient = require('@mongodb-js/mongodb-notary-service-client'); const which = require('which'); const plist = require('plist'); -const { signtool } = require('./signtool'); +const { sign, getSignedFilename } = require('./signtool'); const tarGz = require('./tar-gz'); - -async function signLinuxPackage(src) { - debug('Signing ... %s', src); - await mongodbNotaryServiceClient(src); - debug('Successfully signed %s', src); -} - -async function signWindowsPackage(src) { - debug('Signing ... %s', src); - await signtool(src); - debug('Successfully signed %s', src); -} +const { notarize } = require('./mac-notary-service'); function _canBuildInstaller(ext) { var bin = null; @@ -344,6 +328,11 @@ class Target { this.windows_nupkg_full_label = this.windows_nupkg_full_filename = `${this.packagerOptions.name}-${nuggetVersion}-full.nupkg`; + this.windows_zip_sign_label = + this.windows_zip_sign_filename = getSignedFilename(this.windows_zip_filename); + this.windows_nupkg_full_sign_label = + this.windows_nupkg_full_sign_filename = getSignedFilename(this.windows_nupkg_full_filename); + this.assets = [ { name: this.windows_setup_label, @@ -360,6 +349,10 @@ class Target { path: this.dest(this.windows_zip_label), downloadCenter: true }, + { + name: this.windows_zip_sign_label, + path: this.dest(this.windows_zip_sign_label), + }, { name: this.windows_releases_label, path: this.dest(this.windows_releases_label) @@ -367,6 +360,10 @@ class Target { { name: this.windows_nupkg_full_label, path: this.dest(this.windows_nupkg_full_label) + }, + { + name: this.windows_nupkg_full_sign_label, + path: this.dest(this.windows_nupkg_full_sign_label) } ]; @@ -413,8 +410,7 @@ class Target { this.createInstaller = async() => { // sign the main application .exe - await signWindowsPackage( - path.join(this.installerOptions.appDirectory, this.installerOptions.exe)); + await sign(path.join(this.installerOptions.appDirectory, this.installerOptions.exe)); const electronWinstaller = require('electron-winstaller'); await electronWinstaller.createWindowsInstaller(this.installerOptions); @@ -453,12 +449,15 @@ class Target { await msiCreator.compile(); // sign the MSI - await signWindowsPackage(this.dest(this.packagerOptions.name + '.msi')); + await sign(this.dest(this.packagerOptions.name + '.msi')); await fs.promises.rename( this.dest(this.packagerOptions.name + '.msi'), this.dest(this.windows_msi_label), ); + + // sign the nupkg + await sign(this.dest(this.windows_nupkg_full_filename)); }; } @@ -499,6 +498,8 @@ class Target { this.osx_dmg_filename = `${this.id}-${this.version}-${this.platform}-${this.arch}.dmg`; this.osx_zip_label = this.osx_zip_filename = `${this.id}-${this.version}-${this.platform}-${this.arch}.zip`; + this.osx_zip_sign_label = + this.osx_zip_sign_filename = getSignedFilename(this.osx_zip_filename); this.assets = [ { @@ -509,6 +510,10 @@ class Target { { name: this.osx_zip_label, path: this.dest(this.osx_zip_label) + }, + { + name: this.osx_zip_sign_label, + path: this.dest(this.osx_zip_sign_label) } ]; @@ -554,7 +559,6 @@ class Target { }; this.createInstaller = async() => { - const appDirectoryName = `${this.productName}.app`; const appPath = this.appPath; { @@ -572,58 +576,32 @@ class Target { await fs.promises.writeFile(plistFilePath, plist.build(plistContents)); } - if (process.env.MACOS_NOTARY_KEY && - process.env.MACOS_NOTARY_SECRET && - process.env.MACOS_NOTARY_CLIENT_URL && - process.env.MACOS_NOTARY_API_URL) { - debug(`Signing and notarizing "${appPath}"`); - // https://wiki.corp.mongodb.com/display/BUILD/How+to+use+MacOS+notary+service - debug(`Downloading the notary client from ${process.env.MACOS_NOTARY_CLIENT_URL} to ${path.resolve('macnotary')}`); - await download(process.env.MACOS_NOTARY_CLIENT_URL, 'macnotary', { - extract: true, - strip: 1 // remove leading platform + arch directory - }); - await fs.promises.chmod('macnotary/macnotary', 0o755); // ensure +x is set + const isNotarizationPossible = process.env.MACOS_NOTARY_KEY && + process.env.MACOS_NOTARY_SECRET && + process.env.MACOS_NOTARY_CLIENT_URL && + process.env.MACOS_NOTARY_API_URL; - debug(`running "zip -y -r '${appDirectoryName}.zip' '${appDirectoryName}'"`); - await execFile('zip', ['-y', '-r', `${appDirectoryName}.zip`, appDirectoryName], { - cwd: path.dirname(appPath) - }); - debug(`sending file to notary service (bundle id = ${this.bundleId})`); - const macnotaryResult = await execFile(path.resolve('macnotary/macnotary'), [ - '-t', 'app', - '-m', 'notarizeAndSign', - '-u', process.env.MACOS_NOTARY_API_URL, - '-b', this.bundleId, - '-f', `${appDirectoryName}.zip`, - '-o', `${appDirectoryName}.signed.zip`, - '--verify', - ...(this.macosEntitlements ? ['-e', this.macosEntitlements] : []) - ], { - cwd: path.dirname(appPath), - encoding: 'utf8' - }); - debug('macnotary result:', macnotaryResult.stdout, macnotaryResult.stderr); - debug('ls', (await execFile('ls', ['-lh'], { cwd: path.dirname(appPath), encoding: 'utf8' })).stdout); - debug('removing existing directory contents'); - await execFile('rm', ['-r', appDirectoryName], { - cwd: path.dirname(appPath) - }); - debug(`unzipping with "unzip -u '${appDirectoryName}.signed.zip'"`); - await execFile('unzip', ['-u', `${appDirectoryName}.signed.zip`], { - cwd: path.dirname(appPath), - encoding: 'utf8' - }); - debug('ls', (await execFile('ls', ['-lh'], { cwd: path.dirname(appPath), encoding: 'utf8' })).stdout); - debug(`removing '${appDirectoryName}.signed.zip' and '${appDirectoryName}.zip'`); - await fs.promises.unlink(`${appPath}.signed.zip`); - await fs.promises.unlink(`${appPath}.zip`); + const notarizationOptions = { + bundleId: this.bundleId, + macosEntitlements: this.macosEntitlements + }; + + if (isNotarizationPossible) { + await notarize(appPath, notarizationOptions); } else { console.error(chalk.yellow.bold( - 'WARNING: macos notary service credentials not set -- skipping signing and notarization!')); + 'WARNING: macos notary service credentials not set -- skipping signing and notarization of .app!')); } + const createDMG = require('electron-installer-dmg'); await createDMG(this.installerOptions); + + if (isNotarizationPossible) { + await notarize(this.installerOptions.dmgPath, notarizationOptions); + } else { + console.error(chalk.yellow.bold( + 'WARNING: macos notary service credentials not set -- skipping signing and notarization of .dmg!')); + } }; } @@ -646,6 +624,9 @@ class Target { const debianArch = this.arch === 'x64' ? 'amd64' : 'i386'; const debianSection = _.get(platformSettings, 'deb_section'); this.linux_deb_filename = `${this.slug}_${debianVersion}_${debianArch}.deb`; + this.linux_tar_filename = `${this.slug}-${this.version}-${this.platform}-${this.arch}.tar.gz`; + this.linux_deb_sign_filename = getSignedFilename(this.linux_deb_filename); + this.linux_tar_sign_filename = getSignedFilename(this.linux_tar_filename); const rhelVersion = [ this.semver.major, @@ -656,27 +637,45 @@ class Target { const rhelArch = this.arch === 'x64' ? 'x86_64' : 'i386'; const rhelCategories = _.get(platformSettings, 'rpm_categories'); this.linux_rpm_filename = `${this.slug}-${this.version}.${rhelArch}.rpm`; - this.linux_tar_filename = `${this.slug}-${this.version}-${this.platform}-${this.arch}.tar.gz`; this.rhel_tar_filename = `${this.slug}-${this.version}-rhel-${this.arch}.tar.gz`; + this.linux_rpm_sign_filename = getSignedFilename(this.linux_rpm_filename); + this.rhel_tar_sign_filename = getSignedFilename(this.rhel_tar_filename); + this.assets = [ { name: this.linux_deb_filename, path: this.dest(this.linux_deb_filename), downloadCenter: true }, + { + name: this.linux_deb_sign_filename, + path: this.dest(this.linux_deb_sign_filename), + }, { name: this.linux_rpm_filename, path: this.dest(this.linux_rpm_filename), downloadCenter: true }, + { + name: this.linux_rpm_sign_filename, + path: this.dest(this.linux_rpm_sign_filename), + }, { name: this.linux_tar_filename, path: this.dest(this.linux_tar_filename) }, + { + name: this.linux_tar_sign_filename, + path: this.dest(this.linux_tar_sign_filename) + }, { name: this.rhel_tar_filename, path: this.dest(this.rhel_tar_filename) + }, + { + name: this.rhel_tar_sign_filename, + path: this.dest(this.rhel_tar_sign_filename) } ]; @@ -731,7 +730,7 @@ class Target { const createRpm = require('electron-installer-redhat'); debug('creating rpm...', this.installerOptions.rpm); return createRpm(this.installerOptions.rpm).then(() => { - return signLinuxPackage(this.dest(this.linux_rpm_filename)); + return sign(this.dest(this.linux_rpm_filename)); }); }); }; @@ -741,12 +740,7 @@ class Target { const createDeb = require('electron-installer-debian'); debug('creating deb...', this.installerOptions.deb); return createDeb(this.installerOptions.deb).then(() => { - // We do not sign debs because it doesn't work, see - // this thread for context: - // https://mongodb.slack.com/archives/G2L10JAV7/p1623169331107600 - // - // return sign(this.dest(this.linux_deb_filename)); - return this.dest(this.linux_deb_filename); + return sign(this.dest(this.linux_deb_filename)); }); }); }; @@ -758,7 +752,9 @@ class Target { this.dest(this.app_archive_name) ); - return tarGz(this.appPath, this.dest(this.app_archive_name)); + return tarGz(this.appPath, this.dest(this.app_archive_name)).then(() => { + return sign(this.dest(this.app_archive_name)); + }); }; this.createInstaller = () => { diff --git a/packages/hadron-build/package.json b/packages/hadron-build/package.json index bb78e991789..841203d5390 100644 --- a/packages/hadron-build/package.json +++ b/packages/hadron-build/package.json @@ -19,10 +19,11 @@ "url": "https://github.com/mongodb-js/compass.git" }, "dependencies": { + "@electron/rebuild": "^3.5.0", "@mongodb-js/devtools-github-repo": "^1.4.1", "@mongodb-js/dl-center": "^1.0.1", "@mongodb-js/electron-wix-msi": "^3.0.0", - "@mongodb-js/mongodb-notary-service-client": "^2.0.4", + "@mongodb-js/signing-utils": "^0.2.3", "@npmcli/arborist": "^6.2.0", "@octokit/rest": "^18.6.2", "asar": "^3.0.3", @@ -33,10 +34,9 @@ "debug": "^4.2.0", "del": "^2.0.2", "download": "^8.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "electron-packager": "^15.5.1", "electron-packager-plugin-non-proprietary-codecs-ffmpeg": "^1.0.2", - "@electron/rebuild": "^3.4.1", "flatnest": "^1.0.0", "fs-extra": "^8.1.0", "getos": "^3.1.4", @@ -49,7 +49,7 @@ "lodash": "^4.17.21", "moment": "^2.29.4", "mongodb-js-cli": "^0.0.3", - "node-abi": "^3.52.0", + "node-abi": "^3.54.0", "normalize-package-data": "^2.3.5", "parse-github-repo-url": "^1.3.0", "semver": "^5.1.0", diff --git a/packages/hadron-build/signtool/go.mod b/packages/hadron-build/signtool/go.mod index bf7e2641850..a8530e7b236 100644 --- a/packages/hadron-build/signtool/go.mod +++ b/packages/hadron-build/signtool/go.mod @@ -1,5 +1,3 @@ module mongodb.com/signtool go 1.15 - -require golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 diff --git a/packages/hadron-build/signtool/signtool.exe b/packages/hadron-build/signtool/signtool.exe index efb467efac9..70bfe4ce524 100755 Binary files a/packages/hadron-build/signtool/signtool.exe and b/packages/hadron-build/signtool/signtool.exe differ diff --git a/packages/hadron-build/signtool/signtool.go b/packages/hadron-build/signtool/signtool.go index 223d16beeef..0a0297d07cd 100644 --- a/packages/hadron-build/signtool/signtool.go +++ b/packages/hadron-build/signtool/signtool.go @@ -4,180 +4,33 @@ // binaries: https://msdn.microsoft.com/en-us/library/windows/desktop/aa387764(v=vs.85).aspx // // It only uses the last argument on the command-line, which is the path to the file to sign. -// If signing is successful, it will replace the file with the newly-signed file from the -// notary service. -// -// Parameters for the notary service are passed in as environment variables. -// NOTARY_SIGNING_KEY - The name of the key to use for signing -// NOTARY_SIGNING_COMMENT - The comment to enter into the notary log for this signing operation -// NOTARY_AUTH_TOKEN - The password for using the selected signing key -// NOTARY_URL - The URL of the notary service -// - +// If signing is successful, it will replace the file with the newly-signed file from garasign. package main import ( - "bytes" - "crypto/hmac" - "crypto/sha1" - "encoding/json" "fmt" - "io" - "io/ioutil" "log" - "mime/multipart" - "net/http" "os" - "path/filepath" + "os/exec" "strings" - "time" - - "golang.org/x/crypto/pbkdf2" ) -func generateAuthToken(authTokenPassword string) string { - // In one of my more foolish moments, the salt is just the password in reverse. - // We should fix this, but for compatibility this is here for now. - var salt []byte = []byte(authTokenPassword) - for i := len(salt)/2 - 1; i >= 0; i-- { - opp := len(salt) - 1 - i - salt[i], salt[opp] = salt[opp], salt[i] - } - - authKey := pbkdf2.Key([]byte(authTokenPassword), salt, 1000, 16, sha1.New) - dateStr := time.Now().String() - signedData := hmac.New(sha1.New, authKey) - signedData.Write([]byte(dateStr)) - rawSignature := signedData.Sum(nil) - return fmt.Sprintf("%x%s", rawSignature, dateStr) -} - -func submitFileForSigning(fileToSignPath string) string { - localFile, err := os.Open(fileToSignPath) - if err != nil { - log.Fatal(err) - } - - body := &bytes.Buffer{} - writer := multipart.NewWriter(body) - fileToSignName := filepath.Base(fileToSignPath) - - // The notary service does not support filenames with spaces, so we - // strip those in the form data - formFileName := strings.ReplaceAll(fileToSignName, " ", "") - - part, err := writer.CreateFormFile("file", formFileName) - if err != nil { - log.Fatal(err) - } - - _, err = io.Copy(part, localFile) - localFile.Close() - signingKey := os.Getenv("NOTARY_SIGNING_KEY") - writer.WriteField("key", signingKey) - writer.WriteField("comment", os.Getenv("NOTARY_SIGNING_COMMENT")) - writer.WriteField("auth_token", generateAuthToken(os.Getenv("NOTARY_AUTH_TOKEN"))) - err = writer.Close() - if err != nil { - log.Fatal(err) - } - - signingURL := fmt.Sprintf("%s/api/sign", os.Getenv("NOTARY_URL")) - req, err := http.NewRequest("POST", signingURL, body) - if err != nil { - log.Fatal(err) - } - req.Header.Add("Content-Type", writer.FormDataContentType()) - - log.Printf("Sending sign request for '%s' to '%s' with key '%s'", fileToSignName, signingURL, signingKey) - - client := &http.Client{} - resp, err := client.Do(req) - if err != nil { - log.Fatal(err) - } - - respBody, err := ioutil.ReadAll(resp.Body) - resp.Body.Close() - if err != nil { - log.Fatal(err) - } - - if resp.StatusCode >= 400 { - log.Fatalf("Signing failed: %s - %s", resp.Status, string(respBody)) - } - - var signingResponse map[string]interface{} - err = json.Unmarshal(respBody, &signingResponse) - if err != nil { - log.Fatal(err) - } - - if _, ok := signingResponse["permalink"]; !ok { - log.Fatal("Signing service didn't return a permalink") - } - - log.Printf("Signed artifact ready at %s", signingResponse["permalink"].(string)) - - return signingResponse["permalink"].(string) -} - -func downloadArtifact(permaLink, localPath string) { - tempFile, err := ioutil.TempFile("", "signtool-download-") - if err != nil { - log.Fatal(err) - } - - defer tempFile.Close() - defer os.Remove(tempFile.Name()) - - if !strings.HasPrefix(permaLink, "/") { - permaLink = "/" + permaLink - } - - downloadURL := fmt.Sprintf("%s%s", os.Getenv("NOTARY_URL"), permaLink) - - log.Printf("Downloading signed file from '%s' to '%s'", downloadURL, tempFile.Name()) - - resp, err := http.Get(downloadURL) - if err != nil { - log.Fatal(err) - } - - if resp.StatusCode >= 400 { - log.Fatalf("Download failed: %s", resp.Status) - } - - defer resp.Body.Close() - _, err = io.Copy(tempFile, resp.Body) - if err != nil { - log.Fatal(err) - } - - localFile, err := os.Create(localPath) - if err != nil { - log.Fatal(err) - } - defer localFile.Close() - - log.Printf("Copying signed file back from '%s' to '%s'", tempFile.Name(), localFile.Name()) - - tempFile.Seek(0, 0) - io.Copy(localFile, tempFile) - - log.Printf("Done.") -} - func main() { if len(os.Args) == 1 { log.Fatal("Must have at least one argument (the file to sign) on the command line") } + fileToSignPath := os.Args[len(os.Args)-1] + + if _, err := os.Stat(fileToSignPath); os.IsNotExist(err) { + log.Fatalf("File %s does not exist", fileToSignPath) + } + allowedExtensions := []string{ - "NOTARY_SIGNING_KEY", - "NOTARY_SIGNING_COMMENT", - "NOTARY_AUTH_TOKEN", - "NOTARY_URL", + "SIGNING_SERVER_HOSTNAME", + "SIGNING_SERVER_PRIVATE_KEY", + "SIGNING_SERVER_USERNAME", + "SIGNING_SERVER_PORT", } for _, k := range allowedExtensions { if os.Getenv(k) == "" { @@ -185,17 +38,31 @@ func main() { } } - // The last argument is always the path of the file to sign - fileToSignPath := os.Args[len(os.Args)-1] + // Normalize windows path + fileToSignPath = fmt.Sprintf(strings.Replace(fileToSignPath, "\\", "\\\\", -1)) + + script := fmt.Sprintf(` + require("@mongodb-js/signing-utils").sign("%s", { + host: process.env.SIGNING_SERVER_HOSTNAME, + username: process.env.SIGNING_SERVER_USERNAME, + port: process.env.SIGNING_SERVER_PORT, + privateKey: process.env.SIGNING_SERVER_PRIVATE_KEY, + client: "remote", + signingMethod: "jsign", + }); + `, fileToSignPath) - if !strings.HasSuffix(fileToSignPath, ".exe") && - !strings.HasSuffix(fileToSignPath, ".msi") && - !strings.HasSuffix(fileToSignPath, ".rpm") { + cmd := exec.Command("node", "-e", script) + fmt.Println("Running command:", cmd.String()) - fmt.Printf("Skipping %s signature, extension is not supported", fileToSignPath) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + err := cmd.Run() + if err != nil { + fmt.Println("Error signing the file") return } - permaLink := submitFileForSigning(fileToSignPath) - downloadArtifact(permaLink, fileToSignPath) + fmt.Println("File signed successfully.") } diff --git a/packages/hadron-build/test/signtool.test.js b/packages/hadron-build/test/signtool.test.js new file mode 100644 index 00000000000..8b69dd91e89 --- /dev/null +++ b/packages/hadron-build/test/signtool.test.js @@ -0,0 +1,108 @@ +const chai = require('chai'); +const { spy } = require('sinon'); +const { sign, getSignedFilename } = require('../lib/signtool'); +const expect = chai.expect; + +describe('hadron-build::signtool', () => { + const CURRENT_SIGING_VARS = { + GARASIGN_USERNAME: process.env.GARASIGN_USERNAME, + GARASIGN_PASSWORD: process.env.GARASIGN_PASSWORD, + ARTIFACTORY_USERNAME: process.env.ARTIFACTORY_USERNAME, + ARTIFACTORY_PASSWORD: process.env.ARTIFACTORY_PASSWORD, + }; + function setEnvVars(obj) { + Object.keys(obj).forEach((key) => { + if (obj[key]) { + process.env[key] = obj[key]; + } else { + delete process.env[key]; + } + }); + } + + describe('sign', () => { + let garasign; + beforeEach(function() { + garasign = spy(); + }); + context('when credentials are not set', function() { + beforeEach(function() { + setEnvVars(Object.fromEntries(Object.keys(CURRENT_SIGING_VARS).map((key) => [key, false]))); + }); + afterEach(function() { + setEnvVars(CURRENT_SIGING_VARS); + }); + it('does not sign when credentials are not set', async() => { + await sign('test/fixtures/foo', garasign); + expect(garasign.called).to.be.false; + }); + }); + + context('when credentials are set', function() { + beforeEach(function() { + // Set all the signing vars to a defined value + setEnvVars(Object.fromEntries(Object.keys(CURRENT_SIGING_VARS).map((key) => [key, key]))); + }); + afterEach(function() { + setEnvVars(CURRENT_SIGING_VARS); + }); + + it('signs windows exe remotely using jsign', async() => { + const initialPlatform = process.env.EVERGREEN_BUILD_VARIANT; + process.env.EVERGREEN_BUILD_VARIANT = 'windows'; + await sign('test/fixtures/foo.exe', garasign); + + expect(garasign.calledOnce).to.be.true; + expect(garasign.firstCall.args).to.deep.equal(['test/fixtures/foo.exe', { + client: 'remote', + signingMethod: 'jsign', + // These are the signing server creds + host: undefined, + port: undefined, + privateKey: undefined, + username: undefined, + }]); + setEnvVars({EVERGREEN_BUILD_VARIANT: initialPlatform}); + }); + + it('signs windows msi remotely using jsign', async() => { + process.env.EVERGREEN_BUILD_VARIANT = 'windows'; + await sign('test/fixtures/foo.msi', garasign); + + expect(garasign.calledOnce).to.be.true; + expect(garasign.firstCall.args).to.deep.equal(['test/fixtures/foo.msi', { + client: 'remote', + signingMethod: 'jsign', + // These are the signing server creds + host: undefined, + port: undefined, + privateKey: undefined, + username: undefined, + }]); + }); + + it('signs everything remotely using gpg', async() => { + await sign('test/fixtures/foo', garasign); + + expect(garasign.calledOnce).to.be.true; + expect(garasign.firstCall.args).to.deep.equal(['test/fixtures/foo', { + client: 'remote', + signingMethod: 'gpg', + // These are the signing server creds + host: undefined, + port: undefined, + privateKey: undefined, + username: undefined, + }]); + }); + }); + }); + + describe('getSignedFilename', function() { + it('adds .sig to the file name', function() { + ['.zip', '.gz', '.deb', '.rpm'].map((ext) => { + expect(getSignedFilename(`foo${ext}`)).to.equal(`foo${ext}.sig`); + }); + }); + }); +}); diff --git a/packages/hadron-ipc/package.json b/packages/hadron-ipc/package.json index 24ea830d0e8..e955fb1ae20 100644 --- a/packages/hadron-ipc/package.json +++ b/packages/hadron-ipc/package.json @@ -69,7 +69,7 @@ }, "dependencies": { "debug": "^4.3.4", - "electron": "^28.1.0", + "electron": "^28.1.4", "is-electron-renderer": "^2.0.1" } } diff --git a/packages/notary-service-client/.eslintrc b/packages/notary-service-client/.eslintrc deleted file mode 100644 index 073b9746d8c..00000000000 --- a/packages/notary-service-client/.eslintrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": ["mongodb-js/node"], - "env": { - "es6": true - } -} diff --git a/packages/notary-service-client/.gitignore b/packages/notary-service-client/.gitignore deleted file mode 100644 index af359c460f0..00000000000 --- a/packages/notary-service-client/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.DS_Store -node_modules/ -npm-debug.log -.env diff --git a/packages/notary-service-client/.npmignore b/packages/notary-service-client/.npmignore deleted file mode 100644 index 92052b337a1..00000000000 --- a/packages/notary-service-client/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.jshintrc -.jsfmtrc -.travis.yml -test/ diff --git a/packages/notary-service-client/README.md b/packages/notary-service-client/README.md deleted file mode 100644 index 499381c1de8..00000000000 --- a/packages/notary-service-client/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# @mongodb-js/mongodb-notary-service-client [![npm][npm_img]][npm_url] - -> A client for our notary-service (an API for codesigning). - -## Example - -### API - - -```javascript -process.env.NOTARY_URL="${url}"; -process.env.NOTARY_AUTH_TOKEN="${token}"; -process.env.NOTARY_SIGNING_KEY="${key_name}"; - -const sign = require('@mongodb-js/mongodb-notary-service-client'); -sign('my-app.rpm').then((signed) => { - if (signed) console.log('my-app.rpm has been signed and rewritten in-place'); -}); -``` - -[npm_img]: https://img.shields.io/npm/v/@mongodb-js/mongodb-notary-service-client.svg -[npm_url]: https://npmjs.org/package/@mongodb-js/mongodb-notary-service-client diff --git a/packages/notary-service-client/index.js b/packages/notary-service-client/index.js deleted file mode 100644 index bb0a047c4f6..00000000000 --- a/packages/notary-service-client/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./lib'); diff --git a/packages/notary-service-client/lib/index.js b/packages/notary-service-client/lib/index.js deleted file mode 100644 index 79d52983ec9..00000000000 --- a/packages/notary-service-client/lib/index.js +++ /dev/null @@ -1,223 +0,0 @@ -/** - * A node.js client for the [notary-service](https://github.com/10gen/notary-service). - * - * Parameters for the notary service are passed in as environment variables: - * - * - `NOTARY_SIGNING_KEY` The name of the key to use for signing - * - `NOTARY_SIGNING_COMMENT` The comment to enter into the notary log for this signing operation - * - `NOTARY_AUTH_TOKEN` The password for using the selected signing key - * - `NOTARY_URL` The URL of the notary service - */ -const fs = require('fs'); -const crypto = require('crypto'); -const pbkdf2 = require('pbkdf2'); -const _ = require('lodash'); -const request = require('superagent'); -const pkg = require('../package.json'); -const dotenv = require('dotenv'); - -const debug = require('debug')('mongodb-notary-service-client'); - -/** - * @param {String} secret - * @return {String} - * @api private - */ -function getSalt(secret) { - const salt = _.chain(secret) - .split('') - .reverse() - .join('') - .value(); - return salt; -} - -/** - * @return {String} - * @api private - */ -function generateComment() { - const project = process.env.EVERGREEN_PROJECT; - const variant = process.env.EVERGREEN_BUILD_VARIANT; - const revision = process.env.EVERGREEN_REVISION; - const branch = process.env.EVERGREEN_BRANCH_NAME; - - var comment = ''; - if (process.env.EVERGREEN) { - comment += `Evergreen project ${project} ${revision} - ${variant} - ${branch} | `; - } - comment += `via ${pkg.name}@${pkg.version}:${pkg.homepage}`; - return comment; -} - - -/** - * @param {String} secret - * @param {String} [dateStr] - * @return {Promise} - * @api private - */ -function generateAuthToken(secret, dateStr) { - const salt = getSalt(secret); - if (!dateStr) { - dateStr = new Date().toISOString(); - } - - /* eslint no-sync: 0 */ - const derivedKey = pbkdf2.pbkdf2Sync(secret, salt, 1000, 16, 'sha1'); - const signedData = crypto.createHmac('sha1', derivedKey); - signedData.update(dateStr); - return `${signedData.digest('hex')}${dateStr}`; -} - -/** - * Generate API params for `sign`. - * - * @param {String} endpoint - * @param {String} key - * @param {String} token - * @param {String} [comment] - * @return {Object} - * @api private - */ -function getSigningParams(endpoint, key, token, comment) { - return { - url: `${endpoint}/api/sign`, - key: key, - authToken: generateAuthToken(token), - comment: comment || generateComment() - }; -} - -/** - * Sign `src` using the notary-service. - * - * @param {String} src - * @param {Object} params - * @return {Promise} - * @api private - */ -function sign(src, params) { - debug('attempting to sign %s via notary-service', src, params); - return new Promise(function(resolve, reject) { - return request.post(params.url) - .field('key', params.key) - .field('comment', params.comment) - .field('auth_token', params.authToken) - .attach('file', src) - .end(function(err, res) { - if (err) { - debug('request error:', err); - return reject(err); - } - if (!res.body.permalink) { - debug('signing service did not return a permalink'); - return reject(new Error('Signing service did not return a permalink')); - } - - debug('Success!', res.body); - resolve(res.body); - }); - }); -} - -/** - * Download a file from `url` to `dest`. - * - * @param {String} url - * @param {String} dest - * @return {Promise} - * @api private - */ -function download(url, dest) { - debug('downloading %s to %s...', url, dest); - return new Promise(function(resolve, reject) { - request.get(url).pipe(fs.createWriteStream(dest)) - .on('error', function(err) { - debug('download error:', err); - reject(err); - }) - .on('close', function() { - debug('download completed successfully!'); - resolve(dest); - }); - }); -} - -/** - * @param {Object} [opts] - * @return {Object} - * @api private - */ -function configure(opts) { - opts = opts || {}; - dotenv.load(); - - _.defaults(opts, { - endpoint: process.env.NOTARY_URL, - key: process.env.NOTARY_SIGNING_KEY, - token: process.env.NOTARY_AUTH_TOKEN - }); - - opts.configured = ['endpoint', 'key', 'token'].every((k) => { - if (!opts[k]) { - debug(`Missing ${k}. Skipping.`); - opts.message = `No value for ${k}`; - return false; - } - return true; - }); - - debug('config', opts); - return opts; -} - -/** - * Sign and download `src` in-place. - * - * @param {String} src - * @return {Promise} - * @api public - */ -module.exports = function(src) { - const opts = configure(); - if (!opts.configured) { - return Promise.resolve(false); - } - - const params = getSigningParams(opts.endpoint, opts.key, opts.token); - return sign(src, params).then((res) => { - return download(`${opts.endpoint}/${res.permalink}`, src); - }); -}; - -/** - * Fetch most recent logs for debugging. - * - * @return {Promise} - * @api public - */ -module.exports.logs = function() { - const opts = configure(); - if (!opts.configured) { - return Promise.resolve(false); - } - return new Promise(function(resolve, reject) { - const url = `${opts.endpoint}/api/log`; - debug('Fetching logs from', url); - - request.get(url) - .type('json') - .end(function(err, res) { - if (err) return reject(err); - debug('response', res.body); - resolve(res.body.entries); - }); - }); -}; - -module.exports.getSalt = getSalt; -module.exports.generateAuthToken = generateAuthToken; -module.exports.download = download; -module.exports.sign = sign; -module.exports.configure = configure; diff --git a/packages/notary-service-client/package.json b/packages/notary-service-client/package.json deleted file mode 100644 index 15bea76e94b..00000000000 --- a/packages/notary-service-client/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "@mongodb-js/mongodb-notary-service-client", - "description": "A client for our notary-service: an API for codesigning", - "version": "2.0.4", - "scripts": { - "check": "npm run lint && npm run depcheck", - "test": "mocha", - "test-check-ci": "npm run check && npm test", - "lint": "eslint \"./{src,lib,test,bin}/**/*.{js,jsx,ts,tsx}\" \"./*.js\" --no-error-on-unmatched-pattern", - "depcheck": "depcheck", - "test-ci": "npm run test" - }, - "main": "index.js", - "compass:main": "index.js", - "homepage": "https://github.com/mongodb-js/compass", - "repository": { - "type": "git", - "url": "https://github.com/mongodb-js/compass.git" - }, - "bugs": { - "url": "https://jira.mongodb.org/projects/COMPASS/issues", - "email": "compass@mongodb.com" - }, - "dependencies": { - "debug": "^2.2.0", - "dotenv": "^4.0.0", - "lodash": "^4.17.21", - "pbkdf2": "^3.0.9", - "superagent": "^3.3.1" - }, - "devDependencies": { - "chai": "^3.5.0", - "depcheck": "^1.4.1", - "eslint": "^7.25.0", - "eslint-config-mongodb-js": "^2.2.0", - "mocha": "^10.2.0" - }, - "license": "SSPL" -} diff --git a/packages/notary-service-client/test/index.test.js b/packages/notary-service-client/test/index.test.js deleted file mode 100644 index 0542006c829..00000000000 --- a/packages/notary-service-client/test/index.test.js +++ /dev/null @@ -1,18 +0,0 @@ -const notary = require('../lib'); -const chai = require('chai'); -const expect = chai.expect; - -describe('notary-service', function() { - const secret = 'A-------------Z'; - const now = '2017-01-12T21:18:31.384Z'; - - it('should generate the right salt', function() { - expect(notary.getSalt(secret)).to.equal('Z-------------A'); - }); - - it('should generate the auth token', function() { - const token = notary.generateAuthToken(secret, now); - expect(token).to.be.a('string'); - expect(token).to.equal('039177c6856119edeb56823ec4efb8913d0d03852017-01-12T21:18:31.384Z'); - }); -}); diff --git a/scripts/package.json b/scripts/package.json index 9f36a5260be..b01679b2b42 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -40,7 +40,7 @@ "@mongodb-js/monorepo-tools": "^1.1.1", "@mongodb-js/webpack-config-compass": "^1.3.2", "commander": "^11.0.0", - "electron": "^28.1.0", + "electron": "^28.1.4", "glob": "^10.2.5", "jsdom": "^21.1.0", "make-fetch-happen": "^8.0.14",