@lapidist/dtif-language-server 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -0
- package/dist/code-actions.d.ts +11 -0
- package/dist/code-actions.d.ts.map +1 -0
- package/dist/code-actions.js +106 -0
- package/dist/code-actions.js.map +1 -0
- package/dist/core/documents/analysis-store.d.ts +27 -0
- package/dist/core/documents/analysis-store.d.ts.map +1 -0
- package/dist/core/documents/analysis-store.js +83 -0
- package/dist/core/documents/analysis-store.js.map +1 -0
- package/dist/core/documents/analyzer.d.ts +4 -0
- package/dist/core/documents/analyzer.d.ts.map +1 -0
- package/dist/core/documents/analyzer.js +147 -0
- package/dist/core/documents/analyzer.js.map +1 -0
- package/dist/core/documents/queries.d.ts +15 -0
- package/dist/core/documents/queries.d.ts.map +1 -0
- package/dist/core/documents/queries.js +52 -0
- package/dist/core/documents/queries.js.map +1 -0
- package/dist/core/documents/ranges.d.ts +9 -0
- package/dist/core/documents/ranges.d.ts.map +1 -0
- package/dist/core/documents/ranges.js +32 -0
- package/dist/core/documents/ranges.js.map +1 -0
- package/dist/core/documents/types.d.ts +23 -0
- package/dist/core/documents/types.d.ts.map +1 -0
- package/dist/core/documents/types.js +2 -0
- package/dist/core/documents/types.js.map +1 -0
- package/dist/core/json-tree.d.ts +3 -0
- package/dist/core/json-tree.d.ts.map +1 -0
- package/dist/core/json-tree.js +17 -0
- package/dist/core/json-tree.js.map +1 -0
- package/dist/core/utils/object.d.ts +2 -0
- package/dist/core/utils/object.d.ts.map +1 -0
- package/dist/core/utils/object.js +4 -0
- package/dist/core/utils/object.js.map +1 -0
- package/dist/diagnostics/constants.d.ts +2 -0
- package/dist/diagnostics/constants.d.ts.map +1 -0
- package/dist/diagnostics/constants.js +2 -0
- package/dist/diagnostics/constants.js.map +1 -0
- package/dist/diagnostics/document-validator.d.ts +12 -0
- package/dist/diagnostics/document-validator.d.ts.map +1 -0
- package/dist/diagnostics/document-validator.js +29 -0
- package/dist/diagnostics/document-validator.js.map +1 -0
- package/dist/diagnostics/index.d.ts +3 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +2 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/diagnostics/messages.d.ts +4 -0
- package/dist/diagnostics/messages.d.ts.map +1 -0
- package/dist/diagnostics/messages.js +96 -0
- package/dist/diagnostics/messages.js.map +1 -0
- package/dist/diagnostics/parsing.d.ts +15 -0
- package/dist/diagnostics/parsing.d.ts.map +1 -0
- package/dist/diagnostics/parsing.js +47 -0
- package/dist/diagnostics/parsing.js.map +1 -0
- package/dist/diagnostics/schema-diagnostics.d.ts +10 -0
- package/dist/diagnostics/schema-diagnostics.d.ts.map +1 -0
- package/dist/diagnostics/schema-diagnostics.js +44 -0
- package/dist/diagnostics/schema-diagnostics.js.map +1 -0
- package/dist/diagnostics/types.d.ts +12 -0
- package/dist/diagnostics/types.d.ts.map +1 -0
- package/dist/diagnostics/types.js +2 -0
- package/dist/diagnostics/types.js.map +1 -0
- package/dist/features/completions/extension-items.d.ts +4 -0
- package/dist/features/completions/extension-items.d.ts.map +1 -0
- package/dist/features/completions/extension-items.js +31 -0
- package/dist/features/completions/extension-items.js.map +1 -0
- package/dist/features/completions/index.d.ts +10 -0
- package/dist/features/completions/index.d.ts.map +1 -0
- package/dist/features/completions/index.js +50 -0
- package/dist/features/completions/index.js.map +1 -0
- package/dist/features/completions/registry.d.ts +10 -0
- package/dist/features/completions/registry.d.ts.map +1 -0
- package/dist/features/completions/registry.js +26 -0
- package/dist/features/completions/registry.js.map +1 -0
- package/dist/features/completions/type-items.d.ts +4 -0
- package/dist/features/completions/type-items.d.ts.map +1 -0
- package/dist/features/completions/type-items.js +61 -0
- package/dist/features/completions/type-items.js.map +1 -0
- package/dist/features/completions/unit-items.d.ts +4 -0
- package/dist/features/completions/unit-items.d.ts.map +1 -0
- package/dist/features/completions/unit-items.js +97 -0
- package/dist/features/completions/unit-items.js.map +1 -0
- package/dist/features/definition.d.ts +4 -0
- package/dist/features/definition.d.ts.map +1 -0
- package/dist/features/definition.js +12 -0
- package/dist/features/definition.js.map +1 -0
- package/dist/features/hover/markdown.d.ts +11 -0
- package/dist/features/hover/markdown.d.ts.map +1 -0
- package/dist/features/hover/markdown.js +122 -0
- package/dist/features/hover/markdown.js.map +1 -0
- package/dist/features/hover.d.ts +4 -0
- package/dist/features/hover.d.ts.map +1 -0
- package/dist/features/hover.js +26 -0
- package/dist/features/hover.js.map +1 -0
- package/dist/features/rename.d.ts +4 -0
- package/dist/features/rename.d.ts.map +1 -0
- package/dist/features/rename.js +144 -0
- package/dist/features/rename.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/package-metadata.d.ts +8 -0
- package/dist/package-metadata.d.ts.map +1 -0
- package/dist/package-metadata.js +22 -0
- package/dist/package-metadata.js.map +1 -0
- package/dist/pointer-utils.d.ts +6 -0
- package/dist/pointer-utils.d.ts.map +1 -0
- package/dist/pointer-utils.js +55 -0
- package/dist/pointer-utils.js.map +1 -0
- package/dist/runtime/documents.d.ts +12 -0
- package/dist/runtime/documents.d.ts.map +1 -0
- package/dist/runtime/documents.js +7 -0
- package/dist/runtime/documents.js.map +1 -0
- package/dist/runtime/initialize.d.ts +11 -0
- package/dist/runtime/initialize.d.ts.map +1 -0
- package/dist/runtime/initialize.js +34 -0
- package/dist/runtime/initialize.js.map +1 -0
- package/dist/runtime/services/settings-controller.d.ts +20 -0
- package/dist/runtime/services/settings-controller.d.ts.map +1 -0
- package/dist/runtime/services/settings-controller.js +53 -0
- package/dist/runtime/services/settings-controller.js.map +1 -0
- package/dist/runtime/session.d.ts +38 -0
- package/dist/runtime/session.d.ts.map +1 -0
- package/dist/runtime/session.js +120 -0
- package/dist/runtime/session.js.map +1 -0
- package/dist/runtime/utils/errors.d.ts +2 -0
- package/dist/runtime/utils/errors.d.ts.map +1 -0
- package/dist/runtime/utils/errors.js +8 -0
- package/dist/runtime/utils/errors.js.map +1 -0
- package/dist/server.d.ts +20 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +76 -0
- package/dist/server.js.map +1 -0
- package/dist/settings.d.ts +10 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +26 -0
- package/dist/settings.js.map +1 -0
- package/dist/util/markdown.d.ts +2 -0
- package/dist/util/markdown.d.ts.map +1 -0
- package/dist/util/markdown.js +4 -0
- package/dist/util/markdown.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function rangeFromNode(node, document) {
|
|
2
|
+
const start = document.positionAt(node.offset);
|
|
3
|
+
const end = document.positionAt(node.offset + Math.max(node.length, 1));
|
|
4
|
+
return { start, end };
|
|
5
|
+
}
|
|
6
|
+
export function rangeFromOffset(document, offset, length) {
|
|
7
|
+
const start = document.positionAt(offset);
|
|
8
|
+
const end = document.positionAt(offset + Math.max(length, 1));
|
|
9
|
+
return { start, end };
|
|
10
|
+
}
|
|
11
|
+
export function rangeContainsInclusive(range, position) {
|
|
12
|
+
if (isBefore(position, range.start)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (isBefore(range.end, position)) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
export function isBefore(a, b) {
|
|
21
|
+
if (a.line < b.line) {
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
if (a.line > b.line) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return a.character < b.character;
|
|
28
|
+
}
|
|
29
|
+
export function equalsPosition(a, b) {
|
|
30
|
+
return a.line === b.line && a.character === b.character;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ranges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranges.js","sourceRoot":"","sources":["../../../src/core/documents/ranges.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,aAAa,CAAC,IAAc,EAAE,QAAsB;IAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAkB,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsB,EAAE,MAAc,EAAE,MAAc;IACpF,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAkB,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAY,EAAE,QAAkB;IACrE,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAW,EAAE,CAAW;IAC/C,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,CAAW,EAAE,CAAW;IACrD,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Node as JsonNode } from 'jsonc-parser';
|
|
2
|
+
import type { Range } from 'vscode-languageserver/node.js';
|
|
3
|
+
export interface DocumentReference {
|
|
4
|
+
readonly documentUri: string;
|
|
5
|
+
readonly range: Range;
|
|
6
|
+
readonly targetUri: string;
|
|
7
|
+
readonly targetPointer: string;
|
|
8
|
+
readonly rawValue: string;
|
|
9
|
+
}
|
|
10
|
+
export interface PointerMetadata {
|
|
11
|
+
readonly valueRange: Range;
|
|
12
|
+
readonly keyRange?: Range;
|
|
13
|
+
readonly node: JsonNode;
|
|
14
|
+
}
|
|
15
|
+
export interface DocumentAnalysis {
|
|
16
|
+
readonly pointers: ReadonlyMap<string, PointerMetadata>;
|
|
17
|
+
readonly references: readonly DocumentReference[];
|
|
18
|
+
readonly tree: JsonNode;
|
|
19
|
+
readonly typeValues: ReadonlySet<string>;
|
|
20
|
+
readonly extensionKeys: ReadonlySet<string>;
|
|
21
|
+
readonly unitValues: ReadonlySet<string>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/documents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxD,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/documents/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-tree.d.ts","sourceRoot":"","sources":["../../src/core/json-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmB9F"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function getStringProperty(node, name) {
|
|
2
|
+
if (!node || node.type !== 'object' || !node.children) {
|
|
3
|
+
return undefined;
|
|
4
|
+
}
|
|
5
|
+
for (const property of node.children) {
|
|
6
|
+
const keyNode = property.children?.[0];
|
|
7
|
+
const valueNode = property.children?.[1];
|
|
8
|
+
if (!keyNode || typeof keyNode.value !== 'string' || keyNode.value !== name) {
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
if (valueNode?.type === 'string' && typeof valueNode.value === 'string') {
|
|
12
|
+
return valueNode.value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=json-tree.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-tree.js","sourceRoot":"","sources":["../../src/core/json-tree.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,IAA0B,EAAE,IAAY;IACxE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC5E,SAAS;QACX,CAAC;QAED,IAAI,SAAS,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxE,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../src/core/utils/object.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../../src/core/utils/object.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/diagnostics/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/diagnostics/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type DtifValidator } from '@lapidist/dtif-validator';
|
|
2
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
import type { Diagnostic as LspDiagnostic } from 'vscode-languageserver/node.js';
|
|
4
|
+
export interface DocumentValidatorOptions {
|
|
5
|
+
readonly validator?: DtifValidator;
|
|
6
|
+
}
|
|
7
|
+
export declare class DocumentValidator {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(options?: DocumentValidatorOptions);
|
|
10
|
+
validate(document: TextDocument): LspDiagnostic[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=document-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-validator.d.ts","sourceRoot":"","sources":["../../src/diagnostics/document-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAKjF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;CACpC;AAED,qBAAa,iBAAiB;;gBAGhB,OAAO,GAAE,wBAA6B;IAIlD,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,EAAE;CAsBlD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { createDtifValidator } from '@lapidist/dtif-validator';
|
|
2
|
+
import { parseDocument } from './parsing.js';
|
|
3
|
+
import { buildSchemaDiagnostics, buildValidatorFailureDiagnostic } from './schema-diagnostics.js';
|
|
4
|
+
export class DocumentValidator {
|
|
5
|
+
#validator;
|
|
6
|
+
constructor(options = {}) {
|
|
7
|
+
this.#validator = options.validator ?? createDtifValidator();
|
|
8
|
+
}
|
|
9
|
+
validate(document) {
|
|
10
|
+
const parseResult = parseDocument(document);
|
|
11
|
+
if (!parseResult.ok) {
|
|
12
|
+
return parseResult.diagnostics;
|
|
13
|
+
}
|
|
14
|
+
const context = { document, tree: parseResult.tree };
|
|
15
|
+
let valid = false;
|
|
16
|
+
try {
|
|
17
|
+
valid = this.#validator.validate(parseResult.value);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
return [buildValidatorFailureDiagnostic(error, document)];
|
|
21
|
+
}
|
|
22
|
+
if (valid) {
|
|
23
|
+
return [];
|
|
24
|
+
}
|
|
25
|
+
const errors = this.#validator.validate.errors ?? [];
|
|
26
|
+
return buildSchemaDiagnostics({ errors, context });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=document-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-validator.js","sourceRoot":"","sources":["../../src/diagnostics/document-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsB,MAAM,0BAA0B,CAAC;AAGnF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAOlG,MAAM,OAAO,iBAAiB;IAC5B,UAAU,CAAgB;IAE1B,YAAY,UAAoC,EAAE;QAChD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,mBAAmB,EAAE,CAAC;IAC/D,CAAC;IAED,QAAQ,CAAC,QAAsB;QAC7B,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;YACpB,OAAO,WAAW,CAAC,WAAW,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAA8B,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;QAEhF,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,+BAA+B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QACrD,OAAO,sBAAsB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAiC,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ErrorObject } from 'ajv';
|
|
2
|
+
export declare function formatSchemaViolationMessage(error: ErrorObject): string;
|
|
3
|
+
export declare function formatSchemaViolationDetail(keyword: string, params: ErrorObject['params']): string | undefined;
|
|
4
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/diagnostics/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAGvC,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAavE;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC5B,MAAM,GAAG,SAAS,CAmEpB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { isRecord } from '../core/utils/object.js';
|
|
2
|
+
export function formatSchemaViolationMessage(error) {
|
|
3
|
+
const base = error.message?.trim();
|
|
4
|
+
const keyword = error.keyword ? error.keyword.trim() : '';
|
|
5
|
+
if (base && base.length > 0) {
|
|
6
|
+
return `Schema violation: ${ensureSentence(base)}`;
|
|
7
|
+
}
|
|
8
|
+
if (keyword) {
|
|
9
|
+
return `Schema violation: Constraint "${keyword}" failed.`;
|
|
10
|
+
}
|
|
11
|
+
return 'Schema violation: Document does not conform to the DTIF schema.';
|
|
12
|
+
}
|
|
13
|
+
export function formatSchemaViolationDetail(keyword, params) {
|
|
14
|
+
if (!isRecord(params)) {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
switch (keyword) {
|
|
18
|
+
case 'required': {
|
|
19
|
+
const name = params.missingProperty;
|
|
20
|
+
return typeof name === 'string' ? `Missing property: ${name}` : undefined;
|
|
21
|
+
}
|
|
22
|
+
case 'additionalProperties': {
|
|
23
|
+
const name = params.additionalProperty;
|
|
24
|
+
return typeof name === 'string' ? `Unexpected property: ${name}` : undefined;
|
|
25
|
+
}
|
|
26
|
+
case 'type': {
|
|
27
|
+
const expected = params.type;
|
|
28
|
+
return typeof expected === 'string' ? `Expected type: ${expected}` : undefined;
|
|
29
|
+
}
|
|
30
|
+
case 'enum': {
|
|
31
|
+
const values = params.allowedValues;
|
|
32
|
+
return Array.isArray(values) ? `Allowed values: ${formatAllowedValues(values)}` : undefined;
|
|
33
|
+
}
|
|
34
|
+
case 'const': {
|
|
35
|
+
const value = params.allowedValue;
|
|
36
|
+
return value !== undefined ? `Expected value: ${formatAllowedValue(value)}` : undefined;
|
|
37
|
+
}
|
|
38
|
+
case 'pattern': {
|
|
39
|
+
const pattern = params.pattern;
|
|
40
|
+
return typeof pattern === 'string' ? `Required pattern: ${pattern}` : undefined;
|
|
41
|
+
}
|
|
42
|
+
case 'format': {
|
|
43
|
+
const format = params.format;
|
|
44
|
+
return typeof format === 'string' ? `Expected format: ${format}` : undefined;
|
|
45
|
+
}
|
|
46
|
+
case 'minItems':
|
|
47
|
+
case 'minLength': {
|
|
48
|
+
const limit = params.limit;
|
|
49
|
+
if (typeof limit === 'number') {
|
|
50
|
+
const noun = keyword === 'minItems' ? 'item' : 'character';
|
|
51
|
+
const limitText = limit.toString();
|
|
52
|
+
return `Expected at least ${limitText} ${pluralise(noun, limit)}.`;
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
case 'maxItems':
|
|
57
|
+
case 'maxLength': {
|
|
58
|
+
const limit = params.limit;
|
|
59
|
+
if (typeof limit === 'number') {
|
|
60
|
+
const noun = keyword === 'maxItems' ? 'item' : 'character';
|
|
61
|
+
const limitText = limit.toString();
|
|
62
|
+
return `Expected at most ${limitText} ${pluralise(noun, limit)}.`;
|
|
63
|
+
}
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
case 'minimum':
|
|
67
|
+
case 'maximum': {
|
|
68
|
+
const limit = params.limit;
|
|
69
|
+
if (typeof limit === 'number') {
|
|
70
|
+
const comparator = keyword === 'minimum' ? 'at least' : 'at most';
|
|
71
|
+
const limitText = limit.toString();
|
|
72
|
+
return `Expected value ${comparator} ${limitText}.`;
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
default:
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function ensureSentence(value) {
|
|
81
|
+
const capitalised = value.charAt(0).toUpperCase() + value.slice(1);
|
|
82
|
+
return /[.!?]$/u.test(capitalised) ? capitalised : `${capitalised}.`;
|
|
83
|
+
}
|
|
84
|
+
function formatAllowedValues(values) {
|
|
85
|
+
return values.map(formatAllowedValue).join(', ');
|
|
86
|
+
}
|
|
87
|
+
function formatAllowedValue(value) {
|
|
88
|
+
if (typeof value === 'string') {
|
|
89
|
+
return `"${value}"`;
|
|
90
|
+
}
|
|
91
|
+
return JSON.stringify(value);
|
|
92
|
+
}
|
|
93
|
+
function pluralise(noun, count) {
|
|
94
|
+
return Math.abs(count) === 1 ? noun : `${noun}s`;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/diagnostics/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Node as JsonNode } from 'jsonc-parser';
|
|
2
|
+
import { type Diagnostic as LspDiagnostic, type Range } from 'vscode-languageserver/node.js';
|
|
3
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
|
+
import type { DocumentValidationContext } from './types.js';
|
|
5
|
+
export type DocumentParseResult = {
|
|
6
|
+
ok: true;
|
|
7
|
+
tree: JsonNode;
|
|
8
|
+
value: unknown;
|
|
9
|
+
} | {
|
|
10
|
+
ok: false;
|
|
11
|
+
diagnostics: LspDiagnostic[];
|
|
12
|
+
};
|
|
13
|
+
export declare function parseDocument(document: TextDocument): DocumentParseResult;
|
|
14
|
+
export declare function resolveRangeFromPointer(pointer: string, context: DocumentValidationContext): Range;
|
|
15
|
+
//# sourceMappingURL=parsing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing.d.ts","sourceRoot":"","sources":["../../src/diagnostics/parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,IAAI,QAAQ,EAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,UAAU,IAAI,aAAa,EAChC,KAAK,KAAK,EACX,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC;AAEhD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,GAAG,mBAAmB,CAgBzE;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,yBAAyB,GACjC,KAAK,CAmBP"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { findNodeAtLocation, getNodeValue, parseTree, printParseErrorCode } from 'jsonc-parser';
|
|
2
|
+
import { DiagnosticSeverity } from 'vscode-languageserver/node.js';
|
|
3
|
+
import { pointerToPath } from '../pointer-utils.js';
|
|
4
|
+
import { rangeFromNode, rangeFromOffset } from '../core/documents/ranges.js';
|
|
5
|
+
import { DTIF_DIAGNOSTIC_SOURCE } from './constants.js';
|
|
6
|
+
export function parseDocument(document) {
|
|
7
|
+
const text = document.getText();
|
|
8
|
+
const parseErrors = [];
|
|
9
|
+
const tree = parseTree(text, parseErrors, {
|
|
10
|
+
allowTrailingComma: false,
|
|
11
|
+
disallowComments: true
|
|
12
|
+
});
|
|
13
|
+
if (!tree || parseErrors.length > 0) {
|
|
14
|
+
return {
|
|
15
|
+
ok: false,
|
|
16
|
+
diagnostics: parseErrors.map((error) => buildParseDiagnostic(error, document))
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
return { ok: true, tree, value: getNodeValue(tree) };
|
|
20
|
+
}
|
|
21
|
+
export function resolveRangeFromPointer(pointer, context) {
|
|
22
|
+
const { document, tree } = context;
|
|
23
|
+
if (!tree) {
|
|
24
|
+
return rangeFromOffset(document, 0, document.getText().length);
|
|
25
|
+
}
|
|
26
|
+
const path = pointerToPath(pointer);
|
|
27
|
+
let node = findNodeAtLocation(tree, path);
|
|
28
|
+
if (!node && path.length > 0) {
|
|
29
|
+
const parentPath = path.slice(0, -1);
|
|
30
|
+
node = findNodeAtLocation(tree, parentPath) ?? undefined;
|
|
31
|
+
}
|
|
32
|
+
if (!node) {
|
|
33
|
+
return rangeFromOffset(document, 0, document.getText().length);
|
|
34
|
+
}
|
|
35
|
+
return rangeFromNode(node, document);
|
|
36
|
+
}
|
|
37
|
+
function buildParseDiagnostic(error, document) {
|
|
38
|
+
const range = rangeFromOffset(document, error.offset, error.length);
|
|
39
|
+
const message = `JSON parsing error: ${printParseErrorCode(error.error)}.`;
|
|
40
|
+
return {
|
|
41
|
+
range,
|
|
42
|
+
message,
|
|
43
|
+
severity: DiagnosticSeverity.Error,
|
|
44
|
+
source: DTIF_DIAGNOSTIC_SOURCE
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=parsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsing.js","sourceRoot":"","sources":["../../src/diagnostics/parsing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,mBAAmB,EAGpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAGnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAOxD,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE;QACxC,kBAAkB,EAAE,KAAK;QACzB,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC/E,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,OAAkC;IAElC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,GAAG,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAiB,EAAE,QAAsB;IACrE,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,uBAAuB,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IAC3E,OAAO;QACL,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,kBAAkB,CAAC,KAAK;QAClC,MAAM,EAAE,sBAAsB;KACP,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ErrorObject } from 'ajv';
|
|
2
|
+
import { type Diagnostic as LspDiagnostic } from 'vscode-languageserver/node.js';
|
|
3
|
+
import type { DocumentValidationContext } from './types.js';
|
|
4
|
+
export interface SchemaDiagnosticBuilderOptions {
|
|
5
|
+
readonly errors: readonly ErrorObject[];
|
|
6
|
+
readonly context: DocumentValidationContext;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildSchemaDiagnostics(options: SchemaDiagnosticBuilderOptions): LspDiagnostic[];
|
|
9
|
+
export declare function buildValidatorFailureDiagnostic(error: unknown, document: DocumentValidationContext['document']): LspDiagnostic;
|
|
10
|
+
//# sourceMappingURL=schema-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics/schema-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,UAAU,IAAI,aAAa,EACjC,MAAM,+BAA+B,CAAC;AAIvC,OAAO,KAAK,EAAE,yBAAyB,EAAsB,MAAM,YAAY,CAAC;AAGhF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;CAC7C;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,8BAA8B,GAAG,aAAa,EAAE,CAG/F;AAyBD,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAC9C,aAAa,CAaf"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DiagnosticSeverity } from 'vscode-languageserver/node.js';
|
|
2
|
+
import { rangeFromOffset } from '../core/documents/ranges.js';
|
|
3
|
+
import { formatSchemaViolationDetail, formatSchemaViolationMessage } from './messages.js';
|
|
4
|
+
import { DTIF_DIAGNOSTIC_SOURCE } from './constants.js';
|
|
5
|
+
import { resolveRangeFromPointer } from './parsing.js';
|
|
6
|
+
export function buildSchemaDiagnostics(options) {
|
|
7
|
+
const { errors, context } = options;
|
|
8
|
+
return errors.map((error) => buildSchemaDiagnostic(error, context));
|
|
9
|
+
}
|
|
10
|
+
function buildSchemaDiagnostic(error, context) {
|
|
11
|
+
const pointer = normalizePointer(error.instancePath);
|
|
12
|
+
const range = resolveRangeFromPointer(pointer, context);
|
|
13
|
+
const baseMessage = formatSchemaViolationMessage(error);
|
|
14
|
+
const detail = formatSchemaViolationDetail(error.keyword, error.params);
|
|
15
|
+
const message = detail ? `${baseMessage} ${detail}` : baseMessage;
|
|
16
|
+
return {
|
|
17
|
+
range,
|
|
18
|
+
message,
|
|
19
|
+
severity: DiagnosticSeverity.Error,
|
|
20
|
+
source: DTIF_DIAGNOSTIC_SOURCE,
|
|
21
|
+
code: error.keyword,
|
|
22
|
+
data: {
|
|
23
|
+
pointer,
|
|
24
|
+
keyword: error.keyword,
|
|
25
|
+
params: error.params
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function buildValidatorFailureDiagnostic(error, document) {
|
|
30
|
+
const range = rangeFromOffset(document, 0, document.getText().length);
|
|
31
|
+
const message = error instanceof Error
|
|
32
|
+
? `Failed to validate DTIF document: ${error.message}`
|
|
33
|
+
: 'Failed to validate DTIF document.';
|
|
34
|
+
return {
|
|
35
|
+
range,
|
|
36
|
+
message,
|
|
37
|
+
severity: DiagnosticSeverity.Error,
|
|
38
|
+
source: DTIF_DIAGNOSTIC_SOURCE
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function normalizePointer(instancePath) {
|
|
42
|
+
return instancePath && instancePath.length > 0 ? `#${instancePath}` : '#';
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=schema-diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-diagnostics.js","sourceRoot":"","sources":["../../src/diagnostics/schema-diagnostics.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAOvD,MAAM,UAAU,sBAAsB,CAAC,OAAuC;IAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAkB,EAClB,OAAkC;IAElC,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAClE,OAAO;QACL,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,kBAAkB,CAAC,KAAK;QAClC,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,KAAK,CAAC,OAAO;QACnB,IAAI,EAAE;YACJ,OAAO;YACP,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;SACQ;KACP,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAc,EACd,QAA+C;IAE/C,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IACtE,MAAM,OAAO,GACX,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE;QACtD,CAAC,CAAC,mCAAmC,CAAC;IAE1C,OAAO;QACL,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,kBAAkB,CAAC,KAAK;QAClC,MAAM,EAAE,sBAAsB;KACP,CAAC;AAC5B,CAAC;AAED,SAAS,gBAAgB,CAAC,YAAoB;IAC5C,OAAO,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Node as JsonNode } from 'jsonc-parser';
|
|
2
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
export interface DtifDiagnosticData {
|
|
4
|
+
readonly pointer?: string;
|
|
5
|
+
readonly keyword?: string;
|
|
6
|
+
readonly params?: unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface DocumentValidationContext {
|
|
9
|
+
readonly document: TextDocument;
|
|
10
|
+
readonly tree?: JsonNode;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/diagnostics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/diagnostics/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CompletionItem } from 'vscode-languageserver/node.js';
|
|
2
|
+
import { DocumentAnalysisStore } from '../../core/documents/analysis-store.js';
|
|
3
|
+
export declare function buildExtensionKeyCompletionItems(store: DocumentAnalysisStore): CompletionItem[];
|
|
4
|
+
//# sourceMappingURL=extension-items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-items.d.ts","sourceRoot":"","sources":["../../../src/features/completions/extension-items.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAgB/E,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,qBAAqB,GAAG,cAAc,EAAE,CAkB/F"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { CompletionItemKind, InsertTextFormat, MarkupKind } from 'vscode-languageserver/node.js';
|
|
2
|
+
const EXTENSION_NAMESPACE_SNIPPET = {
|
|
3
|
+
label: 'org.example.design.tokens',
|
|
4
|
+
kind: CompletionItemKind.Module,
|
|
5
|
+
sortText: '0_org.example.design.tokens',
|
|
6
|
+
detail: 'Reverse-DNS namespace snippet',
|
|
7
|
+
insertTextFormat: InsertTextFormat.Snippet,
|
|
8
|
+
insertText: '${1:org}.${2:example}.${3:feature}',
|
|
9
|
+
documentation: {
|
|
10
|
+
kind: MarkupKind.Markdown,
|
|
11
|
+
value: 'DTIF requires `$extensions` keys to use reverse-DNS namespaces so vendor metadata stays isolated.'
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export function buildExtensionKeyCompletionItems(store) {
|
|
15
|
+
const items = [EXTENSION_NAMESPACE_SNIPPET];
|
|
16
|
+
const seen = new Set([EXTENSION_NAMESPACE_SNIPPET.label]);
|
|
17
|
+
for (const key of store.getExtensionKeys()) {
|
|
18
|
+
if (seen.has(key)) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
items.push({
|
|
22
|
+
label: key,
|
|
23
|
+
kind: CompletionItemKind.Module,
|
|
24
|
+
sortText: `1_${key}`,
|
|
25
|
+
detail: 'Observed in workspace'
|
|
26
|
+
});
|
|
27
|
+
seen.add(key);
|
|
28
|
+
}
|
|
29
|
+
return items;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=extension-items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-items.js","sourceRoot":"","sources":["../../../src/features/completions/extension-items.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EAEX,MAAM,+BAA+B,CAAC;AAGvC,MAAM,2BAA2B,GAAG;IAClC,KAAK,EAAE,2BAA2B;IAClC,IAAI,EAAE,kBAAkB,CAAC,MAAM;IAC/B,QAAQ,EAAE,6BAA6B;IACvC,MAAM,EAAE,+BAA+B;IACvC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO;IAC1C,UAAU,EAAE,oCAAoC;IAChD,aAAa,EAAE;QACb,IAAI,EAAE,UAAU,CAAC,QAAQ;QACzB,KAAK,EACH,mGAAmG;KACtG;CACuB,CAAC;AAE3B,MAAM,UAAU,gCAAgC,CAAC,KAA4B;IAC3E,MAAM,KAAK,GAAqB,CAAC,2BAA2B,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;IAElE,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,kBAAkB,CAAC,MAAM;YAC/B,QAAQ,EAAE,KAAK,GAAG,EAAE;YACpB,MAAM,EAAE,uBAAuB;SAChC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TextDocument } from 'vscode-languageserver-textdocument';
|
|
2
|
+
import { type CompletionItem, type Position } from 'vscode-languageserver/node.js';
|
|
3
|
+
import { DocumentAnalysisStore } from '../../core/documents/analysis-store.js';
|
|
4
|
+
export interface BuildCompletionsOptions {
|
|
5
|
+
readonly document: TextDocument;
|
|
6
|
+
readonly position: Position;
|
|
7
|
+
readonly store: DocumentAnalysisStore;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildCompletions(options: BuildCompletionsOptions): CompletionItem[];
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/completions/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAM/E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;CACvC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,cAAc,EAAE,CAsDnF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getLocation } from 'jsonc-parser';
|
|
2
|
+
import { parentPointer, pathToPointer, pointerToPath } from '../../pointer-utils.js';
|
|
3
|
+
import { buildTypeCompletionItems } from './type-items.js';
|
|
4
|
+
import { buildUnitCompletionItems } from './unit-items.js';
|
|
5
|
+
import { buildExtensionKeyCompletionItems } from './extension-items.js';
|
|
6
|
+
export function buildCompletions(options) {
|
|
7
|
+
const { document, position, store } = options;
|
|
8
|
+
const pointerMatch = store.matchPointer(document.uri, position);
|
|
9
|
+
const completions = [];
|
|
10
|
+
if (pointerMatch) {
|
|
11
|
+
const pointerPath = pointerToPath(pointerMatch.pointer);
|
|
12
|
+
const lastSegment = pointerPath[pointerPath.length - 1];
|
|
13
|
+
if (!pointerMatch.inKey && lastSegment === '$type') {
|
|
14
|
+
completions.push(...buildTypeCompletionItems(store));
|
|
15
|
+
}
|
|
16
|
+
if (!pointerMatch.inKey && lastSegment === 'unit') {
|
|
17
|
+
completions.push(...buildUnitCompletionItems(store, document.uri, pointerMatch.pointer));
|
|
18
|
+
}
|
|
19
|
+
if (pointerMatch.inKey) {
|
|
20
|
+
const parent = parentPointer(pointerMatch.pointer);
|
|
21
|
+
const parentPath = parent ? pointerToPath(parent) : [];
|
|
22
|
+
const parentKey = parentPath[parentPath.length - 1];
|
|
23
|
+
if (parentKey === '$extensions') {
|
|
24
|
+
completions.push(...buildExtensionKeyCompletionItems(store));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (completions.length > 0) {
|
|
29
|
+
return completions;
|
|
30
|
+
}
|
|
31
|
+
const offset = document.offsetAt(position);
|
|
32
|
+
const location = getLocation(document.getText(), offset);
|
|
33
|
+
const path = location.path;
|
|
34
|
+
const activeSegment = path[path.length - 1];
|
|
35
|
+
if (activeSegment === '$type') {
|
|
36
|
+
return buildTypeCompletionItems(store);
|
|
37
|
+
}
|
|
38
|
+
if (activeSegment === 'unit') {
|
|
39
|
+
return buildUnitCompletionItems(store, document.uri, pointerMatch?.pointer ?? '#');
|
|
40
|
+
}
|
|
41
|
+
if (location.isAtPropertyKey && path[path.length - 1] === '') {
|
|
42
|
+
const containerPointer = pathToPointer(path.slice(0, -1));
|
|
43
|
+
const segments = pointerToPath(containerPointer);
|
|
44
|
+
if (segments[segments.length - 1] === '$extensions') {
|
|
45
|
+
return buildExtensionKeyCompletionItems(store);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/completions/index.ts"],"names":[],"mappings":"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"}
|