yaml 1.9.1 → 1.10.2
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 +25 -25
- package/browser/dist/PlainValue-b8036b75.js +1275 -0
- package/browser/dist/Schema-e94716c8.js +682 -0
- package/browser/dist/index.js +860 -27
- package/browser/dist/legacy-exports.js +3 -0
- package/browser/dist/package.json +1 -0
- package/browser/dist/parse-cst.js +1904 -0
- package/browser/dist/resolveSeq-492ab440.js +2419 -0
- package/browser/dist/types.js +4 -0
- package/browser/dist/util.js +2 -0
- package/browser/dist/warnings-df54cb69.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-9b4560a1.js +757 -0
- package/dist/PlainValue-ec8e588e.js +876 -0
- package/dist/Schema-88e323a7.js +525 -0
- package/dist/index.js +20 -84
- package/dist/legacy-exports.js +16 -0
- package/dist/parse-cst.js +1753 -0
- package/dist/resolveSeq-d03cb037.js +2161 -0
- package/dist/test-events.js +11 -9
- package/dist/types.js +23 -0
- package/dist/util.js +19 -0
- package/dist/warnings-1000a372.js +416 -0
- package/index.d.ts +23 -9
- package/map.js +2 -2
- package/package.json +27 -42
- package/pair.js +2 -2
- package/parse-cst.d.ts +4 -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 +113 -98
- 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
package/dist/cst/source-utils.js
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.getLinePos = getLinePos;
|
|
4
|
-
exports.getLine = getLine;
|
|
5
|
-
exports.getPrettyContext = getPrettyContext;
|
|
6
|
-
|
|
7
|
-
function findLineStarts(src) {
|
|
8
|
-
const ls = [0];
|
|
9
|
-
let offset = src.indexOf('\n');
|
|
10
|
-
|
|
11
|
-
while (offset !== -1) {
|
|
12
|
-
offset += 1;
|
|
13
|
-
ls.push(offset);
|
|
14
|
-
offset = src.indexOf('\n', offset);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
return ls;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function getSrcInfo(cst) {
|
|
21
|
-
let lineStarts, src;
|
|
22
|
-
|
|
23
|
-
if (typeof cst === 'string') {
|
|
24
|
-
lineStarts = findLineStarts(cst);
|
|
25
|
-
src = cst;
|
|
26
|
-
} else {
|
|
27
|
-
if (Array.isArray(cst)) cst = cst[0];
|
|
28
|
-
|
|
29
|
-
if (cst && cst.context) {
|
|
30
|
-
if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
|
|
31
|
-
lineStarts = cst.lineStarts;
|
|
32
|
-
src = cst.context.src;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return {
|
|
37
|
-
lineStarts,
|
|
38
|
-
src
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* @typedef {Object} LinePos - One-indexed position in the source
|
|
43
|
-
* @property {number} line
|
|
44
|
-
* @property {number} col
|
|
45
|
-
*/
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Determine the line/col position matching a character offset.
|
|
49
|
-
*
|
|
50
|
-
* Accepts a source string or a CST document as the second parameter. With
|
|
51
|
-
* the latter, starting indices for lines are cached in the document as
|
|
52
|
-
* `lineStarts: number[]`.
|
|
53
|
-
*
|
|
54
|
-
* Returns a one-indexed `{ line, col }` location if found, or
|
|
55
|
-
* `undefined` otherwise.
|
|
56
|
-
*
|
|
57
|
-
* @param {number} offset
|
|
58
|
-
* @param {string|Document|Document[]} cst
|
|
59
|
-
* @returns {?LinePos}
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
function getLinePos(offset, cst) {
|
|
64
|
-
if (typeof offset !== 'number' || offset < 0) return null;
|
|
65
|
-
const {
|
|
66
|
-
lineStarts,
|
|
67
|
-
src
|
|
68
|
-
} = getSrcInfo(cst);
|
|
69
|
-
if (!lineStarts || !src || offset > src.length) return null;
|
|
70
|
-
|
|
71
|
-
for (let i = 0; i < lineStarts.length; ++i) {
|
|
72
|
-
const start = lineStarts[i];
|
|
73
|
-
|
|
74
|
-
if (offset < start) {
|
|
75
|
-
return {
|
|
76
|
-
line: i,
|
|
77
|
-
col: offset - lineStarts[i - 1] + 1
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (offset === start) return {
|
|
82
|
-
line: i + 1,
|
|
83
|
-
col: 1
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
const line = lineStarts.length;
|
|
88
|
-
return {
|
|
89
|
-
line,
|
|
90
|
-
col: offset - lineStarts[line - 1] + 1
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Get a specified line from the source.
|
|
95
|
-
*
|
|
96
|
-
* Accepts a source string or a CST document as the second parameter. With
|
|
97
|
-
* the latter, starting indices for lines are cached in the document as
|
|
98
|
-
* `lineStarts: number[]`.
|
|
99
|
-
*
|
|
100
|
-
* Returns the line as a string if found, or `null` otherwise.
|
|
101
|
-
*
|
|
102
|
-
* @param {number} line One-indexed line number
|
|
103
|
-
* @param {string|Document|Document[]} cst
|
|
104
|
-
* @returns {?string}
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
function getLine(line, cst) {
|
|
109
|
-
const {
|
|
110
|
-
lineStarts,
|
|
111
|
-
src
|
|
112
|
-
} = getSrcInfo(cst);
|
|
113
|
-
if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
|
|
114
|
-
const start = lineStarts[line - 1];
|
|
115
|
-
let end = lineStarts[line]; // undefined for last line; that's ok for slice()
|
|
116
|
-
|
|
117
|
-
while (end && end > start && src[end - 1] === '\n') --end;
|
|
118
|
-
|
|
119
|
-
return src.slice(start, end);
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Pretty-print the starting line from the source indicated by the range `pos`
|
|
123
|
-
*
|
|
124
|
-
* Trims output to `maxWidth` chars while keeping the starting column visible,
|
|
125
|
-
* using `…` at either end to indicate dropped characters.
|
|
126
|
-
*
|
|
127
|
-
* Returns a two-line string (or `null`) with `\n` as separator; the second line
|
|
128
|
-
* will hold appropriately indented `^` marks indicating the column range.
|
|
129
|
-
*
|
|
130
|
-
* @param {Object} pos
|
|
131
|
-
* @param {LinePos} pos.start
|
|
132
|
-
* @param {LinePos} [pos.end]
|
|
133
|
-
* @param {string|Document|Document[]*} cst
|
|
134
|
-
* @param {number} [maxWidth=80]
|
|
135
|
-
* @returns {?string}
|
|
136
|
-
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
function getPrettyContext({
|
|
140
|
-
start,
|
|
141
|
-
end
|
|
142
|
-
}, cst, maxWidth = 80) {
|
|
143
|
-
let src = getLine(start.line, cst);
|
|
144
|
-
if (!src) return null;
|
|
145
|
-
let {
|
|
146
|
-
col
|
|
147
|
-
} = start;
|
|
148
|
-
|
|
149
|
-
if (src.length > maxWidth) {
|
|
150
|
-
if (col <= maxWidth - 10) {
|
|
151
|
-
src = src.substr(0, maxWidth - 1) + '…';
|
|
152
|
-
} else {
|
|
153
|
-
const halfWidth = Math.round(maxWidth / 2);
|
|
154
|
-
if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
|
|
155
|
-
col -= src.length - maxWidth;
|
|
156
|
-
src = '…' + src.substr(1 - maxWidth);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
let errLen = 1;
|
|
161
|
-
let errEnd = '';
|
|
162
|
-
|
|
163
|
-
if (end) {
|
|
164
|
-
if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
|
|
165
|
-
errLen = end.col - start.col;
|
|
166
|
-
} else {
|
|
167
|
-
errLen = Math.min(src.length + 1, maxWidth) - col;
|
|
168
|
-
errEnd = '…';
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const offset = col > 1 ? ' '.repeat(col - 1) : '';
|
|
173
|
-
const err = '^'.repeat(errLen);
|
|
174
|
-
return `${src}\n${offset}${err}${errEnd}`;
|
|
175
|
-
}
|
package/dist/errors.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.YAMLWarning = exports.YAMLSyntaxError = exports.YAMLSemanticError = exports.YAMLReferenceError = exports.YAMLError = void 0;
|
|
4
|
-
|
|
5
|
-
var _Node = require("./cst/Node");
|
|
6
|
-
|
|
7
|
-
var _sourceUtils = require("./cst/source-utils");
|
|
8
|
-
|
|
9
|
-
var _Range = require("./cst/Range");
|
|
10
|
-
|
|
11
|
-
class YAMLError extends Error {
|
|
12
|
-
constructor(name, source, message) {
|
|
13
|
-
if (!message || !(source instanceof _Node.Node)) throw new Error(`Invalid arguments for new ${name}`);
|
|
14
|
-
super();
|
|
15
|
-
this.name = name;
|
|
16
|
-
this.message = message;
|
|
17
|
-
this.source = source;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
makePretty() {
|
|
21
|
-
if (!this.source) return;
|
|
22
|
-
this.nodeType = this.source.type;
|
|
23
|
-
const cst = this.source.context && this.source.context.root;
|
|
24
|
-
|
|
25
|
-
if (typeof this.offset === 'number') {
|
|
26
|
-
this.range = new _Range.Range(this.offset, this.offset + 1);
|
|
27
|
-
const start = cst && (0, _sourceUtils.getLinePos)(this.offset, cst);
|
|
28
|
-
|
|
29
|
-
if (start) {
|
|
30
|
-
const end = {
|
|
31
|
-
line: start.line,
|
|
32
|
-
col: start.col + 1
|
|
33
|
-
};
|
|
34
|
-
this.linePos = {
|
|
35
|
-
start,
|
|
36
|
-
end
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
delete this.offset;
|
|
41
|
-
} else {
|
|
42
|
-
this.range = this.source.range;
|
|
43
|
-
this.linePos = this.source.rangeAsLinePos;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (this.linePos) {
|
|
47
|
-
const {
|
|
48
|
-
line,
|
|
49
|
-
col
|
|
50
|
-
} = this.linePos.start;
|
|
51
|
-
this.message += ` at line ${line}, column ${col}`;
|
|
52
|
-
const ctx = cst && (0, _sourceUtils.getPrettyContext)(this.linePos, cst);
|
|
53
|
-
if (ctx) this.message += `:\n\n${ctx}\n`;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
delete this.source;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
exports.YAMLError = YAMLError;
|
|
62
|
-
|
|
63
|
-
class YAMLReferenceError extends YAMLError {
|
|
64
|
-
constructor(source, message) {
|
|
65
|
-
super('YAMLReferenceError', source, message);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
exports.YAMLReferenceError = YAMLReferenceError;
|
|
71
|
-
|
|
72
|
-
class YAMLSemanticError extends YAMLError {
|
|
73
|
-
constructor(source, message) {
|
|
74
|
-
super('YAMLSemanticError', source, message);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
exports.YAMLSemanticError = YAMLSemanticError;
|
|
80
|
-
|
|
81
|
-
class YAMLSyntaxError extends YAMLError {
|
|
82
|
-
constructor(source, message) {
|
|
83
|
-
super('YAMLSyntaxError', source, message);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
exports.YAMLSyntaxError = YAMLSyntaxError;
|
|
89
|
-
|
|
90
|
-
class YAMLWarning extends YAMLError {
|
|
91
|
-
constructor(source, message) {
|
|
92
|
-
super('YAMLWarning', source, message);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
exports.YAMLWarning = YAMLWarning;
|
package/dist/foldFlowLines.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.foldFlowLines = foldFlowLines;
|
|
4
|
-
exports.FOLD_QUOTED = exports.FOLD_BLOCK = exports.FOLD_FLOW = void 0;
|
|
5
|
-
const FOLD_FLOW = 'flow';
|
|
6
|
-
exports.FOLD_FLOW = FOLD_FLOW;
|
|
7
|
-
const FOLD_BLOCK = 'block';
|
|
8
|
-
exports.FOLD_BLOCK = FOLD_BLOCK;
|
|
9
|
-
const FOLD_QUOTED = 'quoted'; // presumes i+1 is at the start of a line
|
|
10
|
-
// returns index of last newline in more-indented block
|
|
11
|
-
|
|
12
|
-
exports.FOLD_QUOTED = FOLD_QUOTED;
|
|
13
|
-
|
|
14
|
-
const consumeMoreIndentedLines = (text, i) => {
|
|
15
|
-
let ch = text[i + 1];
|
|
16
|
-
|
|
17
|
-
while (ch === ' ' || ch === '\t') {
|
|
18
|
-
do {
|
|
19
|
-
ch = text[i += 1];
|
|
20
|
-
} while (ch && ch !== '\n');
|
|
21
|
-
|
|
22
|
-
ch = text[i + 1];
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return i;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Tries to keep input at up to `lineWidth` characters, splitting only on spaces
|
|
29
|
-
* not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
|
|
30
|
-
* terminated with `\n` and started with `indent`.
|
|
31
|
-
*
|
|
32
|
-
* @param {string} text
|
|
33
|
-
* @param {string} indent
|
|
34
|
-
* @param {string} [mode='flow'] `'block'` prevents more-indented lines
|
|
35
|
-
* from being folded; `'quoted'` allows for `\` escapes, including escaped
|
|
36
|
-
* newlines
|
|
37
|
-
* @param {Object} options
|
|
38
|
-
* @param {number} [options.indentAtStart] Accounts for leading contents on
|
|
39
|
-
* the first line, defaulting to `indent.length`
|
|
40
|
-
* @param {number} [options.lineWidth=80]
|
|
41
|
-
* @param {number} [options.minContentWidth=20] Allow highly indented lines to
|
|
42
|
-
* stretch the line width
|
|
43
|
-
* @param {function} options.onFold Called once if the text is folded
|
|
44
|
-
* @param {function} options.onFold Called once if any line of text exceeds
|
|
45
|
-
* lineWidth characters
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
function foldFlowLines(text, indent, mode, {
|
|
50
|
-
indentAtStart,
|
|
51
|
-
lineWidth = 80,
|
|
52
|
-
minContentWidth = 20,
|
|
53
|
-
onFold,
|
|
54
|
-
onOverflow
|
|
55
|
-
}) {
|
|
56
|
-
if (!lineWidth || lineWidth < 0) return text;
|
|
57
|
-
const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);
|
|
58
|
-
if (text.length <= endStep) return text;
|
|
59
|
-
const folds = [];
|
|
60
|
-
const escapedFolds = {};
|
|
61
|
-
let end = lineWidth - (typeof indentAtStart === 'number' ? indentAtStart : indent.length);
|
|
62
|
-
let split = undefined;
|
|
63
|
-
let prev = undefined;
|
|
64
|
-
let overflow = false;
|
|
65
|
-
let i = -1;
|
|
66
|
-
|
|
67
|
-
if (mode === FOLD_BLOCK) {
|
|
68
|
-
i = consumeMoreIndentedLines(text, i);
|
|
69
|
-
if (i !== -1) end = i + endStep;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
for (let ch; ch = text[i += 1];) {
|
|
73
|
-
if (mode === FOLD_QUOTED && ch === '\\') {
|
|
74
|
-
switch (text[i + 1]) {
|
|
75
|
-
case 'x':
|
|
76
|
-
i += 3;
|
|
77
|
-
break;
|
|
78
|
-
|
|
79
|
-
case 'u':
|
|
80
|
-
i += 5;
|
|
81
|
-
break;
|
|
82
|
-
|
|
83
|
-
case 'U':
|
|
84
|
-
i += 9;
|
|
85
|
-
break;
|
|
86
|
-
|
|
87
|
-
default:
|
|
88
|
-
i += 1;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
if (ch === '\n') {
|
|
93
|
-
if (mode === FOLD_BLOCK) i = consumeMoreIndentedLines(text, i);
|
|
94
|
-
end = i + endStep;
|
|
95
|
-
split = undefined;
|
|
96
|
-
} else {
|
|
97
|
-
if (ch === ' ' && prev && prev !== ' ' && prev !== '\n' && prev !== '\t') {
|
|
98
|
-
// space surrounded by non-space can be replaced with newline + indent
|
|
99
|
-
const next = text[i + 1];
|
|
100
|
-
if (next && next !== ' ' && next !== '\n' && next !== '\t') split = i;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
if (i >= end) {
|
|
104
|
-
if (split) {
|
|
105
|
-
folds.push(split);
|
|
106
|
-
end = split + endStep;
|
|
107
|
-
split = undefined;
|
|
108
|
-
} else if (mode === FOLD_QUOTED) {
|
|
109
|
-
// white-space collected at end may stretch past lineWidth
|
|
110
|
-
while (prev === ' ' || prev === '\t') {
|
|
111
|
-
prev = ch;
|
|
112
|
-
ch = text[i += 1];
|
|
113
|
-
overflow = true;
|
|
114
|
-
} // i - 2 accounts for not-dropped last char + newline-escaping \
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
folds.push(i - 2);
|
|
118
|
-
escapedFolds[i - 2] = true;
|
|
119
|
-
end = i - 2 + endStep;
|
|
120
|
-
split = undefined;
|
|
121
|
-
} else {
|
|
122
|
-
overflow = true;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
prev = ch;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
if (overflow && onOverflow) onOverflow();
|
|
131
|
-
if (folds.length === 0) return text;
|
|
132
|
-
if (onFold) onFold();
|
|
133
|
-
let res = text.slice(0, folds[0]);
|
|
134
|
-
|
|
135
|
-
for (let i = 0; i < folds.length; ++i) {
|
|
136
|
-
const fold = folds[i];
|
|
137
|
-
const end = folds[i + 1] || text.length;
|
|
138
|
-
if (mode === FOLD_QUOTED && escapedFolds[fold]) res += `${text[fold]}\\`;
|
|
139
|
-
res += `\n${indent}${text.slice(fold + 1, end)}`;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return res;
|
|
143
|
-
}
|
package/dist/listTagNames.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.listTagNames = void 0;
|
|
4
|
-
|
|
5
|
-
var _Collection = require("./schema/Collection");
|
|
6
|
-
|
|
7
|
-
var _Pair = require("./schema/Pair");
|
|
8
|
-
|
|
9
|
-
var _Scalar = require("./schema/Scalar");
|
|
10
|
-
|
|
11
|
-
const visit = (node, tags) => {
|
|
12
|
-
if (node && typeof node === 'object') {
|
|
13
|
-
const {
|
|
14
|
-
tag
|
|
15
|
-
} = node;
|
|
16
|
-
|
|
17
|
-
if (node instanceof _Collection.Collection) {
|
|
18
|
-
if (tag) tags[tag] = true;
|
|
19
|
-
node.items.forEach(n => visit(n, tags));
|
|
20
|
-
} else if (node instanceof _Pair.Pair) {
|
|
21
|
-
visit(node.key, tags);
|
|
22
|
-
visit(node.value, tags);
|
|
23
|
-
} else if (node instanceof _Scalar.Scalar) {
|
|
24
|
-
if (tag) tags[tag] = true;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return tags;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const listTagNames = node => Object.keys(visit(node, {}));
|
|
32
|
-
|
|
33
|
-
exports.listTagNames = listTagNames;
|
package/dist/schema/Alias.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.Alias = void 0;
|
|
4
|
-
|
|
5
|
-
var _constants = require("../constants");
|
|
6
|
-
|
|
7
|
-
var _errors = require("../errors");
|
|
8
|
-
|
|
9
|
-
var _toJSON = require("../toJSON");
|
|
10
|
-
|
|
11
|
-
var _Collection = require("./Collection");
|
|
12
|
-
|
|
13
|
-
var _Node = require("./Node");
|
|
14
|
-
|
|
15
|
-
var _Pair = require("./Pair");
|
|
16
|
-
|
|
17
|
-
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; }
|
|
18
|
-
|
|
19
|
-
const getAliasCount = (node, anchors) => {
|
|
20
|
-
if (node instanceof Alias) {
|
|
21
|
-
const anchor = anchors.get(node.source);
|
|
22
|
-
return anchor.count * anchor.aliasCount;
|
|
23
|
-
} else if (node instanceof _Collection.Collection) {
|
|
24
|
-
let count = 0;
|
|
25
|
-
|
|
26
|
-
for (const item of node.items) {
|
|
27
|
-
const c = getAliasCount(item, anchors);
|
|
28
|
-
if (c > count) count = c;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return count;
|
|
32
|
-
} else if (node instanceof _Pair.Pair) {
|
|
33
|
-
const kc = getAliasCount(node.key, anchors);
|
|
34
|
-
const vc = getAliasCount(node.value, anchors);
|
|
35
|
-
return Math.max(kc, vc);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return 1;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
class Alias extends _Node.Node {
|
|
42
|
-
static stringify({
|
|
43
|
-
range,
|
|
44
|
-
source
|
|
45
|
-
}, {
|
|
46
|
-
anchors,
|
|
47
|
-
doc,
|
|
48
|
-
implicitKey,
|
|
49
|
-
inStringifyKey
|
|
50
|
-
}) {
|
|
51
|
-
let anchor = Object.keys(anchors).find(a => anchors[a] === source);
|
|
52
|
-
if (!anchor && inStringifyKey) anchor = doc.anchors.getName(source) || doc.anchors.newName();
|
|
53
|
-
if (anchor) return `*${anchor}${implicitKey ? ' ' : ''}`;
|
|
54
|
-
const msg = doc.anchors.getName(source) ? 'Alias node must be after source node' : 'Source node not found for alias node';
|
|
55
|
-
throw new Error(`${msg} [${range}]`);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
constructor(source) {
|
|
59
|
-
super();
|
|
60
|
-
this.source = source;
|
|
61
|
-
this.type = _constants.Type.ALIAS;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
set tag(t) {
|
|
65
|
-
throw new Error('Alias nodes cannot have tags');
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
toJSON(arg, ctx) {
|
|
69
|
-
if (!ctx) return (0, _toJSON.toJSON)(this.source, arg, ctx);
|
|
70
|
-
const {
|
|
71
|
-
anchors,
|
|
72
|
-
maxAliasCount
|
|
73
|
-
} = ctx;
|
|
74
|
-
const anchor = anchors.get(this.source);
|
|
75
|
-
/* istanbul ignore if */
|
|
76
|
-
|
|
77
|
-
if (!anchor || anchor.res === undefined) {
|
|
78
|
-
const msg = 'This should not happen: Alias anchor was not resolved?';
|
|
79
|
-
if (this.cstNode) throw new _errors.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (maxAliasCount >= 0) {
|
|
83
|
-
anchor.count += 1;
|
|
84
|
-
if (anchor.aliasCount === 0) anchor.aliasCount = getAliasCount(this.source, anchors);
|
|
85
|
-
|
|
86
|
-
if (anchor.count * anchor.aliasCount > maxAliasCount) {
|
|
87
|
-
const msg = 'Excessive alias count indicates a resource exhaustion attack';
|
|
88
|
-
if (this.cstNode) throw new _errors.YAMLReferenceError(this.cstNode, msg);else throw new ReferenceError(msg);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return anchor.res;
|
|
93
|
-
} // Only called when stringifying an alias mapping key while constructing
|
|
94
|
-
// Object output.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
toString(ctx) {
|
|
98
|
-
return Alias.stringify(this, ctx);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
exports.Alias = Alias;
|
|
104
|
-
|
|
105
|
-
_defineProperty(Alias, "default", true);
|