Skip to content

Commit c84482b

Browse files
authored
chore: use erasable syntax and reorganize constant naming (#1175)
1 parent 9312f49 commit c84482b

File tree

82 files changed

+1020
-960
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+1020
-960
lines changed

.github/workflows/test-and-build.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,25 @@ jobs:
3131
with:
3232
fetch-depth: 0
3333

34+
- name: Get VS Code Node.js version
35+
id: get-vscode-node-version
36+
shell: bash
37+
run: |
38+
# Fetch Node.js version from VS Code's .nvmrc, default to 22.20.0 if unavailable
39+
NODE_VERSION=$(curl -fsSL https://raw.githubusercontent.com/microsoft/vscode/main/.nvmrc | tr -d '[:space:]')
40+
if [ -z "$NODE_VERSION" ]; then
41+
NODE_VERSION="22.20.0"
42+
fi
43+
echo "Using Node.js version for VS Code extension tests: $NODE_VERSION"
44+
echo "vscode-node-version=$NODE_VERSION" >> $GITHUB_OUTPUT
45+
3446
- name: Setup pnpm
3547
uses: pnpm/action-setup@v4
3648

3749
- name: Setup Node.js Environment
3850
uses: actions/setup-node@v4
3951
with:
40-
node-version: 22.15.1
52+
node-version: ${{ steps.get-vscode-node-version.outputs.vscode-node-version }}
4153
cache: pnpm
4254

4355
- name: Run tests and build

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@
4242
"scripts": {
4343
"clean": "rimraf -g ./out/* ./dist/*",
4444
"lint": "eslint . && prettier --check .",
45-
"update-grammar": "ts-node ./scripts/update-grammar.ts",
45+
"update-grammar": "node ./scripts/update-grammar.ts",
4646
"precompile": "pnpm run clean",
4747
"compile": "npm-run-all compile:*",
48-
"compile:constants": "ts-node ./scripts/generate-constants.ts",
48+
"compile:constants": "node ./scripts/generate-constants.ts",
4949
"compile:resources": "pnpm run update-grammar",
5050
"compile:extension": "tsc -p ./",
5151
"compile:extension-bundles": "webpack --mode development",
@@ -63,15 +63,15 @@
6363
"depcheck": "depcheck",
6464
"package": "cross-env NODE_OPTIONS='--require ./scripts/no-npm-list-fail.js' vsce package --githubBranch main",
6565
"local-install": "pnpm run package && code --install-extension ./mongodb-vscode-*.vsix",
66-
"check-vsix-size": "ts-node ./scripts/check-vsix-size.ts",
66+
"check-vsix-size": "node ./scripts/check-vsix-size.ts",
6767
"release-draft": "node ./scripts/release-draft.js",
6868
"reformat": "prettier --write .",
6969
"snyk-test": "node scripts/snyk-test.js",
70-
"generate-icon-font": "ts-node ./scripts/generate-icon-font.ts",
70+
"generate-icon-font": "node ./scripts/generate-icon-font.ts",
7171
"generate-vulnerability-report": "mongodb-sbom-tools generate-vulnerability-report --snyk-reports=.sbom/snyk-test-result.json --dependencies=.sbom/dependencies.json --fail-on=high",
7272
"create-vulnerability-tickets": "mongodb-sbom-tools generate-vulnerability-report --snyk-reports=.sbom/snyk-test-result.json --dependencies=.sbom/dependencies.json --create-jira-issues",
7373
"prepare": "husky",
74-
"precommit": "ts-node ./scripts/precommit.ts"
74+
"precommit": "node ./scripts/precommit.ts"
7575
},
7676
"engines": {
7777
"vscode": "^1.101.1",

scripts/check-vsix-size.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import fs from 'fs';
22
import path from 'path';
3+
import { fileURLToPath } from 'url';
4+
5+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
36

47
const version = JSON.parse(
58
fs.readFileSync(path.resolve(__dirname, '..', 'package.json')).toString(),

scripts/generate-constants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
#! /usr/bin/env ts-node
1+
#! /usr/bin/env node
22

33
import ora from 'ora';
44
import fs from 'fs';
55
import path from 'path';
66
import { resolve } from 'path';
77
import { config } from 'dotenv';
88
import { promisify } from 'util';
9+
import { fileURLToPath } from 'url';
910

1011
const writeFile = promisify(fs.writeFile);
12+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
1113
const ROOT_DIR = path.join(__dirname, '..');
1214
const ui = ora('Generate constants file').start();
1315

scripts/generate-icon-font.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import webfont from 'webfont';
1+
import { webfont } from 'webfont';
22
import fs from 'fs/promises';
3-
import { GlyphData } from 'webfont/dist/src/types';
43
import prettier from 'prettier';
4+
import path from 'path';
55

66
/** Icons to include in the generated icon font */
77
const INCLUDED_ICONS = [
@@ -61,14 +61,14 @@ async function main(): Promise<void> {
6161
const prettierConfig = await prettier.resolveConfig('./.prettierrc.json');
6262
await fs.writeFile(
6363
'./package.json',
64-
prettier.format(JSON.stringify(currentConfiguration), {
64+
await prettier.format(JSON.stringify(currentConfiguration), {
6565
...prettierConfig,
6666
parser: 'json-stringify',
6767
}),
6868
);
6969
}
7070

71-
function getUnicodeHex(glyph: GlyphData): string {
71+
function getUnicodeHex(glyph: any): string {
7272
if (glyph.metadata?.unicode == undefined) {
7373
throw new Error('No unicode defined');
7474
}

scripts/precommit.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
#! /usr/bin/env ts-node
1+
#! /usr/bin/env node
22
/* eslint-disable no-console */
33

44
import path from 'path';
55
import { promisify } from 'util';
66
import { execFile } from 'child_process';
7+
import prettier from '@mongodb-js/prettier-config-devtools/.prettierrc.json' with { type: 'json' };
78
const execFileAsync = promisify(execFile);
89

10+
import { createRequire } from 'module';
11+
const require = createRequire(import.meta.url);
12+
913
async function main(fileList: string[]) {
1014
if (fileList.length === 0) {
1115
console.log('No files to re-format. Skipping ...');
@@ -20,7 +24,7 @@ async function main(fileList: string[]) {
2024
await execFileAsync('npx', [
2125
'prettier',
2226
'--config',
23-
require.resolve('@mongodb-js/prettier-config-devtools/.prettierrc.json'),
27+
require.resolve(prettier),
2428
// Silently ignore files that are of format that is not supported by prettier.
2529
'--ignore-unknown',
2630
'--write',

scripts/update-grammar.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import mkdirp from 'mkdirp';
33
import ora from 'ora';
44
import fs from 'fs';
55
import { promisify } from 'util';
6+
import { fileURLToPath } from 'url';
67

78
import {
89
ACCUMULATORS,
@@ -12,6 +13,8 @@ import {
1213
STAGE_OPERATORS,
1314
} from '@mongodb-js/mongodb-constants';
1415

16+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
17+
1518
const writeFile = promisify(fs.writeFile);
1619
const SYNTAXES_DIR = path.join(__dirname, '..', 'syntaxes');
1720

src/commands/index.ts

Lines changed: 83 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,99 @@
1-
enum EXTENSION_COMMANDS {
2-
MDB_CONNECT = 'mdb.connect',
3-
MDB_CONNECT_WITH_URI = 'mdb.connectWithURI',
4-
MDB_OPEN_OVERVIEW_PAGE = 'mdb.openOverviewPage',
5-
MDB_DISCONNECT = 'mdb.disconnect',
6-
MDB_REMOVE_CONNECTION = 'mdb.removeConnection',
1+
export const ExtensionCommand = {
2+
mdbConnect: 'mdb.connect',
3+
mdbConnectWithUri: 'mdb.connectWithURI',
4+
mdbOpenOverviewPage: 'mdb.openOverviewPage',
5+
mdbDisconnect: 'mdb.disconnect',
6+
mdbRemoveConnection: 'mdb.removeConnection',
77

8-
OPEN_MONGODB_ISSUE_REPORTER = 'mdb.openMongoDBIssueReporter',
8+
openMongodbIssueReporter: 'mdb.openMongoDBIssueReporter',
99

10-
MDB_OPEN_MDB_SHELL = 'mdb.openMongoDBShell',
11-
MDB_OPEN_MDB_SHELL_FROM_TREE_VIEW = 'mdb.treeViewOpenMongoDBShell',
10+
mdbOpenMdbShell: 'mdb.openMongoDBShell',
11+
mdbOpenMdbShellFromTreeView: 'mdb.treeViewOpenMongoDBShell',
1212

13-
MDB_CREATE_PLAYGROUND = 'mdb.createPlayground',
14-
MDB_CREATE_PLAYGROUND_FROM_OVERVIEW_PAGE = 'mdb.createNewPlaygroundFromOverviewPage',
15-
MDB_RUN_SELECTED_PLAYGROUND_BLOCKS = 'mdb.runSelectedPlaygroundBlocks',
16-
MDB_RUN_ALL_PLAYGROUND_BLOCKS = 'mdb.runAllPlaygroundBlocks',
17-
MDB_RUN_ALL_OR_SELECTED_PLAYGROUND_BLOCKS = 'mdb.runPlayground',
18-
MDB_EXPORT_CODE_TO_PLAYGROUND = 'mdb.exportCodeToPlayground',
13+
mdbCreatePlayground: 'mdb.createPlayground',
14+
mdbCreatePlaygroundFromOverviewPage:
15+
'mdb.createNewPlaygroundFromOverviewPage',
16+
mdbRunSelectedPlaygroundBlocks: 'mdb.runSelectedPlaygroundBlocks',
17+
mdbRunAllPlaygroundBlocks: 'mdb.runAllPlaygroundBlocks',
18+
mdbRunAllOrSelectedPlaygroundBlocks: 'mdb.runPlayground',
19+
mdbExportCodeToPlayground: 'mdb.exportCodeToPlayground',
1920

20-
MDB_FIX_THIS_INVALID_INTERACTIVE_SYNTAX = 'mdb.fixThisInvalidInteractiveSyntax',
21-
MDB_FIX_ALL_INVALID_INTERACTIVE_SYNTAX = 'mdb.fixAllInvalidInteractiveSyntax',
21+
mdbFixThisInvalidInteractiveSyntax: 'mdb.fixThisInvalidInteractiveSyntax',
22+
mdbFixAllInvalidInteractiveSyntax: 'mdb.fixAllInvalidInteractiveSyntax',
2223

23-
MDB_SELECT_TARGET_FOR_EXPORT_TO_LANGUAGE = 'mdb.selectTargetForExportToLanguage',
24-
MDB_EXPORT_TO_LANGUAGE = 'mdb.exportToLanguage',
25-
MDB_CHANGE_DRIVER_SYNTAX_FOR_EXPORT_TO_LANGUAGE = 'mdb.changeDriverSyntaxForExportToLanguage',
24+
mdbSelectTargetForExportToLanguage: 'mdb.selectTargetForExportToLanguage',
25+
mdbExportToLanguage: 'mdb.exportToLanguage',
26+
mdbChangeDriverSyntaxForExportToLanguage:
27+
'mdb.changeDriverSyntaxForExportToLanguage',
2628

27-
MDB_OPEN_MONGODB_DOCUMENT_FROM_CODE_LENS = 'mdb.openMongoDBDocumentFromCodeLens',
28-
MDB_OPEN_MONGODB_DOCUMENT_FROM_TREE = 'mdb.openMongoDBDocumentFromTree',
29-
MDB_SAVE_MONGODB_DOCUMENT = 'mdb.saveMongoDBDocument',
29+
mdbOpenMongodbDocumentFromCodeLens: 'mdb.openMongoDBDocumentFromCodeLens',
30+
mdbOpenMongodbDocumentFromTree: 'mdb.openMongoDBDocumentFromTree',
31+
mdbSaveMongodbDocument: 'mdb.saveMongoDBDocument',
3032

31-
MDB_CHANGE_ACTIVE_CONNECTION = 'mdb.changeActiveConnection',
33+
mdbChangeActiveConnection: 'mdb.changeActiveConnection',
3234

33-
MDB_CODELENS_SHOW_MORE_DOCUMENTS = 'mdb.codeLens.showMoreDocumentsClicked',
35+
mdbCodelensShowMoreDocuments: 'mdb.codeLens.showMoreDocumentsClicked',
3436

3537
// Commands from the tree view.
36-
MDB_ADD_CONNECTION = 'mdb.addConnection',
37-
MDB_ADD_CONNECTION_WITH_URI = 'mdb.addConnectionWithURI',
38-
MDB_REFRESH_PLAYGROUNDS_FROM_TREE_VIEW = 'mdb.refreshPlaygroundsFromTreeView',
39-
MDB_OPEN_PLAYGROUND_FROM_TREE_VIEW = 'mdb.openPlaygroundFromTreeView',
40-
MDB_CONNECT_TO_CONNECTION_TREE_VIEW = 'mdb.connectToConnectionTreeItem',
41-
MDB_CREATE_PLAYGROUND_FROM_TREE_VIEW = 'mdb.createNewPlaygroundFromTreeView',
42-
MDB_CREATE_PLAYGROUND_FROM_TREE_ITEM = 'mdb.createNewPlaygroundFromTreeItem',
43-
MDB_DISCONNECT_FROM_CONNECTION_TREE_VIEW = 'mdb.disconnectFromConnectionTreeItem',
44-
MDB_EDIT_CONNECTION = 'mdb.editConnection',
45-
MDB_REFRESH_CONNECTION = 'mdb.refreshConnection',
46-
MDB_COPY_CONNECTION_STRING = 'mdb.copyConnectionString',
47-
MDB_EDIT_PRESET_CONNECTIONS = 'mdb.editPresetConnections',
48-
MDB_REMOVE_CONNECTION_TREE_VIEW = 'mdb.treeItemRemoveConnection',
49-
MDB_RENAME_CONNECTION = 'mdb.renameConnection',
50-
MDB_ADD_DATABASE = 'mdb.addDatabase',
51-
MDB_SEARCH_FOR_DOCUMENTS = 'mdb.searchForDocuments',
52-
MDB_COPY_DATABASE_NAME = 'mdb.copyDatabaseName',
53-
MDB_DROP_DATABASE = 'mdb.dropDatabase',
54-
MDB_REFRESH_DATABASE = 'mdb.refreshDatabase',
55-
MDB_ADD_COLLECTION = 'mdb.addCollection',
56-
MDB_COPY_COLLECTION_NAME = 'mdb.copyCollectionName',
57-
MDB_DROP_COLLECTION = 'mdb.dropCollection',
58-
MDB_VIEW_COLLECTION_DOCUMENTS = 'mdb.viewCollectionDocuments',
59-
MDB_REFRESH_COLLECTION = 'mdb.refreshCollection',
60-
MDB_REFRESH_DOCUMENT_LIST = 'mdb.refreshDocumentList',
61-
MDB_INSERT_DOCUMENT_FROM_TREE_VIEW = 'mdb.insertDocumentFromTreeView',
62-
MDB_REFRESH_SCHEMA = 'mdb.refreshSchema',
63-
MDB_COPY_SCHEMA_FIELD_NAME = 'mdb.copySchemaFieldName',
64-
MDB_REFRESH_INDEXES = 'mdb.refreshIndexes',
65-
MDB_CREATE_INDEX_TREE_VIEW = 'mdb.createIndexFromTreeView',
66-
MDB_INSERT_OBJECTID_TO_EDITOR = 'mdb.insertObjectIdToEditor',
67-
MDB_GENERATE_OBJECTID_TO_CLIPBOARD = 'mdb.generateObjectIdToClipboard',
68-
MDB_COPY_DOCUMENT_CONTENTS_FROM_TREE_VIEW = 'mdb.copyDocumentContentsFromTreeView',
69-
MDB_CLONE_DOCUMENT_FROM_TREE_VIEW = 'mdb.cloneDocumentFromTreeView',
70-
MDB_DELETE_DOCUMENT_FROM_TREE_VIEW = 'mdb.deleteDocumentFromTreeView',
71-
MDB_ADD_STREAM_PROCESSOR = 'mdb.addStreamProcessor',
72-
MDB_START_STREAM_PROCESSOR = 'mdb.startStreamProcessor',
73-
MDB_STOP_STREAM_PROCESSOR = 'mdb.stopStreamProcessor',
74-
MDB_DROP_STREAM_PROCESSOR = 'mdb.dropStreamProcessor',
38+
mdbAddConnection: 'mdb.addConnection',
39+
mdbAddConnectionWithUri: 'mdb.addConnectionWithURI',
40+
mdbRefreshPlaygroundsFromTreeView: 'mdb.refreshPlaygroundsFromTreeView',
41+
mdbOpenPlaygroundFromTreeView: 'mdb.openPlaygroundFromTreeView',
42+
mdbConnectToConnectionTreeView: 'mdb.connectToConnectionTreeItem',
43+
mdbCreatePlaygroundFromTreeView: 'mdb.createNewPlaygroundFromTreeView',
44+
mdbCreatePlaygroundFromTreeItem: 'mdb.createNewPlaygroundFromTreeItem',
45+
mdbDisconnectFromConnectionTreeView: 'mdb.disconnectFromConnectionTreeItem',
46+
mdbEditConnection: 'mdb.editConnection',
47+
mdbRefreshConnection: 'mdb.refreshConnection',
48+
mdbCopyConnectionString: 'mdb.copyConnectionString',
49+
mdbEditPresetConnections: 'mdb.editPresetConnections',
50+
mdbRemoveConnectionTreeView: 'mdb.treeItemRemoveConnection',
51+
mdbRenameConnection: 'mdb.renameConnection',
52+
mdbAddDatabase: 'mdb.addDatabase',
53+
mdbSearchForDocuments: 'mdb.searchForDocuments',
54+
mdbCopyDatabaseName: 'mdb.copyDatabaseName',
55+
mdbDropDatabase: 'mdb.dropDatabase',
56+
mdbRefreshDatabase: 'mdb.refreshDatabase',
57+
mdbAddCollection: 'mdb.addCollection',
58+
mdbCopyCollectionName: 'mdb.copyCollectionName',
59+
mdbDropCollection: 'mdb.dropCollection',
60+
mdbViewCollectionDocuments: 'mdb.viewCollectionDocuments',
61+
mdbRefreshCollection: 'mdb.refreshCollection',
62+
mdbRefreshDocumentList: 'mdb.refreshDocumentList',
63+
mdbInsertDocumentFromTreeView: 'mdb.insertDocumentFromTreeView',
64+
mdbRefreshSchema: 'mdb.refreshSchema',
65+
mdbCopySchemaFieldName: 'mdb.copySchemaFieldName',
66+
mdbRefreshIndexes: 'mdb.refreshIndexes',
67+
mdbCreateIndexTreeView: 'mdb.createIndexFromTreeView',
68+
mdbInsertObjectidToEditor: 'mdb.insertObjectIdToEditor',
69+
mdbGenerateObjectidToClipboard: 'mdb.generateObjectIdToClipboard',
70+
mdbCopyDocumentContentsFromTreeView: 'mdb.copyDocumentContentsFromTreeView',
71+
mdbCloneDocumentFromTreeView: 'mdb.cloneDocumentFromTreeView',
72+
mdbDeleteDocumentFromTreeView: 'mdb.deleteDocumentFromTreeView',
73+
mdbAddStreamProcessor: 'mdb.addStreamProcessor',
74+
mdbStartStreamProcessor: 'mdb.startStreamProcessor',
75+
mdbStopStreamProcessor: 'mdb.stopStreamProcessor',
76+
mdbDropStreamProcessor: 'mdb.dropStreamProcessor',
7577

7678
// Chat participant.
77-
OPEN_PARTICIPANT_CODE_IN_PLAYGROUND = 'mdb.openParticipantCodeInPlayground',
78-
SEND_MESSAGE_TO_PARTICIPANT = 'mdb.sendMessageToParticipant',
79-
SEND_MESSAGE_TO_PARTICIPANT_FROM_INPUT = 'mdb.sendMessageToParticipantFromInput',
80-
ASK_COPILOT_FROM_TREE_ITEM = 'mdb.askCopilotFromTreeItem',
81-
RUN_PARTICIPANT_CODE = 'mdb.runParticipantCode',
82-
CONNECT_WITH_PARTICIPANT = 'mdb.connectWithParticipant',
83-
SELECT_DATABASE_WITH_PARTICIPANT = 'mdb.selectDatabaseWithParticipant',
84-
SELECT_COLLECTION_WITH_PARTICIPANT = 'mdb.selectCollectionWithParticipant',
85-
PARTICIPANT_OPEN_RAW_SCHEMA_OUTPUT = 'mdb.participantViewRawSchemaOutput',
86-
SHOW_EXPORT_TO_LANGUAGE_RESULT = 'mdb.showExportToLanguageResult',
79+
openParticipantCodeInPlayground: 'mdb.openParticipantCodeInPlayground',
80+
sendMessageToParticipant: 'mdb.sendMessageToParticipant',
81+
sendMessageToParticipantFromInput: 'mdb.sendMessageToParticipantFromInput',
82+
askCopilotFromTreeItem: 'mdb.askCopilotFromTreeItem',
83+
runParticipantCode: 'mdb.runParticipantCode',
84+
connectWithParticipant: 'mdb.connectWithParticipant',
85+
selectDatabaseWithParticipant: 'mdb.selectDatabaseWithParticipant',
86+
selectCollectionWithParticipant: 'mdb.selectCollectionWithParticipant',
87+
participantOpenRawSchemaOutput: 'mdb.participantViewRawSchemaOutput',
88+
showExportToLanguageResult: 'mdb.showExportToLanguageResult',
8789

8890
// MCP Server commands.
89-
START_MCP_SERVER = 'mdb.startMCPServer',
90-
STOP_MCP_SERVER = 'mdb.stopMCPServer',
91-
GET_MCP_SERVER_CONFIG = 'mdb.getMCPServerConfig',
92-
}
91+
startMcpServer: 'mdb.startMCPServer',
92+
stopMcpServer: 'mdb.stopMCPServer',
93+
getMcpServerConfig: 'mdb.getMCPServerConfig',
94+
} as const;
9395

94-
export type ExtensionCommand = EXTENSION_COMMANDS;
96+
export type ExtensionCommand =
97+
(typeof ExtensionCommand)[keyof typeof ExtensionCommand];
9598

96-
export default EXTENSION_COMMANDS;
99+
export default ExtensionCommand;

0 commit comments

Comments
 (0)