#!/usr/bin/env 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;