refactor: Step 7.1 — migrate shared completion logic to query-language/#551
Merged
tnaum-ms merged 2 commits intofeature/shell-integrationfrom Apr 2, 2026
Merged
Conversation
…ebview folder Phase 6: Move src/documentdb/scratchpad/completions/ to src/documentdb/query-language/scratchpad-completions/ - 8 files moved (4 source + 4 tdd) - 6 import paths updated Phase 7: Rename src/webviews/documentdbQuery/ to src/webviews/query-language-support/ - 2 external import paths updated (CollectionView, QueryEditor) - All internal relative imports unchanged Three-way split now visible: - query-language/shared/ — platform-neutral core - query-language/scratchpad-completions/ — VS Code API specific - webviews/query-language-support/ — Monaco specific No functionality changes. Build, lint, 373 tests pass.
Contributor
There was a problem hiding this comment.
Pull request overview
Refactors the query-language completion/hover/validation code by moving platform-neutral logic into src/documentdb/query-language/shared/ and renaming/re-homing the Monaco (webview) implementation under src/webviews/query-language-support/, with scratchpad (VS Code) providers updated to consume the new shared modules.
Changes:
- Migrates shared completion primitives (cursor context detection, snippet/sort helpers, JS globals, type suggestion data) into
src/documentdb/query-language/shared/. - Renames/restructures the webview Monaco implementation into
src/webviews/query-language-support/and updates imports/exports accordingly. - Updates scratchpad completion/hover providers and adds/updates TDD/spec docs and Jest suites for the new layout.
Reviewed changes
Copilot reviewed 17 out of 47 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| src/webviews/query-language-support/tdd/README.md | Adds TDD folder README for Monaco behavior contract tests. |
| src/webviews/query-language-support/tdd/readme.completionBehavior.md | Adds completion behavior specification doc for cursor positions/sort rules. |
| src/webviews/query-language-support/tdd/completionBehavior.test.ts | Updates TDD test imports to shared cursor context location. |
| src/webviews/query-language-support/registerLanguage.ts | Updates imports to shared cursor/extract logic; wires completion + hover providers. |
| src/webviews/query-language-support/languageConfig.ts | Introduces Monaco language constants + URI helpers. |
| src/webviews/query-language-support/languageConfig.test.ts | Adds tests for language config/URI helpers. |
| src/webviews/query-language-support/isCursorInsideString.ts | Adds heuristic for suppressing triggers inside string literals. |
| src/webviews/query-language-support/isCursorInsideString.test.ts | Adds tests for string-literal cursor detection. |
| src/webviews/query-language-support/index.ts | Re-exports public webview API; updates shared cursor context export path. |
| src/webviews/query-language-support/extractQuotedKey.test.ts | Updates tests to import extractQuotedKey from new shared location. |
| src/webviews/query-language-support/documentdbQueryValidator.ts | Adds query expression validator producing diagnostics (acorn-based). |
| src/webviews/query-language-support/documentdbQueryValidator.test.ts | Adds validator test coverage (syntax + near-miss detection). |
| src/webviews/query-language-support/documentdbQueryHoverProvider.ts | Adds hover content generation for operators/BSON/fields. |
| src/webviews/query-language-support/documentdbQueryHoverProvider.test.ts | Adds hover provider tests (operators + fields). |
| src/webviews/query-language-support/documentdbQueryCompletionProvider.ts | Preserves legacy import path via barrel re-export to completions/. |
| src/webviews/query-language-support/documentdbQueryCompletionProvider.test.ts | Updates tests to import CursorContext type from shared location. |
| src/webviews/query-language-support/cursorContext.test.ts | Updates tests to use shared cursor context module. |
| src/webviews/query-language-support/completionStore.ts | Adds in-webview session-scoped field completion context store. |
| src/webviews/query-language-support/completionStore.test.ts | Adds tests for completion context store behavior. |
| src/webviews/query-language-support/completions/typeSuggestions.ts | Switches to shared snippet/type suggestion data modules. |
| src/webviews/query-language-support/completions/README.md | Documents completion module architecture and sort contracts. |
| src/webviews/query-language-support/completions/mapCompletionItems.ts | Updates imports to shared snippet + sort prefix utilities. |
| src/webviews/query-language-support/completions/jsGlobals.ts | Updates imports to shared JS globals/snippet utils. |
| src/webviews/query-language-support/completions/index.ts | Re-exports shared + Monaco-specific completion modules. |
| src/webviews/query-language-support/completions/createCompletionItems.ts | Updates imports to shared cursor context + completion knowledge. |
| src/webviews/documentdb/collectionView/components/queryEditor/QueryEditor.tsx | Switches imports to query-language-support module entrypoint. |
| src/webviews/documentdb/collectionView/CollectionView.tsx | Switches setCompletionContext import to query-language-support. |
| src/documentdb/query-language/shared/typeSuggestionData.ts | Adds platform-neutral type suggestion definitions + lookup. |
| src/documentdb/query-language/shared/types.ts | Adds platform-neutral completion data type contracts. |
| src/documentdb/query-language/shared/tdd/sharedCompletionLogic.test.ts | Adds shared-logic TDD contract tests (sort/snippets/types/globals). |
| src/documentdb/query-language/shared/tdd/README.md | Adds README describing shared completion TDD contract tests. |
| src/documentdb/query-language/shared/sortPrefixes.ts | Adds platform-neutral operator sort prefix + category label helpers. |
| src/documentdb/query-language/shared/snippetUtils.ts | Adds platform-neutral snippet manipulation helpers. |
| src/documentdb/query-language/shared/jsGlobalDefs.ts | Adds platform-neutral JS global definitions for completion providers. |
| src/documentdb/query-language/shared/index.ts | Adds shared barrel export for platform-neutral modules/types. |
| src/documentdb/query-language/shared/extractQuotedKey.ts | Adds shared quoted-key extraction for hover range highlighting. |
| src/documentdb/query-language/shared/cursorContext.ts | Adds platform-neutral cursor context detection for query expressions. |
| src/documentdb/query-language/shared/completionKnowledge.ts | Adds shared curated completion “knowledge” constants (key operators, placeholders). |
| src/documentdb/query-language/scratchpad-completions/tdd/scratchpadContextDetector.test.ts | Adds scratchpad cursor context TDD contract tests (JS-level). |
| src/documentdb/query-language/scratchpad-completions/tdd/README.md | Adds scratchpad completion TDD folder README. |
| src/documentdb/query-language/scratchpad-completions/tdd/hoverAndEdgeCases.test.ts | Adds scratchpad hover + edge-case TDD contract tests. |
| src/documentdb/query-language/scratchpad-completions/tdd/dynamicSchemaIntegration.test.ts | Adds scratchpad dynamic schema integration TDD tests. |
| src/documentdb/query-language/scratchpad-completions/ScratchpadHoverProvider.ts | Updates imports to new shared/query-language + scratchpad locations. |
| src/documentdb/query-language/scratchpad-completions/scratchpadContextDetector.ts | Adds scratchpad JS-level cursor context detector (member-chain + strings). |
| src/documentdb/query-language/scratchpad-completions/ScratchpadCompletionItemProvider.ts | Updates to import shared query-language primitives from new location. |
| src/documentdb/query-language/scratchpad-completions/CollectionNameCache.ts | Updates ScratchpadService import to new scratchpad location. |
| src/documentdb/ClustersExtension.ts | Updates scratchpad completion/hover provider import paths to new folder. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Step 7.1: Full Shared Completion Logic Migration
No functionality changes. Pure structural refactoring to establish a clean organizational boundary for query-language completion code.
What Changed
Three-phase migration moving completion logic into a cohesive
query-language/directory:webviews/documentdbQuery/shared/→documentdb/query-language/shared/documentdb/scratchpad/completions/→documentdb/query-language/scratchpad-completions/webviews/documentdbQuery/→webviews/query-language-support/Final Directory Structure
Verification
npm run build✅npm run lint✅npm run prettier-fix✅Notes
git mvto preserve history (98–100% similarity detected)docs/plan/07.1-shared-completion-migration.mdupdated locally (gitignored by convention)