You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"use strict";
const errorMessage = (schema, data, message) => ({ keyword: "absolutePath", params: { absolutePath: data }, message: message, parentSchema: schema });
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 errorMessage(schema, data, message); };
module.exports = ajv => ajv.addKeyword("absolutePath", { errors: true, type: "string", compile(expected, schema) { function callback(data) { let passes = true; const isExclamationMarkPresent = data.includes("!");
if (isExclamationMarkPresent) { callback.errors = [ errorMessage( schema, data, `The provided value ${JSON.stringify( data )} contains exclamation mark (!) which is not allowed because it's reserved for loader syntax.`
) ]; passes = false; } // ?:[A-Za-z]:\\ - Windows absolute path
// \\\\ - Windows network absolute path
// \/ - Unix-like OS absolute path
const isCorrectAbsolutePath = expected === /^(?:[A-Za-z]:\\|\\\\|\/)/.test(data); if (!isCorrectAbsolutePath) { callback.errors = [getErrorFor(expected, data, schema)]; passes = false; }
return passes; } callback.errors = [];
return callback; } });
|