|
|
function _typeof(obj) { "@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function (obj) { return typeof obj; }; } else { _typeof = function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; }
return _typeof(obj); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; }
return obj; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); }
subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; };
return _setPrototypeOf(o, p); }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true;
try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; }
return _construct.apply(null, arguments); }
function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; }
function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined;
_wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class;
if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); }
if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class);
_cache.set(Class, Wrapper); }
function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); }
Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); };
return _wrapNativeSuper(Class); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); }
return self; }
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; }
return _assertThisInitialized(self); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct();
return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result;
if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor;
result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); }
return _possibleConstructorReturn(this, result); }; }
function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; }
return object; }
function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property);
if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property);
if (desc.get) { return desc.get.call(receiver); }
return desc.value; }; }
return _get(target, property, receiver || target); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined;
try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value);
if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } }
return _arr; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
return arr2; }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _createForOfIteratorHelper(o, allowArrayLike) { var it;
if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0;
var F = function () {};
return { s: F, n: function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function (e) { throw e; }, f: F }; }
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
var normalCompletion = true, didErr = false, err; return { s: function () { it = o[Symbol.iterator](); }, n: function () { var step = it.next(); normalCompletion = step.done; return step; }, e: function (e) { didErr = true; err = e; }, f: function () { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
var Char = { ANCHOR: '&', COMMENT: '#', TAG: '!', DIRECTIVES_END: '-', DOCUMENT_END: '.' }; var Type = { ALIAS: 'ALIAS', BLANK_LINE: 'BLANK_LINE', BLOCK_FOLDED: 'BLOCK_FOLDED', BLOCK_LITERAL: 'BLOCK_LITERAL', COMMENT: 'COMMENT', DIRECTIVE: 'DIRECTIVE', DOCUMENT: 'DOCUMENT', FLOW_MAP: 'FLOW_MAP', FLOW_SEQ: 'FLOW_SEQ', MAP: 'MAP', MAP_KEY: 'MAP_KEY', MAP_VALUE: 'MAP_VALUE', PLAIN: 'PLAIN', QUOTE_DOUBLE: 'QUOTE_DOUBLE', QUOTE_SINGLE: 'QUOTE_SINGLE', SEQ: 'SEQ', SEQ_ITEM: 'SEQ_ITEM' }; var defaultTagPrefix = 'tag:yaml.org,2002:'; var defaultTags = { MAP: 'tag:yaml.org,2002:map', SEQ: 'tag:yaml.org,2002:seq', STR: 'tag:yaml.org,2002:str' };
function findLineStarts(src) { var ls = [0]; var offset = src.indexOf('\n');
while (offset !== -1) { offset += 1; ls.push(offset); offset = src.indexOf('\n', offset); }
return ls; }
function getSrcInfo(cst) { var lineStarts, src;
if (typeof cst === 'string') { lineStarts = findLineStarts(cst); src = cst; } else { if (Array.isArray(cst)) cst = cst[0];
if (cst && cst.context) { if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src); lineStarts = cst.lineStarts; src = cst.context.src; } }
return { lineStarts: lineStarts, src: src }; } /** * @typedef {Object} LinePos - One-indexed position in the source * @property {number} line * @property {number} col */
/** * Determine the line/col position matching a character offset. * * Accepts a source string or a CST document as the second parameter. With * the latter, starting indices for lines are cached in the document as * `lineStarts: number[]`. * * Returns a one-indexed `{ line, col }` location if found, or * `undefined` otherwise. * * @param {number} offset * @param {string|Document|Document[]} cst * @returns {?LinePos} */
function getLinePos(offset, cst) { if (typeof offset !== 'number' || offset < 0) return null;
var _getSrcInfo = getSrcInfo(cst), lineStarts = _getSrcInfo.lineStarts, src = _getSrcInfo.src;
if (!lineStarts || !src || offset > src.length) return null;
for (var i = 0; i < lineStarts.length; ++i) { var start = lineStarts[i];
if (offset < start) { return { line: i, col: offset - lineStarts[i - 1] + 1 }; }
if (offset === start) return { line: i + 1, col: 1 }; }
var line = lineStarts.length; return { line: line, col: offset - lineStarts[line - 1] + 1 }; } /** * Get a specified line from the source. * * Accepts a source string or a CST document as the second parameter. With * the latter, starting indices for lines are cached in the document as * `lineStarts: number[]`. * * Returns the line as a string if found, or `null` otherwise. * * @param {number} line One-indexed line number * @param {string|Document|Document[]} cst * @returns {?string} */
function getLine(line, cst) { var _getSrcInfo2 = getSrcInfo(cst), lineStarts = _getSrcInfo2.lineStarts, src = _getSrcInfo2.src;
if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null; var start = lineStarts[line - 1]; var end = lineStarts[line]; // undefined for last line; that's ok for slice()
while (end && end > start && src[end - 1] === '\n') { --end; }
return src.slice(start, end); } /** * Pretty-print the starting line from the source indicated by the range `pos` * * Trims output to `maxWidth` chars while keeping the starting column visible, * using `…` at either end to indicate dropped characters. * * Returns a two-line string (or `null`) with `\n` as separator; the second line * will hold appropriately indented `^` marks indicating the column range. * * @param {Object} pos * @param {LinePos} pos.start * @param {LinePos} [pos.end] * @param {string|Document|Document[]*} cst * @param {number} [maxWidth=80] * @returns {?string} */
function getPrettyContext(_ref, cst) { var start = _ref.start, end = _ref.end; var maxWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 80; var src = getLine(start.line, cst); if (!src) return null; var col = start.col;
if (src.length > maxWidth) { if (col <= maxWidth - 10) { src = src.substr(0, maxWidth - 1) + '…'; } else { var halfWidth = Math.round(maxWidth / 2); if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…'; col -= src.length - maxWidth; src = '…' + src.substr(1 - maxWidth); } }
var errLen = 1; var errEnd = '';
if (end) { if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) { errLen = end.col - start.col; } else { errLen = Math.min(src.length + 1, maxWidth) - col; errEnd = '…'; } }
var offset = col > 1 ? ' '.repeat(col - 1) : ''; var err = '^'.repeat(errLen); return "".concat(src, "\n").concat(offset).concat(err).concat(errEnd); }
var Range = /*#__PURE__*/function () { function Range(start, end) { _classCallCheck(this, Range);
this.start = start; this.end = end || start; }
_createClass(Range, [{ key: "isEmpty", value: function isEmpty() { return typeof this.start !== 'number' || !this.end || this.end <= this.start; } /** * Set `origStart` and `origEnd` to point to the original source range for * this node, which may differ due to dropped CR characters. * * @param {number[]} cr - Positions of dropped CR characters * @param {number} offset - Starting index of `cr` from the last call * @returns {number} - The next offset, matching the one found for `origStart` */
}, { key: "setOrigRange", value: function setOrigRange(cr, offset) { var start = this.start, end = this.end;
if (cr.length === 0 || end <= cr[0]) { this.origStart = start; this.origEnd = end; return offset; }
var i = offset;
while (i < cr.length) { if (cr[i] > start) break;else ++i; }
this.origStart = start + i; var nextOffset = i;
while (i < cr.length) { // if end was at \n, it should now be at \r
if (cr[i] >= end) break;else ++i; }
this.origEnd = end + i; return nextOffset; } }], [{ key: "copy", value: function copy(orig) { return new Range(orig.start, orig.end); } }]);
return Range; }();
/** Root class of all nodes */
var Node = /*#__PURE__*/function () { function Node(type, props, context) { _classCallCheck(this, Node);
Object.defineProperty(this, 'context', { value: context || null, writable: true }); this.error = null; this.range = null; this.valueRange = null; this.props = props || []; this.type = type; this.value = null; }
_createClass(Node, [{ key: "getPropValue", value: function getPropValue(idx, key, skipKey) { if (!this.context) return null; var src = this.context.src; var prop = this.props[idx]; return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null; } }, { key: "anchor", get: function get() { for (var i = 0; i < this.props.length; ++i) { var anchor = this.getPropValue(i, Char.ANCHOR, true); if (anchor != null) return anchor; }
return null; } }, { key: "comment", get: function get() { var comments = [];
for (var i = 0; i < this.props.length; ++i) { var comment = this.getPropValue(i, Char.COMMENT, true); if (comment != null) comments.push(comment); }
return comments.length > 0 ? comments.join('\n') : null; } }, { key: "commentHasRequiredWhitespace", value: function commentHasRequiredWhitespace(start) { var src = this.context.src; if (this.header && start === this.header.end) return false; if (!this.valueRange) return false; var end = this.valueRange.end; return start !== end || Node.atBlank(src, end - 1); } }, { key: "hasComment", get: function get() { if (this.context) { var src = this.context.src;
for (var i = 0; i < this.props.length; ++i) { if (src[this.props[i].start] === Char.COMMENT) return true; } }
return false; } }, { key: "hasProps", get: function get() { if (this.context) { var src = this.context.src;
for (var i = 0; i < this.props.length; ++i) { if (src[this.props[i].start] !== Char.COMMENT) return true; } }
return false; } }, { key: "includesTrailingLines", get: function get() { return false; } }, { key: "jsonLike", get: function get() { var jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE]; return jsonLikeTypes.indexOf(this.type) !== -1; } }, { key: "rangeAsLinePos", get: function get() { if (!this.range || !this.context) return undefined; var start = getLinePos(this.range.start, this.context.root); if (!start) return undefined; var end = getLinePos(this.range.end, this.context.root); return { start: start, end: end }; } }, { key: "rawValue", get: function get() { if (!this.valueRange || !this.context) return null; var _this$valueRange = this.valueRange, start = _this$valueRange.start, end = _this$valueRange.end; return this.context.src.slice(start, end); } }, { key: "tag", get: function get() { for (var i = 0; i < this.props.length; ++i) { var tag = this.getPropValue(i, Char.TAG, false);
if (tag != null) { if (tag[1] === '<') { return { verbatim: tag.slice(2, -1) }; } else { // eslint-disable-next-line no-unused-vars
var _tag$match = tag.match(/^(.*!)([^!]*)$/), _tag$match2 = _slicedToArray(_tag$match, 3); _tag$match2[0]; var handle = _tag$match2[1], suffix = _tag$match2[2];
return { handle: handle, suffix: suffix }; } } }
return null; } }, { key: "valueRangeContainsNewline", get: function get() { if (!this.valueRange || !this.context) return false; var _this$valueRange2 = this.valueRange, start = _this$valueRange2.start, end = _this$valueRange2.end; var src = this.context.src;
for (var i = start; i < end; ++i) { if (src[i] === '\n') return true; }
return false; } }, { key: "parseComment", value: function parseComment(start) { var src = this.context.src;
if (src[start] === Char.COMMENT) { var end = Node.endOfLine(src, start + 1); var commentRange = new Range(start, end); this.props.push(commentRange); return end; }
return start; } /** * Populates the `origStart` and `origEnd` values of all ranges for this * node. Extended by child classes to handle descendant nodes. * * @param {number[]} cr - Positions of dropped CR characters * @param {number} offset - Starting index of `cr` from the last call * @returns {number} - The next offset, matching the one found for `origStart` */
}, { key: "setOrigRanges", value: function setOrigRanges(cr, offset) { if (this.range) offset = this.range.setOrigRange(cr, offset); if (this.valueRange) this.valueRange.setOrigRange(cr, offset); this.props.forEach(function (prop) { return prop.setOrigRange(cr, offset); }); return offset; } }, { key: "toString", value: function toString() { var src = this.context.src, range = this.range, value = this.value; if (value != null) return value; var str = src.slice(range.start, range.end); return Node.addStringTerminator(src, range.end, str); } }], [{ key: "addStringTerminator", value: function addStringTerminator(src, offset, str) { if (str[str.length - 1] === '\n') return str; var next = Node.endOfWhiteSpace(src, offset); return next >= src.length || src[next] === '\n' ? str + '\n' : str; } // ^(---|...)
}, { key: "atDocumentBoundary", value: function atDocumentBoundary(src, offset, sep) { var ch0 = src[offset]; if (!ch0) return true; var prev = src[offset - 1]; if (prev && prev !== '\n') return false;
if (sep) { if (ch0 !== sep) return false; } else { if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) return false; }
var ch1 = src[offset + 1]; var ch2 = src[offset + 2]; if (ch1 !== ch0 || ch2 !== ch0) return false; var ch3 = src[offset + 3]; return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' '; } }, { key: "endOfIdentifier", value: function endOfIdentifier(src, offset) { var ch = src[offset]; var isVerbatim = ch === '<'; var notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
while (ch && notOk.indexOf(ch) === -1) { ch = src[offset += 1]; }
if (isVerbatim && ch === '>') offset += 1; return offset; } }, { key: "endOfIndent", value: function endOfIndent(src, offset) { var ch = src[offset];
while (ch === ' ') { ch = src[offset += 1]; }
return offset; } }, { key: "endOfLine", value: function endOfLine(src, offset) { var ch = src[offset];
while (ch && ch !== '\n') { ch = src[offset += 1]; }
return offset; } }, { key: "endOfWhiteSpace", value: function endOfWhiteSpace(src, offset) { var ch = src[offset];
while (ch === '\t' || ch === ' ') { ch = src[offset += 1]; }
return offset; } }, { key: "startOfLine", value: function startOfLine(src, offset) { var ch = src[offset - 1]; if (ch === '\n') return offset;
while (ch && ch !== '\n') { ch = src[offset -= 1]; }
return offset + 1; } /** * End of indentation, or null if the line's indent level is not more * than `indent` * * @param {string} src * @param {number} indent * @param {number} lineStart * @returns {?number} */
}, { key: "endOfBlockIndent", value: function endOfBlockIndent(src, indent, lineStart) { var inEnd = Node.endOfIndent(src, lineStart);
if (inEnd > lineStart + indent) { return inEnd; } else { var wsEnd = Node.endOfWhiteSpace(src, inEnd); var ch = src[wsEnd]; if (!ch || ch === '\n') return wsEnd; }
return null; } }, { key: "atBlank", value: function atBlank(src, offset, endAsBlank) { var ch = src[offset]; return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch; } }, { key: "nextNodeIsIndented", value: function nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) { if (!ch || indentDiff < 0) return false; if (indentDiff > 0) return true; return indicatorAsIndent && ch === '-'; } // should be at line or string end, or at next non-whitespace char
}, { key: "normalizeOffset", value: function normalizeOffset(src, offset) { var ch = src[offset]; return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset); } // fold single newline into space, multiple newlines to N - 1 newlines
// presumes src[offset] === '\n'
}, { key: "foldNewline", value: function foldNewline(src, offset, indent) { var inCount = 0; var error = false; var fold = ''; var ch = src[offset + 1];
while (ch === ' ' || ch === '\t' || ch === '\n') { switch (ch) { case '\n': inCount = 0; offset += 1; fold += '\n'; break;
case '\t': if (inCount <= indent) error = true; offset = Node.endOfWhiteSpace(src, offset + 2) - 1; break;
case ' ': inCount += 1; offset += 1; break; }
ch = src[offset + 1]; }
if (!fold) fold = ' '; if (ch && inCount <= indent) error = true; return { fold: fold, offset: offset, error: error }; } }]);
return Node; }();
var YAMLError = /*#__PURE__*/function (_Error) { _inherits(YAMLError, _Error);
var _super = _createSuper(YAMLError);
function YAMLError(name, source, message) { var _this;
_classCallCheck(this, YAMLError);
if (!message || !(source instanceof Node)) throw new Error("Invalid arguments for new ".concat(name)); _this = _super.call(this); _this.name = name; _this.message = message; _this.source = source; return _this; }
_createClass(YAMLError, [{ key: "makePretty", value: function makePretty() { if (!this.source) return; this.nodeType = this.source.type; var cst = this.source.context && this.source.context.root;
if (typeof this.offset === 'number') { this.range = new Range(this.offset, this.offset + 1); var start = cst && getLinePos(this.offset, cst);
if (start) { var end = { line: start.line, col: start.col + 1 }; this.linePos = { start: start, end: end }; }
delete this.offset; } else { this.range = this.source.range; this.linePos = this.source.rangeAsLinePos; }
if (this.linePos) { var _this$linePos$start = this.linePos.start, line = _this$linePos$start.line, col = _this$linePos$start.col; this.message += " at line ".concat(line, ", column ").concat(col); var ctx = cst && getPrettyContext(this.linePos, cst); if (ctx) this.message += ":\n\n".concat(ctx, "\n"); }
delete this.source; } }]);
return YAMLError; }( /*#__PURE__*/_wrapNativeSuper(Error)); var YAMLReferenceError = /*#__PURE__*/function (_YAMLError) { _inherits(YAMLReferenceError, _YAMLError);
var _super2 = _createSuper(YAMLReferenceError);
function YAMLReferenceError(source, message) { _classCallCheck(this, YAMLReferenceError);
return _super2.call(this, 'YAMLReferenceError', source, message); }
return YAMLReferenceError; }(YAMLError); var YAMLSemanticError = /*#__PURE__*/function (_YAMLError2) { _inherits(YAMLSemanticError, _YAMLError2);
var _super3 = _createSuper(YAMLSemanticError);
function YAMLSemanticError(source, message) { _classCallCheck(this, YAMLSemanticError);
return _super3.call(this, 'YAMLSemanticError', source, message); }
return YAMLSemanticError; }(YAMLError); var YAMLSyntaxError = /*#__PURE__*/function (_YAMLError3) { _inherits(YAMLSyntaxError, _YAMLError3);
var _super4 = _createSuper(YAMLSyntaxError);
function YAMLSyntaxError(source, message) { _classCallCheck(this, YAMLSyntaxError);
return _super4.call(this, 'YAMLSyntaxError', source, message); }
return YAMLSyntaxError; }(YAMLError); var YAMLWarning = /*#__PURE__*/function (_YAMLError4) { _inherits(YAMLWarning, _YAMLError4);
var _super5 = _createSuper(YAMLWarning);
function YAMLWarning(source, message) { _classCallCheck(this, YAMLWarning);
return _super5.call(this, 'YAMLWarning', source, message); }
return YAMLWarning; }(YAMLError);
var PlainValue = /*#__PURE__*/function (_Node) { _inherits(PlainValue, _Node);
var _super = _createSuper(PlainValue);
function PlainValue() { _classCallCheck(this, PlainValue);
return _super.apply(this, arguments); }
_createClass(PlainValue, [{ key: "strValue", get: function get() { if (!this.valueRange || !this.context) return null; var _this$valueRange = this.valueRange, start = _this$valueRange.start, end = _this$valueRange.end; var src = this.context.src; var ch = src[end - 1];
while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) { ch = src[--end - 1]; }
var str = '';
for (var i = start; i < end; ++i) { var _ch = src[i];
if (_ch === '\n') { var _Node$foldNewline = Node.foldNewline(src, i, -1), fold = _Node$foldNewline.fold, offset = _Node$foldNewline.offset;
str += fold; i = offset; } else if (_ch === ' ' || _ch === '\t') { // trim trailing whitespace
var wsStart = i; var next = src[i + 1];
while (i < end && (next === ' ' || next === '\t')) { i += 1; next = src[i + 1]; }
if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : _ch; } else { str += _ch; } }
var ch0 = src[start];
switch (ch0) { case '\t': { var msg = 'Plain value cannot start with a tab character'; var errors = [new YAMLSemanticError(this, msg)]; return { errors: errors, str: str }; }
case '@': case '`': { var _msg = "Plain value cannot start with reserved character ".concat(ch0);
var _errors = [new YAMLSemanticError(this, _msg)]; return { errors: _errors, str: str }; }
default: return str; } } }, { key: "parseBlockValue", value: function parseBlockValue(start) { var _this$context = this.context, indent = _this$context.indent, inFlow = _this$context.inFlow, src = _this$context.src; var offset = start; var valueEnd = start;
for (var ch = src[offset]; ch === '\n'; ch = src[offset]) { if (Node.atDocumentBoundary(src, offset + 1)) break; var end = Node.endOfBlockIndent(src, indent, offset + 1); if (end === null || src[end] === '#') break;
if (src[end] === '\n') { offset = end; } else { valueEnd = PlainValue.endOfLine(src, end, inFlow); offset = valueEnd; } }
if (this.valueRange.isEmpty()) this.valueRange.start = start; this.valueRange.end = valueEnd; return valueEnd; } /** * Parses a plain value from the source * * Accepted forms are: * ```
* #comment * * first line * * first line #comment * * first line * block * lines * * #comment * block * lines * ```
* where block lines are empty or have an indent level greater than `indent`. * * @param {ParseContext} context * @param {number} start - Index of first character * @returns {number} - Index of the character after this scalar, may be `\n` */
}, { key: "parse", value: function parse(context, start) { this.context = context; var inFlow = context.inFlow, src = context.src; var offset = start; var ch = src[offset];
if (ch && ch !== '#' && ch !== '\n') { offset = PlainValue.endOfLine(src, start, inFlow); }
this.valueRange = new Range(start, offset); offset = Node.endOfWhiteSpace(src, offset); offset = this.parseComment(offset);
if (!this.hasComment || this.valueRange.isEmpty()) { offset = this.parseBlockValue(offset); }
return offset; } }], [{ key: "endOfLine", value: function endOfLine(src, start, inFlow) { var ch = src[start]; var offset = start;
while (ch && ch !== '\n') { if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break; var next = src[offset + 1]; if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break; if ((ch === ' ' || ch === '\t') && next === '#') break; offset += 1; ch = next; }
return offset; } }]);
return PlainValue; }(Node);
export { Char as C, Node as N, PlainValue as P, Range as R, Type as T, YAMLSyntaxError as Y, _createForOfIteratorHelper as _, _typeof as a, _createClass as b, _classCallCheck as c, defaultTagPrefix as d, _defineProperty as e, YAMLWarning as f, YAMLSemanticError as g, _slicedToArray as h, YAMLError as i, _inherits as j, _createSuper as k, _get as l, _getPrototypeOf as m, defaultTags as n, YAMLReferenceError as o, _assertThisInitialized as p, _toArray as q, _possibleConstructorReturn as r };
|