From bc97098b7c129f7f37bcb7af326a514155b89c90 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Wed, 17 Dec 2025 21:46:58 -0500 Subject: [PATCH 1/3] chore(lint): bump shared lint dep, fix issues --- package.json | 2 +- pnpm-lock.yaml | 16 +++++++++++----- src/explorer/connectionTreeItem.ts | 6 ++++-- src/mcp/mcpController.ts | 1 + .../suite/telemetry/telemetryService.test.ts | 1 + .../views/webview-app/resources-panel.test.tsx | 2 +- 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 2f08bb935..fddec74a1 100644 --- a/package.json +++ b/package.json @@ -1446,7 +1446,7 @@ "@babel/preset-typescript": "^7.25.7", "@babel/types": "^7.25.8", "@modelcontextprotocol/sdk": "^1.24.0", - "@mongodb-js/eslint-config-devtools": "^0.9.12", + "@mongodb-js/eslint-config-devtools": "^0.11.2", "@mongodb-js/oidc-mock-provider": "^0.11.5", "@mongodb-js/oidc-plugin": "^2.0.5", "@mongodb-js/prettier-config-devtools": "^1.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02be5b59e..0cadb6713 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -134,8 +134,8 @@ importers: specifier: ^1.24.0 version: 1.24.3(@cfworker/json-schema@4.1.1)(zod@3.25.76) '@mongodb-js/eslint-config-devtools': - specifier: ^0.9.12 - version: 0.9.12(eslint@8.57.1)(typescript@5.9.3) + specifier: ^0.11.2 + version: 0.11.2(eslint@8.57.1)(typescript@5.9.3) '@mongodb-js/oidc-mock-provider': specifier: ^0.11.5 version: 0.11.5 @@ -2368,11 +2368,14 @@ packages: '@mongodb-js/diagramming@2.2.2': resolution: {integrity: sha512-GCI+L9TBC7sbuEeJaazhdz1ELcvPRi6cjuOf9Lhx/9FhyV+7IpIGCQbm4V7OflBrqBTfZD4XrwzlkuZ55hRLaA==} - '@mongodb-js/eslint-config-devtools@0.9.12': - resolution: {integrity: sha512-8dN2FrWlxy74I3kvhRXNLkWFaPesYNKwbr5jMb7ahEBNfWoZIRruf7SJ3g7pW4/5WpsRCUXfgkxyBy3G2bK5UQ==} + '@mongodb-js/eslint-config-devtools@0.11.2': + resolution: {integrity: sha512-RgEavFg9aYhWH5RM0ws0IxURZa3eNLek7n27eLb1A5VBLvc4YFUuNbZ4KIpAhp5yP0IL0GmocnPJXO0FdmBMFQ==} peerDependencies: eslint: ^7.25.0 || ^8.0.0 + '@mongodb-js/eslint-plugin-devtools@0.3.2': + resolution: {integrity: sha512-wvRoFR+F/TNCEDnyib0pkssJTuVrES64/7hv76GtPdpG9+guF8lf+H1tcXQQcmIPDvOvL3XZPP3Lwf1gJjIz8A==} + '@mongodb-js/mongodb-constants@0.10.4': resolution: {integrity: sha512-fz7AjwBfN6iwb3Luo9N7qOKifUHJd38nS6tWRtkLDeMesbK7GyrD8ngI85RlJMTeZQCzDEx+XGfth02tD4pNXg==} @@ -11605,12 +11608,13 @@ snapshots: - immer - supports-color - '@mongodb-js/eslint-config-devtools@0.9.12(eslint@8.57.1)(typescript@5.9.3)': + '@mongodb-js/eslint-config-devtools@0.11.2(eslint@8.57.1)(typescript@5.9.3)': dependencies: '@babel/core': 7.28.5 '@babel/eslint-parser': 7.28.5(@babel/core@7.28.5)(eslint@8.57.1) '@babel/preset-env': 7.28.5(@babel/core@7.28.5) '@babel/preset-react': 7.28.5(@babel/core@7.28.5) + '@mongodb-js/eslint-plugin-devtools': 0.3.2 '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.9.3) eslint: 8.57.1 @@ -11624,6 +11628,8 @@ snapshots: - supports-color - typescript + '@mongodb-js/eslint-plugin-devtools@0.3.2': {} + '@mongodb-js/mongodb-constants@0.10.4': dependencies: semver: 7.7.3 diff --git a/src/explorer/connectionTreeItem.ts b/src/explorer/connectionTreeItem.ts index ea2d1f2a8..0edb2da63 100644 --- a/src/explorer/connectionTreeItem.ts +++ b/src/explorer/connectionTreeItem.ts @@ -215,7 +215,8 @@ export default class ConnectionTreeItem const databases = await this.listDatabases(); databases.sort((a: string, b: string) => a.localeCompare(b)); - const newChildrenCache: Record = {}; + const newChildrenCache: Record = + Object.create(null); databases.forEach((databaseName: string) => { const cachedItem = this._childrenCache[databaseName] as DatabaseTreeItem; @@ -239,7 +240,8 @@ export default class ConnectionTreeItem const processors = await this.listStreamProcessors(); processors.sort((a, b) => a.name.localeCompare(b.name)); - const newChildrenCache: Record = {}; + const newChildrenCache: Record = + Object.create(null); processors.forEach((sp) => { const cachedItem = this._childrenCache[ diff --git a/src/mcp/mcpController.ts b/src/mcp/mcpController.ts index a3df1afc4..a797da462 100644 --- a/src/mcp/mcpController.ts +++ b/src/mcp/mcpController.ts @@ -201,6 +201,7 @@ export class MCPController { const token = crypto.randomUUID(); const headers: Record = { + __proto__: null, authorization: `Bearer ${token}`, }; registerGlobalSecretToRedact(token, 'password'); diff --git a/src/test/suite/telemetry/telemetryService.test.ts b/src/test/suite/telemetry/telemetryService.test.ts index 6dbe31f3b..0816974db 100644 --- a/src/test/suite/telemetry/telemetryService.test.ts +++ b/src/test/suite/telemetry/telemetryService.test.ts @@ -596,6 +596,7 @@ suite('Telemetry Controller Test Suite', function () { } const mappedTypes: Record = { + __proto__: null, Cursor: 'query', DeleteResult: 'delete', InsertManyResult: 'insert', diff --git a/src/test/suite/views/webview-app/resources-panel.test.tsx b/src/test/suite/views/webview-app/resources-panel.test.tsx index ec0561856..75ad5a55c 100644 --- a/src/test/suite/views/webview-app/resources-panel.test.tsx +++ b/src/test/suite/views/webview-app/resources-panel.test.tsx @@ -15,7 +15,7 @@ describe('Resources panel test suite', function () { it('should render resources panel', function () { render( {}} />); - expect(() => screen.getByLabelText('Close')).to.not.throw; + expect(screen.queryByLabelText('Close')).to.not.exist; expect(screen.getAllByTestId(/link-\w+/)).to.have.length.greaterThan(0); expect( screen.getAllByTestId(/footer-feature-\w+/), From 024bb74e99197c956d160c19863da76b264ad478 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Thu, 18 Dec 2025 10:44:43 -0500 Subject: [PATCH 2/3] fixup: record typing --- src/mcp/mcpController.ts | 3 +-- src/test/suite/telemetry/telemetryService.test.ts | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/mcp/mcpController.ts b/src/mcp/mcpController.ts index a797da462..c3c8647e8 100644 --- a/src/mcp/mcpController.ts +++ b/src/mcp/mcpController.ts @@ -200,8 +200,7 @@ export class MCPController { } const token = crypto.randomUUID(); - const headers: Record = { - __proto__: null, + const headers = { authorization: `Bearer ${token}`, }; registerGlobalSecretToRedact(token, 'password'); diff --git a/src/test/suite/telemetry/telemetryService.test.ts b/src/test/suite/telemetry/telemetryService.test.ts index 0816974db..a0439d962 100644 --- a/src/test/suite/telemetry/telemetryService.test.ts +++ b/src/test/suite/telemetry/telemetryService.test.ts @@ -595,8 +595,7 @@ suite('Telemetry Controller Test Suite', function () { }); } - const mappedTypes: Record = { - __proto__: null, + const mappedTypes = { Cursor: 'query', DeleteResult: 'delete', InsertManyResult: 'insert', From fb9e7601f1ee7e51ed5bd237f1f26bb10e32c3b9 Mon Sep 17 00:00:00 2001 From: Rhys Howell Date: Thu, 18 Dec 2025 12:01:45 -0500 Subject: [PATCH 3/3] fixup: invert test I inverted --- src/test/suite/views/webview-app/resources-panel.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/suite/views/webview-app/resources-panel.test.tsx b/src/test/suite/views/webview-app/resources-panel.test.tsx index 75ad5a55c..335391920 100644 --- a/src/test/suite/views/webview-app/resources-panel.test.tsx +++ b/src/test/suite/views/webview-app/resources-panel.test.tsx @@ -15,7 +15,7 @@ describe('Resources panel test suite', function () { it('should render resources panel', function () { render( {}} />); - expect(screen.queryByLabelText('Close')).to.not.exist; + expect(screen.getByLabelText('Close')).to.exist; expect(screen.getAllByTestId(/link-\w+/)).to.have.length.greaterThan(0); expect( screen.getAllByTestId(/footer-feature-\w+/),