From d20add2cc16f2fa470a22feeffec9709dfffe7f4 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Tue, 18 Nov 2025 12:39:47 -0800 Subject: [PATCH] feat(query-bar): use hint in query COMPASS-9373 --- package-lock.json | 612 +++--------------- packages/compass-aggregations/package.json | 4 +- packages/compass-crud/package.json | 4 +- .../src/stores/crud-store.spec.ts | 18 +- .../compass-crud/src/stores/crud-store.ts | 32 +- packages/compass-editor/package.json | 2 +- .../compass-export-to-language/package.json | 2 +- packages/compass-import-export/package.json | 2 +- packages/compass-indexes/package.json | 4 +- packages/compass-query-bar/package.json | 2 +- .../src/constants/query-bar-store.ts | 3 +- .../src/constants/query-option-definition.ts | 2 +- .../src/constants/query-properties.ts | 2 +- .../src/stores/query-bar-reducer.spec.ts | 6 + .../src/stores/query-bar-reducer.ts | 2 +- packages/compass-query-bar/src/utils/query.ts | 8 +- .../compass-schema-validation/package.json | 2 +- .../src/stores/schema-analysis-reducer.ts | 1 + packages/connection-form/package.json | 4 +- packages/databases-collections/package.json | 2 +- packages/explain-plan-helper/package.json | 2 +- 21 files changed, 166 insertions(+), 550 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1e16d078e36..637b854c753 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11820,6 +11820,18 @@ "node": ">=8" } }, + "node_modules/@mongodb-js/shell-bson-parser": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.3.3.tgz", + "integrity": "sha512-B72m2oLK/yCUF5bX1BUFdjfO2LHKsqFNmoOhmw8+o36o2JMlwT0g0+p+s5aYVp9MVReb+l+3Fa3aAYq2cNo5bA==", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.1" + }, + "peerDependencies": { + "bson": "^4.6.3 || ^5 || ^6" + } + }, "node_modules/@mongodb-js/signing-utils": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@mongodb-js/signing-utils/-/signing-utils-0.3.8.tgz", @@ -35481,6 +35493,38 @@ "integrity": "sha512-yuXLm9j/9b+JST7txz/FyQ62LitULLMZlAjeRwM0aeKuKT2yEbSH6mkVHEPLxadGsJwEfQ4NgqvVfdZA20orjg==", "license": "Apache-2.0" }, + "node_modules/mongodb-query-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.5.0.tgz", + "integrity": "sha512-8+z65W4JaKmp19nnrzqN859L+zcR3ODN0VEyZd/9fsX8Gz4B/Qenm9PNnEhiD7YIm15rNUixa1n81vaua6zC1g==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/shell-bson-parser": "^1.3.3", + "debug": "^4.4.0", + "javascript-stringify": "^2.1.0", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "bson": "^4.6.3 || ^5 || ^6" + } + }, + "node_modules/mongodb-query-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/mongodb-query-util": { "resolved": "packages/mongodb-query-util", "link": true @@ -48167,7 +48211,7 @@ "@mongodb-js/explain-plan-helper": "^1.4.24", "@mongodb-js/mongodb-constants": "^0.17.0", "@mongodb-js/my-queries-storage": "^0.50.0", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "bson": "^6.10.4", "compass-preferences-model": "^2.66.1", "hadron-document": "^8.10.5", @@ -48179,7 +48223,7 @@ "mongodb-database-model": "^2.36.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-schema": "^12.6.3", "re-resizable": "^6.9.0", "react": "^17.0.2", @@ -48220,18 +48264,6 @@ "bson": "^6.10.3" } }, - "packages/compass-aggregations/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-aggregations/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -48241,21 +48273,6 @@ "node": ">=0.3.1" } }, - "packages/compass-aggregations/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-aggregations/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -49561,7 +49578,7 @@ "@mongodb-js/explain-plan-helper": "^1.4.24", "@mongodb-js/my-queries-storage": "^0.50.0", "@mongodb-js/reflux-state-mixin": "^1.2.24", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", "bson": "^6.10.4", @@ -49573,7 +49590,7 @@ "mongodb": "^6.19.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2", "reflux": "^0.4.1", "semver": "^7.6.3" @@ -49601,18 +49618,6 @@ "typescript": "^5.9.3" } }, - "packages/compass-crud/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-crud/node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -49662,21 +49667,6 @@ "dev": true, "license": "MIT" }, - "packages/compass-crud/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-crud/node_modules/nise": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", @@ -50375,7 +50365,7 @@ "@lezer/highlight": "^1.2.1", "@mongodb-js/compass-components": "^1.59.0", "@mongodb-js/mongodb-constants": "^0.17.0", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "polished": "^4.2.2", "prettier": "^2.7.1", "react": "^17.0.2" @@ -50410,33 +50400,6 @@ "bson": "^6.10.3" } }, - "packages/compass-editor/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, - "packages/compass-editor/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-editor/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -50686,7 +50649,7 @@ "@mongodb-js/compass-editor": "^0.61.0", "@mongodb-js/compass-maybe-protect-connection-string": "^0.64.1", "@mongodb-js/compass-telemetry": "^1.19.4", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "bson-transpilers": "^3.2.23", "compass-preferences-model": "^2.66.1", "mongodb-ns": "^3.0.1", @@ -50709,18 +50672,6 @@ "typescript": "^5.9.3" } }, - "packages/compass-export-to-language/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-export-to-language/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -51204,7 +51155,7 @@ "mongodb": "^6.19.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-schema": "^12.6.3", "papaparse": "^5.3.2", "react": "^17.0.2", @@ -51245,18 +51196,6 @@ "xvfb-maybe": "^0.2.1" } }, - "packages/compass-import-export/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-import-export/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -51266,21 +51205,6 @@ "node": ">=0.3.1" } }, - "packages/compass-import-export/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-import-export/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -51316,7 +51240,7 @@ "@mongodb-js/compass-workspaces": "^0.69.1", "@mongodb-js/connection-info": "^0.23.0", "@mongodb-js/mongodb-constants": "^0.17.0", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "bson": "^6.10.4", "compass-preferences-model": "^2.66.1", "lodash": "^4.17.21", @@ -51324,7 +51248,7 @@ "mongodb-collection-model": "^5.36.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", @@ -51361,33 +51285,6 @@ "bson": "^6.10.3" } }, - "packages/compass-indexes/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, - "packages/compass-indexes/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-indexes/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -51770,7 +51667,7 @@ "mongodb": "^6.19.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-query-util": "^2.5.12", "mongodb-schema": "^12.6.3", "react": "^17.0.2", @@ -51808,18 +51705,6 @@ "bson": "^6.10.3" } }, - "packages/compass-query-bar/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-query-bar/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -51829,21 +51714,6 @@ "node": ">=0.3.1" } }, - "packages/compass-query-bar/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-query-bar/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -52032,7 +51902,7 @@ "lodash": "^4.17.21", "mongodb": "^6.19.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", @@ -52070,33 +51940,6 @@ "bson": "^6.10.3" } }, - "packages/compass-schema-validation/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, - "packages/compass-schema-validation/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/compass-schema-validation/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -53643,13 +53486,13 @@ "@mongodb-js/compass-components": "^1.59.0", "@mongodb-js/compass-editor": "^0.61.0", "@mongodb-js/connection-info": "^0.23.0", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "lodash": "^4.17.21", "mongodb": "^6.19.0", "mongodb-build-info": "^1.8.1", "mongodb-connection-string-url": "^3.0.1", "mongodb-data-service": "^22.35.0", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2" }, "devDependencies": { @@ -53673,50 +53516,6 @@ "xvfb-maybe": "^0.2.1" } }, - "packages/connection-form/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, - "packages/connection-form/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "packages/connection-form/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/connection-form/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -54200,7 +53999,7 @@ "mongodb-database-model": "^2.36.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "prop-types": "^15.7.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -54288,18 +54087,6 @@ "node": ">=0.3.1" } }, - "packages/databases-collections/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/databases-collections/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -54309,21 +54096,6 @@ "node": ">=0.3.1" } }, - "packages/databases-collections/node_modules/mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/databases-collections/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -54375,7 +54147,7 @@ "version": "1.4.24", "license": "SSPL", "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "mongodb-explain-compat": "^3.3.23" }, "devDependencies": { @@ -54394,18 +54166,6 @@ "typescript": "^5.9.3" } }, - "packages/explain-plan-helper/node_modules/@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "license": "Apache-2.0", - "dependencies": { - "acorn": "^8.1.0" - }, - "peerDependencies": { - "bson": "^4.6.3 || ^5 || ^6" - } - }, "packages/explain-plan-helper/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -62745,7 +62505,7 @@ "@mongodb-js/mongodb-constants": "^0.17.0", "@mongodb-js/my-queries-storage": "^0.50.0", "@mongodb-js/prettier-config-compass": "^1.2.9", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@types/babel__generator": "^7.6.8", @@ -62766,7 +62526,7 @@ "mongodb-database-model": "^2.36.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-schema": "^12.6.3", "nyc": "^15.1.0", "re-resizable": "^6.9.0", @@ -62789,31 +62549,12 @@ "semver": "^7.7.1" } }, - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -63911,7 +63652,7 @@ "@mongodb-js/my-queries-storage": "^0.50.0", "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/reflux-state-mixin": "^1.2.24", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@types/enzyme": "^3.10.14", @@ -63935,7 +63676,7 @@ "mongodb-data-service": "^22.35.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "nyc": "^15.1.0", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -63945,14 +63686,6 @@ "typescript": "^5.9.3" }, "dependencies": { - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -63996,17 +63729,6 @@ "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "nise": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", @@ -64195,7 +63917,7 @@ "mongodb-database-model": "^2.36.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "nyc": "^15.1.0", "prop-types": "^15.7.2", "react": "^17.0.2", @@ -64208,31 +63930,12 @@ "typescript": "^5.9.3" }, "dependencies": { - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -64275,7 +63978,7 @@ "chai": "^4.3.6", "depcheck": "^1.4.1", "mocha": "^10.2.0", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "nyc": "^15.1.0", "polished": "^4.2.2", "prettier": "^2.7.1", @@ -64292,25 +63995,6 @@ "semver": "^7.7.1" } }, - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -64527,7 +64211,7 @@ "@mongodb-js/eslint-config-compass": "^1.4.12", "@mongodb-js/mocha-config-compass": "^1.7.2", "@mongodb-js/prettier-config-compass": "^1.2.9", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "bson-transpilers": "^3.2.23", @@ -64545,14 +64229,6 @@ "typescript": "^5.9.3" }, "dependencies": { - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -64934,7 +64610,7 @@ "mongodb": "^6.19.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-schema": "^12.6.3", "nyc": "^15.1.0", "papaparse": "^5.3.2", @@ -64952,31 +64628,12 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -65011,7 +64668,7 @@ "@mongodb-js/mocha-config-compass": "^1.7.2", "@mongodb-js/mongodb-constants": "^0.17.0", "@mongodb-js/prettier-config-compass": "^1.2.9", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "bson": "^6.10.4", @@ -65026,7 +64683,7 @@ "mongodb-collection-model": "^5.36.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "nyc": "^15.1.0", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -65047,25 +64704,6 @@ "semver": "^7.7.1" } }, - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -65322,7 +64960,7 @@ "mongodb": "^6.19.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-query-util": "^2.5.12", "mongodb-schema": "^12.6.3", "nyc": "^15.1.0", @@ -65344,31 +64982,12 @@ "semver": "^7.7.1" } }, - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -65569,7 +65188,7 @@ "mongodb": "^6.19.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "nyc": "^15.1.0", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -65589,25 +65208,6 @@ "semver": "^7.7.1" } }, - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", @@ -66867,7 +66467,7 @@ "@mongodb-js/eslint-config-compass": "^1.4.12", "@mongodb-js/mocha-config-compass": "^1.7.2", "@mongodb-js/prettier-config-compass": "^1.2.9", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@types/chai": "^4.2.21", @@ -66885,40 +66485,13 @@ "mongodb-build-info": "^1.8.1", "mongodb-connection-string-url": "^3.0.1", "mongodb-data-service": "^22.35.0", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "nyc": "^15.1.0", "react": "^17.0.2", "sinon": "^9.2.3", "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, - "debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "requires": { - "ms": "^2.1.3" - } - }, - "mongodb-query-parser": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.3.0.tgz", - "integrity": "sha512-3t8HZWzexoLAd8rXdecYgk7Xv22kd7QSYu6wNy+SxuHBiIQOG4NoK5AKw3xaMeNdJFUptv8FhgvmpKI+4gUA5A==", - "requires": { - "@mongodb-js/shell-bson-parser": "^1.2.0", - "debug": "^4.3.4", - "javascript-stringify": "^2.1.0", - "lodash": "^4.17.21" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -67401,7 +66974,7 @@ "@mongodb-js/eslint-config-compass": "^1.4.12", "@mongodb-js/mocha-config-compass": "^1.7.2", "@mongodb-js/prettier-config-compass": "^1.2.9", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/tsconfig-compass": "^1.2.12", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", @@ -67415,14 +66988,6 @@ "typescript": "^5.9.3" }, "dependencies": { - "@mongodb-js/shell-bson-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.2.0.tgz", - "integrity": "sha512-dgtE2Rth/dFYlF7ZFw99mtCupzXm1SaknEJwCNmnqBfM9arm506A3q6pctiPSoycnLFZEso08YIANRlY4sKJCQ==", - "requires": { - "acorn": "^8.1.0" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -68350,6 +67915,14 @@ } } }, + "@mongodb-js/shell-bson-parser": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/shell-bson-parser/-/shell-bson-parser-1.3.3.tgz", + "integrity": "sha512-B72m2oLK/yCUF5bX1BUFdjfO2LHKsqFNmoOhmw8+o36o2JMlwT0g0+p+s5aYVp9MVReb+l+3Fa3aAYq2cNo5bA==", + "requires": { + "acorn": "^8.14.1" + } + }, "@mongodb-js/signing-utils": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/@mongodb-js/signing-utils/-/signing-utils-0.3.8.tgz", @@ -88536,6 +88109,27 @@ "resolved": "https://registry.npmjs.org/mongodb-ns/-/mongodb-ns-3.0.1.tgz", "integrity": "sha512-yuXLm9j/9b+JST7txz/FyQ62LitULLMZlAjeRwM0aeKuKT2yEbSH6mkVHEPLxadGsJwEfQ4NgqvVfdZA20orjg==" }, + "mongodb-query-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/mongodb-query-parser/-/mongodb-query-parser-4.5.0.tgz", + "integrity": "sha512-8+z65W4JaKmp19nnrzqN859L+zcR3ODN0VEyZd/9fsX8Gz4B/Qenm9PNnEhiD7YIm15rNUixa1n81vaua6zC1g==", + "requires": { + "@mongodb-js/shell-bson-parser": "^1.3.3", + "debug": "^4.4.0", + "javascript-stringify": "^2.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "requires": { + "ms": "^2.1.3" + } + } + } + }, "mongodb-query-util": { "version": "file:packages/mongodb-query-util", "requires": { diff --git a/packages/compass-aggregations/package.json b/packages/compass-aggregations/package.json index 37d423dffea..4837431a530 100644 --- a/packages/compass-aggregations/package.json +++ b/packages/compass-aggregations/package.json @@ -75,7 +75,7 @@ "@mongodb-js/explain-plan-helper": "^1.4.24", "@mongodb-js/mongodb-constants": "^0.17.0", "@mongodb-js/my-queries-storage": "^0.50.0", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "bson": "^6.10.4", "compass-preferences-model": "^2.66.1", "hadron-document": "^8.10.5", @@ -87,7 +87,7 @@ "mongodb-database-model": "^2.36.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-schema": "^12.6.3", "re-resizable": "^6.9.0", "react": "^17.0.2", diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index e947d830d42..fd73a7180da 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -85,7 +85,7 @@ "@mongodb-js/explain-plan-helper": "^1.4.24", "@mongodb-js/my-queries-storage": "^0.50.0", "@mongodb-js/reflux-state-mixin": "^1.2.24", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", "bson": "^6.10.4", @@ -97,7 +97,7 @@ "mongodb": "^6.19.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2", "reflux": "^0.4.1", "semver": "^7.6.3" diff --git a/packages/compass-crud/src/stores/crud-store.spec.ts b/packages/compass-crud/src/stores/crud-store.spec.ts index d2766b88fa0..a63fff03bf5 100644 --- a/packages/compass-crud/src/stores/crud-store.spec.ts +++ b/packages/compass-crud/src/stores/crud-store.spec.ts @@ -2412,7 +2412,7 @@ describe('store', function () { ); }); - it('should keep user projection when provided', async function () { + it('should keep user fields when provided', async function () { await fetchDocuments( dataService, track, @@ -2421,13 +2421,25 @@ describe('store', function () { 'test.test', {}, { - projection: { _id: 1 }, + projection: { _id: 1, pineapple: 1 }, + hint: 'pineapple', + limit: 10, + skip: 7, + sort: { pineapple: 1 }, } ); expect(find).to.have.been.calledOnce; expect(find.getCall(0)) .to.have.nested.property('args.2.projection') - .deep.eq({ _id: 1 }); + .deep.eq({ _id: 1, pineapple: 1 }); + expect(find.getCall(0)).to.have.nested.property('args.2.limit').eq(10); + expect(find.getCall(0)).to.have.nested.property('args.2.skip').eq(7); + expect(find.getCall(0)) + .to.have.nested.property('args.2.sort') + .deep.eq({ pineapple: 1 }); + expect(find.getCall(0)) + .to.have.nested.property('args.2.hint') + .eq('pineapple'); }); it('should retry find operation if failed with server error when applying custom projection', async function () { diff --git a/packages/compass-crud/src/stores/crud-store.ts b/packages/compass-crud/src/stores/crud-store.ts index 02ab3ee5e56..075f6b4ea2f 100644 --- a/packages/compass-crud/src/stores/crud-store.ts +++ b/packages/compass-crud/src/stores/crud-store.ts @@ -68,7 +68,7 @@ import type { } from '@mongodb-js/compass-connections/provider'; import type { Query, QueryBarService } from '@mongodb-js/compass-query-bar'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; -import type { MongoServerError } from 'mongodb'; +import type { CollationOptions, MongoServerError } from 'mongodb'; export type BSONObject = TypeCastMap['Object']; export type BSONArray = TypeCastMap['Array']; @@ -587,7 +587,7 @@ class CrudStoreImpl if (id !== undefined) { doc.onRemoveStart(); try { - await this.dataService.deleteOne(this.state.ns, { _id: id } as any); + await this.dataService.deleteOne(this.state.ns, { _id: id as any }); // emit on the document(list view) and success state(json view) doc.onRemoveSuccess(); const payload = { view: this.state.view, ns: this.state.ns }; @@ -864,6 +864,7 @@ class CrudStoreImpl filter, limit, sort, + hint, project: projection, collation, maxTimeMS, @@ -892,9 +893,10 @@ class CrudStoreImpl const opts = { skip, limit: nextPageCount, - sort, - projection, - collation, + hint: hint ?? undefined, + sort: sort ?? undefined, + projection: projection ?? undefined, + collation: collation as CollationOptions, maxTimeMS: capMaxTimeMSAtPreferenceLimit(this.preferences, maxTimeMS), promoteValues: false, bsonRegExp: true, @@ -918,7 +920,7 @@ class CrudStoreImpl this.state.isDataLake, ns, filter ?? {}, - opts as any, + opts, { abortSignal: signal, } @@ -1647,9 +1649,14 @@ class CrudStoreImpl : query.maxTimeMS ), signal, + ...(query.hint + ? { + hint: query.hint, + } + : {}), }; - if (this.isCountHintSafe(query)) { + if (!countOptions.hint && this.isCountHintSafe(query)) { countOptions.hint = '_id_'; } @@ -1669,11 +1676,12 @@ class CrudStoreImpl } const findOptions = { - sort, - projection: query.project, + sort: sort ?? undefined, + projection: query.project ?? undefined, skip: query.skip, limit: docsPerPage, - collation: query.collation, + collation: query.collation as CollationOptions, + hint: query.hint ?? undefined, maxTimeMS: capMaxTimeMSAtPreferenceLimit( this.preferences, query.maxTimeMS @@ -1703,7 +1711,7 @@ class CrudStoreImpl // Only check if index was used if query filter or sort is not empty if (!isEmpty(query.filter) || !isEmpty(query.sort)) { void this.dataService - .explainFind(ns, query.filter ?? {}, findOptions as any, { + .explainFind(ns, query.filter ?? {}, findOptions, { explainVerbosity: 'queryPlanner', abortSignal: signal, }) @@ -1770,7 +1778,7 @@ class CrudStoreImpl this.state.isDataLake, ns, query.filter ?? {}, - findOptions as any, + findOptions, { abortSignal: signal, } diff --git a/packages/compass-editor/package.json b/packages/compass-editor/package.json index 1561643af1b..c375455993c 100644 --- a/packages/compass-editor/package.json +++ b/packages/compass-editor/package.json @@ -74,7 +74,7 @@ "@lezer/highlight": "^1.2.1", "@mongodb-js/compass-components": "^1.59.0", "@mongodb-js/mongodb-constants": "^0.17.0", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "polished": "^4.2.2", "prettier": "^2.7.1", "react": "^17.0.2" diff --git a/packages/compass-export-to-language/package.json b/packages/compass-export-to-language/package.json index 0b93bfa0c42..01a3f968b17 100644 --- a/packages/compass-export-to-language/package.json +++ b/packages/compass-export-to-language/package.json @@ -54,7 +54,7 @@ "@mongodb-js/compass-editor": "^0.61.0", "@mongodb-js/compass-maybe-protect-connection-string": "^0.64.1", "@mongodb-js/compass-telemetry": "^1.19.4", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "bson-transpilers": "^3.2.23", "compass-preferences-model": "^2.66.1", "@mongodb-js/compass-app-registry": "^9.4.28", diff --git a/packages/compass-import-export/package.json b/packages/compass-import-export/package.json index 67ac228eb63..ef94c0619c9 100644 --- a/packages/compass-import-export/package.json +++ b/packages/compass-import-export/package.json @@ -67,7 +67,7 @@ "mongodb": "^6.19.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-schema": "^12.6.3", "papaparse": "^5.3.2", "react": "^17.0.2", diff --git a/packages/compass-indexes/package.json b/packages/compass-indexes/package.json index f6ef637a81d..d9131e68631 100644 --- a/packages/compass-indexes/package.json +++ b/packages/compass-indexes/package.json @@ -76,7 +76,7 @@ "@mongodb-js/compass-telemetry": "^1.19.4", "@mongodb-js/compass-workspaces": "^0.69.1", "@mongodb-js/mongodb-constants": "^0.17.0", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "@mongodb-js/connection-info": "^0.23.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.1", @@ -85,7 +85,7 @@ "mongodb-collection-model": "^5.36.0", "mongodb-data-service": "^22.35.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", diff --git a/packages/compass-query-bar/package.json b/packages/compass-query-bar/package.json index 172c0f6892d..a346ca62996 100644 --- a/packages/compass-query-bar/package.json +++ b/packages/compass-query-bar/package.json @@ -84,7 +84,7 @@ "mongodb": "^6.19.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "mongodb-query-util": "^2.5.12", "mongodb-schema": "^12.6.3", "react": "^17.0.2", diff --git a/packages/compass-query-bar/src/constants/query-bar-store.ts b/packages/compass-query-bar/src/constants/query-bar-store.ts index 68e5bf658ae..2a6900fa650 100644 --- a/packages/compass-query-bar/src/constants/query-bar-store.ts +++ b/packages/compass-query-bar/src/constants/query-bar-store.ts @@ -6,6 +6,7 @@ import { DEFAULT_PROJECT, DEFAULT_COLLATION, DEFAULT_MAX_TIME_MS, + DEFAULT_HINT, } from 'mongodb-query-parser'; /** @@ -30,7 +31,7 @@ const DEFAULT_QUERY_VALUES = { project: DEFAULT_PROJECT, collation: DEFAULT_COLLATION, sort: DEFAULT_SORT, - hint: null, + hint: DEFAULT_HINT, skip: DEFAULT_SKIP, limit: DEFAULT_LIMIT, maxTimeMS: DEFAULT_MAX_TIME_MS, diff --git a/packages/compass-query-bar/src/constants/query-option-definition.ts b/packages/compass-query-bar/src/constants/query-option-definition.ts index ad6ad7870c1..e5ec7b98c74 100644 --- a/packages/compass-query-bar/src/constants/query-option-definition.ts +++ b/packages/compass-query-bar/src/constants/query-option-definition.ts @@ -41,7 +41,7 @@ export const OPTION_DEFINITION: { name: 'hint', label: 'Index Hint', type: 'document', - placeholder: '{ field: -1 }', + placeholder: '{ field: -1 } or "indexName"', link: 'https://docs.mongodb.com/manual/reference/method/cursor.hint/', }, collation: { diff --git a/packages/compass-query-bar/src/constants/query-properties.ts b/packages/compass-query-bar/src/constants/query-properties.ts index b195c8b1205..77bc1c0cb76 100644 --- a/packages/compass-query-bar/src/constants/query-properties.ts +++ b/packages/compass-query-bar/src/constants/query-properties.ts @@ -27,7 +27,7 @@ export type QueryFormFields = { project: FormField; collation: FormField; sort: FormField; - hint: FormField; + hint: FormField; skip: FormField; limit: FormField; maxTimeMS: FormField; diff --git a/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts b/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts index 4a102fc1ef3..7ccda375938 100644 --- a/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts +++ b/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts @@ -71,6 +71,12 @@ describe('queryBarReducer', function () { ['maxTimeMS', '1', 1, true], ['maxTimeMS', '-1', DEFAULT_QUERY_VALUES['maxTimeMS'], false], + + ['hint', '"hintPineappleIndex"', 'hintPineappleIndex', true], + ['hint', '{ pineapple: 1 }', { pineapple: 1 }, true], + ['hint', 'pineapple', DEFAULT_QUERY_VALUES['hint'], false], + ['hint', '1', DEFAULT_QUERY_VALUES['hint'], false], + ['hint', '-1', DEFAULT_QUERY_VALUES['hint'], false], ]; specs.forEach(([field, str, expectedValue, expectedValid]) => { diff --git a/packages/compass-query-bar/src/stores/query-bar-reducer.ts b/packages/compass-query-bar/src/stores/query-bar-reducer.ts index 24691cf564f..350ad3ce528 100644 --- a/packages/compass-query-bar/src/stores/query-bar-reducer.ts +++ b/packages/compass-query-bar/src/stores/query-bar-reducer.ts @@ -228,7 +228,7 @@ export const applyFromHistory = ( return (dispatch, getState, { localAppRegistry, preferences }) => { const currentFields = getState().queryBar.fields; const currentQuery = currentQueryFieldsToRetain.reduce< - Record + Record >((acc, key) => { const { value } = currentFields[key]; if (value) { diff --git a/packages/compass-query-bar/src/utils/query.ts b/packages/compass-query-bar/src/utils/query.ts index 081a3cd6412..3deabf8747c 100644 --- a/packages/compass-query-bar/src/utils/query.ts +++ b/packages/compass-query-bar/src/utils/query.ts @@ -131,7 +131,7 @@ export function validateField( }: Pick ) { const validated = validate(field, value); - if (field === 'filter' && validated === '') { + if ((field === 'filter' || field === 'hint') && validated === '') { // TODO(COMPASS-5205): Things like { i: $} confuses queryParser and // ultimately it sets filter to '' whereas it has to be a {} (if valid) or // false (if invalid). Should probably be fixed in mongodb-query-parser, @@ -163,12 +163,6 @@ export function validateField( } } - // We don't have a validator for indexes, but indexes share the same structure as - // a sort document, so we're leveraging this to validate the hint field - if (field === 'hint') { - return validate('sort', value); - } - return validated; } diff --git a/packages/compass-schema-validation/package.json b/packages/compass-schema-validation/package.json index 2789c6962c5..a66812e76c3 100644 --- a/packages/compass-schema-validation/package.json +++ b/packages/compass-schema-validation/package.json @@ -85,7 +85,7 @@ "lodash": "^4.17.21", "mongodb": "^6.19.0", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", diff --git a/packages/compass-schema/src/stores/schema-analysis-reducer.ts b/packages/compass-schema/src/stores/schema-analysis-reducer.ts index 4a4017ded1e..28bd3ecda1e 100644 --- a/packages/compass-schema/src/stores/schema-analysis-reducer.ts +++ b/packages/compass-schema/src/stores/schema-analysis-reducer.ts @@ -314,6 +314,7 @@ export const startAnalysis = (): SchemaThunkAction< const driverOptions: AggregateOptions = { maxTimeMS: capMaxTimeMSAtPreferenceLimit(preferences, query.maxTimeMS), + hint: query.hint ?? undefined, }; analysisAbortControllerRef.current = new AbortController(); diff --git a/packages/connection-form/package.json b/packages/connection-form/package.json index c4b8a8a9607..4e907bb17e1 100644 --- a/packages/connection-form/package.json +++ b/packages/connection-form/package.json @@ -51,13 +51,13 @@ "@mongodb-js/compass-components": "^1.59.0", "@mongodb-js/compass-editor": "^0.61.0", "@mongodb-js/connection-info": "^0.23.0", - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "lodash": "^4.17.21", "mongodb": "^6.19.0", "mongodb-build-info": "^1.8.1", "mongodb-connection-string-url": "^3.0.1", "mongodb-data-service": "^22.35.0", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "react": "^17.0.2" }, "devDependencies": { diff --git a/packages/databases-collections/package.json b/packages/databases-collections/package.json index 1893a06964b..da9faea4b61 100644 --- a/packages/databases-collections/package.json +++ b/packages/databases-collections/package.json @@ -74,7 +74,7 @@ "mongodb-database-model": "^2.36.0", "mongodb-instance-model": "^12.58.1", "mongodb-ns": "^3.0.1", - "mongodb-query-parser": "^4.3.0", + "mongodb-query-parser": "^4.5.0", "prop-types": "^15.7.2", "react": "^17.0.2", "react-redux": "^8.1.3", diff --git a/packages/explain-plan-helper/package.json b/packages/explain-plan-helper/package.json index 9661986fd96..73718197a05 100644 --- a/packages/explain-plan-helper/package.json +++ b/packages/explain-plan-helper/package.json @@ -50,7 +50,7 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.0", + "@mongodb-js/shell-bson-parser": "^1.3.3", "mongodb-explain-compat": "^3.3.23" }, "devDependencies": {