esvit-node-schematron
Version:
A pure-JS Schematron implementation for Node, browsers and CLI
42 lines (36 loc) • 947 B
JavaScript
;
const fs = require('fs');
const { Schema } = require('../dist/index');
async function validateFile(schema, options, fileName) {
try {
const content = await new Promise((resolve, reject) =>
fs.readFile(fileName, 'utf8', (error, data) => (error ? reject(error) : resolve(data)))
);
process.send({
$fileName: fileName,
$value: schema.validateString(content, options).map(result => result.toJson())
});
} catch (error) {
process.send({
$fileName: fileName,
$error: {
message: error.message
}
});
}
}
process.on('message', async message => {
if (message.type === 'analyze') {
const schema = Schema.fromJson(message.schema);
await Promise.all(message.fileList.map(validateFile.bind(null, schema, message.options)));
process.send(null);
return;
}
if (message.type === 'kill') {
process.exit();
return;
}
console.log('Unknown message type', message);
process.exit(1);
return;
});