Skip to content

refactor: Step 7.1 — migrate shared completion logic to query-language/#551

Merged
tnaum-ms merged 2 commits intofeature/shell-integrationfrom
refactor/07.1-shared-completion-migration
Apr 2, 2026
Merged

refactor: Step 7.1 — migrate shared completion logic to query-language/#551
tnaum-ms merged 2 commits intofeature/shell-integrationfrom
refactor/07.1-shared-completion-migration

Conversation

@tnaum-ms
Copy link
Copy Markdown
Collaborator

@tnaum-ms tnaum-ms commented Apr 2, 2026

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:

Phase Move Files
1–5 webviews/documentdbQuery/shared/documentdb/query-language/shared/ 11 files (platform-neutral core)
6 documentdb/scratchpad/completions/documentdb/query-language/scratchpad-completions/ 8 files (VS Code API specific)
7 webviews/documentdbQuery/webviews/query-language-support/ 25 files (rename, Monaco specific)

Final Directory Structure

src/documentdb/query-language/
  shared/                         # Platform-neutral core (no Monaco, no VS Code)
  scratchpad-completions/         # VS Code API specific (extension host)

src/webviews/query-language-support/  # Monaco specific (webview)

Verification

  • npm run build
  • npm run lint
  • npm run prettier-fix
  • 373 tests across 13 suites ✅

Notes

  • All moves used git mv to preserve history (98–100% similarity detected)
  • Import paths updated across 20 files total
  • No path aliases needed (deepest relative path is 3 levels)
  • Plan file docs/plan/07.1-shared-completion-migration.md updated locally (gitignored by convention)

tnaum-ms added 2 commits April 2, 2026 12:55
…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.
@tnaum-ms tnaum-ms requested a review from a team as a code owner April 2, 2026 14:01
@tnaum-ms tnaum-ms mentioned this pull request Apr 2, 2026
17 tasks
@tnaum-ms tnaum-ms requested a review from Copilot April 2, 2026 14:02
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@tnaum-ms tnaum-ms merged commit f3632b8 into feature/shell-integration Apr 2, 2026
9 checks passed
@tnaum-ms tnaum-ms deleted the refactor/07.1-shared-completion-migration branch April 2, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants