UNPKG

webpack

Version:

Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.

56 lines (47 loc) 1.36 kB
"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("!"); const isCorrectAbsoluteOrRelativePath = expected === /^(?:[A-Za-z]:\\|\/)/.test(data); 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; } if (!isCorrectAbsoluteOrRelativePath) { callback.errors = [getErrorFor(expected, data, schema)]; passes = false; } return passes; } callback.errors = []; return callback; } });