Skip to content

Commit eb1508b

Browse files
committed
Update for @hyperjump/json-schema experimental API changes
1 parent b12a136 commit eb1508b

File tree

13 files changed

+144
-1585
lines changed

13 files changed

+144
-1585
lines changed

language-server/src/features/completion/keyword-completion.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export class KeywordCompletionProvider {
1818
const schemaNode = node.parent?.parent;
1919
if (schemaNode && SchemaNode.typeOf(schemaNode) === "object" && schemaNode?.isSchema && schemaNode.dialectUri) {
2020
const dialect = getDialect(schemaNode.dialectUri);
21-
const keywords = Object.keys(dialect);
21+
const keywords = Object.keys(dialect.keywords);
2222
completions.push(...keywords.map((keyword) => ({
2323
label: keyword,
2424
kind: CompletionItemKind.Value

language-server/src/features/validate-schema.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { DiagnosticSeverity } from "vscode-languageserver";
2-
import { BASIC, compile, getSchema, hasDialect, hasVocabulary, interpret } from "@hyperjump/json-schema/experimental";
2+
import { BASIC, compile, getSchema, hasDialect, hasVocabulary } from "@hyperjump/json-schema/experimental";
33
import * as SchemaNode from "../model/schema-node.js";
44
import { keywordNameFor } from "../util/util.js";
5+
import { interpret, ValidationError } from "@hyperjump/json-schema/annotations/experimental";
56

67
/**
78
* @import { Server } from "../services/server.js";
@@ -93,18 +94,17 @@ export class ValidateSchemaFeature {
9394
try {
9495
const schema = await getSchema(schemaResource.dialectUri);
9596
const compiled = await compile(schema);
96-
const output = interpret(compiled, schemaResource, BASIC);
97-
if (output.errors) {
98-
for (const error of output.errors) {
97+
interpret(compiled, schemaResource, BASIC);
98+
} catch (error) {
99+
if (error instanceof ValidationError) {
100+
for (const outputUnit of error.output.errors ?? []) {
99101
schemaDocument.errors.push({
100-
keyword: error.keyword,
101-
keywordNode: await getSchema(error.absoluteKeywordLocation),
102-
instanceNode: /** @type SchemaNodeType */ (this.#schemas.getSchemaNode(error.instanceLocation, schemaResource))
102+
keyword: outputUnit.keyword,
103+
keywordNode: await getSchema(outputUnit.absoluteKeywordLocation),
104+
instanceNode: /** @type SchemaNodeType */ (this.#schemas.getSchemaNode(outputUnit.instanceLocation, schemaResource))
103105
});
104106
}
105-
}
106-
} catch (error) {
107-
if (error instanceof Error) {
107+
} else if (error instanceof Error) {
108108
schemaDocument.errors.push({
109109
keyword: "",
110110
instanceNode: schemaDocument.schemaResources[0],

0 commit comments

Comments
 (0)