30 lines
		
	
	
		
			780 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			780 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"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;
 | 
						|
	}
 | 
						|
});
 |