@oml/server 0.14.17 → 0.15.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 +8 -1
- package/out/auth/feature-gate.d.ts +20 -5
- package/out/auth/feature-gate.js +80 -24
- package/out/auth/feature-gate.js.map +1 -1
- package/out/auth/feature-policy.js +1 -0
- package/out/auth/feature-policy.js.map +1 -1
- package/out/lsp/language-server.js +3 -47
- package/out/lsp/language-server.js.map +1 -1
- package/out/lsp/protocol/reasoner-protocol.d.ts +8 -0
- package/out/lsp/protocol/reasoner-protocol.js +3 -0
- package/out/lsp/protocol/reasoner-protocol.js.map +1 -1
- package/out/rest/export.js +1 -3
- package/out/rest/export.js.map +1 -1
- package/out/rest/routes.d.ts +5 -0
- package/out/rest/routes.js +165 -91
- package/out/rest/routes.js.map +1 -1
- package/out/rest/server.d.ts +0 -2
- package/out/rest/server.js +686 -470
- package/out/rest/server.js.map +1 -1
- package/out/rest/shacl-index.d.ts +19 -0
- package/out/rest/shacl-index.js +166 -0
- package/out/rest/shacl-index.js.map +1 -0
- package/out/rest/template.js +54 -38
- package/out/rest/template.js.map +1 -1
- package/out/rest/validation.d.ts +2 -1
- package/out/rest/validation.js +198 -136
- package/out/rest/validation.js.map +1 -1
- package/out/server.js +99 -8
- package/out/server.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shacl-index.js","sourceRoot":"","sources":["../../src/rest/shacl-index.ts"],"names":[],"mappings":"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"}
|
package/out/rest/template.js
CHANGED
|
@@ -83,7 +83,7 @@ export async function expandTemplateComposeBlocks(markdown, templateCatalog, con
|
|
|
83
83
|
const maxExpansionPasses = 12;
|
|
84
84
|
let current = markdown;
|
|
85
85
|
for (let pass = 0; pass < maxExpansionPasses; pass++) {
|
|
86
|
-
const composeBlockPattern = /```
|
|
86
|
+
const composeBlockPattern = /```compose[^\n]*\r?\n([\s\S]*?)\r?\n```/g;
|
|
87
87
|
let replaced = '';
|
|
88
88
|
let lastIndex = 0;
|
|
89
89
|
let expandedAny = false;
|
|
@@ -102,14 +102,8 @@ export async function expandTemplateComposeBlocks(markdown, templateCatalog, con
|
|
|
102
102
|
if (!template) {
|
|
103
103
|
throw new Error(`No markdown template found for id '${directive.id}' in ${context.sourceMarkdownPath}.`);
|
|
104
104
|
}
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
const value = resolveTemplateBindingValue(source, context);
|
|
108
|
-
if (value !== undefined) {
|
|
109
|
-
invocationArgs[parameterId] = value;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
const selection = context.contextMemberIri ? [context.contextMemberIri.trim()] : [];
|
|
105
|
+
const invocationVars = buildComposeInvocationVars(current, context.contextOntologyIri);
|
|
106
|
+
const invocationArgs = resolveComposeDirectiveArgs(directive.args, invocationVars);
|
|
113
107
|
const invocation = {
|
|
114
108
|
templateId: template.definition.id,
|
|
115
109
|
mode: 'compose',
|
|
@@ -123,12 +117,7 @@ export async function expandTemplateComposeBlocks(markdown, templateCatalog, con
|
|
|
123
117
|
ontologyIri: context.contextOntologyIri,
|
|
124
118
|
modelUri: context.contextModelUri,
|
|
125
119
|
},
|
|
126
|
-
|
|
127
|
-
memberIri: context.contextMemberIri,
|
|
128
|
-
},
|
|
129
|
-
selection: {
|
|
130
|
-
iris: selection,
|
|
131
|
-
},
|
|
120
|
+
vars: invocationVars,
|
|
132
121
|
},
|
|
133
122
|
args: invocationArgs,
|
|
134
123
|
};
|
|
@@ -155,35 +144,59 @@ function selectTemplateDefinition(templateCatalog, templateId) {
|
|
|
155
144
|
const candidates = templateCatalog.get(normalized);
|
|
156
145
|
return candidates?.[0];
|
|
157
146
|
}
|
|
158
|
-
function
|
|
159
|
-
const
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
const selection = member ? [member] : [];
|
|
163
|
-
if (source === 'context.member') {
|
|
164
|
-
return member || undefined;
|
|
147
|
+
function resolveComposeDirectiveArgs(args, variables) {
|
|
148
|
+
const resolved = {};
|
|
149
|
+
for (const [key, raw] of Object.entries(args)) {
|
|
150
|
+
resolved[key] = resolveComposeArgumentValue(raw, variables);
|
|
165
151
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
if (
|
|
170
|
-
return
|
|
152
|
+
return resolved;
|
|
153
|
+
}
|
|
154
|
+
function resolveComposeArgumentValue(value, variables) {
|
|
155
|
+
if (typeof value !== 'string') {
|
|
156
|
+
return value;
|
|
157
|
+
}
|
|
158
|
+
return value.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g, (_match, key) => {
|
|
159
|
+
const replacement = variables[key];
|
|
160
|
+
if (replacement === undefined || replacement === null) {
|
|
161
|
+
return '';
|
|
162
|
+
}
|
|
163
|
+
if (Array.isArray(replacement)) {
|
|
164
|
+
return replacement.map((entry) => String(entry)).join(', ');
|
|
165
|
+
}
|
|
166
|
+
if (typeof replacement === 'object') {
|
|
167
|
+
return JSON.stringify(replacement);
|
|
168
|
+
}
|
|
169
|
+
return String(replacement);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function buildComposeInvocationVars(markdown, contextOntologyIri) {
|
|
173
|
+
const vars = {};
|
|
174
|
+
const frontMatterData = extractLeadingFrontMatter(markdown)?.data;
|
|
175
|
+
if (frontMatterData) {
|
|
176
|
+
for (const [key, raw] of Object.entries(frontMatterData)) {
|
|
177
|
+
const converted = toTemplateValue(raw);
|
|
178
|
+
if (converted !== undefined) {
|
|
179
|
+
vars[key] = converted;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
171
182
|
}
|
|
172
|
-
|
|
173
|
-
|
|
183
|
+
vars.ontology = contextOntologyIri?.trim() || (typeof vars.ontology === 'string' ? vars.ontology.trim() : '');
|
|
184
|
+
return vars;
|
|
185
|
+
}
|
|
186
|
+
function toTemplateValue(value) {
|
|
187
|
+
if (value === null) {
|
|
188
|
+
return null;
|
|
174
189
|
}
|
|
175
|
-
if (
|
|
176
|
-
return
|
|
190
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
191
|
+
return value;
|
|
177
192
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
return undefined;
|
|
193
|
+
if (Array.isArray(value)) {
|
|
194
|
+
return value.every((entry) => typeof entry === 'string') ? value : undefined;
|
|
181
195
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
return undefined;
|
|
196
|
+
if (isRecord(value)) {
|
|
197
|
+
return value;
|
|
185
198
|
}
|
|
186
|
-
return
|
|
199
|
+
return undefined;
|
|
187
200
|
}
|
|
188
201
|
function normalizeTemplateId(value) {
|
|
189
202
|
let normalized = value.trim();
|
|
@@ -193,6 +206,9 @@ function normalizeTemplateId(value) {
|
|
|
193
206
|
}
|
|
194
207
|
return normalized.replace(/^<|>$/g, '');
|
|
195
208
|
}
|
|
209
|
+
function isRecord(value) {
|
|
210
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
211
|
+
}
|
|
196
212
|
function absolutizeTemplateHrefValues(markdown, templateSourcePath, referenceMarkdownPath, workspaceRoot) {
|
|
197
213
|
const templateDir = path.dirname(templateSourcePath);
|
|
198
214
|
return markdown.replace(/(\bhref\s*:\s*)(["']?)([^"'\r\n]+)\2/g, (_m, prefix, quote, raw) => {
|
package/out/rest/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/rest/template.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACH,yBAAyB,EACzB,6BAA6B,EAC7B,uBAAuB,EACvB,cAAc,
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/rest/template.ts"],"names":[],"mappings":"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"}
|
package/out/rest/validation.d.ts
CHANGED
|
@@ -24,7 +24,8 @@ export type RestValidationContext = {
|
|
|
24
24
|
};
|
|
25
25
|
ensureInitialized: () => Promise<void>;
|
|
26
26
|
ensureWorkspaceCurrent: () => Promise<void>;
|
|
27
|
+
waitForValidated: () => Promise<void>;
|
|
27
28
|
getWorkspaceOmlDocuments: () => any[];
|
|
28
29
|
};
|
|
29
|
-
export declare function lintWorkspace(client: RestValidationContext): Promise<RestLintResult>;
|
|
30
|
+
export declare function lintWorkspace(client: RestValidationContext, params?: Record<string, unknown>): Promise<RestLintResult>;
|
|
30
31
|
export declare function validateWorkspace(client: RestValidationContext, params: Record<string, unknown>): Promise<Record<string, unknown>>;
|
package/out/rest/validation.js
CHANGED
|
@@ -1,13 +1,94 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
|
-
import * as fs from 'node:fs/promises';
|
|
3
|
-
import * as path from 'node:path';
|
|
4
|
-
import { pathToFileURL } from 'node:url';
|
|
5
2
|
import { createHash } from 'node:crypto';
|
|
6
|
-
import { extractLeadingFrontMatter, MarkdownHandlerRegistry, MarkdownPreviewRuntime } from '@oml/markdown';
|
|
7
3
|
import { createDefaultShaclService } from '@oml/owl';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
import { normalizeNamespace } from '@oml/language';
|
|
5
|
+
import { getIndexedShaclBlocks } from './shacl-index.js';
|
|
10
6
|
const validationRuntimeCaches = new WeakMap();
|
|
7
|
+
function collectDocumentVersions(client) {
|
|
8
|
+
const versions = new Map();
|
|
9
|
+
for (const doc of client.getWorkspaceOmlDocuments()) {
|
|
10
|
+
const uri = String(doc?.uri ?? '').trim();
|
|
11
|
+
if (!uri) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
versions.set(uri, Number(doc?.textDocument?.version ?? -1));
|
|
15
|
+
}
|
|
16
|
+
return versions;
|
|
17
|
+
}
|
|
18
|
+
function areDocumentVersionsEqual(left, right) {
|
|
19
|
+
if (left.size !== right.size) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
for (const [uri, version] of left.entries()) {
|
|
23
|
+
if ((right.get(uri) ?? Number.NaN) !== version) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
function diagnosticsFingerprint(doc) {
|
|
30
|
+
const diagnostics = Array.isArray(doc?.diagnostics) ? doc.diagnostics : [];
|
|
31
|
+
return diagnostics
|
|
32
|
+
.map((diagnostic) => [
|
|
33
|
+
Number(diagnostic?.severity ?? 0),
|
|
34
|
+
Number(diagnostic?.range?.start?.line ?? -1),
|
|
35
|
+
Number(diagnostic?.range?.start?.character ?? -1),
|
|
36
|
+
String(diagnostic?.message ?? ''),
|
|
37
|
+
String(diagnostic?.source ?? ''),
|
|
38
|
+
String(diagnostic?.code ?? ''),
|
|
39
|
+
].join('|'))
|
|
40
|
+
.sort()
|
|
41
|
+
.join('\n');
|
|
42
|
+
}
|
|
43
|
+
function collectDiagnosticsSnapshot(client) {
|
|
44
|
+
const snapshot = new Map();
|
|
45
|
+
for (const doc of client.getWorkspaceOmlDocuments()) {
|
|
46
|
+
const uri = String(doc?.uri ?? '').trim();
|
|
47
|
+
if (!uri) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const version = Number(doc?.textDocument?.version ?? -1);
|
|
51
|
+
snapshot.set(uri, `${version}::${diagnosticsFingerprint(doc)}`);
|
|
52
|
+
}
|
|
53
|
+
return snapshot;
|
|
54
|
+
}
|
|
55
|
+
function areSnapshotsEqual(left, right) {
|
|
56
|
+
if (left.size !== right.size) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
for (const [uri, fingerprint] of left.entries()) {
|
|
60
|
+
if ((right.get(uri) ?? '') !== fingerprint) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
async function waitForStableValidatedSnapshot(client) {
|
|
67
|
+
await client.waitForValidated();
|
|
68
|
+
let previous = collectDocumentVersions(client);
|
|
69
|
+
for (let i = 0; i < 3; i += 1) {
|
|
70
|
+
await Promise.resolve();
|
|
71
|
+
await client.waitForValidated();
|
|
72
|
+
const current = collectDocumentVersions(client);
|
|
73
|
+
if (areDocumentVersionsEqual(previous, current)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
previous = current;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function waitForStableDiagnosticsSnapshot(client) {
|
|
80
|
+
await client.waitForValidated();
|
|
81
|
+
let previous = collectDiagnosticsSnapshot(client);
|
|
82
|
+
for (let i = 0; i < 4; i += 1) {
|
|
83
|
+
await Promise.resolve();
|
|
84
|
+
await client.waitForValidated();
|
|
85
|
+
const current = collectDiagnosticsSnapshot(client);
|
|
86
|
+
if (areSnapshotsEqual(previous, current)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
previous = current;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
11
92
|
function diagnosticKindFromSeverity(severity) {
|
|
12
93
|
if (severity === 1)
|
|
13
94
|
return 'error';
|
|
@@ -49,11 +130,54 @@ function getModelContentFingerprints(client) {
|
|
|
49
130
|
}
|
|
50
131
|
return fingerprints;
|
|
51
132
|
}
|
|
52
|
-
|
|
133
|
+
function resolveFilterModelUris(client, ontologies) {
|
|
134
|
+
if (!Array.isArray(ontologies))
|
|
135
|
+
return new Set();
|
|
136
|
+
const ontologyIndex = client.runtime.shared.indexes?.OntologyModelIndex;
|
|
137
|
+
if (!ontologyIndex)
|
|
138
|
+
return new Set();
|
|
139
|
+
const modelUris = new Set();
|
|
140
|
+
for (const ontology of ontologies) {
|
|
141
|
+
const trimmed = String(ontology ?? '').trim();
|
|
142
|
+
if (!trimmed.startsWith('http://') && !trimmed.startsWith('https://'))
|
|
143
|
+
continue;
|
|
144
|
+
const modelUri = ontologyIndex.resolveModelUri?.(trimmed);
|
|
145
|
+
if (modelUri)
|
|
146
|
+
modelUris.add(modelUri);
|
|
147
|
+
}
|
|
148
|
+
return modelUris;
|
|
149
|
+
}
|
|
150
|
+
function resolveFilterOntologyIris(_client, ontologies) {
|
|
151
|
+
if (!Array.isArray(ontologies))
|
|
152
|
+
return new Set();
|
|
153
|
+
const ontologyIris = new Set();
|
|
154
|
+
for (const ontology of ontologies) {
|
|
155
|
+
const trimmed = String(ontology ?? '').trim();
|
|
156
|
+
if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
|
|
157
|
+
ontologyIris.add(trimmed);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return ontologyIris;
|
|
161
|
+
}
|
|
162
|
+
function resolveIndexedShaclBlockModelUri(client, block) {
|
|
163
|
+
if (block.modelUri) {
|
|
164
|
+
return block.modelUri;
|
|
165
|
+
}
|
|
166
|
+
const ontologyIndex = client.runtime.shared.indexes?.OntologyModelIndex;
|
|
167
|
+
return ontologyIndex?.resolveModelUri?.(block.ontologyIri, block.markdownUri);
|
|
168
|
+
}
|
|
169
|
+
export async function lintWorkspace(client, params = {}) {
|
|
53
170
|
const startedAt = Date.now();
|
|
54
171
|
await client.ensureInitialized();
|
|
55
172
|
await client.ensureWorkspaceCurrent();
|
|
56
|
-
|
|
173
|
+
await waitForStableValidatedSnapshot(client);
|
|
174
|
+
await waitForStableDiagnosticsSnapshot(client);
|
|
175
|
+
const allDocs = client.getWorkspaceOmlDocuments();
|
|
176
|
+
// Filter by ontologies if specified
|
|
177
|
+
const filterUris = resolveFilterModelUris(client, params.ontologies);
|
|
178
|
+
const docs = filterUris.size > 0
|
|
179
|
+
? allDocs.filter((doc) => filterUris.has(String(doc?.uri ?? '')))
|
|
180
|
+
: allDocs;
|
|
57
181
|
const allProblems = [];
|
|
58
182
|
let errors = 0;
|
|
59
183
|
let warnings = 0;
|
|
@@ -100,7 +224,8 @@ export async function validateWorkspace(client, params) {
|
|
|
100
224
|
const startedAt = Date.now();
|
|
101
225
|
await client.ensureInitialized();
|
|
102
226
|
await client.ensureWorkspaceCurrent();
|
|
103
|
-
|
|
227
|
+
await waitForStableValidatedSnapshot(client);
|
|
228
|
+
const lint = await lintWorkspace(client, params);
|
|
104
229
|
if (lint.errors > 0 || lint.warnings > 0) {
|
|
105
230
|
return {
|
|
106
231
|
success: false,
|
|
@@ -112,15 +237,16 @@ export async function validateWorkspace(client, params) {
|
|
|
112
237
|
error: `lint failed with ${lint.errors} error(s) and ${lint.warnings} warning(s)`,
|
|
113
238
|
};
|
|
114
239
|
}
|
|
115
|
-
const workspaceRoot = path.resolve(client.workspaceRoot);
|
|
116
|
-
const markdownFiles = await findFilesByExtension(workspaceRoot, '.md');
|
|
117
|
-
const templateCatalog = await buildTemplateCatalog(workspaceRoot);
|
|
118
|
-
const runtime = new MarkdownPreviewRuntime(new MarkdownHandlerRegistry());
|
|
119
|
-
const ontologyIndex = getOntologyModelIndex(client.runtime.shared);
|
|
120
240
|
const reasoningService = client.runtime.Oml.reasoning.ReasoningService;
|
|
121
241
|
const shaclService = createDefaultShaclService(reasoningService.getSparqlService(), (uri) => reasoningService.ensureQueryContext(uri), (uri) => reasoningService.getContextIri(uri));
|
|
122
242
|
const runtimeCache = getValidationRuntimeCache(client);
|
|
123
243
|
const modelFingerprints = getModelContentFingerprints(client);
|
|
244
|
+
const allBlocks = getIndexedShaclBlocks(client.runtime.shared);
|
|
245
|
+
// Filter by ontologies if specified
|
|
246
|
+
const filterOntologyIris = resolveFilterOntologyIris(client, params.ontologies);
|
|
247
|
+
const indexedShaclBlocks = filterOntologyIris.size > 0
|
|
248
|
+
? allBlocks.filter((block) => filterOntologyIris.has(block.ontologyIri))
|
|
249
|
+
: allBlocks;
|
|
124
250
|
const seenValidateKeys = new Set();
|
|
125
251
|
let filesChecked = 0;
|
|
126
252
|
let errors = 0;
|
|
@@ -128,144 +254,80 @@ export async function validateWorkspace(client, params) {
|
|
|
128
254
|
let failingItems = 0;
|
|
129
255
|
const details = [];
|
|
130
256
|
const validationProblems = [];
|
|
131
|
-
for (const
|
|
132
|
-
const
|
|
133
|
-
if (
|
|
257
|
+
for (const block of indexedShaclBlocks) {
|
|
258
|
+
const modelUri = resolveIndexedShaclBlockModelUri(client, block);
|
|
259
|
+
if (!modelUri) {
|
|
134
260
|
continue;
|
|
135
261
|
}
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const expanded = await expandTemplateComposeBlocks(markdown, templateCatalog, {
|
|
147
|
-
workspaceRoot,
|
|
148
|
-
sourceMarkdownPath: markdownPath,
|
|
149
|
-
contextOntologyIri,
|
|
150
|
-
contextModelUri: modelUri,
|
|
151
|
-
contextMemberIri,
|
|
152
|
-
});
|
|
153
|
-
const prepared = runtime.prepare(expanded);
|
|
154
|
-
const executableBlocks = prepared.codeBlocks
|
|
155
|
-
.filter((block) => block.language === 'table-editor')
|
|
156
|
-
.map((block) => ({ id: block.id, source: block.content, lineStart: block.lineStart, lineEnd: block.lineEnd }));
|
|
157
|
-
if (executableBlocks.length === 0) {
|
|
262
|
+
filesChecked += 1;
|
|
263
|
+
const blockLocation = `${block.markdownPath}:${Math.max(1, block.lineStart)}`;
|
|
264
|
+
const cacheKey = `${block.markdownUri}::${block.blockId}`;
|
|
265
|
+
const modelFingerprint = modelFingerprints.get(modelUri) ?? '';
|
|
266
|
+
const validateFingerprint = hashText([modelUri, modelFingerprint, block.sourceHash].join('\n'));
|
|
267
|
+
seenValidateKeys.add(cacheKey);
|
|
268
|
+
const cached = runtimeCache.validateBlockCache.get(cacheKey);
|
|
269
|
+
if (cached?.fingerprint === validateFingerprint) {
|
|
270
|
+
errors += cached.result.errors;
|
|
271
|
+
warnings += cached.result.warnings;
|
|
158
272
|
continue;
|
|
159
273
|
}
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
if (!shacl) {
|
|
190
|
-
errors += 1;
|
|
191
|
-
failingItems += 1;
|
|
192
|
-
details.push(`Violation: ${blockLocation}: empty table-editor block.`);
|
|
274
|
+
const result = await shaclService.validateShacl(modelUri, block.source);
|
|
275
|
+
let blockErrors = 0;
|
|
276
|
+
let blockWarnings = 0;
|
|
277
|
+
if (result.error) {
|
|
278
|
+
blockErrors += 1;
|
|
279
|
+
details.push(`Violation: ${blockLocation}: ${result.error}`);
|
|
280
|
+
validationProblems.push({
|
|
281
|
+
modelUri,
|
|
282
|
+
element: '-',
|
|
283
|
+
property: '-',
|
|
284
|
+
message: String(result.error),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
else if (!result.conforms) {
|
|
288
|
+
for (const issue of result.issues) {
|
|
289
|
+
const severityText = String(issue.severity ?? '').toLowerCase();
|
|
290
|
+
const focusNode = issue.focusNode ? shortIri(issue.focusNode) : '-';
|
|
291
|
+
const propertyName = issue.propertyName ?? (issue.path ? shortIri(issue.path) : '-');
|
|
292
|
+
const severityLabel = shortIri(issue.severity || 'Violation');
|
|
293
|
+
if (severityText.includes('warning')) {
|
|
294
|
+
blockWarnings += 1;
|
|
295
|
+
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
blockErrors += 1;
|
|
299
|
+
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
300
|
+
}
|
|
193
301
|
validationProblems.push({
|
|
194
302
|
modelUri,
|
|
195
|
-
element:
|
|
196
|
-
property:
|
|
197
|
-
message:
|
|
303
|
+
element: focusNode,
|
|
304
|
+
property: propertyName,
|
|
305
|
+
message: describeIssue(issue),
|
|
198
306
|
});
|
|
199
|
-
continue;
|
|
200
307
|
}
|
|
201
|
-
|
|
202
|
-
const cacheKey = `${markdownUri}::${block.id}`;
|
|
203
|
-
const validateFingerprint = hashText([modelUri, modelFingerprint, shacl].join('\n'));
|
|
204
|
-
seenValidateKeys.add(cacheKey);
|
|
205
|
-
const cached = runtimeCache.validateBlockCache.get(cacheKey);
|
|
206
|
-
if (cached?.fingerprint === validateFingerprint) {
|
|
207
|
-
errors += cached.result.errors;
|
|
208
|
-
warnings += cached.result.warnings;
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
const result = await shaclService.validateShacl(modelUri, shacl);
|
|
212
|
-
let blockErrors = 0;
|
|
213
|
-
let blockWarnings = 0;
|
|
214
|
-
if (result.error) {
|
|
308
|
+
if (result.issues.length === 0) {
|
|
215
309
|
blockErrors += 1;
|
|
216
|
-
details.push(`Violation: ${blockLocation}:
|
|
310
|
+
details.push(`Violation: ${blockLocation}: SHACL validation failed without detailed issues.`);
|
|
217
311
|
validationProblems.push({
|
|
218
312
|
modelUri,
|
|
219
313
|
element: '-',
|
|
220
314
|
property: '-',
|
|
221
|
-
message:
|
|
315
|
+
message: 'SHACL validation failed without detailed issues.',
|
|
222
316
|
});
|
|
223
317
|
}
|
|
224
|
-
else if (!result.conforms) {
|
|
225
|
-
for (const issue of result.issues) {
|
|
226
|
-
const severityText = String(issue.severity ?? '').toLowerCase();
|
|
227
|
-
const focusNode = issue.focusNode ? shortIri(issue.focusNode) : '-';
|
|
228
|
-
const propertyName = issue.propertyName ?? (issue.path ? shortIri(issue.path) : '-');
|
|
229
|
-
const severityLabel = shortIri(issue.severity || 'Violation');
|
|
230
|
-
if (severityText.includes('warning')) {
|
|
231
|
-
blockWarnings += 1;
|
|
232
|
-
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
blockErrors += 1;
|
|
236
|
-
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
237
|
-
}
|
|
238
|
-
validationProblems.push({
|
|
239
|
-
modelUri,
|
|
240
|
-
element: focusNode,
|
|
241
|
-
property: propertyName,
|
|
242
|
-
message: describeIssue(issue),
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
if (result.issues.length === 0) {
|
|
246
|
-
blockErrors += 1;
|
|
247
|
-
details.push(`Violation: ${blockLocation}: SHACL validation failed without detailed issues.`);
|
|
248
|
-
validationProblems.push({
|
|
249
|
-
modelUri,
|
|
250
|
-
element: '-',
|
|
251
|
-
property: '-',
|
|
252
|
-
message: 'SHACL validation failed without detailed issues.',
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
errors += blockErrors;
|
|
257
|
-
warnings += blockWarnings;
|
|
258
|
-
if (blockErrors > 0 || blockWarnings > 0) {
|
|
259
|
-
failingItems += 1;
|
|
260
|
-
}
|
|
261
|
-
runtimeCache.validateBlockCache.set(cacheKey, {
|
|
262
|
-
fingerprint: validateFingerprint,
|
|
263
|
-
result: {
|
|
264
|
-
errors: blockErrors,
|
|
265
|
-
warnings: blockWarnings,
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
318
|
}
|
|
319
|
+
errors += blockErrors;
|
|
320
|
+
warnings += blockWarnings;
|
|
321
|
+
if (blockErrors > 0 || blockWarnings > 0) {
|
|
322
|
+
failingItems += 1;
|
|
323
|
+
}
|
|
324
|
+
runtimeCache.validateBlockCache.set(cacheKey, {
|
|
325
|
+
fingerprint: validateFingerprint,
|
|
326
|
+
result: {
|
|
327
|
+
errors: blockErrors,
|
|
328
|
+
warnings: blockWarnings,
|
|
329
|
+
},
|
|
330
|
+
});
|
|
269
331
|
}
|
|
270
332
|
for (const key of runtimeCache.validateBlockCache.keys()) {
|
|
271
333
|
if (!seenValidateKeys.has(key)) {
|