yaml 1.8.3 → 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 +923 -38
- 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 -2
- package/browser/pair.js +2 -2
- package/browser/parse-cst.js +1 -1
- package/browser/scalar.js +2 -2
- package/browser/schema.js +8 -6
- package/browser/seq.js +2 -2
- package/browser/types/binary.js +3 -2
- package/browser/types/omap.js +3 -2
- package/browser/types/pairs.js +3 -2
- package/browser/types/set.js +3 -2
- package/browser/types/timestamp.js +6 -6
- package/browser/types.js +1 -11
- package/browser/util.js +1 -15
- 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 +21 -43
- 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 -14
- package/dist/types.js +23 -0
- package/dist/util.js +19 -0
- package/dist/warnings-39684f17.js +416 -0
- package/index.d.ts +372 -0
- package/index.js +1 -1
- package/map.js +2 -2
- package/package.json +32 -45
- package/pair.js +2 -2
- package/parse-cst.d.ts +187 -0
- 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 +407 -0
- package/types.js +16 -10
- package/types.mjs +15 -18
- package/util.d.ts +86 -0
- package/util.js +14 -13
- package/util.mjs +13 -19
- package/browser/dist/Anchors.js +0 -133
- package/browser/dist/Document.js +0 -819
- package/browser/dist/addComment.js +0 -8
- package/browser/dist/constants.js +0 -26
- package/browser/dist/cst/Alias.js +0 -42
- package/browser/dist/cst/BlankLine.js +0 -56
- package/browser/dist/cst/BlockValue.js +0 -247
- package/browser/dist/cst/Collection.js +0 -274
- package/browser/dist/cst/CollectionItem.js +0 -136
- package/browser/dist/cst/Comment.js +0 -40
- package/browser/dist/cst/Directive.js +0 -72
- package/browser/dist/cst/Document.js +0 -282
- package/browser/dist/cst/FlowCollection.js +0 -216
- package/browser/dist/cst/Node.js +0 -388
- package/browser/dist/cst/ParseContext.js +0 -248
- package/browser/dist/cst/PlainValue.js +0 -166
- package/browser/dist/cst/QuoteDouble.js +0 -241
- package/browser/dist/cst/QuoteSingle.js +0 -116
- package/browser/dist/cst/Range.js +0 -67
- package/browser/dist/cst/parse.js +0 -48
- package/browser/dist/cst/source-utils.js +0 -168
- package/browser/dist/errors.js +0 -112
- package/browser/dist/foldFlowLines.js +0 -138
- package/browser/dist/listTagNames.js +0 -28
- package/browser/dist/schema/Alias.js +0 -139
- package/browser/dist/schema/Collection.js +0 -267
- package/browser/dist/schema/Map.js +0 -178
- package/browser/dist/schema/Merge.js +0 -127
- package/browser/dist/schema/Node.js +0 -7
- package/browser/dist/schema/Pair.js +0 -171
- package/browser/dist/schema/Scalar.js +0 -38
- package/browser/dist/schema/Seq.js +0 -114
- package/browser/dist/schema/index.js +0 -382
- package/browser/dist/schema/parseMap.js +0 -312
- package/browser/dist/schema/parseSeq.js +0 -168
- package/browser/dist/schema/parseUtils.js +0 -110
- package/browser/dist/stringify.js +0 -331
- package/browser/dist/tags/core.js +0 -126
- package/browser/dist/tags/failsafe/index.js +0 -4
- package/browser/dist/tags/failsafe/map.js +0 -56
- package/browser/dist/tags/failsafe/seq.js +0 -43
- package/browser/dist/tags/failsafe/string.js +0 -28
- package/browser/dist/tags/index.js +0 -36
- package/browser/dist/tags/json.js +0 -76
- package/browser/dist/tags/options.js +0 -23
- package/browser/dist/tags/yaml-1.1/binary.js +0 -87
- package/browser/dist/tags/yaml-1.1/index.js +0 -157
- package/browser/dist/tags/yaml-1.1/omap.js +0 -142
- package/browser/dist/tags/yaml-1.1/pairs.js +0 -81
- package/browser/dist/tags/yaml-1.1/set.js +0 -114
- 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 -20
- package/browser/dist/warnings.js +0 -28
- package/dist/Anchors.js +0 -125
- package/dist/Document.js +0 -710
- package/dist/addComment.js +0 -17
- package/dist/constants.js +0 -34
- package/dist/cst/Alias.js +0 -38
- package/dist/cst/BlankLine.js +0 -56
- package/dist/cst/BlockValue.js +0 -248
- package/dist/cst/Collection.js +0 -271
- package/dist/cst/CollectionItem.js +0 -140
- package/dist/cst/Comment.js +0 -38
- package/dist/cst/Directive.js +0 -64
- package/dist/cst/Document.js +0 -281
- package/dist/cst/FlowCollection.js +0 -218
- package/dist/cst/Node.js +0 -365
- package/dist/cst/ParseContext.js +0 -258
- package/dist/cst/PlainValue.js +0 -161
- package/dist/cst/QuoteDouble.js +0 -237
- package/dist/cst/QuoteSingle.js +0 -113
- package/dist/cst/Range.js +0 -63
- package/dist/cst/parse.js +0 -55
- package/dist/cst/source-utils.js +0 -178
- package/dist/errors.js +0 -102
- package/dist/foldFlowLines.js +0 -146
- package/dist/listTagNames.js +0 -38
- package/dist/schema/Alias.js +0 -110
- package/dist/schema/Collection.js +0 -188
- package/dist/schema/Map.js +0 -103
- package/dist/schema/Merge.js +0 -80
- package/dist/schema/Node.js +0 -10
- package/dist/schema/Pair.js +0 -161
- package/dist/schema/Scalar.js +0 -31
- package/dist/schema/Seq.js +0 -78
- package/dist/schema/index.js +0 -315
- package/dist/schema/parseMap.js +0 -343
- package/dist/schema/parseSeq.js +0 -180
- package/dist/schema/parseUtils.js +0 -104
- package/dist/stringify.js +0 -358
- package/dist/tags/core.js +0 -114
- package/dist/tags/failsafe/index.js +0 -17
- package/dist/tags/failsafe/map.js +0 -37
- package/dist/tags/failsafe/seq.js +0 -34
- package/dist/tags/failsafe/string.js +0 -40
- package/dist/tags/index.js +0 -62
- package/dist/tags/json.js +0 -60
- package/dist/tags/options.js +0 -35
- package/dist/tags/yaml-1.1/binary.js +0 -97
- package/dist/tags/yaml-1.1/index.js +0 -131
- package/dist/tags/yaml-1.1/omap.js +0 -105
- package/dist/tags/yaml-1.1/pairs.js +0 -80
- package/dist/tags/yaml-1.1/set.js +0 -91
- package/dist/tags/yaml-1.1/timestamp.js +0 -93
- package/dist/toJSON.js +0 -23
- package/dist/warnings.js +0 -39
package/dist/addComment.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.addCommentBefore = addCommentBefore;
|
|
7
|
-
exports.default = addComment;
|
|
8
|
-
|
|
9
|
-
function addCommentBefore(str, indent, comment) {
|
|
10
|
-
if (!comment) return str;
|
|
11
|
-
const cc = comment.replace(/[\s\S]^/gm, `$&${indent}#`);
|
|
12
|
-
return `#${cc}\n${indent}${str}`;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function addComment(str, indent, comment) {
|
|
16
|
-
return !comment ? str : comment.indexOf('\n') === -1 ? `${str} #${comment}` : `${str}\n` + comment.replace(/^/gm, `${indent || ''}#`);
|
|
17
|
-
}
|
package/dist/constants.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.Type = exports.Char = void 0;
|
|
7
|
-
const Char = {
|
|
8
|
-
ANCHOR: '&',
|
|
9
|
-
COMMENT: '#',
|
|
10
|
-
TAG: '!',
|
|
11
|
-
DIRECTIVES_END: '-',
|
|
12
|
-
DOCUMENT_END: '.'
|
|
13
|
-
};
|
|
14
|
-
exports.Char = Char;
|
|
15
|
-
const Type = {
|
|
16
|
-
ALIAS: 'ALIAS',
|
|
17
|
-
BLANK_LINE: 'BLANK_LINE',
|
|
18
|
-
BLOCK_FOLDED: 'BLOCK_FOLDED',
|
|
19
|
-
BLOCK_LITERAL: 'BLOCK_LITERAL',
|
|
20
|
-
COMMENT: 'COMMENT',
|
|
21
|
-
DIRECTIVE: 'DIRECTIVE',
|
|
22
|
-
DOCUMENT: 'DOCUMENT',
|
|
23
|
-
FLOW_MAP: 'FLOW_MAP',
|
|
24
|
-
FLOW_SEQ: 'FLOW_SEQ',
|
|
25
|
-
MAP: 'MAP',
|
|
26
|
-
MAP_KEY: 'MAP_KEY',
|
|
27
|
-
MAP_VALUE: 'MAP_VALUE',
|
|
28
|
-
PLAIN: 'PLAIN',
|
|
29
|
-
QUOTE_DOUBLE: 'QUOTE_DOUBLE',
|
|
30
|
-
QUOTE_SINGLE: 'QUOTE_SINGLE',
|
|
31
|
-
SEQ: 'SEQ',
|
|
32
|
-
SEQ_ITEM: 'SEQ_ITEM'
|
|
33
|
-
};
|
|
34
|
-
exports.Type = Type;
|
package/dist/cst/Alias.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
9
|
-
|
|
10
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
class Alias extends _Node.default {
|
|
15
|
-
/**
|
|
16
|
-
* Parses an *alias from the source
|
|
17
|
-
*
|
|
18
|
-
* @param {ParseContext} context
|
|
19
|
-
* @param {number} start - Index of first character
|
|
20
|
-
* @returns {number} - Index of the character after this scalar
|
|
21
|
-
*/
|
|
22
|
-
parse(context, start) {
|
|
23
|
-
this.context = context;
|
|
24
|
-
const {
|
|
25
|
-
src
|
|
26
|
-
} = context;
|
|
27
|
-
|
|
28
|
-
let offset = _Node.default.endOfIdentifier(src, start + 1);
|
|
29
|
-
|
|
30
|
-
this.valueRange = new _Range.default(start + 1, offset);
|
|
31
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
32
|
-
offset = this.parseComment(offset);
|
|
33
|
-
return offset;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
exports.default = Alias;
|
package/dist/cst/BlankLine.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
11
|
-
|
|
12
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
class BlankLine extends _Node.default {
|
|
17
|
-
constructor() {
|
|
18
|
-
super(_constants.Type.BLANK_LINE);
|
|
19
|
-
}
|
|
20
|
-
/* istanbul ignore next */
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
get includesTrailingLines() {
|
|
24
|
-
// This is never called from anywhere, but if it were,
|
|
25
|
-
// this is the value it should return.
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Parses blank lines from the source
|
|
30
|
-
*
|
|
31
|
-
* @param {ParseContext} context
|
|
32
|
-
* @param {number} start - Index of first \n character
|
|
33
|
-
* @returns {number} - Index of the character after this
|
|
34
|
-
*/
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
parse(context, start) {
|
|
38
|
-
this.context = context;
|
|
39
|
-
const {
|
|
40
|
-
src
|
|
41
|
-
} = context;
|
|
42
|
-
let offset = start + 1;
|
|
43
|
-
|
|
44
|
-
while (_Node.default.atBlank(src, offset)) {
|
|
45
|
-
const lineEnd = _Node.default.endOfWhiteSpace(src, offset);
|
|
46
|
-
|
|
47
|
-
if (lineEnd === '\n') offset = lineEnd + 1;else break;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
this.range = new _Range.default(start, offset);
|
|
51
|
-
return offset;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
exports.default = BlankLine;
|
package/dist/cst/BlockValue.js
DELETED
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = exports.Chomp = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
11
|
-
|
|
12
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
const Chomp = {
|
|
17
|
-
CLIP: 'CLIP',
|
|
18
|
-
KEEP: 'KEEP',
|
|
19
|
-
STRIP: 'STRIP'
|
|
20
|
-
};
|
|
21
|
-
exports.Chomp = Chomp;
|
|
22
|
-
|
|
23
|
-
class BlockValue extends _Node.default {
|
|
24
|
-
constructor(type, props) {
|
|
25
|
-
super(type, props);
|
|
26
|
-
this.blockIndent = null;
|
|
27
|
-
this.chomping = Chomp.CLIP;
|
|
28
|
-
this.header = null;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
get includesTrailingLines() {
|
|
32
|
-
return this.chomping === Chomp.KEEP;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
get strValue() {
|
|
36
|
-
if (!this.valueRange || !this.context) return null;
|
|
37
|
-
let {
|
|
38
|
-
start,
|
|
39
|
-
end
|
|
40
|
-
} = this.valueRange;
|
|
41
|
-
const {
|
|
42
|
-
indent,
|
|
43
|
-
src
|
|
44
|
-
} = this.context;
|
|
45
|
-
if (this.valueRange.isEmpty()) return '';
|
|
46
|
-
let lastNewLine = null;
|
|
47
|
-
let ch = src[end - 1];
|
|
48
|
-
|
|
49
|
-
while (ch === '\n' || ch === '\t' || ch === ' ') {
|
|
50
|
-
end -= 1;
|
|
51
|
-
|
|
52
|
-
if (end <= start) {
|
|
53
|
-
if (this.chomping === Chomp.KEEP) break;else return ''; // probably never happens
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
if (ch === '\n') lastNewLine = end;
|
|
57
|
-
ch = src[end - 1];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
let keepStart = end + 1;
|
|
61
|
-
|
|
62
|
-
if (lastNewLine) {
|
|
63
|
-
if (this.chomping === Chomp.KEEP) {
|
|
64
|
-
keepStart = lastNewLine;
|
|
65
|
-
end = this.valueRange.end;
|
|
66
|
-
} else {
|
|
67
|
-
end = lastNewLine;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const bi = indent + this.blockIndent;
|
|
72
|
-
const folded = this.type === _constants.Type.BLOCK_FOLDED;
|
|
73
|
-
let atStart = true;
|
|
74
|
-
let str = '';
|
|
75
|
-
let sep = '';
|
|
76
|
-
let prevMoreIndented = false;
|
|
77
|
-
|
|
78
|
-
for (let i = start; i < end; ++i) {
|
|
79
|
-
for (let j = 0; j < bi; ++j) {
|
|
80
|
-
if (src[i] !== ' ') break;
|
|
81
|
-
i += 1;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
const ch = src[i];
|
|
85
|
-
|
|
86
|
-
if (ch === '\n') {
|
|
87
|
-
if (sep === '\n') str += '\n';else sep = '\n';
|
|
88
|
-
} else {
|
|
89
|
-
const lineEnd = _Node.default.endOfLine(src, i);
|
|
90
|
-
|
|
91
|
-
const line = src.slice(i, lineEnd);
|
|
92
|
-
i = lineEnd;
|
|
93
|
-
|
|
94
|
-
if (folded && (ch === ' ' || ch === '\t') && i < keepStart) {
|
|
95
|
-
if (sep === ' ') sep = '\n';else if (!prevMoreIndented && !atStart && sep === '\n') sep = '\n\n';
|
|
96
|
-
str += sep + line; //+ ((lineEnd < end && src[lineEnd]) || '')
|
|
97
|
-
|
|
98
|
-
sep = lineEnd < end && src[lineEnd] || '';
|
|
99
|
-
prevMoreIndented = true;
|
|
100
|
-
} else {
|
|
101
|
-
str += sep + line;
|
|
102
|
-
sep = folded && i < keepStart ? ' ' : '\n';
|
|
103
|
-
prevMoreIndented = false;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (atStart && line !== '') atStart = false;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return this.chomping === Chomp.STRIP ? str : str + '\n';
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
parseBlockHeader(start) {
|
|
114
|
-
const {
|
|
115
|
-
src
|
|
116
|
-
} = this.context;
|
|
117
|
-
let offset = start + 1;
|
|
118
|
-
let bi = '';
|
|
119
|
-
|
|
120
|
-
while (true) {
|
|
121
|
-
const ch = src[offset];
|
|
122
|
-
|
|
123
|
-
switch (ch) {
|
|
124
|
-
case '-':
|
|
125
|
-
this.chomping = Chomp.STRIP;
|
|
126
|
-
break;
|
|
127
|
-
|
|
128
|
-
case '+':
|
|
129
|
-
this.chomping = Chomp.KEEP;
|
|
130
|
-
break;
|
|
131
|
-
|
|
132
|
-
case '0':
|
|
133
|
-
case '1':
|
|
134
|
-
case '2':
|
|
135
|
-
case '3':
|
|
136
|
-
case '4':
|
|
137
|
-
case '5':
|
|
138
|
-
case '6':
|
|
139
|
-
case '7':
|
|
140
|
-
case '8':
|
|
141
|
-
case '9':
|
|
142
|
-
bi += ch;
|
|
143
|
-
break;
|
|
144
|
-
|
|
145
|
-
default:
|
|
146
|
-
this.blockIndent = Number(bi) || null;
|
|
147
|
-
this.header = new _Range.default(start, offset);
|
|
148
|
-
return offset;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
offset += 1;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
parseBlockValue(start) {
|
|
156
|
-
const {
|
|
157
|
-
indent,
|
|
158
|
-
src
|
|
159
|
-
} = this.context;
|
|
160
|
-
let offset = start;
|
|
161
|
-
let valueEnd = start;
|
|
162
|
-
let bi = this.blockIndent ? indent + this.blockIndent - 1 : indent;
|
|
163
|
-
let minBlockIndent = 1;
|
|
164
|
-
|
|
165
|
-
for (let ch = src[offset]; ch === '\n'; ch = src[offset]) {
|
|
166
|
-
offset += 1;
|
|
167
|
-
if (_Node.default.atDocumentBoundary(src, offset)) break;
|
|
168
|
-
|
|
169
|
-
const end = _Node.default.endOfBlockIndent(src, bi, offset); // should not include tab?
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (end === null) break;
|
|
173
|
-
|
|
174
|
-
if (!this.blockIndent) {
|
|
175
|
-
// no explicit block indent, none yet detected
|
|
176
|
-
const lineIndent = end - (offset + indent);
|
|
177
|
-
|
|
178
|
-
if (src[end] !== '\n') {
|
|
179
|
-
// first line with non-whitespace content
|
|
180
|
-
if (lineIndent < minBlockIndent) {
|
|
181
|
-
offset -= 1;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
this.blockIndent = lineIndent;
|
|
186
|
-
bi = indent + this.blockIndent - 1;
|
|
187
|
-
} else if (lineIndent > minBlockIndent) {
|
|
188
|
-
// empty line with more whitespace
|
|
189
|
-
minBlockIndent = lineIndent;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (src[end] === '\n') {
|
|
194
|
-
offset = end;
|
|
195
|
-
} else {
|
|
196
|
-
offset = valueEnd = _Node.default.endOfLine(src, end);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (this.chomping !== Chomp.KEEP) {
|
|
201
|
-
offset = src[valueEnd] ? valueEnd + 1 : valueEnd;
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
this.valueRange = new _Range.default(start + 1, offset);
|
|
205
|
-
return offset;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Parses a block value from the source
|
|
209
|
-
*
|
|
210
|
-
* Accepted forms are:
|
|
211
|
-
* ```
|
|
212
|
-
* BS
|
|
213
|
-
* block
|
|
214
|
-
* lines
|
|
215
|
-
*
|
|
216
|
-
* BS #comment
|
|
217
|
-
* block
|
|
218
|
-
* lines
|
|
219
|
-
* ```
|
|
220
|
-
* where the block style BS matches the regexp `[|>][-+1-9]*` and block lines
|
|
221
|
-
* are empty or have an indent level greater than `indent`.
|
|
222
|
-
*
|
|
223
|
-
* @param {ParseContext} context
|
|
224
|
-
* @param {number} start - Index of first character
|
|
225
|
-
* @returns {number} - Index of the character after this block
|
|
226
|
-
*/
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
parse(context, start) {
|
|
230
|
-
this.context = context;
|
|
231
|
-
const {
|
|
232
|
-
src
|
|
233
|
-
} = context;
|
|
234
|
-
let offset = this.parseBlockHeader(start);
|
|
235
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
236
|
-
offset = this.parseComment(offset);
|
|
237
|
-
offset = this.parseBlockValue(offset);
|
|
238
|
-
return offset;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
setOrigRanges(cr, offset) {
|
|
242
|
-
offset = super.setOrigRanges(cr, offset);
|
|
243
|
-
return this.header ? this.header.setOrigRange(cr, offset) : offset;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
exports.default = BlockValue;
|
package/dist/cst/Collection.js
DELETED
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.grabCollectionEndComments = grabCollectionEndComments;
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
|
|
9
|
-
var _constants = require("../constants");
|
|
10
|
-
|
|
11
|
-
var _BlankLine = _interopRequireDefault(require("./BlankLine"));
|
|
12
|
-
|
|
13
|
-
var _CollectionItem = _interopRequireDefault(require("./CollectionItem"));
|
|
14
|
-
|
|
15
|
-
var _Comment = _interopRequireDefault(require("./Comment"));
|
|
16
|
-
|
|
17
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
18
|
-
|
|
19
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
20
|
-
|
|
21
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
|
-
|
|
23
|
-
function grabCollectionEndComments(node) {
|
|
24
|
-
let cnode = node;
|
|
25
|
-
|
|
26
|
-
while (cnode instanceof _CollectionItem.default) cnode = cnode.node;
|
|
27
|
-
|
|
28
|
-
if (!(cnode instanceof Collection)) return null;
|
|
29
|
-
const len = cnode.items.length;
|
|
30
|
-
let ci = -1;
|
|
31
|
-
|
|
32
|
-
for (let i = len - 1; i >= 0; --i) {
|
|
33
|
-
const n = cnode.items[i];
|
|
34
|
-
|
|
35
|
-
if (n.type === _constants.Type.COMMENT) {
|
|
36
|
-
// Keep sufficiently indented comments with preceding node
|
|
37
|
-
const {
|
|
38
|
-
indent,
|
|
39
|
-
lineStart
|
|
40
|
-
} = n.context;
|
|
41
|
-
if (indent > 0 && n.range.start >= lineStart + indent) break;
|
|
42
|
-
ci = i;
|
|
43
|
-
} else if (n.type === _constants.Type.BLANK_LINE) ci = i;else break;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (ci === -1) return null;
|
|
47
|
-
const ca = cnode.items.splice(ci, len - ci);
|
|
48
|
-
const prevEnd = ca[0].range.start;
|
|
49
|
-
|
|
50
|
-
while (true) {
|
|
51
|
-
cnode.range.end = prevEnd;
|
|
52
|
-
if (cnode.valueRange && cnode.valueRange.end > prevEnd) cnode.valueRange.end = prevEnd;
|
|
53
|
-
if (cnode === node) break;
|
|
54
|
-
cnode = cnode.context.parent;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return ca;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
class Collection extends _Node.default {
|
|
61
|
-
static nextContentHasIndent(src, offset, indent) {
|
|
62
|
-
const lineStart = _Node.default.endOfLine(src, offset) + 1;
|
|
63
|
-
offset = _Node.default.endOfWhiteSpace(src, lineStart);
|
|
64
|
-
const ch = src[offset];
|
|
65
|
-
if (!ch) return false;
|
|
66
|
-
if (offset >= lineStart + indent) return true;
|
|
67
|
-
if (ch !== '#' && ch !== '\n') return false;
|
|
68
|
-
return Collection.nextContentHasIndent(src, offset, indent);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
constructor(firstItem) {
|
|
72
|
-
super(firstItem.type === _constants.Type.SEQ_ITEM ? _constants.Type.SEQ : _constants.Type.MAP);
|
|
73
|
-
|
|
74
|
-
for (let i = firstItem.props.length - 1; i >= 0; --i) {
|
|
75
|
-
if (firstItem.props[i].start < firstItem.context.lineStart) {
|
|
76
|
-
// props on previous line are assumed by the collection
|
|
77
|
-
this.props = firstItem.props.slice(0, i + 1);
|
|
78
|
-
firstItem.props = firstItem.props.slice(i + 1);
|
|
79
|
-
const itemRange = firstItem.props[0] || firstItem.valueRange;
|
|
80
|
-
firstItem.range.start = itemRange.start;
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
this.items = [firstItem];
|
|
86
|
-
const ec = grabCollectionEndComments(firstItem);
|
|
87
|
-
if (ec) Array.prototype.push.apply(this.items, ec);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
get includesTrailingLines() {
|
|
91
|
-
return this.items.length > 0;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* @param {ParseContext} context
|
|
95
|
-
* @param {number} start - Index of first character
|
|
96
|
-
* @returns {number} - Index of the character after this
|
|
97
|
-
*/
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
parse(context, start) {
|
|
101
|
-
this.context = context;
|
|
102
|
-
const {
|
|
103
|
-
parseNode,
|
|
104
|
-
src
|
|
105
|
-
} = context; // It's easier to recalculate lineStart here rather than tracking down the
|
|
106
|
-
// last context from which to read it -- eemeli/yaml#2
|
|
107
|
-
|
|
108
|
-
let lineStart = _Node.default.startOfLine(src, start);
|
|
109
|
-
|
|
110
|
-
const firstItem = this.items[0]; // First-item context needs to be correct for later comment handling
|
|
111
|
-
// -- eemeli/yaml#17
|
|
112
|
-
|
|
113
|
-
firstItem.context.parent = this;
|
|
114
|
-
this.valueRange = _Range.default.copy(firstItem.valueRange);
|
|
115
|
-
const indent = firstItem.range.start - firstItem.context.lineStart;
|
|
116
|
-
let offset = start;
|
|
117
|
-
offset = _Node.default.normalizeOffset(src, offset);
|
|
118
|
-
let ch = src[offset];
|
|
119
|
-
let atLineStart = _Node.default.endOfWhiteSpace(src, lineStart) === offset;
|
|
120
|
-
let prevIncludesTrailingLines = false;
|
|
121
|
-
|
|
122
|
-
while (ch) {
|
|
123
|
-
while (ch === '\n' || ch === '#') {
|
|
124
|
-
if (atLineStart && ch === '\n' && !prevIncludesTrailingLines) {
|
|
125
|
-
const blankLine = new _BlankLine.default();
|
|
126
|
-
offset = blankLine.parse({
|
|
127
|
-
src
|
|
128
|
-
}, offset);
|
|
129
|
-
this.valueRange.end = offset;
|
|
130
|
-
|
|
131
|
-
if (offset >= src.length) {
|
|
132
|
-
ch = null;
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
this.items.push(blankLine);
|
|
137
|
-
offset -= 1; // blankLine.parse() consumes terminal newline
|
|
138
|
-
} else if (ch === '#') {
|
|
139
|
-
if (offset < lineStart + indent && !Collection.nextContentHasIndent(src, offset, indent)) {
|
|
140
|
-
return offset;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const comment = new _Comment.default();
|
|
144
|
-
offset = comment.parse({
|
|
145
|
-
indent,
|
|
146
|
-
lineStart,
|
|
147
|
-
src
|
|
148
|
-
}, offset);
|
|
149
|
-
this.items.push(comment);
|
|
150
|
-
this.valueRange.end = offset;
|
|
151
|
-
|
|
152
|
-
if (offset >= src.length) {
|
|
153
|
-
ch = null;
|
|
154
|
-
break;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
lineStart = offset + 1;
|
|
159
|
-
offset = _Node.default.endOfIndent(src, lineStart);
|
|
160
|
-
|
|
161
|
-
if (_Node.default.atBlank(src, offset)) {
|
|
162
|
-
const wsEnd = _Node.default.endOfWhiteSpace(src, offset);
|
|
163
|
-
|
|
164
|
-
const next = src[wsEnd];
|
|
165
|
-
|
|
166
|
-
if (!next || next === '\n' || next === '#') {
|
|
167
|
-
offset = wsEnd;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
ch = src[offset];
|
|
172
|
-
atLineStart = true;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
if (!ch) {
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
if (offset !== lineStart + indent && (atLineStart || ch !== ':')) {
|
|
180
|
-
if (lineStart > start) offset = lineStart;
|
|
181
|
-
break;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (firstItem.type === _constants.Type.SEQ_ITEM !== (ch === '-')) {
|
|
185
|
-
let typeswitch = true;
|
|
186
|
-
|
|
187
|
-
if (ch === '-') {
|
|
188
|
-
// map key may start with -, as long as it's followed by a non-whitespace char
|
|
189
|
-
const next = src[offset + 1];
|
|
190
|
-
typeswitch = !next || next === '\n' || next === '\t' || next === ' ';
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (typeswitch) {
|
|
194
|
-
if (lineStart > start) offset = lineStart;
|
|
195
|
-
break;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const node = parseNode({
|
|
200
|
-
atLineStart,
|
|
201
|
-
inCollection: true,
|
|
202
|
-
indent,
|
|
203
|
-
lineStart,
|
|
204
|
-
parent: this
|
|
205
|
-
}, offset);
|
|
206
|
-
if (!node) return offset; // at next document start
|
|
207
|
-
|
|
208
|
-
this.items.push(node);
|
|
209
|
-
this.valueRange.end = node.valueRange.end;
|
|
210
|
-
offset = _Node.default.normalizeOffset(src, node.range.end);
|
|
211
|
-
ch = src[offset];
|
|
212
|
-
atLineStart = false;
|
|
213
|
-
prevIncludesTrailingLines = node.includesTrailingLines; // Need to reset lineStart and atLineStart here if preceding node's range
|
|
214
|
-
// has advanced to check the current line's indentation level
|
|
215
|
-
// -- eemeli/yaml#10 & eemeli/yaml#38
|
|
216
|
-
|
|
217
|
-
if (ch) {
|
|
218
|
-
let ls = offset - 1;
|
|
219
|
-
let prev = src[ls];
|
|
220
|
-
|
|
221
|
-
while (prev === ' ' || prev === '\t') prev = src[--ls];
|
|
222
|
-
|
|
223
|
-
if (prev === '\n') {
|
|
224
|
-
lineStart = ls + 1;
|
|
225
|
-
atLineStart = true;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
const ec = grabCollectionEndComments(node);
|
|
230
|
-
if (ec) Array.prototype.push.apply(this.items, ec);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
return offset;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
setOrigRanges(cr, offset) {
|
|
237
|
-
offset = super.setOrigRanges(cr, offset);
|
|
238
|
-
this.items.forEach(node => {
|
|
239
|
-
offset = node.setOrigRanges(cr, offset);
|
|
240
|
-
});
|
|
241
|
-
return offset;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
toString() {
|
|
245
|
-
const {
|
|
246
|
-
context: {
|
|
247
|
-
src
|
|
248
|
-
},
|
|
249
|
-
items,
|
|
250
|
-
range,
|
|
251
|
-
value
|
|
252
|
-
} = this;
|
|
253
|
-
if (value != null) return value;
|
|
254
|
-
let str = src.slice(range.start, items[0].range.start) + String(items[0]);
|
|
255
|
-
|
|
256
|
-
for (let i = 1; i < items.length; ++i) {
|
|
257
|
-
const item = items[i];
|
|
258
|
-
const {
|
|
259
|
-
atLineStart,
|
|
260
|
-
indent
|
|
261
|
-
} = item.context;
|
|
262
|
-
if (atLineStart) for (let i = 0; i < indent; ++i) str += ' ';
|
|
263
|
-
str += String(item);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
return _Node.default.addStringTerminator(src, range.end, str);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
exports.default = Collection;
|