diff --git a/package-lock.json b/package-lock.json index e35a131d709..10ea23fc461 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1084,17 +1084,17 @@ "license": "0BSD" }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.709.0.tgz", - "integrity": "sha512-I5a8ilF+jKAz6fmOOuHy2UEcod9ikRGBjACcC6ayxs4z4VqTnWynD6ALKvtUR3lk1Ur6nzAG1tTm/qAYKKmyBg==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.712.0.tgz", + "integrity": "sha512-Xb+6S5QzFhKin9gOIKjvFhvP13AffH5oq0v/e0yQO0JckSLuph9+du/CHcobPqkxJpzyreeDltD7+Yu/l9RmIg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.709.0", - "@aws-sdk/client-sts": "3.709.0", + "@aws-sdk/client-sso-oidc": "3.712.0", + "@aws-sdk/client-sts": "3.712.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/middleware-host-header": "3.709.0", "@aws-sdk/middleware-logger": "3.709.0", "@aws-sdk/middleware-recursion-detection": "3.709.0", @@ -1103,7 +1103,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -1142,9 +1142,9 @@ "license": "0BSD" }, "node_modules/@aws-sdk/client-sso": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.709.0.tgz", - "integrity": "sha512-Qxeo8cN0jNy6Wnbqq4wucffAGJM6sJjofoTgNtPA6cC7sPYx7aYC6OAAAo6NaMRY+WywOKdS9Wgjx2QYRxKx7w==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.712.0.tgz", + "integrity": "sha512-tBo/eW3YpZ9f3Q1qA7aA8uliNFJJX0OP7R2IUJ8t6rqVTk15wWCEPNmXzUZKgruDnKUfCaF4+r9q/Yy4fBc9PA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -1158,7 +1158,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -1191,15 +1191,15 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.709.0.tgz", - "integrity": "sha512-1w6egz17QQy661lNCRmZZlqIANEbD6g2VFAQIJbVwSiu7brg+GUns+mT1eLLLHAMQc1sL0Ds8/ybSK2SrgGgIA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.712.0.tgz", + "integrity": "sha512-xNFrG9syrG6pxUP7Ld/nu3afQ9+rbJM9qrE+wDNz4VnNZ3vLiJty4fH85zBFhOQ5OF2DIJTWsFzXGi2FYjsCMA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/middleware-host-header": "3.709.0", "@aws-sdk/middleware-logger": "3.709.0", "@aws-sdk/middleware-recursion-detection": "3.709.0", @@ -1208,7 +1208,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -1240,7 +1240,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.709.0" + "@aws-sdk/client-sts": "^3.712.0" } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { @@ -1256,16 +1256,16 @@ "license": "0BSD" }, "node_modules/@aws-sdk/client-sts": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.709.0.tgz", - "integrity": "sha512-cBAvlPg6yslXNL385UUGFPw+XY+lA9BzioNdIFkMo3fEUlTShogTtiWz4LsyLHoN6LhKojssP9DSmmWKWjCZIw==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.712.0.tgz", + "integrity": "sha512-gIO6BD+hkEe3GKQhbiFP0zcNQv0EkP1Cl9SOstxS+X9CeudEgVX/xEPUjyoFVkfkntPBJ1g0I1u5xOzzRExl4g==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.709.0", + "@aws-sdk/client-sso-oidc": "3.712.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/middleware-host-header": "3.709.0", "@aws-sdk/middleware-logger": "3.709.0", "@aws-sdk/middleware-recursion-detection": "3.709.0", @@ -1274,7 +1274,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -1341,12 +1341,12 @@ "license": "0BSD" }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.709.0.tgz", - "integrity": "sha512-WLzDcYo7pob8fPeeOhgVqYuV21uUKWb1RobITQzZhv0ZSToIl1KjuyRQsznC23Sot9CFl+0V2QLFFNwRiIuH7w==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.712.0.tgz", + "integrity": "sha512-sUUaw4PK9LQNGGytVpz659w4rWwdhfsZ4AMns0smnWfNVmmDAOtDMUTzNUxYmXhWt4+iS4cXfQqmUAdKqIhlsw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.709.0", + "@aws-sdk/client-cognito-identity": "3.712.0", "@aws-sdk/types": "3.709.0", "@smithy/property-provider": "^3.1.11", "@smithy/types": "^3.7.2", @@ -1412,16 +1412,16 @@ "license": "0BSD" }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.709.0.tgz", - "integrity": "sha512-qCF8IIGcPoUp+Ib3ANhbF5gElxFd+kIrtv2/1tKdvhudMANstQbMiWV0LTH47ZZR6c3as4iSrm09NZnpEoD/pA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.712.0.tgz", + "integrity": "sha512-sTsdQ/Fm/suqMdpjhMuss/5uKL18vcuWnNTQVrG9iGNRqZLbq65MXquwbUpgzfoUmIcH+4CrY6H2ebpTIECIag==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.709.0", "@aws-sdk/credential-provider-env": "3.709.0", "@aws-sdk/credential-provider-http": "3.709.0", "@aws-sdk/credential-provider-process": "3.709.0", - "@aws-sdk/credential-provider-sso": "3.709.0", + "@aws-sdk/credential-provider-sso": "3.712.0", "@aws-sdk/credential-provider-web-identity": "3.709.0", "@aws-sdk/types": "3.709.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -1434,7 +1434,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.709.0" + "@aws-sdk/client-sts": "^3.712.0" } }, "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { @@ -1444,16 +1444,16 @@ "license": "0BSD" }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.709.0.tgz", - "integrity": "sha512-4HRX9KYWPSjO5O/Vg03YAsebKpvTjTvpK1n7zHYBmlLMBLxUrVsL1nNKKC5p2/7OW3RL8XR1ki3QkoV7kGRxUQ==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.712.0.tgz", + "integrity": "sha512-gXrHymW3rMRYORkPVQwL8Gi5Lu92F16SoZR543x03qCi7rm00oL9tRD85ACxkhprS1Wh8lUIUMNoeiwnYWTNuQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.709.0", "@aws-sdk/credential-provider-http": "3.709.0", - "@aws-sdk/credential-provider-ini": "3.709.0", + "@aws-sdk/credential-provider-ini": "3.712.0", "@aws-sdk/credential-provider-process": "3.709.0", - "@aws-sdk/credential-provider-sso": "3.709.0", + "@aws-sdk/credential-provider-sso": "3.712.0", "@aws-sdk/credential-provider-web-identity": "3.709.0", "@aws-sdk/types": "3.709.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -1496,12 +1496,12 @@ "license": "0BSD" }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.709.0.tgz", - "integrity": "sha512-rYdTDOxazS2GdGScelsRK5CAkktRLCCdRjlwXaxrcW57j749hEqxcF5uTv9RD6WBwInfedcSywErNZB+hylQlg==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.712.0.tgz", + "integrity": "sha512-8lCMxY7Lb9VK9qdlNXRJXE3W1UDVURnJZ3a4XWYNY6yr1TfQaN40mMyXX1oNlXXJtMV0szRvjM8dZj37E/ESAw==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.709.0", + "@aws-sdk/client-sso": "3.712.0", "@aws-sdk/core": "3.709.0", "@aws-sdk/token-providers": "3.709.0", "@aws-sdk/types": "3.709.0", @@ -1546,22 +1546,22 @@ "license": "0BSD" }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.709.0.tgz", - "integrity": "sha512-v1OfAWhYhAz7XPtjWlQ3jDLZHCpuNrLP2bRWTEjRty8yZLN92ANehincULUGvUNszFO8rfpq2g4dmtk8XmqTzA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.712.0.tgz", + "integrity": "sha512-7U/pIx1T2IjysoskFRglZAThoxewKw6HoZS/SJT3hLusa/uuYuno1Y1nmCr0ojsl9NB7Jm4PIK3yJUZDDgy+Ng==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.709.0", - "@aws-sdk/client-sso": "3.709.0", - "@aws-sdk/client-sts": "3.709.0", + "@aws-sdk/client-cognito-identity": "3.712.0", + "@aws-sdk/client-sso": "3.712.0", + "@aws-sdk/client-sts": "3.712.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-cognito-identity": "3.709.0", + "@aws-sdk/credential-provider-cognito-identity": "3.712.0", "@aws-sdk/credential-provider-env": "3.709.0", "@aws-sdk/credential-provider-http": "3.709.0", - "@aws-sdk/credential-provider-ini": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-ini": "3.712.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/credential-provider-process": "3.709.0", - "@aws-sdk/credential-provider-sso": "3.709.0", + "@aws-sdk/credential-provider-sso": "3.712.0", "@aws-sdk/credential-provider-web-identity": "3.709.0", "@aws-sdk/types": "3.709.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -1790,9 +1790,9 @@ "license": "0BSD" }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.709.0.tgz", - "integrity": "sha512-trBfzSCVWy7ILgqhEXgiuM7hfRCw4F4a8IK90tjk9YL0jgoJ6eJuOp7+DfCtHJaygoBxD3cdMFkOu+lluFmGBA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.712.0.tgz", + "integrity": "sha512-26X21bZ4FWsVpqs33uOXiB60TOWQdVlr7T7XONDFL/XN7GEpUJkWuuIB4PTok6VOmh1viYcdxZQqekXPuzXexQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-user-agent": "3.709.0", @@ -8567,13 +8567,13 @@ "link": true }, "node_modules/@mongosh/arg-parser": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.5.tgz", - "integrity": "sha512-4IvPU+dqy8x4eSImyR4qM6IRwwpIrZ5FB7uZUY3bW5sI57OEmckN2T/zYacv/bVqh3ubo2bShufjWKkOcLfc0g==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.6.tgz", + "integrity": "sha512-JmJ3pBfed2BEFBWBqvgRLtRmiDMycO6wwI3atMGp19P4RXRa0dLj9gY6qcT7f95Ah1wFXeQUC0LdClZfBivVqg==", "license": "Apache-2.0", "dependencies": { - "@mongosh/errors": "2.3.5", - "@mongosh/i18n": "2.3.5", + "@mongosh/errors": "2.3.6", + "@mongosh/i18n": "2.3.6", "mongodb-connection-string-url": "^3.0.1" }, "engines": { @@ -8581,9 +8581,9 @@ } }, "node_modules/@mongosh/async-rewriter2": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.5.tgz", - "integrity": "sha512-duup1Uk/lTSXx1N+OH72RGpZOED5DVBMQYYYgIaUzMazr+R4jWSZDbKkxpqVLf6xWoJDs1qQrPpbOhEHZqn7lQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.6.tgz", + "integrity": "sha512-Ne6LyIlRkBipKyrd+2+apdtLtyjg4bbCpPVbA1MBurPizVebbbBk/EASEiEOfsoCmQKMqITDYAAhtZJNMxJpYg==", "license": "Apache-2.0", "dependencies": { "@babel/core": "^7.22.8", @@ -8600,13 +8600,13 @@ } }, "node_modules/@mongosh/autocomplete": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.5.tgz", - "integrity": "sha512-wCzi/wyc2S+VYYWdqARMcRtcB46fQRqDMpDYUIL7KGkkZHEPDciwlQzQB0G0AKUtWxlbcHpWujsFN09dsD0KzA==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.6.tgz", + "integrity": "sha512-bB0nNoX/auX1+hdXGNcSD60XPq3oegEOzCUY/wjlOw0dFm9iSCYkxuiSAqCN/FnYm37Kpk9bVkGvY/l+d6fhJA==", "license": "Apache-2.0", "dependencies": { "@mongodb-js/mongodb-constants": "^0.10.1", - "@mongosh/shell-api": "2.3.5", + "@mongosh/shell-api": "2.3.6", "semver": "^7.5.4" }, "engines": { @@ -8614,17 +8614,17 @@ } }, "node_modules/@mongosh/browser-repl": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.5.tgz", - "integrity": "sha512-OYj8GUNC7BuyfGHrzPVUvbXEzMBmwfz2oyS4e9EY0YeMCYTzKbytvTpvZFzgMSQIKNtYzb4II8+pewCEWmXvag==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.6.tgz", + "integrity": "sha512-/3w1QH3/9B2qpi2cPCmqjDWMOMjTQhUOTIVbZzAyxDlYNXcVaoRo2hBu1shRcqHdC4iLSNrP/HvN6zWO62i/JQ==", "license": "Apache-2.0", "dependencies": { - "@mongosh/browser-runtime-core": "2.3.5", - "@mongosh/errors": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/i18n": "2.3.5", - "@mongosh/node-runtime-worker-thread": "2.3.5", - "@mongosh/service-provider-core": "2.3.5", + "@mongosh/browser-runtime-core": "2.3.6", + "@mongosh/errors": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/i18n": "2.3.6", + "@mongosh/node-runtime-worker-thread": "2.3.6", + "@mongosh/service-provider-core": "2.3.6", "numeral": "^2.0.6", "text-table": "^0.2.0" }, @@ -8649,33 +8649,33 @@ } }, "node_modules/@mongosh/browser-runtime-core": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.5.tgz", - "integrity": "sha512-eQeeA1C5O647AmZ03CyuJUBTwO1SFhLcxM7X9MNeDXmJAwRGqy+ixJhXn7OFH5jQIz2YlrbH2hotxPSE8WfEyQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.6.tgz", + "integrity": "sha512-Y89kL4EQkRIZmJYX2ukmtle7coTzsfCK1a6b+fGlU9V38SRemkuF46HB0bju/eVBkXjJYjzVWrrYTFtBT2lW7Q==", "license": "Apache-2.0", "dependencies": { - "@mongosh/autocomplete": "2.3.5", - "@mongosh/service-provider-core": "2.3.5", - "@mongosh/shell-api": "2.3.5", - "@mongosh/shell-evaluator": "2.3.5" + "@mongosh/autocomplete": "2.3.6", + "@mongosh/service-provider-core": "2.3.6", + "@mongosh/shell-api": "2.3.6", + "@mongosh/shell-evaluator": "2.3.6" }, "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/errors": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.5.tgz", - "integrity": "sha512-f6sSK+pLWJd3wKk7v81KqDDe4+q+RE2xSqxGoFvVM7I/8nEZAVsowC23/M4IhI+B5iF+5LFEKMP6NJxikvYAxg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.6.tgz", + "integrity": "sha512-LF2n9WvwzJPRgaBZM9g3eMTX5TgX/PNtV6rYvpPLchzCBLbBObx2/w4/GZEVO/jy5VKLYwA/Ph8lfi+intdL7Q==", "license": "Apache-2.0", "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/history": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.5.tgz", - "integrity": "sha512-BqTapuqx/FBQXyUrbMAc2APLuVu0gkDSmXEa17yYTMcRb3adG/HawZ6HWGZDrVoOVNG7HLoXGa1S1nd98vMyBw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.6.tgz", + "integrity": "sha512-43z4JHIPgiE1vYs9wyYmXJKyMCbpHFhcBoecJZJNrK6n3N3kk3VRnnYXItSi2rEFhGGQ8dxKWQ4Bq1475i/D6Q==", "license": "Apache-2.0", "dependencies": { "mongodb-connection-string-url": "^3.0.1", @@ -8686,27 +8686,27 @@ } }, "node_modules/@mongosh/i18n": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.5.tgz", - "integrity": "sha512-aodEz62l5zCd+TfpBTJSv0eOD1IBNkhXQpD+sYEWMCgdcKdnUufdgUeotoeLS1+0CTUIu33iW4mVoodf863EsQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.6.tgz", + "integrity": "sha512-7M0c++OQbrOm5L5nAgQnRzQ3PvfFmFEzWaJsy+Vpka7CtLVh3l+H15UvImUG+0/2tZwtcQr1pXLWiKO24fUW7A==", "license": "Apache-2.0", "dependencies": { - "@mongosh/errors": "2.3.5" + "@mongosh/errors": "2.3.6" }, "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/logging": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.5.tgz", - "integrity": "sha512-aR0r+foJ6cSk0WCyNg9uFO696LhCzmXQzTl2RTmQJxYGwmrsXBZmqe6MAeFQy85iL1uxKmP3B8yTXc7Z3GdZ5A==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.6.tgz", + "integrity": "sha512-9pubWE6hu7wJfbQHO36lhshduQLagtFyjtWXECIPb+y8fhuc8jOeZ405D/T3F1UrKlQ+bTg+i+Ry0GlgA4itOw==", "license": "Apache-2.0", "dependencies": { "@mongodb-js/devtools-connect": "^3.3.4", - "@mongosh/errors": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/types": "2.3.5", + "@mongosh/errors": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/types": "2.3.6", "mongodb-log-writer": "^1.4.2", "mongodb-redact": "^1.1.2" }, @@ -8715,9 +8715,9 @@ } }, "node_modules/@mongosh/node-runtime-worker-thread": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.5.tgz", - "integrity": "sha512-nouWJhGaANiRBvzJTHqHfwwd21rlbrKIfL/P7SUX7Jkh5i4nL7al2JJLerbSsa2ZB5yciGgrW9t+d+zEc+cmgg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.6.tgz", + "integrity": "sha512-ouGCfthBHKIALa0pDZB8A6A4ajeXWTQr+HSzuiN9zjcztwksYke2SlF0dcOly5EZ3inDP6+EY6egIqxK10qV6w==", "license": "Apache-2.0", "dependencies": { "interruptor": "^1.0.1", @@ -8729,13 +8729,13 @@ } }, "node_modules/@mongosh/service-provider-core": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.5.tgz", - "integrity": "sha512-utlfhyXRSafJEbRZphagleQFHOVakFocnOGy0VOpbEAOVhr0wAu0Rm59XhiqHSuFG6rAcXZWkYW67dUqKX3QEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.6.tgz", + "integrity": "sha512-YEl3bEVfxq9dtooh6QkVuzyUXIUiQppyXuB4pUFktvfz2/sF5K/CJGej0bIM6Uy4NJ01jepGzc+TLTyaZodJgg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-providers": "^3.525.0", - "@mongosh/errors": "2.3.5", + "@mongosh/errors": "2.3.6", "bson": "^6.10.1", "mongodb": "^6.12.0", "mongodb-build-info": "^1.7.2", @@ -8749,16 +8749,16 @@ } }, "node_modules/@mongosh/shell-api": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.5.tgz", - "integrity": "sha512-hCZvHOGVitmNV9lAWXVF4mtu7TNDo7QxyP5j4TdI6QaYeK+O0GfGQQu3me2OwvW1YDfQfEgVYeLvbVg68p35uQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.6.tgz", + "integrity": "sha512-Ec+lP/ux7zqoVUDi8EUWXGU2gXsnVj7X5iMr7k3dp6sp19nDJ/GIEOePDktyKvkyNkdS+Zj1fmFjHHfSN023sg==", "license": "Apache-2.0", "dependencies": { - "@mongosh/arg-parser": "2.3.5", - "@mongosh/errors": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/i18n": "2.3.5", - "@mongosh/service-provider-core": "2.3.5", + "@mongosh/arg-parser": "2.3.6", + "@mongosh/errors": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/i18n": "2.3.6", + "@mongosh/service-provider-core": "2.3.6", "mongodb-redact": "^1.1.2" }, "engines": { @@ -8766,23 +8766,23 @@ } }, "node_modules/@mongosh/shell-evaluator": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.5.tgz", - "integrity": "sha512-LZWfJQf5d9OPbZ1Zp0rORYTMN6pTHEwlAMBP5KHwJBWdWw863ASxunrbzlzseWOZub+DLVTBCuaTcgf6OTeNDg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.6.tgz", + "integrity": "sha512-khg6mXkHuSO0uowRMiKwIIRQeBc2D0geAF/6yc+h6ovPbM/p6W/VH8uneiQHmotbBRWAm/hWGHBtbrt24gq5rQ==", "license": "Apache-2.0", "dependencies": { - "@mongosh/async-rewriter2": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/shell-api": "2.3.5" + "@mongosh/async-rewriter2": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/shell-api": "2.3.6" }, "engines": { "node": ">=14.15.1" } }, "node_modules/@mongosh/types": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.5.tgz", - "integrity": "sha512-Iu0KjYuz8oUaopk9bb9jH3XwXzx29PCym9aZfHvkJ1ZLF9cLfNzIexkXJpTn+7qR4btbjyaueVA83iNZNrWfcQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.6.tgz", + "integrity": "sha512-6pdK0rptAS/lE+/l00JYmXBfqgcYykYAh0wGygTgWdY262e0wQAX5AtwvwoucMWsAjH+npiVyNFw2w4gIJ7sgA==", "license": "Apache-2.0", "dependencies": { "@mongodb-js/devtools-connect": "^3.3.4" @@ -25761,6 +25761,7 @@ "resolved": "https://registry.npmjs.org/interruptor/-/interruptor-1.0.2.tgz", "integrity": "sha512-sn7EmHLEsE0sFn/0xShWiyd7SUDQaZV9MIWpdm2jnnC1vGRAmZeywv2m+AOtZde6zUTZFLaQnlf1SCIGu7kQWA==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "bindings": "^1.5.0" }, @@ -31409,9 +31410,9 @@ "link": true }, "node_modules/mongodb-redact": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-1.1.3.tgz", - "integrity": "sha512-rMw3JlgJ1WhTYUlztojIJ+PGO4sQuwQmsbs1YY60Qf+jPHiDfP10YF//BvpVfy5lKRxAYZmgRTL/fLj1bUbIAg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-1.1.4.tgz", + "integrity": "sha512-UZT53VPCYq2W8KwlCBJGZHYo3k9eKhUZGZhhLfDqjiL64PnnR0Wp+LeaqsBdZtnV8BGiBGW8jPn87V1uStFqSg==", "license": "Apache-2.0", "dependencies": { "lodash": "^4.17.21" @@ -42499,7 +42500,7 @@ "hasInstallScript": true, "license": "SSPL", "dependencies": { - "@mongosh/node-runtime-worker-thread": "^2.3.4", + "@mongosh/node-runtime-worker-thread": "^2.3.6", "clipboard": "^2.0.6", "kerberos": "^2.2.0", "keytar": "^7.9.0", @@ -45997,9 +45998,9 @@ "@mongodb-js/compass-user-data": "^0.3.12", "@mongodb-js/compass-utils": "^0.6.16", "@mongodb-js/compass-workspaces": "^0.29.1", - "@mongosh/browser-repl": "^2.3.5", - "@mongosh/logging": "^2.3.5", - "@mongosh/node-runtime-worker-thread": "^2.3.5", + "@mongosh/browser-repl": "^2.3.6", + "@mongosh/logging": "^2.3.6", + "@mongosh/node-runtime-worker-thread": "^2.3.6", "bson": "^6.10.1", "compass-preferences-model": "^2.31.1", "hadron-app-registry": "^9.2.8", @@ -49946,16 +49947,16 @@ } }, "@aws-sdk/client-cognito-identity": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.709.0.tgz", - "integrity": "sha512-I5a8ilF+jKAz6fmOOuHy2UEcod9ikRGBjACcC6ayxs4z4VqTnWynD6ALKvtUR3lk1Ur6nzAG1tTm/qAYKKmyBg==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.712.0.tgz", + "integrity": "sha512-Xb+6S5QzFhKin9gOIKjvFhvP13AffH5oq0v/e0yQO0JckSLuph9+du/CHcobPqkxJpzyreeDltD7+Yu/l9RmIg==", "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.709.0", - "@aws-sdk/client-sts": "3.709.0", + "@aws-sdk/client-sso-oidc": "3.712.0", + "@aws-sdk/client-sts": "3.712.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/middleware-host-header": "3.709.0", "@aws-sdk/middleware-logger": "3.709.0", "@aws-sdk/middleware-recursion-detection": "3.709.0", @@ -49964,7 +49965,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -50001,9 +50002,9 @@ } }, "@aws-sdk/client-sso": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.709.0.tgz", - "integrity": "sha512-Qxeo8cN0jNy6Wnbqq4wucffAGJM6sJjofoTgNtPA6cC7sPYx7aYC6OAAAo6NaMRY+WywOKdS9Wgjx2QYRxKx7w==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.712.0.tgz", + "integrity": "sha512-tBo/eW3YpZ9f3Q1qA7aA8uliNFJJX0OP7R2IUJ8t6rqVTk15wWCEPNmXzUZKgruDnKUfCaF4+r9q/Yy4fBc9PA==", "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -50016,7 +50017,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -50053,14 +50054,14 @@ } }, "@aws-sdk/client-sso-oidc": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.709.0.tgz", - "integrity": "sha512-1w6egz17QQy661lNCRmZZlqIANEbD6g2VFAQIJbVwSiu7brg+GUns+mT1eLLLHAMQc1sL0Ds8/ybSK2SrgGgIA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.712.0.tgz", + "integrity": "sha512-xNFrG9syrG6pxUP7Ld/nu3afQ9+rbJM9qrE+wDNz4VnNZ3vLiJty4fH85zBFhOQ5OF2DIJTWsFzXGi2FYjsCMA==", "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/middleware-host-header": "3.709.0", "@aws-sdk/middleware-logger": "3.709.0", "@aws-sdk/middleware-recursion-detection": "3.709.0", @@ -50069,7 +50070,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -50106,15 +50107,15 @@ } }, "@aws-sdk/client-sts": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.709.0.tgz", - "integrity": "sha512-cBAvlPg6yslXNL385UUGFPw+XY+lA9BzioNdIFkMo3fEUlTShogTtiWz4LsyLHoN6LhKojssP9DSmmWKWjCZIw==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.712.0.tgz", + "integrity": "sha512-gIO6BD+hkEe3GKQhbiFP0zcNQv0EkP1Cl9SOstxS+X9CeudEgVX/xEPUjyoFVkfkntPBJ1g0I1u5xOzzRExl4g==", "requires": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/client-sso-oidc": "3.709.0", + "@aws-sdk/client-sso-oidc": "3.712.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/middleware-host-header": "3.709.0", "@aws-sdk/middleware-logger": "3.709.0", "@aws-sdk/middleware-recursion-detection": "3.709.0", @@ -50123,7 +50124,7 @@ "@aws-sdk/types": "3.709.0", "@aws-sdk/util-endpoints": "3.709.0", "@aws-sdk/util-user-agent-browser": "3.709.0", - "@aws-sdk/util-user-agent-node": "3.709.0", + "@aws-sdk/util-user-agent-node": "3.712.0", "@smithy/config-resolver": "^3.0.13", "@smithy/core": "^2.5.5", "@smithy/fetch-http-handler": "^4.1.2", @@ -50185,11 +50186,11 @@ } }, "@aws-sdk/credential-provider-cognito-identity": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.709.0.tgz", - "integrity": "sha512-WLzDcYo7pob8fPeeOhgVqYuV21uUKWb1RobITQzZhv0ZSToIl1KjuyRQsznC23Sot9CFl+0V2QLFFNwRiIuH7w==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.712.0.tgz", + "integrity": "sha512-sUUaw4PK9LQNGGytVpz659w4rWwdhfsZ4AMns0smnWfNVmmDAOtDMUTzNUxYmXhWt4+iS4cXfQqmUAdKqIhlsw==", "requires": { - "@aws-sdk/client-cognito-identity": "3.709.0", + "@aws-sdk/client-cognito-identity": "3.712.0", "@aws-sdk/types": "3.709.0", "@smithy/property-provider": "^3.1.11", "@smithy/types": "^3.7.2", @@ -50247,15 +50248,15 @@ } }, "@aws-sdk/credential-provider-ini": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.709.0.tgz", - "integrity": "sha512-qCF8IIGcPoUp+Ib3ANhbF5gElxFd+kIrtv2/1tKdvhudMANstQbMiWV0LTH47ZZR6c3as4iSrm09NZnpEoD/pA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.712.0.tgz", + "integrity": "sha512-sTsdQ/Fm/suqMdpjhMuss/5uKL18vcuWnNTQVrG9iGNRqZLbq65MXquwbUpgzfoUmIcH+4CrY6H2ebpTIECIag==", "requires": { "@aws-sdk/core": "3.709.0", "@aws-sdk/credential-provider-env": "3.709.0", "@aws-sdk/credential-provider-http": "3.709.0", "@aws-sdk/credential-provider-process": "3.709.0", - "@aws-sdk/credential-provider-sso": "3.709.0", + "@aws-sdk/credential-provider-sso": "3.712.0", "@aws-sdk/credential-provider-web-identity": "3.709.0", "@aws-sdk/types": "3.709.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -50273,15 +50274,15 @@ } }, "@aws-sdk/credential-provider-node": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.709.0.tgz", - "integrity": "sha512-4HRX9KYWPSjO5O/Vg03YAsebKpvTjTvpK1n7zHYBmlLMBLxUrVsL1nNKKC5p2/7OW3RL8XR1ki3QkoV7kGRxUQ==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.712.0.tgz", + "integrity": "sha512-gXrHymW3rMRYORkPVQwL8Gi5Lu92F16SoZR543x03qCi7rm00oL9tRD85ACxkhprS1Wh8lUIUMNoeiwnYWTNuQ==", "requires": { "@aws-sdk/credential-provider-env": "3.709.0", "@aws-sdk/credential-provider-http": "3.709.0", - "@aws-sdk/credential-provider-ini": "3.709.0", + "@aws-sdk/credential-provider-ini": "3.712.0", "@aws-sdk/credential-provider-process": "3.709.0", - "@aws-sdk/credential-provider-sso": "3.709.0", + "@aws-sdk/credential-provider-sso": "3.712.0", "@aws-sdk/credential-provider-web-identity": "3.709.0", "@aws-sdk/types": "3.709.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -50319,11 +50320,11 @@ } }, "@aws-sdk/credential-provider-sso": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.709.0.tgz", - "integrity": "sha512-rYdTDOxazS2GdGScelsRK5CAkktRLCCdRjlwXaxrcW57j749hEqxcF5uTv9RD6WBwInfedcSywErNZB+hylQlg==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.712.0.tgz", + "integrity": "sha512-8lCMxY7Lb9VK9qdlNXRJXE3W1UDVURnJZ3a4XWYNY6yr1TfQaN40mMyXX1oNlXXJtMV0szRvjM8dZj37E/ESAw==", "requires": { - "@aws-sdk/client-sso": "3.709.0", + "@aws-sdk/client-sso": "3.712.0", "@aws-sdk/core": "3.709.0", "@aws-sdk/token-providers": "3.709.0", "@aws-sdk/types": "3.709.0", @@ -50360,21 +50361,21 @@ } }, "@aws-sdk/credential-providers": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.709.0.tgz", - "integrity": "sha512-v1OfAWhYhAz7XPtjWlQ3jDLZHCpuNrLP2bRWTEjRty8yZLN92ANehincULUGvUNszFO8rfpq2g4dmtk8XmqTzA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.712.0.tgz", + "integrity": "sha512-7U/pIx1T2IjysoskFRglZAThoxewKw6HoZS/SJT3hLusa/uuYuno1Y1nmCr0ojsl9NB7Jm4PIK3yJUZDDgy+Ng==", "requires": { - "@aws-sdk/client-cognito-identity": "3.709.0", - "@aws-sdk/client-sso": "3.709.0", - "@aws-sdk/client-sts": "3.709.0", + "@aws-sdk/client-cognito-identity": "3.712.0", + "@aws-sdk/client-sso": "3.712.0", + "@aws-sdk/client-sts": "3.712.0", "@aws-sdk/core": "3.709.0", - "@aws-sdk/credential-provider-cognito-identity": "3.709.0", + "@aws-sdk/credential-provider-cognito-identity": "3.712.0", "@aws-sdk/credential-provider-env": "3.709.0", "@aws-sdk/credential-provider-http": "3.709.0", - "@aws-sdk/credential-provider-ini": "3.709.0", - "@aws-sdk/credential-provider-node": "3.709.0", + "@aws-sdk/credential-provider-ini": "3.712.0", + "@aws-sdk/credential-provider-node": "3.712.0", "@aws-sdk/credential-provider-process": "3.709.0", - "@aws-sdk/credential-provider-sso": "3.709.0", + "@aws-sdk/credential-provider-sso": "3.712.0", "@aws-sdk/credential-provider-web-identity": "3.709.0", "@aws-sdk/types": "3.709.0", "@smithy/credential-provider-imds": "^3.2.8", @@ -50571,9 +50572,9 @@ } }, "@aws-sdk/util-user-agent-node": { - "version": "3.709.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.709.0.tgz", - "integrity": "sha512-trBfzSCVWy7ILgqhEXgiuM7hfRCw4F4a8IK90tjk9YL0jgoJ6eJuOp7+DfCtHJaygoBxD3cdMFkOu+lluFmGBA==", + "version": "3.712.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.712.0.tgz", + "integrity": "sha512-26X21bZ4FWsVpqs33uOXiB60TOWQdVlr7T7XONDFL/XN7GEpUJkWuuIB4PTok6VOmh1viYcdxZQqekXPuzXexQ==", "requires": { "@aws-sdk/middleware-user-agent": "3.709.0", "@aws-sdk/types": "3.709.0", @@ -57033,9 +57034,9 @@ "@mongodb-js/prettier-config-compass": "^1.0.3", "@mongodb-js/testing-library-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", - "@mongosh/browser-repl": "^2.3.5", - "@mongosh/logging": "^2.3.5", - "@mongosh/node-runtime-worker-thread": "^2.3.5", + "@mongosh/browser-repl": "^2.3.6", + "@mongosh/logging": "^2.3.6", + "@mongosh/node-runtime-worker-thread": "^2.3.6", "@types/enzyme": "^3.10.14", "bson": "^6.10.1", "chai": "^4.2.0", @@ -59417,19 +59418,19 @@ } }, "@mongosh/arg-parser": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.5.tgz", - "integrity": "sha512-4IvPU+dqy8x4eSImyR4qM6IRwwpIrZ5FB7uZUY3bW5sI57OEmckN2T/zYacv/bVqh3ubo2bShufjWKkOcLfc0g==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.6.tgz", + "integrity": "sha512-JmJ3pBfed2BEFBWBqvgRLtRmiDMycO6wwI3atMGp19P4RXRa0dLj9gY6qcT7f95Ah1wFXeQUC0LdClZfBivVqg==", "requires": { - "@mongosh/errors": "2.3.5", - "@mongosh/i18n": "2.3.5", + "@mongosh/errors": "2.3.6", + "@mongosh/i18n": "2.3.6", "mongodb-connection-string-url": "^3.0.1" } }, "@mongosh/async-rewriter2": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.5.tgz", - "integrity": "sha512-duup1Uk/lTSXx1N+OH72RGpZOED5DVBMQYYYgIaUzMazr+R4jWSZDbKkxpqVLf6xWoJDs1qQrPpbOhEHZqn7lQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.6.tgz", + "integrity": "sha512-Ne6LyIlRkBipKyrd+2+apdtLtyjg4bbCpPVbA1MBurPizVebbbBk/EASEiEOfsoCmQKMqITDYAAhtZJNMxJpYg==", "requires": { "@babel/core": "^7.22.8", "@babel/plugin-transform-destructuring": "^7.22.5", @@ -59439,26 +59440,26 @@ } }, "@mongosh/autocomplete": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.5.tgz", - "integrity": "sha512-wCzi/wyc2S+VYYWdqARMcRtcB46fQRqDMpDYUIL7KGkkZHEPDciwlQzQB0G0AKUtWxlbcHpWujsFN09dsD0KzA==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.6.tgz", + "integrity": "sha512-bB0nNoX/auX1+hdXGNcSD60XPq3oegEOzCUY/wjlOw0dFm9iSCYkxuiSAqCN/FnYm37Kpk9bVkGvY/l+d6fhJA==", "requires": { "@mongodb-js/mongodb-constants": "^0.10.1", - "@mongosh/shell-api": "2.3.5", + "@mongosh/shell-api": "2.3.6", "semver": "^7.5.4" } }, "@mongosh/browser-repl": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.5.tgz", - "integrity": "sha512-OYj8GUNC7BuyfGHrzPVUvbXEzMBmwfz2oyS4e9EY0YeMCYTzKbytvTpvZFzgMSQIKNtYzb4II8+pewCEWmXvag==", - "requires": { - "@mongosh/browser-runtime-core": "2.3.5", - "@mongosh/errors": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/i18n": "2.3.5", - "@mongosh/node-runtime-worker-thread": "2.3.5", - "@mongosh/service-provider-core": "2.3.5", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.6.tgz", + "integrity": "sha512-/3w1QH3/9B2qpi2cPCmqjDWMOMjTQhUOTIVbZzAyxDlYNXcVaoRo2hBu1shRcqHdC4iLSNrP/HvN6zWO62i/JQ==", + "requires": { + "@mongosh/browser-runtime-core": "2.3.6", + "@mongosh/errors": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/i18n": "2.3.6", + "@mongosh/node-runtime-worker-thread": "2.3.6", + "@mongosh/service-provider-core": "2.3.6", "numeral": "^2.0.6", "text-table": "^0.2.0" }, @@ -59471,55 +59472,55 @@ } }, "@mongosh/browser-runtime-core": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.5.tgz", - "integrity": "sha512-eQeeA1C5O647AmZ03CyuJUBTwO1SFhLcxM7X9MNeDXmJAwRGqy+ixJhXn7OFH5jQIz2YlrbH2hotxPSE8WfEyQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.6.tgz", + "integrity": "sha512-Y89kL4EQkRIZmJYX2ukmtle7coTzsfCK1a6b+fGlU9V38SRemkuF46HB0bju/eVBkXjJYjzVWrrYTFtBT2lW7Q==", "requires": { - "@mongosh/autocomplete": "2.3.5", - "@mongosh/service-provider-core": "2.3.5", - "@mongosh/shell-api": "2.3.5", - "@mongosh/shell-evaluator": "2.3.5" + "@mongosh/autocomplete": "2.3.6", + "@mongosh/service-provider-core": "2.3.6", + "@mongosh/shell-api": "2.3.6", + "@mongosh/shell-evaluator": "2.3.6" } }, "@mongosh/errors": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.5.tgz", - "integrity": "sha512-f6sSK+pLWJd3wKk7v81KqDDe4+q+RE2xSqxGoFvVM7I/8nEZAVsowC23/M4IhI+B5iF+5LFEKMP6NJxikvYAxg==" + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.6.tgz", + "integrity": "sha512-LF2n9WvwzJPRgaBZM9g3eMTX5TgX/PNtV6rYvpPLchzCBLbBObx2/w4/GZEVO/jy5VKLYwA/Ph8lfi+intdL7Q==" }, "@mongosh/history": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.5.tgz", - "integrity": "sha512-BqTapuqx/FBQXyUrbMAc2APLuVu0gkDSmXEa17yYTMcRb3adG/HawZ6HWGZDrVoOVNG7HLoXGa1S1nd98vMyBw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.6.tgz", + "integrity": "sha512-43z4JHIPgiE1vYs9wyYmXJKyMCbpHFhcBoecJZJNrK6n3N3kk3VRnnYXItSi2rEFhGGQ8dxKWQ4Bq1475i/D6Q==", "requires": { "mongodb-connection-string-url": "^3.0.1", "mongodb-redact": "^1.1.2" } }, "@mongosh/i18n": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.5.tgz", - "integrity": "sha512-aodEz62l5zCd+TfpBTJSv0eOD1IBNkhXQpD+sYEWMCgdcKdnUufdgUeotoeLS1+0CTUIu33iW4mVoodf863EsQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.6.tgz", + "integrity": "sha512-7M0c++OQbrOm5L5nAgQnRzQ3PvfFmFEzWaJsy+Vpka7CtLVh3l+H15UvImUG+0/2tZwtcQr1pXLWiKO24fUW7A==", "requires": { - "@mongosh/errors": "2.3.5" + "@mongosh/errors": "2.3.6" } }, "@mongosh/logging": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.5.tgz", - "integrity": "sha512-aR0r+foJ6cSk0WCyNg9uFO696LhCzmXQzTl2RTmQJxYGwmrsXBZmqe6MAeFQy85iL1uxKmP3B8yTXc7Z3GdZ5A==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.6.tgz", + "integrity": "sha512-9pubWE6hu7wJfbQHO36lhshduQLagtFyjtWXECIPb+y8fhuc8jOeZ405D/T3F1UrKlQ+bTg+i+Ry0GlgA4itOw==", "requires": { "@mongodb-js/devtools-connect": "^3.3.4", - "@mongosh/errors": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/types": "2.3.5", + "@mongosh/errors": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/types": "2.3.6", "mongodb-log-writer": "^1.4.2", "mongodb-redact": "^1.1.2" } }, "@mongosh/node-runtime-worker-thread": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.5.tgz", - "integrity": "sha512-nouWJhGaANiRBvzJTHqHfwwd21rlbrKIfL/P7SUX7Jkh5i4nL7al2JJLerbSsa2ZB5yciGgrW9t+d+zEc+cmgg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.6.tgz", + "integrity": "sha512-ouGCfthBHKIALa0pDZB8A6A4ajeXWTQr+HSzuiN9zjcztwksYke2SlF0dcOly5EZ3inDP6+EY6egIqxK10qV6w==", "requires": { "interruptor": "^1.0.1", "system-ca": "^2.0.1", @@ -59527,12 +59528,12 @@ } }, "@mongosh/service-provider-core": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.5.tgz", - "integrity": "sha512-utlfhyXRSafJEbRZphagleQFHOVakFocnOGy0VOpbEAOVhr0wAu0Rm59XhiqHSuFG6rAcXZWkYW67dUqKX3QEw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.6.tgz", + "integrity": "sha512-YEl3bEVfxq9dtooh6QkVuzyUXIUiQppyXuB4pUFktvfz2/sF5K/CJGej0bIM6Uy4NJ01jepGzc+TLTyaZodJgg==", "requires": { "@aws-sdk/credential-providers": "^3.525.0", - "@mongosh/errors": "2.3.5", + "@mongosh/errors": "2.3.6", "bson": "^6.10.1", "mongodb": "^6.12.0", "mongodb-build-info": "^1.7.2", @@ -59541,32 +59542,32 @@ } }, "@mongosh/shell-api": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.5.tgz", - "integrity": "sha512-hCZvHOGVitmNV9lAWXVF4mtu7TNDo7QxyP5j4TdI6QaYeK+O0GfGQQu3me2OwvW1YDfQfEgVYeLvbVg68p35uQ==", - "requires": { - "@mongosh/arg-parser": "2.3.5", - "@mongosh/errors": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/i18n": "2.3.5", - "@mongosh/service-provider-core": "2.3.5", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.6.tgz", + "integrity": "sha512-Ec+lP/ux7zqoVUDi8EUWXGU2gXsnVj7X5iMr7k3dp6sp19nDJ/GIEOePDktyKvkyNkdS+Zj1fmFjHHfSN023sg==", + "requires": { + "@mongosh/arg-parser": "2.3.6", + "@mongosh/errors": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/i18n": "2.3.6", + "@mongosh/service-provider-core": "2.3.6", "mongodb-redact": "^1.1.2" } }, "@mongosh/shell-evaluator": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.5.tgz", - "integrity": "sha512-LZWfJQf5d9OPbZ1Zp0rORYTMN6pTHEwlAMBP5KHwJBWdWw863ASxunrbzlzseWOZub+DLVTBCuaTcgf6OTeNDg==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.6.tgz", + "integrity": "sha512-khg6mXkHuSO0uowRMiKwIIRQeBc2D0geAF/6yc+h6ovPbM/p6W/VH8uneiQHmotbBRWAm/hWGHBtbrt24gq5rQ==", "requires": { - "@mongosh/async-rewriter2": "2.3.5", - "@mongosh/history": "2.3.5", - "@mongosh/shell-api": "2.3.5" + "@mongosh/async-rewriter2": "2.3.6", + "@mongosh/history": "2.3.6", + "@mongosh/shell-api": "2.3.6" } }, "@mongosh/types": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.5.tgz", - "integrity": "sha512-Iu0KjYuz8oUaopk9bb9jH3XwXzx29PCym9aZfHvkJ1ZLF9cLfNzIexkXJpTn+7qR4btbjyaueVA83iNZNrWfcQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.6.tgz", + "integrity": "sha512-6pdK0rptAS/lE+/l00JYmXBfqgcYykYAh0wGygTgWdY262e0wQAX5AtwvwoucMWsAjH+npiVyNFw2w4gIJ7sgA==", "requires": { "@mongodb-js/devtools-connect": "^3.3.4" } @@ -78834,7 +78835,7 @@ "@mongodb-js/testing-library-compass": "^1.0.3", "@mongodb-js/tsconfig-compass": "^1.0.6", "@mongodb-js/webpack-config-compass": "^1.4.8", - "@mongosh/node-runtime-worker-thread": "^2.3.4", + "@mongosh/node-runtime-worker-thread": "^2.3.6", "@segment/analytics-node": "^1.1.4", "ampersand-view": "^9.0.0", "chai": "^4.3.4", @@ -79448,9 +79449,9 @@ } }, "mongodb-redact": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-1.1.3.tgz", - "integrity": "sha512-rMw3JlgJ1WhTYUlztojIJ+PGO4sQuwQmsbs1YY60Qf+jPHiDfP10YF//BvpVfy5lKRxAYZmgRTL/fLj1bUbIAg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mongodb-redact/-/mongodb-redact-1.1.4.tgz", + "integrity": "sha512-UZT53VPCYq2W8KwlCBJGZHYo3k9eKhUZGZhhLfDqjiL64PnnR0Wp+LeaqsBdZtnV8BGiBGW8jPn87V1uStFqSg==", "requires": { "lodash": "^4.17.21" } diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index 3f9cc389e89..05da5966c17 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -51,14 +51,15 @@ "dependencies": { "@mongodb-js/compass-components": "^1.32.1", "@mongodb-js/compass-connections": "^1.48.1", + "@mongodb-js/compass-editor": "^0.34.1", "@mongodb-js/compass-logging": "^1.4.12", "@mongodb-js/compass-telemetry": "^1.2.5", "@mongodb-js/compass-user-data": "^0.3.12", "@mongodb-js/compass-utils": "^0.6.16", "@mongodb-js/compass-workspaces": "^0.29.1", - "@mongosh/browser-repl": "^2.3.5", - "@mongosh/logging": "^2.3.5", - "@mongosh/node-runtime-worker-thread": "^2.3.5", + "@mongosh/browser-repl": "^2.3.6", + "@mongosh/logging": "^2.3.6", + "@mongosh/node-runtime-worker-thread": "^2.3.6", "bson": "^6.10.1", "compass-preferences-model": "^2.31.1", "hadron-app-registry": "^9.2.8", @@ -83,7 +84,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "react-dom": "^17.0.2", - "sinon": "^9.2.3", "typescript": "^5.0.4" }, "is_compass_plugin": true diff --git a/packages/compass-shell/src/components/compass-shell/compass-shell.spec.tsx b/packages/compass-shell/src/components/compass-shell/compass-shell.spec.tsx deleted file mode 100644 index cc288651977..00000000000 --- a/packages/compass-shell/src/components/compass-shell/compass-shell.spec.tsx +++ /dev/null @@ -1,393 +0,0 @@ -import sinon from 'sinon'; -import React from 'react'; -import { mount, shallow } from 'enzyme'; -import { Shell } from '@mongosh/browser-repl'; -import { ResizeHandle } from '@mongodb-js/compass-components'; -import { expect } from 'chai'; - -import { CompassShell } from './compass-shell'; -import ShellHeader from '../shell-header'; -import ShellInfoModal from '../shell-info-modal'; - -function updateAndWaitAsync(wrapper) { - wrapper.update(); - return new Promise(setImmediate); -} - -const fakeRuntime = { - evaluate: sinon.fake.returns({ printable: 'some result' }), - setEvaluationListener: () => {}, -} as any; - -describe('CompassShell', function () { - context('when rendered', function () { - let wrapper; - - beforeEach(function () { - wrapper = mount( - undefined} - runtime={fakeRuntime} - enableShell - /> - ); - }); - - afterEach(function () { - wrapper.unmount(); - wrapper = null; - }); - - it('has the shell display none', function () { - const shellDomNode = wrapper - .find('[data-testid="shell-content"]') - .getDOMNode(); - const shellDisplayStyle = - getComputedStyle(shellDomNode).getPropertyValue('display'); - expect(shellDisplayStyle).to.equal('none'); - }); - }); - - context('when rendered expanded', function () { - context('when runtime property is not present', function () { - it('does not render a shell if runtime is null', function () { - const wrapper = mount( - undefined} - runtime={null} - enableShell - /> - ); - try { - wrapper.setState({ height: 300 }); - wrapper.update(); - expect(wrapper.find(Shell).exists()).to.equal(false); - } finally { - wrapper?.unmount(); - } - }); - }); - - context('when runtime property is present', function () { - let wrapper; - - beforeEach(function () { - wrapper = mount( - undefined} - runtime={fakeRuntime} - enableShell - /> - ); - - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - }); - afterEach(function () { - wrapper.unmount(); - wrapper = null; - }); - - it('renders the Shell', function () { - expect(wrapper.find(Shell).prop('runtime')).to.equal(fakeRuntime); - - const shellDomNode = wrapper - .find('[data-testid="shell-content"]') - .getDOMNode(); - const shellDisplayStyle = - getComputedStyle(shellDomNode).getPropertyValue('display'); - expect(shellDisplayStyle).to.equal('flex'); - }); - - it('renders the ShellHeader component', function () { - expect(wrapper.find(ShellHeader).exists()).to.equal(true); - }); - - it('renders a Resizable component', function () { - expect(wrapper.find(ResizeHandle)).to.exist; - }); - - it('renders the info modal component', function () { - expect(wrapper.find(ShellInfoModal)).to.exist; - }); - - it('renders the Shell with an output change handler', function () { - expect(!!wrapper.find(Shell).prop('onOutputChanged')).to.equal(true); - }); - }); - - context('with a runtime and saved shell output', function () { - it('renders the inital output', function () { - const wrapper = mount( - undefined} - runtime={fakeRuntime} - shellOutput={[ - { - type: 'output', - value: 'pineapple', - format: 'output', - }, - ]} - enableShell - /> - ); - - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - - expect(wrapper.find(Shell).prop('initialOutput')).to.deep.equal([ - { - type: 'output', - value: 'pineapple', - format: 'output', - }, - ]); - - wrapper.unmount(); - }); - }); - - context('when historyStorage is not present', function () { - it('passes an empty history to the Shell', function () { - const wrapper = shallow( - undefined} - runtime={fakeRuntime} - enableShell - /> - ); - - expect(wrapper.find(Shell).prop('initialHistory')).to.deep.equal([]); - - wrapper.unmount(); - }); - }); - - context('when it is clicked to collapse', function () { - let wrapper; - - beforeEach(function () { - wrapper = mount( - undefined} - runtime={fakeRuntime} - enableShell - /> - ); - - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - }); - - afterEach(function () { - wrapper.unmount(); - wrapper = null; - }); - - it('sets the collapsed height to 32', function () { - expect( - wrapper.find('[data-testid="shell-section"]').prop('style').height - ).to.equal(32); - }); - - context('when it is expanded again', function () { - it('resumes its previous height', function () { - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - - wrapper.instance().updateHeight(399); - wrapper.update(); - - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - - wrapper.find('[data-testid="shell-expand-button"]').simulate('click'); - wrapper.update(); - - expect( - wrapper.find('[data-testid="shell-section"]').prop('style').height - ).to.equal(399); - }); - }); - }); - }); - - context('when historyStorage is present', function () { - const history = ['line1']; - - it('passes the loaded history as initialHistory to Shell', async function () { - const wrapper = shallow( - undefined} - enableShell - /> - ); - - await updateAndWaitAsync(wrapper); - - expect(wrapper.find(Shell).prop('initialHistory')).to.deep.equal([ - 'line1', - ]); - - wrapper.unmount(); - }); - - it('saves the history when history changes', async function () { - const changeSpy = sinon.spy(); - - const wrapper = shallow( - - ); - - await updateAndWaitAsync(wrapper); - - const onHistoryChanged = wrapper.find(Shell).prop('onHistoryChanged'); - onHistoryChanged(['line1']); - - expect(changeSpy).to.have.been.calledOnceWith(['line1']); - - wrapper.unmount(); - }); - }); - - it('sets shellOutput on onShellOutputChanged', function () { - const shell = new CompassShell({} as any); - - shell.onShellOutputChanged([ - { - type: 'output', - value: 'some output', - format: 'output', - }, - ]); - - expect(shell.shellOutput).to.deep.equal([ - { - type: 'output', - value: 'some output', - format: 'output', - }, - ]); - }); - - context('resize actions', function () { - let wrapper; - - beforeEach(function () { - wrapper = mount( - undefined} - runtime={fakeRuntime} - enableShell - /> - ); - }); - afterEach(function () { - wrapper.unmount(); - wrapper = null; - }); - - context('when expanded', function () { - beforeEach(function () { - wrapper.setState({ height: 199 }); - wrapper.update(); - - // make sure it starts off as we expect - const shellDomNode = wrapper - .find('[data-testid="shell-content"]') - .getDOMNode(); - const shellDisplayStyle = - getComputedStyle(shellDomNode).getPropertyValue('display'); - expect(shellDisplayStyle, 'before').to.equal('flex'); - }); - context('when the height is updated', function () { - beforeEach(function () { - wrapper.setState({ height: 131 }); - wrapper.update(); - }); - - it('does not collapse the component', function () { - const shellDomNode = wrapper - .find('[data-testid="shell-content"]') - .getDOMNode(); - const shellDisplayStyle = - getComputedStyle(shellDomNode).getPropertyValue('display'); - expect(shellDisplayStyle, 'after').to.equal('flex'); - }); - - context('when it hits the lower bound', function () { - beforeEach(function () { - wrapper.setState({ height: 1 }); - wrapper.update(); - }); - - it('collapses the shell', function () { - expect( - wrapper.find('[data-testid="shell-section"]').prop('style').height - ).to.equal(32); - expect(wrapper.state('height')).to.equal(1); - }); - }); - }); - }); - - context('when collapsed', function () { - context('when the height is updated', function () { - beforeEach(function () { - wrapper.setState({ height: 55 }); - wrapper.update(); - }); - - it('updates the height', function () { - expect(wrapper.find('[type="range"]').at(0).prop('value')).to.equal( - 55 - ); - expect( - wrapper.find('[data-testid="shell-section"]').prop('style').height - ).to.equal(32); - }); - - it('does not expand the component', function () { - const shellDomNode = wrapper - .find('[data-testid="shell-content"]') - .getDOMNode(); - const shellDisplayStyle = - getComputedStyle(shellDomNode).getPropertyValue('display'); - expect(shellDisplayStyle).to.equal('none'); - }); - - context('when it hits the resize threshold', function () { - beforeEach(function () { - wrapper.setState({ height: 151 }); - wrapper.update(); - }); - - it('expands the shell', function () { - expect( - wrapper.find('[data-testid="shell-section"]').prop('style').height - ).to.equal(151); - expect(wrapper.state('height')).to.equal(151); - }); - }); - }); - }); - }); -}); diff --git a/packages/compass-shell/src/components/compass-shell/compass-shell.tsx b/packages/compass-shell/src/components/compass-shell/compass-shell.tsx deleted file mode 100644 index faac5612b9e..00000000000 --- a/packages/compass-shell/src/components/compass-shell/compass-shell.tsx +++ /dev/null @@ -1,237 +0,0 @@ -import React, { Component, Fragment } from 'react'; -import { connect } from 'react-redux'; -import { withPreferences } from 'compass-preferences-model/provider'; -import { Shell } from '@mongosh/browser-repl'; -import { - ResizeHandle, - ResizeDirection, - css, - cx, - getScrollbarStyles, - palette, -} from '@mongodb-js/compass-components'; -import ShellInfoModal from '../shell-info-modal'; -import ShellHeader from '../shell-header'; -import type { WorkerRuntime } from '@mongosh/node-runtime-worker-thread'; -import type { RootState } from '../../stores/store'; -import { saveHistory, selectRuntimeById } from '../../stores/store'; - -const compassShellStyles = css( - { - backgroundColor: palette.gray.dark4, - display: 'flex', - flexBasis: 'auto', - position: 'relative', - flexDirection: 'column', - width: '100vw', - }, - getScrollbarStyles(true /* Always show dark mode. */) -); - -const compassShellContainerStyles = css({ - flexGrow: 1, - display: 'none', - overflow: 'auto', - borderTop: `1px solid ${palette.gray.dark2}`, -}); - -const compassShellContainerVisibleStyles = css({ - display: 'flex', -}); - -const defaultShellHeightOpened = 240; -const shellHeightClosed = 32; -const shellMinHeightOpened = 100; - -function getMaxShellHeight() { - return Math.max(defaultShellHeightOpened, window.innerHeight - 100); -} - -// Apply bounds to the shell height when resizing to ensure it's always -// visible and usable to the user. -function boundShellHeight(attemptedHeight: number): number { - const maxHeight = getMaxShellHeight(); - - return Math.min(maxHeight, Math.max(shellMinHeightOpened, attemptedHeight)); -} - -export interface CompassShellProps { - runtime: WorkerRuntime | null; - shellOutput?: ShellOutputEntry[]; - enableShell: boolean; - initialHistory: string[] | null; - onHistoryChange: (history: string[]) => void; -} - -interface CompassShellState { - height: number; - prevHeight: number; - isOperationInProgress: boolean; - showInfoModal: boolean; -} - -type ShellProps = React.ComponentProps; - -type ShellRef = Extract['ref'], { current: any }>; - -type ShellOutputEntry = Required['initialOutput'][number]; - -export class CompassShell extends Component< - CompassShellProps, - CompassShellState -> { - shellRef: ShellRef = React.createRef(); - shellOutput: readonly ShellOutputEntry[]; - - static defaultProps = { - runtime: null, - }; - constructor(props: CompassShellProps) { - super(props); - - this.shellOutput = this.props.shellOutput || []; - - this.state = { - height: shellHeightClosed, - prevHeight: defaultShellHeightOpened, - isOperationInProgress: false, - showInfoModal: false, - }; - } - - onShellOutputChanged = (output: readonly ShellOutputEntry[]) => { - this.shellOutput = output; - }; - - onOperationStarted = () => { - this.setState({ - isOperationInProgress: true, - }); - }; - - onOperationEnd = () => { - this.setState({ - isOperationInProgress: false, - }); - }; - - terminateRuntime = () => { - if (this.props.runtime) { - void this.props.runtime.terminate(); - } - }; - - updateHeight(height: number) { - if (height > shellMinHeightOpened) { - this.setState({ - height, - // Store the previous height to use when toggling open/close - // when we resize while the shell is expanded. - prevHeight: height, - }); - } else { - this.setState({ - height, - }); - } - } - - hideInfoModal() { - this.setState({ showInfoModal: false }); - } - - focusEditor() { - if (this.shellRef.current && window.getSelection()?.type !== 'Range') { - this.shellRef.current.focusEditor(); - } - } - - render() { - const { height, prevHeight, isOperationInProgress, showInfoModal } = - this.state; - - if ( - !this.props.enableShell || - !this.props.runtime || - !this.props.initialHistory - ) { - return
; - } - - const isExpanded = height > shellMinHeightOpened; - const renderedHeight = isExpanded - ? boundShellHeight(height) - : shellHeightClosed; - - return ( - - - {/* Clicking on the shell container to focus it is a ux improvement to give - the shell more of a native shell feeling. We disable the jsx-ally rules - as this is a unique ux improvement solely for clicking. */} - {/* eslint-disable jsx-a11y/no-static-element-interactions */} - {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */} -
- {/* eslint-enable jsx-a11y/no-static-element-interactions */} - this.updateHeight(newHeight)} - value={height} - minValue={shellHeightClosed} - maxValue={getMaxShellHeight()} - title="MongoDB Shell" - /> - - isExpanded - ? this.updateHeight(shellHeightClosed) - : this.updateHeight(prevHeight) - } - isOperationInProgress={isOperationInProgress} - showInfoModal={() => this.setState({ showInfoModal: true })} - /> -
- { - this.props.onHistoryChange([...history]); - }} - onOutputChanged={this.onShellOutputChanged} - onOperationStarted={this.onOperationStarted} - onOperationEnd={this.onOperationEnd} - /> -
-
-
- ); - } -} - -export default connect( - (state: RootState) => { - return { - runtime: selectRuntimeById(state), - initialHistory: state.history, - }; - }, - { onHistoryChange: saveHistory } -)(withPreferences(CompassShell, ['enableShell'])); diff --git a/packages/compass-shell/src/components/compass-shell/index.ts b/packages/compass-shell/src/components/compass-shell/index.ts index 26977b0d6c6..e69de29bb2d 100644 --- a/packages/compass-shell/src/components/compass-shell/index.ts +++ b/packages/compass-shell/src/components/compass-shell/index.ts @@ -1,4 +0,0 @@ -import MappedCompassShell, { CompassShell } from './compass-shell'; - -export default MappedCompassShell; -export { CompassShell }; diff --git a/packages/compass-shell/src/components/compass-shell/tab-compass-shell.tsx b/packages/compass-shell/src/components/compass-shell/tab-compass-shell.tsx index 04f0d9463f0..645e098ac3b 100644 --- a/packages/compass-shell/src/components/compass-shell/tab-compass-shell.tsx +++ b/packages/compass-shell/src/components/compass-shell/tab-compass-shell.tsx @@ -4,6 +4,7 @@ import { useOnTabReplace, useTabState, } from '@mongodb-js/compass-workspaces/provider'; +import type { EditorRef } from '@mongodb-js/compass-editor'; import { Banner, Link, @@ -17,7 +18,7 @@ import type { WorkerRuntime } from '@mongosh/node-runtime-worker-thread'; import ShellInfoModal from '../shell-info-modal'; import ShellHeader from '../shell-header/shell-header'; import { usePreference } from 'compass-preferences-model/provider'; -import { Shell as _Shell } from '@mongosh/browser-repl'; +import { Shell } from '@mongosh/browser-repl'; import type { RootState } from '../../stores/store'; import { selectRuntimeById, saveHistory } from '../../stores/store'; @@ -44,13 +45,9 @@ const compassShellContainerStyles = css({ borderTop: `1px solid ${palette.gray.dark2}`, }); -type ShellProps = React.ComponentProps; +type ShellProps = React.ComponentProps; -type ShellRef = Extract['ref'], { current: any }>; - -type ShellType = ShellRef['current']; - -type ShellOutputEntry = Required['initialOutput'][number]; +type ShellOutputEntry = Required['output'][number]; type CompassShellProps = { runtime: WorkerRuntime | null; @@ -60,62 +57,49 @@ type CompassShellProps = { initialInput?: string; }; -function useInitialEval(initialEvaluate?: string | string[]) { +function useInitialEval( + initialEvaluate: string | string[] | undefined, + isRender: boolean +) { const [initialEvalApplied, setInitialEvalApplied] = useTabState( 'initialEvalApplied', false ); useEffect(() => { - setInitialEvalApplied(true); - }, [setInitialEvalApplied]); + // as soon as we render the first time, set it to true + if (isRender && !initialEvalApplied) { + setInitialEvalApplied(true); + } + }, [initialEvalApplied, setInitialEvalApplied, isRender]); return initialEvalApplied ? undefined : initialEvaluate; } -const Shell = React.forwardRef(function Shell( - { initialEvaluate: _initialEvaluate, ...props }, - ref -) { - const shellRef = useRef(null); - const initialEvaluate = useInitialEval(_initialEvaluate); - const mergeRef = useCallback( - (shell: ShellType | null) => { - shellRef.current = shell; - if (typeof ref === 'function') { - ref(shell); - } else if (ref) { - ref.current = shell; - } - }, - [ref] - ); - useEffect(() => { - return rafraf(() => { - shellRef.current?.focusEditor(); - }); - }, []); - return ( - <_Shell - ref={mergeRef} - initialEvaluate={initialEvaluate} - {...props} - > - ); -}); - -const CompassShell: React.FC = ({ +export const CompassShell: React.FC = ({ runtime, initialHistory, onHistoryChange, - initialEvaluate, + initialEvaluate: _initialEvaluate, initialInput, }) => { const enableShell = usePreference('enableShell'); - const shellRef: ShellRef = useRef(null); + const canRenderShell = !!(enableShell && initialHistory && runtime); + + // initialEvaluate will only be set on the first render of the browser-repl + // component + const initialEvaluate = useInitialEval(_initialEvaluate, canRenderShell); + + const editorRef = useRef(null); + + const [isOperationInProgress, setIsOperationInProgress] = useTabState( + 'isOperationInProgress', + false + ); + const [infoModalVisible, setInfoModalVisible] = useState(false); - const [isOperationInProgress, setIsOperationInProgress] = useState(false); - const [shellOutput, setShellOutput] = useTabState< - readonly ShellOutputEntry[] - >('shellOutput', []); + const [shellOutput, setShellOutput] = useTabState( + 'shellOutput', + [] + ); const [shellInput, setShellInput] = useTabState( 'shellInput', initialInput ?? '' @@ -136,27 +120,26 @@ const CompassShell: React.FC = ({ }, []); const focusEditor = useCallback(() => { - if (shellRef.current && window.getSelection()?.type !== 'Range') { - shellRef.current.focusEditor(); + if (editorRef.current && window.getSelection()?.type !== 'Range') { + editorRef.current.focus(); } }, []); - const updateShellOutput = useCallback( - (output: readonly ShellOutputEntry[]) => { - setShellOutput(output); - }, - [setShellOutput] - ); - - const notifyOperationStarted = useCallback(() => { + const onOperationStarted = useCallback(() => { setIsOperationInProgress(true); - }, []); + }, [setIsOperationInProgress]); - const notifyOperationEnd = useCallback(() => { + const onOperationEnd = useCallback(() => { setIsOperationInProgress(false); - }, []); + }, [setIsOperationInProgress]); - const canRenderShell = enableShell && initialHistory && runtime; + useEffect(() => { + if (canRenderShell) { + return rafraf(() => { + editorRef.current?.focus(); + }); + } + }, [canRenderShell]); if (!enableShell) { return ( @@ -201,21 +184,20 @@ const CompassShell: React.FC = ({ className={compassShellContainerStyles} > { - onHistoryChange([...history]); - }} - onOperationStarted={notifyOperationStarted} - onOperationEnd={notifyOperationEnd} maxOutputLength={1000} maxHistoryLength={1000} + initialEvaluate={initialEvaluate} + initialText={shellInput} + onInputChanged={setShellInput} + output={shellOutput} + onOutputChanged={setShellOutput} + history={initialHistory} + onHistoryChanged={onHistoryChange} + onOperationStarted={onOperationStarted} + onOperationEnd={onOperationEnd} + isOperationInProgress={isOperationInProgress} + ref={editorRef} />
diff --git a/packages/compass-shell/src/plugin.tsx b/packages/compass-shell/src/plugin.tsx index 18da16ed490..1d70cf9ddc5 100644 --- a/packages/compass-shell/src/plugin.tsx +++ b/packages/compass-shell/src/plugin.tsx @@ -7,10 +7,8 @@ import type { DataService, } from '@mongodb-js/compass-connections/provider'; import type { PreferencesAccess } from 'compass-preferences-model'; -import { usePreference } from 'compass-preferences-model/provider'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; import TabShell from './components/compass-shell/tab-compass-shell'; -import Shell from './components/compass-shell/compass-shell'; import { applyMiddleware, createStore } from 'redux'; import reducer, { createAndStoreRuntime, @@ -29,13 +27,9 @@ type ShellPluginProps = { }; export function ShellPlugin(props: ShellPluginProps) { - const multiConnectionsEnabled = usePreference( - 'enableMultipleConnectionSystem' - ); - const ShellComponent = multiConnectionsEnabled ? TabShell : Shell; return ( - + ); } diff --git a/packages/compass/package.json b/packages/compass/package.json index a3e8176e97e..59573839877 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -179,7 +179,7 @@ "email": "compass@mongodb.com" }, "dependencies": { - "@mongosh/node-runtime-worker-thread": "^2.3.4", + "@mongosh/node-runtime-worker-thread": "^2.3.6", "clipboard": "^2.0.6", "kerberos": "^2.2.0", "keytar": "^7.9.0", diff --git a/packages/compass/webpack.config.js b/packages/compass/webpack.config.js index a4e8ca3a7e8..312b5068637 100644 --- a/packages/compass/webpack.config.js +++ b/packages/compass/webpack.config.js @@ -57,6 +57,12 @@ module.exports = (_env, args) => { }, }; + const snapshot = { + unmanagedPaths: [ + path.resolve('..', '..', 'node_modules', '@mongosh', 'browser-repl'), + ], + }; + // Having runtime outside of entries means less rebuilding when dependencies // change (default is runtime is part of the entry and the whole entry needs // a rebuild when dependency tree changes) @@ -121,6 +127,7 @@ module.exports = (_env, args) => { return [ merge(mainConfig, { cache, + snapshot, externals, plugins: [ new webpack.EnvironmentPlugin(hadronEnvConfig), @@ -137,6 +144,7 @@ module.exports = (_env, args) => { }), merge(rendererConfig, { cache, + snapshot, // Chunk splitting makes sense only for renderer processes where the // amount of dependencies is massive and can benefit from them more optimization,