diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/webpack/schemas/ajv.absolutePath.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/webpack/schemas/ajv.absolutePath.js')
| -rw-r--r-- | node_modules/webpack/schemas/ajv.absolutePath.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/node_modules/webpack/schemas/ajv.absolutePath.js b/node_modules/webpack/schemas/ajv.absolutePath.js new file mode 100644 index 00000000..8ef11f43 --- /dev/null +++ b/node_modules/webpack/schemas/ajv.absolutePath.js @@ -0,0 +1,55 @@ +"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; + } + }); |
