@fin.cx/einvoice 6.2.0 → 7.0.1
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/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/einvoice.js +3 -2
- package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.d.ts +7 -0
- package/dist_ts/formats/ubl/xrechnung/xrechnung.encoder.js +19 -3
- package/dist_ts/formats/validation/conformance.harness.js +1 -1
- package/dist_ts/formats/validation/schematron.downloader.d.ts +43 -15
- package/dist_ts/formats/validation/schematron.downloader.js +122 -77
- package/dist_ts/formats/validation/schematron.integration.d.ts +5 -1
- package/dist_ts/formats/validation/schematron.integration.js +16 -40
- package/dist_ts/formats/validation/schematron.validator.d.ts +35 -15
- package/dist_ts/formats/validation/schematron.validator.js +136 -138
- package/dist_ts/formats/validation/schematron.worker.d.ts +12 -9
- package/dist_ts/formats/validation/schematron.worker.js +148 -108
- package/dist_ts/plugins.d.ts +3 -1
- package/dist_ts/plugins.js +7 -2
- package/dist_ts_install/download-schematron.js +6 -3
- package/dist_ts_install/index.js +15 -11
- package/package.json +6 -8
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/einvoice.ts +2 -1
- package/ts/formats/ubl/xrechnung/xrechnung.encoder.ts +19 -2
- package/ts/formats/validation/conformance.harness.ts +1 -1
- package/ts/formats/validation/schematron.downloader.ts +146 -97
- package/ts/formats/validation/schematron.integration.ts +18 -44
- package/ts/formats/validation/schematron.validator.ts +181 -181
- package/ts/formats/validation/schematron.worker.ts +191 -135
- package/ts/plugins.ts +8 -0
- package/ts/vendor/modules.d.ts +0 -19
- package/dist_ts/vendor/saxonjs.d.ts +0 -23
- package/dist_ts/vendor/saxonjs.js +0 -9
- package/readme.hints.md +0 -1134
- package/readme.howtofixtests.md +0 -38
- package/readme.literature.md +0 -1
- package/readme.plan.md +0 -497
- package/ts/vendor/saxonjs.ts +0 -36
|
@@ -77,40 +77,34 @@ export class SchematronDownloader {
|
|
|
77
77
|
await fs.mkdir(this.cacheDir, { recursive: true });
|
|
78
78
|
}
|
|
79
79
|
/**
|
|
80
|
-
* Download a Schematron file
|
|
80
|
+
* Download a Schematron file together with every file it includes.
|
|
81
|
+
*
|
|
82
|
+
* The published rule sets split their patterns over sch:include files, so a lone
|
|
83
|
+
* entry document cannot be validated with. The upstream directory layout is
|
|
84
|
+
* mirrored under the cache so those relative includes still resolve.
|
|
81
85
|
*/
|
|
82
86
|
async download(source) {
|
|
83
|
-
const
|
|
84
|
-
const filePath = path.join(this.cacheDir, fileName);
|
|
87
|
+
const filePath = this.entryPathFor(source);
|
|
85
88
|
// Check if already cached
|
|
86
89
|
if (await this.isCached(filePath)) {
|
|
87
|
-
console.log(`Using cached Schematron: ${
|
|
90
|
+
console.log(`Using cached Schematron: ${source.name} v${source.version}`);
|
|
88
91
|
return filePath;
|
|
89
92
|
}
|
|
90
93
|
console.log(`Downloading Schematron: ${source.name} v${source.version}`);
|
|
91
94
|
try {
|
|
92
|
-
|
|
93
|
-
const response = await fetch(source.url);
|
|
94
|
-
if (!response.ok) {
|
|
95
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
96
|
-
}
|
|
97
|
-
const content = await response.text();
|
|
98
|
-
// Validate it's actually Schematron
|
|
99
|
-
if (!content.includes('schematron') && !content.includes('sch:schema')) {
|
|
100
|
-
throw new Error('Downloaded file does not appear to be Schematron');
|
|
101
|
-
}
|
|
102
|
-
// Save to cache
|
|
103
|
-
await fs.writeFile(filePath, content, 'utf-8');
|
|
95
|
+
const fileCount = await this.fetchWithIncludes(source.url, filePath, new Set());
|
|
104
96
|
// Also save metadata
|
|
105
|
-
const metaPath = filePath.replace(
|
|
97
|
+
const metaPath = filePath.replace(/\.sch$/, '.meta.json');
|
|
106
98
|
await fs.writeFile(metaPath, JSON.stringify({
|
|
107
99
|
source: source.name,
|
|
108
100
|
version: source.version,
|
|
109
101
|
url: source.url,
|
|
110
102
|
format: source.format,
|
|
103
|
+
fileCount,
|
|
111
104
|
downloadDate: new Date().toISOString()
|
|
112
105
|
}, null, 2), 'utf-8');
|
|
113
|
-
|
|
106
|
+
await this.writeIndexEntry(source, filePath);
|
|
107
|
+
console.log(`Successfully downloaded: ${source.name} (${fileCount} file${fileCount === 1 ? '' : 's'})`);
|
|
114
108
|
return filePath;
|
|
115
109
|
}
|
|
116
110
|
catch (error) {
|
|
@@ -118,6 +112,87 @@ export class SchematronDownloader {
|
|
|
118
112
|
throw new Error(`Failed to download ${source.name}: ${errorMessage}`);
|
|
119
113
|
}
|
|
120
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Where the entry document of a source lands: one directory per source and
|
|
117
|
+
* version, holding the upstream path so relative includes keep working.
|
|
118
|
+
*/
|
|
119
|
+
entryPathFor(source) {
|
|
120
|
+
return path.join(this.cacheDir, `${source.name}-v${source.version}`, this.repositoryPath(source.url));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The part of a raw URL below the repository and its ref, e.g.
|
|
124
|
+
* `ubl/schematron/EN16931-UBL-validation.sch`.
|
|
125
|
+
*/
|
|
126
|
+
repositoryPath(url) {
|
|
127
|
+
const { pathname } = new URL(url);
|
|
128
|
+
const match = /\/raw\/[^/]+\/(.+)$/.exec(pathname);
|
|
129
|
+
return match ? match[1] : pathname.replace(/^\//, '');
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Fetches one document and, recursively, every sch:include and sch:extends it
|
|
133
|
+
* names. Returns how many files were written.
|
|
134
|
+
*/
|
|
135
|
+
async fetchWithIncludes(url, filePath, seen) {
|
|
136
|
+
if (seen.has(url)) {
|
|
137
|
+
return 0;
|
|
138
|
+
}
|
|
139
|
+
seen.add(url);
|
|
140
|
+
const response = await fetch(url);
|
|
141
|
+
if (!response.ok) {
|
|
142
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText} for ${url}`);
|
|
143
|
+
}
|
|
144
|
+
const content = await response.text();
|
|
145
|
+
// Validate it's actually Schematron
|
|
146
|
+
if (!content.includes('schematron') && !content.includes('sch:schema')) {
|
|
147
|
+
throw new Error(`Downloaded file does not appear to be Schematron: ${url}`);
|
|
148
|
+
}
|
|
149
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
150
|
+
await fs.writeFile(filePath, content, 'utf-8');
|
|
151
|
+
let fileCount = 1;
|
|
152
|
+
for (const href of SchematronDownloader.extractIncludes(content)) {
|
|
153
|
+
const includePath = path.resolve(path.dirname(filePath), href);
|
|
154
|
+
if (!includePath.startsWith(path.resolve(this.cacheDir) + path.sep)) {
|
|
155
|
+
throw new Error(`Schematron include escapes the cache directory: ${href}`);
|
|
156
|
+
}
|
|
157
|
+
fileCount += await this.fetchWithIncludes(new URL(href, url).toString(), includePath, seen);
|
|
158
|
+
}
|
|
159
|
+
return fileCount;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* The href of every sch:include and sch:extends in a schema, whatever prefix the
|
|
163
|
+
* document binds the Schematron namespace to.
|
|
164
|
+
*/
|
|
165
|
+
static extractIncludes(content) {
|
|
166
|
+
const hrefs = [];
|
|
167
|
+
const pattern = /<(?:[A-Za-z0-9_.-]+:)?(?:include|extends)\s+[^>]*href\s*=\s*"([^"]+)"/g;
|
|
168
|
+
let match;
|
|
169
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
170
|
+
hrefs.push(match[1]);
|
|
171
|
+
}
|
|
172
|
+
return hrefs;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Records the entry document of each source, so a consumer finds it without
|
|
176
|
+
* guessing at file names.
|
|
177
|
+
*/
|
|
178
|
+
async writeIndexEntry(source, filePath) {
|
|
179
|
+
const indexPath = path.join(this.cacheDir, 'index.json');
|
|
180
|
+
let index = {};
|
|
181
|
+
try {
|
|
182
|
+
index = JSON.parse(await fs.readFile(indexPath, 'utf-8'));
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
// no index yet
|
|
186
|
+
}
|
|
187
|
+
index[source.name] = {
|
|
188
|
+
entry: path.relative(this.cacheDir, filePath),
|
|
189
|
+
version: source.version,
|
|
190
|
+
format: source.format,
|
|
191
|
+
url: source.url,
|
|
192
|
+
downloadDate: new Date().toISOString(),
|
|
193
|
+
};
|
|
194
|
+
await fs.writeFile(indexPath, `${JSON.stringify(index, null, 2)}\n`, 'utf-8');
|
|
195
|
+
}
|
|
121
196
|
/**
|
|
122
197
|
* Download all Schematron files for a standard
|
|
123
198
|
*/
|
|
@@ -158,39 +233,43 @@ export class SchematronDownloader {
|
|
|
158
233
|
*/
|
|
159
234
|
async getCachedFiles() {
|
|
160
235
|
const files = [];
|
|
161
|
-
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const filePath = path.join(this.cacheDir, entry);
|
|
166
|
-
const metaPath = filePath.replace('.sch', '.meta.json');
|
|
167
|
-
try {
|
|
168
|
-
const metadata = JSON.parse(await fs.readFile(metaPath, 'utf-8'));
|
|
169
|
-
files.push({ path: filePath, metadata });
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
// No metadata file
|
|
173
|
-
files.push({ path: filePath, metadata: null });
|
|
174
|
-
}
|
|
175
|
-
}
|
|
236
|
+
for (const [name, entry] of Object.entries(await this.readIndex())) {
|
|
237
|
+
const filePath = path.join(this.cacheDir, entry.entry);
|
|
238
|
+
if (await this.isCached(filePath)) {
|
|
239
|
+
files.push({ path: filePath, metadata: { source: name, ...entry } });
|
|
176
240
|
}
|
|
177
241
|
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
180
|
-
console.warn(`Failed to list cached files: ${errorMessage}`);
|
|
181
|
-
}
|
|
182
242
|
return files;
|
|
183
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* The index of downloaded entry documents; empty when nothing was downloaded yet.
|
|
246
|
+
*/
|
|
247
|
+
async readIndex() {
|
|
248
|
+
try {
|
|
249
|
+
return JSON.parse(await fs.readFile(path.join(this.cacheDir, 'index.json'), 'utf-8'));
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return {};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* The entry document of one source, or null when it was not downloaded.
|
|
257
|
+
*/
|
|
258
|
+
async getCachedEntry(sourceName) {
|
|
259
|
+
const entry = (await this.readIndex())[sourceName];
|
|
260
|
+
if (!entry) {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
const filePath = path.join(this.cacheDir, entry.entry);
|
|
264
|
+
return (await this.isCached(filePath)) ? filePath : null;
|
|
265
|
+
}
|
|
184
266
|
/**
|
|
185
267
|
* Clear cache
|
|
186
268
|
*/
|
|
187
269
|
async clearCache() {
|
|
188
270
|
try {
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
if (entry.endsWith('.sch') || entry.endsWith('.meta.json')) {
|
|
192
|
-
await fs.unlink(path.join(this.cacheDir, entry));
|
|
193
|
-
}
|
|
271
|
+
for (const entry of await fs.readdir(this.cacheDir)) {
|
|
272
|
+
await fs.rm(path.join(this.cacheDir, entry), { recursive: true, force: true });
|
|
194
273
|
}
|
|
195
274
|
console.log('Schematron cache cleared');
|
|
196
275
|
}
|
|
@@ -222,38 +301,4 @@ export class SchematronDownloader {
|
|
|
222
301
|
console.log('All Schematron files updated');
|
|
223
302
|
}
|
|
224
303
|
}
|
|
225
|
-
/**
|
|
226
|
-
* ISO Schematron skeleton URLs
|
|
227
|
-
* These are needed to compile Schematron to XSLT
|
|
228
|
-
*/
|
|
229
|
-
export const ISO_SCHEMATRON_SKELETONS = {
|
|
230
|
-
'iso_dsdl_include.xsl': 'https://github.com/Schematron/schematron/raw/master/trunk/schematron/code/iso_dsdl_include.xsl',
|
|
231
|
-
'iso_abstract_expand.xsl': 'https://github.com/Schematron/schematron/raw/master/trunk/schematron/code/iso_abstract_expand.xsl',
|
|
232
|
-
'iso_svrl_for_xslt2.xsl': 'https://github.com/Schematron/schematron/raw/master/trunk/schematron/code/iso_svrl_for_xslt2.xsl',
|
|
233
|
-
'iso_schematron_skeleton_for_saxon.xsl': 'https://github.com/Schematron/schematron/raw/master/trunk/schematron/code/iso_schematron_skeleton_for_saxon.xsl'
|
|
234
|
-
};
|
|
235
|
-
/**
|
|
236
|
-
* Download ISO Schematron skeleton files
|
|
237
|
-
*/
|
|
238
|
-
export async function downloadISOSkeletons(targetDir = 'assets_downloaded/schematron/iso') {
|
|
239
|
-
await fs.mkdir(targetDir, { recursive: true });
|
|
240
|
-
console.log('Downloading ISO Schematron skeleton files...');
|
|
241
|
-
for (const [name, url] of Object.entries(ISO_SCHEMATRON_SKELETONS)) {
|
|
242
|
-
try {
|
|
243
|
-
const response = await fetch(url);
|
|
244
|
-
if (!response.ok) {
|
|
245
|
-
throw new Error(`HTTP ${response.status}`);
|
|
246
|
-
}
|
|
247
|
-
const content = await response.text();
|
|
248
|
-
const filePath = path.join(targetDir, name);
|
|
249
|
-
await fs.writeFile(filePath, content, 'utf-8');
|
|
250
|
-
console.log(`Downloaded: ${name}`);
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
254
|
-
console.warn(`Failed to download ${name}: ${errorMessage}`);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
console.log('ISO Schematron skeleton download complete');
|
|
258
|
-
}
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdHJvbi5kb3dubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZm9ybWF0cy92YWxpZGF0aW9uL3NjaGVtYXRyb24uZG93bmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBYXBDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXVDO0lBQ3BFLE9BQU8sRUFBRTtRQUNQO1lBQ0UsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLFFBQVE7WUFDakIsR0FBRyxFQUFFLDZHQUE2RztZQUNsSCxXQUFXLEVBQUUsa0RBQWtEO1lBQy9ELE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRDtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLEdBQUcsRUFBRSw2R0FBNkc7WUFDbEgsV0FBVyxFQUFFLGtEQUFrRDtZQUMvRCxNQUFNLEVBQUUsS0FBSztTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLEdBQUcsRUFBRSxxSEFBcUg7WUFDMUgsV0FBVyxFQUFFLHNEQUFzRDtZQUNuRSxNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0Y7SUFDRCxTQUFTLEVBQUU7UUFDVDtZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEdBQUcsRUFBRSwySEFBMkg7WUFDaEksV0FBVyxFQUFFLG1DQUFtQztZQUNoRCxNQUFNLEVBQUUsS0FBSztTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsZUFBZTtZQUNyQixPQUFPLEVBQUUsT0FBTztZQUNoQixHQUFHLEVBQUUsMkhB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
|
|
304
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdHJvbi5kb3dubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvZm9ybWF0cy92YWxpZGF0aW9uL3NjaGVtYXRyb24uZG93bmxvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBYXBDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQXVDO0lBQ3BFLE9BQU8sRUFBRTtRQUNQO1lBQ0UsSUFBSSxFQUFFLGFBQWE7WUFDbkIsT0FBTyxFQUFFLFFBQVE7WUFDakIsR0FBRyxFQUFFLDZHQUE2RztZQUNsSCxXQUFXLEVBQUUsa0RBQWtEO1lBQy9ELE1BQU0sRUFBRSxLQUFLO1NBQ2Q7UUFDRDtZQUNFLElBQUksRUFBRSxhQUFhO1lBQ25CLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLEdBQUcsRUFBRSw2R0FBNkc7WUFDbEgsV0FBVyxFQUFFLGtEQUFrRDtZQUMvRCxNQUFNLEVBQUUsS0FBSztTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLEdBQUcsRUFBRSxxSEFBcUg7WUFDMUgsV0FBVyxFQUFFLHNEQUFzRDtZQUNuRSxNQUFNLEVBQUUsS0FBSztTQUNkO0tBQ0Y7SUFDRCxTQUFTLEVBQUU7UUFDVDtZQUNFLElBQUksRUFBRSxlQUFlO1lBQ3JCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLEdBQUcsRUFBRSwySEFBMkg7WUFDaEksV0FBVyxFQUFFLG1DQUFtQztZQUNoRCxNQUFNLEVBQUUsS0FBSztTQUNkO1FBQ0Q7WUFDRSxJQUFJLEVBQUUsZUFBZTtZQUNyQixPQUFPLEVBQUUsT0FBTztZQUNoQixHQUFHLEVBQUUsMkhB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
|
|
@@ -22,7 +22,11 @@ export declare class IntegratedValidator {
|
|
|
22
22
|
*/
|
|
23
23
|
loadSchematron(standard: 'EN16931' | 'PEPPOL' | 'XRECHNUNG', format: 'UBL' | 'CII'): Promise<void>;
|
|
24
24
|
/**
|
|
25
|
-
* Get the path to the appropriate Schematron file
|
|
25
|
+
* Get the path to the appropriate Schematron file.
|
|
26
|
+
*
|
|
27
|
+
* The downloader records the entry document of every rule set in its index, so the
|
|
28
|
+
* file is looked up by name rather than guessed from a pattern; an include of the
|
|
29
|
+
* rule set must never be mistaken for an entry document.
|
|
26
30
|
*/
|
|
27
31
|
private getSchematronPath;
|
|
28
32
|
/**
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Integration of official Schematron validation with the EInvoice module
|
|
3
3
|
*/
|
|
4
4
|
import { SchematronValidator, HybridValidator } from './schematron.validator.js';
|
|
5
|
+
import { SchematronDownloader } from './schematron.downloader.js';
|
|
5
6
|
import { EN16931BusinessRulesValidator } from './en16931.business-rules.validator.js';
|
|
6
7
|
import { CodeListValidator } from './codelist.validator.js';
|
|
7
|
-
import * as path from 'path';
|
|
8
8
|
import { promises as fs } from 'fs';
|
|
9
9
|
/**
|
|
10
10
|
* Integrated validator combining TypeScript and Schematron validation
|
|
@@ -53,48 +53,27 @@ export class IntegratedValidator {
|
|
|
53
53
|
}
|
|
54
54
|
await this.schematronValidator.loadSchematron(schematronPath, true);
|
|
55
55
|
if (!this.schematronValidator.canValidate()) {
|
|
56
|
-
throw new Error(`Schematron file
|
|
56
|
+
throw new Error(`Schematron file could not be compiled: ${schematronPath}`);
|
|
57
57
|
}
|
|
58
58
|
this.schematronLoaded = true;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
* Get the path to the appropriate Schematron file
|
|
61
|
+
* Get the path to the appropriate Schematron file.
|
|
62
|
+
*
|
|
63
|
+
* The downloader records the entry document of every rule set in its index, so the
|
|
64
|
+
* file is looked up by name rather than guessed from a pattern; an include of the
|
|
65
|
+
* rule set must never be mistaken for an entry document.
|
|
62
66
|
*/
|
|
63
67
|
async getSchematronPath(standard, format) {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
UBL: 'EN16931-UBL-*.sch',
|
|
69
|
-
CII: 'EN16931-CII-*.sch'
|
|
70
|
-
},
|
|
71
|
-
PEPPOL: {
|
|
72
|
-
UBL: 'PEPPOL-EN16931-UBL-*.sch',
|
|
73
|
-
CII: 'PEPPOL-EN16931-CII-*.sch'
|
|
74
|
-
},
|
|
75
|
-
XRECHNUNG: {
|
|
76
|
-
UBL: 'XRechnung-UBL-*.sch',
|
|
77
|
-
CII: 'XRechnung-CII-*.sch'
|
|
78
|
-
}
|
|
68
|
+
const sourceNames = {
|
|
69
|
+
EN16931: { UBL: 'EN16931-UBL', CII: 'EN16931-CII' },
|
|
70
|
+
PEPPOL: { UBL: 'PEPPOL-EN16931-UBL', CII: 'PEPPOL-EN16931-CII' },
|
|
71
|
+
XRECHNUNG: { UBL: 'XRechnung-UBL', CII: 'XRechnung-CII' }
|
|
79
72
|
};
|
|
80
|
-
const
|
|
81
|
-
if (!
|
|
73
|
+
const sourceName = sourceNames[standard]?.[format];
|
|
74
|
+
if (!sourceName)
|
|
82
75
|
return null;
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
const files = await fs.readdir(basePath);
|
|
86
|
-
const regex = new RegExp(pattern.replace('*', '.*'));
|
|
87
|
-
const matches = files.filter(f => regex.test(f));
|
|
88
|
-
if (matches.length > 0) {
|
|
89
|
-
// Return the most recent version (lexicographically last)
|
|
90
|
-
matches.sort();
|
|
91
|
-
return path.join(basePath, matches[matches.length - 1]);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
// Directory doesn't exist
|
|
96
|
-
}
|
|
97
|
-
return null;
|
|
76
|
+
return new SchematronDownloader().getCachedEntry(sourceName);
|
|
98
77
|
}
|
|
99
78
|
/**
|
|
100
79
|
* Validate an invoice using all available validators
|
|
@@ -113,10 +92,7 @@ export class IntegratedValidator {
|
|
|
113
92
|
if (xmlContent && this.schematronLoaded) {
|
|
114
93
|
try {
|
|
115
94
|
const schematronResults = await this.schematronValidator.validate(xmlContent, {
|
|
116
|
-
includeWarnings: !options.strictMode
|
|
117
|
-
parameters: {
|
|
118
|
-
profile: options.profile
|
|
119
|
-
}
|
|
95
|
+
includeWarnings: !options.strictMode
|
|
120
96
|
});
|
|
121
97
|
results.push(...schematronResults);
|
|
122
98
|
}
|
|
@@ -237,4 +213,4 @@ export async function createStandardValidator(standard, format) {
|
|
|
237
213
|
}
|
|
238
214
|
return validator;
|
|
239
215
|
}
|
|
240
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hdHJvbi5pbnRlZ3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2Zvcm1hdHMvdmFsaWRhdGlvbi9zY2hlbWF0cm9uLmludGVncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRzVELE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQUN0QixlQUFlLENBQWtCO0lBQ2pDLG1CQUFtQixDQUFzQjtJQUN6QyxzQkFBc0IsQ0FBZ0M7SUFDdEQsaUJBQWlCLENBQW9CO0lBQ3JDLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUUxQztRQUNFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSw2QkFBNkIsRUFBRSxDQUFDO1FBQ2xFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFFakQsK0NBQStDO1FBQy9DLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QjtRQUMvQixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUM7WUFD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
|
|
@@ -1,49 +1,69 @@
|
|
|
1
|
+
import * as plugins from '../../plugins.js';
|
|
1
2
|
import type { ValidationResult } from './validation.types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Schematron validation options
|
|
4
5
|
*/
|
|
5
6
|
export interface SchematronOptions {
|
|
6
7
|
phase?: string;
|
|
7
|
-
parameters?: Record<string, any>;
|
|
8
8
|
includeWarnings?: boolean;
|
|
9
9
|
maxErrors?: number;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
|
|
12
|
+
* Turns one failed assertion or fired report into a ValidationResult.
|
|
13
|
+
*/
|
|
14
|
+
export declare function schematronFailureToValidationResult(failure: plugins.smartxmlSchematron.ISchematronFailure): ValidationResult;
|
|
15
|
+
/**
|
|
16
|
+
* Turns a whole report into results. An expression the engine could not evaluate has
|
|
17
|
+
* proven nothing, so it is reported as an error rather than passing silently.
|
|
18
|
+
*/
|
|
19
|
+
export declare function schematronReportToValidationResults(report: plugins.smartxmlSchematron.ISchematronReport): ValidationResult[];
|
|
20
|
+
/**
|
|
21
|
+
* Applies the reporting options of a validation call to a result list.
|
|
22
|
+
*/
|
|
23
|
+
export declare function applySchematronOptions(results: ValidationResult[], options: SchematronOptions): ValidationResult[];
|
|
24
|
+
/**
|
|
25
|
+
* Schematron validation engine.
|
|
26
|
+
*
|
|
27
|
+
* The rules are interpreted on the XPath engine of `@push.rocks/smartxml`, so the
|
|
28
|
+
* published `.sch` files of CEN, KoSIT and PEPPOL run as they are downloaded; no
|
|
29
|
+
* XSLT processor and no precompiled stylesheet is involved.
|
|
14
30
|
*/
|
|
15
31
|
export declare class SchematronValidator {
|
|
16
32
|
private schematronRules;
|
|
17
|
-
private
|
|
18
|
-
private
|
|
19
|
-
private
|
|
33
|
+
private schema?;
|
|
34
|
+
private schemaError?;
|
|
35
|
+
private baseUri?;
|
|
36
|
+
/** one compiled schema per activated phase; a phase selects patterns at compile time */
|
|
37
|
+
private schemasByPhase;
|
|
20
38
|
constructor(schematronRules?: string);
|
|
21
39
|
/**
|
|
22
40
|
* Load Schematron rules from file or string
|
|
23
41
|
*/
|
|
24
42
|
loadSchematron(source: string, isFilePath?: boolean): Promise<void>;
|
|
25
43
|
/**
|
|
26
|
-
*
|
|
44
|
+
* Compiles the loaded rules. A schema that does not compile keeps its reason, so
|
|
45
|
+
* validate() can report it instead of load failing far from the cause.
|
|
27
46
|
*/
|
|
28
|
-
|
|
47
|
+
private compile;
|
|
48
|
+
private compileForPhase;
|
|
29
49
|
/**
|
|
30
|
-
*
|
|
50
|
+
* The schema for one phase. A phase activates a subset of the patterns, which the
|
|
51
|
+
* engine resolves while compiling, so each phase gets its own compiled schema.
|
|
31
52
|
*/
|
|
32
|
-
private
|
|
53
|
+
private schemaForPhase;
|
|
33
54
|
/**
|
|
34
|
-
*
|
|
55
|
+
* Validate an XML document against loaded Schematron rules
|
|
35
56
|
*/
|
|
36
|
-
|
|
57
|
+
validate(xmlContent: string, options?: SchematronOptions): Promise<ValidationResult[]>;
|
|
37
58
|
/**
|
|
38
59
|
* Check if validator has rules loaded
|
|
39
60
|
*/
|
|
40
61
|
hasRules(): boolean;
|
|
41
62
|
/**
|
|
42
|
-
* Check
|
|
63
|
+
* Check whether the loaded rules compiled and can be executed.
|
|
43
64
|
*/
|
|
44
65
|
canValidate(): boolean;
|
|
45
|
-
private
|
|
46
|
-
private createUnavailableResult;
|
|
66
|
+
private createUnusableResult;
|
|
47
67
|
/**
|
|
48
68
|
* Get list of available phases from Schematron
|
|
49
69
|
*/
|