Files
einvoice/ts_install/download-schematron.ts
T

79 lines
2.8 KiB
JavaScript

#!/usr/bin/env node
/// <reference types="node" />
/**
* Script to download official Schematron files for e-invoice validation
*/
const schematronDownloaderModulePath = '../dist_ts/formats/validation/schematron.downloader.js';
async function createDownloader() {
const { SchematronDownloader } = await import(schematronDownloaderModulePath);
const downloader = new SchematronDownloader('assets_downloaded/schematron');
await downloader.initialize();
return downloader;
}
async function main() {
console.log('📥 Starting Schematron download...\n');
const downloader = await createDownloader();
// Download EN16931 Schematron files
console.log('🔵 Downloading EN16931 Schematron files...');
try {
const en16931Paths = await downloader.downloadStandard('EN16931');
console.log(`✅ Downloaded ${en16931Paths.length} EN16931 files`);
en16931Paths.forEach((p: string) => console.log(` - ${p}`));
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error(`❌ Failed to download EN16931: ${errorMessage}`);
}
console.log('\n🔵 Downloading PEPPOL Schematron files...');
try {
const peppolPaths = await downloader.downloadStandard('PEPPOL');
console.log(`✅ Downloaded ${peppolPaths.length} PEPPOL files`);
peppolPaths.forEach((p: string) => console.log(` - ${p}`));
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error(`❌ Failed to download PEPPOL: ${errorMessage}`);
}
console.log('\n🔵 Downloading XRechnung Schematron files...');
try {
const xrechnungPaths = await downloader.downloadStandard('XRECHNUNG');
console.log(`✅ Downloaded ${xrechnungPaths.length} XRechnung files`);
xrechnungPaths.forEach((p: string) => console.log(` - ${p}`));
} catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error);
console.error(`❌ Failed to download XRechnung: ${errorMessage}`);
}
// List cached files
console.log('\n📂 Cached Schematron files:');
const cached = await downloader.getCachedFiles();
cached.forEach((file: { path: string; metadata: any }) => {
if (file.metadata) {
console.log(` - ${file.path}`);
console.log(` Version: ${file.metadata.version}`);
console.log(` Format: ${file.metadata.format}`);
console.log(` Downloaded: ${file.metadata.downloadDate}`);
} else {
console.log(` - ${file.path} (no metadata)`);
}
});
console.log('\n✅ Schematron download complete!');
}
// Run if executed directly
if (import.meta.url === `file://${process.argv[1]}`) {
main().catch(error => {
console.error('❌ Script failed:', error);
process.exit(1);
});
}
export default main;