ajv.absolutePath.js
780 Bytes
"use strict";
const getErrorFor = (shouldBeAbsolute, data, schema) => {
const message = shouldBeAbsolute ?
`The provided value ${JSON.stringify(data)} is not an absolute path!`
: `A relative path is expected. However the provided value ${JSON.stringify(data)} is an absolute path!`;
return {
keyword: "absolutePath",
params: { absolutePath: data },
message: message,
parentSchema: schema,
};
};
module.exports = (ajv) => ajv.addKeyword("absolutePath", {
errors: true,
type: "string",
compile(expected, schema) {
function callback(data) {
const passes = expected === /^(?:[A-Za-z]:\\|\/)/.test(data);
if(!passes) {
callback.errors = [getErrorFor(expected, data, schema)];
}
return passes;
}
callback.errors = [];
return callback;
}
});