From c0c6b3e71d7168aaba5a3e1f09f30c0bbd8d1105 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 00:27:58 +0000 Subject: [PATCH 1/2] fix: apply audit fixes --- dist/index.js | 4421 ++++++++++++++++++++++++------------------------- 1 file changed, 2164 insertions(+), 2257 deletions(-) diff --git a/dist/index.js b/dist/index.js index 786e576..b5bff17 100644 --- a/dist/index.js +++ b/dist/index.js @@ -77411,9 +77411,21 @@ var crypto = __nccwpck_require__(6113); var mime = __nccwpck_require__(43583); var asynckit = __nccwpck_require__(14812); var setToStringTag = __nccwpck_require__(11770); -var hasOwn = __nccwpck_require__(62157); +var hasOwn = __nccwpck_require__(15726); var populate = __nccwpck_require__(63971); +/** + * Escape CR, LF, and `"` in a multipart `name`/`filename` parameter, so a field + * name or filename can not break out of its header line to inject headers or + * smuggle additional parts. Matches the WHATWG HTML multipart/form-data encoding. + * + * @param {string} str - the parameter value to escape + * @returns {string} the escaped value + */ +function escapeHeaderParam(str) { + return String(str).replace(/\r/g, '%0D').replace(/\n/g, '%0A').replace(/"/g, '%22'); +} + /** * Create readable "multipart/form-data" streams. * Can be used to submit forms @@ -77579,7 +77591,7 @@ FormData.prototype._multiPartHeader = function (field, value, options) { var contents = ''; var headers = { // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + 'Content-Disposition': ['form-data', 'name="' + escapeHeaderParam(field) + '"'].concat(contentDisposition || []), // if no content type. allow it to be empty array 'Content-Type': [].concat(contentType || []) }; @@ -77633,7 +77645,7 @@ FormData.prototype._getContentDisposition = function (value, options) { // eslin } if (filename) { - return 'filename="' + filename + '"'; + return 'filename="' + escapeHeaderParam(filename) + '"'; } }; @@ -77911,6 +77923,22 @@ module.exports = function (dst, src) { }; +/***/ }), + +/***/ 15726: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = __nccwpck_require__(88334); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); + + /***/ }), /***/ 37461: @@ -249802,9 +249830,21 @@ var crypto = __nccwpck_require__(6113); var mime = __nccwpck_require__(43583); var asynckit = __nccwpck_require__(14812); var setToStringTag = __nccwpck_require__(11770); -var hasOwn = __nccwpck_require__(62157); +var hasOwn = __nccwpck_require__(98950); var populate = __nccwpck_require__(47027); +/** + * Escape CR, LF, and `"` in a multipart `name`/`filename` parameter, so a field + * name or filename can not break out of its header line to inject headers or + * smuggle additional parts. Matches the WHATWG HTML multipart/form-data encoding. + * + * @param {string} str - the parameter value to escape + * @returns {string} the escaped value + */ +function escapeHeaderParam(str) { + return String(str).replace(/\r/g, '%0D').replace(/\n/g, '%0A').replace(/"/g, '%22'); +} + /** * Create readable "multipart/form-data" streams. * Can be used to submit forms @@ -249970,7 +250010,7 @@ FormData.prototype._multiPartHeader = function (field, value, options) { var contents = ''; var headers = { // add custom disposition as third element or keep it two elements if not - 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + 'Content-Disposition': ['form-data', 'name="' + escapeHeaderParam(field) + '"'].concat(contentDisposition || []), // if no content type. allow it to be empty array 'Content-Type': [].concat(contentType || []) }; @@ -250024,7 +250064,7 @@ FormData.prototype._getContentDisposition = function (value, options) { // eslin } if (filename) { - return 'filename="' + filename + '"'; + return 'filename="' + escapeHeaderParam(filename) + '"'; } }; @@ -250302,6 +250342,22 @@ module.exports = function (dst, src) { }; +/***/ }), + +/***/ 98950: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = __nccwpck_require__(88334); + +/** @type {import('.')} */ +module.exports = bind.call(call, $hasOwn); + + /***/ }), /***/ 9417: @@ -252497,7 +252553,7 @@ module.exports = CacheableRequest; "use strict"; -var bind = __nccwpck_require__(69839); +var bind = __nccwpck_require__(88334); var $apply = __nccwpck_require__(54177); var $call = __nccwpck_require__(2808); @@ -252539,7 +252595,7 @@ module.exports = Function.prototype.call; "use strict"; -var bind = __nccwpck_require__(69839); +var bind = __nccwpck_require__(88334); var $TypeError = __nccwpck_require__(6361); var $call = __nccwpck_require__(2808); @@ -252554,111 +252610,6 @@ module.exports = function callBindBasic(args) { }; -/***/ }), - -/***/ 85316: -/***/ ((module) => { - -"use strict"; - - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var toStr = Object.prototype.toString; -var max = Math.max; -var funcType = '[object Function]'; - -var concatty = function concatty(a, b) { - var arr = []; - - for (var i = 0; i < a.length; i += 1) { - arr[i] = a[i]; - } - for (var j = 0; j < b.length; j += 1) { - arr[j + a.length] = b[j]; - } - - return arr; -}; - -var slicy = function slicy(arrLike, offset) { - var arr = []; - for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { - arr[j] = arrLike[i]; - } - return arr; -}; - -var joiny = function (arr, joiner) { - var str = ''; - for (var i = 0; i < arr.length; i += 1) { - str += arr[i]; - if (i + 1 < arr.length) { - str += joiner; - } - } - return str; -}; - -module.exports = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.apply(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slicy(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - concatty(args, arguments) - ); - if (Object(result) === result) { - return result; - } - return this; - } - return target.apply( - that, - concatty(args, arguments) - ); - - }; - - var boundLength = max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs[i] = '$' + i; - } - - bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - - -/***/ }), - -/***/ 69839: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var implementation = __nccwpck_require__(85316); - -module.exports = Function.prototype.bind || implementation; - - /***/ }), /***/ 48309: @@ -257272,111 +257223,6 @@ module.exports = function setToStringTag(object, value) { }; -/***/ }), - -/***/ 53325: -/***/ ((module) => { - -"use strict"; - - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var toStr = Object.prototype.toString; -var max = Math.max; -var funcType = '[object Function]'; - -var concatty = function concatty(a, b) { - var arr = []; - - for (var i = 0; i < a.length; i += 1) { - arr[i] = a[i]; - } - for (var j = 0; j < b.length; j += 1) { - arr[j + a.length] = b[j]; - } - - return arr; -}; - -var slicy = function slicy(arrLike, offset) { - var arr = []; - for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { - arr[j] = arrLike[i]; - } - return arr; -}; - -var joiny = function (arr, joiner) { - var str = ''; - for (var i = 0; i < arr.length; i += 1) { - str += arr[i]; - if (i + 1 < arr.length) { - str += joiner; - } - } - return str; -}; - -module.exports = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.apply(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slicy(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - concatty(args, arguments) - ); - if (Object(result) === result) { - return result; - } - return this; - } - return target.apply( - that, - concatty(args, arguments) - ); - - }; - - var boundLength = max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs[i] = '$' + i; - } - - bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - - -/***/ }), - -/***/ 97257: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var implementation = __nccwpck_require__(53325); - -module.exports = Function.prototype.bind || implementation; - - /***/ }), /***/ 99276: @@ -257625,7 +257471,7 @@ var LEGACY_ALIASES = { '%WeakSetPrototype%': ['WeakSet', 'prototype'] }; -var bind = __nccwpck_require__(97257); +var bind = __nccwpck_require__(88334); var hasOwn = __nccwpck_require__(62157); var $concat = bind.call($call, Array.prototype.concat); var $spliceApply = bind.call($apply, Array.prototype.splice); @@ -262022,6 +261868,111 @@ exports.realpath = function realpath(p, cache, cb) { }; +/***/ }), + +/***/ 19320: +/***/ ((module) => { + +"use strict"; + + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; + + +/***/ }), + +/***/ 88334: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var implementation = __nccwpck_require__(19320); + +module.exports = Function.prototype.bind || implementation; + + /***/ }), /***/ 5045: @@ -290669,117 +290620,12 @@ module.exports = function hasSymbols() { var call = Function.prototype.call; var $hasOwn = Object.prototype.hasOwnProperty; -var bind = __nccwpck_require__(37138); +var bind = __nccwpck_require__(88334); /** @type {import('.')} */ module.exports = bind.call(call, $hasOwn); -/***/ }), - -/***/ 29788: -/***/ ((module) => { - -"use strict"; - - -/* eslint no-invalid-this: 1 */ - -var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; -var toStr = Object.prototype.toString; -var max = Math.max; -var funcType = '[object Function]'; - -var concatty = function concatty(a, b) { - var arr = []; - - for (var i = 0; i < a.length; i += 1) { - arr[i] = a[i]; - } - for (var j = 0; j < b.length; j += 1) { - arr[j + a.length] = b[j]; - } - - return arr; -}; - -var slicy = function slicy(arrLike, offset) { - var arr = []; - for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { - arr[j] = arrLike[i]; - } - return arr; -}; - -var joiny = function (arr, joiner) { - var str = ''; - for (var i = 0; i < arr.length; i += 1) { - str += arr[i]; - if (i + 1 < arr.length) { - str += joiner; - } - } - return str; -}; - -module.exports = function bind(that) { - var target = this; - if (typeof target !== 'function' || toStr.apply(target) !== funcType) { - throw new TypeError(ERROR_MESSAGE + target); - } - var args = slicy(arguments, 1); - - var bound; - var binder = function () { - if (this instanceof bound) { - var result = target.apply( - this, - concatty(args, arguments) - ); - if (Object(result) === result) { - return result; - } - return this; - } - return target.apply( - that, - concatty(args, arguments) - ); - - }; - - var boundLength = max(0, target.length - args.length); - var boundArgs = []; - for (var i = 0; i < boundLength; i++) { - boundArgs[i] = '$' + i; - } - - bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); - - if (target.prototype) { - var Empty = function Empty() {}; - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - - return bound; -}; - - -/***/ }), - -/***/ 37138: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -var implementation = __nccwpck_require__(29788); - -module.exports = Function.prototype.bind || implementation; - - /***/ }), /***/ 61002: @@ -300792,51 +300638,48 @@ module.exports = curves "use strict"; +const loader = __nccwpck_require__(51161) +const dumper = __nccwpck_require__(68866) -var loader = __nccwpck_require__(51161); -var dumper = __nccwpck_require__(68866); - - -function renamed(from, to) { +function renamed (from, to) { return function () { throw new Error('Function yaml.' + from + ' is removed in js-yaml 4. ' + - 'Use yaml.' + to + ' instead, which is now safe by default.'); - }; + 'Use yaml.' + to + ' instead, which is now safe by default.') + } } - -module.exports.Type = __nccwpck_require__(6073); -module.exports.Schema = __nccwpck_require__(21082); -module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(28562); -module.exports.JSON_SCHEMA = __nccwpck_require__(1035); -module.exports.CORE_SCHEMA = __nccwpck_require__(12011); -module.exports.DEFAULT_SCHEMA = __nccwpck_require__(18759); -module.exports.load = loader.load; -module.exports.loadAll = loader.loadAll; -module.exports.dump = dumper.dump; -module.exports.YAMLException = __nccwpck_require__(68179); +module.exports.Type = __nccwpck_require__(6073) +module.exports.Schema = __nccwpck_require__(21082) +module.exports.FAILSAFE_SCHEMA = __nccwpck_require__(28562) +module.exports.JSON_SCHEMA = __nccwpck_require__(1035) +module.exports.CORE_SCHEMA = __nccwpck_require__(12011) +module.exports.DEFAULT_SCHEMA = __nccwpck_require__(18759) +module.exports.load = loader.load +module.exports.loadAll = loader.loadAll +module.exports.dump = dumper.dump +module.exports.YAMLException = __nccwpck_require__(68179) // Re-export all types in case user wants to create custom schema module.exports.types = { - binary: __nccwpck_require__(77900), - float: __nccwpck_require__(42705), - map: __nccwpck_require__(86150), - null: __nccwpck_require__(20721), - pairs: __nccwpck_require__(96860), - set: __nccwpck_require__(79548), + binary: __nccwpck_require__(77900), + float: __nccwpck_require__(42705), + map: __nccwpck_require__(86150), + null: __nccwpck_require__(20721), + pairs: __nccwpck_require__(96860), + set: __nccwpck_require__(79548), timestamp: __nccwpck_require__(99212), - bool: __nccwpck_require__(64993), - int: __nccwpck_require__(11615), - merge: __nccwpck_require__(86104), - omap: __nccwpck_require__(19046), - seq: __nccwpck_require__(67283), - str: __nccwpck_require__(23619) -}; + bool: __nccwpck_require__(64993), + int: __nccwpck_require__(11615), + merge: __nccwpck_require__(86104), + omap: __nccwpck_require__(19046), + seq: __nccwpck_require__(67283), + str: __nccwpck_require__(23619) +} // Removed functions from JS-YAML 3.0.x -module.exports.safeLoad = renamed('safeLoad', 'load'); -module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll'); -module.exports.safeDump = renamed('safeDump', 'dump'); +module.exports.safeLoad = renamed('safeLoad', 'load') +module.exports.safeLoadAll = renamed('safeLoadAll', 'loadAll') +module.exports.safeDump = renamed('safeDump', 'dump') /***/ }), @@ -300847,63 +300690,54 @@ module.exports.safeDump = renamed('safeDump', 'dump'); "use strict"; - -function isNothing(subject) { - return (typeof subject === 'undefined') || (subject === null); +function isNothing (subject) { + return (typeof subject === 'undefined') || (subject === null) } - -function isObject(subject) { - return (typeof subject === 'object') && (subject !== null); +function isObject (subject) { + return (typeof subject === 'object') && (subject !== null) } +function toArray (sequence) { + if (Array.isArray(sequence)) return sequence + else if (isNothing(sequence)) return [] -function toArray(sequence) { - if (Array.isArray(sequence)) return sequence; - else if (isNothing(sequence)) return []; - - return [ sequence ]; + return [sequence] } - -function extend(target, source) { - var index, length, key, sourceKeys; - +function extend (target, source) { if (source) { - sourceKeys = Object.keys(source); + const sourceKeys = Object.keys(source) - for (index = 0, length = sourceKeys.length; index < length; index += 1) { - key = sourceKeys[index]; - target[key] = source[key]; + for (let index = 0, length = sourceKeys.length; index < length; index += 1) { + const key = sourceKeys[index] + target[key] = source[key] } } - return target; + return target } +function repeat (string, count) { + let result = '' -function repeat(string, count) { - var result = '', cycle; - - for (cycle = 0; cycle < count; cycle += 1) { - result += string; + for (let cycle = 0; cycle < count; cycle += 1) { + result += string } - return result; + return result } - -function isNegativeZero(number) { - return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number); +function isNegativeZero (number) { + return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number) } - -module.exports.isNothing = isNothing; -module.exports.isObject = isObject; -module.exports.toArray = toArray; -module.exports.repeat = repeat; -module.exports.isNegativeZero = isNegativeZero; -module.exports.extend = extend; +module.exports.isNothing = isNothing +module.exports.isObject = isObject +module.exports.toArray = toArray +module.exports.repeat = repeat +module.exports.isNegativeZero = isNegativeZero +module.exports.extend = extend /***/ }), @@ -300914,203 +300748,196 @@ module.exports.extend = extend; "use strict"; -/*eslint-disable no-use-before-define*/ - -var common = __nccwpck_require__(26829); -var YAMLException = __nccwpck_require__(68179); -var DEFAULT_SCHEMA = __nccwpck_require__(18759); - -var _toString = Object.prototype.toString; -var _hasOwnProperty = Object.prototype.hasOwnProperty; - -var CHAR_BOM = 0xFEFF; -var CHAR_TAB = 0x09; /* Tab */ -var CHAR_LINE_FEED = 0x0A; /* LF */ -var CHAR_CARRIAGE_RETURN = 0x0D; /* CR */ -var CHAR_SPACE = 0x20; /* Space */ -var CHAR_EXCLAMATION = 0x21; /* ! */ -var CHAR_DOUBLE_QUOTE = 0x22; /* " */ -var CHAR_SHARP = 0x23; /* # */ -var CHAR_PERCENT = 0x25; /* % */ -var CHAR_AMPERSAND = 0x26; /* & */ -var CHAR_SINGLE_QUOTE = 0x27; /* ' */ -var CHAR_ASTERISK = 0x2A; /* * */ -var CHAR_COMMA = 0x2C; /* , */ -var CHAR_MINUS = 0x2D; /* - */ -var CHAR_COLON = 0x3A; /* : */ -var CHAR_EQUALS = 0x3D; /* = */ -var CHAR_GREATER_THAN = 0x3E; /* > */ -var CHAR_QUESTION = 0x3F; /* ? */ -var CHAR_COMMERCIAL_AT = 0x40; /* @ */ -var CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */ -var CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */ -var CHAR_GRAVE_ACCENT = 0x60; /* ` */ -var CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */ -var CHAR_VERTICAL_LINE = 0x7C; /* | */ -var CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */ - -var ESCAPE_SEQUENCES = {}; - -ESCAPE_SEQUENCES[0x00] = '\\0'; -ESCAPE_SEQUENCES[0x07] = '\\a'; -ESCAPE_SEQUENCES[0x08] = '\\b'; -ESCAPE_SEQUENCES[0x09] = '\\t'; -ESCAPE_SEQUENCES[0x0A] = '\\n'; -ESCAPE_SEQUENCES[0x0B] = '\\v'; -ESCAPE_SEQUENCES[0x0C] = '\\f'; -ESCAPE_SEQUENCES[0x0D] = '\\r'; -ESCAPE_SEQUENCES[0x1B] = '\\e'; -ESCAPE_SEQUENCES[0x22] = '\\"'; -ESCAPE_SEQUENCES[0x5C] = '\\\\'; -ESCAPE_SEQUENCES[0x85] = '\\N'; -ESCAPE_SEQUENCES[0xA0] = '\\_'; -ESCAPE_SEQUENCES[0x2028] = '\\L'; -ESCAPE_SEQUENCES[0x2029] = '\\P'; - -var DEPRECATED_BOOLEANS_SYNTAX = [ +const common = __nccwpck_require__(26829) +const YAMLException = __nccwpck_require__(68179) +const DEFAULT_SCHEMA = __nccwpck_require__(18759) + +const _toString = Object.prototype.toString +const _hasOwnProperty = Object.prototype.hasOwnProperty + +const CHAR_BOM = 0xFEFF +const CHAR_TAB = 0x09 /* Tab */ +const CHAR_LINE_FEED = 0x0A /* LF */ +const CHAR_CARRIAGE_RETURN = 0x0D /* CR */ +const CHAR_SPACE = 0x20 /* Space */ +const CHAR_EXCLAMATION = 0x21 /* ! */ +const CHAR_DOUBLE_QUOTE = 0x22 /* " */ +const CHAR_SHARP = 0x23 /* # */ +const CHAR_PERCENT = 0x25 /* % */ +const CHAR_AMPERSAND = 0x26 /* & */ +const CHAR_SINGLE_QUOTE = 0x27 /* ' */ +const CHAR_ASTERISK = 0x2A /* * */ +const CHAR_COMMA = 0x2C /* , */ +const CHAR_MINUS = 0x2D /* - */ +const CHAR_COLON = 0x3A /* : */ +const CHAR_EQUALS = 0x3D /* = */ +const CHAR_GREATER_THAN = 0x3E /* > */ +const CHAR_QUESTION = 0x3F /* ? */ +const CHAR_COMMERCIAL_AT = 0x40 /* @ */ +const CHAR_LEFT_SQUARE_BRACKET = 0x5B /* [ */ +const CHAR_RIGHT_SQUARE_BRACKET = 0x5D /* ] */ +const CHAR_GRAVE_ACCENT = 0x60 /* ` */ +const CHAR_LEFT_CURLY_BRACKET = 0x7B /* { */ +const CHAR_VERTICAL_LINE = 0x7C /* | */ +const CHAR_RIGHT_CURLY_BRACKET = 0x7D /* } */ + +const ESCAPE_SEQUENCES = {} + +ESCAPE_SEQUENCES[0x00] = '\\0' +ESCAPE_SEQUENCES[0x07] = '\\a' +ESCAPE_SEQUENCES[0x08] = '\\b' +ESCAPE_SEQUENCES[0x09] = '\\t' +ESCAPE_SEQUENCES[0x0A] = '\\n' +ESCAPE_SEQUENCES[0x0B] = '\\v' +ESCAPE_SEQUENCES[0x0C] = '\\f' +ESCAPE_SEQUENCES[0x0D] = '\\r' +ESCAPE_SEQUENCES[0x1B] = '\\e' +ESCAPE_SEQUENCES[0x22] = '\\"' +ESCAPE_SEQUENCES[0x5C] = '\\\\' +ESCAPE_SEQUENCES[0x85] = '\\N' +ESCAPE_SEQUENCES[0xA0] = '\\_' +ESCAPE_SEQUENCES[0x2028] = '\\L' +ESCAPE_SEQUENCES[0x2029] = '\\P' + +const DEPRECATED_BOOLEANS_SYNTAX = [ 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF' -]; - -var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/; +] -function compileStyleMap(schema, map) { - var result, keys, index, length, tag, style, type; +const DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/ - if (map === null) return {}; +function compileStyleMap (schema, map) { + if (map === null) return {} - result = {}; - keys = Object.keys(map); + const result = {} + const keys = Object.keys(map) - for (index = 0, length = keys.length; index < length; index += 1) { - tag = keys[index]; - style = String(map[tag]); + for (let index = 0, length = keys.length; index < length; index += 1) { + let tag = keys[index] + let style = String(map[tag]) if (tag.slice(0, 2) === '!!') { - tag = 'tag:yaml.org,2002:' + tag.slice(2); + tag = 'tag:yaml.org,2002:' + tag.slice(2) } - type = schema.compiledTypeMap['fallback'][tag]; + const type = schema.compiledTypeMap['fallback'][tag] if (type && _hasOwnProperty.call(type.styleAliases, style)) { - style = type.styleAliases[style]; + style = type.styleAliases[style] } - result[tag] = style; + result[tag] = style } - return result; + return result } -function encodeHex(character) { - var string, handle, length; +function encodeHex (character) { + let handle + let length - string = character.toString(16).toUpperCase(); + const string = character.toString(16).toUpperCase() if (character <= 0xFF) { - handle = 'x'; - length = 2; + handle = 'x' + length = 2 } else if (character <= 0xFFFF) { - handle = 'u'; - length = 4; + handle = 'u' + length = 4 } else if (character <= 0xFFFFFFFF) { - handle = 'U'; - length = 8; + handle = 'U' + length = 8 } else { - throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF'); + throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF') } - return '\\' + handle + common.repeat('0', length - string.length) + string; + return '\\' + handle + common.repeat('0', length - string.length) + string } +const QUOTING_TYPE_SINGLE = 1 +const QUOTING_TYPE_DOUBLE = 2 -var QUOTING_TYPE_SINGLE = 1, - QUOTING_TYPE_DOUBLE = 2; - -function State(options) { - this.schema = options['schema'] || DEFAULT_SCHEMA; - this.indent = Math.max(1, (options['indent'] || 2)); - this.noArrayIndent = options['noArrayIndent'] || false; - this.skipInvalid = options['skipInvalid'] || false; - this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']); - this.styleMap = compileStyleMap(this.schema, options['styles'] || null); - this.sortKeys = options['sortKeys'] || false; - this.lineWidth = options['lineWidth'] || 80; - this.noRefs = options['noRefs'] || false; - this.noCompatMode = options['noCompatMode'] || false; - this.condenseFlow = options['condenseFlow'] || false; - this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE; - this.forceQuotes = options['forceQuotes'] || false; - this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null; +function State (options) { + this.schema = options['schema'] || DEFAULT_SCHEMA + this.indent = Math.max(1, (options['indent'] || 2)) + this.noArrayIndent = options['noArrayIndent'] || false + this.skipInvalid = options['skipInvalid'] || false + this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']) + this.styleMap = compileStyleMap(this.schema, options['styles'] || null) + this.sortKeys = options['sortKeys'] || false + this.lineWidth = options['lineWidth'] || 80 + this.noRefs = options['noRefs'] || false + this.noCompatMode = options['noCompatMode'] || false + this.condenseFlow = options['condenseFlow'] || false + this.quotingType = options['quotingType'] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE + this.forceQuotes = options['forceQuotes'] || false + this.replacer = typeof options['replacer'] === 'function' ? options['replacer'] : null - this.implicitTypes = this.schema.compiledImplicit; - this.explicitTypes = this.schema.compiledExplicit; + this.implicitTypes = this.schema.compiledImplicit + this.explicitTypes = this.schema.compiledExplicit - this.tag = null; - this.result = ''; + this.tag = null + this.result = '' - this.duplicates = []; - this.usedDuplicates = null; + this.duplicates = [] + this.usedDuplicates = null } // Indents every line in a string. Empty lines (\n only) are not indented. -function indentString(string, spaces) { - var ind = common.repeat(' ', spaces), - position = 0, - next = -1, - result = '', - line, - length = string.length; +function indentString (string, spaces) { + const ind = common.repeat(' ', spaces) + let position = 0 + let result = '' + const length = string.length while (position < length) { - next = string.indexOf('\n', position); + let line + const next = string.indexOf('\n', position) if (next === -1) { - line = string.slice(position); - position = length; + line = string.slice(position) + position = length } else { - line = string.slice(position, next + 1); - position = next + 1; + line = string.slice(position, next + 1) + position = next + 1 } - if (line.length && line !== '\n') result += ind; + if (line.length && line !== '\n') result += ind - result += line; + result += line } - return result; + return result } -function generateNextLine(state, level) { - return '\n' + common.repeat(' ', state.indent * level); +function generateNextLine (state, level) { + return '\n' + common.repeat(' ', state.indent * level) } -function testImplicitResolving(state, str) { - var index, length, type; - - for (index = 0, length = state.implicitTypes.length; index < length; index += 1) { - type = state.implicitTypes[index]; +function testImplicitResolving (state, str) { + for (let index = 0, length = state.implicitTypes.length; index < length; index += 1) { + const type = state.implicitTypes[index] if (type.resolve(str)) { - return true; + return true } } - return false; + return false } // [33] s-white ::= s-space | s-tab -function isWhitespace(c) { - return c === CHAR_SPACE || c === CHAR_TAB; +function isWhitespace (c) { + return c === CHAR_SPACE || c === CHAR_TAB } // Returns true if the character can be printed without escaping. // From YAML 1.2: "any allowed characters known to be non-printable // should also be escaped. [However,] This isn’t mandatory" // Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029. -function isPrintable(c) { - return (0x00020 <= c && c <= 0x00007E) - || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) - || ((0x0E000 <= c && c <= 0x00FFFD) && c !== CHAR_BOM) - || (0x10000 <= c && c <= 0x10FFFF); +function isPrintable (c) { + return (c >= 0x00020 && c <= 0x00007E) || + ((c >= 0x000A1 && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029) || + ((c >= 0x0E000 && c <= 0x00FFFD) && c !== CHAR_BOM) || + (c >= 0x10000 && c <= 0x10FFFF) } // [34] ns-char ::= nb-char - s-white @@ -301118,12 +300945,12 @@ function isPrintable(c) { // [26] b-char ::= b-line-feed | b-carriage-return // Including s-white (for some reason, examples doesn't match specs in this aspect) // ns-char ::= c-printable - b-line-feed - b-carriage-return - c-byte-order-mark -function isNsCharOrWhitespace(c) { - return isPrintable(c) - && c !== CHAR_BOM +function isNsCharOrWhitespace (c) { + return isPrintable(c) && + c !== CHAR_BOM && // - b-char - && c !== CHAR_CARRIAGE_RETURN - && c !== CHAR_LINE_FEED; + c !== CHAR_CARRIAGE_RETURN && + c !== CHAR_LINE_FEED } // [127] ns-plain-safe(c) ::= c = flow-out ⇒ ns-plain-safe-out @@ -301135,91 +300962,96 @@ function isNsCharOrWhitespace(c) { // [130] ns-plain-char(c) ::= ( ns-plain-safe(c) - “:” - “#” ) // | ( /* An ns-char preceding */ “#” ) // | ( “:” /* Followed by an ns-plain-safe(c) */ ) -function isPlainSafe(c, prev, inblock) { - var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c); - var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c); +function isPlainSafe (c, prev, inblock) { + const cIsNsCharOrWhitespace = isNsCharOrWhitespace(c) + const cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c) return ( - // ns-plain-safe - inblock ? // c = flow-in - cIsNsCharOrWhitespace - : cIsNsCharOrWhitespace - // - c-flow-indicator - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET - ) + ( + // ns-plain-safe + inblock // c = flow-in + ? cIsNsCharOrWhitespace + : cIsNsCharOrWhitespace && + // - c-flow-indicator + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET + ) && // ns-plain-char - && c !== CHAR_SHARP // false on '#' - && !(prev === CHAR_COLON && !cIsNsChar) // false on ': ' - || (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) // change to true on '[^ ]#' - || (prev === CHAR_COLON && cIsNsChar); // change to true on ':[^ ]' + c !== CHAR_SHARP && // false on '#' + !(prev === CHAR_COLON && !cIsNsChar) + ) || // false on ': ' + (isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP) || // change to true on '[^ ]#' + (prev === CHAR_COLON && cIsNsChar) // change to true on ':[^ ]' } // Simplified test for values allowed as the first character in plain style. -function isPlainSafeFirst(c) { +function isPlainSafeFirst (c) { // Uses a subset of ns-char - c-indicator // where ns-char = nb-char - s-white. // No support of ( ( “?” | “:” | “-” ) /* Followed by an ns-plain-safe(c)) */ ) part - return isPrintable(c) && c !== CHAR_BOM - && !isWhitespace(c) // - s-white + return isPrintable(c) && + c !== CHAR_BOM && + !isWhitespace(c) && // - s-white // - (c-indicator ::= // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}” - && c !== CHAR_MINUS - && c !== CHAR_QUESTION - && c !== CHAR_COLON - && c !== CHAR_COMMA - && c !== CHAR_LEFT_SQUARE_BRACKET - && c !== CHAR_RIGHT_SQUARE_BRACKET - && c !== CHAR_LEFT_CURLY_BRACKET - && c !== CHAR_RIGHT_CURLY_BRACKET + c !== CHAR_MINUS && + c !== CHAR_QUESTION && + c !== CHAR_COLON && + c !== CHAR_COMMA && + c !== CHAR_LEFT_SQUARE_BRACKET && + c !== CHAR_RIGHT_SQUARE_BRACKET && + c !== CHAR_LEFT_CURLY_BRACKET && + c !== CHAR_RIGHT_CURLY_BRACKET && // | “#” | “&” | “*” | “!” | “|” | “=” | “>” | “'” | “"” - && c !== CHAR_SHARP - && c !== CHAR_AMPERSAND - && c !== CHAR_ASTERISK - && c !== CHAR_EXCLAMATION - && c !== CHAR_VERTICAL_LINE - && c !== CHAR_EQUALS - && c !== CHAR_GREATER_THAN - && c !== CHAR_SINGLE_QUOTE - && c !== CHAR_DOUBLE_QUOTE + c !== CHAR_SHARP && + c !== CHAR_AMPERSAND && + c !== CHAR_ASTERISK && + c !== CHAR_EXCLAMATION && + c !== CHAR_VERTICAL_LINE && + c !== CHAR_EQUALS && + c !== CHAR_GREATER_THAN && + c !== CHAR_SINGLE_QUOTE && + c !== CHAR_DOUBLE_QUOTE && // | “%” | “@” | “`”) - && c !== CHAR_PERCENT - && c !== CHAR_COMMERCIAL_AT - && c !== CHAR_GRAVE_ACCENT; + c !== CHAR_PERCENT && + c !== CHAR_COMMERCIAL_AT && + c !== CHAR_GRAVE_ACCENT } // Simplified test for values allowed as the last character in plain style. -function isPlainSafeLast(c) { +function isPlainSafeLast (c) { // just not whitespace or colon, it will be checked to be plain character later - return !isWhitespace(c) && c !== CHAR_COLON; + return !isWhitespace(c) && c !== CHAR_COLON } // Same as 'string'.codePointAt(pos), but works in older browsers. -function codePointAt(string, pos) { - var first = string.charCodeAt(pos), second; +function codePointAt (string, pos) { + const first = string.charCodeAt(pos) + let second + if (first >= 0xD800 && first <= 0xDBFF && pos + 1 < string.length) { - second = string.charCodeAt(pos + 1); + second = string.charCodeAt(pos + 1) if (second >= 0xDC00 && second <= 0xDFFF) { // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae - return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000; + return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000 } } - return first; + return first } // Determines whether block indentation indicator is required. -function needIndentIndicator(string) { - var leadingSpaceRe = /^\n* /; - return leadingSpaceRe.test(string); +function needIndentIndicator (string) { + const leadingSpaceRe = /^\n* / + return leadingSpaceRe.test(string) } -var STYLE_PLAIN = 1, - STYLE_SINGLE = 2, - STYLE_LITERAL = 3, - STYLE_FOLDED = 4, - STYLE_DOUBLE = 5; +const STYLE_PLAIN = 1 +const STYLE_SINGLE = 2 +const STYLE_LITERAL = 3 +const STYLE_FOLDED = 4 +const STYLE_DOUBLE = 5 // Determines which scalar styles are possible and returns the preferred style. // lineWidth = -1 => no limit. @@ -301228,54 +301060,53 @@ var STYLE_PLAIN = 1, // STYLE_PLAIN or STYLE_SINGLE => no \n are in the string. // STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1). // STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1). -function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, +function chooseScalarStyle (string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) { - - var i; - var char = 0; - var prevChar = null; - var hasLineBreak = false; - var hasFoldableLine = false; // only checked if shouldTrackWidth - var shouldTrackWidth = lineWidth !== -1; - var previousLineBreak = -1; // count the first line correctly - var plain = isPlainSafeFirst(codePointAt(string, 0)) - && isPlainSafeLast(codePointAt(string, string.length - 1)); + let i + let char = 0 + let prevChar = null + let hasLineBreak = false + let hasFoldableLine = false // only checked if shouldTrackWidth + const shouldTrackWidth = lineWidth !== -1 + let previousLineBreak = -1 // count the first line correctly + let plain = isPlainSafeFirst(codePointAt(string, 0)) && + isPlainSafeLast(codePointAt(string, string.length - 1)) if (singleLineOnly || forceQuotes) { // Case: no block styles. // Check for disallowed characters to rule out plain and single. for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); + char = codePointAt(string, i) if (!isPrintable(char)) { - return STYLE_DOUBLE; + return STYLE_DOUBLE } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; + plain = plain && isPlainSafe(char, prevChar, inblock) + prevChar = char } } else { // Case: block styles permitted. for (i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); + char = codePointAt(string, i) if (char === CHAR_LINE_FEED) { - hasLineBreak = true; + hasLineBreak = true // Check if any line can be folded. if (shouldTrackWidth) { hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented. (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' '); - previousLineBreak = i; + string[previousLineBreak + 1] !== ' ') + previousLineBreak = i } } else if (!isPrintable(char)) { - return STYLE_DOUBLE; + return STYLE_DOUBLE } - plain = plain && isPlainSafe(char, prevChar, inblock); - prevChar = char; + plain = plain && isPlainSafe(char, prevChar, inblock) + prevChar = char } // in case the end is missing a \n hasFoldableLine = hasFoldableLine || (shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && - string[previousLineBreak + 1] !== ' ')); + string[previousLineBreak + 1] !== ' ')) } // Although every style can represent \n without escaping, prefer block styles // for multiline, since they're more readable and they don't add empty lines. @@ -301284,20 +301115,20 @@ function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, // Strings interpretable as another type have to be quoted; // e.g. the string 'true' vs. the boolean true. if (plain && !forceQuotes && !testAmbiguousType(string)) { - return STYLE_PLAIN; + return STYLE_PLAIN } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE } // Edge case: block indentation indicator can only have one digit. if (indentPerLevel > 9 && needIndentIndicator(string)) { - return STYLE_DOUBLE; + return STYLE_DOUBLE } // At this point we know block styles are valid. // Prefer literal style unless we want to fold. if (!forceQuotes) { - return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL; + return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL } - return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE; + return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE } // Note: line breaking/folding is implemented for only the folded style. @@ -301306,18 +301137,18 @@ function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, // • No ending newline => unaffected; already using strip "-" chomping. // • Ending newline => removed then restored. // Importantly, this keeps the "+" chomp indicator from gaining an extra line. -function writeScalar(state, string, level, iskey, inblock) { +function writeScalar (state, string, level, iskey, inblock) { state.dump = (function () { if (string.length === 0) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''"; + return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''" } if (!state.noCompatMode) { if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string)) { - return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'"); + return state.quotingType === QUOTING_TYPE_DOUBLE ? ('"' + string + '"') : ("'" + string + "'") } } - var indent = state.indent * Math.max(1, level); // no 0-indent scalars + const indent = state.indent * Math.max(1, level) // no 0-indent scalars // As indentation gets deeper, let the width decrease monotonically // to the lower bound min(state.lineWidth, 40). // Note that this implies @@ -301325,461 +301156,441 @@ function writeScalar(state, string, level, iskey, inblock) { // state.lineWidth > 40 + state.indent: width decreases until the lower bound. // This behaves better than a constant minimum width which disallows narrower options, // or an indent threshold which causes the width to suddenly increase. - var lineWidth = state.lineWidth === -1 - ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); + const lineWidth = (state.lineWidth === -1) + ? -1 + : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent) // Without knowing if keys are implicit/explicit, assume implicit for safety. - var singleLineOnly = iskey + const singleLineOnly = iskey || // No block styles in flow mode. - || (state.flowLevel > -1 && level >= state.flowLevel); - function testAmbiguity(string) { - return testImplicitResolving(state, string); + (state.flowLevel > -1 && level >= state.flowLevel) + function testAmbiguity (string) { + return testImplicitResolving(state, string) } switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity, state.quotingType, state.forceQuotes && !iskey, inblock)) { - case STYLE_PLAIN: - return string; + return string case STYLE_SINGLE: - return "'" + string.replace(/'/g, "''") + "'"; + return "'" + string.replace(/'/g, "''") + "'" case STYLE_LITERAL: - return '|' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(string, indent)); + return '|' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(string, indent)) case STYLE_FOLDED: - return '>' + blockHeader(string, state.indent) - + dropEndingNewline(indentString(foldString(string, lineWidth), indent)); + return '>' + blockHeader(string, state.indent) + + dropEndingNewline(indentString(foldString(string, lineWidth), indent)) case STYLE_DOUBLE: - return '"' + escapeString(string, lineWidth) + '"'; + return '"' + escapeString(string, lineWidth) + '"' default: - throw new YAMLException('impossible error: invalid scalar style'); + throw new YAMLException('impossible error: invalid scalar style') } - }()); + }()) } // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9. -function blockHeader(string, indentPerLevel) { - var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; +function blockHeader (string, indentPerLevel) { + const indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : '' // note the special case: the string '\n' counts as a "trailing" empty line. - var clip = string[string.length - 1] === '\n'; - var keep = clip && (string[string.length - 2] === '\n' || string === '\n'); - var chomp = keep ? '+' : (clip ? '' : '-'); + const clip = string[string.length - 1] === '\n' + const keep = clip && (string[string.length - 2] === '\n' || string === '\n') + const chomp = keep ? '+' : (clip ? '' : '-') - return indentIndicator + chomp + '\n'; + return indentIndicator + chomp + '\n' } // (See the note for writeScalar.) -function dropEndingNewline(string) { - return string[string.length - 1] === '\n' ? string.slice(0, -1) : string; +function dropEndingNewline (string) { + return string[string.length - 1] === '\n' ? string.slice(0, -1) : string } // Note: a long line without a suitable break point will exceed the width limit. // Pre-conditions: every char in str isPrintable, str.length > 0, width > 0. -function foldString(string, width) { +function foldString (string, width) { // In folded style, $k$ consecutive newlines output as $k+1$ newlines— // unless they're before or after a more-indented line, or at the very // beginning or end, in which case $k$ maps to $k$. // Therefore, parse each chunk as newline(s) followed by a content line. - var lineRe = /(\n+)([^\n]*)/g; + const lineRe = /(\n+)([^\n]*)/g // first line (possibly an empty line) - var result = (function () { - var nextLF = string.indexOf('\n'); - nextLF = nextLF !== -1 ? nextLF : string.length; - lineRe.lastIndex = nextLF; - return foldLine(string.slice(0, nextLF), width); - }()); + let result = (function () { + let nextLF = string.indexOf('\n') + nextLF = nextLF !== -1 ? nextLF : string.length + lineRe.lastIndex = nextLF + return foldLine(string.slice(0, nextLF), width) + }()) // If we haven't reached the first content line yet, don't add an extra \n. - var prevMoreIndented = string[0] === '\n' || string[0] === ' '; - var moreIndented; + let prevMoreIndented = string[0] === '\n' || string[0] === ' ' + let moreIndented // rest of the lines - var match; + let match while ((match = lineRe.exec(string))) { - var prefix = match[1], line = match[2]; - moreIndented = (line[0] === ' '); - result += prefix - + (!prevMoreIndented && !moreIndented && line !== '' - ? '\n' : '') - + foldLine(line, width); - prevMoreIndented = moreIndented; + const prefix = match[1] + const line = match[2] + + moreIndented = (line[0] === ' ') + result += prefix + + ((!prevMoreIndented && !moreIndented && line !== '') ? '\n' : '') + + foldLine(line, width) + prevMoreIndented = moreIndented } - return result; + return result } // Greedy line breaking. // Picks the longest line under the limit each time, // otherwise settles for the shortest line over the limit. // NB. More-indented lines *cannot* be folded, as that would add an extra \n. -function foldLine(line, width) { - if (line === '' || line[0] === ' ') return line; +function foldLine (line, width) { + if (line === '' || line[0] === ' ') return line // Since a more-indented line adds a \n, breaks can't be followed by a space. - var breakRe = / [^ ]/g; // note: the match index will always be <= length-2. - var match; + const breakRe = / [^ ]/g // note: the match index will always be <= length-2. + let match // start is an inclusive index. end, curr, and next are exclusive. - var start = 0, end, curr = 0, next = 0; - var result = ''; + let start = 0 + let end + let curr = 0 + let next = 0 + let result = '' // Invariants: 0 <= start <= length-1. // 0 <= curr <= next <= max(0, length-2). curr - start <= width. // Inside the loop: // A match implies length >= 2, so curr and next are <= length-2. while ((match = breakRe.exec(line))) { - next = match.index; + next = match.index // maintain invariant: curr - start <= width if (next - start > width) { - end = (curr > start) ? curr : next; // derive end <= length-2 - result += '\n' + line.slice(start, end); + end = (curr > start) ? curr : next // derive end <= length-2 + result += '\n' + line.slice(start, end) // skip the space that was output as \n - start = end + 1; // derive start <= length-1 + start = end + 1 // derive start <= length-1 } - curr = next; + curr = next } // By the invariants, start <= length-1, so there is something left over. // It is either the whole string or a part starting from non-whitespace. - result += '\n'; + result += '\n' // Insert a break if the remainder is too long and there is a break available. if (line.length - start > width && curr > start) { - result += line.slice(start, curr) + '\n' + line.slice(curr + 1); + result += line.slice(start, curr) + '\n' + line.slice(curr + 1) } else { - result += line.slice(start); + result += line.slice(start) } - return result.slice(1); // drop extra \n joiner + return result.slice(1) // drop extra \n joiner } // Escapes a double-quoted string. -function escapeString(string) { - var result = ''; - var char = 0; - var escapeSeq; +function escapeString (string) { + let result = '' + let char = 0 - for (var i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { - char = codePointAt(string, i); - escapeSeq = ESCAPE_SEQUENCES[char]; + for (let i = 0; i < string.length; char >= 0x10000 ? i += 2 : i++) { + char = codePointAt(string, i) + const escapeSeq = ESCAPE_SEQUENCES[char] if (!escapeSeq && isPrintable(char)) { - result += string[i]; - if (char >= 0x10000) result += string[i + 1]; + result += string[i] + if (char >= 0x10000) result += string[i + 1] } else { - result += escapeSeq || encodeHex(char); + result += escapeSeq || encodeHex(char) } } - return result; + return result } -function writeFlowSequence(state, level, object) { - var _result = '', - _tag = state.tag, - index, - length, - value; +function writeFlowSequence (state, level, object) { + let _result = '' + const _tag = state.tag - for (index = 0, length = object.length; index < length; index += 1) { - value = object[index]; + for (let index = 0, length = object.length; index < length; index += 1) { + let value = object[index] if (state.replacer) { - value = state.replacer.call(object, String(index), value); + value = state.replacer.call(object, String(index), value) } // Write only valid elements, put null instead of invalid elements. if (writeNode(state, level, value, false, false) || (typeof value === 'undefined' && writeNode(state, level, null, false, false))) { - - if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : ''); - _result += state.dump; + if (_result !== '') _result += ',' + (!state.condenseFlow ? ' ' : '') + _result += state.dump } } - state.tag = _tag; - state.dump = '[' + _result + ']'; + state.tag = _tag + state.dump = '[' + _result + ']' } -function writeBlockSequence(state, level, object, compact) { - var _result = '', - _tag = state.tag, - index, - length, - value; +function writeBlockSequence (state, level, object, compact) { + let _result = '' + const _tag = state.tag - for (index = 0, length = object.length; index < length; index += 1) { - value = object[index]; + for (let index = 0, length = object.length; index < length; index += 1) { + let value = object[index] if (state.replacer) { - value = state.replacer.call(object, String(index), value); + value = state.replacer.call(object, String(index), value) } // Write only valid elements, put null instead of invalid elements. if (writeNode(state, level + 1, value, true, true, false, true) || (typeof value === 'undefined' && writeNode(state, level + 1, null, true, true, false, true))) { - if (!compact || _result !== '') { - _result += generateNextLine(state, level); + _result += generateNextLine(state, level) } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - _result += '-'; + _result += '-' } else { - _result += '- '; + _result += '- ' } - _result += state.dump; + _result += state.dump } } - state.tag = _tag; - state.dump = _result || '[]'; // Empty sequence if no valid values. + state.tag = _tag + state.dump = _result || '[]' // Empty sequence if no valid values. } -function writeFlowMapping(state, level, object) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - pairBuffer; - - for (index = 0, length = objectKeyList.length; index < length; index += 1) { +function writeFlowMapping (state, level, object) { + let _result = '' + const _tag = state.tag + const objectKeyList = Object.keys(object) - pairBuffer = ''; - if (_result !== '') pairBuffer += ', '; + for (let index = 0, length = objectKeyList.length; index < length; index += 1) { + let pairBuffer = '' + if (_result !== '') pairBuffer += ', ' - if (state.condenseFlow) pairBuffer += '"'; + if (state.condenseFlow) pairBuffer += '"' - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + const objectKey = objectKeyList[index] + let objectValue = object[objectKey] if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); + objectValue = state.replacer.call(object, objectKey, objectValue) } if (!writeNode(state, level, objectKey, false, false)) { - continue; // Skip this pair because of invalid key; + continue // Skip this pair because of invalid key; } - if (state.dump.length > 1024) pairBuffer += '? '; + if (state.dump.length > 1024) pairBuffer += '? ' - pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' '); + pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' ') if (!writeNode(state, level, objectValue, false, false)) { - continue; // Skip this pair because of invalid value. + continue // Skip this pair because of invalid value. } - pairBuffer += state.dump; + pairBuffer += state.dump // Both key and value are valid. - _result += pairBuffer; + _result += pairBuffer } - state.tag = _tag; - state.dump = '{' + _result + '}'; + state.tag = _tag + state.dump = '{' + _result + '}' } -function writeBlockMapping(state, level, object, compact) { - var _result = '', - _tag = state.tag, - objectKeyList = Object.keys(object), - index, - length, - objectKey, - objectValue, - explicitPair, - pairBuffer; +function writeBlockMapping (state, level, object, compact) { + let _result = '' + const _tag = state.tag + const objectKeyList = Object.keys(object) // Allow sorting keys so that the output file is deterministic if (state.sortKeys === true) { // Default sorting - objectKeyList.sort(); + objectKeyList.sort() } else if (typeof state.sortKeys === 'function') { // Custom sort function - objectKeyList.sort(state.sortKeys); + objectKeyList.sort(state.sortKeys) } else if (state.sortKeys) { // Something is wrong - throw new YAMLException('sortKeys must be a boolean or a function'); + throw new YAMLException('sortKeys must be a boolean or a function') } - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - pairBuffer = ''; + for (let index = 0, length = objectKeyList.length; index < length; index += 1) { + let pairBuffer = '' if (!compact || _result !== '') { - pairBuffer += generateNextLine(state, level); + pairBuffer += generateNextLine(state, level) } - objectKey = objectKeyList[index]; - objectValue = object[objectKey]; + const objectKey = objectKeyList[index] + let objectValue = object[objectKey] if (state.replacer) { - objectValue = state.replacer.call(object, objectKey, objectValue); + objectValue = state.replacer.call(object, objectKey, objectValue) } if (!writeNode(state, level + 1, objectKey, true, true, true)) { - continue; // Skip this pair because of invalid key. + continue // Skip this pair because of invalid key. } - explicitPair = (state.tag !== null && state.tag !== '?') || - (state.dump && state.dump.length > 1024); + const explicitPair = (state.tag !== null && state.tag !== '?') || + (state.dump && state.dump.length > 1024) if (explicitPair) { if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += '?'; + pairBuffer += '?' } else { - pairBuffer += '? '; + pairBuffer += '? ' } } - pairBuffer += state.dump; + pairBuffer += state.dump if (explicitPair) { - pairBuffer += generateNextLine(state, level); + pairBuffer += generateNextLine(state, level) } if (!writeNode(state, level + 1, objectValue, true, explicitPair)) { - continue; // Skip this pair because of invalid value. + continue // Skip this pair because of invalid value. } if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) { - pairBuffer += ':'; + pairBuffer += ':' } else { - pairBuffer += ': '; + pairBuffer += ': ' } - pairBuffer += state.dump; + pairBuffer += state.dump // Both key and value are valid. - _result += pairBuffer; + _result += pairBuffer } - state.tag = _tag; - state.dump = _result || '{}'; // Empty mapping if no valid pairs. + state.tag = _tag + state.dump = _result || '{}' // Empty mapping if no valid pairs. } -function detectType(state, object, explicit) { - var _result, typeList, index, length, type, style; - - typeList = explicit ? state.explicitTypes : state.implicitTypes; +function detectType (state, object, explicit) { + const typeList = explicit ? state.explicitTypes : state.implicitTypes - for (index = 0, length = typeList.length; index < length; index += 1) { - type = typeList[index]; + for (let index = 0, length = typeList.length; index < length; index += 1) { + const type = typeList[index] - if ((type.instanceOf || type.predicate) && + if ((type.instanceOf || type.predicate) && (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) && - (!type.predicate || type.predicate(object))) { - + (!type.predicate || type.predicate(object))) { if (explicit) { if (type.multi && type.representName) { - state.tag = type.representName(object); + state.tag = type.representName(object) } else { - state.tag = type.tag; + state.tag = type.tag } } else { - state.tag = '?'; + state.tag = '?' } if (type.represent) { - style = state.styleMap[type.tag] || type.defaultStyle; + const style = state.styleMap[type.tag] || type.defaultStyle + let _result if (_toString.call(type.represent) === '[object Function]') { - _result = type.represent(object, style); + _result = type.represent(object, style) } else if (_hasOwnProperty.call(type.represent, style)) { - _result = type.represent[style](object, style); + _result = type.represent[style](object, style) } else { - throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style'); + throw new YAMLException('!<' + type.tag + '> tag resolver accepts not "' + style + '" style') } - state.dump = _result; + state.dump = _result } - return true; + return true } } - return false; + return false } // Serializes `object` and writes it to global `result`. // Returns true on success, or false on invalid object. // -function writeNode(state, level, object, block, compact, iskey, isblockseq) { - state.tag = null; - state.dump = object; +function writeNode (state, level, object, block, compact, iskey, isblockseq) { + state.tag = null + state.dump = object if (!detectType(state, object, false)) { - detectType(state, object, true); + detectType(state, object, true) } - var type = _toString.call(state.dump); - var inblock = block; - var tagStr; + const type = _toString.call(state.dump) + const inblock = block if (block) { - block = (state.flowLevel < 0 || state.flowLevel > level); + block = (state.flowLevel < 0 || state.flowLevel > level) } - var objectOrArray = type === '[object Object]' || type === '[object Array]', - duplicateIndex, - duplicate; + const objectOrArray = type === '[object Object]' || type === '[object Array]' + let duplicateIndex + let duplicate if (objectOrArray) { - duplicateIndex = state.duplicates.indexOf(object); - duplicate = duplicateIndex !== -1; + duplicateIndex = state.duplicates.indexOf(object) + duplicate = duplicateIndex !== -1 } if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) { - compact = false; + compact = false } if (duplicate && state.usedDuplicates[duplicateIndex]) { - state.dump = '*ref_' + duplicateIndex; + state.dump = '*ref_' + duplicateIndex } else { if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) { - state.usedDuplicates[duplicateIndex] = true; + state.usedDuplicates[duplicateIndex] = true } if (type === '[object Object]') { if (block && (Object.keys(state.dump).length !== 0)) { - writeBlockMapping(state, level, state.dump, compact); + writeBlockMapping(state, level, state.dump, compact) if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; + state.dump = '&ref_' + duplicateIndex + state.dump } } else { - writeFlowMapping(state, level, state.dump); + writeFlowMapping(state, level, state.dump) if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump } } } else if (type === '[object Array]') { if (block && (state.dump.length !== 0)) { if (state.noArrayIndent && !isblockseq && level > 0) { - writeBlockSequence(state, level - 1, state.dump, compact); + writeBlockSequence(state, level - 1, state.dump, compact) } else { - writeBlockSequence(state, level, state.dump, compact); + writeBlockSequence(state, level, state.dump, compact) } if (duplicate) { - state.dump = '&ref_' + duplicateIndex + state.dump; + state.dump = '&ref_' + duplicateIndex + state.dump } } else { - writeFlowSequence(state, level, state.dump); + writeFlowSequence(state, level, state.dump) if (duplicate) { - state.dump = '&ref_' + duplicateIndex + ' ' + state.dump; + state.dump = '&ref_' + duplicateIndex + ' ' + state.dump } } } else if (type === '[object String]') { if (state.tag !== '?') { - writeScalar(state, state.dump, level, iskey, inblock); + writeScalar(state, state.dump, level, iskey, inblock) } } else if (type === '[object Undefined]') { - return false; + return false } else { - if (state.skipInvalid) return false; - throw new YAMLException('unacceptable kind of an object to dump ' + type); + if (state.skipInvalid) return false + throw new YAMLException('unacceptable kind of an object to dump ' + type) } if (state.tag !== null && state.tag !== '?') { @@ -301796,87 +301607,82 @@ function writeNode(state, level, object, block, compact, iskey, isblockseq) { // // Also need to encode '!' because it has special meaning (end of tag prefix). // - tagStr = encodeURI( + let tagStr = encodeURI( state.tag[0] === '!' ? state.tag.slice(1) : state.tag - ).replace(/!/g, '%21'); + ).replace(/!/g, '%21') if (state.tag[0] === '!') { - tagStr = '!' + tagStr; + tagStr = '!' + tagStr } else if (tagStr.slice(0, 18) === 'tag:yaml.org,2002:') { - tagStr = '!!' + tagStr.slice(18); + tagStr = '!!' + tagStr.slice(18) } else { - tagStr = '!<' + tagStr + '>'; + tagStr = '!<' + tagStr + '>' } - state.dump = tagStr + ' ' + state.dump; + state.dump = tagStr + ' ' + state.dump } } - return true; + return true } -function getDuplicateReferences(object, state) { - var objects = [], - duplicatesIndexes = [], - index, - length; +function getDuplicateReferences (object, state) { + const objects = [] + const duplicatesIndexes = [] - inspectNode(object, objects, duplicatesIndexes); + inspectNode(object, objects, duplicatesIndexes) - for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) { - state.duplicates.push(objects[duplicatesIndexes[index]]); + const length = duplicatesIndexes.length + for (let index = 0; index < length; index += 1) { + state.duplicates.push(objects[duplicatesIndexes[index]]) } - state.usedDuplicates = new Array(length); + state.usedDuplicates = new Array(length) } -function inspectNode(object, objects, duplicatesIndexes) { - var objectKeyList, - index, - length; - +function inspectNode (object, objects, duplicatesIndexes) { if (object !== null && typeof object === 'object') { - index = objects.indexOf(object); + const index = objects.indexOf(object) if (index !== -1) { if (duplicatesIndexes.indexOf(index) === -1) { - duplicatesIndexes.push(index); + duplicatesIndexes.push(index) } } else { - objects.push(object); + objects.push(object) if (Array.isArray(object)) { - for (index = 0, length = object.length; index < length; index += 1) { - inspectNode(object[index], objects, duplicatesIndexes); + for (let i = 0, length = object.length; i < length; i += 1) { + inspectNode(object[i], objects, duplicatesIndexes) } } else { - objectKeyList = Object.keys(object); + const objectKeyList = Object.keys(object) - for (index = 0, length = objectKeyList.length; index < length; index += 1) { - inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes); + for (let i = 0, length = objectKeyList.length; i < length; i += 1) { + inspectNode(object[objectKeyList[i]], objects, duplicatesIndexes) } } } } } -function dump(input, options) { - options = options || {}; +function dump (input, options) { + options = options || {} - var state = new State(options); + const state = new State(options) - if (!state.noRefs) getDuplicateReferences(input, state); + if (!state.noRefs) getDuplicateReferences(input, state) - var value = input; + let value = input if (state.replacer) { - value = state.replacer.call({ '': value }, '', value); + value = state.replacer.call({ '': value }, '', value) } - if (writeNode(state, 0, value, true, true)) return state.dump + '\n'; + if (writeNode(state, 0, value, true, true)) return state.dump + '\n' - return ''; + return '' } -module.exports.dump = dump; +module.exports.dump = dump /***/ }), @@ -301889,57 +301695,53 @@ module.exports.dump = dump; // +function formatError (exception, compact) { + let where = '' + const message = exception.reason || '(unknown reason)' -function formatError(exception, compact) { - var where = '', message = exception.reason || '(unknown reason)'; - - if (!exception.mark) return message; + if (!exception.mark) return message if (exception.mark.name) { - where += 'in "' + exception.mark.name + '" '; + where += 'in "' + exception.mark.name + '" ' } - where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')'; + where += '(' + (exception.mark.line + 1) + ':' + (exception.mark.column + 1) + ')' if (!compact && exception.mark.snippet) { - where += '\n\n' + exception.mark.snippet; + where += '\n\n' + exception.mark.snippet } - return message + ' ' + where; + return message + ' ' + where } - -function YAMLException(reason, mark) { +function YAMLException (reason, mark) { // Super constructor - Error.call(this); + Error.call(this) - this.name = 'YAMLException'; - this.reason = reason; - this.mark = mark; - this.message = formatError(this, false); + this.name = 'YAMLException' + this.reason = reason + this.mark = mark + this.message = formatError(this, false) // Include stack trace in error object if (Error.captureStackTrace) { // Chrome and NodeJS - Error.captureStackTrace(this, this.constructor); + Error.captureStackTrace(this, this.constructor) } else { // FF, IE 10+ and Safari 6+. Fallback for others - this.stack = (new Error()).stack || ''; + this.stack = (new Error()).stack || '' } } - // Inherit from Error -YAMLException.prototype = Object.create(Error.prototype); -YAMLException.prototype.constructor = YAMLException; - - -YAMLException.prototype.toString = function toString(compact) { - return this.name + ': ' + formatError(this, compact); -}; +YAMLException.prototype = Object.create(Error.prototype) +YAMLException.prototype.constructor = YAMLException +YAMLException.prototype.toString = function toString (compact) { + return this.name + ': ' + formatError(this, compact) +} -module.exports = YAMLException; +module.exports = YAMLException /***/ }), @@ -301950,129 +301752,125 @@ module.exports = YAMLException; "use strict"; -/*eslint-disable max-len,no-use-before-define*/ - -var common = __nccwpck_require__(26829); -var YAMLException = __nccwpck_require__(68179); -var makeSnippet = __nccwpck_require__(96975); -var DEFAULT_SCHEMA = __nccwpck_require__(18759); - - -var _hasOwnProperty = Object.prototype.hasOwnProperty; - - -var CONTEXT_FLOW_IN = 1; -var CONTEXT_FLOW_OUT = 2; -var CONTEXT_BLOCK_IN = 3; -var CONTEXT_BLOCK_OUT = 4; +const common = __nccwpck_require__(26829) +const YAMLException = __nccwpck_require__(68179) +const makeSnippet = __nccwpck_require__(96975) +const DEFAULT_SCHEMA = __nccwpck_require__(18759) +const _hasOwnProperty = Object.prototype.hasOwnProperty -var CHOMPING_CLIP = 1; -var CHOMPING_STRIP = 2; -var CHOMPING_KEEP = 3; +const CONTEXT_FLOW_IN = 1 +const CONTEXT_FLOW_OUT = 2 +const CONTEXT_BLOCK_IN = 3 +const CONTEXT_BLOCK_OUT = 4 +const CHOMPING_CLIP = 1 +const CHOMPING_STRIP = 2 +const CHOMPING_KEEP = 3 -var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; -var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/; -var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/; -var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i; -var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i; +// eslint-disable-next-line no-control-regex +const PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/ +const PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/ +// eslint-disable-next-line no-useless-escape +const PATTERN_FLOW_INDICATORS = /[,\[\]{}]/ +// eslint-disable-next-line no-useless-escape +const PATTERN_TAG_HANDLE = /^(?:!|!!|![0-9A-Za-z-]+!)$/ +// eslint-disable-next-line no-useless-escape +const PATTERN_TAG_URI = /^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i +function _class (obj) { return Object.prototype.toString.call(obj) } -function _class(obj) { return Object.prototype.toString.call(obj); } - -function is_EOL(c) { - return (c === 0x0A/* LF */) || (c === 0x0D/* CR */); +function isEol (c) { + return (c === 0x0A/* LF */) || (c === 0x0D/* CR */) } -function is_WHITE_SPACE(c) { - return (c === 0x09/* Tab */) || (c === 0x20/* Space */); +function isWhiteSpace (c) { + return (c === 0x09/* Tab */) || (c === 0x20/* Space */) } -function is_WS_OR_EOL(c) { +function isWsOrEol (c) { return (c === 0x09/* Tab */) || (c === 0x20/* Space */) || (c === 0x0A/* LF */) || - (c === 0x0D/* CR */); + (c === 0x0D/* CR */) } -function is_FLOW_INDICATOR(c) { +function isFlowIndicator (c) { return c === 0x2C/* , */ || c === 0x5B/* [ */ || c === 0x5D/* ] */ || c === 0x7B/* { */ || - c === 0x7D/* } */; + c === 0x7D/* } */ } -function fromHexCode(c) { - var lc; - - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; +function fromHexCode (c) { + if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) { + return c - 0x30 } - /*eslint-disable no-bitwise*/ - lc = c | 0x20; + const lc = c | 0x20 - if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) { - return lc - 0x61 + 10; + if ((lc >= 0x61/* a */) && (lc <= 0x66/* f */)) { + return lc - 0x61 + 10 } - return -1; + return -1 } -function escapedHexLen(c) { - if (c === 0x78/* x */) { return 2; } - if (c === 0x75/* u */) { return 4; } - if (c === 0x55/* U */) { return 8; } - return 0; +function escapedHexLen (c) { + if (c === 0x78/* x */) { return 2 } + if (c === 0x75/* u */) { return 4 } + if (c === 0x55/* U */) { return 8 } + return 0 } -function fromDecimalCode(c) { - if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) { - return c - 0x30; +function fromDecimalCode (c) { + if ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) { + return c - 0x30 } - return -1; + return -1 } -function simpleEscapeSequence(c) { - /* eslint-disable indent */ - return (c === 0x30/* 0 */) ? '\x00' : - (c === 0x61/* a */) ? '\x07' : - (c === 0x62/* b */) ? '\x08' : - (c === 0x74/* t */) ? '\x09' : - (c === 0x09/* Tab */) ? '\x09' : - (c === 0x6E/* n */) ? '\x0A' : - (c === 0x76/* v */) ? '\x0B' : - (c === 0x66/* f */) ? '\x0C' : - (c === 0x72/* r */) ? '\x0D' : - (c === 0x65/* e */) ? '\x1B' : - (c === 0x20/* Space */) ? ' ' : - (c === 0x22/* " */) ? '\x22' : - (c === 0x2F/* / */) ? '/' : - (c === 0x5C/* \ */) ? '\x5C' : - (c === 0x4E/* N */) ? '\x85' : - (c === 0x5F/* _ */) ? '\xA0' : - (c === 0x4C/* L */) ? '\u2028' : - (c === 0x50/* P */) ? '\u2029' : ''; -} - -function charFromCodepoint(c) { +function simpleEscapeSequence (c) { + switch (c) { + case 0x30/* 0 */: return '\x00' + case 0x61/* a */: return '\x07' + case 0x62/* b */: return '\x08' + case 0x74/* t */: return '\x09' + case 0x09/* Tab */: return '\x09' + case 0x6E/* n */: return '\x0A' + case 0x76/* v */: return '\x0B' + case 0x66/* f */: return '\x0C' + case 0x72/* r */: return '\x0D' + case 0x65/* e */: return '\x1B' + case 0x20/* Space */: return ' ' + case 0x22/* " */: return '\x22' + case 0x2F/* / */: return '/' + case 0x5C/* \ */: return '\x5C' + case 0x4E/* N */: return '\x85' + case 0x5F/* _ */: return '\xA0' + case 0x4C/* L */: return '\u2028' + case 0x50/* P */: return '\u2029' + default: return '' + } +} + +function charFromCodepoint (c) { if (c <= 0xFFFF) { - return String.fromCharCode(c); + return String.fromCharCode(c) } // Encode UTF-16 surrogate pair // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF return String.fromCharCode( ((c - 0x010000) >> 10) + 0xD800, ((c - 0x010000) & 0x03FF) + 0xDC00 - ); + ) } // set a property of a literal object, while protecting against prototype pollution, // see https://github.com/nodeca/js-yaml/issues/164 for more details -function setProperty(object, key, value) { +function setProperty (object, key, value) { // used for this specific key only because Object.defineProperty is slow if (key === '__proto__') { Object.defineProperty(object, key, { @@ -302080,47 +301878,50 @@ function setProperty(object, key, value) { enumerable: true, writable: true, value: value - }); + }) } else { - object[key] = value; + object[key] = value } } -var simpleEscapeCheck = new Array(256); // integer, for fast access -var simpleEscapeMap = new Array(256); -for (var i = 0; i < 256; i++) { - simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0; - simpleEscapeMap[i] = simpleEscapeSequence(i); +const simpleEscapeCheck = new Array(256) // integer, for fast access +const simpleEscapeMap = new Array(256) +for (let i = 0; i < 256; i++) { + simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0 + simpleEscapeMap[i] = simpleEscapeSequence(i) } +function State (input, options) { + this.input = input -function State(input, options) { - this.input = input; - - this.filename = options['filename'] || null; - this.schema = options['schema'] || DEFAULT_SCHEMA; - this.onWarning = options['onWarning'] || null; + this.filename = options['filename'] || null + this.schema = options['schema'] || DEFAULT_SCHEMA + this.onWarning = options['onWarning'] || null // (Hidden) Remove? makes the loader to expect YAML 1.1 documents // if such documents have no explicit %YAML directive - this.legacy = options['legacy'] || false; + this.legacy = options['legacy'] || false - this.json = options['json'] || false; - this.listener = options['listener'] || null; + this.json = options['json'] || false + this.listener = options['listener'] || null + this.maxDepth = typeof options['maxDepth'] === 'number' ? options['maxDepth'] : 100 + this.maxMergeSeqLength = typeof options['maxMergeSeqLength'] === 'number' ? options['maxMergeSeqLength'] : 20 - this.implicitTypes = this.schema.compiledImplicit; - this.typeMap = this.schema.compiledTypeMap; + this.implicitTypes = this.schema.compiledImplicit + this.typeMap = this.schema.compiledTypeMap - this.length = input.length; - this.position = 0; - this.line = 0; - this.lineStart = 0; - this.lineIndent = 0; + this.length = input.length + this.position = 0 + this.line = 0 + this.lineStart = 0 + this.lineIndent = 0 + this.depth = 0 // position of first leading tab in the current line, // used to make sure there are no tabs in the indentation - this.firstTabInLine = -1; + this.firstTabInLine = -1 - this.documents = []; + this.documents = [] + this.anchorMapTransactions = [] /* this.version; @@ -302130,164 +301931,229 @@ function State(input, options) { this.tag; this.anchor; this.kind; - this.result;*/ - + this.result; */ } - -function generateError(state, message) { - var mark = { - name: state.filename, - buffer: state.input.slice(0, -1), // omit trailing \0 +function generateError (state, message) { + const mark = { + name: state.filename, + buffer: state.input.slice(0, -1), // omit trailing \0 position: state.position, - line: state.line, - column: state.position - state.lineStart - }; + line: state.line, + column: state.position - state.lineStart + } - mark.snippet = makeSnippet(mark); + mark.snippet = makeSnippet(mark) - return new YAMLException(message, mark); + return new YAMLException(message, mark) } -function throwError(state, message) { - throw generateError(state, message); +function throwError (state, message) { + throw generateError(state, message) } -function throwWarning(state, message) { +function throwWarning (state, message) { if (state.onWarning) { - state.onWarning.call(null, generateError(state, message)); + state.onWarning.call(null, generateError(state, message)) + } +} + +function storeAnchor (state, name, value) { + const transactions = state.anchorMapTransactions + + if (transactions.length !== 0) { + const transaction = transactions[transactions.length - 1] + + if (!_hasOwnProperty.call(transaction, name)) { + transaction[name] = { + existed: _hasOwnProperty.call(state.anchorMap, name), + value: state.anchorMap[name] + } + } } + + state.anchorMap[name] = value +} + +function beginAnchorTransaction (state) { + state.anchorMapTransactions.push(Object.create(null)) } +function commitAnchorTransaction (state) { + const transaction = state.anchorMapTransactions.pop() + const transactions = state.anchorMapTransactions + + if (transactions.length === 0) return -var directiveHandlers = { + const parent = transactions[transactions.length - 1] + const names = Object.keys(transaction) - YAML: function handleYamlDirective(state, name, args) { + for (let index = 0, length = names.length; index < length; index += 1) { + const name = names[index] - var match, major, minor; + if (!_hasOwnProperty.call(parent, name)) { + parent[name] = transaction[name] + } + } +} +function rollbackAnchorTransaction (state) { + const transaction = state.anchorMapTransactions.pop() + const names = Object.keys(transaction) + + for (let index = names.length - 1; index >= 0; index -= 1) { + const entry = transaction[names[index]] + + if (entry.existed) { + state.anchorMap[names[index]] = entry.value + } else { + delete state.anchorMap[names[index]] + } + } +} + +function snapshotState (state) { + return { + position: state.position, + line: state.line, + lineStart: state.lineStart, + lineIndent: state.lineIndent, + firstTabInLine: state.firstTabInLine, + tag: state.tag, + anchor: state.anchor, + kind: state.kind, + result: state.result + } +} + +function restoreState (state, snapshot) { + state.position = snapshot.position + state.line = snapshot.line + state.lineStart = snapshot.lineStart + state.lineIndent = snapshot.lineIndent + state.firstTabInLine = snapshot.firstTabInLine + state.tag = snapshot.tag + state.anchor = snapshot.anchor + state.kind = snapshot.kind + state.result = snapshot.result +} + +const directiveHandlers = { + + YAML: function handleYamlDirective (state, name, args) { if (state.version !== null) { - throwError(state, 'duplication of %YAML directive'); + throwError(state, 'duplication of %YAML directive') } if (args.length !== 1) { - throwError(state, 'YAML directive accepts exactly one argument'); + throwError(state, 'YAML directive accepts exactly one argument') } - match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]); + const match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]) if (match === null) { - throwError(state, 'ill-formed argument of the YAML directive'); + throwError(state, 'ill-formed argument of the YAML directive') } - major = parseInt(match[1], 10); - minor = parseInt(match[2], 10); + const major = parseInt(match[1], 10) + const minor = parseInt(match[2], 10) if (major !== 1) { - throwError(state, 'unacceptable YAML version of the document'); + throwError(state, 'unacceptable YAML version of the document') } - state.version = args[0]; - state.checkLineBreaks = (minor < 2); + state.version = args[0] + state.checkLineBreaks = (minor < 2) if (minor !== 1 && minor !== 2) { - throwWarning(state, 'unsupported YAML version of the document'); + throwWarning(state, 'unsupported YAML version of the document') } }, - TAG: function handleTagDirective(state, name, args) { - - var handle, prefix; + TAG: function handleTagDirective (state, name, args) { + let prefix if (args.length !== 2) { - throwError(state, 'TAG directive accepts exactly two arguments'); + throwError(state, 'TAG directive accepts exactly two arguments') } - handle = args[0]; - prefix = args[1]; + const handle = args[0] + prefix = args[1] if (!PATTERN_TAG_HANDLE.test(handle)) { - throwError(state, 'ill-formed tag handle (first argument) of the TAG directive'); + throwError(state, 'ill-formed tag handle (first argument) of the TAG directive') } if (_hasOwnProperty.call(state.tagMap, handle)) { - throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle'); + throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle') } if (!PATTERN_TAG_URI.test(prefix)) { - throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive'); + throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive') } try { - prefix = decodeURIComponent(prefix); + prefix = decodeURIComponent(prefix) } catch (err) { - throwError(state, 'tag prefix is malformed: ' + prefix); + throwError(state, 'tag prefix is malformed: ' + prefix) } - state.tagMap[handle] = prefix; + state.tagMap[handle] = prefix } -}; - - -function captureSegment(state, start, end, checkJson) { - var _position, _length, _character, _result; +} +function captureSegment (state, start, end, checkJson) { if (start < end) { - _result = state.input.slice(start, end); + const _result = state.input.slice(start, end) if (checkJson) { - for (_position = 0, _length = _result.length; _position < _length; _position += 1) { - _character = _result.charCodeAt(_position); + for (let _position = 0, _length = _result.length; _position < _length; _position += 1) { + const _character = _result.charCodeAt(_position) if (!(_character === 0x09 || - (0x20 <= _character && _character <= 0x10FFFF))) { - throwError(state, 'expected valid JSON character'); + (_character >= 0x20 && _character <= 0x10FFFF))) { + throwError(state, 'expected valid JSON character') } } } else if (PATTERN_NON_PRINTABLE.test(_result)) { - throwError(state, 'the stream contains non-printable characters'); + throwError(state, 'the stream contains non-printable characters') } - state.result += _result; + state.result += _result } } -function mergeMappings(state, destination, source, overridableKeys) { - var sourceKeys, key, index, quantity; - +function mergeMappings (state, destination, source, overridableKeys) { if (!common.isObject(source)) { - throwError(state, 'cannot merge mappings; the provided source object is unacceptable'); + throwError(state, 'cannot merge mappings; the provided source object is unacceptable') } - sourceKeys = Object.keys(source); + const sourceKeys = Object.keys(source) - for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { - key = sourceKeys[index]; + for (let index = 0, quantity = sourceKeys.length; index < quantity; index += 1) { + const key = sourceKeys[index] if (!_hasOwnProperty.call(destination, key)) { - setProperty(destination, key, source[key]); - overridableKeys[key] = true; + setProperty(destination, key, source[key]) + overridableKeys[key] = true } } } -function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, +function storeMappingPair (state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) { - - var index, quantity; - // The output is a plain object here, so keys can only be strings. // We need to convert keyNode to a string, but doing so can hang the process // (deeply nested arrays that explode exponentially using aliases). if (Array.isArray(keyNode)) { - keyNode = Array.prototype.slice.call(keyNode); + keyNode = Array.prototype.slice.call(keyNode) - for (index = 0, quantity = keyNode.length; index < quantity; index += 1) { + for (let index = 0, quantity = keyNode.length; index < quantity; index += 1) { if (Array.isArray(keyNode[index])) { - throwError(state, 'nested arrays are not supported inside keys'); + throwError(state, 'nested arrays are not supported inside keys') } if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') { - keyNode[index] = '[object Object]'; + keyNode[index] = '[object Object]' } } } @@ -302296,814 +302162,785 @@ function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valu // (still use its own toString for arrays, timestamps, // and whatever user schema extensions happen to have @@toStringTag) if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') { - keyNode = '[object Object]'; + keyNode = '[object Object]' } - - keyNode = String(keyNode); + keyNode = String(keyNode) if (_result === null) { - _result = {}; + _result = {} } if (keyTag === 'tag:yaml.org,2002:merge') { if (Array.isArray(valueNode)) { - for (index = 0, quantity = valueNode.length; index < quantity; index += 1) { - mergeMappings(state, _result, valueNode[index], overridableKeys); + if (valueNode.length > state.maxMergeSeqLength) { + throwError(state, 'merge sequence length exceeded maxMergeSeqLength (' + state.maxMergeSeqLength + ')') + } + const seen = new Set() + for (let index = 0, quantity = valueNode.length; index < quantity; index += 1) { + const src = valueNode[index] + // Existing keys are not overridden on merge, so dedupe sources to + // avoid redundant work on repeated aliases. + if (seen.has(src)) continue + seen.add(src) + mergeMappings(state, _result, src, overridableKeys) } } else { - mergeMappings(state, _result, valueNode, overridableKeys); + mergeMappings(state, _result, valueNode, overridableKeys) } } else { if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) { - state.line = startLine || state.line; - state.lineStart = startLineStart || state.lineStart; - state.position = startPos || state.position; - throwError(state, 'duplicated mapping key'); + state.line = startLine || state.line + state.lineStart = startLineStart || state.lineStart + state.position = startPos || state.position + throwError(state, 'duplicated mapping key') } - setProperty(_result, keyNode, valueNode); - delete overridableKeys[keyNode]; + setProperty(_result, keyNode, valueNode) + delete overridableKeys[keyNode] } - return _result; + return _result } -function readLineBreak(state) { - var ch; - - ch = state.input.charCodeAt(state.position); +function readLineBreak (state) { + const ch = state.input.charCodeAt(state.position) if (ch === 0x0A/* LF */) { - state.position++; + state.position++ } else if (ch === 0x0D/* CR */) { - state.position++; + state.position++ if (state.input.charCodeAt(state.position) === 0x0A/* LF */) { - state.position++; + state.position++ } } else { - throwError(state, 'a line break is expected'); + throwError(state, 'a line break is expected') } - state.line += 1; - state.lineStart = state.position; - state.firstTabInLine = -1; + state.line += 1 + state.lineStart = state.position + state.firstTabInLine = -1 } -function skipSeparationSpace(state, allowComments, checkIndent) { - var lineBreaks = 0, - ch = state.input.charCodeAt(state.position); +function skipSeparationSpace (state, allowComments, checkIndent) { + let lineBreaks = 0 + let ch = state.input.charCodeAt(state.position) while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { + while (isWhiteSpace(ch)) { if (ch === 0x09/* Tab */ && state.firstTabInLine === -1) { - state.firstTabInLine = state.position; + state.firstTabInLine = state.position } - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) } if (allowComments && ch === 0x23/* # */) { do { - ch = state.input.charCodeAt(++state.position); - } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0); + ch = state.input.charCodeAt(++state.position) + } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0) } - if (is_EOL(ch)) { - readLineBreak(state); + if (isEol(ch)) { + readLineBreak(state) - ch = state.input.charCodeAt(state.position); - lineBreaks++; - state.lineIndent = 0; + ch = state.input.charCodeAt(state.position) + lineBreaks++ + state.lineIndent = 0 while (ch === 0x20/* Space */) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); + state.lineIndent++ + ch = state.input.charCodeAt(++state.position) } } else { - break; + break } } if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) { - throwWarning(state, 'deficient indentation'); + throwWarning(state, 'deficient indentation') } - return lineBreaks; + return lineBreaks } -function testDocumentSeparator(state) { - var _position = state.position, - ch; - - ch = state.input.charCodeAt(_position); +function testDocumentSeparator (state) { + let _position = state.position + let ch = state.input.charCodeAt(_position) // Condition state.position === state.lineStart is tested // in parent on each call, for efficiency. No needs to test here again. if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) { + _position += 3 - _position += 3; - - ch = state.input.charCodeAt(_position); + ch = state.input.charCodeAt(_position) - if (ch === 0 || is_WS_OR_EOL(ch)) { - return true; + if (ch === 0 || isWsOrEol(ch)) { + return true } } - return false; + return false } -function writeFoldedLines(state, count) { +function writeFoldedLines (state, count) { if (count === 1) { - state.result += ' '; + state.result += ' ' } else if (count > 1) { - state.result += common.repeat('\n', count - 1); - } -} - - -function readPlainScalar(state, nodeIndent, withinFlowCollection) { - var preceding, - following, - captureStart, - captureEnd, - hasPendingContent, - _line, - _lineStart, - _lineIndent, - _kind = state.kind, - _result = state.result, - ch; - - ch = state.input.charCodeAt(state.position); - - if (is_WS_OR_EOL(ch) || - is_FLOW_INDICATOR(ch) || - ch === 0x23/* # */ || - ch === 0x26/* & */ || - ch === 0x2A/* * */ || - ch === 0x21/* ! */ || - ch === 0x7C/* | */ || - ch === 0x3E/* > */ || - ch === 0x27/* ' */ || - ch === 0x22/* " */ || - ch === 0x25/* % */ || - ch === 0x40/* @ */ || + state.result += common.repeat('\n', count - 1) + } +} + +function readPlainScalar (state, nodeIndent, withinFlowCollection) { + let captureStart + let captureEnd + let hasPendingContent + let _line + let _lineStart + let _lineIndent + const _kind = state.kind + const _result = state.result + + let ch = state.input.charCodeAt(state.position) + + if (isWsOrEol(ch) || + isFlowIndicator(ch) || + ch === 0x23/* # */ || + ch === 0x26/* & */ || + ch === 0x2A/* * */ || + ch === 0x21/* ! */ || + ch === 0x7C/* | */ || + ch === 0x3E/* > */ || + ch === 0x27/* ' */ || + ch === 0x22/* " */ || + ch === 0x25/* % */ || + ch === 0x40/* @ */ || ch === 0x60/* ` */) { - return false; + return false } if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) { - following = state.input.charCodeAt(state.position + 1); + const following = state.input.charCodeAt(state.position + 1) - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - return false; + if (isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following))) { + return false } } - state.kind = 'scalar'; - state.result = ''; - captureStart = captureEnd = state.position; - hasPendingContent = false; + state.kind = 'scalar' + state.result = '' + captureStart = captureEnd = state.position + hasPendingContent = false while (ch !== 0) { if (ch === 0x3A/* : */) { - following = state.input.charCodeAt(state.position + 1); + const following = state.input.charCodeAt(state.position + 1) - if (is_WS_OR_EOL(following) || - withinFlowCollection && is_FLOW_INDICATOR(following)) { - break; + if (isWsOrEol(following) || + (withinFlowCollection && isFlowIndicator(following))) { + break } - } else if (ch === 0x23/* # */) { - preceding = state.input.charCodeAt(state.position - 1); + const preceding = state.input.charCodeAt(state.position - 1) - if (is_WS_OR_EOL(preceding)) { - break; + if (isWsOrEol(preceding)) { + break } - } else if ((state.position === state.lineStart && testDocumentSeparator(state)) || - withinFlowCollection && is_FLOW_INDICATOR(ch)) { - break; - - } else if (is_EOL(ch)) { - _line = state.line; - _lineStart = state.lineStart; - _lineIndent = state.lineIndent; - skipSeparationSpace(state, false, -1); + (withinFlowCollection && isFlowIndicator(ch))) { + break + } else if (isEol(ch)) { + _line = state.line + _lineStart = state.lineStart + _lineIndent = state.lineIndent + skipSeparationSpace(state, false, -1) if (state.lineIndent >= nodeIndent) { - hasPendingContent = true; - ch = state.input.charCodeAt(state.position); - continue; + hasPendingContent = true + ch = state.input.charCodeAt(state.position) + continue } else { - state.position = captureEnd; - state.line = _line; - state.lineStart = _lineStart; - state.lineIndent = _lineIndent; - break; + state.position = captureEnd + state.line = _line + state.lineStart = _lineStart + state.lineIndent = _lineIndent + break } } if (hasPendingContent) { - captureSegment(state, captureStart, captureEnd, false); - writeFoldedLines(state, state.line - _line); - captureStart = captureEnd = state.position; - hasPendingContent = false; + captureSegment(state, captureStart, captureEnd, false) + writeFoldedLines(state, state.line - _line) + captureStart = captureEnd = state.position + hasPendingContent = false } - if (!is_WHITE_SPACE(ch)) { - captureEnd = state.position + 1; + if (!isWhiteSpace(ch)) { + captureEnd = state.position + 1 } - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) } - captureSegment(state, captureStart, captureEnd, false); + captureSegment(state, captureStart, captureEnd, false) if (state.result) { - return true; + return true } - state.kind = _kind; - state.result = _result; - return false; + state.kind = _kind + state.result = _result + return false } -function readSingleQuotedScalar(state, nodeIndent) { - var ch, - captureStart, captureEnd; +function readSingleQuotedScalar (state, nodeIndent) { + let captureStart + let captureEnd - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position) if (ch !== 0x27/* ' */) { - return false; + return false } - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; + state.kind = 'scalar' + state.result = '' + state.position++ + captureStart = captureEnd = state.position while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 0x27/* ' */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); + captureSegment(state, captureStart, state.position, true) + ch = state.input.charCodeAt(++state.position) if (ch === 0x27/* ' */) { - captureStart = state.position; - state.position++; - captureEnd = state.position; + captureStart = state.position + state.position++ + captureEnd = state.position } else { - return true; + return true } - - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - + } else if (isEol(ch)) { + captureSegment(state, captureStart, captureEnd, true) + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)) + captureStart = captureEnd = state.position } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a single quoted scalar'); - + throwError(state, 'unexpected end of the document within a single quoted scalar') } else { - state.position++; - captureEnd = state.position; + state.position++ + if (!isWhiteSpace(ch)) { + captureEnd = state.position + } } } - throwError(state, 'unexpected end of the stream within a single quoted scalar'); + throwError(state, 'unexpected end of the stream within a single quoted scalar') } -function readDoubleQuotedScalar(state, nodeIndent) { - var captureStart, - captureEnd, - hexLength, - hexResult, - tmp, - ch; +function readDoubleQuotedScalar (state, nodeIndent) { + let captureStart + let captureEnd + let tmp - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position) if (ch !== 0x22/* " */) { - return false; + return false } - state.kind = 'scalar'; - state.result = ''; - state.position++; - captureStart = captureEnd = state.position; + state.kind = 'scalar' + state.result = '' + state.position++ + captureStart = captureEnd = state.position while ((ch = state.input.charCodeAt(state.position)) !== 0) { if (ch === 0x22/* " */) { - captureSegment(state, captureStart, state.position, true); - state.position++; - return true; - + captureSegment(state, captureStart, state.position, true) + state.position++ + return true } else if (ch === 0x5C/* \ */) { - captureSegment(state, captureStart, state.position, true); - ch = state.input.charCodeAt(++state.position); + captureSegment(state, captureStart, state.position, true) + ch = state.input.charCodeAt(++state.position) - if (is_EOL(ch)) { - skipSeparationSpace(state, false, nodeIndent); + if (isEol(ch)) { + skipSeparationSpace(state, false, nodeIndent) // TODO: rework to inline fn with no type cast? } else if (ch < 256 && simpleEscapeCheck[ch]) { - state.result += simpleEscapeMap[ch]; - state.position++; - + state.result += simpleEscapeMap[ch] + state.position++ } else if ((tmp = escapedHexLen(ch)) > 0) { - hexLength = tmp; - hexResult = 0; + let hexLength = tmp + let hexResult = 0 for (; hexLength > 0; hexLength--) { - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) if ((tmp = fromHexCode(ch)) >= 0) { - hexResult = (hexResult << 4) + tmp; - + hexResult = (hexResult << 4) + tmp } else { - throwError(state, 'expected hexadecimal character'); + throwError(state, 'expected hexadecimal character') } } - state.result += charFromCodepoint(hexResult); - - state.position++; + state.result += charFromCodepoint(hexResult) + state.position++ } else { - throwError(state, 'unknown escape sequence'); + throwError(state, 'unknown escape sequence') } - captureStart = captureEnd = state.position; - - } else if (is_EOL(ch)) { - captureSegment(state, captureStart, captureEnd, true); - writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)); - captureStart = captureEnd = state.position; - + captureStart = captureEnd = state.position + } else if (isEol(ch)) { + captureSegment(state, captureStart, captureEnd, true) + writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent)) + captureStart = captureEnd = state.position } else if (state.position === state.lineStart && testDocumentSeparator(state)) { - throwError(state, 'unexpected end of the document within a double quoted scalar'); - + throwError(state, 'unexpected end of the document within a double quoted scalar') } else { - state.position++; - captureEnd = state.position; - } - } - - throwError(state, 'unexpected end of the stream within a double quoted scalar'); -} - -function readFlowCollection(state, nodeIndent) { - var readNext = true, - _line, - _lineStart, - _pos, - _tag = state.tag, - _result, - _anchor = state.anchor, - following, - terminator, - isPair, - isExplicitPair, - isMapping, - overridableKeys = Object.create(null), - keyNode, - keyTag, - valueNode, - ch; + state.position++ + if (!isWhiteSpace(ch)) { + captureEnd = state.position + } + } + } + + throwError(state, 'unexpected end of the stream within a double quoted scalar') +} - ch = state.input.charCodeAt(state.position); +function readFlowCollection (state, nodeIndent) { + let readNext = true + let _line + let _lineStart + let _pos + const _tag = state.tag + let _result + const _anchor = state.anchor + let terminator + let isPair + let isExplicitPair + let isMapping + const overridableKeys = Object.create(null) + let keyNode + let keyTag + let valueNode + + let ch = state.input.charCodeAt(state.position) if (ch === 0x5B/* [ */) { - terminator = 0x5D;/* ] */ - isMapping = false; - _result = []; + terminator = 0x5D/* ] */ + isMapping = false + _result = [] } else if (ch === 0x7B/* { */) { - terminator = 0x7D;/* } */ - isMapping = true; - _result = {}; + terminator = 0x7D/* } */ + isMapping = true + _result = {} } else { - return false; + return false } if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + storeAnchor(state, state.anchor, _result) } - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) while (ch !== 0) { - skipSeparationSpace(state, true, nodeIndent); + skipSeparationSpace(state, true, nodeIndent) - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) if (ch === terminator) { - state.position++; - state.tag = _tag; - state.anchor = _anchor; - state.kind = isMapping ? 'mapping' : 'sequence'; - state.result = _result; - return true; + state.position++ + state.tag = _tag + state.anchor = _anchor + state.kind = isMapping ? 'mapping' : 'sequence' + state.result = _result + return true } else if (!readNext) { - throwError(state, 'missed comma between flow collection entries'); + throwError(state, 'missed comma between flow collection entries') } else if (ch === 0x2C/* , */) { // "flow collection entries can never be completely empty", as per YAML 1.2, section 7.4 - throwError(state, "expected the node content, but found ','"); + throwError(state, "expected the node content, but found ','") } - keyTag = keyNode = valueNode = null; - isPair = isExplicitPair = false; + keyTag = keyNode = valueNode = null + isPair = isExplicitPair = false if (ch === 0x3F/* ? */) { - following = state.input.charCodeAt(state.position + 1); + const following = state.input.charCodeAt(state.position + 1) - if (is_WS_OR_EOL(following)) { - isPair = isExplicitPair = true; - state.position++; - skipSeparationSpace(state, true, nodeIndent); + if (isWsOrEol(following)) { + isPair = isExplicitPair = true + state.position++ + skipSeparationSpace(state, true, nodeIndent) } } - _line = state.line; // Save the current line. - _lineStart = state.lineStart; - _pos = state.position; - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - keyTag = state.tag; - keyNode = state.result; - skipSeparationSpace(state, true, nodeIndent); + _line = state.line // Save the current line. + _lineStart = state.lineStart + _pos = state.position + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true) + keyTag = state.tag + keyNode = state.result + skipSeparationSpace(state, true, nodeIndent) - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) { - isPair = true; - ch = state.input.charCodeAt(++state.position); - skipSeparationSpace(state, true, nodeIndent); - composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true); - valueNode = state.result; + isPair = true + ch = state.input.charCodeAt(++state.position) + skipSeparationSpace(state, true, nodeIndent) + composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true) + valueNode = state.result } if (isMapping) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos); + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos) } else if (isPair) { - _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)); + _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos)) } else { - _result.push(keyNode); + _result.push(keyNode) } - skipSeparationSpace(state, true, nodeIndent); + skipSeparationSpace(state, true, nodeIndent) - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) if (ch === 0x2C/* , */) { - readNext = true; - ch = state.input.charCodeAt(++state.position); + readNext = true + ch = state.input.charCodeAt(++state.position) } else { - readNext = false; + readNext = false } } - throwError(state, 'unexpected end of the stream within a flow collection'); + throwError(state, 'unexpected end of the stream within a flow collection') } -function readBlockScalar(state, nodeIndent) { - var captureStart, - folding, - chomping = CHOMPING_CLIP, - didReadContent = false, - detectedIndent = false, - textIndent = nodeIndent, - emptyLines = 0, - atMoreIndented = false, - tmp, - ch; +function readBlockScalar (state, nodeIndent) { + let folding + let chomping = CHOMPING_CLIP + let didReadContent = false + let detectedIndent = false + let textIndent = nodeIndent + let emptyLines = 0 + let atMoreIndented = false + let tmp - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position) if (ch === 0x7C/* | */) { - folding = false; + folding = false } else if (ch === 0x3E/* > */) { - folding = true; + folding = true } else { - return false; + return false } - state.kind = 'scalar'; - state.result = ''; + state.kind = 'scalar' + state.result = '' while (ch !== 0) { - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) if (ch === 0x2B/* + */ || ch === 0x2D/* - */) { if (CHOMPING_CLIP === chomping) { - chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP; + chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP } else { - throwError(state, 'repeat of a chomping mode identifier'); + throwError(state, 'repeat of a chomping mode identifier') } - } else if ((tmp = fromDecimalCode(ch)) >= 0) { if (tmp === 0) { - throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one'); + throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one') } else if (!detectedIndent) { - textIndent = nodeIndent + tmp - 1; - detectedIndent = true; + textIndent = nodeIndent + tmp - 1 + detectedIndent = true } else { - throwError(state, 'repeat of an indentation width identifier'); + throwError(state, 'repeat of an indentation width identifier') } - } else { - break; + break } } - if (is_WHITE_SPACE(ch)) { - do { ch = state.input.charCodeAt(++state.position); } - while (is_WHITE_SPACE(ch)); + if (isWhiteSpace(ch)) { + do { ch = state.input.charCodeAt(++state.position) } + while (isWhiteSpace(ch)) if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (!is_EOL(ch) && (ch !== 0)); + do { ch = state.input.charCodeAt(++state.position) } + while (!isEol(ch) && (ch !== 0)) } } while (ch !== 0) { - readLineBreak(state); - state.lineIndent = 0; + readLineBreak(state) + state.lineIndent = 0 - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) + // eslint-disable-next-line no-unmodified-loop-condition while ((!detectedIndent || state.lineIndent < textIndent) && (ch === 0x20/* Space */)) { - state.lineIndent++; - ch = state.input.charCodeAt(++state.position); + state.lineIndent++ + ch = state.input.charCodeAt(++state.position) } if (!detectedIndent && state.lineIndent > textIndent) { - textIndent = state.lineIndent; + textIndent = state.lineIndent } - if (is_EOL(ch)) { - emptyLines++; - continue; + if (isEol(ch)) { + emptyLines++ + continue + } + + if (!detectedIndent && textIndent === 0) { + throwError(state, 'missing indentation for block scalar') } // End of the scalar. if (state.lineIndent < textIndent) { - // Perform the chomping. if (chomping === CHOMPING_KEEP) { - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines) } else if (chomping === CHOMPING_CLIP) { if (didReadContent) { // i.e. only if the scalar is not empty. - state.result += '\n'; + state.result += '\n' } } // Break this `while` cycle and go to the funciton's epilogue. - break; + break } // Folded style: use fancy rules to handle line breaks. if (folding) { - // Lines starting with white space characters (more-indented lines) are not folded. - if (is_WHITE_SPACE(ch)) { - atMoreIndented = true; + if (isWhiteSpace(ch)) { + atMoreIndented = true // except for the first content line (cf. Example 8.1) - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines) // End of more-indented block. } else if (atMoreIndented) { - atMoreIndented = false; - state.result += common.repeat('\n', emptyLines + 1); + atMoreIndented = false + state.result += common.repeat('\n', emptyLines + 1) // Just one line break - perceive as the same line. } else if (emptyLines === 0) { if (didReadContent) { // i.e. only if we have already read some scalar content. - state.result += ' '; + state.result += ' ' } // Several line breaks - perceive as different lines. } else { - state.result += common.repeat('\n', emptyLines); + state.result += common.repeat('\n', emptyLines) } // Literal style: just add exact number of line breaks between content lines. } else { // Keep all line breaks except the header line break. - state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); + state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines) } - didReadContent = true; - detectedIndent = true; - emptyLines = 0; - captureStart = state.position; + didReadContent = true + detectedIndent = true + emptyLines = 0 + const captureStart = state.position - while (!is_EOL(ch) && (ch !== 0)) { - ch = state.input.charCodeAt(++state.position); + while (!isEol(ch) && (ch !== 0)) { + ch = state.input.charCodeAt(++state.position) } - captureSegment(state, captureStart, state.position, false); + captureSegment(state, captureStart, state.position, false) } - return true; + return true } -function readBlockSequence(state, nodeIndent) { - var _line, - _tag = state.tag, - _anchor = state.anchor, - _result = [], - following, - detected = false, - ch; +function readBlockSequence (state, nodeIndent) { + const _tag = state.tag + const _anchor = state.anchor + const _result = [] + let detected = false // there is a leading tab before this token, so it can't be a block sequence/mapping; // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false; + if (state.firstTabInLine !== -1) return false if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + storeAnchor(state, state.anchor, _result) } - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position) while (ch !== 0) { if (state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, 'tab characters must not be used in indentation'); + state.position = state.firstTabInLine + throwError(state, 'tab characters must not be used in indentation') } if (ch !== 0x2D/* - */) { - break; + break } - following = state.input.charCodeAt(state.position + 1); + const following = state.input.charCodeAt(state.position + 1) - if (!is_WS_OR_EOL(following)) { - break; + if (!isWsOrEol(following)) { + break } - detected = true; - state.position++; + detected = true + state.position++ if (skipSeparationSpace(state, true, -1)) { if (state.lineIndent <= nodeIndent) { - _result.push(null); - ch = state.input.charCodeAt(state.position); - continue; + _result.push(null) + ch = state.input.charCodeAt(state.position) + continue } } - _line = state.line; - composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true); - _result.push(state.result); - skipSeparationSpace(state, true, -1); + const _line = state.line + composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true) + _result.push(state.result) + skipSeparationSpace(state, true, -1) - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a sequence entry'); + throwError(state, 'bad indentation of a sequence entry') } else if (state.lineIndent < nodeIndent) { - break; + break } } if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'sequence'; - state.result = _result; - return true; + state.tag = _tag + state.anchor = _anchor + state.kind = 'sequence' + state.result = _result + return true } - return false; + return false } -function readBlockMapping(state, nodeIndent, flowIndent) { - var following, - allowCompact, - _line, - _keyLine, - _keyLineStart, - _keyPos, - _tag = state.tag, - _anchor = state.anchor, - _result = {}, - overridableKeys = Object.create(null), - keyTag = null, - keyNode = null, - valueNode = null, - atExplicitKey = false, - detected = false, - ch; +function readBlockMapping (state, nodeIndent, flowIndent) { + let allowCompact + let _keyLine + let _keyLineStart + let _keyPos + const _tag = state.tag + const _anchor = state.anchor + const _result = {} + const overridableKeys = Object.create(null) + let keyTag = null + let keyNode = null + let valueNode = null + let atExplicitKey = false + let detected = false // there is a leading tab before this token, so it can't be a block sequence/mapping; // it can still be flow sequence/mapping or a scalar - if (state.firstTabInLine !== -1) return false; + if (state.firstTabInLine !== -1) return false if (state.anchor !== null) { - state.anchorMap[state.anchor] = _result; + storeAnchor(state, state.anchor, _result) } - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position) while (ch !== 0) { if (!atExplicitKey && state.firstTabInLine !== -1) { - state.position = state.firstTabInLine; - throwError(state, 'tab characters must not be used in indentation'); + state.position = state.firstTabInLine + throwError(state, 'tab characters must not be used in indentation') } - following = state.input.charCodeAt(state.position + 1); - _line = state.line; // Save the current line. + const following = state.input.charCodeAt(state.position + 1) + const _line = state.line // Save the current line. // // Explicit notation case. There are two separate blocks: // first for the key (denoted by "?") and second for the value (denoted by ":") // - if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) { - + if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && isWsOrEol(following)) { if (ch === 0x3F/* ? */) { if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos) + keyTag = keyNode = valueNode = null } - detected = true; - atExplicitKey = true; - allowCompact = true; - + detected = true + atExplicitKey = true + allowCompact = true } else if (atExplicitKey) { // i.e. 0x3A/* : */ === character after the explicit key. - atExplicitKey = false; - allowCompact = true; - + atExplicitKey = false + allowCompact = true } else { - throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line'); + throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line') } - state.position += 1; - ch = following; + state.position += 1 + ch = following // // Implicit notation case. Flow-style node as the key first, then ":", and the value. // } else { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; + _keyLine = state.line + _keyLineStart = state.lineStart + _keyPos = state.position if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) { // Neither implicit nor explicit notation. // Reading is done. Go to the epilogue. - break; + break } if (state.line === _line) { - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position) } if (ch === 0x3A/* : */) { - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) - if (!is_WS_OR_EOL(ch)) { - throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping'); + if (!isWsOrEol(ch)) { + throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping') } if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos) + keyTag = keyNode = valueNode = null } - detected = true; - atExplicitKey = false; - allowCompact = false; - keyTag = state.tag; - keyNode = state.result; - + detected = true + atExplicitKey = false + allowCompact = false + keyTag = state.tag + keyNode = state.result } else if (detected) { - throwError(state, 'can not read an implicit mapping pair; a colon is missed'); - + throwError(state, 'can not read an implicit mapping pair; a colon is missed') } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. + state.tag = _tag + state.anchor = _anchor + return true // Keep the result of `composeNode`. } - } else if (detected) { - throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key'); - + throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key') } else { - state.tag = _tag; - state.anchor = _anchor; - return true; // Keep the result of `composeNode`. + state.tag = _tag + state.anchor = _anchor + return true // Keep the result of `composeNode`. } } @@ -303112,32 +302949,32 @@ function readBlockMapping(state, nodeIndent, flowIndent) { // if (state.line === _line || state.lineIndent > nodeIndent) { if (atExplicitKey) { - _keyLine = state.line; - _keyLineStart = state.lineStart; - _keyPos = state.position; + _keyLine = state.line + _keyLineStart = state.lineStart + _keyPos = state.position } if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) { if (atExplicitKey) { - keyNode = state.result; + keyNode = state.result } else { - valueNode = state.result; + valueNode = state.result } } if (!atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos); - keyTag = keyNode = valueNode = null; + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos) + keyTag = keyNode = valueNode = null } - skipSeparationSpace(state, true, -1); - ch = state.input.charCodeAt(state.position); + skipSeparationSpace(state, true, -1) + ch = state.input.charCodeAt(state.position) } if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) { - throwError(state, 'bad indentation of a mapping entry'); + throwError(state, 'bad indentation of a mapping entry') } else if (state.lineIndent < nodeIndent) { - break; + break } } @@ -303147,293 +302984,330 @@ function readBlockMapping(state, nodeIndent, flowIndent) { // Special case: last mapping's node contains only the key in explicit notation. if (atExplicitKey) { - storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos); + storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos) } // Expose the resulting mapping. if (detected) { - state.tag = _tag; - state.anchor = _anchor; - state.kind = 'mapping'; - state.result = _result; + state.tag = _tag + state.anchor = _anchor + state.kind = 'mapping' + state.result = _result } - return detected; + return detected } -function readTagProperty(state) { - var _position, - isVerbatim = false, - isNamed = false, - tagHandle, - tagName, - ch; +function readTagProperty (state) { + let isVerbatim = false + let isNamed = false + let tagHandle + let tagName - ch = state.input.charCodeAt(state.position); + let ch = state.input.charCodeAt(state.position) - if (ch !== 0x21/* ! */) return false; + if (ch !== 0x21/* ! */) return false if (state.tag !== null) { - throwError(state, 'duplication of a tag property'); + throwError(state, 'duplication of a tag property') } - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) if (ch === 0x3C/* < */) { - isVerbatim = true; - ch = state.input.charCodeAt(++state.position); - + isVerbatim = true + ch = state.input.charCodeAt(++state.position) } else if (ch === 0x21/* ! */) { - isNamed = true; - tagHandle = '!!'; - ch = state.input.charCodeAt(++state.position); - + isNamed = true + tagHandle = '!!' + ch = state.input.charCodeAt(++state.position) } else { - tagHandle = '!'; + tagHandle = '!' } - _position = state.position; + let _position = state.position if (isVerbatim) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && ch !== 0x3E/* > */); + do { ch = state.input.charCodeAt(++state.position) } + while (ch !== 0 && ch !== 0x3E/* > */) if (state.position < state.length) { - tagName = state.input.slice(_position, state.position); - ch = state.input.charCodeAt(++state.position); + tagName = state.input.slice(_position, state.position) + ch = state.input.charCodeAt(++state.position) } else { - throwError(state, 'unexpected end of the stream within a verbatim tag'); + throwError(state, 'unexpected end of the stream within a verbatim tag') } } else { - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - + while (ch !== 0 && !isWsOrEol(ch)) { if (ch === 0x21/* ! */) { if (!isNamed) { - tagHandle = state.input.slice(_position - 1, state.position + 1); + tagHandle = state.input.slice(_position - 1, state.position + 1) if (!PATTERN_TAG_HANDLE.test(tagHandle)) { - throwError(state, 'named tag handle cannot contain such characters'); + throwError(state, 'named tag handle cannot contain such characters') } - isNamed = true; - _position = state.position + 1; + isNamed = true + _position = state.position + 1 } else { - throwError(state, 'tag suffix cannot contain exclamation marks'); + throwError(state, 'tag suffix cannot contain exclamation marks') } } - ch = state.input.charCodeAt(++state.position); + ch = state.input.charCodeAt(++state.position) } - tagName = state.input.slice(_position, state.position); + tagName = state.input.slice(_position, state.position) if (PATTERN_FLOW_INDICATORS.test(tagName)) { - throwError(state, 'tag suffix cannot contain flow indicator characters'); + throwError(state, 'tag suffix cannot contain flow indicator characters') } } if (tagName && !PATTERN_TAG_URI.test(tagName)) { - throwError(state, 'tag name cannot contain such characters: ' + tagName); + throwError(state, 'tag name cannot contain such characters: ' + tagName) } try { - tagName = decodeURIComponent(tagName); + tagName = decodeURIComponent(tagName) } catch (err) { - throwError(state, 'tag name is malformed: ' + tagName); + throwError(state, 'tag name is malformed: ' + tagName) } if (isVerbatim) { - state.tag = tagName; - + state.tag = tagName } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) { - state.tag = state.tagMap[tagHandle] + tagName; - + state.tag = state.tagMap[tagHandle] + tagName } else if (tagHandle === '!') { - state.tag = '!' + tagName; - + state.tag = '!' + tagName } else if (tagHandle === '!!') { - state.tag = 'tag:yaml.org,2002:' + tagName; - + state.tag = 'tag:yaml.org,2002:' + tagName } else { - throwError(state, 'undeclared tag handle "' + tagHandle + '"'); + throwError(state, 'undeclared tag handle "' + tagHandle + '"') } - return true; + return true } -function readAnchorProperty(state) { - var _position, - ch; +function readAnchorProperty (state) { + let ch = state.input.charCodeAt(state.position) - ch = state.input.charCodeAt(state.position); - - if (ch !== 0x26/* & */) return false; + if (ch !== 0x26/* & */) return false if (state.anchor !== null) { - throwError(state, 'duplication of an anchor property'); + throwError(state, 'duplication of an anchor property') } - ch = state.input.charCodeAt(++state.position); - _position = state.position; + ch = state.input.charCodeAt(++state.position) + const _position = state.position - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { + ch = state.input.charCodeAt(++state.position) } if (state.position === _position) { - throwError(state, 'name of an anchor node must contain at least one character'); + throwError(state, 'name of an anchor node must contain at least one character') } - state.anchor = state.input.slice(_position, state.position); - return true; + state.anchor = state.input.slice(_position, state.position) + return true } -function readAlias(state) { - var _position, alias, - ch; +function readAlias (state) { + let ch = state.input.charCodeAt(state.position) - ch = state.input.charCodeAt(state.position); + if (ch !== 0x2A/* * */) return false - if (ch !== 0x2A/* * */) return false; + ch = state.input.charCodeAt(++state.position) + const _position = state.position - ch = state.input.charCodeAt(++state.position); - _position = state.position; - - while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) { - ch = state.input.charCodeAt(++state.position); + while (ch !== 0 && !isWsOrEol(ch) && !isFlowIndicator(ch)) { + ch = state.input.charCodeAt(++state.position) } if (state.position === _position) { - throwError(state, 'name of an alias node must contain at least one character'); + throwError(state, 'name of an alias node must contain at least one character') } - alias = state.input.slice(_position, state.position); + const alias = state.input.slice(_position, state.position) if (!_hasOwnProperty.call(state.anchorMap, alias)) { - throwError(state, 'unidentified alias "' + alias + '"'); + throwError(state, 'unidentified alias "' + alias + '"') } - state.result = state.anchorMap[alias]; - skipSeparationSpace(state, true, -1); - return true; + state.result = state.anchorMap[alias] + skipSeparationSpace(state, true, -1) + return true } -function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) { - var allowBlockStyles, - allowBlockScalars, - allowBlockCollections, - indentStatus = 1, // 1: this>parent, 0: this=parent, -1: thisparent, 0: this=parent, -1: this= state.maxDepth) { + throwError(state, 'nesting exceeded maxDepth (' + state.maxDepth + ')') + } + + state.depth += 1 if (state.listener !== null) { - state.listener('open', state); + state.listener('open', state) } - state.tag = null; - state.anchor = null; - state.kind = null; - state.result = null; + state.tag = null + state.anchor = null + state.kind = null + state.result = null - allowBlockStyles = allowBlockScalars = allowBlockCollections = + const allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || - CONTEXT_BLOCK_IN === nodeContext; + CONTEXT_BLOCK_IN === nodeContext if (allowToSeek) { if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; + atNewLine = true if (state.lineIndent > parentIndent) { - indentStatus = 1; + indentStatus = 1 } else if (state.lineIndent === parentIndent) { - indentStatus = 0; + indentStatus = 0 } else if (state.lineIndent < parentIndent) { - indentStatus = -1; + indentStatus = -1 } } } if (indentStatus === 1) { - while (readTagProperty(state) || readAnchorProperty(state)) { + while (true) { + const ch = state.input.charCodeAt(state.position) + const propertyState = snapshotState(state) + + // A duplicate property token after a line break can be the first key of + // a nested block mapping, e.g. `!!map\n !!str key: value`. + if (atNewLine && + ((ch === 0x21/* ! */ && state.tag !== null) || + (ch === 0x26/* & */ && state.anchor !== null))) { + break + } + + if (!readTagProperty(state) && !readAnchorProperty(state)) { + break + } + + if (propertyStart === null) { + propertyStart = propertyState + } + if (skipSeparationSpace(state, true, -1)) { - atNewLine = true; - allowBlockCollections = allowBlockStyles; + atNewLine = true + allowBlockCollections = allowBlockStyles if (state.lineIndent > parentIndent) { - indentStatus = 1; + indentStatus = 1 } else if (state.lineIndent === parentIndent) { - indentStatus = 0; + indentStatus = 0 } else if (state.lineIndent < parentIndent) { - indentStatus = -1; + indentStatus = -1 } } else { - allowBlockCollections = false; + allowBlockCollections = false } } } if (allowBlockCollections) { - allowBlockCollections = atNewLine || allowCompact; + allowBlockCollections = atNewLine || allowCompact } if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) { if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) { - flowIndent = parentIndent; + flowIndent = parentIndent } else { - flowIndent = parentIndent + 1; + flowIndent = parentIndent + 1 } - blockIndent = state.position - state.lineStart; + blockIndent = state.position - state.lineStart if (indentStatus === 1) { - if (allowBlockCollections && - (readBlockSequence(state, blockIndent) || - readBlockMapping(state, blockIndent, flowIndent)) || + if ((allowBlockCollections && + (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent))) || readFlowCollection(state, flowIndent)) { - hasContent = true; + hasContent = true } else { - if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || + const ch = state.input.charCodeAt(state.position) + + if (propertyStart !== null && allowBlockStyles && !allowBlockCollections && + ch !== 0x7C/* | */ && ch !== 0x3E/* > */ && + tryReadBlockMappingFromProperty( + state, + propertyStart, + propertyStart.position - propertyStart.lineStart, + flowIndent + )) { + hasContent = true + } else if ((allowBlockScalars && readBlockScalar(state, flowIndent)) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) { - hasContent = true; - + hasContent = true } else if (readAlias(state)) { - hasContent = true; + hasContent = true if (state.tag !== null || state.anchor !== null) { - throwError(state, 'alias node should not have any properties'); + throwError(state, 'alias node should not have any properties') } - } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) { - hasContent = true; + hasContent = true if (state.tag === null) { - state.tag = '?'; + state.tag = '?' } } if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + storeAnchor(state, state.anchor, state.result) } } } else if (indentStatus === 0) { // Special case: block sequences are allowed to have same indentation level as the parent. // http://www.yaml.org/spec/1.2/spec.html#id2799784 - hasContent = allowBlockCollections && readBlockSequence(state, blockIndent); + hasContent = allowBlockCollections && readBlockSequence(state, blockIndent) } } if (state.tag === null) { if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + storeAnchor(state, state.anchor, state.result) } - } else if (state.tag === '?') { // Implicit resolving is not allowed for non-scalar types, and '?' // non-specific tag is only automatically assigned to plain scalars. @@ -303442,245 +303316,234 @@ function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact // tag, for example like this: "! [0]" // if (state.result !== null && state.kind !== 'scalar') { - throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"'); + throwError(state, 'unacceptable node kind for ! tag; it should be "scalar", not "' + state.kind + '"') } - for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { - type = state.implicitTypes[typeIndex]; + for (let typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) { + type = state.implicitTypes[typeIndex] if (type.resolve(state.result)) { // `state.result` updated in resolver if matched - state.result = type.construct(state.result); - state.tag = type.tag; + state.result = type.construct(state.result) + state.tag = type.tag if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + storeAnchor(state, state.anchor, state.result) } - break; + break } } } else if (state.tag !== '!') { if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) { - type = state.typeMap[state.kind || 'fallback'][state.tag]; + type = state.typeMap[state.kind || 'fallback'][state.tag] } else { // looking for multi type - type = null; - typeList = state.typeMap.multi[state.kind || 'fallback']; + type = null + const typeList = state.typeMap.multi[state.kind || 'fallback'] - for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { + for (let typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) { if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) { - type = typeList[typeIndex]; - break; + type = typeList[typeIndex] + break } } } if (!type) { - throwError(state, 'unknown tag !<' + state.tag + '>'); + throwError(state, 'unknown tag !<' + state.tag + '>') } if (state.result !== null && type.kind !== state.kind) { - throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"'); + throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"') } if (!type.resolve(state.result, state.tag)) { // `state.result` updated in resolver if matched - throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag'); + throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag') } else { - state.result = type.construct(state.result, state.tag); + state.result = type.construct(state.result, state.tag) if (state.anchor !== null) { - state.anchorMap[state.anchor] = state.result; + storeAnchor(state, state.anchor, state.result) } } } if (state.listener !== null) { - state.listener('close', state); + state.listener('close', state) } - return state.tag !== null || state.anchor !== null || hasContent; + + state.depth -= 1 + return state.tag !== null || state.anchor !== null || hasContent } -function readDocument(state) { - var documentStart = state.position, - _position, - directiveName, - directiveArgs, - hasDirectives = false, - ch; +function readDocument (state) { + const documentStart = state.position + let hasDirectives = false + let ch - state.version = null; - state.checkLineBreaks = state.legacy; - state.tagMap = Object.create(null); - state.anchorMap = Object.create(null); + state.version = null + state.checkLineBreaks = state.legacy + state.tagMap = Object.create(null) + state.anchorMap = Object.create(null) while ((ch = state.input.charCodeAt(state.position)) !== 0) { - skipSeparationSpace(state, true, -1); + skipSeparationSpace(state, true, -1) - ch = state.input.charCodeAt(state.position); + ch = state.input.charCodeAt(state.position) if (state.lineIndent > 0 || ch !== 0x25/* % */) { - break; + break } - hasDirectives = true; - ch = state.input.charCodeAt(++state.position); - _position = state.position; + hasDirectives = true + ch = state.input.charCodeAt(++state.position) + let _position = state.position - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); + while (ch !== 0 && !isWsOrEol(ch)) { + ch = state.input.charCodeAt(++state.position) } - directiveName = state.input.slice(_position, state.position); - directiveArgs = []; + const directiveName = state.input.slice(_position, state.position) + const directiveArgs = [] if (directiveName.length < 1) { - throwError(state, 'directive name must not be less than one character in length'); + throwError(state, 'directive name must not be less than one character in length') } while (ch !== 0) { - while (is_WHITE_SPACE(ch)) { - ch = state.input.charCodeAt(++state.position); + while (isWhiteSpace(ch)) { + ch = state.input.charCodeAt(++state.position) } if (ch === 0x23/* # */) { - do { ch = state.input.charCodeAt(++state.position); } - while (ch !== 0 && !is_EOL(ch)); - break; + do { ch = state.input.charCodeAt(++state.position) } + while (ch !== 0 && !isEol(ch)) + break } - if (is_EOL(ch)) break; + if (isEol(ch)) break - _position = state.position; + _position = state.position - while (ch !== 0 && !is_WS_OR_EOL(ch)) { - ch = state.input.charCodeAt(++state.position); + while (ch !== 0 && !isWsOrEol(ch)) { + ch = state.input.charCodeAt(++state.position) } - directiveArgs.push(state.input.slice(_position, state.position)); + directiveArgs.push(state.input.slice(_position, state.position)) } - if (ch !== 0) readLineBreak(state); + if (ch !== 0) readLineBreak(state) if (_hasOwnProperty.call(directiveHandlers, directiveName)) { - directiveHandlers[directiveName](state, directiveName, directiveArgs); + directiveHandlers[directiveName](state, directiveName, directiveArgs) } else { - throwWarning(state, 'unknown document directive "' + directiveName + '"'); + throwWarning(state, 'unknown document directive "' + directiveName + '"') } } - skipSeparationSpace(state, true, -1); + skipSeparationSpace(state, true, -1) if (state.lineIndent === 0 && - state.input.charCodeAt(state.position) === 0x2D/* - */ && + state.input.charCodeAt(state.position) === 0x2D/* - */ && state.input.charCodeAt(state.position + 1) === 0x2D/* - */ && state.input.charCodeAt(state.position + 2) === 0x2D/* - */) { - state.position += 3; - skipSeparationSpace(state, true, -1); - + state.position += 3 + skipSeparationSpace(state, true, -1) } else if (hasDirectives) { - throwError(state, 'directives end mark is expected'); + throwError(state, 'directives end mark is expected') } - composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true); - skipSeparationSpace(state, true, -1); + composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true) + skipSeparationSpace(state, true, -1) if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) { - throwWarning(state, 'non-ASCII line breaks are interpreted as content'); + throwWarning(state, 'non-ASCII line breaks are interpreted as content') } - state.documents.push(state.result); + state.documents.push(state.result) if (state.position === state.lineStart && testDocumentSeparator(state)) { - if (state.input.charCodeAt(state.position) === 0x2E/* . */) { - state.position += 3; - skipSeparationSpace(state, true, -1); + state.position += 3 + skipSeparationSpace(state, true, -1) } - return; + return } if (state.position < (state.length - 1)) { - throwError(state, 'end of the stream or a document separator is expected'); - } else { - return; + throwError(state, 'end of the stream or a document separator is expected') } } - -function loadDocuments(input, options) { - input = String(input); - options = options || {}; +function loadDocuments (input, options) { + input = String(input) + options = options || {} if (input.length !== 0) { - // Add tailing `\n` if not exists if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ && input.charCodeAt(input.length - 1) !== 0x0D/* CR */) { - input += '\n'; + input += '\n' } // Strip BOM if (input.charCodeAt(0) === 0xFEFF) { - input = input.slice(1); + input = input.slice(1) } } - var state = new State(input, options); + const state = new State(input, options) - var nullpos = input.indexOf('\0'); + const nullpos = input.indexOf('\0') if (nullpos !== -1) { - state.position = nullpos; - throwError(state, 'null byte is not allowed in input'); + state.position = nullpos + throwError(state, 'null byte is not allowed in input') } // Use 0 as string terminator. That significantly simplifies bounds check. - state.input += '\0'; + state.input += '\0' while (state.input.charCodeAt(state.position) === 0x20/* Space */) { - state.lineIndent += 1; - state.position += 1; + state.lineIndent += 1 + state.position += 1 } while (state.position < (state.length - 1)) { - readDocument(state); + readDocument(state) } - return state.documents; + return state.documents } - -function loadAll(input, iterator, options) { +function loadAll (input, iterator, options) { if (iterator !== null && typeof iterator === 'object' && typeof options === 'undefined') { - options = iterator; - iterator = null; + options = iterator + iterator = null } - var documents = loadDocuments(input, options); + const documents = loadDocuments(input, options) if (typeof iterator !== 'function') { - return documents; + return documents } - for (var index = 0, length = documents.length; index < length; index += 1) { - iterator(documents[index]); + for (let index = 0, length = documents.length; index < length; index += 1) { + iterator(documents[index]) } } - -function load(input, options) { - var documents = loadDocuments(input, options); +function load (input, options) { + const documents = loadDocuments(input, options) if (documents.length === 0) { - /*eslint-disable no-undefined*/ - return undefined; + return undefined } else if (documents.length === 1) { - return documents[0]; + return documents[0] } - throw new YAMLException('expected a single document in the stream, but found more'); + throw new YAMLException('expected a single document in the stream, but found more') } - -module.exports.loadAll = loadAll; -module.exports.load = load; +module.exports.loadAll = loadAll +module.exports.load = load /***/ }), @@ -303691,125 +303554,113 @@ module.exports.load = load; "use strict"; -/*eslint-disable max-len*/ - -var YAMLException = __nccwpck_require__(68179); -var Type = __nccwpck_require__(6073); - +const YAMLException = __nccwpck_require__(68179) +const Type = __nccwpck_require__(6073) -function compileList(schema, name) { - var result = []; +function compileList (schema, name) { + const result = [] schema[name].forEach(function (currentType) { - var newIndex = result.length; + let newIndex = result.length result.forEach(function (previousType, previousIndex) { if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) { - - newIndex = previousIndex; + newIndex = previousIndex } - }); + }) - result[newIndex] = currentType; - }); + result[newIndex] = currentType + }) - return result; + return result } - -function compileMap(/* lists... */) { - var result = { - scalar: {}, - sequence: {}, - mapping: {}, - fallback: {}, - multi: { - scalar: [], - sequence: [], - mapping: [], - fallback: [] - } - }, index, length; - - function collectType(type) { +function compileMap (/* lists... */) { + const result = { + scalar: {}, + sequence: {}, + mapping: {}, + fallback: {}, + multi: { + scalar: [], + sequence: [], + mapping: [], + fallback: [] + } + } + function collectType (type) { if (type.multi) { - result.multi[type.kind].push(type); - result.multi['fallback'].push(type); + result.multi[type.kind].push(type) + result.multi['fallback'].push(type) } else { - result[type.kind][type.tag] = result['fallback'][type.tag] = type; + result[type.kind][type.tag] = result['fallback'][type.tag] = type } } - for (index = 0, length = arguments.length; index < length; index += 1) { - arguments[index].forEach(collectType); + for (let index = 0, length = arguments.length; index < length; index += 1) { + arguments[index].forEach(collectType) } - return result; + return result } - -function Schema(definition) { - return this.extend(definition); +function Schema (definition) { + return this.extend(definition) } - -Schema.prototype.extend = function extend(definition) { - var implicit = []; - var explicit = []; +Schema.prototype.extend = function extend (definition) { + let implicit = [] + let explicit = [] if (definition instanceof Type) { // Schema.extend(type) - explicit.push(definition); - + explicit.push(definition) } else if (Array.isArray(definition)) { // Schema.extend([ type1, type2, ... ]) - explicit = explicit.concat(definition); - + explicit = explicit.concat(definition) } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) { // Schema.extend({ explicit: [ type1, type2, ... ], implicit: [ type1, type2, ... ] }) - if (definition.implicit) implicit = implicit.concat(definition.implicit); - if (definition.explicit) explicit = explicit.concat(definition.explicit); - + if (definition.implicit) implicit = implicit.concat(definition.implicit) + if (definition.explicit) explicit = explicit.concat(definition.explicit) } else { throw new YAMLException('Schema.extend argument should be a Type, [ Type ], ' + - 'or a schema definition ({ implicit: [...], explicit: [...] })'); + 'or a schema definition ({ implicit: [...], explicit: [...] })') } implicit.forEach(function (type) { if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.') } if (type.loadKind && type.loadKind !== 'scalar') { - throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.'); + throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.') } if (type.multi) { - throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.'); + throw new YAMLException('There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.') } - }); + }) explicit.forEach(function (type) { if (!(type instanceof Type)) { - throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.'); + throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.') } - }); + }) - var result = Object.create(Schema.prototype); + const result = Object.create(Schema.prototype) - result.implicit = (this.implicit || []).concat(implicit); - result.explicit = (this.explicit || []).concat(explicit); + result.implicit = (this.implicit || []).concat(implicit) + result.explicit = (this.explicit || []).concat(explicit) - result.compiledImplicit = compileList(result, 'implicit'); - result.compiledExplicit = compileList(result, 'explicit'); - result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit); - - return result; -}; + result.compiledImplicit = compileList(result, 'implicit') + result.compiledExplicit = compileList(result, 'explicit') + result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit) + return result +} -module.exports = Schema; +module.exports = Schema /***/ }), @@ -303826,9 +303677,7 @@ module.exports = Schema; - - -module.exports = __nccwpck_require__(1035); +module.exports = __nccwpck_require__(1035) /***/ }), @@ -303845,8 +303694,6 @@ module.exports = __nccwpck_require__(1035); - - module.exports = (__nccwpck_require__(12011).extend)({ implicit: [ __nccwpck_require__(99212), @@ -303858,7 +303705,7 @@ module.exports = (__nccwpck_require__(12011).extend)({ __nccwpck_require__(96860), __nccwpck_require__(79548) ] -}); +}) /***/ }), @@ -303872,10 +303719,7 @@ module.exports = (__nccwpck_require__(12011).extend)({ - - -var Schema = __nccwpck_require__(21082); - +const Schema = __nccwpck_require__(21082) module.exports = new Schema({ explicit: [ @@ -303883,7 +303727,7 @@ module.exports = new Schema({ __nccwpck_require__(67283), __nccwpck_require__(86150) ] -}); +}) /***/ }), @@ -303901,8 +303745,6 @@ module.exports = new Schema({ - - module.exports = (__nccwpck_require__(28562).extend)({ implicit: [ __nccwpck_require__(20721), @@ -303910,7 +303752,7 @@ module.exports = (__nccwpck_require__(28562).extend)({ __nccwpck_require__(11615), __nccwpck_require__(42705) ] -}); +}) /***/ }), @@ -303921,105 +303763,100 @@ module.exports = (__nccwpck_require__(28562).extend)({ "use strict"; - -var common = __nccwpck_require__(26829); - +const common = __nccwpck_require__(26829) // get snippet for a single line, respecting maxLength -function getLine(buffer, lineStart, lineEnd, position, maxLineLength) { - var head = ''; - var tail = ''; - var maxHalfLength = Math.floor(maxLineLength / 2) - 1; +function getLine (buffer, lineStart, lineEnd, position, maxLineLength) { + let head = '' + let tail = '' + const maxHalfLength = Math.floor(maxLineLength / 2) - 1 if (position - lineStart > maxHalfLength) { - head = ' ... '; - lineStart = position - maxHalfLength + head.length; + head = ' ... ' + lineStart = position - maxHalfLength + head.length } if (lineEnd - position > maxHalfLength) { - tail = ' ...'; - lineEnd = position + maxHalfLength - tail.length; + tail = ' ...' + lineEnd = position + maxHalfLength - tail.length } return { str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, '→') + tail, pos: position - lineStart + head.length // relative position - }; + } } - -function padStart(string, max) { - return common.repeat(' ', max - string.length) + string; +function padStart (string, max) { + return common.repeat(' ', max - string.length) + string } +function makeSnippet (mark, options) { + options = Object.create(options || null) -function makeSnippet(mark, options) { - options = Object.create(options || null); - - if (!mark.buffer) return null; + if (!mark.buffer) return null - if (!options.maxLength) options.maxLength = 79; - if (typeof options.indent !== 'number') options.indent = 1; - if (typeof options.linesBefore !== 'number') options.linesBefore = 3; - if (typeof options.linesAfter !== 'number') options.linesAfter = 2; + if (!options.maxLength) options.maxLength = 79 + if (typeof options.indent !== 'number') options.indent = 1 + if (typeof options.linesBefore !== 'number') options.linesBefore = 3 + if (typeof options.linesAfter !== 'number') options.linesAfter = 2 - var re = /\r?\n|\r|\0/g; - var lineStarts = [ 0 ]; - var lineEnds = []; - var match; - var foundLineNo = -1; + const re = /\r?\n|\r|\0/g + const lineStarts = [0] + const lineEnds = [] + let match + let foundLineNo = -1 while ((match = re.exec(mark.buffer))) { - lineEnds.push(match.index); - lineStarts.push(match.index + match[0].length); + lineEnds.push(match.index) + lineStarts.push(match.index + match[0].length) if (mark.position <= match.index && foundLineNo < 0) { - foundLineNo = lineStarts.length - 2; + foundLineNo = lineStarts.length - 2 } } - if (foundLineNo < 0) foundLineNo = lineStarts.length - 1; + if (foundLineNo < 0) foundLineNo = lineStarts.length - 1 - var result = '', i, line; - var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length; - var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3); + let result = '' + const lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length + const maxLineLength = options.maxLength - (options.indent + lineNoLength + 3) - for (i = 1; i <= options.linesBefore; i++) { - if (foundLineNo - i < 0) break; - line = getLine( + for (let i = 1; i <= options.linesBefore; i++) { + if (foundLineNo - i < 0) break + const line = getLine( mark.buffer, lineStarts[foundLineNo - i], lineEnds[foundLineNo - i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]), maxLineLength - ); + ) result = common.repeat(' ', options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n' + result; + ' | ' + line.str + '\n' + result } - line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength); + const line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength) result += common.repeat(' ', options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n'; - result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n'; + ' | ' + line.str + '\n' + result += common.repeat('-', options.indent + lineNoLength + 3 + line.pos) + '^' + '\n' - for (i = 1; i <= options.linesAfter; i++) { - if (foundLineNo + i >= lineEnds.length) break; - line = getLine( + for (let i = 1; i <= options.linesAfter; i++) { + if (foundLineNo + i >= lineEnds.length) break + const line = getLine( mark.buffer, lineStarts[foundLineNo + i], lineEnds[foundLineNo + i], mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]), maxLineLength - ); + ) result += common.repeat(' ', options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + - ' | ' + line.str + '\n'; + ' | ' + line.str + '\n' } - return result.replace(/\n$/, ''); + return result.replace(/\n$/, '') } - -module.exports = makeSnippet; +module.exports = makeSnippet /***/ }), @@ -304030,9 +303867,9 @@ module.exports = makeSnippet; "use strict"; -var YAMLException = __nccwpck_require__(68179); +const YAMLException = __nccwpck_require__(68179) -var TYPE_CONSTRUCTOR_OPTIONS = [ +const TYPE_CONSTRUCTOR_OPTIONS = [ 'kind', 'multi', 'resolve', @@ -304043,57 +303880,57 @@ var TYPE_CONSTRUCTOR_OPTIONS = [ 'representName', 'defaultStyle', 'styleAliases' -]; +] -var YAML_NODE_KINDS = [ +const YAML_NODE_KINDS = [ 'scalar', 'sequence', 'mapping' -]; +] -function compileStyleAliases(map) { - var result = {}; +function compileStyleAliases (map) { + const result = {} if (map !== null) { Object.keys(map).forEach(function (style) { map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); + result[String(alias)] = style + }) + }) } - return result; + return result } -function Type(tag, options) { - options = options || {}; +function Type (tag, options) { + options = options || {} Object.keys(options).forEach(function (name) { if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); + throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.') } - }); + }) // TODO: Add tag format check. - this.options = options; // keep original options in case user wants to extend this type later - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.representName = options['representName'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.multi = options['multi'] || false; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); + this.options = options // keep original options in case user wants to extend this type later + this.tag = tag + this.kind = options['kind'] || null + this.resolve = options['resolve'] || function () { return true } + this.construct = options['construct'] || function (data) { return data } + this.instanceOf = options['instanceOf'] || null + this.predicate = options['predicate'] || null + this.represent = options['represent'] || null + this.representName = options['representName'] || null + this.defaultStyle = options['defaultStyle'] || null + this.multi = options['multi'] || false + this.styleAliases = compileStyleAliases(options['styleAliases'] || null) if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); + throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.') } } -module.exports = Type; +module.exports = Type /***/ }), @@ -304104,120 +303941,117 @@ module.exports = Type; "use strict"; -/*eslint-disable no-bitwise*/ - - -var Type = __nccwpck_require__(6073); - +const Type = __nccwpck_require__(6073) // [ 64, 65, 66 ] -> [ padding, CR, LF ] -var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r'; - +const BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r' -function resolveYamlBinary(data) { - if (data === null) return false; +function resolveYamlBinary (data) { + if (data === null) return false - var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP; + let bitlen = 0 + const max = data.length + const map = BASE64_MAP // Convert one by one. - for (idx = 0; idx < max; idx++) { - code = map.indexOf(data.charAt(idx)); + for (let idx = 0; idx < max; idx++) { + const code = map.indexOf(data.charAt(idx)) // Skip CR/LF - if (code > 64) continue; + if (code > 64) continue // Fail on illegal characters - if (code < 0) return false; + if (code < 0) return false - bitlen += 6; + bitlen += 6 } // If there are any bits left, source was corrupted - return (bitlen % 8) === 0; + return (bitlen % 8) === 0 } -function constructYamlBinary(data) { - var idx, tailbits, - input = data.replace(/[\r\n=]/g, ''), // remove CR/LF & padding to simplify scan - max = input.length, - map = BASE64_MAP, - bits = 0, - result = []; +function constructYamlBinary (data) { + const input = data.replace(/[\r\n=]/g, '') // remove CR/LF & padding to simplify scan + const max = input.length + const map = BASE64_MAP + let bits = 0 + const result = [] // Collect by 6*4 bits (3 bytes) - for (idx = 0; idx < max; idx++) { + for (let idx = 0; idx < max; idx++) { if ((idx % 4 === 0) && idx) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); + result.push((bits >> 16) & 0xFF) + result.push((bits >> 8) & 0xFF) + result.push(bits & 0xFF) } - bits = (bits << 6) | map.indexOf(input.charAt(idx)); + bits = (bits << 6) | map.indexOf(input.charAt(idx)) } // Dump tail - tailbits = (max % 4) * 6; + const tailbits = (max % 4) * 6 if (tailbits === 0) { - result.push((bits >> 16) & 0xFF); - result.push((bits >> 8) & 0xFF); - result.push(bits & 0xFF); + result.push((bits >> 16) & 0xFF) + result.push((bits >> 8) & 0xFF) + result.push(bits & 0xFF) } else if (tailbits === 18) { - result.push((bits >> 10) & 0xFF); - result.push((bits >> 2) & 0xFF); + result.push((bits >> 10) & 0xFF) + result.push((bits >> 2) & 0xFF) } else if (tailbits === 12) { - result.push((bits >> 4) & 0xFF); + result.push((bits >> 4) & 0xFF) } - return new Uint8Array(result); + return new Uint8Array(result) } -function representYamlBinary(object /*, style*/) { - var result = '', bits = 0, idx, tail, - max = object.length, - map = BASE64_MAP; +function representYamlBinary (object /*, style */) { + let result = '' + let bits = 0 + const max = object.length + const map = BASE64_MAP // Convert every three bytes to 4 ASCII characters. - for (idx = 0; idx < max; idx++) { + for (let idx = 0; idx < max; idx++) { if ((idx % 3 === 0) && idx) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; + result += map[(bits >> 18) & 0x3F] + result += map[(bits >> 12) & 0x3F] + result += map[(bits >> 6) & 0x3F] + result += map[bits & 0x3F] } - bits = (bits << 8) + object[idx]; + bits = (bits << 8) + object[idx] } // Dump tail - tail = max % 3; + const tail = max % 3 if (tail === 0) { - result += map[(bits >> 18) & 0x3F]; - result += map[(bits >> 12) & 0x3F]; - result += map[(bits >> 6) & 0x3F]; - result += map[bits & 0x3F]; + result += map[(bits >> 18) & 0x3F] + result += map[(bits >> 12) & 0x3F] + result += map[(bits >> 6) & 0x3F] + result += map[bits & 0x3F] } else if (tail === 2) { - result += map[(bits >> 10) & 0x3F]; - result += map[(bits >> 4) & 0x3F]; - result += map[(bits << 2) & 0x3F]; - result += map[64]; + result += map[(bits >> 10) & 0x3F] + result += map[(bits >> 4) & 0x3F] + result += map[(bits << 2) & 0x3F] + result += map[64] } else if (tail === 1) { - result += map[(bits >> 2) & 0x3F]; - result += map[(bits << 4) & 0x3F]; - result += map[64]; - result += map[64]; + result += map[(bits >> 2) & 0x3F] + result += map[(bits << 4) & 0x3F] + result += map[64] + result += map[64] } - return result; + return result } -function isBinary(obj) { - return Object.prototype.toString.call(obj) === '[object Uint8Array]'; +function isBinary (obj) { + return Object.prototype.toString.call(obj) === '[object Uint8Array]' } module.exports = new Type('tag:yaml.org,2002:binary', { @@ -304226,7 +304060,7 @@ module.exports = new Type('tag:yaml.org,2002:binary', { construct: constructYamlBinary, predicate: isBinary, represent: representYamlBinary -}); +}) /***/ }), @@ -304237,25 +304071,25 @@ module.exports = new Type('tag:yaml.org,2002:binary', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -function resolveYamlBoolean(data) { - if (data === null) return false; +function resolveYamlBoolean (data) { + if (data === null) return false - var max = data.length; + const max = data.length return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) || - (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')); + (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE')) } -function constructYamlBoolean(data) { +function constructYamlBoolean (data) { return data === 'true' || data === 'True' || - data === 'TRUE'; + data === 'TRUE' } -function isBoolean(object) { - return Object.prototype.toString.call(object) === '[object Boolean]'; +function isBoolean (object) { + return Object.prototype.toString.call(object) === '[object Boolean]' } module.exports = new Type('tag:yaml.org,2002:bool', { @@ -304264,12 +304098,12 @@ module.exports = new Type('tag:yaml.org,2002:bool', { construct: constructYamlBoolean, predicate: isBoolean, represent: { - lowercase: function (object) { return object ? 'true' : 'false'; }, - uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; }, - camelcase: function (object) { return object ? 'True' : 'False'; } + lowercase: function (object) { return object ? 'true' : 'false' }, + uppercase: function (object) { return object ? 'TRUE' : 'FALSE' }, + camelcase: function (object) { return object ? 'True' : 'False' } }, defaultStyle: 'lowercase' -}); +}) /***/ }), @@ -304280,91 +304114,93 @@ module.exports = new Type('tag:yaml.org,2002:bool', { "use strict"; -var common = __nccwpck_require__(26829); -var Type = __nccwpck_require__(6073); +const common = __nccwpck_require__(26829) +const Type = __nccwpck_require__(6073) -var YAML_FLOAT_PATTERN = new RegExp( +const YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers - '^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + + '^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?' + // .2e4, .2 // special case, seems not from spec - '|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + + '|\\.[0-9]+(?:[eE][-+]?[0-9]+)?' + // .inf '|[-+]?\\.(?:inf|Inf|INF)' + // .nan - '|\\.(?:nan|NaN|NAN))$'); + '|\\.(?:nan|NaN|NAN))$') -function resolveYamlFloat(data) { - if (data === null) return false; +const YAML_FLOAT_SPECIAL_PATTERN = new RegExp( + '^(?:' + + // .inf + '[-+]?\\.(?:inf|Inf|INF)' + + // .nan + '|\\.(?:nan|NaN|NAN))$') - if (!YAML_FLOAT_PATTERN.test(data) || - // Quick hack to not allow integers end with `_` - // Probably should update regexp & check speed - data[data.length - 1] === '_') { - return false; +function resolveYamlFloat (data) { + if (data === null) return false + + if (!YAML_FLOAT_PATTERN.test(data)) { + return false } - return true; -} + if (Number.isFinite(parseFloat(data, 10))) { + return true + } -function constructYamlFloat(data) { - var value, sign; + return YAML_FLOAT_SPECIAL_PATTERN.test(data) +} - value = data.replace(/_/g, '').toLowerCase(); - sign = value[0] === '-' ? -1 : 1; +function constructYamlFloat (data) { + let value = data.toLowerCase() + const sign = value[0] === '-' ? -1 : 1 if ('+-'.indexOf(value[0]) >= 0) { - value = value.slice(1); + value = value.slice(1) } if (value === '.inf') { - return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY; - + return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY } else if (value === '.nan') { - return NaN; + return NaN } - return sign * parseFloat(value, 10); + return sign * parseFloat(value, 10) } +const SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/ -var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/; - -function representYamlFloat(object, style) { - var res; - +function representYamlFloat (object, style) { if (isNaN(object)) { switch (style) { - case 'lowercase': return '.nan'; - case 'uppercase': return '.NAN'; - case 'camelcase': return '.NaN'; + case 'lowercase': return '.nan' + case 'uppercase': return '.NAN' + case 'camelcase': return '.NaN' } } else if (Number.POSITIVE_INFINITY === object) { switch (style) { - case 'lowercase': return '.inf'; - case 'uppercase': return '.INF'; - case 'camelcase': return '.Inf'; + case 'lowercase': return '.inf' + case 'uppercase': return '.INF' + case 'camelcase': return '.Inf' } } else if (Number.NEGATIVE_INFINITY === object) { switch (style) { - case 'lowercase': return '-.inf'; - case 'uppercase': return '-.INF'; - case 'camelcase': return '-.Inf'; + case 'lowercase': return '-.inf' + case 'uppercase': return '-.INF' + case 'camelcase': return '-.Inf' } } else if (common.isNegativeZero(object)) { - return '-0.0'; + return '-0.0' } - res = object.toString(10); + const res = object.toString(10) // JS stringifier can build scientific format without dots: 5e-100, // while YAML requres dot: 5.e-100. Fix it with simple hack - return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res; + return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res } -function isFloat(object) { +function isFloat (object) { return (Object.prototype.toString.call(object) === '[object Number]') && - (object % 1 !== 0 || common.isNegativeZero(object)); + (object % 1 !== 0 || common.isNegativeZero(object)) } module.exports = new Type('tag:yaml.org,2002:float', { @@ -304374,7 +304210,7 @@ module.exports = new Type('tag:yaml.org,2002:float', { predicate: isFloat, represent: representYamlFloat, defaultStyle: 'lowercase' -}); +}) /***/ }), @@ -304385,138 +304221,125 @@ module.exports = new Type('tag:yaml.org,2002:float', { "use strict"; -var common = __nccwpck_require__(26829); -var Type = __nccwpck_require__(6073); +const common = __nccwpck_require__(26829) +const Type = __nccwpck_require__(6073) -function isHexCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) || - ((0x41/* A */ <= c) && (c <= 0x46/* F */)) || - ((0x61/* a */ <= c) && (c <= 0x66/* f */)); +function isHexCode (c) { + return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) || + ((c >= 0x41/* A */) && (c <= 0x46/* F */)) || + ((c >= 0x61/* a */) && (c <= 0x66/* f */)) } -function isOctCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */)); +function isOctCode (c) { + return ((c >= 0x30/* 0 */) && (c <= 0x37/* 7 */)) } -function isDecCode(c) { - return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)); +function isDecCode (c) { + return ((c >= 0x30/* 0 */) && (c <= 0x39/* 9 */)) } -function resolveYamlInteger(data) { - if (data === null) return false; +function resolveYamlInteger (data) { + if (data === null) return false - var max = data.length, - index = 0, - hasDigits = false, - ch; + const max = data.length + let index = 0 + let hasDigits = false - if (!max) return false; + if (!max) return false - ch = data[index]; + let ch = data[index] // sign if (ch === '-' || ch === '+') { - ch = data[++index]; + ch = data[++index] } if (ch === '0') { // 0 - if (index + 1 === max) return true; - ch = data[++index]; + if (index + 1 === max) return true + ch = data[++index] // base 2, base 8, base 16 if (ch === 'b') { // base 2 - index++; + index++ for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (ch !== '0' && ch !== '1') return false; - hasDigits = true; + ch = data[index] + if (ch !== '0' && ch !== '1') return false + hasDigits = true } - return hasDigits && ch !== '_'; + return hasDigits && Number.isFinite(parseYamlInteger(data)) } - if (ch === 'x') { // base 16 - index++; + index++ for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isHexCode(data.charCodeAt(index))) return false; - hasDigits = true; + if (!isHexCode(data.charCodeAt(index))) return false + hasDigits = true } - return hasDigits && ch !== '_'; + return hasDigits && Number.isFinite(parseYamlInteger(data)) } - if (ch === 'o') { // base 8 - index++; + index++ for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; - if (!isOctCode(data.charCodeAt(index))) return false; - hasDigits = true; + if (!isOctCode(data.charCodeAt(index))) return false + hasDigits = true } - return hasDigits && ch !== '_'; + return hasDigits && Number.isFinite(parseYamlInteger(data)) } } // base 10 (except 0) - // value should not start with `_`; - if (ch === '_') return false; - for (; index < max; index++) { - ch = data[index]; - if (ch === '_') continue; if (!isDecCode(data.charCodeAt(index))) { - return false; + return false } - hasDigits = true; + hasDigits = true } - // Should have digits and should not end with `_` - if (!hasDigits || ch === '_') return false; + if (!hasDigits) return false - return true; + return Number.isFinite(parseYamlInteger(data)) } -function constructYamlInteger(data) { - var value = data, sign = 1, ch; +function parseYamlInteger (data) { + let value = data + let sign = 1 - if (value.indexOf('_') !== -1) { - value = value.replace(/_/g, ''); - } - - ch = value[0]; + let ch = value[0] if (ch === '-' || ch === '+') { - if (ch === '-') sign = -1; - value = value.slice(1); - ch = value[0]; + if (ch === '-') sign = -1 + value = value.slice(1) + ch = value[0] } - if (value === '0') return 0; + if (value === '0') return 0 if (ch === '0') { - if (value[1] === 'b') return sign * parseInt(value.slice(2), 2); - if (value[1] === 'x') return sign * parseInt(value.slice(2), 16); - if (value[1] === 'o') return sign * parseInt(value.slice(2), 8); + if (value[1] === 'b') return sign * parseInt(value.slice(2), 2) + if (value[1] === 'x') return sign * parseInt(value.slice(2), 16) + if (value[1] === 'o') return sign * parseInt(value.slice(2), 8) } - return sign * parseInt(value, 10); + return sign * parseInt(value, 10) +} + +function constructYamlInteger (data) { + return parseYamlInteger(data) } -function isInteger(object) { +function isInteger (object) { return (Object.prototype.toString.call(object)) === '[object Number]' && - (object % 1 === 0 && !common.isNegativeZero(object)); + (object % 1 === 0 && !common.isNegativeZero(object)) } module.exports = new Type('tag:yaml.org,2002:int', { @@ -304525,20 +304348,19 @@ module.exports = new Type('tag:yaml.org,2002:int', { construct: constructYamlInteger, predicate: isInteger, represent: { - binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1); }, - octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1); }, - decimal: function (obj) { return obj.toString(10); }, - /* eslint-disable max-len */ - hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1); } + binary: function (obj) { return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1) }, + octal: function (obj) { return obj >= 0 ? '0o' + obj.toString(8) : '-0o' + obj.toString(8).slice(1) }, + decimal: function (obj) { return obj.toString(10) }, + hexadecimal: function (obj) { return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1) } }, defaultStyle: 'decimal', styleAliases: { - binary: [ 2, 'bin' ], - octal: [ 8, 'oct' ], - decimal: [ 10, 'dec' ], - hexadecimal: [ 16, 'hex' ] + binary: [2, 'bin'], + octal: [8, 'oct'], + decimal: [10, 'dec'], + hexadecimal: [16, 'hex'] } -}); +}) /***/ }), @@ -304549,12 +304371,12 @@ module.exports = new Type('tag:yaml.org,2002:int', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) module.exports = new Type('tag:yaml.org,2002:map', { kind: 'mapping', - construct: function (data) { return data !== null ? data : {}; } -}); + construct: function (data) { return data !== null ? data : {} } +}) /***/ }), @@ -304565,16 +304387,16 @@ module.exports = new Type('tag:yaml.org,2002:map', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -function resolveYamlMerge(data) { - return data === '<<' || data === null; +function resolveYamlMerge (data) { + return data === '<<' || data === null } module.exports = new Type('tag:yaml.org,2002:merge', { kind: 'scalar', resolve: resolveYamlMerge -}); +}) /***/ }), @@ -304585,23 +304407,23 @@ module.exports = new Type('tag:yaml.org,2002:merge', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -function resolveYamlNull(data) { - if (data === null) return true; +function resolveYamlNull (data) { + if (data === null) return true - var max = data.length; + const max = data.length return (max === 1 && data === '~') || - (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')); + (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL')) } -function constructYamlNull() { - return null; +function constructYamlNull () { + return null } -function isNull(object) { - return object === null; +function isNull (object) { + return object === null } module.exports = new Type('tag:yaml.org,2002:null', { @@ -304610,14 +304432,14 @@ module.exports = new Type('tag:yaml.org,2002:null', { construct: constructYamlNull, predicate: isNull, represent: { - canonical: function () { return '~'; }, - lowercase: function () { return 'null'; }, - uppercase: function () { return 'NULL'; }, - camelcase: function () { return 'Null'; }, - empty: function () { return ''; } + canonical: function () { return '~' }, + lowercase: function () { return 'null' }, + uppercase: function () { return 'NULL' }, + camelcase: function () { return 'Null' }, + empty: function () { return '' } }, defaultStyle: 'lowercase' -}); +}) /***/ }), @@ -304628,48 +304450,49 @@ module.exports = new Type('tag:yaml.org,2002:null', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -var _hasOwnProperty = Object.prototype.hasOwnProperty; -var _toString = Object.prototype.toString; +const _hasOwnProperty = Object.prototype.hasOwnProperty +const _toString = Object.prototype.toString -function resolveYamlOmap(data) { - if (data === null) return true; +function resolveYamlOmap (data) { + if (data === null) return true - var objectKeys = [], index, length, pair, pairKey, pairHasKey, - object = data; + const objectKeys = [] + const object = data - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; - pairHasKey = false; + for (let index = 0, length = object.length; index < length; index += 1) { + const pair = object[index] + let pairHasKey = false - if (_toString.call(pair) !== '[object Object]') return false; + if (_toString.call(pair) !== '[object Object]') return false + let pairKey for (pairKey in pair) { if (_hasOwnProperty.call(pair, pairKey)) { - if (!pairHasKey) pairHasKey = true; - else return false; + if (!pairHasKey) pairHasKey = true + else return false } } - if (!pairHasKey) return false; + if (!pairHasKey) return false - if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey); - else return false; + if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey) + else return false } - return true; + return true } -function constructYamlOmap(data) { - return data !== null ? data : []; +function constructYamlOmap (data) { + return data !== null ? data : [] } module.exports = new Type('tag:yaml.org,2002:omap', { kind: 'sequence', resolve: resolveYamlOmap, construct: constructYamlOmap -}); +}) /***/ }), @@ -304680,57 +304503,54 @@ module.exports = new Type('tag:yaml.org,2002:omap', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -var _toString = Object.prototype.toString; +const _toString = Object.prototype.toString -function resolveYamlPairs(data) { - if (data === null) return true; +function resolveYamlPairs (data) { + if (data === null) return true - var index, length, pair, keys, result, - object = data; + const object = data - result = new Array(object.length); + const result = new Array(object.length) - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; + for (let index = 0, length = object.length; index < length; index += 1) { + const pair = object[index] - if (_toString.call(pair) !== '[object Object]') return false; + if (_toString.call(pair) !== '[object Object]') return false - keys = Object.keys(pair); + const keys = Object.keys(pair) - if (keys.length !== 1) return false; + if (keys.length !== 1) return false - result[index] = [ keys[0], pair[keys[0]] ]; + result[index] = [keys[0], pair[keys[0]]] } - return true; + return true } -function constructYamlPairs(data) { - if (data === null) return []; - - var index, length, pair, keys, result, - object = data; +function constructYamlPairs (data) { + if (data === null) return [] - result = new Array(object.length); + const object = data + const result = new Array(object.length) - for (index = 0, length = object.length; index < length; index += 1) { - pair = object[index]; + for (let index = 0, length = object.length; index < length; index += 1) { + const pair = object[index] - keys = Object.keys(pair); + const keys = Object.keys(pair) - result[index] = [ keys[0], pair[keys[0]] ]; + result[index] = [keys[0], pair[keys[0]]] } - return result; + return result } module.exports = new Type('tag:yaml.org,2002:pairs', { kind: 'sequence', resolve: resolveYamlPairs, construct: constructYamlPairs -}); +}) /***/ }), @@ -304741,12 +304561,12 @@ module.exports = new Type('tag:yaml.org,2002:pairs', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) module.exports = new Type('tag:yaml.org,2002:seq', { kind: 'sequence', - construct: function (data) { return data !== null ? data : []; } -}); + construct: function (data) { return data !== null ? data : [] } +}) /***/ }), @@ -304757,33 +304577,33 @@ module.exports = new Type('tag:yaml.org,2002:seq', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -var _hasOwnProperty = Object.prototype.hasOwnProperty; +const _hasOwnProperty = Object.prototype.hasOwnProperty -function resolveYamlSet(data) { - if (data === null) return true; +function resolveYamlSet (data) { + if (data === null) return true - var key, object = data; + const object = data - for (key in object) { + for (const key in object) { if (_hasOwnProperty.call(object, key)) { - if (object[key] !== null) return false; + if (object[key] !== null) return false } } - return true; + return true } -function constructYamlSet(data) { - return data !== null ? data : {}; +function constructYamlSet (data) { + return data !== null ? data : {} } module.exports = new Type('tag:yaml.org,2002:set', { kind: 'mapping', resolve: resolveYamlSet, construct: constructYamlSet -}); +}) /***/ }), @@ -304794,12 +304614,12 @@ module.exports = new Type('tag:yaml.org,2002:set', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) module.exports = new Type('tag:yaml.org,2002:str', { kind: 'scalar', - construct: function (data) { return data !== null ? data : ''; } -}); + construct: function (data) { return data !== null ? data : '' } +}) /***/ }), @@ -304810,83 +304630,83 @@ module.exports = new Type('tag:yaml.org,2002:str', { "use strict"; -var Type = __nccwpck_require__(6073); +const Type = __nccwpck_require__(6073) -var YAML_DATE_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9])' + // [2] month - '-([0-9][0-9])$'); // [3] day +const YAML_DATE_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9])' + // [2] month + '-([0-9][0-9])$') // [3] day -var YAML_TIMESTAMP_REGEXP = new RegExp( - '^([0-9][0-9][0-9][0-9])' + // [1] year - '-([0-9][0-9]?)' + // [2] month - '-([0-9][0-9]?)' + // [3] day - '(?:[Tt]|[ \\t]+)' + // ... - '([0-9][0-9]?)' + // [4] hour - ':([0-9][0-9])' + // [5] minute - ':([0-9][0-9])' + // [6] second - '(?:\\.([0-9]*))?' + // [7] fraction - '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour - '(?::([0-9][0-9]))?))?$'); // [11] tz_minute +const YAML_TIMESTAMP_REGEXP = new RegExp( + '^([0-9][0-9][0-9][0-9])' + // [1] year + '-([0-9][0-9]?)' + // [2] month + '-([0-9][0-9]?)' + // [3] day + '(?:[Tt]|[ \\t]+)' + // ... + '([0-9][0-9]?)' + // [4] hour + ':([0-9][0-9])' + // [5] minute + ':([0-9][0-9])' + // [6] second + '(?:\\.([0-9]*))?' + // [7] fraction + '(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tzHour + '(?::([0-9][0-9]))?))?$') // [11] tzMinute -function resolveYamlTimestamp(data) { - if (data === null) return false; - if (YAML_DATE_REGEXP.exec(data) !== null) return true; - if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true; - return false; +function resolveYamlTimestamp (data) { + if (data === null) return false + if (YAML_DATE_REGEXP.exec(data) !== null) return true + if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true + return false } -function constructYamlTimestamp(data) { - var match, year, month, day, hour, minute, second, fraction = 0, - delta = null, tz_hour, tz_minute, date; +function constructYamlTimestamp (data) { + let fraction = 0 + let delta = null - match = YAML_DATE_REGEXP.exec(data); - if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data); + let match = YAML_DATE_REGEXP.exec(data) + if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data) - if (match === null) throw new Error('Date resolve error'); + if (match === null) throw new Error('Date resolve error') // match: [1] year [2] month [3] day - year = +(match[1]); - month = +(match[2]) - 1; // JS month starts with 0 - day = +(match[3]); + const year = +(match[1]) + const month = +(match[2]) - 1 // JS month starts with 0 + const day = +(match[3]) if (!match[4]) { // no hour - return new Date(Date.UTC(year, month, day)); + return new Date(Date.UTC(year, month, day)) } // match: [4] hour [5] minute [6] second [7] fraction - hour = +(match[4]); - minute = +(match[5]); - second = +(match[6]); + const hour = +(match[4]) + const minute = +(match[5]) + const second = +(match[6]) if (match[7]) { - fraction = match[7].slice(0, 3); + fraction = match[7].slice(0, 3) while (fraction.length < 3) { // milli-seconds - fraction += '0'; + fraction += '0' } - fraction = +fraction; + fraction = +fraction } - // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute + // match: [8] tz [9] tz_sign [10] tzHour [11] tzMinute if (match[9]) { - tz_hour = +(match[10]); - tz_minute = +(match[11] || 0); - delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds - if (match[9] === '-') delta = -delta; + const tzHour = +(match[10]) + const tzMinute = +(match[11] || 0) + delta = (tzHour * 60 + tzMinute) * 60000 // delta in mili-seconds + if (match[9] === '-') delta = -delta } - date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)); + const date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction)) - if (delta) date.setTime(date.getTime() - delta); + if (delta) date.setTime(date.getTime() - delta) - return date; + return date } -function representYamlTimestamp(object /*, style*/) { - return object.toISOString(); +function representYamlTimestamp (object /*, style */) { + return object.toISOString() } module.exports = new Type('tag:yaml.org,2002:timestamp', { @@ -304895,7 +304715,7 @@ module.exports = new Type('tag:yaml.org,2002:timestamp', { construct: constructYamlTimestamp, instanceOf: Date, represent: representYamlTimestamp -}); +}) /***/ }), @@ -381611,14 +381431,27 @@ class Receiver extends Writable { * @param {Boolean} [isServer=false] Specifies whether to operate in client or * server mode * @param {Number} [maxPayload=0] The maximum allowed message length + * @param {Number} [maxBufferedChunks=0] The maximum number of + * buffered data chunks + * @param {Number} [maxFragments=0] The maximum number of message + * fragments */ - constructor(binaryType, extensions, isServer, maxPayload) { + constructor( + binaryType, + extensions, + isServer, + maxPayload, + maxBufferedChunks, + maxFragments + ) { super(); this._binaryType = binaryType || BINARY_TYPES[0]; this[kWebSocket] = undefined; this._extensions = extensions || {}; this._isServer = !!isServer; + this._maxBufferedChunks = maxBufferedChunks | 0; + this._maxFragments = maxFragments | 0; this._maxPayload = maxPayload | 0; this._bufferedBytes = 0; @@ -381651,6 +381484,21 @@ class Receiver extends Writable { _write(chunk, encoding, cb) { if (this._opcode === 0x08 && this._state == GET_INFO) return cb(); + if ( + this._maxBufferedChunks > 0 && + this._buffers.length >= this._maxBufferedChunks + ) { + return cb( + error( + RangeError, + 'Too many buffered chunks', + false, + 1008, + 'WS_ERR_TOO_MANY_BUFFERED_PARTS' + ) + ); + } + this._bufferedBytes += chunk.length; this._buffers.push(chunk); this.startLoop(cb); @@ -382002,6 +381850,20 @@ class Receiver extends Writable { } if (data.length) { + if ( + this._maxFragments > 0 && + this._fragments.length >= this._maxFragments + ) { + this._loop = false; + return error( + RangeError, + 'Too many message fragments', + false, + 1008, + 'WS_ERR_TOO_MANY_BUFFERED_PARTS' + ); + } + // // This message is not compressed so its lenght is the sum of the payload // length of all fragments. @@ -382040,6 +381902,21 @@ class Receiver extends Writable { ); } + if ( + this._maxFragments > 0 && + this._fragments.length >= this._maxFragments + ) { + return cb( + error( + RangeError, + 'Too many message fragments', + false, + 1008, + 'WS_ERR_TOO_MANY_BUFFERED_PARTS' + ) + ); + } + this._fragments.push(buf); } @@ -382946,6 +382823,10 @@ class WebSocketServer extends EventEmitter { * track clients * @param {Function} [options.handleProtocols] A hook to handle protocols * @param {String} [options.host] The hostname where to bind the server + * @param {Number} [options.maxBufferedChunks=1048576] The maximum number of + * buffered data chunks + * @param {Number} [options.maxFragments=131072] The maximum number of message + * fragments * @param {Number} [options.maxPayload=104857600] The maximum allowed message * size * @param {Boolean} [options.noServer=false] Enable no server mode @@ -382962,6 +382843,8 @@ class WebSocketServer extends EventEmitter { super(); options = { + maxBufferedChunks: 1024 * 1024, + maxFragments: 128 * 1024, maxPayload: 100 * 1024 * 1024, perMessageDeflate: false, handleProtocols: null, @@ -383260,7 +383143,13 @@ class WebSocketServer extends EventEmitter { socket.write(headers.concat('\r\n').join('\r\n')); socket.removeListener('error', socketOnError); - ws.setSocket(socket, head, this.options.maxPayload); + ws.setSocket( + socket, + head, + this.options.maxPayload, + this.options.maxBufferedChunks, + this.options.maxFragments + ); if (this.clients) { this.clients.add(ws); @@ -383554,14 +383443,20 @@ class WebSocket extends EventEmitter { * server and client * @param {Buffer} head The first packet of the upgraded stream * @param {Number} [maxPayload=0] The maximum allowed message size + * @param {Number} [maxBufferedChunks=0] The maximum number of + * buffered data chunks + * @param {Number} [maxFragments=0] The maximum number of message + * fragments * @private */ - setSocket(socket, head, maxPayload) { + setSocket(socket, head, maxPayload, maxBufferedChunks, maxFragments) { const receiver = new Receiver( this.binaryType, this._extensions, this._isServer, - maxPayload + maxPayload, + maxBufferedChunks, + maxFragments ); this._sender = new Sender(socket, this._extensions); @@ -383938,6 +383833,10 @@ module.exports = WebSocket; * `Sec-WebSocket-Version` header * @param {String} [options.origin] Value of the `Origin` or * `Sec-WebSocket-Origin` header + * @param {Number} [options.maxBufferedChunks=1048576] The maximum number of + * buffered data chunks + * @param {Number} [options.maxFragments=131072] The maximum number of message + * fragments * @param {Number} [options.maxPayload=104857600] The maximum allowed message * size * @param {Boolean} [options.followRedirects=false] Whether or not to follow @@ -383949,6 +383848,8 @@ module.exports = WebSocket; function initAsClient(websocket, address, protocols, options) { const opts = { protocolVersion: protocolVersions[1], + maxBufferedChunks: 1024 * 1024, + maxFragments: 128 * 1024, maxPayload: 100 * 1024 * 1024, perMessageDeflate: true, followRedirects: false, @@ -384248,7 +384149,13 @@ function initAsClient(websocket, address, protocols, options) { } } - websocket.setSocket(socket, head, opts.maxPayload); + websocket.setSocket( + socket, + head, + opts.maxPayload, + opts.maxBufferedChunks, + opts.maxFragments + ); }); } From 7ae669989d0e2f2a257437dc700514873e515570 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 00:28:12 +0000 Subject: [PATCH 2/2] fix: apply audit fixes --- yarn.lock | 364 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 231 insertions(+), 133 deletions(-) diff --git a/yarn.lock b/yarn.lock index 59829d3..b954fe3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,14 +85,6 @@ resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@aws-crypto/crc32@5.2.0": version "5.2.0" resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" @@ -955,7 +947,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== @@ -971,39 +963,39 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/code-frame@^7.28.6": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" - integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== +"@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity "sha1-8vu/6ofESiFZDsUVt3iywm2IZuc= sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==" dependencies: - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-validator-identifier" "^7.29.7" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity "sha1-bwI38PNtLlHAVwpjb67Z0tDv5ik= sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==" "@babel/core@^7.1.0", "@babel/core@^7.12.16", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35" - integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.22.10" - "@babel/generator" "^7.22.10" - "@babel/helper-compilation-targets" "^7.22.10" - "@babel/helper-module-transforms" "^7.22.9" - "@babel/helpers" "^7.22.10" - "@babel/parser" "^7.22.10" - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.10" - "@babel/types" "^7.22.10" - convert-source-map "^1.7.0" + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity "sha1-gMELFySAgpaLV6hXuRZAlx8gcPc= sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==" + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" + "@jridgewell/remapping" "^2.3.5" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" + json5 "^2.2.3" semver "^6.3.1" "@babel/eslint-parser@^7.12.16": @@ -1015,16 +1007,6 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.22.10", "@babel/generator@^7.7.2": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" - integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== - dependencies: - "@babel/types" "^7.22.10" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - "@babel/generator@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" @@ -1035,14 +1017,35 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.22.10": +"@babel/generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" + integrity "sha1-zKC4gn5rzzuhdniOfzsYCtbbL6M= sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==" + dependencies: + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/generator@^7.7.2": version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" - integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" + integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== + dependencies: + "@babel/types" "^7.22.10" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity "sha1-eh3vcEMCQBxH9k+oVYnpdK4hcEI= sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==" dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" - browserslist "^4.21.9" + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" @@ -1051,11 +1054,6 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== - "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" @@ -1064,6 +1062,11 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity "sha1-8EqW+9hHMkGxB5JD9bPwOjAQq3s= sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -1071,36 +1074,28 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +"@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity "sha1-7yUEilGOgo1zk/rFiC3dc5Idc5Y= sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==" dependencies: - "@babel/types" "^7.22.5" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== +"@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity "sha1-sGJ0elmXuhOGNyATKLv/d5YFdK4= sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==" dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -1113,10 +1108,10 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity "sha1-fwhx2Zgk0jE31g+G/PYTD9WhtR8= sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==" "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" @@ -1128,23 +1123,23 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== -"@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== +"@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity "sha1-vYcITO0MeW7Ea9pJLeboPSnon8I= sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==" -"@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity "sha1-zzFb6UAhOzVOtKvMC9Aevj9zvCo= sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==" -"@babel/helpers@^7.22.10": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" - integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== +"@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity "sha1-Rav951SJl+NDdsPmn+tHXP+0pgc= sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==" dependencies: - "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" "@babel/highlight@^7.10.4", "@babel/highlight@^7.22.10": version "7.22.10" @@ -1164,7 +1159,7 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.5": version "7.22.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== @@ -1174,12 +1169,12 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== -"@babel/parser@^7.28.6": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" - integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== +"@babel/parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" + integrity "sha1-g3uHOHy/XsVTDLY0s8Yi9o7bkzQ= sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==" dependencies: - "@babel/types" "^7.29.0" + "@babel/types" "^7.29.7" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -1286,7 +1281,16 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/template@^7.22.5", "@babel/template@^7.3.3": +"@babel/template@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity "sha1-TZ1ABPZFzdME3pWMclFieE7KxwA= sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==" + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" + +"@babel/template@^7.3.3": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== @@ -1295,16 +1299,20 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/template@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" - integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== - dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" +"@babel/traverse@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" + integrity "sha1-xHsHpBuV2gkH0Ca13YlNmN59Ly0= sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==" + dependencies: + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" + debug "^4.3.1" -"@babel/traverse@^7.22.10", "@babel/traverse@^7.7.2": +"@babel/traverse@^7.7.2": version "7.23.2" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== @@ -1338,13 +1346,13 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@babel/types@^7.28.6", "@babel/types@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" - integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== +"@babel/types@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" + integrity "sha1-gAXjHYJxLuetrvbiPGO3GmJ3CpI= sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==" dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1612,7 +1620,15 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity "sha1-Y0Khn0Q0dRjJPkOxrGnes8Rlah8= sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==" + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== @@ -1621,6 +1637,14 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" +"@jridgewell/remapping@^2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1" + integrity "sha1-N1xHbRlylHhRuh4Vro8SMEdEWqE= sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==" + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" @@ -1636,6 +1660,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity "sha1-aRKwDSxjHA0Vzhp6tXzWV/Ko+Lo= sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" + "@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" @@ -1652,6 +1681,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.31" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0" + integrity "sha1-2xXWeByTHzolGj2sOVAcmKYIL9A= sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==" + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@kubernetes/client-node@^0.16.3": version "0.16.3" resolved "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.16.3.tgz" @@ -3293,6 +3330,11 @@ base-64@^1.0.0: resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a" integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg== +baseline-browser-mapping@^2.10.12: + version "2.10.38" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz#c84d093c4bf7325c5053c279d90f153c66526042" + integrity "sha1-yE0JPEv3MlxQU8J52Q8VPGZSYEI= sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==" + bash-glob@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/bash-glob/-/bash-glob-2.0.0.tgz" @@ -3363,7 +3405,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.21.0, browserslist@^4.21.9: +browserslist@^4.21.0: version "4.21.10" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== @@ -3373,6 +3415,17 @@ browserslist@^4.21.0, browserslist@^4.21.9: node-releases "^2.0.13" update-browserslist-db "^1.0.11" +browserslist@^4.24.0: + version "4.28.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity "sha1-9QtlNi70iXTKn1CzaAVm14a4EdI= sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==" + dependencies: + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -3466,6 +3519,11 @@ caniuse-lite@^1.0.30001517: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001520.tgz#62e2b7a1c7b35269594cf296a80bdf8cb9565006" integrity sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA== +caniuse-lite@^1.0.30001782: + version "1.0.30001799" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz#5c909138c27f1a61219d3e092071c1cc7d32dc55" + integrity "sha1-XJCROMJ/GmEhnT4JIHHBzH0y3FU= sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==" + caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" @@ -3644,11 +3702,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.4.0, convert-source-map@^1.6.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity "sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co= sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" @@ -3904,6 +3967,11 @@ electron-to-chromium@^1.4.477: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.492.tgz#83fed8beb64ec60578069e15dddd17b13a77ca56" integrity sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ== +electron-to-chromium@^1.5.328: + version "1.5.376" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz#16a9d4b72cb16c416aa73a879d92b047b96797ac" + integrity "sha1-FqnUtyyxbEFqpzqHnZKwR7lnl6w= sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==" + emittery@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" @@ -4048,6 +4116,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity "sha1-ARo/aYVroYnf+n3I/M6Z0qh5A+U= sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -4628,15 +4701,15 @@ form-data@^3.0.0: mime-types "^2.1.35" form-data@^4.0.0, form-data@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + version "4.0.6" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.6.tgz#28e864e1b786dbebb68db1f452f9635278665827" + integrity "sha1-KOhk4beG2+u2jbH0UvljUnhmWCc= sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==" dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" + hasown "^2.0.4" + mime-types "^2.1.35" form-data@~2.3.2: version "2.3.3" @@ -4970,6 +5043,13 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" +hasown@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity "sha1-jGLYy5C+sqrV0KW2dYGtmFTD8AM= sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==" + dependencies: + function-bind "^1.1.2" + hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -5800,9 +5880,9 @@ js-yaml@^3.13.1: esprima "^4.0.0" js-yaml@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + version "4.2.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.2.0.tgz#2bd9e85682dd91bd469afb809d816043b3d49524" + integrity "sha1-K9noVoLdkb1GmvuAnYFgQ7PUlSQ= sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==" dependencies: argparse "^2.0.1" @@ -5849,6 +5929,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity "sha1-dNM1ojT2ftGZB/2t+sfM+dQJgl0= sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" @@ -5884,10 +5969,10 @@ json-stringify-safe@~5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== -json5@2.x, json5@^2.2.2: +json5@2.x, json5@^2.2.3: version "2.2.3" - resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity "sha1-eM1vGhm9wStz21rQxh79ZsHikoM= sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" json5@^1.0.2: version "1.0.2" @@ -6259,6 +6344,11 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== +node-releases@^2.0.36: + version "2.0.48" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.48.tgz#4da73d040ada751fc9959d993f27de48792e3b7d" + integrity "sha1-Tac9BAradR/JlZ2ZPyfeSHkuO30= sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==" + normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -7593,6 +7683,14 @@ update-browserslist-db@^1.0.11: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" + integrity "sha1-ZNdttYcTE2rL60xJEUNmzGzC6A0= sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==" + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" @@ -7797,9 +7895,9 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^7.3.1, ws@^7.4.6: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + version "7.5.11" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.11.tgz#9460daf1812bb81a423c5b9eac746941a86310fa" + integrity "sha1-lGDa8YEruBpCPFuerHRpQahjEPo= sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==" xml-name-validator@^3.0.0: version "3.0.0"