yaml 1.9.2 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/browser/dist/PlainValue-ff5147c6.js +1277 -0
- package/browser/dist/Schema-2bf2c74e.js +679 -0
- package/browser/dist/index.js +869 -34
- package/browser/dist/legacy-exports.js +3 -0
- package/browser/dist/parse-cst.js +1904 -0
- package/browser/dist/resolveSeq-04825f30.js +2373 -0
- package/browser/dist/types.js +4 -0
- package/browser/dist/util.js +2 -0
- package/browser/dist/warnings-0e4b70d3.js +499 -0
- package/browser/index.js +1 -1
- package/browser/map.js +2 -4
- package/browser/pair.js +2 -4
- package/browser/parse-cst.js +1 -1
- package/browser/scalar.js +2 -4
- package/browser/schema.js +7 -10
- package/browser/seq.js +2 -4
- package/browser/types/binary.js +7 -5
- package/browser/types/omap.js +3 -4
- package/browser/types/pairs.js +3 -4
- package/browser/types/set.js +3 -4
- package/browser/types/timestamp.js +9 -5
- package/browser/types.js +1 -13
- package/browser/util.js +1 -18
- package/dist/Document-2cf6b08c.js +757 -0
- package/dist/PlainValue-ec8e588e.js +876 -0
- package/dist/Schema-42e9705c.js +522 -0
- package/dist/index.js +20 -84
- package/dist/legacy-exports.js +16 -0
- package/dist/parse-cst.js +1747 -0
- package/dist/resolveSeq-4a68b39b.js +2115 -0
- package/dist/test-events.js +11 -9
- package/dist/types.js +23 -0
- package/dist/util.js +19 -0
- package/dist/warnings-39684f17.js +416 -0
- package/index.d.ts +22 -8
- package/map.js +2 -2
- package/package.json +22 -39
- package/pair.js +2 -2
- package/parse-cst.js +1 -1
- package/scalar.js +2 -2
- package/schema.js +8 -6
- package/seq.js +2 -2
- package/types/binary.js +3 -2
- package/types/omap.js +3 -2
- package/types/pairs.js +3 -2
- package/types/set.js +3 -2
- package/types/timestamp.js +6 -6
- package/types.d.ts +113 -99
- package/types.js +16 -11
- package/types.mjs +15 -19
- package/util.js +14 -14
- package/util.mjs +13 -20
- package/browser/dist/Anchors.js +0 -130
- package/browser/dist/Document.js +0 -824
- package/browser/dist/addComment.js +0 -8
- package/browser/dist/constants.js +0 -26
- package/browser/dist/cst/Alias.js +0 -46
- package/browser/dist/cst/BlankLine.js +0 -52
- package/browser/dist/cst/BlockValue.js +0 -251
- package/browser/dist/cst/Collection.js +0 -278
- package/browser/dist/cst/CollectionItem.js +0 -140
- package/browser/dist/cst/Comment.js +0 -44
- package/browser/dist/cst/Directive.js +0 -76
- package/browser/dist/cst/Document.js +0 -286
- package/browser/dist/cst/FlowCollection.js +0 -220
- package/browser/dist/cst/Node.js +0 -386
- package/browser/dist/cst/ParseContext.js +0 -246
- package/browser/dist/cst/PlainValue.js +0 -170
- package/browser/dist/cst/QuoteDouble.js +0 -245
- package/browser/dist/cst/QuoteSingle.js +0 -120
- package/browser/dist/cst/Range.js +0 -64
- package/browser/dist/cst/parse.js +0 -48
- package/browser/dist/cst/source-utils.js +0 -168
- package/browser/dist/errors.js +0 -127
- package/browser/dist/foldFlowLines.js +0 -138
- package/browser/dist/listTagNames.js +0 -28
- package/browser/dist/schema/Alias.js +0 -135
- package/browser/dist/schema/Collection.js +0 -260
- package/browser/dist/schema/Map.js +0 -161
- package/browser/dist/schema/Merge.js +0 -118
- package/browser/dist/schema/Node.js +0 -4
- package/browser/dist/schema/Pair.js +0 -194
- package/browser/dist/schema/Scalar.js +0 -42
- package/browser/dist/schema/Seq.js +0 -116
- package/browser/dist/schema/index.js +0 -368
- package/browser/dist/schema/parseMap.js +0 -312
- package/browser/dist/schema/parseSeq.js +0 -168
- package/browser/dist/schema/parseUtils.js +0 -106
- package/browser/dist/stringify.js +0 -332
- package/browser/dist/tags/core.js +0 -141
- package/browser/dist/tags/failsafe/index.js +0 -4
- package/browser/dist/tags/failsafe/map.js +0 -53
- package/browser/dist/tags/failsafe/seq.js +0 -39
- package/browser/dist/tags/failsafe/string.js +0 -28
- package/browser/dist/tags/index.js +0 -36
- package/browser/dist/tags/json.js +0 -77
- package/browser/dist/tags/options.js +0 -26
- package/browser/dist/tags/yaml-1.1/binary.js +0 -87
- package/browser/dist/tags/yaml-1.1/index.js +0 -189
- package/browser/dist/tags/yaml-1.1/omap.js +0 -137
- package/browser/dist/tags/yaml-1.1/pairs.js +0 -78
- package/browser/dist/tags/yaml-1.1/set.js +0 -118
- package/browser/dist/tags/yaml-1.1/timestamp.js +0 -97
- package/browser/dist/test-events.js +0 -163
- package/browser/dist/toJSON.js +0 -19
- package/browser/dist/warnings.js +0 -39
- package/dist/Anchors.js +0 -120
- package/dist/Document.js +0 -714
- package/dist/addComment.js +0 -14
- package/dist/constants.js +0 -31
- package/dist/cst/Alias.js +0 -33
- package/dist/cst/BlankLine.js +0 -40
- package/dist/cst/BlockValue.js +0 -243
- package/dist/cst/Collection.js +0 -266
- package/dist/cst/CollectionItem.js +0 -135
- package/dist/cst/Comment.js +0 -33
- package/dist/cst/Directive.js +0 -59
- package/dist/cst/Document.js +0 -276
- package/dist/cst/FlowCollection.js +0 -213
- package/dist/cst/Node.js +0 -360
- package/dist/cst/ParseContext.js +0 -253
- package/dist/cst/PlainValue.js +0 -156
- package/dist/cst/QuoteDouble.js +0 -232
- package/dist/cst/QuoteSingle.js +0 -108
- package/dist/cst/Range.js +0 -60
- package/dist/cst/parse.js +0 -50
- package/dist/cst/source-utils.js +0 -175
- package/dist/errors.js +0 -97
- package/dist/foldFlowLines.js +0 -143
- package/dist/listTagNames.js +0 -33
- package/dist/schema/Alias.js +0 -105
- package/dist/schema/Collection.js +0 -184
- package/dist/schema/Map.js +0 -98
- package/dist/schema/Merge.js +0 -75
- package/dist/schema/Node.js +0 -7
- package/dist/schema/Pair.js +0 -174
- package/dist/schema/Scalar.js +0 -26
- package/dist/schema/Seq.js +0 -73
- package/dist/schema/index.js +0 -310
- package/dist/schema/parseMap.js +0 -334
- package/dist/schema/parseSeq.js +0 -175
- package/dist/schema/parseUtils.js +0 -101
- package/dist/stringify.js +0 -352
- package/dist/tags/core.js +0 -121
- package/dist/tags/failsafe/index.js +0 -12
- package/dist/tags/failsafe/map.js +0 -32
- package/dist/tags/failsafe/seq.js +0 -29
- package/dist/tags/failsafe/string.js +0 -37
- package/dist/tags/index.js +0 -53
- package/dist/tags/json.js +0 -64
- package/dist/tags/options.js +0 -36
- package/dist/tags/yaml-1.1/binary.js +0 -94
- package/dist/tags/yaml-1.1/index.js +0 -162
- package/dist/tags/yaml-1.1/omap.js +0 -100
- package/dist/tags/yaml-1.1/pairs.js +0 -75
- package/dist/tags/yaml-1.1/set.js +0 -82
- package/dist/tags/yaml-1.1/timestamp.js +0 -90
- package/dist/toJSON.js +0 -21
- package/dist/warnings.js +0 -48
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
-
import _get from "@babel/runtime/helpers/get";
|
|
4
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
5
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
6
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
7
|
-
|
|
8
|
-
function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
9
|
-
|
|
10
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
|
|
11
|
-
|
|
12
|
-
import { Type } from '../constants';
|
|
13
|
-
import { YAMLSemanticError } from '../errors';
|
|
14
|
-
import { BlankLine } from './BlankLine';
|
|
15
|
-
import { Comment } from './Comment';
|
|
16
|
-
import { Node } from './Node';
|
|
17
|
-
import { Range } from './Range';
|
|
18
|
-
export var FlowCollection = /*#__PURE__*/function (_Node) {
|
|
19
|
-
_inherits(FlowCollection, _Node);
|
|
20
|
-
|
|
21
|
-
var _super = _createSuper(FlowCollection);
|
|
22
|
-
|
|
23
|
-
function FlowCollection(type, props) {
|
|
24
|
-
var _this;
|
|
25
|
-
|
|
26
|
-
_classCallCheck(this, FlowCollection);
|
|
27
|
-
|
|
28
|
-
_this = _super.call(this, type, props);
|
|
29
|
-
_this.items = null;
|
|
30
|
-
return _this;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
_createClass(FlowCollection, [{
|
|
34
|
-
key: "prevNodeIsJsonLike",
|
|
35
|
-
value: function prevNodeIsJsonLike() {
|
|
36
|
-
var idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.items.length;
|
|
37
|
-
var node = this.items[idx - 1];
|
|
38
|
-
return !!node && (node.jsonLike || node.type === Type.COMMENT && this.prevNodeIsJsonLike(idx - 1));
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* @param {ParseContext} context
|
|
42
|
-
* @param {number} start - Index of first character
|
|
43
|
-
* @returns {number} - Index of the character after this
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
}, {
|
|
47
|
-
key: "parse",
|
|
48
|
-
value: function parse(context, start) {
|
|
49
|
-
this.context = context;
|
|
50
|
-
var parseNode = context.parseNode,
|
|
51
|
-
src = context.src;
|
|
52
|
-
var indent = context.indent,
|
|
53
|
-
lineStart = context.lineStart;
|
|
54
|
-
var char = src[start]; // { or [
|
|
55
|
-
|
|
56
|
-
this.items = [{
|
|
57
|
-
char: char,
|
|
58
|
-
offset: start
|
|
59
|
-
}];
|
|
60
|
-
var offset = Node.endOfWhiteSpace(src, start + 1);
|
|
61
|
-
char = src[offset];
|
|
62
|
-
|
|
63
|
-
while (char && char !== ']' && char !== '}') {
|
|
64
|
-
switch (char) {
|
|
65
|
-
case '\n':
|
|
66
|
-
{
|
|
67
|
-
lineStart = offset + 1;
|
|
68
|
-
var wsEnd = Node.endOfWhiteSpace(src, lineStart);
|
|
69
|
-
|
|
70
|
-
if (src[wsEnd] === '\n') {
|
|
71
|
-
var blankLine = new BlankLine();
|
|
72
|
-
lineStart = blankLine.parse({
|
|
73
|
-
src: src
|
|
74
|
-
}, lineStart);
|
|
75
|
-
this.items.push(blankLine);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
offset = Node.endOfIndent(src, lineStart);
|
|
79
|
-
|
|
80
|
-
if (offset <= lineStart + indent) {
|
|
81
|
-
char = src[offset];
|
|
82
|
-
|
|
83
|
-
if (offset < lineStart + indent || char !== ']' && char !== '}') {
|
|
84
|
-
var msg = 'Insufficient indentation in flow collection';
|
|
85
|
-
this.error = new YAMLSemanticError(this, msg);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
break;
|
|
90
|
-
|
|
91
|
-
case ',':
|
|
92
|
-
{
|
|
93
|
-
this.items.push({
|
|
94
|
-
char: char,
|
|
95
|
-
offset: offset
|
|
96
|
-
});
|
|
97
|
-
offset += 1;
|
|
98
|
-
}
|
|
99
|
-
break;
|
|
100
|
-
|
|
101
|
-
case '#':
|
|
102
|
-
{
|
|
103
|
-
var comment = new Comment();
|
|
104
|
-
offset = comment.parse({
|
|
105
|
-
src: src
|
|
106
|
-
}, offset);
|
|
107
|
-
this.items.push(comment);
|
|
108
|
-
}
|
|
109
|
-
break;
|
|
110
|
-
|
|
111
|
-
case '?':
|
|
112
|
-
case ':':
|
|
113
|
-
{
|
|
114
|
-
var next = src[offset + 1];
|
|
115
|
-
|
|
116
|
-
if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace
|
|
117
|
-
char === ':' && this.prevNodeIsJsonLike()) {
|
|
118
|
-
this.items.push({
|
|
119
|
-
char: char,
|
|
120
|
-
offset: offset
|
|
121
|
-
});
|
|
122
|
-
offset += 1;
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// fallthrough
|
|
127
|
-
|
|
128
|
-
default:
|
|
129
|
-
{
|
|
130
|
-
var node = parseNode({
|
|
131
|
-
atLineStart: false,
|
|
132
|
-
inCollection: false,
|
|
133
|
-
inFlow: true,
|
|
134
|
-
indent: -1,
|
|
135
|
-
lineStart: lineStart,
|
|
136
|
-
parent: this
|
|
137
|
-
}, offset);
|
|
138
|
-
|
|
139
|
-
if (!node) {
|
|
140
|
-
// at next document start
|
|
141
|
-
this.valueRange = new Range(start, offset);
|
|
142
|
-
return offset;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
this.items.push(node);
|
|
146
|
-
offset = Node.normalizeOffset(src, node.range.end);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
offset = Node.endOfWhiteSpace(src, offset);
|
|
151
|
-
char = src[offset];
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
this.valueRange = new Range(start, offset + 1);
|
|
155
|
-
|
|
156
|
-
if (char) {
|
|
157
|
-
this.items.push({
|
|
158
|
-
char: char,
|
|
159
|
-
offset: offset
|
|
160
|
-
});
|
|
161
|
-
offset = Node.endOfWhiteSpace(src, offset + 1);
|
|
162
|
-
offset = this.parseComment(offset);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return offset;
|
|
166
|
-
}
|
|
167
|
-
}, {
|
|
168
|
-
key: "setOrigRanges",
|
|
169
|
-
value: function setOrigRanges(cr, offset) {
|
|
170
|
-
offset = _get(_getPrototypeOf(FlowCollection.prototype), "setOrigRanges", this).call(this, cr, offset);
|
|
171
|
-
this.items.forEach(function (node) {
|
|
172
|
-
if (node instanceof Node) {
|
|
173
|
-
offset = node.setOrigRanges(cr, offset);
|
|
174
|
-
} else if (cr.length === 0) {
|
|
175
|
-
node.origOffset = node.offset;
|
|
176
|
-
} else {
|
|
177
|
-
var i = offset;
|
|
178
|
-
|
|
179
|
-
while (i < cr.length) {
|
|
180
|
-
if (cr[i] > node.offset) break;else ++i;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
node.origOffset = node.offset + i;
|
|
184
|
-
offset = i;
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
return offset;
|
|
188
|
-
}
|
|
189
|
-
}, {
|
|
190
|
-
key: "toString",
|
|
191
|
-
value: function toString() {
|
|
192
|
-
var src = this.context.src,
|
|
193
|
-
items = this.items,
|
|
194
|
-
range = this.range,
|
|
195
|
-
value = this.value;
|
|
196
|
-
if (value != null) return value;
|
|
197
|
-
var nodes = items.filter(function (item) {
|
|
198
|
-
return item instanceof Node;
|
|
199
|
-
});
|
|
200
|
-
var str = '';
|
|
201
|
-
var prevEnd = range.start;
|
|
202
|
-
nodes.forEach(function (node) {
|
|
203
|
-
var prefix = src.slice(prevEnd, node.range.start);
|
|
204
|
-
prevEnd = node.range.end;
|
|
205
|
-
str += prefix + String(node);
|
|
206
|
-
|
|
207
|
-
if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') {
|
|
208
|
-
// Comment range does not include the terminal newline, but its
|
|
209
|
-
// stringified value does. Without this fix, newlines at comment ends
|
|
210
|
-
// get duplicated.
|
|
211
|
-
prevEnd += 1;
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
str += src.slice(prevEnd, range.end);
|
|
215
|
-
return Node.addStringTerminator(src, range.end, str);
|
|
216
|
-
}
|
|
217
|
-
}]);
|
|
218
|
-
|
|
219
|
-
return FlowCollection;
|
|
220
|
-
}(Node);
|
package/browser/dist/cst/Node.js
DELETED
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
|
-
import { Char, Type } from '../constants';
|
|
5
|
-
import { getLinePos } from './source-utils';
|
|
6
|
-
import { Range } from './Range';
|
|
7
|
-
/** Root class of all nodes */
|
|
8
|
-
|
|
9
|
-
export var Node = /*#__PURE__*/function () {
|
|
10
|
-
_createClass(Node, null, [{
|
|
11
|
-
key: "addStringTerminator",
|
|
12
|
-
value: function addStringTerminator(src, offset, str) {
|
|
13
|
-
if (str[str.length - 1] === '\n') return str;
|
|
14
|
-
var next = Node.endOfWhiteSpace(src, offset);
|
|
15
|
-
return next >= src.length || src[next] === '\n' ? str + '\n' : str;
|
|
16
|
-
} // ^(---|...)
|
|
17
|
-
|
|
18
|
-
}, {
|
|
19
|
-
key: "atDocumentBoundary",
|
|
20
|
-
value: function atDocumentBoundary(src, offset, sep) {
|
|
21
|
-
var ch0 = src[offset];
|
|
22
|
-
if (!ch0) return true;
|
|
23
|
-
var prev = src[offset - 1];
|
|
24
|
-
if (prev && prev !== '\n') return false;
|
|
25
|
-
|
|
26
|
-
if (sep) {
|
|
27
|
-
if (ch0 !== sep) return false;
|
|
28
|
-
} else {
|
|
29
|
-
if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) return false;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
var ch1 = src[offset + 1];
|
|
33
|
-
var ch2 = src[offset + 2];
|
|
34
|
-
if (ch1 !== ch0 || ch2 !== ch0) return false;
|
|
35
|
-
var ch3 = src[offset + 3];
|
|
36
|
-
return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' ';
|
|
37
|
-
}
|
|
38
|
-
}, {
|
|
39
|
-
key: "endOfIdentifier",
|
|
40
|
-
value: function endOfIdentifier(src, offset) {
|
|
41
|
-
var ch = src[offset];
|
|
42
|
-
var isVerbatim = ch === '<';
|
|
43
|
-
var notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
|
|
44
|
-
|
|
45
|
-
while (ch && notOk.indexOf(ch) === -1) {
|
|
46
|
-
ch = src[offset += 1];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (isVerbatim && ch === '>') offset += 1;
|
|
50
|
-
return offset;
|
|
51
|
-
}
|
|
52
|
-
}, {
|
|
53
|
-
key: "endOfIndent",
|
|
54
|
-
value: function endOfIndent(src, offset) {
|
|
55
|
-
var ch = src[offset];
|
|
56
|
-
|
|
57
|
-
while (ch === ' ') {
|
|
58
|
-
ch = src[offset += 1];
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return offset;
|
|
62
|
-
}
|
|
63
|
-
}, {
|
|
64
|
-
key: "endOfLine",
|
|
65
|
-
value: function endOfLine(src, offset) {
|
|
66
|
-
var ch = src[offset];
|
|
67
|
-
|
|
68
|
-
while (ch && ch !== '\n') {
|
|
69
|
-
ch = src[offset += 1];
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
return offset;
|
|
73
|
-
}
|
|
74
|
-
}, {
|
|
75
|
-
key: "endOfWhiteSpace",
|
|
76
|
-
value: function endOfWhiteSpace(src, offset) {
|
|
77
|
-
var ch = src[offset];
|
|
78
|
-
|
|
79
|
-
while (ch === '\t' || ch === ' ') {
|
|
80
|
-
ch = src[offset += 1];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return offset;
|
|
84
|
-
}
|
|
85
|
-
}, {
|
|
86
|
-
key: "startOfLine",
|
|
87
|
-
value: function startOfLine(src, offset) {
|
|
88
|
-
var ch = src[offset - 1];
|
|
89
|
-
if (ch === '\n') return offset;
|
|
90
|
-
|
|
91
|
-
while (ch && ch !== '\n') {
|
|
92
|
-
ch = src[offset -= 1];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
return offset + 1;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* End of indentation, or null if the line's indent level is not more
|
|
99
|
-
* than `indent`
|
|
100
|
-
*
|
|
101
|
-
* @param {string} src
|
|
102
|
-
* @param {number} indent
|
|
103
|
-
* @param {number} lineStart
|
|
104
|
-
* @returns {?number}
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
}, {
|
|
108
|
-
key: "endOfBlockIndent",
|
|
109
|
-
value: function endOfBlockIndent(src, indent, lineStart) {
|
|
110
|
-
var inEnd = Node.endOfIndent(src, lineStart);
|
|
111
|
-
|
|
112
|
-
if (inEnd > lineStart + indent) {
|
|
113
|
-
return inEnd;
|
|
114
|
-
} else {
|
|
115
|
-
var wsEnd = Node.endOfWhiteSpace(src, inEnd);
|
|
116
|
-
var ch = src[wsEnd];
|
|
117
|
-
if (!ch || ch === '\n') return wsEnd;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
}, {
|
|
123
|
-
key: "atBlank",
|
|
124
|
-
value: function atBlank(src, offset, endAsBlank) {
|
|
125
|
-
var ch = src[offset];
|
|
126
|
-
return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch;
|
|
127
|
-
}
|
|
128
|
-
}, {
|
|
129
|
-
key: "nextNodeIsIndented",
|
|
130
|
-
value: function nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {
|
|
131
|
-
if (!ch || indentDiff < 0) return false;
|
|
132
|
-
if (indentDiff > 0) return true;
|
|
133
|
-
return indicatorAsIndent && ch === '-';
|
|
134
|
-
} // should be at line or string end, or at next non-whitespace char
|
|
135
|
-
|
|
136
|
-
}, {
|
|
137
|
-
key: "normalizeOffset",
|
|
138
|
-
value: function normalizeOffset(src, offset) {
|
|
139
|
-
var ch = src[offset];
|
|
140
|
-
return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);
|
|
141
|
-
} // fold single newline into space, multiple newlines to N - 1 newlines
|
|
142
|
-
// presumes src[offset] === '\n'
|
|
143
|
-
|
|
144
|
-
}, {
|
|
145
|
-
key: "foldNewline",
|
|
146
|
-
value: function foldNewline(src, offset, indent) {
|
|
147
|
-
var inCount = 0;
|
|
148
|
-
var error = false;
|
|
149
|
-
var fold = '';
|
|
150
|
-
var ch = src[offset + 1];
|
|
151
|
-
|
|
152
|
-
while (ch === ' ' || ch === '\t' || ch === '\n') {
|
|
153
|
-
switch (ch) {
|
|
154
|
-
case '\n':
|
|
155
|
-
inCount = 0;
|
|
156
|
-
offset += 1;
|
|
157
|
-
fold += '\n';
|
|
158
|
-
break;
|
|
159
|
-
|
|
160
|
-
case '\t':
|
|
161
|
-
if (inCount <= indent) error = true;
|
|
162
|
-
offset = Node.endOfWhiteSpace(src, offset + 2) - 1;
|
|
163
|
-
break;
|
|
164
|
-
|
|
165
|
-
case ' ':
|
|
166
|
-
inCount += 1;
|
|
167
|
-
offset += 1;
|
|
168
|
-
break;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
ch = src[offset + 1];
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (!fold) fold = ' ';
|
|
175
|
-
if (ch && inCount <= indent) error = true;
|
|
176
|
-
return {
|
|
177
|
-
fold: fold,
|
|
178
|
-
offset: offset,
|
|
179
|
-
error: error
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
}]);
|
|
183
|
-
|
|
184
|
-
function Node(type, props, context) {
|
|
185
|
-
_classCallCheck(this, Node);
|
|
186
|
-
|
|
187
|
-
Object.defineProperty(this, 'context', {
|
|
188
|
-
value: context || null,
|
|
189
|
-
writable: true
|
|
190
|
-
});
|
|
191
|
-
this.error = null;
|
|
192
|
-
this.range = null;
|
|
193
|
-
this.valueRange = null;
|
|
194
|
-
this.props = props || [];
|
|
195
|
-
this.type = type;
|
|
196
|
-
this.value = null;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
_createClass(Node, [{
|
|
200
|
-
key: "getPropValue",
|
|
201
|
-
value: function getPropValue(idx, key, skipKey) {
|
|
202
|
-
if (!this.context) return null;
|
|
203
|
-
var src = this.context.src;
|
|
204
|
-
var prop = this.props[idx];
|
|
205
|
-
return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;
|
|
206
|
-
}
|
|
207
|
-
}, {
|
|
208
|
-
key: "commentHasRequiredWhitespace",
|
|
209
|
-
value: function commentHasRequiredWhitespace(start) {
|
|
210
|
-
var src = this.context.src;
|
|
211
|
-
if (this.header && start === this.header.end) return false;
|
|
212
|
-
if (!this.valueRange) return false;
|
|
213
|
-
var end = this.valueRange.end;
|
|
214
|
-
return start !== end || Node.atBlank(src, end - 1);
|
|
215
|
-
}
|
|
216
|
-
}, {
|
|
217
|
-
key: "parseComment",
|
|
218
|
-
value: function parseComment(start) {
|
|
219
|
-
var src = this.context.src;
|
|
220
|
-
|
|
221
|
-
if (src[start] === Char.COMMENT) {
|
|
222
|
-
var end = Node.endOfLine(src, start + 1);
|
|
223
|
-
var commentRange = new Range(start, end);
|
|
224
|
-
this.props.push(commentRange);
|
|
225
|
-
return end;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return start;
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Populates the `origStart` and `origEnd` values of all ranges for this
|
|
232
|
-
* node. Extended by child classes to handle descendant nodes.
|
|
233
|
-
*
|
|
234
|
-
* @param {number[]} cr - Positions of dropped CR characters
|
|
235
|
-
* @param {number} offset - Starting index of `cr` from the last call
|
|
236
|
-
* @returns {number} - The next offset, matching the one found for `origStart`
|
|
237
|
-
*/
|
|
238
|
-
|
|
239
|
-
}, {
|
|
240
|
-
key: "setOrigRanges",
|
|
241
|
-
value: function setOrigRanges(cr, offset) {
|
|
242
|
-
if (this.range) offset = this.range.setOrigRange(cr, offset);
|
|
243
|
-
if (this.valueRange) this.valueRange.setOrigRange(cr, offset);
|
|
244
|
-
this.props.forEach(function (prop) {
|
|
245
|
-
return prop.setOrigRange(cr, offset);
|
|
246
|
-
});
|
|
247
|
-
return offset;
|
|
248
|
-
}
|
|
249
|
-
}, {
|
|
250
|
-
key: "toString",
|
|
251
|
-
value: function toString() {
|
|
252
|
-
var src = this.context.src,
|
|
253
|
-
range = this.range,
|
|
254
|
-
value = this.value;
|
|
255
|
-
if (value != null) return value;
|
|
256
|
-
var str = src.slice(range.start, range.end);
|
|
257
|
-
return Node.addStringTerminator(src, range.end, str);
|
|
258
|
-
}
|
|
259
|
-
}, {
|
|
260
|
-
key: "anchor",
|
|
261
|
-
get: function get() {
|
|
262
|
-
for (var i = 0; i < this.props.length; ++i) {
|
|
263
|
-
var anchor = this.getPropValue(i, Char.ANCHOR, true);
|
|
264
|
-
if (anchor != null) return anchor;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return null;
|
|
268
|
-
}
|
|
269
|
-
}, {
|
|
270
|
-
key: "comment",
|
|
271
|
-
get: function get() {
|
|
272
|
-
var comments = [];
|
|
273
|
-
|
|
274
|
-
for (var i = 0; i < this.props.length; ++i) {
|
|
275
|
-
var comment = this.getPropValue(i, Char.COMMENT, true);
|
|
276
|
-
if (comment != null) comments.push(comment);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return comments.length > 0 ? comments.join('\n') : null;
|
|
280
|
-
}
|
|
281
|
-
}, {
|
|
282
|
-
key: "hasComment",
|
|
283
|
-
get: function get() {
|
|
284
|
-
if (this.context) {
|
|
285
|
-
var src = this.context.src;
|
|
286
|
-
|
|
287
|
-
for (var i = 0; i < this.props.length; ++i) {
|
|
288
|
-
if (src[this.props[i].start] === Char.COMMENT) return true;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
return false;
|
|
293
|
-
}
|
|
294
|
-
}, {
|
|
295
|
-
key: "hasProps",
|
|
296
|
-
get: function get() {
|
|
297
|
-
if (this.context) {
|
|
298
|
-
var src = this.context.src;
|
|
299
|
-
|
|
300
|
-
for (var i = 0; i < this.props.length; ++i) {
|
|
301
|
-
if (src[this.props[i].start] !== Char.COMMENT) return true;
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
return false;
|
|
306
|
-
}
|
|
307
|
-
}, {
|
|
308
|
-
key: "includesTrailingLines",
|
|
309
|
-
get: function get() {
|
|
310
|
-
return false;
|
|
311
|
-
}
|
|
312
|
-
}, {
|
|
313
|
-
key: "jsonLike",
|
|
314
|
-
get: function get() {
|
|
315
|
-
var jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE];
|
|
316
|
-
return jsonLikeTypes.indexOf(this.type) !== -1;
|
|
317
|
-
}
|
|
318
|
-
}, {
|
|
319
|
-
key: "rangeAsLinePos",
|
|
320
|
-
get: function get() {
|
|
321
|
-
if (!this.range || !this.context) return undefined;
|
|
322
|
-
var start = getLinePos(this.range.start, this.context.root);
|
|
323
|
-
if (!start) return undefined;
|
|
324
|
-
var end = getLinePos(this.range.end, this.context.root);
|
|
325
|
-
return {
|
|
326
|
-
start: start,
|
|
327
|
-
end: end
|
|
328
|
-
};
|
|
329
|
-
}
|
|
330
|
-
}, {
|
|
331
|
-
key: "rawValue",
|
|
332
|
-
get: function get() {
|
|
333
|
-
if (!this.valueRange || !this.context) return null;
|
|
334
|
-
var _this$valueRange = this.valueRange,
|
|
335
|
-
start = _this$valueRange.start,
|
|
336
|
-
end = _this$valueRange.end;
|
|
337
|
-
return this.context.src.slice(start, end);
|
|
338
|
-
}
|
|
339
|
-
}, {
|
|
340
|
-
key: "tag",
|
|
341
|
-
get: function get() {
|
|
342
|
-
for (var i = 0; i < this.props.length; ++i) {
|
|
343
|
-
var tag = this.getPropValue(i, Char.TAG, false);
|
|
344
|
-
|
|
345
|
-
if (tag != null) {
|
|
346
|
-
if (tag[1] === '<') {
|
|
347
|
-
return {
|
|
348
|
-
verbatim: tag.slice(2, -1)
|
|
349
|
-
};
|
|
350
|
-
} else {
|
|
351
|
-
// eslint-disable-next-line no-unused-vars
|
|
352
|
-
var _tag$match = tag.match(/^(.*!)([^!]*)$/),
|
|
353
|
-
_tag$match2 = _slicedToArray(_tag$match, 3),
|
|
354
|
-
_ = _tag$match2[0],
|
|
355
|
-
handle = _tag$match2[1],
|
|
356
|
-
suffix = _tag$match2[2];
|
|
357
|
-
|
|
358
|
-
return {
|
|
359
|
-
handle: handle,
|
|
360
|
-
suffix: suffix
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
return null;
|
|
367
|
-
}
|
|
368
|
-
}, {
|
|
369
|
-
key: "valueRangeContainsNewline",
|
|
370
|
-
get: function get() {
|
|
371
|
-
if (!this.valueRange || !this.context) return false;
|
|
372
|
-
var _this$valueRange2 = this.valueRange,
|
|
373
|
-
start = _this$valueRange2.start,
|
|
374
|
-
end = _this$valueRange2.end;
|
|
375
|
-
var src = this.context.src;
|
|
376
|
-
|
|
377
|
-
for (var i = start; i < end; ++i) {
|
|
378
|
-
if (src[i] === '\n') return true;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
return false;
|
|
382
|
-
}
|
|
383
|
-
}]);
|
|
384
|
-
|
|
385
|
-
return Node;
|
|
386
|
-
}();
|