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/cst/QuoteSingle.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _errors = require("../errors");
|
|
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 QuoteSingle extends _Node.default {
|
|
17
|
-
static endOfQuote(src, offset) {
|
|
18
|
-
let ch = src[offset];
|
|
19
|
-
|
|
20
|
-
while (ch) {
|
|
21
|
-
if (ch === "'") {
|
|
22
|
-
if (src[offset + 1] !== "'") break;
|
|
23
|
-
ch = src[offset += 2];
|
|
24
|
-
} else {
|
|
25
|
-
ch = src[offset += 1];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
return offset + 1;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* @returns {string | { str: string, errors: YAMLSyntaxError[] }}
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
get strValue() {
|
|
37
|
-
if (!this.valueRange || !this.context) return null;
|
|
38
|
-
const errors = [];
|
|
39
|
-
const {
|
|
40
|
-
start,
|
|
41
|
-
end
|
|
42
|
-
} = this.valueRange;
|
|
43
|
-
const {
|
|
44
|
-
indent,
|
|
45
|
-
src
|
|
46
|
-
} = this.context;
|
|
47
|
-
if (src[end - 1] !== "'") errors.push(new _errors.YAMLSyntaxError(this, "Missing closing 'quote"));
|
|
48
|
-
let str = '';
|
|
49
|
-
|
|
50
|
-
for (let i = start + 1; i < end - 1; ++i) {
|
|
51
|
-
const ch = src[i];
|
|
52
|
-
|
|
53
|
-
if (ch === '\n') {
|
|
54
|
-
if (_Node.default.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
|
|
55
|
-
|
|
56
|
-
const {
|
|
57
|
-
fold,
|
|
58
|
-
offset,
|
|
59
|
-
error
|
|
60
|
-
} = _Node.default.foldNewline(src, i, indent);
|
|
61
|
-
|
|
62
|
-
str += fold;
|
|
63
|
-
i = offset;
|
|
64
|
-
if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line single-quoted string needs to be sufficiently indented'));
|
|
65
|
-
} else if (ch === "'") {
|
|
66
|
-
str += ch;
|
|
67
|
-
i += 1;
|
|
68
|
-
if (src[i] !== "'") errors.push(new _errors.YAMLSyntaxError(this, 'Unescaped single quote? This should not happen.'));
|
|
69
|
-
} else if (ch === ' ' || ch === '\t') {
|
|
70
|
-
// trim trailing whitespace
|
|
71
|
-
const wsStart = i;
|
|
72
|
-
let next = src[i + 1];
|
|
73
|
-
|
|
74
|
-
while (next === ' ' || next === '\t') {
|
|
75
|
-
i += 1;
|
|
76
|
-
next = src[i + 1];
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
|
|
80
|
-
} else {
|
|
81
|
-
str += ch;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return errors.length > 0 ? {
|
|
86
|
-
errors,
|
|
87
|
-
str
|
|
88
|
-
} : str;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Parses a 'single quoted' value from the source
|
|
92
|
-
*
|
|
93
|
-
* @param {ParseContext} context
|
|
94
|
-
* @param {number} start - Index of first character
|
|
95
|
-
* @returns {number} - Index of the character after this scalar
|
|
96
|
-
*/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
parse(context, start) {
|
|
100
|
-
this.context = context;
|
|
101
|
-
const {
|
|
102
|
-
src
|
|
103
|
-
} = context;
|
|
104
|
-
let offset = QuoteSingle.endOfQuote(src, start + 1);
|
|
105
|
-
this.valueRange = new _Range.default(start, offset);
|
|
106
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
107
|
-
offset = this.parseComment(offset);
|
|
108
|
-
return offset;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
exports.default = QuoteSingle;
|
package/dist/cst/Range.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
class Range {
|
|
9
|
-
static copy(orig) {
|
|
10
|
-
return new Range(orig.start, orig.end);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
constructor(start, end) {
|
|
14
|
-
this.start = start;
|
|
15
|
-
this.end = end || start;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
isEmpty() {
|
|
19
|
-
return typeof this.start !== 'number' || !this.end || this.end <= this.start;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Set `origStart` and `origEnd` to point to the original source range for
|
|
23
|
-
* this node, which may differ due to dropped CR characters.
|
|
24
|
-
*
|
|
25
|
-
* @param {number[]} cr - Positions of dropped CR characters
|
|
26
|
-
* @param {number} offset - Starting index of `cr` from the last call
|
|
27
|
-
* @returns {number} - The next offset, matching the one found for `origStart`
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
setOrigRange(cr, offset) {
|
|
32
|
-
const {
|
|
33
|
-
start,
|
|
34
|
-
end
|
|
35
|
-
} = this;
|
|
36
|
-
|
|
37
|
-
if (cr.length === 0 || end <= cr[0]) {
|
|
38
|
-
this.origStart = start;
|
|
39
|
-
this.origEnd = end;
|
|
40
|
-
return offset;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
let i = offset;
|
|
44
|
-
|
|
45
|
-
while (i < cr.length) {
|
|
46
|
-
if (cr[i] > start) break;else ++i;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
this.origStart = start + i;
|
|
50
|
-
const nextOffset = i;
|
|
51
|
-
|
|
52
|
-
while (i < cr.length) {
|
|
53
|
-
// if end was at \n, it should now be at \r
|
|
54
|
-
if (cr[i] >= end) break;else ++i;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
this.origEnd = end + i;
|
|
58
|
-
return nextOffset;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
exports.default = Range;
|
package/dist/cst/parse.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = parse;
|
|
7
|
-
|
|
8
|
-
var _Document = _interopRequireDefault(require("./Document"));
|
|
9
|
-
|
|
10
|
-
var _ParseContext = _interopRequireDefault(require("./ParseContext"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
// Published as 'yaml/parse-cst'
|
|
15
|
-
function parse(src) {
|
|
16
|
-
const cr = [];
|
|
17
|
-
|
|
18
|
-
if (src.indexOf('\r') !== -1) {
|
|
19
|
-
src = src.replace(/\r\n?/g, (match, offset) => {
|
|
20
|
-
if (match.length > 1) cr.push(offset);
|
|
21
|
-
return '\n';
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const documents = [];
|
|
26
|
-
let offset = 0;
|
|
27
|
-
|
|
28
|
-
do {
|
|
29
|
-
const doc = new _Document.default();
|
|
30
|
-
const context = new _ParseContext.default({
|
|
31
|
-
src
|
|
32
|
-
});
|
|
33
|
-
offset = doc.parse(context, offset);
|
|
34
|
-
documents.push(doc);
|
|
35
|
-
} while (offset < src.length);
|
|
36
|
-
|
|
37
|
-
documents.setOrigRanges = () => {
|
|
38
|
-
if (cr.length === 0) return false;
|
|
39
|
-
|
|
40
|
-
for (let i = 1; i < cr.length; ++i) cr[i] -= i;
|
|
41
|
-
|
|
42
|
-
let crOffset = 0;
|
|
43
|
-
|
|
44
|
-
for (let i = 0; i < documents.length; ++i) {
|
|
45
|
-
crOffset = documents[i].setOrigRanges(cr, crOffset);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
cr.splice(0, cr.length);
|
|
49
|
-
return true;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
documents.toString = () => documents.join('...\n');
|
|
53
|
-
|
|
54
|
-
return documents;
|
|
55
|
-
}
|
package/dist/cst/source-utils.js
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.getLinePos = getLinePos;
|
|
7
|
-
exports.getLine = getLine;
|
|
8
|
-
exports.getPrettyContext = getPrettyContext;
|
|
9
|
-
|
|
10
|
-
function findLineStarts(src) {
|
|
11
|
-
const ls = [0];
|
|
12
|
-
let offset = src.indexOf('\n');
|
|
13
|
-
|
|
14
|
-
while (offset !== -1) {
|
|
15
|
-
offset += 1;
|
|
16
|
-
ls.push(offset);
|
|
17
|
-
offset = src.indexOf('\n', offset);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return ls;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function getSrcInfo(cst) {
|
|
24
|
-
let lineStarts, src;
|
|
25
|
-
|
|
26
|
-
if (typeof cst === 'string') {
|
|
27
|
-
lineStarts = findLineStarts(cst);
|
|
28
|
-
src = cst;
|
|
29
|
-
} else {
|
|
30
|
-
if (Array.isArray(cst)) cst = cst[0];
|
|
31
|
-
|
|
32
|
-
if (cst && cst.context) {
|
|
33
|
-
if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
|
|
34
|
-
lineStarts = cst.lineStarts;
|
|
35
|
-
src = cst.context.src;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
lineStarts,
|
|
41
|
-
src
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* @typedef {Object} LinePos - One-indexed position in the source
|
|
46
|
-
* @property {number} line
|
|
47
|
-
* @property {number} col
|
|
48
|
-
*/
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Determine the line/col position matching a character offset.
|
|
52
|
-
*
|
|
53
|
-
* Accepts a source string or a CST document as the second parameter. With
|
|
54
|
-
* the latter, starting indices for lines are cached in the document as
|
|
55
|
-
* `lineStarts: number[]`.
|
|
56
|
-
*
|
|
57
|
-
* Returns a one-indexed `{ line, col }` location if found, or
|
|
58
|
-
* `undefined` otherwise.
|
|
59
|
-
*
|
|
60
|
-
* @param {number} offset
|
|
61
|
-
* @param {string|Document|Document[]} cst
|
|
62
|
-
* @returns {?LinePos}
|
|
63
|
-
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
function getLinePos(offset, cst) {
|
|
67
|
-
if (typeof offset !== 'number' || offset < 0) return null;
|
|
68
|
-
const {
|
|
69
|
-
lineStarts,
|
|
70
|
-
src
|
|
71
|
-
} = getSrcInfo(cst);
|
|
72
|
-
if (!lineStarts || !src || offset > src.length) return null;
|
|
73
|
-
|
|
74
|
-
for (let i = 0; i < lineStarts.length; ++i) {
|
|
75
|
-
const start = lineStarts[i];
|
|
76
|
-
|
|
77
|
-
if (offset < start) {
|
|
78
|
-
return {
|
|
79
|
-
line: i,
|
|
80
|
-
col: offset - lineStarts[i - 1] + 1
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (offset === start) return {
|
|
85
|
-
line: i + 1,
|
|
86
|
-
col: 1
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
const line = lineStarts.length;
|
|
91
|
-
return {
|
|
92
|
-
line,
|
|
93
|
-
col: offset - lineStarts[line - 1] + 1
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get a specified line from the source.
|
|
98
|
-
*
|
|
99
|
-
* Accepts a source string or a CST document as the second parameter. With
|
|
100
|
-
* the latter, starting indices for lines are cached in the document as
|
|
101
|
-
* `lineStarts: number[]`.
|
|
102
|
-
*
|
|
103
|
-
* Returns the line as a string if found, or `null` otherwise.
|
|
104
|
-
*
|
|
105
|
-
* @param {number} line One-indexed line number
|
|
106
|
-
* @param {string|Document|Document[]} cst
|
|
107
|
-
* @returns {?string}
|
|
108
|
-
*/
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
function getLine(line, cst) {
|
|
112
|
-
const {
|
|
113
|
-
lineStarts,
|
|
114
|
-
src
|
|
115
|
-
} = getSrcInfo(cst);
|
|
116
|
-
if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
|
|
117
|
-
const start = lineStarts[line - 1];
|
|
118
|
-
let end = lineStarts[line]; // undefined for last line; that's ok for slice()
|
|
119
|
-
|
|
120
|
-
while (end && end > start && src[end - 1] === '\n') --end;
|
|
121
|
-
|
|
122
|
-
return src.slice(start, end);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Pretty-print the starting line from the source indicated by the range `pos`
|
|
126
|
-
*
|
|
127
|
-
* Trims output to `maxWidth` chars while keeping the starting column visible,
|
|
128
|
-
* using `…` at either end to indicate dropped characters.
|
|
129
|
-
*
|
|
130
|
-
* Returns a two-line string (or `null`) with `\n` as separator; the second line
|
|
131
|
-
* will hold appropriately indented `^` marks indicating the column range.
|
|
132
|
-
*
|
|
133
|
-
* @param {Object} pos
|
|
134
|
-
* @param {LinePos} pos.start
|
|
135
|
-
* @param {LinePos} [pos.end]
|
|
136
|
-
* @param {string|Document|Document[]*} cst
|
|
137
|
-
* @param {number} [maxWidth=80]
|
|
138
|
-
* @returns {?string}
|
|
139
|
-
*/
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
function getPrettyContext({
|
|
143
|
-
start,
|
|
144
|
-
end
|
|
145
|
-
}, cst, maxWidth = 80) {
|
|
146
|
-
let src = getLine(start.line, cst);
|
|
147
|
-
if (!src) return null;
|
|
148
|
-
let {
|
|
149
|
-
col
|
|
150
|
-
} = start;
|
|
151
|
-
|
|
152
|
-
if (src.length > maxWidth) {
|
|
153
|
-
if (col <= maxWidth - 10) {
|
|
154
|
-
src = src.substr(0, maxWidth - 1) + '…';
|
|
155
|
-
} else {
|
|
156
|
-
const halfWidth = Math.round(maxWidth / 2);
|
|
157
|
-
if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
|
|
158
|
-
col -= src.length - maxWidth;
|
|
159
|
-
src = '…' + src.substr(1 - maxWidth);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
let errLen = 1;
|
|
164
|
-
let errEnd = '';
|
|
165
|
-
|
|
166
|
-
if (end) {
|
|
167
|
-
if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
|
|
168
|
-
errLen = end.col - start.col;
|
|
169
|
-
} else {
|
|
170
|
-
errLen = Math.min(src.length + 1, maxWidth) - col;
|
|
171
|
-
errEnd = '…';
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const offset = col > 1 ? ' '.repeat(col - 1) : '';
|
|
176
|
-
const err = '^'.repeat(errLen);
|
|
177
|
-
return `${src}\n${offset}${err}${errEnd}`;
|
|
178
|
-
}
|
package/dist/errors.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.YAMLWarning = exports.YAMLSyntaxError = exports.YAMLSemanticError = exports.YAMLReferenceError = exports.YAMLError = void 0;
|
|
7
|
-
|
|
8
|
-
var _Node = _interopRequireDefault(require("./cst/Node"));
|
|
9
|
-
|
|
10
|
-
var _sourceUtils = require("./cst/source-utils");
|
|
11
|
-
|
|
12
|
-
var _Range = _interopRequireDefault(require("./cst/Range"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
class YAMLError extends Error {
|
|
17
|
-
constructor(name, source, message) {
|
|
18
|
-
if (!message || !(source instanceof _Node.default)) throw new Error(`Invalid arguments for new ${name}`);
|
|
19
|
-
super();
|
|
20
|
-
this.name = name;
|
|
21
|
-
this.message = message;
|
|
22
|
-
this.source = source;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
makePretty() {
|
|
26
|
-
if (!this.source) return;
|
|
27
|
-
this.nodeType = this.source.type;
|
|
28
|
-
const cst = this.source.context && this.source.context.root;
|
|
29
|
-
|
|
30
|
-
if (typeof this.offset === 'number') {
|
|
31
|
-
this.range = new _Range.default(this.offset, this.offset + 1);
|
|
32
|
-
const start = cst && (0, _sourceUtils.getLinePos)(this.offset, cst);
|
|
33
|
-
|
|
34
|
-
if (start) {
|
|
35
|
-
const end = {
|
|
36
|
-
line: start.line,
|
|
37
|
-
col: start.col + 1
|
|
38
|
-
};
|
|
39
|
-
this.linePos = {
|
|
40
|
-
start,
|
|
41
|
-
end
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
delete this.offset;
|
|
46
|
-
} else {
|
|
47
|
-
this.range = this.source.range;
|
|
48
|
-
this.linePos = this.source.rangeAsLinePos;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (this.linePos) {
|
|
52
|
-
const {
|
|
53
|
-
line,
|
|
54
|
-
col
|
|
55
|
-
} = this.linePos.start;
|
|
56
|
-
this.message += ` at line ${line}, column ${col}`;
|
|
57
|
-
const ctx = cst && (0, _sourceUtils.getPrettyContext)(this.linePos, cst);
|
|
58
|
-
if (ctx) this.message += `:\n\n${ctx}\n`;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
delete this.source;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
exports.YAMLError = YAMLError;
|
|
67
|
-
|
|
68
|
-
class YAMLReferenceError extends YAMLError {
|
|
69
|
-
constructor(source, message) {
|
|
70
|
-
super('YAMLReferenceError', source, message);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
exports.YAMLReferenceError = YAMLReferenceError;
|
|
76
|
-
|
|
77
|
-
class YAMLSemanticError extends YAMLError {
|
|
78
|
-
constructor(source, message) {
|
|
79
|
-
super('YAMLSemanticError', source, message);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
exports.YAMLSemanticError = YAMLSemanticError;
|
|
85
|
-
|
|
86
|
-
class YAMLSyntaxError extends YAMLError {
|
|
87
|
-
constructor(source, message) {
|
|
88
|
-
super('YAMLSyntaxError', source, message);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
exports.YAMLSyntaxError = YAMLSyntaxError;
|
|
94
|
-
|
|
95
|
-
class YAMLWarning extends YAMLError {
|
|
96
|
-
constructor(source, message) {
|
|
97
|
-
super('YAMLWarning', source, message);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
exports.YAMLWarning = YAMLWarning;
|
package/dist/foldFlowLines.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = foldFlowLines;
|
|
7
|
-
exports.FOLD_QUOTED = exports.FOLD_BLOCK = exports.FOLD_FLOW = void 0;
|
|
8
|
-
const FOLD_FLOW = 'flow';
|
|
9
|
-
exports.FOLD_FLOW = FOLD_FLOW;
|
|
10
|
-
const FOLD_BLOCK = 'block';
|
|
11
|
-
exports.FOLD_BLOCK = FOLD_BLOCK;
|
|
12
|
-
const FOLD_QUOTED = 'quoted'; // presumes i+1 is at the start of a line
|
|
13
|
-
// returns index of last newline in more-indented block
|
|
14
|
-
|
|
15
|
-
exports.FOLD_QUOTED = FOLD_QUOTED;
|
|
16
|
-
|
|
17
|
-
const consumeMoreIndentedLines = (text, i) => {
|
|
18
|
-
let ch = text[i + 1];
|
|
19
|
-
|
|
20
|
-
while (ch === ' ' || ch === '\t') {
|
|
21
|
-
do {
|
|
22
|
-
ch = text[i += 1];
|
|
23
|
-
} while (ch && ch !== '\n');
|
|
24
|
-
|
|
25
|
-
ch = text[i + 1];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return i;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Tries to keep input at up to `lineWidth` characters, splitting only on spaces
|
|
32
|
-
* not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are
|
|
33
|
-
* terminated with `\n` and started with `indent`.
|
|
34
|
-
*
|
|
35
|
-
* @param {string} text
|
|
36
|
-
* @param {string} indent
|
|
37
|
-
* @param {string} [mode='flow'] `'block'` prevents more-indented lines
|
|
38
|
-
* from being folded; `'quoted'` allows for `\` escapes, including escaped
|
|
39
|
-
* newlines
|
|
40
|
-
* @param {Object} options
|
|
41
|
-
* @param {number} [options.indentAtStart] Accounts for leading contents on
|
|
42
|
-
* the first line, defaulting to `indent.length`
|
|
43
|
-
* @param {number} [options.lineWidth=80]
|
|
44
|
-
* @param {number} [options.minContentWidth=20] Allow highly indented lines to
|
|
45
|
-
* stretch the line width
|
|
46
|
-
* @param {function} options.onFold Called once if the text is folded
|
|
47
|
-
* @param {function} options.onFold Called once if any line of text exceeds
|
|
48
|
-
* lineWidth characters
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
function foldFlowLines(text, indent, mode, {
|
|
53
|
-
indentAtStart,
|
|
54
|
-
lineWidth = 80,
|
|
55
|
-
minContentWidth = 20,
|
|
56
|
-
onFold,
|
|
57
|
-
onOverflow
|
|
58
|
-
}) {
|
|
59
|
-
if (!lineWidth || lineWidth < 0) return text;
|
|
60
|
-
const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);
|
|
61
|
-
if (text.length <= endStep) return text;
|
|
62
|
-
const folds = [];
|
|
63
|
-
const escapedFolds = {};
|
|
64
|
-
let end = lineWidth - (typeof indentAtStart === 'number' ? indentAtStart : indent.length);
|
|
65
|
-
let split = undefined;
|
|
66
|
-
let prev = undefined;
|
|
67
|
-
let overflow = false;
|
|
68
|
-
let i = -1;
|
|
69
|
-
|
|
70
|
-
if (mode === FOLD_BLOCK) {
|
|
71
|
-
i = consumeMoreIndentedLines(text, i);
|
|
72
|
-
if (i !== -1) end = i + endStep;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
for (let ch; ch = text[i += 1];) {
|
|
76
|
-
if (mode === FOLD_QUOTED && ch === '\\') {
|
|
77
|
-
switch (text[i + 1]) {
|
|
78
|
-
case 'x':
|
|
79
|
-
i += 3;
|
|
80
|
-
break;
|
|
81
|
-
|
|
82
|
-
case 'u':
|
|
83
|
-
i += 5;
|
|
84
|
-
break;
|
|
85
|
-
|
|
86
|
-
case 'U':
|
|
87
|
-
i += 9;
|
|
88
|
-
break;
|
|
89
|
-
|
|
90
|
-
default:
|
|
91
|
-
i += 1;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (ch === '\n') {
|
|
96
|
-
if (mode === FOLD_BLOCK) i = consumeMoreIndentedLines(text, i);
|
|
97
|
-
end = i + endStep;
|
|
98
|
-
split = undefined;
|
|
99
|
-
} else {
|
|
100
|
-
if (ch === ' ' && prev && prev !== ' ' && prev !== '\n' && prev !== '\t') {
|
|
101
|
-
// space surrounded by non-space can be replaced with newline + indent
|
|
102
|
-
const next = text[i + 1];
|
|
103
|
-
if (next && next !== ' ' && next !== '\n' && next !== '\t') split = i;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
if (i >= end) {
|
|
107
|
-
if (split) {
|
|
108
|
-
folds.push(split);
|
|
109
|
-
end = split + endStep;
|
|
110
|
-
split = undefined;
|
|
111
|
-
} else if (mode === FOLD_QUOTED) {
|
|
112
|
-
// white-space collected at end may stretch past lineWidth
|
|
113
|
-
while (prev === ' ' || prev === '\t') {
|
|
114
|
-
prev = ch;
|
|
115
|
-
ch = text[i += 1];
|
|
116
|
-
overflow = true;
|
|
117
|
-
} // i - 2 accounts for not-dropped last char + newline-escaping \
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
folds.push(i - 2);
|
|
121
|
-
escapedFolds[i - 2] = true;
|
|
122
|
-
end = i - 2 + endStep;
|
|
123
|
-
split = undefined;
|
|
124
|
-
} else {
|
|
125
|
-
overflow = true;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
prev = ch;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (overflow && onOverflow) onOverflow();
|
|
134
|
-
if (folds.length === 0) return text;
|
|
135
|
-
if (onFold) onFold();
|
|
136
|
-
let res = text.slice(0, folds[0]);
|
|
137
|
-
|
|
138
|
-
for (let i = 0; i < folds.length; ++i) {
|
|
139
|
-
const fold = folds[i];
|
|
140
|
-
const end = folds[i + 1] || text.length;
|
|
141
|
-
if (mode === FOLD_QUOTED && escapedFolds[fold]) res += `${text[fold]}\\`;
|
|
142
|
-
res += `\n${indent}${text.slice(fold + 1, end)}`;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
return res;
|
|
146
|
-
}
|
package/dist/listTagNames.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 _Collection = _interopRequireDefault(require("./schema/Collection"));
|
|
9
|
-
|
|
10
|
-
var _Pair = _interopRequireDefault(require("./schema/Pair"));
|
|
11
|
-
|
|
12
|
-
var _Scalar = _interopRequireDefault(require("./schema/Scalar"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
const visit = (node, tags) => {
|
|
17
|
-
if (node && typeof node === 'object') {
|
|
18
|
-
const {
|
|
19
|
-
tag
|
|
20
|
-
} = node;
|
|
21
|
-
|
|
22
|
-
if (node instanceof _Collection.default) {
|
|
23
|
-
if (tag) tags[tag] = true;
|
|
24
|
-
node.items.forEach(n => visit(n, tags));
|
|
25
|
-
} else if (node instanceof _Pair.default) {
|
|
26
|
-
visit(node.key, tags);
|
|
27
|
-
visit(node.value, tags);
|
|
28
|
-
} else if (node instanceof _Scalar.default) {
|
|
29
|
-
if (tag) tags[tag] = true;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return tags;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
var _default = node => Object.keys(visit(node, {}));
|
|
37
|
-
|
|
38
|
-
exports.default = _default;
|