feat: schema store support - #327297
Closed
Vincent Biret (baywet) wants to merge 1 commit into
Closed
Conversation
Vincent Biret (baywet)
requested review from
TylerLeonhardt and
Alex Ross (alexr00)
as code owners
July 24, 2026 13:56
Contributor
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: Raymond Zhao (@rzhao271)Matched files:
|
Vincent Biret (baywet)
changed the base branch from
main
to
aeschli/asleep-lynx-707
July 24, 2026 13:58
Contributor
There was a problem hiding this comment.
Pull request overview
Adds dynamic JSON validation registries and SchemaStore catalog support to the JSON language features extension.
Changes:
- Registers and validates the
jsonValidationRegistrycontribution point. - Loads, watches, and refreshes local and remote schema registries.
- Converts internal schema associations to catalog format.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
extensionPoints.json |
Registers the contribution point. |
extensionManifestPropertiesService.ts |
Allows it in the Sessions window. |
settingsFilesystemProvider.ts |
Emits catalog-formatted associations. |
jsonValidationExtensionPoint.ts |
Defines and validates registry contributions. |
AI_CUSTOMIZATIONS.md |
Adds unrelated migration documentation. |
extensions.ts |
Adds contribution manifest types. |
package.json |
Contributes local and SchemaStore registries. |
jsonClient.ts |
Loads, watches, and refreshes registries. |
Comments suppressed due to low confidence (3)
extensions/json-language-features/client/src/jsonClient.ts:559
- The generation check only suppresses a stale notification;
getSchemaAssociations(true)replaces the shared cache before the request finishes. If an older refresh completes after a newer one, it overwritesschemaAssociationsCachewith stale extension/registry data even though its notification is skipped. Compute into a local value and commit both the cache and notification only for the current generation.
const associations = await getSchemaAssociations(true);
if (generation === schemaAssociationRefreshGeneration) {
client.sendNotification(SchemaAssociationNotification.type, associations);
}
extensions/json-language-features/client/src/jsonClient.ts:890
- SchemaStore catalog entries are forwarded as ordinary associations. The dependent
vscode-json-languageservice#342change only gives explicit$schemaand configured schemas precedence when an association hassource: 'schemaStore'; without that marker, catalog schemas can be combined with explicit/configured schemas and produce conflicting diagnostics. Preserve a registry kind/source through the contribution API and emit it here, while leaving the dynamicvscode://schemas-associationsregistry as a normal association.
result.push({
fileMatch: schema.fileMatch,
uri: schema.url
});
extensions/json-language-features/client/src/jsonClient.ts:862
registrysis a misspelling and makes the collection name harder to scan. Use the standard pluralregistriesconsistently.
const registrys = extension.packageJSON?.contributes?.jsonValidationRegistry;
if (Array.isArray(registrys)) {
for (const registry of registrys) {
Comment on lines
+812
to
+814
| async function computeSchemaAssociations(getRegistryContent: (uri: string) => Promise<string>): Promise<ISchemaAssociation[]> { | ||
| const extensionAssociations = getSchemaExtensionAssociations(); | ||
| return extensionAssociations.concat(await getSchemaRegistryAssociations()); | ||
| return extensionAssociations.concat(await getSchemaRegistryAssociations(getRegistryContent)); |
Martin Aeschlimann (aeschli)
deleted the branch
microsoft:aeschli/asleep-lynx-707
July 24, 2026 21:31
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.
closes #325970 depends on #327104