From 24697a3ed9696dd9d7d04163e86c0153287efbab Mon Sep 17 00:00:00 2001 From: Arun Bose Date: Sat, 16 Oct 2021 18:06:13 +0530 Subject: [PATCH] fix: rename across directories working --- .gitignore | 1 + dist/filer.js | 10712 ++++++++++++++++- dist/filer.js.map | 2 +- dist/filer.min.js | 182 +- dist/filer.min.js.map | 2 +- package-lock.json | 18460 ++++++++++++++++++++++++++++- src/filesystem/implementation.js | 20 +- tests/spec/fs.rename.spec.js | 31 +- 8 files changed, 29344 insertions(+), 66 deletions(-) diff --git a/.gitignore b/.gitignore index a347237..9a547e6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ node_modules .env *~ .vscode +.idea # Parcel build dirs .cache diff --git a/dist/filer.js b/dist/filer.js index 04dc454..897001d 100644 --- a/dist/filer.js +++ b/dist/filer.js @@ -726,7 +726,7 @@ process.cwd = function () { var nodePath = require('path'); -var filerPath = Object.create(nodePath); +var filerPath = Object.assign({}, nodePath); /** * Patch path.basename() to return / vs. '' */ @@ -6067,7 +6067,19 @@ Stats.prototype.isSocket = Stats.prototype.isFIFO = Stats.prototype.isCharacterD }; module.exports = Stats; -},{"./constants.js":"iJA9","./path.js":"UzoP"}],"bsBG":[function(require,module,exports) { +},{"./constants.js":"iJA9","./path.js":"UzoP"}],"q4Wu":[function(require,module,exports) { +'use strict'; + +var Stats = require('./stats.js'); + +function Dirent(path, fileNode, devName) { + this.constructor = Dirent; + Stats.call(this, path, fileNode, devName); +} + +Dirent.prototype = Stats.prototype; +module.exports = Dirent; +},{"./stats.js":"dsCT"}],"bsBG":[function(require,module,exports) { var Buffer = require("buffer").Buffer; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } @@ -6080,6 +6092,8 @@ var isAbsolutePath = Path.isAbsolute; var shared = require('../shared.js'); +var async = require('../../lib/async.js'); + var Constants = require('../constants.js'); var NODE_TYPE_FILE = Constants.NODE_TYPE_FILE; @@ -6113,6 +6127,8 @@ var SuperNode = require('../super-node.js'); var Node = require('../node.js'); +var Dirent = require('../dirent.js'); + var Stats = require('../stats.js'); /** * Update node times. Only passed times are modified (undefined times are ignored) @@ -7267,8 +7283,15 @@ function unlink_node(context, path, callback) { find_node(context, parentPath, read_directory_data); } -function read_directory(context, path, callback) { +function read_directory(context, path, options, callback) { path = normalize(path); + + if (typeof options === 'function') { + callback = options; + options = {}; + } + + options = validate_directory_options(options); var directoryNode; var directoryData; @@ -7278,7 +7301,44 @@ function read_directory(context, path, callback) { } else { directoryData = result; var files = Object.keys(directoryData); - callback(null, files); + + if (options.encoding) { + var fileBuffers = files.map(function (file) { + return Buffer.from(file); + }); + + if (options.encoding === 'buffer') { + files = fileBuffers; + } else { + files = fileBuffers.map(function (fileBuffer) { + return fileBuffer.toString(options.encoding); + }); + } + } + + if (options.withFileTypes) { + var dirEnts = []; // eslint-disable-next-line no-inner-declarations + + function to_dir_entry(file, callback) { + var filename = Buffer.from(file, options.encoding).toString(); + var filepath = Path.join(path, filename); + get_dir_entry(context, filepath, function (error, dirEnt) { + if (error) { + callback(error); + } + + dirEnt.name = file; + dirEnts.push(dirEnt); + callback(); + }); + } + + async.eachSeries(files, to_dir_entry, function (error) { + callback(error, dirEnts); + }); + } else { + callback(null, files); + } } } @@ -7296,6 +7356,37 @@ function read_directory(context, path, callback) { find_node(context, path, read_directory_data); } +function get_dir_entry(context, path, callback) { + function check_result(error, result) { + if (error) { + callback(error); + } else { + var stats = new Dirent(path, result, context.name); + callback(null, stats); + } + } + + lstat_file(context, path, check_result); +} + +function validate_directory_options(options, enc) { + if (!options) { + options = { + encoding: enc + }; + } else if (typeof options === 'function') { + options = { + encoding: enc + }; + } else if (typeof options === 'string') { + options = { + encoding: options + }; + } + + return options; +} + function make_symbolic_link(context, srcpath, dstpath, callback) { dstpath = normalize(dstpath); var name = basename(dstpath); @@ -8030,14 +8121,18 @@ function writeFile(context, path, data, options, callback) { return callback(new Errors.EINVAL('flags is not valid', path)); } - data = data || ''; + if (!Buffer.isBuffer(data)) { + if (typeof data === 'number') { + data = '' + data; + } - if (typeof data === 'number') { - data = '' + data; - } + data = data || ''; - if (typeof data === 'string' && options.encoding === 'utf8') { - data = Buffer.from(data); + if (typeof data !== 'string') { + data = Buffer.from(data.toString()); + } else { + data = Buffer.from(data || '', options.encoding || 'utf8'); + } } open_file(context, path, flags, function (err, fileNode) { @@ -8334,8 +8429,8 @@ function lseek(context, fd, offset, whence, callback) { } } -function readdir(context, path, callback) { - read_directory(context, path, callback); +function readdir(context, path, options, callback) { + read_directory(context, path, options, callback); } function toUnixTimestamp(time) { @@ -8426,7 +8521,7 @@ function rename(context, oldpath, newpath, callback) { oldpath = normalize(oldpath); newpath = normalize(newpath); var oldParentPath = Path.dirname(oldpath); - var newParentPath = Path.dirname(oldpath); + var newParentPath = Path.dirname(newpath); var oldName = Path.basename(oldpath); var newName = Path.basename(newpath); var oldParentDirectory, oldParentData; @@ -8633,7 +8728,7 @@ module.exports = { writeFile: writeFile, write: write }; -},{"../path.js":"UzoP","../shared.js":"zBMa","../constants.js":"iJA9","../errors.js":"p8GN","../directory-entry.js":"ZECt","../open-files.js":"osLK","../open-file-description.js":"XWaV","../super-node.js":"JEp0","../node.js":"KKNo","../stats.js":"dsCT","buffer":"dskh"}],"GMi4":[function(require,module,exports) { +},{"../path.js":"UzoP","../shared.js":"zBMa","../../lib/async.js":"u4Zs","../constants.js":"iJA9","../errors.js":"p8GN","../directory-entry.js":"ZECt","../open-files.js":"osLK","../open-file-description.js":"XWaV","../super-node.js":"JEp0","../node.js":"KKNo","../dirent.js":"q4Wu","../stats.js":"dsCT","buffer":"dskh"}],"GMi4":[function(require,module,exports) { var Buffer = require("buffer").Buffer; 'use strict'; @@ -9163,7 +9258,10589 @@ function FileSystem(options, callback) { FileSystem.providers = providers; module.exports = FileSystem; -},{"es6-promisify":"c0Ea","../path.js":"UzoP","../providers/index.js":"AiW7","../shell/shell.js":"D1Ra","../../lib/intercom.js":"u7Jv","../fs-watcher.js":"VLEe","../errors.js":"p8GN","../shared.js":"zBMa","../constants.js":"iJA9","./implementation.js":"bsBG","buffer":"dskh"}],"Focm":[function(require,module,exports) { +},{"es6-promisify":"c0Ea","../path.js":"UzoP","../providers/index.js":"AiW7","../shell/shell.js":"D1Ra","../../lib/intercom.js":"u7Jv","../fs-watcher.js":"VLEe","../errors.js":"p8GN","../shared.js":"zBMa","../constants.js":"iJA9","./implementation.js":"bsBG","buffer":"dskh"}],"iIhC":[function(require,module,exports) { +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; +/** @typedef {import("ajv").Ajv} Ajv */ + +/** @typedef {import("ajv").ValidateFunction} ValidateFunction */ + +/** @typedef {import("../validate").SchemaUtilErrorObject} SchemaUtilErrorObject */ + +/** + * @param {string} message + * @param {object} schema + * @param {string} data + * @returns {SchemaUtilErrorObject} + */ + +function errorMessage(message, schema, data) { + return { + // @ts-ignore + // eslint-disable-next-line no-undefined + dataPath: undefined, + // @ts-ignore + // eslint-disable-next-line no-undefined + schemaPath: undefined, + keyword: 'absolutePath', + params: { + absolutePath: data + }, + message: message, + parentSchema: schema + }; +} +/** + * @param {boolean} shouldBeAbsolute + * @param {object} schema + * @param {string} data + * @returns {SchemaUtilErrorObject} + */ + + +function getErrorFor(shouldBeAbsolute, schema, data) { + var message = shouldBeAbsolute ? "The provided value ".concat(JSON.stringify(data), " is not an absolute path!") : "A relative path is expected. However, the provided value ".concat(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: function compile(schema, parentSchema) { + /** @type {ValidateFunction} */ + var callback = function callback(data) { + var passes = true; + var isExclamationMarkPresent = data.includes('!'); + + if (isExclamationMarkPresent) { + callback.errors = [errorMessage("The provided value ".concat(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 + + + var isCorrectAbsolutePath = schema === /^(?:[A-Za-z]:(\\|\/)|\\\\|\/)/.test(data); + + if (!isCorrectAbsolutePath) { + callback.errors = [getErrorFor(schema, parentSchema, data)]; + passes = false; + } + + return passes; + }; + + callback.errors = []; + return callback; + } + }); + return ajv; +} + +var _default = addAbsolutePathKeyword; +exports.default = _default; +},{}],"GNtl":[function(require,module,exports) { +"use strict"; +/** + * @typedef {[number, boolean]} RangeValue + */ + +/** + * @callback RangeValueCallback + * @param {RangeValue} rangeValue + * @returns {boolean} + */ + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var Range = /*#__PURE__*/function () { + _createClass(Range, null, [{ + key: "getOperator", + + /** + * @param {"left" | "right"} side + * @param {boolean} exclusive + * @returns {">" | ">=" | "<" | "<="} + */ + value: function getOperator(side, exclusive) { + if (side === 'left') { + return exclusive ? '>' : '>='; + } + + return exclusive ? '<' : '<='; + } + /** + * @param {number} value + * @param {boolean} logic is not logic applied + * @param {boolean} exclusive is range exclusive + * @returns {string} + */ + + }, { + key: "formatRight", + value: function formatRight(value, logic, exclusive) { + if (logic === false) { + return Range.formatLeft(value, !logic, !exclusive); + } + + return "should be ".concat(Range.getOperator('right', exclusive), " ").concat(value); + } + /** + * @param {number} value + * @param {boolean} logic is not logic applied + * @param {boolean} exclusive is range exclusive + * @returns {string} + */ + + }, { + key: "formatLeft", + value: function formatLeft(value, logic, exclusive) { + if (logic === false) { + return Range.formatRight(value, !logic, !exclusive); + } + + return "should be ".concat(Range.getOperator('left', exclusive), " ").concat(value); + } + /** + * @param {number} start left side value + * @param {number} end right side value + * @param {boolean} startExclusive is range exclusive from left side + * @param {boolean} endExclusive is range exclusive from right side + * @param {boolean} logic is not logic applied + * @returns {string} + */ + + }, { + key: "formatRange", + value: function formatRange(start, end, startExclusive, endExclusive, logic) { + var result = 'should be'; + result += " ".concat(Range.getOperator(logic ? 'left' : 'right', logic ? startExclusive : !startExclusive), " ").concat(start, " "); + result += logic ? 'and' : 'or'; + result += " ".concat(Range.getOperator(logic ? 'right' : 'left', logic ? endExclusive : !endExclusive), " ").concat(end); + return result; + } + /** + * @param {Array} values + * @param {boolean} logic is not logic applied + * @return {RangeValue} computed value and it's exclusive flag + */ + + }, { + key: "getRangeValue", + value: function getRangeValue(values, logic) { + var minMax = logic ? Infinity : -Infinity; + var j = -1; + var predicate = logic ? + /** @type {RangeValueCallback} */ + function (_ref) { + var _ref2 = _slicedToArray(_ref, 1), + value = _ref2[0]; + + return value <= minMax; + } : + /** @type {RangeValueCallback} */ + function (_ref3) { + var _ref4 = _slicedToArray(_ref3, 1), + value = _ref4[0]; + + return value >= minMax; + }; + + for (var i = 0; i < values.length; i++) { + if (predicate(values[i])) { + var _values$i = _slicedToArray(values[i], 1); + + minMax = _values$i[0]; + j = i; + } + } + + if (j > -1) { + return values[j]; + } + + return [Infinity, true]; + } + }]); + + function Range() { + _classCallCheck(this, Range); + + /** @type {Array} */ + this._left = []; + /** @type {Array} */ + + this._right = []; + } + /** + * @param {number} value + * @param {boolean=} exclusive + */ + + + _createClass(Range, [{ + key: "left", + value: function left(value) { + var exclusive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + this._left.push([value, exclusive]); + } + /** + * @param {number} value + * @param {boolean=} exclusive + */ + + }, { + key: "right", + value: function right(value) { + var exclusive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + this._right.push([value, exclusive]); + } + /** + * @param {boolean} logic is not logic applied + * @return {string} "smart" range string representation + */ + + }, { + key: "format", + value: function format() { + var logic = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + + var _Range$getRangeValue = Range.getRangeValue(this._left, logic), + _Range$getRangeValue2 = _slicedToArray(_Range$getRangeValue, 2), + start = _Range$getRangeValue2[0], + leftExclusive = _Range$getRangeValue2[1]; + + var _Range$getRangeValue3 = Range.getRangeValue(this._right, !logic), + _Range$getRangeValue4 = _slicedToArray(_Range$getRangeValue3, 2), + end = _Range$getRangeValue4[0], + rightExclusive = _Range$getRangeValue4[1]; + + if (!Number.isFinite(start) && !Number.isFinite(end)) { + return ''; + } + + var realStart = leftExclusive ? start + 1 : start; + var realEnd = rightExclusive ? end - 1 : end; // e.g. 5 < x < 7, 5 < x <= 6, 6 <= x <= 6 + + if (realStart === realEnd) { + return "should be ".concat(logic ? '' : '!', "= ").concat(realStart); + } // e.g. 4 < x < ∞ + + + if (Number.isFinite(start) && !Number.isFinite(end)) { + return Range.formatLeft(start, logic, leftExclusive); + } // e.g. ∞ < x < 4 + + + if (!Number.isFinite(start) && Number.isFinite(end)) { + return Range.formatRight(end, logic, rightExclusive); + } + + return Range.formatRange(start, end, leftExclusive, rightExclusive, logic); + } + }]); + + return Range; +}(); + +module.exports = Range; +},{}],"SqDh":[function(require,module,exports) { +"use strict"; + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var Range = require('./Range'); +/** @typedef {import("../validate").Schema} Schema */ + +/** + * @param {Schema} schema + * @param {boolean} logic + * @return {string[]} + */ + + +module.exports.stringHints = function stringHints(schema, logic) { + var hints = []; + var type = 'string'; + + var currentSchema = _objectSpread({}, schema); + + if (!logic) { + var tmpLength = currentSchema.minLength; + var tmpFormat = currentSchema.formatMinimum; + var tmpExclusive = currentSchema.formatExclusiveMaximum; + currentSchema.minLength = currentSchema.maxLength; + currentSchema.maxLength = tmpLength; + currentSchema.formatMinimum = currentSchema.formatMaximum; + currentSchema.formatMaximum = tmpFormat; + currentSchema.formatExclusiveMaximum = !currentSchema.formatExclusiveMinimum; + currentSchema.formatExclusiveMinimum = !tmpExclusive; + } + + if (typeof currentSchema.minLength === 'number') { + if (currentSchema.minLength === 1) { + type = 'non-empty string'; + } else { + var length = Math.max(currentSchema.minLength - 1, 0); + hints.push("should be longer than ".concat(length, " character").concat(length > 1 ? 's' : '')); + } + } + + if (typeof currentSchema.maxLength === 'number') { + if (currentSchema.maxLength === 0) { + type = 'empty string'; + } else { + var _length = currentSchema.maxLength + 1; + + hints.push("should be shorter than ".concat(_length, " character").concat(_length > 1 ? 's' : '')); + } + } + + if (currentSchema.pattern) { + hints.push("should".concat(logic ? '' : ' not', " match pattern ").concat(JSON.stringify(currentSchema.pattern))); + } + + if (currentSchema.format) { + hints.push("should".concat(logic ? '' : ' not', " match format ").concat(JSON.stringify(currentSchema.format))); + } + + if (currentSchema.formatMinimum) { + hints.push("should be ".concat(currentSchema.formatExclusiveMinimum ? '>' : '>=', " ").concat(JSON.stringify(currentSchema.formatMinimum))); + } + + if (currentSchema.formatMaximum) { + hints.push("should be ".concat(currentSchema.formatExclusiveMaximum ? '<' : '<=', " ").concat(JSON.stringify(currentSchema.formatMaximum))); + } + + return [type].concat(hints); +}; +/** + * @param {Schema} schema + * @param {boolean} logic + * @return {string[]} + */ + + +module.exports.numberHints = function numberHints(schema, logic) { + var hints = [schema.type === 'integer' ? 'integer' : 'number']; + var range = new Range(); + + if (typeof schema.minimum === 'number') { + range.left(schema.minimum); + } + + if (typeof schema.exclusiveMinimum === 'number') { + range.left(schema.exclusiveMinimum, true); + } + + if (typeof schema.maximum === 'number') { + range.right(schema.maximum); + } + + if (typeof schema.exclusiveMaximum === 'number') { + range.right(schema.exclusiveMaximum, true); + } + + var rangeFormat = range.format(logic); + + if (rangeFormat) { + hints.push(rangeFormat); + } + + if (typeof schema.multipleOf === 'number') { + hints.push("should".concat(logic ? '' : ' not', " be multiple of ").concat(schema.multipleOf)); + } + + return hints; +}; +},{"./Range":"GNtl"}],"ySUA":[function(require,module,exports) { +"use strict"; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); } + +function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); } + +function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } + +function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _require = require('./util/hints'), + stringHints = _require.stringHints, + numberHints = _require.numberHints; +/** @typedef {import("json-schema").JSONSchema6} JSONSchema6 */ + +/** @typedef {import("json-schema").JSONSchema7} JSONSchema7 */ + +/** @typedef {import("./validate").Schema} Schema */ + +/** @typedef {import("./validate").ValidationErrorConfiguration} ValidationErrorConfiguration */ + +/** @typedef {import("./validate").PostFormatter} PostFormatter */ + +/** @typedef {import("./validate").SchemaUtilErrorObject} SchemaUtilErrorObject */ + +/** @enum {number} */ + + +var SPECIFICITY = { + type: 1, + not: 1, + oneOf: 1, + anyOf: 1, + if: 1, + enum: 1, + const: 1, + instanceof: 1, + required: 2, + pattern: 2, + patternRequired: 2, + format: 2, + formatMinimum: 2, + formatMaximum: 2, + minimum: 2, + exclusiveMinimum: 2, + maximum: 2, + exclusiveMaximum: 2, + multipleOf: 2, + uniqueItems: 2, + contains: 2, + minLength: 2, + maxLength: 2, + minItems: 2, + maxItems: 2, + minProperties: 2, + maxProperties: 2, + dependencies: 2, + propertyNames: 2, + additionalItems: 2, + additionalProperties: 2, + absolutePath: 2 +}; +/** + * + * @param {Array} array + * @param {(item: SchemaUtilErrorObject) => number} fn + * @returns {Array} + */ + +function filterMax(array, fn) { + var evaluatedMax = array.reduce(function (max, item) { + return Math.max(max, fn(item)); + }, 0); + return array.filter(function (item) { + return fn(item) === evaluatedMax; + }); +} +/** + * + * @param {Array} children + * @returns {Array} + */ + + +function filterChildren(children) { + var newChildren = children; + newChildren = filterMax(newChildren, + /** + * + * @param {SchemaUtilErrorObject} error + * @returns {number} + */ + function (error) { + return error.dataPath ? error.dataPath.length : 0; + }); + newChildren = filterMax(newChildren, + /** + * @param {SchemaUtilErrorObject} error + * @returns {number} + */ + function (error) { + return SPECIFICITY[ + /** @type {keyof typeof SPECIFICITY} */ + error.keyword] || 2; + }); + return newChildren; +} +/** + * Find all children errors + * @param {Array} children + * @param {Array} schemaPaths + * @return {number} returns index of first child + */ + + +function findAllChildren(children, schemaPaths) { + var i = children.length - 1; + + var predicate = + /** + * @param {string} schemaPath + * @returns {boolean} + */ + function predicate(schemaPath) { + return children[i].schemaPath.indexOf(schemaPath) !== 0; + }; + + while (i > -1 && !schemaPaths.every(predicate)) { + if (children[i].keyword === 'anyOf' || children[i].keyword === 'oneOf') { + var refs = extractRefs(children[i]); + var childrenStart = findAllChildren(children.slice(0, i), refs.concat(children[i].schemaPath)); + i = childrenStart - 1; + } else { + i -= 1; + } + } + + return i + 1; +} +/** + * Extracts all refs from schema + * @param {SchemaUtilErrorObject} error + * @return {Array} + */ + + +function extractRefs(error) { + var schema = error.schema; + + if (!Array.isArray(schema)) { + return []; + } + + return schema.map(function (_ref) { + var $ref = _ref.$ref; + return $ref; + }).filter(function (s) { + return s; + }); +} +/** + * Groups children by their first level parent (assuming that error is root) + * @param {Array} children + * @return {Array} + */ + + +function groupChildrenByFirstChild(children) { + var result = []; + var i = children.length - 1; + + while (i > 0) { + var child = children[i]; + + if (child.keyword === 'anyOf' || child.keyword === 'oneOf') { + var refs = extractRefs(child); + var childrenStart = findAllChildren(children.slice(0, i), refs.concat(child.schemaPath)); + + if (childrenStart !== i) { + result.push(Object.assign({}, child, { + children: children.slice(childrenStart, i) + })); + i = childrenStart; + } else { + result.push(child); + } + } else { + result.push(child); + } + + i -= 1; + } + + if (i === 0) { + result.push(children[i]); + } + + return result.reverse(); +} +/** + * @param {string} str + * @param {string} prefix + * @returns {string} + */ + + +function indent(str, prefix) { + return str.replace(/\n(?!$)/g, "\n".concat(prefix)); +} +/** + * @param {Schema} schema + * @returns {schema is (Schema & {not: Schema})} + */ + + +function hasNotInSchema(schema) { + return !!schema.not; +} +/** + * @param {Schema} schema + * @return {Schema} + */ + + +function findFirstTypedSchema(schema) { + if (hasNotInSchema(schema)) { + return findFirstTypedSchema(schema.not); + } + + return schema; +} +/** + * @param {Schema} schema + * @return {boolean} + */ + + +function canApplyNot(schema) { + var typedSchema = findFirstTypedSchema(schema); + return likeNumber(typedSchema) || likeInteger(typedSchema) || likeString(typedSchema) || likeNull(typedSchema) || likeBoolean(typedSchema); +} +/** + * @param {any} maybeObj + * @returns {boolean} + */ + + +function isObject(maybeObj) { + return _typeof(maybeObj) === 'object' && maybeObj !== null; +} +/** + * @param {Schema} schema + * @returns {boolean} + */ + + +function likeNumber(schema) { + return schema.type === 'number' || typeof schema.minimum !== 'undefined' || typeof schema.exclusiveMinimum !== 'undefined' || typeof schema.maximum !== 'undefined' || typeof schema.exclusiveMaximum !== 'undefined' || typeof schema.multipleOf !== 'undefined'; +} +/** + * @param {Schema} schema + * @returns {boolean} + */ + + +function likeInteger(schema) { + return schema.type === 'integer' || typeof schema.minimum !== 'undefined' || typeof schema.exclusiveMinimum !== 'undefined' || typeof schema.maximum !== 'undefined' || typeof schema.exclusiveMaximum !== 'undefined' || typeof schema.multipleOf !== 'undefined'; +} +/** + * @param {Schema} schema + * @returns {boolean} + */ + + +function likeString(schema) { + return schema.type === 'string' || typeof schema.minLength !== 'undefined' || typeof schema.maxLength !== 'undefined' || typeof schema.pattern !== 'undefined' || typeof schema.format !== 'undefined' || typeof schema.formatMinimum !== 'undefined' || typeof schema.formatMaximum !== 'undefined'; +} +/** + * @param {Schema} schema + * @returns {boolean} + */ + + +function likeBoolean(schema) { + return schema.type === 'boolean'; +} +/** + * @param {Schema} schema + * @returns {boolean} + */ + + +function likeArray(schema) { + return schema.type === 'array' || typeof schema.minItems === 'number' || typeof schema.maxItems === 'number' || typeof schema.uniqueItems !== 'undefined' || typeof schema.items !== 'undefined' || typeof schema.additionalItems !== 'undefined' || typeof schema.contains !== 'undefined'; +} +/** + * @param {Schema & {patternRequired?: Array}} schema + * @returns {boolean} + */ + + +function likeObject(schema) { + return schema.type === 'object' || typeof schema.minProperties !== 'undefined' || typeof schema.maxProperties !== 'undefined' || typeof schema.required !== 'undefined' || typeof schema.properties !== 'undefined' || typeof schema.patternProperties !== 'undefined' || typeof schema.additionalProperties !== 'undefined' || typeof schema.dependencies !== 'undefined' || typeof schema.propertyNames !== 'undefined' || typeof schema.patternRequired !== 'undefined'; +} +/** + * @param {Schema} schema + * @returns {boolean} + */ + + +function likeNull(schema) { + return schema.type === 'null'; +} +/** + * @param {string} type + * @returns {string} + */ + + +function getArticle(type) { + if (/^[aeiou]/i.test(type)) { + return 'an'; + } + + return 'a'; +} +/** + * @param {Schema=} schema + * @returns {string} + */ + + +function getSchemaNonTypes(schema) { + if (!schema) { + return ''; + } + + if (!schema.type) { + if (likeNumber(schema) || likeInteger(schema)) { + return ' | should be any non-number'; + } + + if (likeString(schema)) { + return ' | should be any non-string'; + } + + if (likeArray(schema)) { + return ' | should be any non-array'; + } + + if (likeObject(schema)) { + return ' | should be any non-object'; + } + } + + return ''; +} +/** + * @param {Array} hints + * @returns {string} + */ + + +function formatHints(hints) { + return hints.length > 0 ? "(".concat(hints.join(', '), ")") : ''; +} +/** + * @param {Schema} schema + * @param {boolean} logic + * @returns {string[]} + */ + + +function getHints(schema, logic) { + if (likeNumber(schema) || likeInteger(schema)) { + return numberHints(schema, logic); + } else if (likeString(schema)) { + return stringHints(schema, logic); + } + + return []; +} + +var ValidationError = /*#__PURE__*/function (_Error) { + _inherits(ValidationError, _Error); + + var _super = _createSuper(ValidationError); + + /** + * @param {Array} errors + * @param {Schema} schema + * @param {ValidationErrorConfiguration} configuration + */ + function ValidationError(errors, schema) { + var _this; + + var configuration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + _classCallCheck(this, ValidationError); + + _this = _super.call(this); + /** @type {string} */ + + _this.name = 'ValidationError'; + /** @type {Array} */ + + _this.errors = errors; + /** @type {Schema} */ + + _this.schema = schema; + var headerNameFromSchema; + var baseDataPathFromSchema; + + if (schema.title && (!configuration.name || !configuration.baseDataPath)) { + var splittedTitleFromSchema = schema.title.match(/^(.+) (.+)$/); + + if (splittedTitleFromSchema) { + if (!configuration.name) { + var _splittedTitleFromSch = _slicedToArray(splittedTitleFromSchema, 2); + + headerNameFromSchema = _splittedTitleFromSch[1]; + } + + if (!configuration.baseDataPath) { + var _splittedTitleFromSch2 = _slicedToArray(splittedTitleFromSchema, 3); + + baseDataPathFromSchema = _splittedTitleFromSch2[2]; + } + } + } + /** @type {string} */ + + + _this.headerName = configuration.name || headerNameFromSchema || 'Object'; + /** @type {string} */ + + _this.baseDataPath = configuration.baseDataPath || baseDataPathFromSchema || 'configuration'; + /** @type {PostFormatter | null} */ + + _this.postFormatter = configuration.postFormatter || null; + var header = "Invalid ".concat(_this.baseDataPath, " object. ").concat(_this.headerName, " has been initialized using ").concat(getArticle(_this.baseDataPath), " ").concat(_this.baseDataPath, " object that does not match the API schema.\n"); + /** @type {string} */ + + _this.message = "".concat(header).concat(_this.formatValidationErrors(errors)); + Error.captureStackTrace(_assertThisInitialized(_this), _this.constructor); + return _this; + } + /** + * @param {string} path + * @returns {Schema} + */ + + + _createClass(ValidationError, [{ + key: "getSchemaPart", + value: function getSchemaPart(path) { + var newPath = path.split('/'); + var schemaPart = this.schema; + + for (var i = 1; i < newPath.length; i++) { + var inner = schemaPart[ + /** @type {keyof Schema} */ + newPath[i]]; + + if (!inner) { + break; + } + + schemaPart = inner; + } + + return schemaPart; + } + /** + * @param {Schema} schema + * @param {boolean} logic + * @param {Array} prevSchemas + * @returns {string} + */ + + }, { + key: "formatSchema", + value: function formatSchema(schema) { + var _this2 = this; + + var logic = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var prevSchemas = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + var newLogic = logic; + + var formatInnerSchema = + /** + * + * @param {Object} innerSchema + * @param {boolean=} addSelf + * @returns {string} + */ + function formatInnerSchema(innerSchema, addSelf) { + if (!addSelf) { + return _this2.formatSchema(innerSchema, newLogic, prevSchemas); + } + + if (prevSchemas.includes(innerSchema)) { + return '(recursive)'; + } + + return _this2.formatSchema(innerSchema, newLogic, prevSchemas.concat(schema)); + }; + + if (hasNotInSchema(schema) && !likeObject(schema)) { + if (canApplyNot(schema.not)) { + newLogic = !logic; + return formatInnerSchema(schema.not); + } + + var needApplyLogicHere = !schema.not.not; + var prefix = logic ? '' : 'non '; + newLogic = !logic; + return needApplyLogicHere ? prefix + formatInnerSchema(schema.not) : formatInnerSchema(schema.not); + } + + if ( + /** @type {Schema & {instanceof: string | Array}} */ + schema.instanceof) { + var value = + /** @type {Schema & {instanceof: string | Array}} */ + schema.instanceof; + var values = !Array.isArray(value) ? [value] : value; + return values.map( + /** + * @param {string} item + * @returns {string} + */ + function (item) { + return item === 'Function' ? 'function' : item; + }).join(' | '); + } + + if (schema.enum) { + return ( + /** @type {Array} */ + schema.enum.map(function (item) { + return JSON.stringify(item); + }).join(' | ') + ); + } + + if (typeof schema.const !== 'undefined') { + return JSON.stringify(schema.const); + } + + if (schema.oneOf) { + return ( + /** @type {Array} */ + schema.oneOf.map(function (item) { + return formatInnerSchema(item, true); + }).join(' | ') + ); + } + + if (schema.anyOf) { + return ( + /** @type {Array} */ + schema.anyOf.map(function (item) { + return formatInnerSchema(item, true); + }).join(' | ') + ); + } + + if (schema.allOf) { + return ( + /** @type {Array} */ + schema.allOf.map(function (item) { + return formatInnerSchema(item, true); + }).join(' & ') + ); + } + + if ( + /** @type {JSONSchema7} */ + schema.if) { + var ifValue = + /** @type {JSONSchema7} */ + schema.if, + thenValue = schema.then, + elseValue = schema.else; + return "".concat(ifValue ? "if ".concat(formatInnerSchema(ifValue)) : '').concat(thenValue ? " then ".concat(formatInnerSchema(thenValue)) : '').concat(elseValue ? " else ".concat(formatInnerSchema(elseValue)) : ''); + } + + if (schema.$ref) { + return formatInnerSchema(this.getSchemaPart(schema.$ref), true); + } + + if (likeNumber(schema) || likeInteger(schema)) { + var _getHints = getHints(schema, logic), + _getHints2 = _toArray(_getHints), + type = _getHints2[0], + hints = _getHints2.slice(1); + + var str = "".concat(type).concat(hints.length > 0 ? " ".concat(formatHints(hints)) : ''); + return logic ? str : hints.length > 0 ? "non-".concat(type, " | ").concat(str) : "non-".concat(type); + } + + if (likeString(schema)) { + var _getHints3 = getHints(schema, logic), + _getHints4 = _toArray(_getHints3), + _type = _getHints4[0], + _hints = _getHints4.slice(1); + + var _str = "".concat(_type).concat(_hints.length > 0 ? " ".concat(formatHints(_hints)) : ''); + + return logic ? _str : _str === 'string' ? 'non-string' : "non-string | ".concat(_str); + } + + if (likeBoolean(schema)) { + return "".concat(logic ? '' : 'non-', "boolean"); + } + + if (likeArray(schema)) { + // not logic already applied in formatValidationError + newLogic = true; + var _hints2 = []; + + if (typeof schema.minItems === 'number') { + _hints2.push("should not have fewer than ".concat(schema.minItems, " item").concat(schema.minItems > 1 ? 's' : '')); + } + + if (typeof schema.maxItems === 'number') { + _hints2.push("should not have more than ".concat(schema.maxItems, " item").concat(schema.maxItems > 1 ? 's' : '')); + } + + if (schema.uniqueItems) { + _hints2.push('should not have duplicate items'); + } + + var hasAdditionalItems = typeof schema.additionalItems === 'undefined' || Boolean(schema.additionalItems); + var items = ''; + + if (schema.items) { + if (Array.isArray(schema.items) && schema.items.length > 0) { + items = "".concat( + /** @type {Array} */ + schema.items.map(function (item) { + return formatInnerSchema(item); + }).join(', ')); + + if (hasAdditionalItems) { + if (schema.additionalItems && isObject(schema.additionalItems) && Object.keys(schema.additionalItems).length > 0) { + _hints2.push("additional items should be ".concat(formatInnerSchema(schema.additionalItems))); + } + } + } else if (schema.items && Object.keys(schema.items).length > 0) { + // "additionalItems" is ignored + items = "".concat(formatInnerSchema(schema.items)); + } else { + // Fallback for empty `items` value + items = 'any'; + } + } else { + // "additionalItems" is ignored + items = 'any'; + } + + if (schema.contains && Object.keys(schema.contains).length > 0) { + _hints2.push("should contains at least one ".concat(this.formatSchema(schema.contains), " item")); + } + + return "[".concat(items).concat(hasAdditionalItems ? ', ...' : '', "]").concat(_hints2.length > 0 ? " (".concat(_hints2.join(', '), ")") : ''); + } + + if (likeObject(schema)) { + // not logic already applied in formatValidationError + newLogic = true; + var _hints3 = []; + + if (typeof schema.minProperties === 'number') { + _hints3.push("should not have fewer than ".concat(schema.minProperties, " ").concat(schema.minProperties > 1 ? 'properties' : 'property')); + } + + if (typeof schema.maxProperties === 'number') { + _hints3.push("should not have more than ".concat(schema.maxProperties, " ").concat(schema.minProperties && schema.minProperties > 1 ? 'properties' : 'property')); + } + + if (schema.patternProperties && Object.keys(schema.patternProperties).length > 0) { + var patternProperties = Object.keys(schema.patternProperties); + + _hints3.push("additional property names should match pattern".concat(patternProperties.length > 1 ? 's' : '', " ").concat(patternProperties.map(function (pattern) { + return JSON.stringify(pattern); + }).join(' | '))); + } + + var properties = schema.properties ? Object.keys(schema.properties) : []; + var required = schema.required ? schema.required : []; + + var allProperties = _toConsumableArray(new Set( + /** @type {Array} */ + [].concat(required).concat(properties))); + + var objectStructure = allProperties.map(function (property) { + var isRequired = required.includes(property); // Some properties need quotes, maybe we should add check + // Maybe we should output type of property (`foo: string`), but it is looks very unreadable + + return "".concat(property).concat(isRequired ? '' : '?'); + }).concat(typeof schema.additionalProperties === 'undefined' || Boolean(schema.additionalProperties) ? schema.additionalProperties && isObject(schema.additionalProperties) ? [": ".concat(formatInnerSchema(schema.additionalProperties))] : ['…'] : []).join(', '); + var dependencies = + /** @type {Schema & {patternRequired?: Array;}} */ + schema.dependencies, + propertyNames = schema.propertyNames, + patternRequired = schema.patternRequired; + + if (dependencies) { + Object.keys(dependencies).forEach(function (dependencyName) { + var dependency = dependencies[dependencyName]; + + if (Array.isArray(dependency)) { + _hints3.push("should have ".concat(dependency.length > 1 ? 'properties' : 'property', " ").concat(dependency.map(function (dep) { + return "'".concat(dep, "'"); + }).join(', '), " when property '").concat(dependencyName, "' is present")); + } else { + _hints3.push("should be valid according to the schema ".concat(formatInnerSchema(dependency), " when property '").concat(dependencyName, "' is present")); + } + }); + } + + if (propertyNames && Object.keys(propertyNames).length > 0) { + _hints3.push("each property name should match format ".concat(JSON.stringify(schema.propertyNames.format))); + } + + if (patternRequired && patternRequired.length > 0) { + _hints3.push("should have property matching pattern ".concat(patternRequired.map( + /** + * @param {string} item + * @returns {string} + */ + function (item) { + return JSON.stringify(item); + }))); + } + + return "object {".concat(objectStructure ? " ".concat(objectStructure, " ") : '', "}").concat(_hints3.length > 0 ? " (".concat(_hints3.join(', '), ")") : ''); + } + + if (likeNull(schema)) { + return "".concat(logic ? '' : 'non-', "null"); + } + + if (Array.isArray(schema.type)) { + // not logic already applied in formatValidationError + return "".concat(schema.type.join(' | ')); + } // Fallback for unknown keywords + // not logic already applied in formatValidationError + + /* istanbul ignore next */ + + + return JSON.stringify(schema, null, 2); + } + /** + * @param {Schema=} schemaPart + * @param {(boolean | Array)=} additionalPath + * @param {boolean=} needDot + * @param {boolean=} logic + * @returns {string} + */ + + }, { + key: "getSchemaPartText", + value: function getSchemaPartText(schemaPart, additionalPath) { + var needDot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var logic = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + + if (!schemaPart) { + return ''; + } + + if (Array.isArray(additionalPath)) { + for (var i = 0; i < additionalPath.length; i++) { + /** @type {Schema | undefined} */ + var inner = schemaPart[ + /** @type {keyof Schema} */ + additionalPath[i]]; + + if (inner) { + // eslint-disable-next-line no-param-reassign + schemaPart = inner; + } else { + break; + } + } + } + + while (schemaPart.$ref) { + // eslint-disable-next-line no-param-reassign + schemaPart = this.getSchemaPart(schemaPart.$ref); + } + + var schemaText = "".concat(this.formatSchema(schemaPart, logic)).concat(needDot ? '.' : ''); + + if (schemaPart.description) { + schemaText += "\n-> ".concat(schemaPart.description); + } + + return schemaText; + } + /** + * @param {Schema=} schemaPart + * @returns {string} + */ + + }, { + key: "getSchemaPartDescription", + value: function getSchemaPartDescription(schemaPart) { + if (!schemaPart) { + return ''; + } + + while (schemaPart.$ref) { + // eslint-disable-next-line no-param-reassign + schemaPart = this.getSchemaPart(schemaPart.$ref); + } + + if (schemaPart.description) { + return "\n-> ".concat(schemaPart.description); + } + + return ''; + } + /** + * @param {SchemaUtilErrorObject} error + * @returns {string} + */ + + }, { + key: "formatValidationError", + value: function formatValidationError(error) { + var _this3 = this; + + var keyword = error.keyword, + errorDataPath = error.dataPath; + var dataPath = "".concat(this.baseDataPath).concat(errorDataPath); + + switch (keyword) { + case 'type': + { + var parentSchema = error.parentSchema, + params = error.params; // eslint-disable-next-line default-case + + switch ( + /** @type {import("ajv").TypeParams} */ + params.type) { + case 'number': + return "".concat(dataPath, " should be a ").concat(this.getSchemaPartText(parentSchema, false, true)); + + case 'integer': + return "".concat(dataPath, " should be a ").concat(this.getSchemaPartText(parentSchema, false, true)); + + case 'string': + return "".concat(dataPath, " should be a ").concat(this.getSchemaPartText(parentSchema, false, true)); + + case 'boolean': + return "".concat(dataPath, " should be a ").concat(this.getSchemaPartText(parentSchema, false, true)); + + case 'array': + return "".concat(dataPath, " should be an array:\n").concat(this.getSchemaPartText(parentSchema)); + + case 'object': + return "".concat(dataPath, " should be an object:\n").concat(this.getSchemaPartText(parentSchema)); + + case 'null': + return "".concat(dataPath, " should be a ").concat(this.getSchemaPartText(parentSchema, false, true)); + + default: + return "".concat(dataPath, " should be:\n").concat(this.getSchemaPartText(parentSchema)); + } + } + + case 'instanceof': + { + var _parentSchema = error.parentSchema; + return "".concat(dataPath, " should be an instance of ").concat(this.getSchemaPartText(_parentSchema, false, true)); + } + + case 'pattern': + { + var _params = error.params, + _parentSchema2 = error.parentSchema; + var pattern = + /** @type {import("ajv").PatternParams} */ + _params.pattern; + return "".concat(dataPath, " should match pattern ").concat(JSON.stringify(pattern)).concat(getSchemaNonTypes(_parentSchema2), ".").concat(this.getSchemaPartDescription(_parentSchema2)); + } + + case 'format': + { + var _params2 = error.params, + _parentSchema3 = error.parentSchema; + var format = + /** @type {import("ajv").FormatParams} */ + _params2.format; + return "".concat(dataPath, " should match format ").concat(JSON.stringify(format)).concat(getSchemaNonTypes(_parentSchema3), ".").concat(this.getSchemaPartDescription(_parentSchema3)); + } + + case 'formatMinimum': + case 'formatMaximum': + { + var _params3 = error.params, + _parentSchema4 = error.parentSchema; + var comparison = + /** @type {import("ajv").ComparisonParams} */ + _params3.comparison, + limit = _params3.limit; + return "".concat(dataPath, " should be ").concat(comparison, " ").concat(JSON.stringify(limit)).concat(getSchemaNonTypes(_parentSchema4), ".").concat(this.getSchemaPartDescription(_parentSchema4)); + } + + case 'minimum': + case 'maximum': + case 'exclusiveMinimum': + case 'exclusiveMaximum': + { + var _parentSchema5 = error.parentSchema, + _params4 = error.params; + var _comparison = + /** @type {import("ajv").ComparisonParams} */ + _params4.comparison, + _limit = _params4.limit; + + var _getHints5 = getHints( + /** @type {Schema} */ + _parentSchema5, true), + _getHints6 = _toArray(_getHints5), + hints = _getHints6.slice(1); + + if (hints.length === 0) { + hints.push("should be ".concat(_comparison, " ").concat(_limit)); + } + + return "".concat(dataPath, " ").concat(hints.join(' ')).concat(getSchemaNonTypes(_parentSchema5), ".").concat(this.getSchemaPartDescription(_parentSchema5)); + } + + case 'multipleOf': + { + var _params5 = error.params, + _parentSchema6 = error.parentSchema; + var multipleOf = + /** @type {import("ajv").MultipleOfParams} */ + _params5.multipleOf; + return "".concat(dataPath, " should be multiple of ").concat(multipleOf).concat(getSchemaNonTypes(_parentSchema6), ".").concat(this.getSchemaPartDescription(_parentSchema6)); + } + + case 'patternRequired': + { + var _params6 = error.params, + _parentSchema7 = error.parentSchema; + var missingPattern = + /** @type {import("ajv").PatternRequiredParams} */ + _params6.missingPattern; + return "".concat(dataPath, " should have property matching pattern ").concat(JSON.stringify(missingPattern)).concat(getSchemaNonTypes(_parentSchema7), ".").concat(this.getSchemaPartDescription(_parentSchema7)); + } + + case 'minLength': + { + var _params7 = error.params, + _parentSchema8 = error.parentSchema; + var _limit2 = + /** @type {import("ajv").LimitParams} */ + _params7.limit; + + if (_limit2 === 1) { + return "".concat(dataPath, " should be an non-empty string").concat(getSchemaNonTypes(_parentSchema8), ".").concat(this.getSchemaPartDescription(_parentSchema8)); + } + + var length = _limit2 - 1; + return "".concat(dataPath, " should be longer than ").concat(length, " character").concat(length > 1 ? 's' : '').concat(getSchemaNonTypes(_parentSchema8), ".").concat(this.getSchemaPartDescription(_parentSchema8)); + } + + case 'minItems': + { + var _params8 = error.params, + _parentSchema9 = error.parentSchema; + var _limit3 = + /** @type {import("ajv").LimitParams} */ + _params8.limit; + + if (_limit3 === 1) { + return "".concat(dataPath, " should be an non-empty array").concat(getSchemaNonTypes(_parentSchema9), ".").concat(this.getSchemaPartDescription(_parentSchema9)); + } + + return "".concat(dataPath, " should not have fewer than ").concat(_limit3, " items").concat(getSchemaNonTypes(_parentSchema9), ".").concat(this.getSchemaPartDescription(_parentSchema9)); + } + + case 'minProperties': + { + var _params9 = error.params, + _parentSchema10 = error.parentSchema; + var _limit4 = + /** @type {import("ajv").LimitParams} */ + _params9.limit; + + if (_limit4 === 1) { + return "".concat(dataPath, " should be an non-empty object").concat(getSchemaNonTypes(_parentSchema10), ".").concat(this.getSchemaPartDescription(_parentSchema10)); + } + + return "".concat(dataPath, " should not have fewer than ").concat(_limit4, " properties").concat(getSchemaNonTypes(_parentSchema10), ".").concat(this.getSchemaPartDescription(_parentSchema10)); + } + + case 'maxLength': + { + var _params10 = error.params, + _parentSchema11 = error.parentSchema; + var _limit5 = + /** @type {import("ajv").LimitParams} */ + _params10.limit; + var max = _limit5 + 1; + return "".concat(dataPath, " should be shorter than ").concat(max, " character").concat(max > 1 ? 's' : '').concat(getSchemaNonTypes(_parentSchema11), ".").concat(this.getSchemaPartDescription(_parentSchema11)); + } + + case 'maxItems': + { + var _params11 = error.params, + _parentSchema12 = error.parentSchema; + var _limit6 = + /** @type {import("ajv").LimitParams} */ + _params11.limit; + return "".concat(dataPath, " should not have more than ").concat(_limit6, " items").concat(getSchemaNonTypes(_parentSchema12), ".").concat(this.getSchemaPartDescription(_parentSchema12)); + } + + case 'maxProperties': + { + var _params12 = error.params, + _parentSchema13 = error.parentSchema; + var _limit7 = + /** @type {import("ajv").LimitParams} */ + _params12.limit; + return "".concat(dataPath, " should not have more than ").concat(_limit7, " properties").concat(getSchemaNonTypes(_parentSchema13), ".").concat(this.getSchemaPartDescription(_parentSchema13)); + } + + case 'uniqueItems': + { + var _params13 = error.params, + _parentSchema14 = error.parentSchema; + var i = + /** @type {import("ajv").UniqueItemsParams} */ + _params13.i; + return "".concat(dataPath, " should not contain the item '").concat(error.data[i], "' twice").concat(getSchemaNonTypes(_parentSchema14), ".").concat(this.getSchemaPartDescription(_parentSchema14)); + } + + case 'additionalItems': + { + var _params14 = error.params, + _parentSchema15 = error.parentSchema; + var _limit8 = + /** @type {import("ajv").LimitParams} */ + _params14.limit; + return "".concat(dataPath, " should not have more than ").concat(_limit8, " items").concat(getSchemaNonTypes(_parentSchema15), ". These items are valid:\n").concat(this.getSchemaPartText(_parentSchema15)); + } + + case 'contains': + { + var _parentSchema16 = error.parentSchema; + return "".concat(dataPath, " should contains at least one ").concat(this.getSchemaPartText(_parentSchema16, ['contains']), " item").concat(getSchemaNonTypes(_parentSchema16), "."); + } + + case 'required': + { + var _parentSchema17 = error.parentSchema, + _params15 = error.params; + + var missingProperty = + /** @type {import("ajv").DependenciesParams} */ + _params15.missingProperty.replace(/^\./, ''); + + var hasProperty = _parentSchema17 && Boolean( + /** @type {Schema} */ + _parentSchema17.properties && + /** @type {Schema} */ + _parentSchema17.properties[missingProperty]); + + return "".concat(dataPath, " misses the property '").concat(missingProperty, "'").concat(getSchemaNonTypes(_parentSchema17), ".").concat(hasProperty ? " Should be:\n".concat(this.getSchemaPartText(_parentSchema17, ['properties', missingProperty])) : this.getSchemaPartDescription(_parentSchema17)); + } + + case 'additionalProperties': + { + var _params16 = error.params, + _parentSchema18 = error.parentSchema; + var additionalProperty = + /** @type {import("ajv").AdditionalPropertiesParams} */ + _params16.additionalProperty; + return "".concat(dataPath, " has an unknown property '").concat(additionalProperty, "'").concat(getSchemaNonTypes(_parentSchema18), ". These properties are valid:\n").concat(this.getSchemaPartText(_parentSchema18)); + } + + case 'dependencies': + { + var _params17 = error.params, + _parentSchema19 = error.parentSchema; + var property = + /** @type {import("ajv").DependenciesParams} */ + _params17.property, + deps = _params17.deps; + var dependencies = deps.split(',').map( + /** + * @param {string} dep + * @returns {string} + */ + function (dep) { + return "'".concat(dep.trim(), "'"); + }).join(', '); + return "".concat(dataPath, " should have properties ").concat(dependencies, " when property '").concat(property, "' is present").concat(getSchemaNonTypes(_parentSchema19), ".").concat(this.getSchemaPartDescription(_parentSchema19)); + } + + case 'propertyNames': + { + var _params18 = error.params, + _parentSchema20 = error.parentSchema, + schema = error.schema; + var propertyName = + /** @type {import("ajv").PropertyNamesParams} */ + _params18.propertyName; + return "".concat(dataPath, " property name '").concat(propertyName, "' is invalid").concat(getSchemaNonTypes(_parentSchema20), ". Property names should be match format ").concat(JSON.stringify(schema.format), ".").concat(this.getSchemaPartDescription(_parentSchema20)); + } + + case 'enum': + { + var _parentSchema21 = error.parentSchema; + + if (_parentSchema21 && + /** @type {Schema} */ + _parentSchema21.enum && + /** @type {Schema} */ + _parentSchema21.enum.length === 1) { + return "".concat(dataPath, " should be ").concat(this.getSchemaPartText(_parentSchema21, false, true)); + } + + return "".concat(dataPath, " should be one of these:\n").concat(this.getSchemaPartText(_parentSchema21)); + } + + case 'const': + { + var _parentSchema22 = error.parentSchema; + return "".concat(dataPath, " should be equal to constant ").concat(this.getSchemaPartText(_parentSchema22, false, true)); + } + + case 'not': + { + var postfix = likeObject( + /** @type {Schema} */ + error.parentSchema) ? "\n".concat(this.getSchemaPartText(error.parentSchema)) : ''; + var schemaOutput = this.getSchemaPartText(error.schema, false, false, false); + + if (canApplyNot(error.schema)) { + return "".concat(dataPath, " should be any ").concat(schemaOutput).concat(postfix, "."); + } + + var _schema = error.schema, + _parentSchema23 = error.parentSchema; + return "".concat(dataPath, " should not be ").concat(this.getSchemaPartText(_schema, false, true)).concat(_parentSchema23 && likeObject(_parentSchema23) ? "\n".concat(this.getSchemaPartText(_parentSchema23)) : ''); + } + + case 'oneOf': + case 'anyOf': + { + var _parentSchema24 = error.parentSchema, + children = error.children; + + if (children && children.length > 0) { + if (error.schema.length === 1) { + var lastChild = children[children.length - 1]; + var remainingChildren = children.slice(0, children.length - 1); + return this.formatValidationError(Object.assign({}, lastChild, { + children: remainingChildren, + parentSchema: Object.assign({}, _parentSchema24, lastChild.parentSchema) + })); + } + + var filteredChildren = filterChildren(children); + + if (filteredChildren.length === 1) { + return this.formatValidationError(filteredChildren[0]); + } + + filteredChildren = groupChildrenByFirstChild(filteredChildren); + return "".concat(dataPath, " should be one of these:\n").concat(this.getSchemaPartText(_parentSchema24), "\nDetails:\n").concat(filteredChildren.map( + /** + * @param {SchemaUtilErrorObject} nestedError + * @returns {string} + */ + function (nestedError) { + return " * ".concat(indent(_this3.formatValidationError(nestedError), ' ')); + }).join('\n')); + } + + return "".concat(dataPath, " should be one of these:\n").concat(this.getSchemaPartText(_parentSchema24)); + } + + case 'if': + { + var _params19 = error.params, + _parentSchema25 = error.parentSchema; + var failingKeyword = + /** @type {import("ajv").IfParams} */ + _params19.failingKeyword; + return "".concat(dataPath, " should match \"").concat(failingKeyword, "\" schema:\n").concat(this.getSchemaPartText(_parentSchema25, [failingKeyword])); + } + + case 'absolutePath': + { + var message = error.message, + _parentSchema26 = error.parentSchema; + return "".concat(dataPath, ": ").concat(message).concat(this.getSchemaPartDescription(_parentSchema26)); + } + + /* istanbul ignore next */ + + default: + { + var _message = error.message, + _parentSchema27 = error.parentSchema; + var ErrorInJSON = JSON.stringify(error, null, 2); // For `custom`, `false schema`, `$ref` keywords + // Fallback for unknown keywords + + return "".concat(dataPath, " ").concat(_message, " (").concat(ErrorInJSON, ").\n").concat(this.getSchemaPartText(_parentSchema27, false)); + } + } + } + /** + * @param {Array} errors + * @returns {string} + */ + + }, { + key: "formatValidationErrors", + value: function formatValidationErrors(errors) { + var _this4 = this; + + return errors.map(function (error) { + var formattedError = _this4.formatValidationError(error); + + if (_this4.postFormatter) { + formattedError = _this4.postFormatter(formattedError, error); + } + + return " - ".concat(indent(formattedError, ' ')); + }).join('\n'); + } + }]); + + return ValidationError; +}( /*#__PURE__*/_wrapNativeSuper(Error)); + +var _default = ValidationError; +exports.default = _default; +},{"./util/hints":"SqDh"}],"wWOq":[function(require,module,exports) { +var define; +var global = arguments[3]; +/** @license URI.js v4.2.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.URI = global.URI || {}))); +}(this, (function (exports) { 'use strict'; + +function merge() { + for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) { + sets[_key] = arguments[_key]; + } + + if (sets.length > 1) { + sets[0] = sets[0].slice(0, -1); + var xl = sets.length - 1; + for (var x = 1; x < xl; ++x) { + sets[x] = sets[x].slice(1, -1); + } + sets[xl] = sets[xl].slice(1); + return sets.join(''); + } else { + return sets[0]; + } +} +function subexp(str) { + return "(?:" + str + ")"; +} +function typeOf(o) { + return o === undefined ? "undefined" : o === null ? "null" : Object.prototype.toString.call(o).split(" ").pop().split("]").shift().toLowerCase(); +} +function toUpperCase(str) { + return str.toUpperCase(); +} +function toArray(obj) { + return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== "number" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : []; +} +function assign(target, source) { + var obj = target; + if (source) { + for (var key in source) { + obj[key] = source[key]; + } + } + return obj; +} + +function buildExps(isIRI) { + var ALPHA$$ = "[A-Za-z]", + CR$ = "[\\x0D]", + DIGIT$$ = "[0-9]", + DQUOTE$$ = "[\\x22]", + HEXDIG$$ = merge(DIGIT$$, "[A-Fa-f]"), + //case-insensitive + LF$$ = "[\\x0A]", + SP$$ = "[\\x20]", + PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)), + //expanded + GEN_DELIMS$$ = "[\\:\\/\\?\\#\\[\\]\\@]", + SUB_DELIMS$$ = "[\\!\\$\\&\\'\\(\\)\\*\\+\\,\\;\\=]", + RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$), + UCSCHAR$$ = isIRI ? "[\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]" : "[]", + //subset, excludes bidi control characters + IPRIVATE$$ = isIRI ? "[\\uE000-\\uF8FF]" : "[]", + //subset + UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, "[\\-\\.\\_\\~]", UCSCHAR$$), + SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, "[\\+\\-\\.]") + "*"), + USERINFO$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]")) + "*"), + DEC_OCTET$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("[1-9]" + DIGIT$$) + "|" + DIGIT$$), + DEC_OCTET_RELAXED$ = subexp(subexp("25[0-5]") + "|" + subexp("2[0-4]" + DIGIT$$) + "|" + subexp("1" + DIGIT$$ + DIGIT$$) + "|" + subexp("0?[1-9]" + DIGIT$$) + "|0?0?" + DIGIT$$), + //relaxed parsing rules + IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$ + "\\." + DEC_OCTET_RELAXED$), + H16$ = subexp(HEXDIG$$ + "{1,4}"), + LS32$ = subexp(subexp(H16$ + "\\:" + H16$) + "|" + IPV4ADDRESS$), + IPV6ADDRESS1$ = subexp(subexp(H16$ + "\\:") + "{6}" + LS32$), + // 6( h16 ":" ) ls32 + IPV6ADDRESS2$ = subexp("\\:\\:" + subexp(H16$ + "\\:") + "{5}" + LS32$), + // "::" 5( h16 ":" ) ls32 + IPV6ADDRESS3$ = subexp(subexp(H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{4}" + LS32$), + //[ h16 ] "::" 4( h16 ":" ) ls32 + IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,1}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{3}" + LS32$), + //[ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,2}" + H16$) + "?\\:\\:" + subexp(H16$ + "\\:") + "{2}" + LS32$), + //[ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,3}" + H16$) + "?\\:\\:" + H16$ + "\\:" + LS32$), + //[ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,4}" + H16$) + "?\\:\\:" + LS32$), + //[ *4( h16 ":" ) h16 ] "::" ls32 + IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,5}" + H16$) + "?\\:\\:" + H16$), + //[ *5( h16 ":" ) h16 ] "::" h16 + IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + "\\:") + "{0,6}" + H16$) + "?\\:\\:"), + //[ *6( h16 ":" ) h16 ] "::" + IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join("|")), + ZONEID$ = subexp(subexp(UNRESERVED$$ + "|" + PCT_ENCODED$) + "+"), + //RFC 6874 + IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + "\\%25" + ZONEID$), + //RFC 6874 + IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + ZONEID$), + //RFC 6874, with relaxed parsing rules + IPVFUTURE$ = subexp("[vV]" + HEXDIG$$ + "+\\." + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:]") + "+"), + IP_LITERAL$ = subexp("\\[" + subexp(IPV6ADDRZ_RELAXED$ + "|" + IPV6ADDRESS$ + "|" + IPVFUTURE$) + "\\]"), + //RFC 6874 + REG_NAME$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$)) + "*"), + HOST$ = subexp(IP_LITERAL$ + "|" + IPV4ADDRESS$ + "(?!" + REG_NAME$ + ")" + "|" + REG_NAME$), + PORT$ = subexp(DIGIT$$ + "*"), + AUTHORITY$ = subexp(subexp(USERINFO$ + "@") + "?" + HOST$ + subexp("\\:" + PORT$) + "?"), + PCHAR$ = subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@]")), + SEGMENT$ = subexp(PCHAR$ + "*"), + SEGMENT_NZ$ = subexp(PCHAR$ + "+"), + SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + "|" + merge(UNRESERVED$$, SUB_DELIMS$$, "[\\@]")) + "+"), + PATH_ABEMPTY$ = subexp(subexp("\\/" + SEGMENT$) + "*"), + PATH_ABSOLUTE$ = subexp("\\/" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + "?"), + //simplified + PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), + //simplified + PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), + //simplified + PATH_EMPTY$ = "(?!" + PCHAR$ + ")", + PATH$ = subexp(PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + QUERY$ = subexp(subexp(PCHAR$ + "|" + merge("[\\/\\?]", IPRIVATE$$)) + "*"), + FRAGMENT$ = subexp(subexp(PCHAR$ + "|[\\/\\?]") + "*"), + HIER_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$), + URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + RELATIVE_PART$ = subexp(subexp("\\/\\/" + AUTHORITY$ + PATH_ABEMPTY$) + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$), + RELATIVE$ = subexp(RELATIVE_PART$ + subexp("\\?" + QUERY$) + "?" + subexp("\\#" + FRAGMENT$) + "?"), + URI_REFERENCE$ = subexp(URI$ + "|" + RELATIVE$), + ABSOLUTE_URI$ = subexp(SCHEME$ + "\\:" + HIER_PART$ + subexp("\\?" + QUERY$) + "?"), + GENERIC_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + RELATIVE_REF$ = "^(){0}" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_NOSCHEME$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + ABSOLUTE_REF$ = "^(" + SCHEME$ + ")\\:" + subexp(subexp("\\/\\/(" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?)") + "?(" + PATH_ABEMPTY$ + "|" + PATH_ABSOLUTE$ + "|" + PATH_ROOTLESS$ + "|" + PATH_EMPTY$ + ")") + subexp("\\?(" + QUERY$ + ")") + "?$", + SAMEDOC_REF$ = "^" + subexp("\\#(" + FRAGMENT$ + ")") + "?$", + AUTHORITY_REF$ = "^" + subexp("(" + USERINFO$ + ")@") + "?(" + HOST$ + ")" + subexp("\\:(" + PORT$ + ")") + "?$"; + return { + NOT_SCHEME: new RegExp(merge("[^]", ALPHA$$, DIGIT$$, "[\\+\\-\\.]"), "g"), + NOT_USERINFO: new RegExp(merge("[^\\%\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_HOST: new RegExp(merge("[^\\%\\[\\]\\:]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH: new RegExp(merge("[^\\%\\/\\:\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_PATH_NOSCHEME: new RegExp(merge("[^\\%\\/\\@]", UNRESERVED$$, SUB_DELIMS$$), "g"), + NOT_QUERY: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]", IPRIVATE$$), "g"), + NOT_FRAGMENT: new RegExp(merge("[^\\%]", UNRESERVED$$, SUB_DELIMS$$, "[\\:\\@\\/\\?]"), "g"), + ESCAPE: new RegExp(merge("[^]", UNRESERVED$$, SUB_DELIMS$$), "g"), + UNRESERVED: new RegExp(UNRESERVED$$, "g"), + OTHER_CHARS: new RegExp(merge("[^\\%]", UNRESERVED$$, RESERVED$$), "g"), + PCT_ENCODED: new RegExp(PCT_ENCODED$, "g"), + IPV4ADDRESS: new RegExp("^(" + IPV4ADDRESS$ + ")$"), + IPV6ADDRESS: new RegExp("^\\[?(" + IPV6ADDRESS$ + ")" + subexp(subexp("\\%25|\\%(?!" + HEXDIG$$ + "{2})") + "(" + ZONEID$ + ")") + "?\\]?$") //RFC 6874, with relaxed parsing rules + }; +} +var URI_PROTOCOL = buildExps(false); + +var IRI_PROTOCOL = buildExps(true); + +var slicedToArray = function () { + function sliceIterator(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"]) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; + } + + return function (arr, i) { + if (Array.isArray(arr)) { + return arr; + } else if (Symbol.iterator in Object(arr)) { + return sliceIterator(arr, i); + } else { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); + } + }; +}(); + + + + + + + + + + + + + +var toConsumableArray = function (arr) { + if (Array.isArray(arr)) { + for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; + + return arr2; + } else { + return Array.from(arr); + } +}; + +/** Highest positive signed 32-bit float value */ + +var maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1 + +/** Bootstring parameters */ +var base = 36; +var tMin = 1; +var tMax = 26; +var skew = 38; +var damp = 700; +var initialBias = 72; +var initialN = 128; // 0x80 +var delimiter = '-'; // '\x2D' + +/** Regular expressions */ +var regexPunycode = /^xn--/; +var regexNonASCII = /[^\0-\x7E]/; // non-ASCII chars +var regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g; // RFC 3490 separators + +/** Error messages */ +var errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' +}; + +/** Convenience shortcuts */ +var baseMinusTMin = base - tMin; +var floor = Math.floor; +var stringFromCharCode = String.fromCharCode; + +/*--------------------------------------------------------------------------*/ + +/** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ +function error$1(type) { + throw new RangeError(errors[type]); +} + +/** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ +function map(array, fn) { + var result = []; + var length = array.length; + while (length--) { + result[length] = fn(array[length]); + } + return result; +} + +/** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ +function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; +} + +/** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ +function ucs2decode(string) { + var output = []; + var counter = 0; + var length = string.length; + while (counter < length) { + var value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // It's a high surrogate, and there is a next character. + var extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { + // Low surrogate. + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // It's an unmatched surrogate; only append this code unit, in case the + // next code unit is the high surrogate of a surrogate pair. + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; +} + +/** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ +var ucs2encode = function ucs2encode(array) { + return String.fromCodePoint.apply(String, toConsumableArray(array)); +}; + +/** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ +var basicToDigit = function basicToDigit(codePoint) { + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; + } + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; + } + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; + } + return base; +}; + +/** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ +var digitToBasic = function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); +}; + +/** + * Bias adaptation function as per section 3.4 of RFC 3492. + * https://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ +var adapt = function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); +}; + +/** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ +var decode = function decode(input) { + // Don't use UCS-2. + var output = []; + var inputLength = input.length; + var i = 0; + var n = initialN; + var bias = initialBias; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + var basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (var j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error$1('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{ + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + var oldi = i; + for (var w = 1, k = base;; /* no condition */k += base) { + + if (index >= inputLength) { + error$1('invalid-input'); + } + + var digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error$1('overflow'); + } + + i += digit * w; + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + + if (digit < t) { + break; + } + + var baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error$1('overflow'); + } + + w *= baseMinusT; + } + + var out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error$1('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output. + output.splice(i++, 0, n); + } + + return String.fromCodePoint.apply(String, output); +}; + +/** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ +var encode = function encode(input) { + var output = []; + + // Convert the input in UCS-2 to an array of Unicode code points. + input = ucs2decode(input); + + // Cache the length. + var inputLength = input.length; + + // Initialize the state. + var n = initialN; + var delta = 0; + var bias = initialBias; + + // Handle the basic code points. + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var _currentValue2 = _step.value; + + if (_currentValue2 < 0x80) { + output.push(stringFromCharCode(_currentValue2)); + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + var basicLength = output.length; + var handledCPCount = basicLength; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string with a delimiter unless it's empty. + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + var m = maxInt; + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var currentValue = _step2.value; + + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow. + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + var handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error$1('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + var _iteratorNormalCompletion3 = true; + var _didIteratorError3 = false; + var _iteratorError3 = undefined; + + try { + for (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { + var _currentValue = _step3.value; + + if (_currentValue < n && ++delta > maxInt) { + error$1('overflow'); + } + if (_currentValue == n) { + // Represent delta as a generalized variable-length integer. + var q = delta; + for (var k = base;; /* no condition */k += base) { + var t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias; + if (q < t) { + break; + } + var qMinusT = q - t; + var baseMinusT = base - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + } catch (err) { + _didIteratorError3 = true; + _iteratorError3 = err; + } finally { + try { + if (!_iteratorNormalCompletion3 && _iterator3.return) { + _iterator3.return(); + } + } finally { + if (_didIteratorError3) { + throw _iteratorError3; + } + } + } + + ++delta; + ++n; + } + return output.join(''); +}; + +/** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ +var toUnicode = function toUnicode(input) { + return mapDomain(input, function (string) { + return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string; + }); +}; + +/** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ +var toASCII = function toASCII(input) { + return mapDomain(input, function (string) { + return regexNonASCII.test(string) ? 'xn--' + encode(string) : string; + }); +}; + +/*--------------------------------------------------------------------------*/ + +/** Define the public API */ +var punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '2.1.0', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode +}; + +/** + * URI.js + * + * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript. + * @author Gary Court + * @see http://github.com/garycourt/uri-js + */ +/** + * Copyright 2011 Gary Court. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Gary Court. + */ +var SCHEMES = {}; +function pctEncChar(chr) { + var c = chr.charCodeAt(0); + var e = void 0; + if (c < 16) e = "%0" + c.toString(16).toUpperCase();else if (c < 128) e = "%" + c.toString(16).toUpperCase();else if (c < 2048) e = "%" + (c >> 6 | 192).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase();else e = "%" + (c >> 12 | 224).toString(16).toUpperCase() + "%" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + "%" + (c & 63 | 128).toString(16).toUpperCase(); + return e; +} +function pctDecChars(str) { + var newStr = ""; + var i = 0; + var il = str.length; + while (i < il) { + var c = parseInt(str.substr(i + 1, 2), 16); + if (c < 128) { + newStr += String.fromCharCode(c); + i += 3; + } else if (c >= 194 && c < 224) { + if (il - i >= 6) { + var c2 = parseInt(str.substr(i + 4, 2), 16); + newStr += String.fromCharCode((c & 31) << 6 | c2 & 63); + } else { + newStr += str.substr(i, 6); + } + i += 6; + } else if (c >= 224) { + if (il - i >= 9) { + var _c = parseInt(str.substr(i + 4, 2), 16); + var c3 = parseInt(str.substr(i + 7, 2), 16); + newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63); + } else { + newStr += str.substr(i, 9); + } + i += 9; + } else { + newStr += str.substr(i, 3); + i += 3; + } + } + return newStr; +} +function _normalizeComponentEncoding(components, protocol) { + function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(protocol.UNRESERVED) ? str : decStr; + } + if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, ""); + if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase); + return components; +} + +function _stripLeadingZeros(str) { + return str.replace(/^0*(.*)/, "$1") || "0"; +} +function _normalizeIPv4(host, protocol) { + var matches = host.match(protocol.IPV4ADDRESS) || []; + + var _matches = slicedToArray(matches, 2), + address = _matches[1]; + + if (address) { + return address.split(".").map(_stripLeadingZeros).join("."); + } else { + return host; + } +} +function _normalizeIPv6(host, protocol) { + var matches = host.match(protocol.IPV6ADDRESS) || []; + + var _matches2 = slicedToArray(matches, 3), + address = _matches2[1], + zone = _matches2[2]; + + if (address) { + var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(), + _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2), + last = _address$toLowerCase$2[0], + first = _address$toLowerCase$2[1]; + + var firstFields = first ? first.split(":").map(_stripLeadingZeros) : []; + var lastFields = last.split(":").map(_stripLeadingZeros); + var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]); + var fieldCount = isLastFieldIPv4Address ? 7 : 8; + var lastFieldsStart = lastFields.length - fieldCount; + var fields = Array(fieldCount); + for (var x = 0; x < fieldCount; ++x) { + fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || ''; + } + if (isLastFieldIPv4Address) { + fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol); + } + var allZeroFields = fields.reduce(function (acc, field, index) { + if (!field || field === "0") { + var lastLongest = acc[acc.length - 1]; + if (lastLongest && lastLongest.index + lastLongest.length === index) { + lastLongest.length++; + } else { + acc.push({ index: index, length: 1 }); + } + } + return acc; + }, []); + var longestZeroFields = allZeroFields.sort(function (a, b) { + return b.length - a.length; + })[0]; + var newHost = void 0; + if (longestZeroFields && longestZeroFields.length > 1) { + var newFirst = fields.slice(0, longestZeroFields.index); + var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length); + newHost = newFirst.join(":") + "::" + newLast.join(":"); + } else { + newHost = fields.join(":"); + } + if (zone) { + newHost += "%" + zone; + } + return newHost; + } else { + return host; + } +} +var URI_PARSE = /^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i; +var NO_MATCH_IS_UNDEFINED = "".match(/(){0}/)[1] === undefined; +function parse(uriString) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var components = {}; + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + if (options.reference === "suffix") uriString = (options.scheme ? options.scheme + ":" : "") + "//" + uriString; + var matches = uriString.match(URI_PARSE); + if (matches) { + if (NO_MATCH_IS_UNDEFINED) { + //store each component + components.scheme = matches[1]; + components.userinfo = matches[3]; + components.host = matches[4]; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = matches[7]; + components.fragment = matches[8]; + //fix port number + if (isNaN(components.port)) { + components.port = matches[5]; + } + } else { + //IE FIX for improper RegExp matching + //store each component + components.scheme = matches[1] || undefined; + components.userinfo = uriString.indexOf("@") !== -1 ? matches[3] : undefined; + components.host = uriString.indexOf("//") !== -1 ? matches[4] : undefined; + components.port = parseInt(matches[5], 10); + components.path = matches[6] || ""; + components.query = uriString.indexOf("?") !== -1 ? matches[7] : undefined; + components.fragment = uriString.indexOf("#") !== -1 ? matches[8] : undefined; + //fix port number + if (isNaN(components.port)) { + components.port = uriString.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/) ? matches[4] : undefined; + } + } + if (components.host) { + //normalize IP hosts + components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol); + } + //determine reference type + if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) { + components.reference = "same-document"; + } else if (components.scheme === undefined) { + components.reference = "relative"; + } else if (components.fragment === undefined) { + components.reference = "absolute"; + } else { + components.reference = "uri"; + } + //check for reference errors + if (options.reference && options.reference !== "suffix" && options.reference !== components.reference) { + components.error = components.error || "URI is not a " + options.reference + " reference."; + } + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //check if scheme can't handle IRIs + if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { + //if host component is a domain name + if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) { + //convert Unicode IDN -> ASCII IDN + try { + components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to ASCII via punycode: " + e; + } + } + //convert IRI -> URI + _normalizeComponentEncoding(components, URI_PROTOCOL); + } else { + //normalize encodings + _normalizeComponentEncoding(components, protocol); + } + //perform scheme specific parsing + if (schemeHandler && schemeHandler.parse) { + schemeHandler.parse(components, options); + } + } else { + components.error = components.error || "URI can not be parsed."; + } + return components; +} + +function _recomposeAuthority(components, options) { + var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + if (components.userinfo !== undefined) { + uriTokens.push(components.userinfo); + uriTokens.push("@"); + } + if (components.host !== undefined) { + //normalize IP hosts, add brackets and escape zone separator for IPv6 + uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) { + return "[" + $1 + ($2 ? "%25" + $2 : "") + "]"; + })); + } + if (typeof components.port === "number") { + uriTokens.push(":"); + uriTokens.push(components.port.toString(10)); + } + return uriTokens.length ? uriTokens.join("") : undefined; +} + +var RDS1 = /^\.\.?\//; +var RDS2 = /^\/\.(\/|$)/; +var RDS3 = /^\/\.\.(\/|$)/; +var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/; +function removeDotSegments(input) { + var output = []; + while (input.length) { + if (input.match(RDS1)) { + input = input.replace(RDS1, ""); + } else if (input.match(RDS2)) { + input = input.replace(RDS2, "/"); + } else if (input.match(RDS3)) { + input = input.replace(RDS3, "/"); + output.pop(); + } else if (input === "." || input === "..") { + input = ""; + } else { + var im = input.match(RDS5); + if (im) { + var s = im[0]; + input = input.slice(s.length); + output.push(s); + } else { + throw new Error("Unexpected dot segment condition"); + } + } + } + return output.join(""); +} + +function serialize(components) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL; + var uriTokens = []; + //find scheme handler + var schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; + //perform scheme specific serialization + if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); + if (components.host) { + //if host component is an IPv6 address + if (protocol.IPV6ADDRESS.test(components.host)) {} + //TODO: normalize IPv6 address as per RFC 5952 + + //if host component is a domain name + else if (options.domainHost || schemeHandler && schemeHandler.domainHost) { + //convert IDN via punycode + try { + components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host); + } catch (e) { + components.error = components.error || "Host's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + } + } + //normalize encoding + _normalizeComponentEncoding(components, protocol); + if (options.reference !== "suffix" && components.scheme) { + uriTokens.push(components.scheme); + uriTokens.push(":"); + } + var authority = _recomposeAuthority(components, options); + if (authority !== undefined) { + if (options.reference !== "suffix") { + uriTokens.push("//"); + } + uriTokens.push(authority); + if (components.path && components.path.charAt(0) !== "/") { + uriTokens.push("/"); + } + } + if (components.path !== undefined) { + var s = components.path; + if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { + s = removeDotSegments(s); + } + if (authority === undefined) { + s = s.replace(/^\/\//, "/%2F"); //don't allow the path to start with "//" + } + uriTokens.push(s); + } + if (components.query !== undefined) { + uriTokens.push("?"); + uriTokens.push(components.query); + } + if (components.fragment !== undefined) { + uriTokens.push("#"); + uriTokens.push(components.fragment); + } + return uriTokens.join(""); //merge tokens into a string +} + +function resolveComponents(base, relative) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + var skipNormalization = arguments[3]; + + var target = {}; + if (!skipNormalization) { + base = parse(serialize(base, options), options); //normalize base components + relative = parse(serialize(relative, options), options); //normalize relative components + } + options = options || {}; + if (!options.tolerant && relative.scheme) { + target.scheme = relative.scheme; + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) { + //target.authority = relative.authority; + target.userinfo = relative.userinfo; + target.host = relative.host; + target.port = relative.port; + target.path = removeDotSegments(relative.path || ""); + target.query = relative.query; + } else { + if (!relative.path) { + target.path = base.path; + if (relative.query !== undefined) { + target.query = relative.query; + } else { + target.query = base.query; + } + } else { + if (relative.path.charAt(0) === "/") { + target.path = removeDotSegments(relative.path); + } else { + if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) { + target.path = "/" + relative.path; + } else if (!base.path) { + target.path = relative.path; + } else { + target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; + } + target.path = removeDotSegments(target.path); + } + target.query = relative.query; + } + //target.authority = base.authority; + target.userinfo = base.userinfo; + target.host = base.host; + target.port = base.port; + } + target.scheme = base.scheme; + } + target.fragment = relative.fragment; + return target; +} + +function resolve(baseURI, relativeURI, options) { + var schemelessOptions = assign({ scheme: 'null' }, options); + return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions); +} + +function normalize(uri, options) { + if (typeof uri === "string") { + uri = serialize(parse(uri, options), options); + } else if (typeOf(uri) === "object") { + uri = parse(serialize(uri, options), options); + } + return uri; +} + +function equal(uriA, uriB, options) { + if (typeof uriA === "string") { + uriA = serialize(parse(uriA, options), options); + } else if (typeOf(uriA) === "object") { + uriA = serialize(uriA, options); + } + if (typeof uriB === "string") { + uriB = serialize(parse(uriB, options), options); + } else if (typeOf(uriB) === "object") { + uriB = serialize(uriB, options); + } + return uriA === uriB; +} + +function escapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar); +} + +function unescapeComponent(str, options) { + return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars); +} + +var handler = { + scheme: "http", + domainHost: true, + parse: function parse(components, options) { + //report missing host + if (!components.host) { + components.error = components.error || "HTTP URIs must have a host."; + } + return components; + }, + serialize: function serialize(components, options) { + //normalize the default port + if (components.port === (String(components.scheme).toLowerCase() !== "https" ? 80 : 443) || components.port === "") { + components.port = undefined; + } + //normalize the empty path + if (!components.path) { + components.path = "/"; + } + //NOTE: We do not parse query strings for HTTP URIs + //as WWW Form Url Encoded query strings are part of the HTML4+ spec, + //and not the HTTP spec. + return components; + } +}; + +var handler$1 = { + scheme: "https", + domainHost: handler.domainHost, + parse: handler.parse, + serialize: handler.serialize +}; + +var O = {}; +var isIRI = true; +//RFC 3986 +var UNRESERVED$$ = "[A-Za-z0-9\\-\\.\\_\\~" + (isIRI ? "\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF" : "") + "]"; +var HEXDIG$$ = "[0-9A-Fa-f]"; //case-insensitive +var PCT_ENCODED$ = subexp(subexp("%[EFef]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%[89A-Fa-f]" + HEXDIG$$ + "%" + HEXDIG$$ + HEXDIG$$) + "|" + subexp("%" + HEXDIG$$ + HEXDIG$$)); //expanded +//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; = +//const ATEXT$$ = "[A-Za-z0-9\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QTEXT$$ = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F]"; //(%d1-8 / %d11-12 / %d14-31 / %d127) +//const QTEXT$$ = merge("[\\x21\\x23-\\x5B\\x5D-\\x7E]", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext +//const VCHAR$$ = "[\\x21-\\x7E]"; +//const WSP$$ = "[\\x20\\x09]"; +//const OBS_QP$ = subexp("\\\\" + merge("[\\x00\\x0D\\x0A]", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext +//const FWS$ = subexp(subexp(WSP$$ + "*" + "\\x0D\\x0A") + "?" + WSP$$ + "+"); +//const QUOTED_PAIR$ = subexp(subexp("\\\\" + subexp(VCHAR$$ + "|" + WSP$$)) + "|" + OBS_QP$); +//const QUOTED_STRING$ = subexp('\\"' + subexp(FWS$ + "?" + QCONTENT$) + "*" + FWS$ + "?" + '\\"'); +var ATEXT$$ = "[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]"; +var QTEXT$$ = "[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]"; +var VCHAR$$ = merge(QTEXT$$, "[\\\"\\\\]"); +var SOME_DELIMS$$ = "[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"; +var UNRESERVED = new RegExp(UNRESERVED$$, "g"); +var PCT_ENCODED = new RegExp(PCT_ENCODED$, "g"); +var NOT_LOCAL_PART = new RegExp(merge("[^]", ATEXT$$, "[\\.]", '[\\"]', VCHAR$$), "g"); +var NOT_HFNAME = new RegExp(merge("[^]", UNRESERVED$$, SOME_DELIMS$$), "g"); +var NOT_HFVALUE = NOT_HFNAME; +function decodeUnreserved(str) { + var decStr = pctDecChars(str); + return !decStr.match(UNRESERVED) ? str : decStr; +} +var handler$2 = { + scheme: "mailto", + parse: function parse$$1(components, options) { + var mailtoComponents = components; + var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(",") : []; + mailtoComponents.path = undefined; + if (mailtoComponents.query) { + var unknownHeaders = false; + var headers = {}; + var hfields = mailtoComponents.query.split("&"); + for (var x = 0, xl = hfields.length; x < xl; ++x) { + var hfield = hfields[x].split("="); + switch (hfield[0]) { + case "to": + var toAddrs = hfield[1].split(","); + for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) { + to.push(toAddrs[_x]); + } + break; + case "subject": + mailtoComponents.subject = unescapeComponent(hfield[1], options); + break; + case "body": + mailtoComponents.body = unescapeComponent(hfield[1], options); + break; + default: + unknownHeaders = true; + headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options); + break; + } + } + if (unknownHeaders) mailtoComponents.headers = headers; + } + mailtoComponents.query = undefined; + for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) { + var addr = to[_x2].split("@"); + addr[0] = unescapeComponent(addr[0]); + if (!options.unicodeSupport) { + //convert Unicode IDN -> ASCII IDN + try { + addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase()); + } catch (e) { + mailtoComponents.error = mailtoComponents.error || "Email address's domain name can not be converted to ASCII via punycode: " + e; + } + } else { + addr[1] = unescapeComponent(addr[1], options).toLowerCase(); + } + to[_x2] = addr.join("@"); + } + return mailtoComponents; + }, + serialize: function serialize$$1(mailtoComponents, options) { + var components = mailtoComponents; + var to = toArray(mailtoComponents.to); + if (to) { + for (var x = 0, xl = to.length; x < xl; ++x) { + var toAddr = String(to[x]); + var atIdx = toAddr.lastIndexOf("@"); + var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar); + var domain = toAddr.slice(atIdx + 1); + //convert IDN via punycode + try { + domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain); + } catch (e) { + components.error = components.error || "Email address's domain name can not be converted to " + (!options.iri ? "ASCII" : "Unicode") + " via punycode: " + e; + } + to[x] = localPart + "@" + domain; + } + components.path = to.join(","); + } + var headers = mailtoComponents.headers = mailtoComponents.headers || {}; + if (mailtoComponents.subject) headers["subject"] = mailtoComponents.subject; + if (mailtoComponents.body) headers["body"] = mailtoComponents.body; + var fields = []; + for (var name in headers) { + if (headers[name] !== O[name]) { + fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + "=" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)); + } + } + if (fields.length) { + components.query = fields.join("&"); + } + return components; + } +}; + +var URN_PARSE = /^([^\:]+)\:(.*)/; +//RFC 2141 +var handler$3 = { + scheme: "urn", + parse: function parse$$1(components, options) { + var matches = components.path && components.path.match(URN_PARSE); + var urnComponents = components; + if (matches) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = matches[1].toLowerCase(); + var nss = matches[2]; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + urnComponents.nid = nid; + urnComponents.nss = nss; + urnComponents.path = undefined; + if (schemeHandler) { + urnComponents = schemeHandler.parse(urnComponents, options); + } + } else { + urnComponents.error = urnComponents.error || "URN can not be parsed."; + } + return urnComponents; + }, + serialize: function serialize$$1(urnComponents, options) { + var scheme = options.scheme || urnComponents.scheme || "urn"; + var nid = urnComponents.nid; + var urnScheme = scheme + ":" + (options.nid || nid); + var schemeHandler = SCHEMES[urnScheme]; + if (schemeHandler) { + urnComponents = schemeHandler.serialize(urnComponents, options); + } + var uriComponents = urnComponents; + var nss = urnComponents.nss; + uriComponents.path = (nid || options.nid) + ":" + nss; + return uriComponents; + } +}; + +var UUID = /^[0-9A-Fa-f]{8}(?:\-[0-9A-Fa-f]{4}){3}\-[0-9A-Fa-f]{12}$/; +//RFC 4122 +var handler$4 = { + scheme: "urn:uuid", + parse: function parse(urnComponents, options) { + var uuidComponents = urnComponents; + uuidComponents.uuid = uuidComponents.nss; + uuidComponents.nss = undefined; + if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) { + uuidComponents.error = uuidComponents.error || "UUID is not valid."; + } + return uuidComponents; + }, + serialize: function serialize(uuidComponents, options) { + var urnComponents = uuidComponents; + //normalize UUID + urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); + return urnComponents; + } +}; + +SCHEMES[handler.scheme] = handler; +SCHEMES[handler$1.scheme] = handler$1; +SCHEMES[handler$2.scheme] = handler$2; +SCHEMES[handler$3.scheme] = handler$3; +SCHEMES[handler$4.scheme] = handler$4; + +exports.SCHEMES = SCHEMES; +exports.pctEncChar = pctEncChar; +exports.pctDecChars = pctDecChars; +exports.parse = parse; +exports.removeDotSegments = removeDotSegments; +exports.serialize = serialize; +exports.resolveComponents = resolveComponents; +exports.resolve = resolve; +exports.normalize = normalize; +exports.equal = equal; +exports.escapeComponent = escapeComponent; +exports.unescapeComponent = unescapeComponent; + +Object.defineProperty(exports, '__esModule', { value: true }); + +}))); + + +},{}],"dPQH":[function(require,module,exports) { +'use strict'; + +// do not edit .js files directly - edit src/index.jst + + + +module.exports = function equal(a, b) { + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + if (a.constructor !== b.constructor) return false; + + var length, i, keys; + if (Array.isArray(a)) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + + + if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; + if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); + if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); + + keys = Object.keys(a); + length = keys.length; + if (length !== Object.keys(b).length) return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + + for (i = length; i-- !== 0;) { + var key = keys[i]; + + if (!equal(a[key], b[key])) return false; + } + + return true; + } + + // true if both NaN, false otherwise + return a!==a && b!==b; +}; + +},{}],"rD0p":[function(require,module,exports) { +'use strict'; + +// https://mathiasbynens.be/notes/javascript-encoding +// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode +module.exports = function ucs2length(str) { + var length = 0 + , len = str.length + , pos = 0 + , value; + while (pos < len) { + length++; + value = str.charCodeAt(pos++); + if (value >= 0xD800 && value <= 0xDBFF && pos < len) { + // high surrogate, and there is a next character + value = str.charCodeAt(pos); + if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate + } + } + return length; +}; + +},{}],"Q1F7":[function(require,module,exports) { +'use strict'; + + +module.exports = { + copy: copy, + checkDataType: checkDataType, + checkDataTypes: checkDataTypes, + coerceToTypes: coerceToTypes, + toHash: toHash, + getProperty: getProperty, + escapeQuotes: escapeQuotes, + equal: require('fast-deep-equal'), + ucs2length: require('./ucs2length'), + varOccurences: varOccurences, + varReplace: varReplace, + schemaHasRules: schemaHasRules, + schemaHasRulesExcept: schemaHasRulesExcept, + schemaUnknownRules: schemaUnknownRules, + toQuotedString: toQuotedString, + getPathExpr: getPathExpr, + getPath: getPath, + getData: getData, + unescapeFragment: unescapeFragment, + unescapeJsonPointer: unescapeJsonPointer, + escapeFragment: escapeFragment, + escapeJsonPointer: escapeJsonPointer +}; + + +function copy(o, to) { + to = to || {}; + for (var key in o) to[key] = o[key]; + return to; +} + + +function checkDataType(dataType, data, strictNumbers, negate) { + var EQUAL = negate ? ' !== ' : ' === ' + , AND = negate ? ' || ' : ' && ' + , OK = negate ? '!' : '' + , NOT = negate ? '' : '!'; + switch (dataType) { + case 'null': return data + EQUAL + 'null'; + case 'array': return OK + 'Array.isArray(' + data + ')'; + case 'object': return '(' + OK + data + AND + + 'typeof ' + data + EQUAL + '"object"' + AND + + NOT + 'Array.isArray(' + data + '))'; + case 'integer': return '(typeof ' + data + EQUAL + '"number"' + AND + + NOT + '(' + data + ' % 1)' + + AND + data + EQUAL + data + + (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; + case 'number': return '(typeof ' + data + EQUAL + '"' + dataType + '"' + + (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')'; + default: return 'typeof ' + data + EQUAL + '"' + dataType + '"'; + } +} + + +function checkDataTypes(dataTypes, data, strictNumbers) { + switch (dataTypes.length) { + case 1: return checkDataType(dataTypes[0], data, strictNumbers, true); + default: + var code = ''; + var types = toHash(dataTypes); + if (types.array && types.object) { + code = types.null ? '(': '(!' + data + ' || '; + code += 'typeof ' + data + ' !== "object")'; + delete types.null; + delete types.array; + delete types.object; + } + if (types.number) delete types.integer; + for (var t in types) + code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true); + + return code; + } +} + + +var COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]); +function coerceToTypes(optionCoerceTypes, dataTypes) { + if (Array.isArray(dataTypes)) { + var types = []; + for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl); + return paths[lvl - up]; + } + + if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl); + data = 'data' + ((lvl - up) || ''); + if (!jsonPointer) return data; + } + + var expr = data; + var segments = jsonPointer.split('/'); + for (var i=0; i= 0) return { index: index, compiling: true }; + index = this._compilations.length; + this._compilations[index] = { + schema: schema, + root: root, + baseId: baseId + }; + return { index: index, compiling: false }; +} + + +/** + * Removes the schema from the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + */ +function endCompiling(schema, root, baseId) { + /* jshint validthis: true */ + var i = compIndex.call(this, schema, root, baseId); + if (i >= 0) this._compilations.splice(i, 1); +} + + +/** + * Index of schema compilation in the currently compiled list + * @this Ajv + * @param {Object} schema schema to compile + * @param {Object} root root object + * @param {String} baseId base schema ID + * @return {Integer} compilation index + */ +function compIndex(schema, root, baseId) { + /* jshint validthis: true */ + for (var i=0; i%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i; +// For the source: https://gist.github.com/dperini/729294 +// For test cases: https://mathiasbynens.be/demo/url-regex +// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983. +// var URL = /^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu; +var URL = /^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-)*(?:[0-9a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[a-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i; +var UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i; +var JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/; +var JSON_POINTER_URI_FRAGMENT = /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i; +var RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/; + + +module.exports = formats; + +function formats(mode) { + mode = mode == 'full' ? 'full' : 'fast'; + return util.copy(formats[mode]); +} + + +formats.fast = { + // date: http://tools.ietf.org/html/rfc3339#section-5.6 + date: /^\d\d\d\d-[0-1]\d-[0-3]\d$/, + // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 + time: /^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, + 'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, + // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js + uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, + 'uri-reference': /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, + 'uri-template': URITEMPLATE, + url: URL, + // email (sources from jsen validator): + // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 + // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation') + email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i, + hostname: HOSTNAME, + // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + // uuid: http://tools.ietf.org/html/rfc4122 + uuid: UUID, + // JSON-pointer: https://tools.ietf.org/html/rfc6901 + // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A + 'json-pointer': JSON_POINTER, + 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, + // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 + 'relative-json-pointer': RELATIVE_JSON_POINTER +}; + + +formats.full = { + date: date, + time: time, + 'date-time': date_time, + uri: uri, + 'uri-reference': URIREF, + 'uri-template': URITEMPLATE, + url: URL, + email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, + hostname: HOSTNAME, + ipv4: /^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/, + ipv6: /^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i, + regex: regex, + uuid: UUID, + 'json-pointer': JSON_POINTER, + 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT, + 'relative-json-pointer': RELATIVE_JSON_POINTER +}; + + +function isLeapYear(year) { + // https://tools.ietf.org/html/rfc3339#appendix-C + return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); +} + + +function date(str) { + // full-date from http://tools.ietf.org/html/rfc3339#section-5.6 + var matches = str.match(DATE); + if (!matches) return false; + + var year = +matches[1]; + var month = +matches[2]; + var day = +matches[3]; + + return month >= 1 && month <= 12 && day >= 1 && + day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]); +} + + +function time(str, full) { + var matches = str.match(TIME); + if (!matches) return false; + + var hour = matches[1]; + var minute = matches[2]; + var second = matches[3]; + var timeZone = matches[5]; + return ((hour <= 23 && minute <= 59 && second <= 59) || + (hour == 23 && minute == 59 && second == 60)) && + (!full || timeZone); +} + + +var DATE_TIME_SEPARATOR = /t|\s/i; +function date_time(str) { + // http://tools.ietf.org/html/rfc3339#section-5.6 + var dateTime = str.split(DATE_TIME_SEPARATOR); + return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true); +} + + +var NOT_URI_FRAGMENT = /\/|:/; +function uri(str) { + // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "." + return NOT_URI_FRAGMENT.test(str) && URI.test(str); +} + + +var Z_ANCHOR = /[^\\]\\Z/; +function regex(str) { + if (Z_ANCHOR.test(str)) return false; + try { + new RegExp(str); + return true; + } catch(e) { + return false; + } +} + +},{"./util":"Q1F7"}],"a2na":[function(require,module,exports) { +'use strict'; +module.exports = function generate_ref(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $async, $refCode; + if ($schema == '#' || $schema == '#/') { + if (it.isRoot) { + $async = it.async; + $refCode = 'validate'; + } else { + $async = it.root.schema.$async === true; + $refCode = 'root.refVal[0]'; + } + } else { + var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); + if ($refVal === undefined) { + var $message = it.MissingRefError.message(it.baseId, $schema); + if (it.opts.missingRefs == 'fail') { + it.logger.error($message); + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('$ref') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \'' + (it.util.escapeQuotes($schema)) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'can\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\' '; + } + if (it.opts.verbose) { + out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + if ($breakOnError) { + out += ' if (false) { '; + } + } else if (it.opts.missingRefs == 'ignore') { + it.logger.warn($message); + if ($breakOnError) { + out += ' if (true) { '; + } + } else { + throw new it.MissingRefError(it.baseId, $schema, $message); + } + } else if ($refVal.inline) { + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + $it.schema = $refVal.schema; + $it.schemaPath = ''; + $it.errSchemaPath = $schema; + var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); + out += ' ' + ($code) + ' '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + } + } else { + $async = $refVal.$async === true || (it.async && $refVal.$async !== false); + $refCode = $refVal.code; + } + } + if ($refCode) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; + if (it.opts.passContext) { + out += ' ' + ($refCode) + '.call(this, '; + } else { + out += ' ' + ($refCode) + '( '; + } + out += ' ' + ($data) + ', (dataPath || \'\')'; + if (it.errorPath != '""') { + out += ' + ' + (it.errorPath); + } + var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData', + $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty'; + out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) '; + var __callValidate = out; + out = $$outStack.pop(); + if ($async) { + if (!it.async) throw new Error('async schema referenced by sync schema'); + if ($breakOnError) { + out += ' var ' + ($valid) + '; '; + } + out += ' try { await ' + (__callValidate) + '; '; + if ($breakOnError) { + out += ' ' + ($valid) + ' = true; '; + } + out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; '; + if ($breakOnError) { + out += ' ' + ($valid) + ' = false; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($valid) + ') { '; + } + } else { + out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } '; + if ($breakOnError) { + out += ' else { '; + } + } + } + return out; +} + +},{}],"hRgn":[function(require,module,exports) { +'use strict'; +module.exports = function generate_allOf(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $allSchemasEmpty = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + $allSchemasEmpty = false; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($breakOnError) { + if ($allSchemasEmpty) { + out += ' if (true) { '; + } else { + out += ' ' + ($closingBraces.slice(0, -1)) + ' '; + } + } + return out; +} + +},{}],"lo6J":[function(require,module,exports) { +'use strict'; +module.exports = function generate_anyOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $noEmptySchema = $schema.every(function($sch) { + return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all)); + }); + if ($noEmptySchema) { + var $currentBaseId = $it.baseId; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { '; + $closingBraces += '}'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('anyOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should match some schema in anyOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; +} + +},{}],"Kkzr":[function(require,module,exports) { +'use strict'; +module.exports = function generate_comment(it, $keyword, $ruleType) { + var out = ' '; + var $schema = it.schema[$keyword]; + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $comment = it.util.toQuotedString($schema); + if (it.opts.$comment === true) { + out += ' console.log(' + ($comment) + ');'; + } else if (typeof it.opts.$comment == 'function') { + out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);'; + } + return out; +} + +},{}],"U4sD":[function(require,module,exports) { +'use strict'; +module.exports = function generate_const(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!$isData) { + out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('const') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to constant\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"EypH":[function(require,module,exports) { +'use strict'; +module.exports = function generate_contains(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId, + $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all)); + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if ($nonEmptySchema) { + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (' + ($nextValid) + ') break; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {'; + } else { + out += ' if (' + ($data) + '.length == 0) {'; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('contains') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should contain a valid item\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + if ($nonEmptySchema) { + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + } + if (it.opts.allErrors) { + out += ' } '; + } + return out; +} + +},{}],"Cpp7":[function(require,module,exports) { +'use strict'; +module.exports = function generate_dependencies(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $schemaDeps = {}, + $propertyDeps = {}, + $ownProperties = it.opts.ownProperties; + for ($property in $schema) { + if ($property == '__proto__') continue; + var $sch = $schema[$property]; + var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps; + $deps[$property] = $sch; + } + out += 'var ' + ($errs) + ' = errors;'; + var $currentErrorPath = it.errorPath; + out += 'var missing' + ($lvl) + ';'; + for (var $property in $propertyDeps) { + $deps = $propertyDeps[$property]; + if ($deps.length) { + out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; + } + if ($breakOnError) { + out += ' && ( '; + var arr1 = $deps; + if (arr1) { + var $propertyKey, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $propertyKey = arr1[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ')) { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } else { + out += ' ) { '; + var arr2 = $deps; + if (arr2) { + var $propertyKey, i2 = -1, + l2 = arr2.length - 1; + while (i2 < l2) { + $propertyKey = arr2[i2 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('dependencies') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \'' + (it.util.escapeQuotes($property)) + '\', missingProperty: \'' + ($missingProperty) + '\', depsCount: ' + ($deps.length) + ', deps: \'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(", "))) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have '; + if ($deps.length == 1) { + out += 'property ' + (it.util.escapeQuotes($deps[0])); + } else { + out += 'properties ' + (it.util.escapeQuotes($deps.join(", "))); + } + out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + } + it.errorPath = $currentErrorPath; + var $currentBaseId = $it.baseId; + for (var $property in $schemaDeps) { + var $sch = $schemaDeps[$property]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($property)) + '\') '; + } + out += ') { '; + $it.schema = $sch; + $it.schemaPath = $schemaPath + it.util.getProperty($property); + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property); + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + return out; +} + +},{}],"fqDY":[function(require,module,exports) { +'use strict'; +module.exports = function generate_enum(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $i = 'i' + $lvl, + $vSchema = 'schema' + $lvl; + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';'; + } + out += 'var ' + ($valid) + ';'; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }'; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('enum') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be equal to one of the allowed values\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' }'; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"avoW":[function(require,module,exports) { +'use strict'; +module.exports = function generate_format(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + if (it.opts.format === false) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $unknownFormats = it.opts.unknownFormats, + $allowUnknown = Array.isArray($unknownFormats); + if ($isData) { + var $format = 'format' + $lvl, + $isObject = 'isObject' + $lvl, + $formatType = 'formatType' + $lvl; + out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \'object\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \'string\'; if (' + ($isObject) + ') { '; + if (it.async) { + out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; '; + } + out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' ('; + if ($unknownFormats != 'ignore') { + out += ' (' + ($schemaValue) + ' && !' + ($format) + ' '; + if ($allowUnknown) { + out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 '; + } + out += ') || '; + } + out += ' (' + ($format) + ' && ' + ($formatType) + ' == \'' + ($ruleType) + '\' && !(typeof ' + ($format) + ' == \'function\' ? '; + if (it.async) { + out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) '; + } else { + out += ' ' + ($format) + '(' + ($data) + ') '; + } + out += ' : ' + ($format) + '.test(' + ($data) + '))))) {'; + } else { + var $format = it.formats[$schema]; + if (!$format) { + if ($unknownFormats == 'ignore') { + it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } else { + throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); + } + } + var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate; + var $formatType = $isObject && $format.type || 'string'; + if ($isObject) { + var $async = $format.async === true; + $format = $format.validate; + } + if ($formatType != $ruleType) { + if ($breakOnError) { + out += ' if (true) { '; + } + return out; + } + if ($async) { + if (!it.async) throw new Error('async format in sync schema'); + var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; + out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { '; + } else { + out += ' if (! '; + var $formatRef = 'formats' + it.util.getProperty($schema); + if ($isObject) $formatRef += '.validate'; + if (typeof $format == 'function') { + out += ' ' + ($formatRef) + '(' + ($data) + ') '; + } else { + out += ' ' + ($formatRef) + '.test(' + ($data) + ') '; + } + out += ') { '; + } + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('format') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match format "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"JHQ3":[function(require,module,exports) { +'use strict'; +module.exports = function generate_if(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + var $thenSch = it.schema['then'], + $elseSch = it.schema['else'], + $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)), + $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)), + $currentBaseId = $it.baseId; + if ($thenPresent || $elsePresent) { + var $ifClause; + $it.createErrors = false; + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + $it.createErrors = true; + out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + if ($thenPresent) { + out += ' if (' + ($nextValid) + ') { '; + $it.schema = it.schema['then']; + $it.schemaPath = it.schemaPath + '.then'; + $it.errSchemaPath = it.errSchemaPath + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; + if ($thenPresent && $elsePresent) { + $ifClause = 'ifClause' + $lvl; + out += ' var ' + ($ifClause) + ' = \'then\'; '; + } else { + $ifClause = '\'then\''; + } + out += ' } '; + if ($elsePresent) { + out += ' else { '; + } + } else { + out += ' if (!' + ($nextValid) + ') { '; + } + if ($elsePresent) { + $it.schema = it.schema['else']; + $it.schemaPath = it.schemaPath + '.else'; + $it.errSchemaPath = it.errSchemaPath + '/else'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + out += ' ' + ($valid) + ' = ' + ($nextValid) + '; '; + if ($thenPresent && $elsePresent) { + $ifClause = 'ifClause' + $lvl; + out += ' var ' + ($ifClause) + ' = \'else\'; '; + } else { + $ifClause = '\'else\''; + } + out += ' } '; + } + out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('if') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match "\' + ' + ($ifClause) + ' + \'" schema\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; +} + +},{}],"aiPb":[function(require,module,exports) { +'use strict'; +module.exports = function generate_items(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $idx = 'i' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $currentBaseId = it.baseId; + out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';'; + if (Array.isArray($schema)) { + var $additionalItems = it.schema.additionalItems; + if ($additionalItems === false) { + out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have more than ' + ($schema.length) + ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { '; + var $passData = $data + '[' + $i + ']'; + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true); + $it.dataPathArr[$dataNxt] = $i; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) { + $it.schema = $additionalItems; + $it.schemaPath = it.schemaPath + '.additionalItems'; + $it.errSchemaPath = it.errSchemaPath + '/additionalItems'; + out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true); + var $passData = $data + '[' + $idx + ']'; + $it.dataPathArr[$dataNxt] = $idx; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' }'; + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + return out; +} + +},{}],"UJAl":[function(require,module,exports) { +'use strict'; +module.exports = function generate__limit(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $isMax = $keyword == 'maximum', + $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum', + $schemaExcl = it.schema[$exclusiveKeyword], + $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data, + $op = $isMax ? '<' : '>', + $notOp = $isMax ? '>' : '<', + $errorKeyword = undefined; + if (!($isData || typeof $schema == 'number' || $schema === undefined)) { + throw new Error($keyword + ' must be number'); + } + if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) { + throw new Error($exclusiveKeyword + ' must be number or boolean'); + } + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $exclType = 'exclType' + $lvl, + $exclIsNumber = 'exclIsNumber' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \'boolean\' && ' + ($exclType) + ' != \'undefined\' && ' + ($exclType) + ' != \'number\') { '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_exclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($exclType) + ' == \'number\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\'; '; + if ($schema === undefined) { + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaValueExcl; + $isData = $isDataExcl; + } + } else { + var $exclIsNumber = typeof $schemaExcl == 'number', + $opStr = $op; + if ($exclIsNumber && $isData) { + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { '; + } else { + if ($exclIsNumber && $schema === undefined) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $schemaValue = $schemaExcl; + $notOp += '='; + } else { + if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema); + if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) { + $exclusive = true; + $errorKeyword = $exclusiveKeyword; + $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword; + $notOp += '='; + } else { + $exclusive = false; + $opStr += '='; + } + } + var $opExpr = '\'' + $opStr + '\''; + out += ' if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { '; + } + } + $errorKeyword = $errorKeyword || $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"W8ih":[function(require,module,exports) { +'use strict'; +module.exports = function generate__limitItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + var $op = $keyword == 'maxItems' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxItems') { + out += 'more'; + } else { + out += 'fewer'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' items\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"fZGX":[function(require,module,exports) { +'use strict'; +module.exports = function generate__limitLength(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + var $op = $keyword == 'maxLength' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + if (it.opts.unicode === false) { + out += ' ' + ($data) + '.length '; + } else { + out += ' ucs2length(' + ($data) + ') '; + } + out += ' ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitLength') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be '; + if ($keyword == 'maxLength') { + out += 'longer'; + } else { + out += 'shorter'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' characters\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"JAEr":[function(require,module,exports) { +'use strict'; +module.exports = function generate__limitProperties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $errorKeyword; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + var $op = $keyword == 'maxProperties' ? '>' : '<'; + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'number\') || '; + } + out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_limitProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have '; + if ($keyword == 'maxProperties') { + out += 'more'; + } else { + out += 'fewer'; + } + out += ' than '; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + ($schema); + } + out += ' properties\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"oNPH":[function(require,module,exports) { +'use strict'; +module.exports = function generate_multipleOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (!($isData || typeof $schema == 'number')) { + throw new Error($keyword + ' must be number'); + } + out += 'var division' + ($lvl) + ';if ('; + if ($isData) { + out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \'number\' || '; + } + out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', '; + if (it.opts.multipleOfPrecision) { + out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' '; + } else { + out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') '; + } + out += ' ) '; + if ($isData) { + out += ' ) '; + } + out += ' ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('multipleOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be multiple of '; + if ($isData) { + out += '\' + ' + ($schemaValue); + } else { + out += '' + ($schemaValue) + '\''; + } + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"mmjm":[function(require,module,exports) { +'use strict'; +module.exports = function generate_not(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + $it.level++; + var $nextValid = 'valid' + $it.level; + if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + var $allErrorsOption; + if ($it.opts.allErrors) { + $allErrorsOption = $it.opts.allErrors; + $it.opts.allErrors = false; + } + out += ' ' + (it.validate($it)) + ' '; + $it.createErrors = true; + if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (' + ($nextValid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } '; + if (it.opts.allErrors) { + out += ' } '; + } + } else { + out += ' var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('not') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT be valid\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if ($breakOnError) { + out += ' if (false) { '; + } + } + return out; +} + +},{}],"SSWF":[function(require,module,exports) { +'use strict'; +module.exports = function generate_oneOf(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $currentBaseId = $it.baseId, + $prevValid = 'prevValid' + $lvl, + $passingSchemas = 'passingSchemas' + $lvl; + out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var arr1 = $schema; + if (arr1) { + var $sch, $i = -1, + l1 = arr1.length - 1; + while ($i < l1) { + $sch = arr1[$i += 1]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + $it.schema = $sch; + $it.schemaPath = $schemaPath + '[' + $i + ']'; + $it.errSchemaPath = $errSchemaPath + '/' + $i; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } else { + out += ' var ' + ($nextValid) + ' = true; '; + } + if ($i) { + out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { '; + $closingBraces += '}'; + } + out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }'; + } + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('oneOf') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match exactly one schema in oneOf\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError(vErrors); '; + } else { + out += ' validate.errors = vErrors; return false; '; + } + } + out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }'; + if (it.opts.allErrors) { + out += ' } '; + } + return out; +} + +},{}],"mGZS":[function(require,module,exports) { +'use strict'; +module.exports = function generate_pattern(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema); + out += 'if ( '; + if ($isData) { + out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \'string\') || '; + } + out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('pattern') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should match pattern "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '} '; + if ($breakOnError) { + out += ' else { '; + } + return out; +} + +},{}],"jFnx":[function(require,module,exports) { +'use strict'; +module.exports = function generate_properties(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl; + var $schemaKeys = Object.keys($schema || {}).filter(notProto), + $pProperties = it.schema.patternProperties || {}, + $pPropertyKeys = Object.keys($pProperties).filter(notProto), + $aProperties = it.schema.additionalProperties, + $someProperties = $schemaKeys.length || $pPropertyKeys.length, + $noAdditional = $aProperties === false, + $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length, + $removeAdditional = it.opts.removeAdditional, + $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + var $required = it.schema.required; + if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { + var $requiredHash = it.util.toHash($required); + } + + function notProto(p) { + return p !== '__proto__'; + } + out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;'; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined;'; + } + if ($checkAdditional) { + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + if ($someProperties) { + out += ' var isAdditional' + ($lvl) + ' = !(false '; + if ($schemaKeys.length) { + if ($schemaKeys.length > 8) { + out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') '; + } else { + var arr1 = $schemaKeys; + if (arr1) { + var $propertyKey, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $propertyKey = arr1[i1 += 1]; + out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' '; + } + } + } + } + if ($pPropertyKeys.length) { + var arr2 = $pPropertyKeys; + if (arr2) { + var $pProperty, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $pProperty = arr2[$i += 1]; + out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') '; + } + } + } + out += ' ); if (isAdditional' + ($lvl) + ') { '; + } + if ($removeAdditional == 'all') { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + var $currentErrorPath = it.errorPath; + var $additionalProperty = '\' + ' + $key + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + } + if ($noAdditional) { + if ($removeAdditional) { + out += ' delete ' + ($data) + '[' + ($key) + ']; '; + } else { + out += ' ' + ($nextValid) + ' = false; '; + var $currErrSchemaPath = $errSchemaPath; + $errSchemaPath = it.errSchemaPath + '/additionalProperties'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('additionalProperties') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \'' + ($additionalProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is an invalid additional property'; + } else { + out += 'should NOT have additional properties'; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + if ($breakOnError) { + out += ' break; '; + } + } + } else if ($additionalIsSchema) { + if ($removeAdditional == 'failing') { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } '; + it.compositeRule = $it.compositeRule = $wasComposite; + } else { + $it.schema = $aProperties; + $it.schemaPath = it.schemaPath + '.additionalProperties'; + $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; + $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + } + } + it.errorPath = $currentErrorPath; + } + if ($someProperties) { + out += ' } '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + var $useDefaults = it.opts.useDefaults && !it.compositeRule; + if ($schemaKeys.length) { + var arr3 = $schemaKeys; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $sch = $schema[$propertyKey]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + var $prop = it.util.getProperty($propertyKey), + $passData = $data + $prop, + $hasDefault = $useDefaults && $sch.default !== undefined; + $it.schema = $sch; + $it.schemaPath = $schemaPath + $prop; + $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); + $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); + $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + $code = it.util.varReplace($code, $nextData, $passData); + var $useData = $passData; + } else { + var $useData = $nextData; + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; '; + } + if ($hasDefault) { + out += ' ' + ($code) + ' '; + } else { + if ($requiredHash && $requiredHash[$propertyKey]) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = false; '; + var $currentErrorPath = it.errorPath, + $currErrSchemaPath = $errSchemaPath, + $missingProperty = it.util.escapeQuotes($propertyKey); + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + $errSchemaPath = it.errSchemaPath + '/required'; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + $errSchemaPath = $currErrSchemaPath; + it.errorPath = $currentErrorPath; + out += ' } else { '; + } else { + if ($breakOnError) { + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { ' + ($nextValid) + ' = true; } else { '; + } else { + out += ' if (' + ($useData) + ' !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ' ) { '; + } + } + out += ' ' + ($code) + ' } '; + } + } + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + if ($pPropertyKeys.length) { + var arr4 = $pPropertyKeys; + if (arr4) { + var $pProperty, i4 = -1, + l4 = arr4.length - 1; + while (i4 < l4) { + $pProperty = arr4[i4 += 1]; + var $sch = $pProperties[$pProperty]; + if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) { + $it.schema = $sch; + $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); + $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty); + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { '; + $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); + var $passData = $data + '[' + $key + ']'; + $it.dataPathArr[$dataNxt] = $key; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + if ($breakOnError) { + out += ' if (!' + ($nextValid) + ') break; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else ' + ($nextValid) + ' = true; '; + } + out += ' } '; + if ($breakOnError) { + out += ' if (' + ($nextValid) + ') { '; + $closingBraces += '}'; + } + } + } + } + } + if ($breakOnError) { + out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {'; + } + return out; +} + +},{}],"XxjR":[function(require,module,exports) { +'use strict'; +module.exports = function generate_propertyNames(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + out += 'var ' + ($errs) + ' = errors;'; + if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) { + $it.schema = $schema; + $it.schemaPath = $schemaPath; + $it.errSchemaPath = $errSchemaPath; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $i = 'i' + $lvl, + $invalidName = '\' + ' + $key + ' + \'', + $dataNxt = $it.dataLevel = it.dataLevel + 1, + $nextData = 'data' + $dataNxt, + $dataProperties = 'dataProperties' + $lvl, + $ownProperties = it.opts.ownProperties, + $currentBaseId = it.baseId; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined; '; + } + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' var startErrs' + ($lvl) + ' = errors; '; + var $passData = $key; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + var $code = it.validate($it); + $it.baseId = $currentBaseId; + if (it.util.varOccurences($code, $nextData) < 2) { + out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' '; + } else { + out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' '; + } + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) { + $required[$required.length] = $property; + } + } + } + } else { + var $required = $schema; + } + } + if ($isData || $required.length) { + var $currentErrorPath = it.errorPath, + $loopRequired = $isData || $required.length >= it.opts.loopRequired, + $ownProperties = it.opts.ownProperties; + if ($breakOnError) { + out += ' var missing' + ($lvl) + '; '; + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + out += ' var ' + ($valid) + ' = true; '; + if ($isData) { + out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {'; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined '; + if ($ownProperties) { + out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += '; if (!' + ($valid) + ') break; } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } else { + out += ' if ( '; + var arr2 = $required; + if (arr2) { + var $propertyKey, $i = -1, + l2 = arr2.length - 1; + while ($i < l2) { + $propertyKey = arr2[$i += 1]; + if ($i) { + out += ' || '; + } + var $prop = it.util.getProperty($propertyKey), + $useData = $data + $prop; + out += ' ( ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) '; + } + } + out += ') { '; + var $propertyPath = 'missing' + $lvl, + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath; + } + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } else { '; + } + } else { + if ($loopRequired) { + if (!$isData) { + out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; '; + } + var $i = 'i' + $lvl, + $propertyPath = 'schema' + $lvl + '[' + $i + ']', + $missingProperty = '\' + ' + $propertyPath + ' + \''; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers); + } + if ($isData) { + out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { '; + } + out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } '; + if ($isData) { + out += ' } '; + } + } else { + var arr3 = $required; + if (arr3) { + var $propertyKey, i3 = -1, + l3 = arr3.length - 1; + while (i3 < l3) { + $propertyKey = arr3[i3 += 1]; + var $prop = it.util.getProperty($propertyKey), + $missingProperty = it.util.escapeQuotes($propertyKey), + $useData = $data + $prop; + if (it.opts._errorDataPathProperty) { + it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); + } + out += ' if ( ' + ($useData) + ' === undefined '; + if ($ownProperties) { + out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \'' + (it.util.escapeQuotes($propertyKey)) + '\') '; + } + out += ') { var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('required') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \'' + ($missingProperty) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \''; + if (it.opts._errorDataPathProperty) { + out += 'is a required property'; + } else { + out += 'should have required property \\\'' + ($missingProperty) + '\\\''; + } + out += '\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + } + } + } + } + it.errorPath = $currentErrorPath; + } else if ($breakOnError) { + out += ' if (true) {'; + } + return out; +} + +},{}],"mmFQ":[function(require,module,exports) { +'use strict'; +module.exports = function generate_uniqueItems(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if (($schema || $isData) && it.opts.uniqueItems !== false) { + if ($isData) { + out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'boolean\') ' + ($valid) + ' = false; else { '; + } + out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { '; + var $itemType = it.schema.items && it.schema.items.type, + $typeIsArray = Array.isArray($itemType); + if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) { + out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } '; + } else { + out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; '; + var $method = 'checkDataType' + ($typeIsArray ? 's' : ''); + out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; '; + if ($typeIsArray) { + out += ' if (typeof item == \'string\') item = \'"\' + item; '; + } + out += ' if (typeof itemIndices[item] == \'number\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } '; + } + out += ' } '; + if ($isData) { + out += ' } '; + } + out += ' if (!' + ($valid) + ') { '; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('uniqueItems') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } '; + if (it.opts.messages !== false) { + out += ' , message: \'should NOT have duplicate items (items ## \' + j + \' and \' + i + \' are identical)\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + ($schema); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + out += ' else { '; + } + } else { + if ($breakOnError) { + out += ' if (true) { '; + } + } + return out; +} + +},{}],"Czyc":[function(require,module,exports) { +'use strict'; + +//all requires must be explicit because browserify won't work with dynamic requires +module.exports = { + '$ref': require('./ref'), + allOf: require('./allOf'), + anyOf: require('./anyOf'), + '$comment': require('./comment'), + const: require('./const'), + contains: require('./contains'), + dependencies: require('./dependencies'), + 'enum': require('./enum'), + format: require('./format'), + 'if': require('./if'), + items: require('./items'), + maximum: require('./_limit'), + minimum: require('./_limit'), + maxItems: require('./_limitItems'), + minItems: require('./_limitItems'), + maxLength: require('./_limitLength'), + minLength: require('./_limitLength'), + maxProperties: require('./_limitProperties'), + minProperties: require('./_limitProperties'), + multipleOf: require('./multipleOf'), + not: require('./not'), + oneOf: require('./oneOf'), + pattern: require('./pattern'), + properties: require('./properties'), + propertyNames: require('./propertyNames'), + required: require('./required'), + uniqueItems: require('./uniqueItems'), + validate: require('./validate') +}; + +},{"./ref":"a2na","./allOf":"hRgn","./anyOf":"lo6J","./comment":"Kkzr","./const":"U4sD","./contains":"EypH","./dependencies":"Cpp7","./enum":"fqDY","./format":"avoW","./if":"JHQ3","./items":"aiPb","./_limit":"UJAl","./_limitItems":"W8ih","./_limitLength":"fZGX","./_limitProperties":"JAEr","./multipleOf":"oNPH","./not":"mmjm","./oneOf":"SSWF","./pattern":"mGZS","./properties":"jFnx","./propertyNames":"XxjR","./required":"Dht1","./uniqueItems":"mmFQ","./validate":"yhC1"}],"vBP0":[function(require,module,exports) { +'use strict'; + +var ruleModules = require('../dotjs') + , toHash = require('./util').toHash; + +module.exports = function rules() { + var RULES = [ + { type: 'number', + rules: [ { 'maximum': ['exclusiveMaximum'] }, + { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] }, + { type: 'string', + rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] }, + { type: 'array', + rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] }, + { type: 'object', + rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames', + { 'properties': ['additionalProperties', 'patternProperties'] } ] }, + { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] } + ]; + + var ALL = [ 'type', '$comment' ]; + var KEYWORDS = [ + '$schema', '$id', 'id', '$data', '$async', 'title', + 'description', 'default', 'definitions', + 'examples', 'readOnly', 'writeOnly', + 'contentMediaType', 'contentEncoding', + 'additionalItems', 'then', 'else' + ]; + var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ]; + RULES.all = toHash(ALL); + RULES.types = toHash(TYPES); + + RULES.forEach(function (group) { + group.rules = group.rules.map(function (keyword) { + var implKeywords; + if (typeof keyword == 'object') { + var key = Object.keys(keyword)[0]; + implKeywords = keyword[key]; + keyword = key; + implKeywords.forEach(function (k) { + ALL.push(k); + RULES.all[k] = true; + }); + } + ALL.push(keyword); + var rule = RULES.all[keyword] = { + keyword: keyword, + code: ruleModules[keyword], + implements: implKeywords + }; + return rule; + }); + + RULES.all.$comment = { + keyword: '$comment', + code: ruleModules.$comment + }; + + if (group.type) RULES.types[group.type] = group; + }); + + RULES.keywords = toHash(ALL.concat(KEYWORDS)); + RULES.custom = {}; + + return RULES; +}; + +},{"../dotjs":"Czyc","./util":"Q1F7"}],"BunE":[function(require,module,exports) { +'use strict'; + +var KEYWORDS = [ + 'multipleOf', + 'maximum', + 'exclusiveMaximum', + 'minimum', + 'exclusiveMinimum', + 'maxLength', + 'minLength', + 'pattern', + 'additionalItems', + 'maxItems', + 'minItems', + 'uniqueItems', + 'maxProperties', + 'minProperties', + 'required', + 'additionalProperties', + 'enum', + 'format', + 'const' +]; + +module.exports = function (metaSchema, keywordsJsonPointers) { + for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used. + * @param {Object} options optional options with properties `separator` and `dataVar`. + * @return {String} human readable string with all errors descriptions + */ +function errorsText(errors, options) { + errors = errors || this.errors; + if (!errors) return 'No errors'; + options = options || {}; + var separator = options.separator === undefined ? ', ' : options.separator; + var dataVar = options.dataVar === undefined ? 'data' : options.dataVar; + + var text = ''; + for (var i=0; i max || (exclusive && min == max)) + throw new Error('There are no numbers in range'); + } +}; + +},{}],"AtCq":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'string', + inline: function (it, keyword, schema) { + return getRegExp() + '.test(data' + (it.dataLevel || '') + ')'; + + function getRegExp() { + try { + if (typeof schema == 'object') + return new RegExp(schema.pattern, schema.flags); + + var rx = schema.match(/^\/(.*)\/([gimuy]*)$/); + if (rx) return new RegExp(rx[1], rx[2]); + throw new Error('cannot parse string into RegExp'); + } catch(e) { + console.error('regular expression', schema, 'is invalid'); + throw e; + } + } + }, + metaSchema: { + type: ['string', 'object'], + properties: { + pattern: { type: 'string' }, + flags: { type: 'string' } + }, + required: ['pattern'], + additionalProperties: false + } + }; + + ajv.addKeyword('regexp', defFunc.definition); + return ajv; +}; + +},{}],"yoml":[function(require,module,exports) { +'use strict'; + +var KNOWN_TYPES = ['undefined', 'string', 'number', 'object', 'function', 'boolean', 'symbol']; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + inline: function (it, keyword, schema) { + var data = 'data' + (it.dataLevel || ''); + if (typeof schema == 'string') return 'typeof ' + data + ' == "' + schema + '"'; + schema = 'validate.schema' + it.schemaPath + '.' + keyword; + return schema + '.indexOf(typeof ' + data + ') >= 0'; + }, + metaSchema: { + anyOf: [ + { + type: 'string', + enum: KNOWN_TYPES + }, + { + type: 'array', + items: { + type: 'string', + enum: KNOWN_TYPES + } + } + ] + } + }; + + ajv.addKeyword('typeof', defFunc.definition); + return ajv; +}; + +},{}],"FbE8":[function(require,module,exports) { +'use strict'; + +var sequences = {}; + +var DEFAULTS = { + timestamp: function() { return Date.now(); }, + datetime: function() { return (new Date).toISOString(); }, + date: function() { return (new Date).toISOString().slice(0, 10); }, + time: function() { return (new Date).toISOString().slice(11); }, + random: function() { return Math.random(); }, + randomint: function (args) { + var limit = args && args.max || 2; + return function() { return Math.floor(Math.random() * limit); }; + }, + seq: function (args) { + var name = args && args.name || ''; + sequences[name] = sequences[name] || 0; + return function() { return sequences[name]++; }; + } +}; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + compile: function (schema, parentSchema, it) { + var funcs = {}; + + for (var key in schema) { + var d = schema[key]; + var func = getDefault(typeof d == 'string' ? d : d.func); + funcs[key] = func.length ? func(d.args) : func; + } + + return it.opts.useDefaults && !it.compositeRule + ? assignDefaults + : noop; + + function assignDefaults(data) { + for (var prop in schema){ + if (data[prop] === undefined + || (it.opts.useDefaults == 'empty' + && (data[prop] === null || data[prop] === ''))) + data[prop] = funcs[prop](); + } + return true; + } + + function noop() { return true; } + }, + DEFAULTS: DEFAULTS, + metaSchema: { + type: 'object', + additionalProperties: { + type: ['string', 'object'], + additionalProperties: false, + required: ['func', 'args'], + properties: { + func: { type: 'string' }, + args: { type: 'object' } + } + } + } + }; + + ajv.addKeyword('dynamicDefaults', defFunc.definition); + return ajv; + + function getDefault(d) { + var def = DEFAULTS[d]; + if (def) return def; + throw new Error('invalid "dynamicDefaults" keyword property value: ' + d); + } +}; + +},{}],"CJDR":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'object', + macro: function (schema, parentSchema) { + if (!schema) return true; + var properties = Object.keys(parentSchema.properties); + if (properties.length == 0) return true; + return {required: properties}; + }, + metaSchema: {type: 'boolean'}, + dependencies: ['properties'] + }; + + ajv.addKeyword('allRequired', defFunc.definition); + return ajv; +}; + +},{}],"n1DR":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'object', + macro: function (schema) { + if (schema.length == 0) return true; + if (schema.length == 1) return {required: schema}; + var schemas = schema.map(function (prop) { + return {required: [prop]}; + }); + return {anyOf: schemas}; + }, + metaSchema: { + type: 'array', + items: { + type: 'string' + } + } + }; + + ajv.addKeyword('anyRequired', defFunc.definition); + return ajv; +}; + +},{}],"XrCF":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'object', + macro: function (schema) { + if (schema.length == 0) return true; + if (schema.length == 1) return {required: schema}; + var schemas = schema.map(function (prop) { + return {required: [prop]}; + }); + return {oneOf: schemas}; + }, + metaSchema: { + type: 'array', + items: { + type: 'string' + } + } + }; + + ajv.addKeyword('oneRequired', defFunc.definition); + return ajv; +}; + +},{}],"MFGI":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'object', + macro: function (schema) { + if (schema.length == 0) return true; + if (schema.length == 1) return {not: {required: schema}}; + var schemas = schema.map(function (prop) { + return {required: [prop]}; + }); + return {not: {anyOf: schemas}}; + }, + metaSchema: { + type: 'array', + items: { + type: 'string' + } + } + }; + + ajv.addKeyword('prohibited', defFunc.definition); + return ajv; +}; + +},{}],"m7Ap":[function(require,module,exports) { +'use strict'; + +var SCALAR_TYPES = ['number', 'integer', 'string', 'boolean', 'null']; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'array', + compile: function(keys, parentSchema, it) { + var equal = it.util.equal; + var scalar = getScalarKeys(keys, parentSchema); + + return function(data) { + if (data.length > 1) { + for (var k=0; k < keys.length; k++) { + var i, key = keys[k]; + if (scalar[k]) { + var hash = {}; + for (i = data.length; i--;) { + if (!data[i] || typeof data[i] != 'object') continue; + var prop = data[i][key]; + if (prop && typeof prop == 'object') continue; + if (typeof prop == 'string') prop = '"' + prop; + if (hash[prop]) return false; + hash[prop] = true; + } + } else { + for (i = data.length; i--;) { + if (!data[i] || typeof data[i] != 'object') continue; + for (var j = i; j--;) { + if (data[j] && typeof data[j] == 'object' && equal(data[i][key], data[j][key])) + return false; + } + } + } + } + } + return true; + }; + }, + metaSchema: { + type: 'array', + items: {type: 'string'} + } + }; + + ajv.addKeyword('uniqueItemProperties', defFunc.definition); + return ajv; +}; + + +function getScalarKeys(keys, schema) { + return keys.map(function(key) { + var properties = schema.items && schema.items.properties; + var propType = properties && properties[key] && properties[key].type; + return Array.isArray(propType) + ? propType.indexOf('object') < 0 && propType.indexOf('array') < 0 + : SCALAR_TYPES.indexOf(propType) >= 0; + }); +} + +},{}],"R4Fp":[function(require,module,exports) { +'use strict'; + +module.exports = { + metaSchemaRef: metaSchemaRef +}; + +var META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema'; + +function metaSchemaRef(ajv) { + var defaultMeta = ajv._opts.defaultMeta; + if (typeof defaultMeta == 'string') return { $ref: defaultMeta }; + if (ajv.getSchema(META_SCHEMA_ID)) return { $ref: META_SCHEMA_ID }; + console.warn('meta schema not defined'); + return {}; +} + +},{}],"kIuQ":[function(require,module,exports) { +'use strict'; + +var util = require('./_util'); + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'object', + macro: function (schema) { + var schemas = []; + for (var pointer in schema) + schemas.push(getSchema(pointer, schema[pointer])); + return {'allOf': schemas}; + }, + metaSchema: { + type: 'object', + propertyNames: { + type: 'string', + format: 'json-pointer' + }, + additionalProperties: util.metaSchemaRef(ajv) + } + }; + + ajv.addKeyword('deepProperties', defFunc.definition); + return ajv; +}; + + +function getSchema(jsonPointer, schema) { + var segments = jsonPointer.split('/'); + var rootSchema = {}; + var pointerSchema = rootSchema; + for (var i=1; i', + $result = 'result' + $lvl; + var $isData = it.opts.$data && $schema && $schema.$data, + $schemaValue; + if ($isData) { + out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; '; + $schemaValue = 'schema' + $lvl; + } else { + $schemaValue = $schema; + } + if ($isDataExcl) { + var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr), + $exclusive = 'exclusive' + $lvl, + $opExpr = 'op' + $lvl, + $opStr = '\' + ' + $opExpr + ' + \''; + out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; '; + $schemaValueExcl = 'schemaExcl' + $lvl; + out += ' if (typeof ' + ($schemaValueExcl) + ' != \'boolean\' && ' + ($schemaValueExcl) + ' !== undefined) { ' + ($valid) + ' = false; '; + var $errorKeyword = $exclusiveKeyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_formatExclusiveLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} '; + if (it.opts.messages !== false) { + out += ' , message: \'' + ($exclusiveKeyword) + ' should be boolean\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += ' } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; var ' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true; if (' + ($valid) + ' === undefined) { ' + ($valid) + ' = ' + ($exclusive) + ' ? ' + ($result) + ' ' + ($op) + ' 0 : ' + ($result) + ' ' + ($op) + '= 0; } if (!' + ($valid) + ') var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \'' + ($op) + '\' : \'' + ($op) + '=\';'; + } else { + var $exclusive = $schemaExcl === true, + $opStr = $op; + if (!$exclusive) $opStr += '='; + var $opExpr = '\'' + $opStr + '\''; + if ($isData) { + out += ' if (' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \'string\') ' + ($valid) + ' = false; else { '; + $closingBraces += '}'; + } + if ($isDataFormat) { + out += ' if (!' + ($compare) + ') ' + ($valid) + ' = true; else { '; + $closingBraces += '}'; + } + out += ' var ' + ($result) + ' = ' + ($compare) + '(' + ($data) + ', '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' ); if (' + ($result) + ' === undefined) ' + ($valid) + ' = false; if (' + ($valid) + ' === undefined) ' + ($valid) + ' = ' + ($result) + ' ' + ($op); + if (!$exclusive) { + out += '='; + } + out += ' 0;'; + } + out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { '; + var $errorKeyword = $keyword; + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ($errorKeyword || '_formatLimit') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: '; + if ($isData) { + out += '' + ($schemaValue); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , exclusive: ' + ($exclusive) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should be ' + ($opStr) + ' "'; + if ($isData) { + out += '\' + ' + ($schemaValue) + ' + \''; + } else { + out += '' + (it.util.escapeQuotes($schema)); + } + out += '"\' '; + } + if (it.opts.verbose) { + out += ' , schema: '; + if ($isData) { + out += 'validate.schema' + ($schemaPath); + } else { + out += '' + (it.util.toQuotedString($schema)); + } + out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + out += '}'; + return out; +} + +},{}],"mYD7":[function(require,module,exports) { +'use strict'; + +var TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d:\d\d)?$/i; +var DATE_TIME_SEPARATOR = /t|\s/i; + +var COMPARE_FORMATS = { + date: compareDate, + time: compareTime, + 'date-time': compareDateTime +}; + +var $dataMetaSchema = { + type: 'object', + required: [ '$data' ], + properties: { + $data: { + type: 'string', + anyOf: [ + { format: 'relative-json-pointer' }, + { format: 'json-pointer' } + ] + } + }, + additionalProperties: false +}; + +module.exports = function (minMax) { + var keyword = 'format' + minMax; + return function defFunc(ajv) { + defFunc.definition = { + type: 'string', + inline: require('./dotjs/_formatLimit'), + statements: true, + errors: 'full', + dependencies: ['format'], + metaSchema: { + anyOf: [ + {type: 'string'}, + $dataMetaSchema + ] + } + }; + + ajv.addKeyword(keyword, defFunc.definition); + ajv.addKeyword('formatExclusive' + minMax, { + dependencies: ['format' + minMax], + metaSchema: { + anyOf: [ + {type: 'boolean'}, + $dataMetaSchema + ] + } + }); + extendFormats(ajv); + return ajv; + }; +}; + + +function extendFormats(ajv) { + var formats = ajv._formats; + for (var name in COMPARE_FORMATS) { + var format = formats[name]; + // the last condition is needed if it's RegExp from another window + if (typeof format != 'object' || format instanceof RegExp || !format.validate) + format = formats[name] = { validate: format }; + if (!format.compare) + format.compare = COMPARE_FORMATS[name]; + } +} + + +function compareDate(d1, d2) { + if (!(d1 && d2)) return; + if (d1 > d2) return 1; + if (d1 < d2) return -1; + if (d1 === d2) return 0; +} + + +function compareTime(t1, t2) { + if (!(t1 && t2)) return; + t1 = t1.match(TIME); + t2 = t2.match(TIME); + if (!(t1 && t2)) return; + t1 = t1[1] + t1[2] + t1[3] + (t1[4]||''); + t2 = t2[1] + t2[2] + t2[3] + (t2[4]||''); + if (t1 > t2) return 1; + if (t1 < t2) return -1; + if (t1 === t2) return 0; +} + + +function compareDateTime(dt1, dt2) { + if (!(dt1 && dt2)) return; + dt1 = dt1.split(DATE_TIME_SEPARATOR); + dt2 = dt2.split(DATE_TIME_SEPARATOR); + var res = compareDate(dt1[0], dt2[0]); + if (res === undefined) return; + return res || compareTime(dt1[1], dt2[1]); +} + +},{"./dotjs/_formatLimit":"KeB4"}],"J927":[function(require,module,exports) { +'use strict'; + +module.exports = require('./_formatLimit')('Minimum'); + +},{"./_formatLimit":"mYD7"}],"dgLz":[function(require,module,exports) { +'use strict'; + +module.exports = require('./_formatLimit')('Maximum'); + +},{"./_formatLimit":"mYD7"}],"OTUE":[function(require,module,exports) { +'use strict'; +module.exports = function generate_patternRequired(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $key = 'key' + $lvl, + $idx = 'idx' + $lvl, + $matched = 'patternMatched' + $lvl, + $dataProperties = 'dataProperties' + $lvl, + $closingBraces = '', + $ownProperties = it.opts.ownProperties; + out += 'var ' + ($valid) + ' = true;'; + if ($ownProperties) { + out += ' var ' + ($dataProperties) + ' = undefined;'; + } + var arr1 = $schema; + if (arr1) { + var $pProperty, i1 = -1, + l1 = arr1.length - 1; + while (i1 < l1) { + $pProperty = arr1[i1 += 1]; + out += ' var ' + ($matched) + ' = false; '; + if ($ownProperties) { + out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; '; + } else { + out += ' for (var ' + ($key) + ' in ' + ($data) + ') { '; + } + out += ' ' + ($matched) + ' = ' + (it.usePattern($pProperty)) + '.test(' + ($key) + '); if (' + ($matched) + ') break; } '; + var $missingPattern = it.util.escapeQuotes($pProperty); + out += ' if (!' + ($matched) + ') { ' + ($valid) + ' = false; var err = '; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('patternRequired') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingPattern: \'' + ($missingPattern) + '\' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should have property matching pattern \\\'' + ($missingPattern) + '\\\'\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } '; + if ($breakOnError) { + $closingBraces += '}'; + out += ' else { '; + } + } + } + out += '' + ($closingBraces); + return out; +} + +},{}],"u2zM":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc(ajv) { + defFunc.definition = { + type: 'object', + inline: require('./dotjs/patternRequired'), + statements: true, + errors: 'full', + metaSchema: { + type: 'array', + items: { + type: 'string', + format: 'regex' + }, + uniqueItems: true + } + }; + + ajv.addKeyword('patternRequired', defFunc.definition); + return ajv; +}; + +},{"./dotjs/patternRequired":"OTUE"}],"mlCb":[function(require,module,exports) { +'use strict'; +module.exports = function generate_switch(it, $keyword, $ruleType) { + var out = ' '; + var $lvl = it.level; + var $dataLvl = it.dataLevel; + var $schema = it.schema[$keyword]; + var $schemaPath = it.schemaPath + it.util.getProperty($keyword); + var $errSchemaPath = it.errSchemaPath + '/' + $keyword; + var $breakOnError = !it.opts.allErrors; + var $data = 'data' + ($dataLvl || ''); + var $valid = 'valid' + $lvl; + var $errs = 'errs__' + $lvl; + var $it = it.util.copy(it); + var $closingBraces = ''; + $it.level++; + var $nextValid = 'valid' + $it.level; + var $ifPassed = 'ifPassed' + it.level, + $currentBaseId = $it.baseId, + $shouldContinue; + out += 'var ' + ($ifPassed) + ';'; + var arr1 = $schema; + if (arr1) { + var $sch, $caseIndex = -1, + l1 = arr1.length - 1; + while ($caseIndex < l1) { + $sch = arr1[$caseIndex += 1]; + if ($caseIndex && !$shouldContinue) { + out += ' if (!' + ($ifPassed) + ') { '; + $closingBraces += '}'; + } + if ($sch.if && (it.opts.strictKeywords ? typeof $sch.if == 'object' && Object.keys($sch.if).length > 0 : it.util.schemaHasRules($sch.if, it.RULES.all))) { + out += ' var ' + ($errs) + ' = errors; '; + var $wasComposite = it.compositeRule; + it.compositeRule = $it.compositeRule = true; + $it.createErrors = false; + $it.schema = $sch.if; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].if'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/if'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + $it.createErrors = true; + it.compositeRule = $it.compositeRule = $wasComposite; + out += ' ' + ($ifPassed) + ' = ' + ($nextValid) + '; if (' + ($ifPassed) + ') { '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } + out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } } '; + } else { + out += ' ' + ($ifPassed) + ' = true; '; + if (typeof $sch.then == 'boolean') { + if ($sch.then === false) { + var $$outStack = $$outStack || []; + $$outStack.push(out); + out = ''; /* istanbul ignore else */ + if (it.createErrors !== false) { + out += ' { keyword: \'' + ('switch') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { caseIndex: ' + ($caseIndex) + ' } '; + if (it.opts.messages !== false) { + out += ' , message: \'should pass "switch" keyword validation\' '; + } + if (it.opts.verbose) { + out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' '; + } + out += ' } '; + } else { + out += ' {} '; + } + var __err = out; + out = $$outStack.pop(); + if (!it.compositeRule && $breakOnError) { + /* istanbul ignore if */ + if (it.async) { + out += ' throw new ValidationError([' + (__err) + ']); '; + } else { + out += ' validate.errors = [' + (__err) + ']; return false; '; + } + } else { + out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; '; + } + } + out += ' var ' + ($nextValid) + ' = ' + ($sch.then) + '; '; + } else { + $it.schema = $sch.then; + $it.schemaPath = $schemaPath + '[' + $caseIndex + '].then'; + $it.errSchemaPath = $errSchemaPath + '/' + $caseIndex + '/then'; + out += ' ' + (it.validate($it)) + ' '; + $it.baseId = $currentBaseId; + } + } + $shouldContinue = $sch.continue + } + } + out += '' + ($closingBraces) + 'var ' + ($valid) + ' = ' + ($nextValid) + ';'; + return out; +} + +},{}],"KC2b":[function(require,module,exports) { +'use strict'; + +var util = require('./_util'); + +module.exports = function defFunc(ajv) { + if (ajv.RULES.keywords.switch && ajv.RULES.keywords.if) return; + + var metaSchemaRef = util.metaSchemaRef(ajv); + + defFunc.definition = { + inline: require('./dotjs/switch'), + statements: true, + errors: 'full', + metaSchema: { + type: 'array', + items: { + required: [ 'then' ], + properties: { + 'if': metaSchemaRef, + 'then': { + anyOf: [ + { type: 'boolean' }, + metaSchemaRef + ] + }, + 'continue': { type: 'boolean' } + }, + additionalProperties: false, + dependencies: { + 'continue': [ 'if' ] + } + } + } + }; + + ajv.addKeyword('switch', defFunc.definition); + return ajv; +}; + +},{"./_util":"R4Fp","./dotjs/switch":"mlCb"}],"mwue":[function(require,module,exports) { +'use strict'; + +var util = require('./_util'); + +module.exports = function defFunc(ajv) { + if (!ajv._opts.$data) { + console.warn('keyword select requires $data option'); + return ajv; + } + var metaSchemaRef = util.metaSchemaRef(ajv); + var compiledCaseSchemas = []; + + defFunc.definition = { + validate: function v(schema, data, parentSchema) { + if (parentSchema.selectCases === undefined) + throw new Error('keyword "selectCases" is absent'); + var compiled = getCompiledSchemas(parentSchema, false); + var validate = compiled.cases[schema]; + if (validate === undefined) validate = compiled.default; + if (typeof validate == 'boolean') return validate; + var valid = validate(data); + if (!valid) v.errors = validate.errors; + return valid; + }, + $data: true, + metaSchema: { type: ['string', 'number', 'boolean', 'null'] } + }; + + ajv.addKeyword('select', defFunc.definition); + ajv.addKeyword('selectCases', { + compile: function (schemas, parentSchema) { + var compiled = getCompiledSchemas(parentSchema); + for (var value in schemas) + compiled.cases[value] = compileOrBoolean(schemas[value]); + return function() { return true; }; + }, + valid: true, + metaSchema: { + type: 'object', + additionalProperties: metaSchemaRef + } + }); + ajv.addKeyword('selectDefault', { + compile: function (schema, parentSchema) { + var compiled = getCompiledSchemas(parentSchema); + compiled.default = compileOrBoolean(schema); + return function() { return true; }; + }, + valid: true, + metaSchema: metaSchemaRef + }); + return ajv; + + + function getCompiledSchemas(parentSchema, create) { + var compiled; + compiledCaseSchemas.some(function (c) { + if (c.parentSchema === parentSchema) { + compiled = c; + return true; + } + }); + if (!compiled && create !== false) { + compiled = { + parentSchema: parentSchema, + cases: {}, + default: true + }; + compiledCaseSchemas.push(compiled); + } + return compiled; + } + + function compileOrBoolean(schema) { + return typeof schema == 'boolean' + ? schema + : ajv.compile(schema); + } +}; + +},{"./_util":"R4Fp"}],"selR":[function(require,module,exports) { +'use strict'; + +module.exports = function defFunc (ajv) { + var transform = { + trimLeft: function (value) { + return value.replace(/^[\s]+/, ''); + }, + trimRight: function (value) { + return value.replace(/[\s]+$/, ''); + }, + trim: function (value) { + return value.trim(); + }, + toLowerCase: function (value) { + return value.toLowerCase(); + }, + toUpperCase: function (value) { + return value.toUpperCase(); + }, + toEnumCase: function (value, cfg) { + return cfg.hash[makeHashTableKey(value)] || value; + } + }; + + defFunc.definition = { + type: 'string', + errors: false, + modifying: true, + valid: true, + compile: function (schema, parentSchema) { + var cfg; + + if (schema.indexOf('toEnumCase') !== -1) { + // build hash table to enum values + cfg = {hash: {}}; + + // requires `enum` in schema + if (!parentSchema.enum) + throw new Error('Missing enum. To use `transform:["toEnumCase"]`, `enum:[...]` is required.'); + for (var i = parentSchema.enum.length; i--; i) { + var v = parentSchema.enum[i]; + if (typeof v !== 'string') continue; + var k = makeHashTableKey(v); + // requires all `enum` values have unique keys + if (cfg.hash[k]) + throw new Error('Invalid enum uniqueness. To use `transform:["toEnumCase"]`, all values must be unique when case insensitive.'); + cfg.hash[k] = v; + } + } + + return function (data, dataPath, object, key) { + // skip if value only + if (!object) return; + + // apply transform in order provided + for (var j = 0, l = schema.length; j < l; j++) + data = transform[schema[j]](data, cfg); + + object[key] = data; + }; + }, + metaSchema: { + type: 'array', + items: { + type: 'string', + enum: [ + 'trimLeft', 'trimRight', 'trim', + 'toLowerCase', 'toUpperCase', 'toEnumCase' + ] + } + } + }; + + ajv.addKeyword('transform', defFunc.definition); + return ajv; + + function makeHashTableKey (value) { + return value.toLowerCase(); + } +}; + +},{}],"KP4Q":[function(require,module,exports) { +'use strict'; + +module.exports = { + 'instanceof': require('./instanceof'), + range: require('./range'), + regexp: require('./regexp'), + 'typeof': require('./typeof'), + dynamicDefaults: require('./dynamicDefaults'), + allRequired: require('./allRequired'), + anyRequired: require('./anyRequired'), + oneRequired: require('./oneRequired'), + prohibited: require('./prohibited'), + uniqueItemProperties: require('./uniqueItemProperties'), + deepProperties: require('./deepProperties'), + deepRequired: require('./deepRequired'), + formatMinimum: require('./formatMinimum'), + formatMaximum: require('./formatMaximum'), + patternRequired: require('./patternRequired'), + 'switch': require('./switch'), + select: require('./select'), + transform: require('./transform') +}; + +},{"./instanceof":"dhP9","./range":"uBCt","./regexp":"AtCq","./typeof":"yoml","./dynamicDefaults":"FbE8","./allRequired":"CJDR","./anyRequired":"n1DR","./oneRequired":"XrCF","./prohibited":"MFGI","./uniqueItemProperties":"m7Ap","./deepProperties":"kIuQ","./deepRequired":"KB8y","./formatMinimum":"J927","./formatMaximum":"dgLz","./patternRequired":"u2zM","./switch":"KC2b","./select":"mwue","./transform":"selR"}],"n1A8":[function(require,module,exports) { +'use strict'; + +var KEYWORDS = require('./keywords'); + +module.exports = defineKeywords; + + +/** + * Defines one or several keywords in ajv instance + * @param {Ajv} ajv validator instance + * @param {String|Array|undefined} keyword keyword(s) to define + * @return {Ajv} ajv instance (for chaining) + */ +function defineKeywords(ajv, keyword) { + if (Array.isArray(keyword)) { + for (var i=0; i= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.validate = validate; +Object.defineProperty(exports, "ValidationError", { + enumerable: true, + get: function get() { + return _ValidationError.default; + } +}); + +var _absolutePath = _interopRequireDefault(require("./keywords/absolutePath")); + +var _ValidationError = _interopRequireDefault(require("./ValidationError")); + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; +} // Use CommonJS require for ajv libs so TypeScript consumers aren't locked into esModuleInterop (see #110). + + +var Ajv = require('ajv'); + +var ajvKeywords = require('ajv-keywords'); +/** @typedef {import("json-schema").JSONSchema4} JSONSchema4 */ + +/** @typedef {import("json-schema").JSONSchema6} JSONSchema6 */ + +/** @typedef {import("json-schema").JSONSchema7} JSONSchema7 */ + +/** @typedef {import("ajv").ErrorObject} ErrorObject */ + +/** + * @typedef {Object} Extend + * @property {number=} formatMinimum + * @property {number=} formatMaximum + * @property {boolean=} formatExclusiveMinimum + * @property {boolean=} formatExclusiveMaximum + */ + +/** @typedef {(JSONSchema4 | JSONSchema6 | JSONSchema7) & Extend} Schema */ + +/** @typedef {ErrorObject & { children?: Array}} SchemaUtilErrorObject */ + +/** + * @callback PostFormatter + * @param {string} formattedError + * @param {SchemaUtilErrorObject} error + * @returns {string} + */ + +/** + * @typedef {Object} ValidationErrorConfiguration + * @property {string=} name + * @property {string=} baseDataPath + * @property {PostFormatter=} postFormatter + */ + + +var ajv = new Ajv({ + allErrors: true, + verbose: true, + $data: true +}); +ajvKeywords(ajv, ['instanceof', 'formatMinimum', 'formatMaximum', 'patternRequired']); // Custom keywords + +(0, _absolutePath.default)(ajv); +/** + * @param {Schema} schema + * @param {Array | object} options + * @param {ValidationErrorConfiguration=} configuration + * @returns {void} + */ + +function validate(schema, options, configuration) { + var errors = []; + + if (Array.isArray(options)) { + errors = Array.from(options, function (nestedOptions) { + return validateObject(schema, nestedOptions); + }); + errors.forEach(function (list, idx) { + var applyPrefix = + /** + * @param {SchemaUtilErrorObject} error + */ + function applyPrefix(error) { + // eslint-disable-next-line no-param-reassign + error.dataPath = "[".concat(idx, "]").concat(error.dataPath); + + if (error.children) { + error.children.forEach(applyPrefix); + } + }; + + list.forEach(applyPrefix); + }); + errors = errors.reduce(function (arr, items) { + arr.push.apply(arr, _toConsumableArray(items)); + return arr; + }, []); + } else { + errors = validateObject(schema, options); + } + + if (errors.length > 0) { + throw new _ValidationError.default(errors, schema, configuration); + } +} +/** + * @param {Schema} schema + * @param {Array | object} options + * @returns {Array} + */ + + +function validateObject(schema, options) { + var compiledSchema = ajv.compile(schema); + var valid = compiledSchema(options); + if (valid) return []; + return compiledSchema.errors ? filterErrors(compiledSchema.errors) : []; +} +/** + * @param {Array} errors + * @returns {Array} + */ + + +function filterErrors(errors) { + /** @type {Array} */ + var newErrors = []; + + var _iterator = _createForOfIteratorHelper( + /** @type {Array} */ + errors), + _step; + + try { + var _loop = function _loop() { + var error = _step.value; + var dataPath = error.dataPath; + /** @type {Array} */ + + var children = []; + newErrors = newErrors.filter(function (oldError) { + if (oldError.dataPath.includes(dataPath)) { + if (oldError.children) { + children = children.concat(oldError.children.slice(0)); + } // eslint-disable-next-line no-undefined, no-param-reassign + + + oldError.children = undefined; + children.push(oldError); + return false; + } + + return true; + }); + + if (children.length) { + error.children = children; + } + + newErrors.push(error); + }; + + for (_iterator.s(); !(_step = _iterator.n()).done;) { + _loop(); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return newErrors; +} +},{"./keywords/absolutePath":"iIhC","./ValidationError":"ySUA","ajv":"hi5j","ajv-keywords":"n1A8"}],"pA46":[function(require,module,exports) { +"use strict"; + +var _require = require('./validate'), + validate = _require.validate, + ValidationError = _require.ValidationError; + +module.exports = { + validate: validate, + ValidationError: ValidationError +}; +},{"./validate":"STvH"}],"t7hQ":[function(require,module,exports) { +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } + +function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + +function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } + +function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +var _require = require('schema-utils'), + validate = _require.validate; + +function validateOptions(options, schema) { + validate(schema, options); +} + +function processOptions(options, processors) { + var processedOptions = {}; + + for (var _i = 0, _Object$entries = Object.entries(processors); _i < _Object$entries.length; _i++) { + var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), + property = _Object$entries$_i[0], + processor = _Object$entries$_i[1]; + + processedOptions[property] = options[property]; + + if (processedOptions[property] === undefined) { + processedOptions[property] = processor.default; + } + + if (processor.process) { + processedOptions[property] = processor.process(processedOptions[property]); + } + } + + return processedOptions; +} + +module.exports = { + validateOptions: validateOptions, + processOptions: processOptions +}; +},{"schema-utils":"pA46"}],"uYXM":[function(require,module,exports) { +module.exports = { + type: 'object', + properties: { + filerDir: { + type: 'string' + }, + shimsDir: { + type: 'string' + }, + shimFs: { + type: 'boolean' + }, + shimPath: { + type: 'boolean' + }, + fsProvider: { + type: 'string' + }, + fsProviderDir: { + type: 'string' + } + } +}; +},{}],"qUtu":[function(require,module,exports) { +var process = require("process"); +var path = require('path'); + +var ROOT_DIR_TAG = ''; +var CWD = process.cwd(); +module.exports = { + filerDir: { + process: function process(value) { + if (!value) { + return path.join(CWD, 'node_modules', 'filer'); + } + + return path.resolve(value.replace(ROOT_DIR_TAG, CWD)); + } + }, + shimsDir: { + process: function process(value) { + if (!value) { + return path.join(CWD, 'node_modules', 'filer', 'shims'); + } + + return path.resolve(value.replace(ROOT_DIR_TAG, CWD)); + } + }, + fsProviderDir: { + process: function process(value) { + if (!value) { + return path.join(CWD, 'node_modules', 'filer', 'shims', 'providers'); + } + + return path.resolve(value.replace(ROOT_DIR_TAG, CWD)); + } + }, + shimFs: { + default: true + }, + shimPath: { + default: true + }, + fsProvider: { + default: 'default' + } +}; +},{"path":"UUq2","process":"pBGv"}],"Ge14":[function(require,module,exports) { +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var path = require('path'); + +var utils = require('./utils'); + +var PLUGIN_NAME = 'filer-webpack-plugin'; + +var OPTIONS_SCHEMA = require('./schema'); + +var OPTIONS_PROCESSORS = require('./processors'); + +module.exports = /*#__PURE__*/function () { + function FilerWebpackPlugin() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, FilerWebpackPlugin); + + utils.validateOptions(options, OPTIONS_SCHEMA); + this.options = utils.processOptions(options, OPTIONS_PROCESSORS); + } + + _createClass(FilerWebpackPlugin, [{ + key: "apply", + value: function apply(compiler) { + var _this = this; + + compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, function (factory) { + factory.hooks.resolve.tap(PLUGIN_NAME, function (resolveData) { + // Resolve fsProvider if required + if (resolveData.request === 'fsProvider' && resolveData.context === _this.options.shimsDir) { + return _this.resolveFsProvider(resolveData); + } // Ignore filer files (these should resolve modules normally) + + + if (resolveData.context.startsWith(_this.options.filerDir)) return; // Apply fs, path and buffer shims if required + + switch (resolveData.request) { + case 'fs': + if (!_this.options.shimFs) return; + return _this.applyFsShim(resolveData); + + case 'path': + if (!_this.options.shimPath) return; + return _this.applyPathShim(resolveData); + + default: + return; + } + }); + }); + } + }, { + key: "resolveFsProvider", + value: function resolveFsProvider(resolveData) { + switch (this.options.fsProvider) { + case 'default': + resolveData.request = path.join(this.options.fsProviderDir, 'default.js'); + break; + + case 'indexeddb': + resolveData.request = path.join(this.options.fsProviderDir, 'indexeddb.js'); + break; + + case 'memory': + resolveData.request = path.join(this.options.fsProviderDir, 'memory.js'); + break; + + case 'custom': + resolveData.request = path.join(this.options.fsProviderDir, 'custom.js'); + break; + + default: + throw new Error(['Invalid option for fsProvider.', 'fsProvider must be one of \'default\', \'indexeddb\', \'memory\' or \'custom\'.', 'If using a custom fsProvider, you must also provide the fsProviderDir option.'].join(' ')); + } + } + }, { + key: "applyFsShim", + value: function applyFsShim(resolveData) { + resolveData.request = path.join(this.options.shimsDir, 'fs.js'); + } + }, { + key: "applyPathShim", + value: function applyPathShim(resolveData) { + resolveData.request = path.join(this.options.shimsDir, 'path.js'); + } + }]); + + return FilerWebpackPlugin; +}(); +},{"path":"UUq2","./utils":"t7hQ","./schema":"uYXM","./processors":"qUtu"}],"Focm":[function(require,module,exports) { var Buffer = require("buffer").Buffer; var fs = null; var Filer = null; @@ -9174,7 +19851,8 @@ module.exports = Filer = { Path: require('./path.js'), path: require('./path.js'), Errors: require('./errors.js'), - Shell: require('./shell/shell.js') + Shell: require('./shell/shell.js'), + FilerWebpackPlugin: require('./webpack-plugin') }; // Add a getter for the `fs` instance, which returns // a Filer FileSystem instance, using the default provider/flags. @@ -9188,5 +19866,5 @@ Object.defineProperty(Filer, 'fs', { return fs; } }); -},{"./filesystem/interface.js":"GMi4","./path.js":"UzoP","./errors.js":"p8GN","./shell/shell.js":"D1Ra","buffer":"dskh"}]},{},["Focm"], "Filer") +},{"./filesystem/interface.js":"GMi4","./path.js":"UzoP","./errors.js":"p8GN","./shell/shell.js":"D1Ra","./webpack-plugin":"Ge14","buffer":"dskh"}]},{},["Focm"], "Filer") //# sourceMappingURL=/filer.js.map \ No newline at end of file diff --git a/dist/filer.js.map b/dist/filer.js.map index a32eadf..6898952 100644 --- a/dist/filer.js.map +++ b/dist/filer.js.map @@ -1 +1 @@ -{"version":3,"sources":["../node_modules/es6-promisify/dist/promisify.js","../node_modules/process/browser.js","../node_modules/path-browserify/index.js","path.js","constants.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/buffer/index.js","providers/indexeddb.js","../lib/async.js","providers/memory.js","providers/index.js","errors.js","shell/environment.js","../node_modules/concat-map/index.js","../node_modules/balanced-match/index.js","../node_modules/brace-expansion/index.js","../node_modules/minimatch/minimatch.js","shell/shell.js","../lib/eventemitter.js","shared.js","../lib/intercom.js","fs-watcher.js","directory-entry.js","open-files.js","node.js","open-file-description.js","super-node.js","stats.js","filesystem/implementation.js","filesystem/interface.js","index.js"],"names":["process","module","exports","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","setTimeout","e","clearTimeout","runTimeout","fun","call","runClearTimeout","marker","queue","draining","currentQueue","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","nextTick","args","Array","arguments","i","push","Item","array","prototype","apply","title","env","argv","version","versions","noop","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","nodePath","require","filerPath","Object","create","basename","path","ext","normalize","removeTrailing","isNull","indexOf","addTrailing","replace","O_READ","O_WRITE","O_CREATE","O_EXCLUSIVE","O_TRUNCATE","O_APPEND","XATTR_CREATE","XATTR_REPLACE","FILE_SYSTEM_NAME","FILE_STORE_NAME","IDB_RO","IDB_RW","WSQL_VERSION","WSQL_SIZE","WSQL_DESC","NODE_TYPE_FILE","NODE_TYPE_DIRECTORY","NODE_TYPE_SYMBOLIC_LINK","NODE_TYPE_META","DEFAULT_DIR_PERMISSIONS","DEFAULT_FILE_PERMISSIONS","FULL_READ_WRITE_EXEC_PERMISSIONS","READ_WRITE_PERMISSIONS","SYMLOOP_MAX","BINARY_MIME_TYPE","JSON_MIME_TYPE","ROOT_DIRECTORY_NAME","FS_FORMAT","FS_NOCTIME","FS_NOMTIME","FS_NODUPEIDCHECK","O_FLAGS","FS_READY","FS_PENDING","FS_ERROR","SUPER_NODE_ID","STDIN","STDOUT","STDERR","FIRST_DESCRIPTOR","ENVIRONMENT","TMP","PATH","fsConstants","O_RDONLY","O_WRONLY","O_RDWR","S_IFMT","S_IFREG","S_IFDIR","S_IFCHR","S_IFBLK","S_IFIFO","S_IFLNK","S_IFSOCK","O_CREAT","O_EXCL","O_NOCTTY","O_TRUNC","O_DIRECTORY","O_NOFOLLOW","O_SYNC","O_DSYNC","O_SYMLINK","O_NONBLOCK","S_IRWXU","S_IRUSR","S_IWUSR","S_IXUSR","S_IRWXG","S_IRGRP","S_IWGRP","S_IXGRP","S_IRWXO","S_IROTH","S_IWOTH","S_IXOTH","F_OK","R_OK","W_OK","X_OK","UV_FS_COPYFILE_EXCL","COPYFILE_EXCL","IndexedDBContext","db","mode","_getObjectStore","objectStore","transaction","clear","callback","request","onsuccess","onerror","event","preventDefault","error","err","_get","key","get","result","target","getObject","getBuffer","arrayBuffer","Buffer","from","_put","value","put","putObject","putBuffer","uint8BackedBuffer","buf","buffer","delete","IndexedDB","isSupported","indexedDB","global","mozIndexedDB","webkitIndexedDB","msIndexedDB","open","that","openRequest","onupgradeneeded","objectStoreNames","contains","deleteObjectStore","createObjectStore","getReadOnlyContext","getReadWriteContext","async","setImmediate","fn","eachSeries","arr","iterator","completed","iterate","forEachSeries","define","amd","root","asyncCallback","createDB","pool","getOrCreate","hasOwnProperty","MemoryContext","readOnly","keys","forEach","Memory","Default","errors","split","errno","errName","defaultMessage","FilerError","msg","code","message","stack","constructor","toString","pathInfo","defaults","Environment","set","promisify","Path","Errors","minimatch","Shell","fs","options","defineProperty","enumerable","cd","resolve","stat","stats","ENOTDIR","type","pwd","promises","methodName","bind","exec","sh","readFile","data","cmd","Function","touch","createFile","writeFile","updateTimes","now","Date","atime","date","mtime","utimes","updateOnly","cat","files","all","EINVAL","append","item","filename","ls","list","pathname","readdir","entries","getDirEntry","join","entry","recursive","items","contents","rm","remove","unlink","rmdir","ENOTEMPTY","map","tempDir","tmp","mkdir","mkdirp","_mkdirp","isDirectory","isFile","parent","dirname","find","next","found","processPath","maybeProcessPath","rawPath","regex","test","walk","removeItem","splice","EventEmitter","createInterface","space","methods","trigger","slice","self","pvt","_on","_off","_trigger","pub","unshift","generateRandom","template","c","r","Math","random","v","guid","toUpperCase","randomChars","n","repeat","nop","throttle","delay","last","extend","a","b","localStorage","window","getItem","setItem","Intercom","origin","lastMessage","receivedIDs","previousValues","storageHandler","_onStorageEvent","document","attachEvent","addEventListener","_transaction","TIMEOUT","WAIT","executed","listening","waitTimer","lock","activeLock","INDEX_LOCK","unlock","_cleanup_emit","threshold","THRESHOLD_TTL_EMIT","changed","messages","JSON","parse","INDEX_EMIT","timestamp","stringify","_cleanup_once","ttl","table","INDEX_ONCE","_once_expired","THRESHOLD_TTL_ONCE","_localStorageChanged","field","currentValue","id","payload","_emit","String","packet","delimiter","substring","supported","destroy","getInstance","intercom","FSWatcher","recursivePathPrefix","onchange","start","filename_","persistent_","recursive_","close","DirectoryEntry","openFiles","getEmptyDescriptor","fd","getOpenFileDescription","ofd","allocDescriptor","openFileDescription","releaseDescriptor","ensureID","prop","generateMode","nodeType","modePermissions","Node","size","ctime","flags","xattrs","nlinks","permissions","uid","gid","OpenFileDescription","position","getNode","context","check_if_node_exists","node","EBADF","Constants","SuperNode","rnode","dateFromMs","ms","Number","Stats","fileNode","devName","dev","atimeMs","mtimeMs","ctimeMs","isSymbolicLink","isSocket","isFIFO","isCharacterDevice","isBlockDevice","isAbsolutePath","isAbsolute","shared","update_node_times","times","includes","update","complete","changes","make_node","parentPath","parentNode","parentNodeData","create_node_in_parent","parentDirectoryNode","find_node","EEXIST","ENOENT","create_node","update_parent_node_data","update_time","followedCount","read_root_directory_node","nodeData","superNode","EFILESYSTEMERROR","check_root_directory_node","rootDirectoryNode","read_parent_directory_data","get_node_from_parent_directory_data","parentDirectoryData","nodeId","is_symbolic_link","ELOOP","follow_symbolic_link","set_extended_attribute","flag","ENOATTR","ensure_root_directory","directoryNode","directoryData","ensure_super_node","existingNode","write_directory_node","write_directory_data","make_directory","check_if_directory_exists","update_parent_directory_data","access_file","st_mode","validateAndMaskMode","EACCES","remove_directory","EBUSY","check_if_node_is_directory","check_if_directory_is_empty","remove_directory_entry_from_parent_directory_node","remove_directory_node","remove_directory_data","open_file","directoryEntry","fileData","EISDIR","set_file_node","read_directory_data","check_if_file_exists","check_if_symbolic_link","write_file_node","undefined","write_file_data","alloc","update_directory_data","handle_update_result","replace_data","offset","return_nbytes","update_file_node","newData","copy","write_data","update_file_data","EIO","_position","newSize","max","read_file_data","read_data","handle_file_data","stat_file","fstat_file","lstat_file","link_node","oldpath","newpath","oldname","oldParentPath","newname","newParentPath","oldDirectoryNode","oldDirectoryData","newDirectoryNode","newDirectoryData","fileNodeID","read_file_node","check_if_new_file_exists","read_new_directory_data","check_if_old_file_exists","EPERM","read_old_directory_data","unlink_node","delete_file_data","read_directory","handle_directory_data","make_symbolic_link","srcpath","dstpath","symlink_relpath","read_link","check_if_symbolic","truncate_file","truncate_file_data","ftruncate_file","utimes_file","update_times","futimes_file","setxattr_file","setxattr","fsetxattr_file","getxattr_file","get_xattr","fgetxattr_file","removexattr_file","remove_xattr","fremovexattr_file","validate_flags","validate_file_options","enc","fileMode","encoding","check_result","mknod","access","mkdtemp","prefix","fstat","link","read","wrapped_cb","bytesRead","fsync","validateInteger","cleanup","fstatResult","write","appendFile","exists","cb","octalReg","isUint32","def","isInteger","parsed","parseInt","chmod_file","update_mode","fchmod_file","chown_file","update_owner","fchown_file","getxattr","fgetxattr","fsetxattr","removexattr","fremovexattr","lseek","whence","update_descriptor_position","toUnixTimestamp","time","getTime","currentTime","futimes","chmod","fchmod","chown","fchown","rename","oldName","newName","oldParentDirectory","oldParentData","newParentDirectory","newParentData","read_new_directory","update_old_parent_directory_data","update_new_parent_directory_data","check_if_new_directory_exists","read_new_parent_directory_data","get_new_parent_directory","unlink_old_file","check_node_type","symlink","readlink","lstat","truncate","ftruncate","ensureRootDirectory","providers","defaultGuidFn","impl","maybeCallback","defaultCallback","console","toPathIfFileURL","fileURLOrPath","protocol","third","codePointAt","decodeURIComponent","toPathIfBuffer","bufferOrPath","isBuffer","validatePath","allowRelative","processPathArg","idx","FileSystem","provider","forceFormatting","readyState","stdin","stdout","stderr","constants","queueOrRun","operation","runQueued","watch","listener","watcher","wrappedGuidFn","guidWithCheck","broadcastChanges","change","wrappedContext","openReadWriteContext","openReadOnlyContext","absPathArgs","relPathArgs","method","shouldPromisify","lastArgIndex","missingCallback","pathArg","fnArgs","Filer"],"mappings":"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ACAvD,OAAO,CAACwD,KAAR,GAAgB,UAAUC,GAAV,EAAe;AAC3B,QAAM,IAAInD,KAAJ,CAAU,gCAAV,CAAN;AACH,CAFD;;AAGAN,OAAO,CAAC0D,KAAR,GAAgB,YAAW;AAAE,SAAO,CAAP;AAAW,CAAxC;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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E,CAAjB;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpFA;AACA;AACA;AACA;AACA;AACA;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AC7vDA,IAAI1E,gBAAgB,GAAGrB,OAAO,CAAC,iBAAD,CAAP,CAA2BqB,gBAAlD;;AACA,IAAIC,eAAe,GAAGtB,OAAO,CAAC,iBAAD,CAAP,CAA2BsB,eAAjD;;AACA,IAAIE,MAAM,GAAGxB,OAAO,CAAC,iBAAD,CAAP,CAA2BwB,MAAxC;;AACA,IAAID,MAAM,GAAGvB,OAAO,CAAC,iBAAD,CAAP,CAA2BuB,MAAxC;;AAEA,SAASyE,gBAAT,CAA0BC,EAA1B,EAA8BC,IAA9B,EAAoC;AAClC,OAAKD,EAAL,GAAUA,EAAV;AACA,OAAKC,IAAL,GAAYA,IAAZ;AACD;;AAEDF,gBAAgB,CAACzH,SAAjB,CAA2B4H,eAA3B,GAA6C,YAAW;AACtD,MAAG,KAAKC,WAAR,EAAqB;AACnB,WAAO,KAAKA,WAAZ;AACD;;AAED,MAAIC,WAAW,GAAG,KAAKJ,EAAL,CAAQI,WAAR,CAAoB/E,eAApB,EAAqC,KAAK4E,IAA1C,CAAlB;AACA,OAAKE,WAAL,GAAmBC,WAAW,CAACD,WAAZ,CAAwB9E,eAAxB,CAAnB;AACA,SAAO,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U5E,GAAG,CAAC4E,GAAJ,IAAWiI,QAAQ,CAACjI,GAA9B;AACA5E,EAAAA,GAAG,CAAC6E,IAAJ,GAAW7E,GAAG,CAAC6E,IAAJ,IAAYgI,QAAQ,CAAChI,IAAhC;;AAEA,OAAK0D,GAAL,GAAW,UAASxH,IAAT,EAAe;AACxB,WAAOf,GAAG,CAACe,IAAD,CAAV;AACD,GAFD;;AAIA,OAAKgM,GAAL,GAAW,UAAShM,IAAT,EAAeiI,KAAf,EAAsB;AAC/BhJ,IAAAA,GAAG,CAACe,IAAD,CAAH,GAAYiI,KAAZ;AACD,GAFD;AAGD,CAZD;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"filer.js","sourceRoot":"../src","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.promisify = promisify;\n// Symbols is a better way to do this, but not all browsers have good support,\n// so instead we'll just make do with a very unlikely string.\nvar customArgumentsToken = \"__ES6-PROMISIFY--CUSTOM-ARGUMENTS__\";\n/**\n * promisify()\n * Transforms callback-based function -- func(arg1, arg2 .. argN, callback) --\n * into an ES6-compatible Promise. Promisify provides a default callback of the\n * form (error, result) and rejects when `error` is truthy.\n *\n * @param {function} original - The function to promisify\n * @return {function} A promisified version of `original`\n */\n\nfunction promisify(original) {\n // Ensure the argument is a function\n if (typeof original !== \"function\") {\n throw new TypeError(\"Argument to promisify must be a function\");\n } // If the user has asked us to decode argument names for them, honour that\n\n\n var argumentNames = original[customArgumentsToken]; // If the user has supplied a custom Promise implementation, use it.\n // Otherwise fall back to whatever we can find on the global object.\n\n var ES6Promise = promisify.Promise || Promise; // If we can find no Promise implemention, then fail now.\n\n if (typeof ES6Promise !== \"function\") {\n throw new Error(\"No Promise implementation found; do you need a polyfill?\");\n }\n\n return function () {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new ES6Promise(function (resolve, reject) {\n // Append the callback bound to the context\n args.push(function callback(err) {\n if (err) {\n return reject(err);\n }\n\n for (var _len2 = arguments.length, values = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n values[_key2 - 1] = arguments[_key2];\n }\n\n if (values.length === 1 || !argumentNames) {\n return resolve(values[0]);\n }\n\n var o = {};\n values.forEach(function (value, index) {\n var name = argumentNames[index];\n\n if (name) {\n o[name] = value;\n }\n });\n resolve(o);\n }); // Call the function.\n\n original.apply(_this, args);\n });\n };\n} // Attach this symbol to the exported function, so users can use it\n\n\npromisify.argumentNames = customArgumentsToken;\npromisify.Promise = undefined; // Export the public API","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","/**\n * Patch process to add process.cwd(), always giving the root dir.\n * NOTE: this line needs to happen *before* we require in `path`.\n */\nprocess.cwd = () => '/';\n\n/**\n * https://github.com/browserify/path-browserify via Parcel.\n * We use is as a base for our own Filer.Path, and patch/add\n * a few things we need for the browser environment.\n */\nconst nodePath = require('path');\nconst filerPath = Object.create(nodePath);\n\n/**\n * Patch path.basename() to return / vs. ''\n */\nfilerPath.basename = (path, ext) => {\n const basename = nodePath.basename(path, ext);\n return basename === '' ? '/' : basename;\n};\n\n/**\n * Patch path.normalize() to not add a trailing /\n */\nfilerPath.normalize = (path) => {\n path = nodePath.normalize(path);\n return path === '/' ? path : filerPath.removeTrailing(path);\n};\n\n/**\n * Add new utility method isNull() to path: check for null paths.\n */\nfilerPath.isNull = path => ('' + path).indexOf('\\u0000') !== -1;\n\n/**\n * Add new utility method addTrailing() to add trailing / without doubling to //.\n */\nfilerPath.addTrailing = path => path.replace(/\\/*$/, '/');\n\n/**\n * Add new utility method removeTrailing() to remove trailing /, dealing with multiple\n */\nfilerPath.removeTrailing = path => {\n path = path.replace(/\\/*$/, '');\n return path === '' ? '/' : path;\n};\n\nmodule.exports = filerPath;\n","var O_READ = 'READ';\nvar O_WRITE = 'WRITE';\nvar O_CREATE = 'CREATE';\nvar O_EXCLUSIVE = 'EXCLUSIVE';\nvar O_TRUNCATE = 'TRUNCATE';\nvar O_APPEND = 'APPEND';\nvar XATTR_CREATE = 'CREATE';\nvar XATTR_REPLACE = 'REPLACE';\n\nmodule.exports = {\n FILE_SYSTEM_NAME: 'local',\n\n FILE_STORE_NAME: 'files',\n\n IDB_RO: 'readonly',\n IDB_RW: 'readwrite',\n\n WSQL_VERSION: '1',\n WSQL_SIZE: 5 * 1024 * 1024,\n WSQL_DESC: 'FileSystem Storage',\n\n NODE_TYPE_FILE: 'FILE',\n NODE_TYPE_DIRECTORY: 'DIRECTORY',\n NODE_TYPE_SYMBOLIC_LINK: 'SYMLINK',\n NODE_TYPE_META: 'META',\n\n\n DEFAULT_DIR_PERMISSIONS: 0x1ED, // 755\n DEFAULT_FILE_PERMISSIONS: 0x1A4, // 644\n FULL_READ_WRITE_EXEC_PERMISSIONS: 0x1FF, // 777\n READ_WRITE_PERMISSIONS: 0x1B6, /// 666\n \n SYMLOOP_MAX: 10,\n\n BINARY_MIME_TYPE: 'application/octet-stream',\n JSON_MIME_TYPE: 'application/json',\n\n ROOT_DIRECTORY_NAME: '/', // basename(normalize(path))\n\n // FS Mount Flags\n FS_FORMAT: 'FORMAT',\n FS_NOCTIME: 'NOCTIME',\n FS_NOMTIME: 'NOMTIME',\n FS_NODUPEIDCHECK: 'FS_NODUPEIDCHECK',\n\n // FS File Open Flags\n O_READ: O_READ,\n O_WRITE: O_WRITE,\n O_CREATE: O_CREATE,\n O_EXCLUSIVE: O_EXCLUSIVE,\n O_TRUNCATE: O_TRUNCATE,\n O_APPEND: O_APPEND,\n\n O_FLAGS: {\n 'r': [O_READ],\n 'r+': [O_READ, O_WRITE],\n 'w': [O_WRITE, O_CREATE, O_TRUNCATE],\n 'w+': [O_WRITE, O_READ, O_CREATE, O_TRUNCATE],\n 'wx': [O_WRITE, O_CREATE, O_EXCLUSIVE, O_TRUNCATE],\n 'wx+': [O_WRITE, O_READ, O_CREATE, O_EXCLUSIVE, O_TRUNCATE],\n 'a': [O_WRITE, O_CREATE, O_APPEND],\n 'a+': [O_WRITE, O_READ, O_CREATE, O_APPEND],\n 'ax': [O_WRITE, O_CREATE, O_EXCLUSIVE, O_APPEND],\n 'ax+': [O_WRITE, O_READ, O_CREATE, O_EXCLUSIVE, O_APPEND]\n },\n\n XATTR_CREATE: XATTR_CREATE,\n XATTR_REPLACE: XATTR_REPLACE,\n\n FS_READY: 'READY',\n FS_PENDING: 'PENDING',\n FS_ERROR: 'ERROR',\n\n SUPER_NODE_ID: '00000000-0000-0000-0000-000000000000',\n\n // Reserved File Descriptors for streams\n STDIN: 0,\n STDOUT: 1,\n STDERR: 2,\n FIRST_DESCRIPTOR: 3,\n\n ENVIRONMENT: {\n TMP: '/tmp',\n PATH: ''\n },\n\n // Duplicate Node's fs.constants\n fsConstants: {\n O_RDONLY: 0,\n O_WRONLY: 1,\n O_RDWR: 2,\n S_IFMT: 61440,\n S_IFREG: 32768,\n S_IFDIR: 16384,\n S_IFCHR: 8192,\n S_IFBLK: 24576,\n S_IFIFO: 4096,\n S_IFLNK: 40960,\n S_IFSOCK: 49152,\n O_CREAT: 512,\n O_EXCL: 2048,\n O_NOCTTY: 131072,\n O_TRUNC: 1024,\n O_APPEND: 8,\n O_DIRECTORY: 1048576,\n O_NOFOLLOW: 256,\n O_SYNC: 128,\n O_DSYNC: 4194304,\n O_SYMLINK: 2097152,\n O_NONBLOCK: 4,\n S_IRWXU: 448,\n S_IRUSR: 256,\n S_IWUSR: 128,\n S_IXUSR: 64,\n S_IRWXG: 56,\n S_IRGRP: 32,\n S_IWGRP: 16,\n S_IXGRP: 8,\n S_IRWXO: 7,\n S_IROTH: 4,\n S_IWOTH: 2,\n S_IXOTH: 1,\n F_OK: 0,\n R_OK: 4,\n W_OK: 2,\n X_OK: 1,\n UV_FS_COPYFILE_EXCL: 1,\n COPYFILE_EXCL: 1\n }\n};\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var FILE_SYSTEM_NAME = require('../constants.js').FILE_SYSTEM_NAME;\nvar FILE_STORE_NAME = require('../constants.js').FILE_STORE_NAME;\nvar IDB_RW = require('../constants.js').IDB_RW;\nvar IDB_RO = require('../constants.js').IDB_RO;\n\nfunction IndexedDBContext(db, mode) {\n this.db = db;\n this.mode = mode;\n}\n\nIndexedDBContext.prototype._getObjectStore = function() {\n if(this.objectStore) {\n return this.objectStore;\n }\n\n var transaction = this.db.transaction(FILE_STORE_NAME, this.mode);\n this.objectStore = transaction.objectStore(FILE_STORE_NAME);\n return this.objectStore;\n};\n\nIndexedDBContext.prototype.clear = function(callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.clear();\n request.onsuccess = function() {\n callback();\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\n\nIndexedDBContext.prototype._get = function(key, callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.get(key);\n request.onsuccess = function onsuccess(event) {\n var result = event.target.result;\n callback(null, result);\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\nIndexedDBContext.prototype.getObject = function(key, callback) {\n this._get(key, callback);\n};\nIndexedDBContext.prototype.getBuffer = function(key, callback) {\n this._get(key, function(err, arrayBuffer) {\n if(err) {\n return callback(err);\n }\n callback(null, Buffer.from(arrayBuffer));\n });\n};\n\nIndexedDBContext.prototype._put = function(key, value, callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.put(value, key);\n request.onsuccess = function onsuccess(event) {\n var result = event.target.result;\n callback(null, result);\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\nIndexedDBContext.prototype.putObject = function(key, value, callback) {\n this._put(key, value, callback);\n};\nIndexedDBContext.prototype.putBuffer = function(key, uint8BackedBuffer, callback) {\n var buf = uint8BackedBuffer.buffer;\n this._put(key, buf, callback);\n};\n\nIndexedDBContext.prototype.delete = function(key, callback) {\n try {\n var objectStore = this._getObjectStore();\n var request = objectStore.delete(key);\n request.onsuccess = function onsuccess(event) {\n var result = event.target.result;\n callback(null, result);\n };\n request.onerror = function(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\n\n\nfunction IndexedDB(name) {\n this.name = name || FILE_SYSTEM_NAME;\n this.db = null;\n}\nIndexedDB.isSupported = function() {\n var indexedDB = global.indexedDB ||\n global.mozIndexedDB ||\n global.webkitIndexedDB ||\n global.msIndexedDB;\n return !!indexedDB;\n};\n\nIndexedDB.prototype.open = function(callback) {\n var that = this;\n\n // Bail if we already have a db open\n if(that.db) {\n return callback();\n }\n\n try {\n var indexedDB = global.indexedDB ||\n global.mozIndexedDB ||\n global.webkitIndexedDB ||\n global.msIndexedDB;\n\n // NOTE: we're not using versioned databases.\n var openRequest = indexedDB.open(that.name);\n\n // If the db doesn't exist, we'll create it\n openRequest.onupgradeneeded = function onupgradeneeded(event) {\n var db = event.target.result;\n\n if(db.objectStoreNames.contains(FILE_STORE_NAME)) {\n db.deleteObjectStore(FILE_STORE_NAME);\n }\n db.createObjectStore(FILE_STORE_NAME);\n };\n\n openRequest.onsuccess = function onsuccess(event) {\n that.db = event.target.result;\n callback();\n };\n openRequest.onerror = function onerror(event) {\n event.preventDefault();\n callback(event.error);\n };\n } catch(err) {\n callback(err);\n }\n};\n\nIndexedDB.prototype.getReadOnlyContext = function() {\n return new IndexedDBContext(this.db, IDB_RO);\n};\nIndexedDB.prototype.getReadWriteContext = function() {\n return new IndexedDBContext(this.db, IDB_RW);\n};\n\nmodule.exports = IndexedDB;\n","/*global setImmediate: false, setTimeout: false, console: false */\n\n/**\n * async.js shim, based on https://raw.github.com/caolan/async/master/lib/async.js Feb 18, 2014\n * Used under MIT - https://github.com/caolan/async/blob/master/LICENSE\n */\n\n(function () {\n\n var async = {};\n\n // async.js functions used in Filer\n\n //// nextTick implementation with browser-compatible fallback ////\n if (typeof process === 'undefined' || !(process.nextTick)) {\n if (typeof setImmediate === 'function') {\n async.nextTick = function (fn) {\n // not a direct alias for IE10 compatibility\n setImmediate(fn);\n };\n async.setImmediate = async.nextTick;\n }\n else {\n async.nextTick = function (fn) {\n setTimeout(fn, 0);\n };\n async.setImmediate = async.nextTick;\n }\n }\n else {\n async.nextTick = process.nextTick;\n if (typeof setImmediate !== 'undefined') {\n async.setImmediate = function (fn) {\n // not a direct alias for IE10 compatibility\n setImmediate(fn);\n };\n }\n else {\n async.setImmediate = async.nextTick;\n }\n }\n\n async.eachSeries = function (arr, iterator, callback) {\n callback = callback || function () {};\n if (!arr.length) {\n return callback();\n }\n var completed = 0;\n var iterate = function () {\n iterator(arr[completed], function (err) {\n if (err) {\n callback(err);\n callback = function () {};\n }\n else {\n completed += 1;\n if (completed >= arr.length) {\n callback();\n }\n else {\n iterate();\n }\n }\n });\n };\n iterate();\n };\n async.forEachSeries = async.eachSeries;\n\n // AMD / RequireJS\n if (typeof define !== 'undefined' && define.amd) {\n define([], function () {\n return async;\n });\n }\n // Node.js\n else if (typeof module !== 'undefined' && module.exports) {\n module.exports = async;\n }\n // included directly via