12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- /** @typedef {import("ajv").Ajv} Ajv */
- /** @typedef {import("../validate").SchemaUtilErrorObject} SchemaUtilErrorObject */
- /**
- *
- * @param {string} data
- * @param {object} schema
- * @param {string} message
- * @returns {object} // Todo `returns` should be `SchemaUtilErrorObject`
- */
- function errorMessage(message, schema, data) {
- return {
- keyword: 'absolutePath',
- params: {
- absolutePath: data
- },
- message,
- parentSchema: schema
- };
- }
- /**
- * @param {boolean} shouldBeAbsolute
- * @param {object} schema
- * @param {string} data
- * @returns {object}
- */
- function getErrorFor(shouldBeAbsolute, schema, data) {
- 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(message, schema, data);
- }
- /**
- *
- * @param {Ajv} ajv
- * @returns {Ajv}
- */
- function addAbsolutePathKeyword(ajv) {
- ajv.addKeyword('absolutePath', {
- errors: true,
- type: 'string',
- compile(schema, parentSchema) {
- /**
- * @param {any} data
- * @returns {boolean}
- */
- function callback(data) {
- let passes = true;
- const isExclamationMarkPresent = data.includes('!');
- if (isExclamationMarkPresent) {
- callback.errors = [errorMessage(`The provided value ${JSON.stringify(data)} contains exclamation mark (!) which is not allowed because it's reserved for loader syntax.`, parentSchema, data)];
- passes = false;
- } // ?:[A-Za-z]:\\ - Windows absolute path
- // \\\\ - Windows network absolute path
- // \/ - Unix-like OS absolute path
- const isCorrectAbsolutePath = schema === /^(?:[A-Za-z]:(\\|\/)|\\\\|\/)/.test(data);
- if (!isCorrectAbsolutePath) {
- callback.errors = [getErrorFor(schema, parentSchema, data)];
- passes = false;
- }
- return passes;
- }
- /** @type {null | Array<SchemaUtilErrorObject>}*/
- callback.errors = [];
- return callback;
- }
- });
- return ajv;
- }
- var _default = addAbsolutePathKeyword;
- exports.default = _default;
|