yaml 2.0.0-3 → 2.0.0-7
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/LICENSE +1 -1
- package/README.md +46 -26
- package/browser/dist/compose/compose-collection.js +59 -0
- package/browser/dist/compose/compose-doc.js +39 -0
- package/browser/dist/compose/compose-node.js +79 -0
- package/browser/dist/compose/compose-scalar.js +74 -0
- package/browser/dist/compose/composer.js +219 -0
- package/browser/dist/compose/resolve-block-map.js +93 -0
- package/browser/dist/compose/resolve-block-scalar.js +185 -0
- package/browser/dist/compose/resolve-block-seq.js +40 -0
- package/browser/dist/compose/resolve-end.js +37 -0
- package/browser/dist/compose/resolve-flow-collection.js +189 -0
- package/browser/dist/compose/resolve-flow-scalar.js +217 -0
- package/browser/dist/compose/resolve-props.js +126 -0
- package/browser/dist/compose/util-contains-newline.js +34 -0
- package/browser/dist/compose/util-empty-scalar-position.js +27 -0
- package/browser/dist/compose/util-map-includes.js +17 -0
- package/browser/dist/doc/Document.js +251 -348
- package/browser/dist/doc/anchors.js +72 -0
- package/browser/dist/doc/applyReviver.js +41 -28
- package/browser/dist/doc/createNode.js +75 -55
- package/browser/dist/doc/directives.js +161 -0
- package/browser/dist/errors.js +50 -72
- package/browser/dist/index.js +16 -72
- package/browser/dist/log.js +11 -7
- package/browser/dist/nodes/Alias.js +94 -0
- package/browser/dist/nodes/Collection.js +133 -0
- package/browser/dist/nodes/Node.js +41 -0
- package/browser/dist/nodes/Pair.js +28 -0
- package/browser/dist/nodes/Scalar.js +23 -0
- package/browser/dist/nodes/YAMLMap.js +116 -0
- package/browser/dist/nodes/YAMLSeq.js +105 -0
- package/browser/dist/nodes/addPairToJSMap.js +103 -0
- package/browser/dist/nodes/toJS.js +35 -0
- package/browser/dist/options.js +14 -95
- package/browser/dist/parse/cst-scalar.js +219 -0
- package/browser/dist/parse/cst-stringify.js +61 -0
- package/browser/dist/parse/cst-visit.js +97 -0
- package/browser/dist/parse/cst.js +98 -0
- package/browser/dist/parse/lexer.js +674 -0
- package/browser/dist/parse/line-counter.js +39 -0
- package/browser/dist/parse/parser.js +876 -0
- package/browser/dist/public-api.js +101 -0
- package/browser/dist/schema/Schema.js +23 -0
- package/browser/dist/schema/common/map.js +42 -0
- package/browser/dist/schema/common/null.js +13 -0
- package/browser/dist/schema/common/seq.js +33 -0
- package/browser/dist/schema/common/string.js +14 -0
- package/browser/dist/schema/core/bool.js +19 -0
- package/browser/dist/schema/core/float.js +40 -0
- package/browser/dist/schema/core/int.js +38 -0
- package/browser/dist/schema/core/schema.js +23 -0
- package/browser/dist/schema/json/schema.js +62 -0
- package/browser/dist/schema/tags.js +79 -0
- package/browser/dist/schema/yaml-1.1/binary.js +66 -0
- package/browser/dist/schema/yaml-1.1/bool.js +26 -0
- package/browser/dist/schema/yaml-1.1/float.js +43 -0
- package/browser/dist/schema/yaml-1.1/int.js +71 -0
- package/browser/dist/schema/yaml-1.1/omap.js +73 -0
- package/browser/dist/schema/yaml-1.1/pairs.js +77 -0
- package/browser/dist/schema/yaml-1.1/schema.js +37 -0
- package/browser/dist/schema/yaml-1.1/set.js +87 -0
- package/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
- package/browser/dist/stringify/foldFlowLines.js +121 -139
- package/browser/dist/stringify/stringify.js +87 -72
- package/browser/dist/stringify/stringifyCollection.js +122 -0
- package/browser/dist/stringify/stringifyComment.js +14 -0
- package/browser/dist/stringify/stringifyDocument.js +64 -0
- package/browser/dist/stringify/stringifyNumber.js +20 -23
- package/browser/dist/stringify/stringifyPair.js +111 -0
- package/browser/dist/stringify/stringifyString.js +295 -322
- package/browser/dist/util.js +4 -4
- package/browser/dist/visit.js +134 -71
- package/browser/index.js +4 -1
- package/dist/compose/compose-collection.d.ts +5 -0
- package/dist/compose/compose-collection.js +61 -0
- package/dist/compose/compose-doc.d.ts +6 -0
- package/dist/compose/compose-doc.js +41 -0
- package/dist/compose/compose-node.d.ts +25 -0
- package/dist/compose/compose-node.js +82 -0
- package/dist/compose/compose-scalar.d.ts +5 -0
- package/dist/compose/compose-scalar.js +76 -0
- package/dist/compose/composer.d.ts +62 -0
- package/dist/compose/composer.js +223 -0
- package/dist/compose/resolve-block-map.d.ts +6 -0
- package/dist/compose/resolve-block-map.js +95 -0
- package/dist/compose/resolve-block-scalar.d.ts +10 -0
- package/dist/compose/resolve-block-scalar.js +187 -0
- package/dist/compose/resolve-block-seq.d.ts +5 -0
- package/dist/compose/resolve-block-seq.js +42 -0
- package/dist/compose/resolve-end.d.ts +6 -0
- package/dist/compose/resolve-end.js +39 -0
- package/dist/compose/resolve-flow-collection.d.ts +6 -0
- package/dist/compose/resolve-flow-collection.js +191 -0
- package/dist/compose/resolve-flow-scalar.d.ts +10 -0
- package/dist/compose/resolve-flow-scalar.js +219 -0
- package/dist/compose/resolve-props.d.ts +21 -0
- package/dist/compose/resolve-props.js +128 -0
- package/dist/compose/util-contains-newline.d.ts +2 -0
- package/dist/compose/util-contains-newline.js +36 -0
- package/dist/compose/util-empty-scalar-position.d.ts +2 -0
- package/dist/compose/util-empty-scalar-position.js +29 -0
- package/dist/compose/util-map-includes.d.ts +4 -0
- package/dist/compose/util-map-includes.js +19 -0
- package/dist/doc/Document.d.ts +130 -0
- package/dist/doc/Document.js +250 -347
- package/dist/doc/anchors.d.ts +24 -0
- package/dist/doc/anchors.js +77 -0
- package/dist/doc/applyReviver.d.ts +9 -0
- package/dist/doc/applyReviver.js +41 -28
- package/dist/doc/createNode.d.ts +16 -0
- package/dist/doc/createNode.js +75 -55
- package/dist/doc/directives.d.ts +46 -0
- package/dist/doc/directives.js +163 -0
- package/dist/errors.d.ts +21 -0
- package/dist/errors.js +51 -74
- package/dist/index.d.ts +19 -0
- package/dist/index.js +39 -70
- package/dist/log.d.ts +3 -0
- package/dist/log.js +11 -6
- package/dist/nodes/Alias.d.ts +24 -0
- package/dist/nodes/Alias.js +96 -0
- package/dist/nodes/Collection.d.ts +67 -0
- package/dist/nodes/Collection.js +137 -0
- package/dist/nodes/Node.d.ts +48 -0
- package/dist/nodes/Node.js +59 -0
- package/dist/nodes/Pair.d.ts +16 -0
- package/dist/nodes/Pair.js +31 -0
- package/dist/nodes/Scalar.d.ts +40 -0
- package/dist/nodes/Scalar.js +26 -0
- package/dist/nodes/YAMLMap.d.ts +39 -0
- package/dist/nodes/YAMLMap.js +119 -0
- package/dist/nodes/YAMLSeq.d.ts +53 -0
- package/dist/nodes/YAMLSeq.js +107 -0
- package/dist/nodes/addPairToJSMap.d.ts +3 -0
- package/dist/nodes/addPairToJSMap.js +105 -0
- package/dist/nodes/toJS.d.ts +30 -0
- package/dist/nodes/toJS.js +37 -0
- package/dist/options.d.ts +278 -0
- package/dist/options.js +13 -96
- package/dist/parse/cst-scalar.d.ts +58 -0
- package/dist/parse/cst-scalar.js +223 -0
- package/dist/parse/cst-stringify.d.ts +8 -0
- package/dist/parse/cst-stringify.js +63 -0
- package/dist/parse/cst-visit.d.ts +39 -0
- package/dist/parse/cst-visit.js +99 -0
- package/dist/parse/cst.d.ts +106 -0
- package/dist/parse/cst.js +112 -0
- package/dist/parse/lexer.d.ts +85 -0
- package/dist/parse/lexer.js +676 -0
- package/dist/parse/line-counter.d.ts +22 -0
- package/dist/parse/line-counter.js +41 -0
- package/dist/parse/parser.d.ts +84 -0
- package/dist/parse/parser.js +880 -0
- package/dist/public-api.d.ts +43 -0
- package/dist/public-api.js +106 -0
- package/dist/schema/Schema.d.ts +16 -0
- package/dist/schema/Schema.js +25 -0
- package/dist/schema/common/map.d.ts +2 -0
- package/dist/schema/common/map.js +44 -0
- package/dist/schema/common/null.d.ts +4 -0
- package/dist/schema/common/null.js +15 -0
- package/dist/schema/common/seq.d.ts +2 -0
- package/dist/schema/common/seq.js +35 -0
- package/dist/schema/common/string.d.ts +2 -0
- package/dist/schema/common/string.js +16 -0
- package/dist/schema/core/bool.d.ts +4 -0
- package/dist/schema/core/bool.js +21 -0
- package/dist/schema/core/float.d.ts +4 -0
- package/dist/schema/core/float.js +44 -0
- package/dist/schema/core/int.d.ts +4 -0
- package/dist/schema/core/int.js +42 -0
- package/dist/schema/core/schema.d.ts +1 -0
- package/dist/schema/core/schema.js +25 -0
- package/dist/schema/json/schema.d.ts +2 -0
- package/dist/schema/json/schema.js +64 -0
- package/dist/schema/tags.d.ts +41 -0
- package/dist/schema/tags.js +82 -0
- package/dist/schema/types.d.ts +82 -0
- package/dist/schema/yaml-1.1/binary.d.ts +2 -0
- package/dist/schema/yaml-1.1/binary.js +68 -0
- package/dist/schema/yaml-1.1/bool.d.ts +7 -0
- package/dist/schema/yaml-1.1/bool.js +29 -0
- package/dist/schema/yaml-1.1/float.d.ts +4 -0
- package/dist/schema/yaml-1.1/float.js +47 -0
- package/dist/schema/yaml-1.1/int.d.ts +5 -0
- package/dist/schema/yaml-1.1/int.js +76 -0
- package/dist/schema/yaml-1.1/omap.d.ts +21 -0
- package/dist/schema/yaml-1.1/omap.js +76 -0
- package/dist/schema/yaml-1.1/pairs.d.ts +10 -0
- package/dist/schema/yaml-1.1/pairs.js +81 -0
- package/dist/schema/yaml-1.1/schema.d.ts +1 -0
- package/dist/schema/yaml-1.1/schema.js +39 -0
- package/dist/schema/yaml-1.1/set.d.ts +22 -0
- package/dist/schema/yaml-1.1/set.js +90 -0
- package/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
- package/dist/schema/yaml-1.1/timestamp.js +105 -0
- package/dist/stringify/foldFlowLines.d.ts +34 -0
- package/dist/stringify/foldFlowLines.js +121 -139
- package/dist/stringify/stringify.d.ts +18 -0
- package/dist/stringify/stringify.js +87 -71
- package/dist/stringify/stringifyCollection.d.ts +21 -0
- package/dist/stringify/stringifyCollection.js +124 -0
- package/dist/stringify/stringifyComment.d.ts +2 -0
- package/dist/stringify/stringifyComment.js +17 -0
- package/dist/stringify/stringifyDocument.d.ts +3 -0
- package/dist/stringify/stringifyDocument.js +66 -0
- package/dist/stringify/stringifyNumber.d.ts +2 -0
- package/dist/stringify/stringifyNumber.js +20 -23
- package/dist/stringify/stringifyPair.d.ts +3 -0
- package/dist/stringify/stringifyPair.js +113 -0
- package/dist/stringify/stringifyString.d.ts +3 -0
- package/dist/stringify/stringifyString.js +295 -322
- package/dist/test-events.d.ts +4 -0
- package/dist/test-events.js +124 -148
- package/dist/util.d.ts +6 -0
- package/dist/util.js +9 -12
- package/dist/visit.d.ts +63 -0
- package/dist/visit.js +134 -71
- package/package.json +31 -39
- package/util.js +2 -14
- package/browser/dist/_virtual/_rollupPluginBabelHelpers.js +0 -16
- package/browser/dist/ast/Alias.js +0 -95
- package/browser/dist/ast/Collection.js +0 -192
- package/browser/dist/ast/Merge.js +0 -71
- package/browser/dist/ast/Node.js +0 -3
- package/browser/dist/ast/Pair.js +0 -200
- package/browser/dist/ast/Scalar.js +0 -21
- package/browser/dist/ast/YAMLMap.js +0 -91
- package/browser/dist/ast/YAMLSeq.js +0 -67
- package/browser/dist/ast/toJS.js +0 -29
- package/browser/dist/constants.js +0 -40
- package/browser/dist/cst/Alias.js +0 -26
- package/browser/dist/cst/BlankLine.js +0 -34
- package/browser/dist/cst/BlockValue.js +0 -240
- package/browser/dist/cst/Collection.js +0 -259
- package/browser/dist/cst/CollectionItem.js +0 -123
- package/browser/dist/cst/Comment.js +0 -27
- package/browser/dist/cst/Directive.js +0 -53
- package/browser/dist/cst/Document.js +0 -262
- package/browser/dist/cst/FlowCollection.js +0 -201
- package/browser/dist/cst/Node.js +0 -355
- package/browser/dist/cst/ParseContext.js +0 -234
- package/browser/dist/cst/PlainValue.js +0 -171
- package/browser/dist/cst/QuoteDouble.js +0 -224
- package/browser/dist/cst/QuoteSingle.js +0 -100
- package/browser/dist/cst/Range.js +0 -56
- package/browser/dist/cst/parse.js +0 -46
- package/browser/dist/cst/source-utils.js +0 -169
- package/browser/dist/doc/Anchors.js +0 -115
- package/browser/dist/doc/Schema.js +0 -34
- package/browser/dist/doc/getSchemaTags.js +0 -33
- package/browser/dist/doc/listTagNames.js +0 -27
- package/browser/dist/doc/parseContents.js +0 -60
- package/browser/dist/doc/parseDirectives.js +0 -107
- package/browser/dist/resolve/collection-utils.js +0 -86
- package/browser/dist/resolve/resolveMap.js +0 -315
- package/browser/dist/resolve/resolveNode.js +0 -173
- package/browser/dist/resolve/resolveScalar.js +0 -20
- package/browser/dist/resolve/resolveSeq.js +0 -170
- package/browser/dist/resolve/resolveTag.js +0 -107
- package/browser/dist/resolve/resolveTagName.js +0 -87
- package/browser/dist/stringify/addComment.js +0 -10
- package/browser/dist/stringify/stringifyTag.js +0 -28
- package/browser/dist/tags/core.js +0 -128
- package/browser/dist/tags/failsafe/index.js +0 -7
- package/browser/dist/tags/failsafe/map.js +0 -37
- package/browser/dist/tags/failsafe/seq.js +0 -34
- package/browser/dist/tags/failsafe/string.js +0 -20
- package/browser/dist/tags/index.js +0 -39
- package/browser/dist/tags/json.js +0 -62
- package/browser/dist/tags/options.js +0 -31
- package/browser/dist/tags/yaml-1.1/binary.js +0 -83
- package/browser/dist/tags/yaml-1.1/index.js +0 -174
- package/browser/dist/tags/yaml-1.1/omap.js +0 -86
- package/browser/dist/tags/yaml-1.1/pairs.js +0 -62
- package/browser/dist/tags/yaml-1.1/set.js +0 -78
- package/browser/dist/tags/yaml-1.1/timestamp.js +0 -101
- package/browser/dist/types.js +0 -10
- package/cst.d.ts +0 -185
- package/dist/_virtual/_rollupPluginBabelHelpers.js +0 -18
- package/dist/ast/Alias.js +0 -97
- package/dist/ast/Collection.js +0 -196
- package/dist/ast/Merge.js +0 -74
- package/dist/ast/Node.js +0 -5
- package/dist/ast/Pair.js +0 -203
- package/dist/ast/Scalar.js +0 -24
- package/dist/ast/YAMLMap.js +0 -94
- package/dist/ast/YAMLSeq.js +0 -69
- package/dist/ast/toJS.js +0 -31
- package/dist/constants.js +0 -46
- package/dist/cst/Alias.js +0 -28
- package/dist/cst/BlankLine.js +0 -36
- package/dist/cst/BlockValue.js +0 -243
- package/dist/cst/Collection.js +0 -262
- package/dist/cst/CollectionItem.js +0 -125
- package/dist/cst/Comment.js +0 -29
- package/dist/cst/Directive.js +0 -55
- package/dist/cst/Document.js +0 -264
- package/dist/cst/FlowCollection.js +0 -203
- package/dist/cst/Node.js +0 -357
- package/dist/cst/ParseContext.js +0 -236
- package/dist/cst/PlainValue.js +0 -173
- package/dist/cst/QuoteDouble.js +0 -226
- package/dist/cst/QuoteSingle.js +0 -102
- package/dist/cst/Range.js +0 -58
- package/dist/cst/parse.js +0 -48
- package/dist/cst/source-utils.js +0 -173
- package/dist/doc/Anchors.js +0 -117
- package/dist/doc/Schema.js +0 -36
- package/dist/doc/getSchemaTags.js +0 -35
- package/dist/doc/listTagNames.js +0 -29
- package/dist/doc/parseContents.js +0 -62
- package/dist/doc/parseDirectives.js +0 -109
- package/dist/resolve/collection-utils.js +0 -91
- package/dist/resolve/resolveMap.js +0 -317
- package/dist/resolve/resolveNode.js +0 -175
- package/dist/resolve/resolveScalar.js +0 -22
- package/dist/resolve/resolveSeq.js +0 -172
- package/dist/resolve/resolveTag.js +0 -109
- package/dist/resolve/resolveTagName.js +0 -89
- package/dist/stringify/addComment.js +0 -13
- package/dist/stringify/stringifyTag.js +0 -30
- package/dist/tags/core.js +0 -138
- package/dist/tags/failsafe/index.js +0 -9
- package/dist/tags/failsafe/map.js +0 -39
- package/dist/tags/failsafe/seq.js +0 -36
- package/dist/tags/failsafe/string.js +0 -22
- package/dist/tags/index.js +0 -42
- package/dist/tags/json.js +0 -64
- package/dist/tags/options.js +0 -37
- package/dist/tags/yaml-1.1/binary.js +0 -85
- package/dist/tags/yaml-1.1/index.js +0 -176
- package/dist/tags/yaml-1.1/omap.js +0 -89
- package/dist/tags/yaml-1.1/pairs.js +0 -66
- package/dist/tags/yaml-1.1/set.js +0 -81
- package/dist/tags/yaml-1.1/timestamp.js +0 -105
- package/dist/types.js +0 -29
- package/index.d.ts +0 -519
- package/index.js +0 -1
- package/types.d.ts +0 -379
- package/types.js +0 -17
- package/types.mjs +0 -17
- package/util.d.ts +0 -76
- package/util.mjs +0 -15
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
function findLineStarts(src) {
|
|
2
|
-
const ls = [0];
|
|
3
|
-
let offset = src.indexOf('\n');
|
|
4
|
-
|
|
5
|
-
while (offset !== -1) {
|
|
6
|
-
offset += 1;
|
|
7
|
-
ls.push(offset);
|
|
8
|
-
offset = src.indexOf('\n', offset);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return ls;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function getSrcInfo(cst) {
|
|
15
|
-
let lineStarts, src;
|
|
16
|
-
|
|
17
|
-
if (typeof cst === 'string') {
|
|
18
|
-
lineStarts = findLineStarts(cst);
|
|
19
|
-
src = cst;
|
|
20
|
-
} else {
|
|
21
|
-
if (Array.isArray(cst)) cst = cst[0];
|
|
22
|
-
|
|
23
|
-
if (cst && cst.context) {
|
|
24
|
-
if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
|
|
25
|
-
lineStarts = cst.lineStarts;
|
|
26
|
-
src = cst.context.src;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
lineStarts,
|
|
32
|
-
src
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @typedef {Object} LinePos - One-indexed position in the source
|
|
37
|
-
* @property {number} line
|
|
38
|
-
* @property {number} col
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Determine the line/col position matching a character offset.
|
|
43
|
-
*
|
|
44
|
-
* Accepts a source string or a CST document as the second parameter. With
|
|
45
|
-
* the latter, starting indices for lines are cached in the document as
|
|
46
|
-
* `lineStarts: number[]`.
|
|
47
|
-
*
|
|
48
|
-
* Returns a one-indexed `{ line, col }` location if found, or
|
|
49
|
-
* `undefined` otherwise.
|
|
50
|
-
*
|
|
51
|
-
* @param {number} offset
|
|
52
|
-
* @param {string|Document|Document[]} cst
|
|
53
|
-
* @returns {?LinePos}
|
|
54
|
-
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
function getLinePos(offset, cst) {
|
|
58
|
-
if (typeof offset !== 'number' || offset < 0) return null;
|
|
59
|
-
const {
|
|
60
|
-
lineStarts,
|
|
61
|
-
src
|
|
62
|
-
} = getSrcInfo(cst);
|
|
63
|
-
if (!lineStarts || !src || offset > src.length) return null;
|
|
64
|
-
|
|
65
|
-
for (let i = 0; i < lineStarts.length; ++i) {
|
|
66
|
-
const start = lineStarts[i];
|
|
67
|
-
|
|
68
|
-
if (offset < start) {
|
|
69
|
-
return {
|
|
70
|
-
line: i,
|
|
71
|
-
col: offset - lineStarts[i - 1] + 1
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (offset === start) return {
|
|
76
|
-
line: i + 1,
|
|
77
|
-
col: 1
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const line = lineStarts.length;
|
|
82
|
-
return {
|
|
83
|
-
line,
|
|
84
|
-
col: offset - lineStarts[line - 1] + 1
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Get a specified line from the source.
|
|
89
|
-
*
|
|
90
|
-
* Accepts a source string or a CST document as the second parameter. With
|
|
91
|
-
* the latter, starting indices for lines are cached in the document as
|
|
92
|
-
* `lineStarts: number[]`.
|
|
93
|
-
*
|
|
94
|
-
* Returns the line as a string if found, or `null` otherwise.
|
|
95
|
-
*
|
|
96
|
-
* @param {number} line One-indexed line number
|
|
97
|
-
* @param {string|Document|Document[]} cst
|
|
98
|
-
* @returns {?string}
|
|
99
|
-
*/
|
|
100
|
-
|
|
101
|
-
function getLine(line, cst) {
|
|
102
|
-
const {
|
|
103
|
-
lineStarts,
|
|
104
|
-
src
|
|
105
|
-
} = getSrcInfo(cst);
|
|
106
|
-
if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
|
|
107
|
-
const start = lineStarts[line - 1];
|
|
108
|
-
let end = lineStarts[line]; // undefined for last line; that's ok for slice()
|
|
109
|
-
|
|
110
|
-
while (end && end > start && src[end - 1] === '\n') --end;
|
|
111
|
-
|
|
112
|
-
return src.slice(start, end);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Pretty-print the starting line from the source indicated by the range `pos`
|
|
116
|
-
*
|
|
117
|
-
* Trims output to `maxWidth` chars while keeping the starting column visible,
|
|
118
|
-
* using `…` at either end to indicate dropped characters.
|
|
119
|
-
*
|
|
120
|
-
* Returns a two-line string (or `null`) with `\n` as separator; the second line
|
|
121
|
-
* will hold appropriately indented `^` marks indicating the column range.
|
|
122
|
-
*
|
|
123
|
-
* @param {Object} pos
|
|
124
|
-
* @param {LinePos} pos.start
|
|
125
|
-
* @param {LinePos} [pos.end]
|
|
126
|
-
* @param {string|Document|Document[]*} cst
|
|
127
|
-
* @param {number} [maxWidth=80]
|
|
128
|
-
* @returns {?string}
|
|
129
|
-
*/
|
|
130
|
-
|
|
131
|
-
function getPrettyContext({
|
|
132
|
-
start,
|
|
133
|
-
end
|
|
134
|
-
}, cst, maxWidth = 80) {
|
|
135
|
-
let src = getLine(start.line, cst);
|
|
136
|
-
if (!src) return null;
|
|
137
|
-
let {
|
|
138
|
-
col
|
|
139
|
-
} = start;
|
|
140
|
-
|
|
141
|
-
if (src.length > maxWidth) {
|
|
142
|
-
if (col <= maxWidth - 10) {
|
|
143
|
-
src = src.substr(0, maxWidth - 1) + '…';
|
|
144
|
-
} else {
|
|
145
|
-
const halfWidth = Math.round(maxWidth / 2);
|
|
146
|
-
if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
|
|
147
|
-
col -= src.length - maxWidth;
|
|
148
|
-
src = '…' + src.substr(1 - maxWidth);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
let errLen = 1;
|
|
153
|
-
let errEnd = '';
|
|
154
|
-
|
|
155
|
-
if (end) {
|
|
156
|
-
if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
|
|
157
|
-
errLen = end.col - start.col;
|
|
158
|
-
} else {
|
|
159
|
-
errLen = Math.min(src.length + 1, maxWidth) - col;
|
|
160
|
-
errEnd = '…';
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const offset = col > 1 ? ' '.repeat(col - 1) : '';
|
|
165
|
-
const err = '^'.repeat(errLen);
|
|
166
|
-
return "".concat(src, "\n").concat(offset).concat(err).concat(errEnd);
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export { getLine, getLinePos, getPrettyContext };
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { defineProperty as _defineProperty } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import { Scalar } from '../ast/Scalar.js';
|
|
3
|
-
import { YAMLSeq } from '../ast/YAMLSeq.js';
|
|
4
|
-
import { YAMLMap } from '../ast/YAMLMap.js';
|
|
5
|
-
import { Alias } from '../ast/Alias.js';
|
|
6
|
-
import { Merge } from '../ast/Merge.js';
|
|
7
|
-
|
|
8
|
-
class Anchors {
|
|
9
|
-
static validAnchorNode(node) {
|
|
10
|
-
return node instanceof Scalar || node instanceof YAMLSeq || node instanceof YAMLMap;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
constructor(prefix) {
|
|
14
|
-
_defineProperty(this, "map", Object.create(null));
|
|
15
|
-
|
|
16
|
-
this.prefix = prefix;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
createAlias(node, name) {
|
|
20
|
-
this.setAnchor(node, name);
|
|
21
|
-
return new Alias(node);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
createMergePair(...sources) {
|
|
25
|
-
const merge = new Merge();
|
|
26
|
-
merge.value.items = sources.map(s => {
|
|
27
|
-
if (s instanceof Alias) {
|
|
28
|
-
if (s.source instanceof YAMLMap) return s;
|
|
29
|
-
} else if (s instanceof YAMLMap) {
|
|
30
|
-
return this.createAlias(s);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
throw new Error('Merge sources must be Map nodes or their Aliases');
|
|
34
|
-
});
|
|
35
|
-
return merge;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getName(node) {
|
|
39
|
-
const {
|
|
40
|
-
map
|
|
41
|
-
} = this;
|
|
42
|
-
return Object.keys(map).find(a => map[a] === node);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
getNames() {
|
|
46
|
-
return Object.keys(this.map);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
getNode(name) {
|
|
50
|
-
return this.map[name];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
newName(prefix) {
|
|
54
|
-
if (!prefix) prefix = this.prefix;
|
|
55
|
-
const names = Object.keys(this.map);
|
|
56
|
-
|
|
57
|
-
for (let i = 1; true; ++i) {
|
|
58
|
-
const name = "".concat(prefix).concat(i);
|
|
59
|
-
if (!names.includes(name)) return name;
|
|
60
|
-
}
|
|
61
|
-
} // During parsing, map & aliases contain CST nodes
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
resolveNodes() {
|
|
65
|
-
const {
|
|
66
|
-
map,
|
|
67
|
-
_cstAliases
|
|
68
|
-
} = this;
|
|
69
|
-
Object.keys(map).forEach(a => {
|
|
70
|
-
map[a] = map[a].resolved;
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
_cstAliases.forEach(a => {
|
|
74
|
-
a.source = a.source.resolved;
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
delete this._cstAliases;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
setAnchor(node, name) {
|
|
81
|
-
if (node != null && !Anchors.validAnchorNode(node)) {
|
|
82
|
-
throw new Error('Anchors may only be set for Scalar, Seq and Map nodes');
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (name && /[\x00-\x19\s,[\]{}]/.test(name)) {
|
|
86
|
-
throw new Error('Anchor names must not contain whitespace or control characters');
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const {
|
|
90
|
-
map
|
|
91
|
-
} = this;
|
|
92
|
-
const prev = node && Object.keys(map).find(a => map[a] === node);
|
|
93
|
-
|
|
94
|
-
if (prev) {
|
|
95
|
-
if (!name) {
|
|
96
|
-
return prev;
|
|
97
|
-
} else if (prev !== name) {
|
|
98
|
-
delete map[prev];
|
|
99
|
-
map[name] = node;
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
if (!name) {
|
|
103
|
-
if (!node) return null;
|
|
104
|
-
name = this.newName();
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
map[name] = node;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return name;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export { Anchors };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { tags, schemas } from '../tags/index.js';
|
|
2
|
-
import { getSchemaTags } from './getSchemaTags.js';
|
|
3
|
-
|
|
4
|
-
const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
|
|
5
|
-
|
|
6
|
-
const coreKnownTags = {
|
|
7
|
-
'tag:yaml.org,2002:binary': tags.binary,
|
|
8
|
-
'tag:yaml.org,2002:omap': tags.omap,
|
|
9
|
-
'tag:yaml.org,2002:pairs': tags.pairs,
|
|
10
|
-
'tag:yaml.org,2002:set': tags.set,
|
|
11
|
-
'tag:yaml.org,2002:timestamp': tags.timestamp
|
|
12
|
-
};
|
|
13
|
-
class Schema {
|
|
14
|
-
constructor({
|
|
15
|
-
customTags,
|
|
16
|
-
merge,
|
|
17
|
-
resolveKnownTags,
|
|
18
|
-
schema,
|
|
19
|
-
sortMapEntries
|
|
20
|
-
}) {
|
|
21
|
-
this.merge = !!merge;
|
|
22
|
-
this.name = schema;
|
|
23
|
-
this.knownTags = resolveKnownTags ? coreKnownTags : {};
|
|
24
|
-
this.tags = getSchemaTags(schemas, tags, customTags, schema); // Used by createNode(), to avoid circular dependencies
|
|
25
|
-
|
|
26
|
-
this.map = tags.map;
|
|
27
|
-
this.seq = tags.seq; // Used by createMap()
|
|
28
|
-
|
|
29
|
-
this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export { Schema };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
function getSchemaTags(schemas, knownTags, customTags, schemaId) {
|
|
2
|
-
let tags = schemas[schemaId.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11'
|
|
3
|
-
|
|
4
|
-
if (!tags) {
|
|
5
|
-
const keys = Object.keys(schemas).map(key => JSON.stringify(key)).join(', ');
|
|
6
|
-
throw new Error("Unknown schema \"".concat(schemaId, "\"; use one of ").concat(keys));
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
if (Array.isArray(customTags)) {
|
|
10
|
-
for (const tag of customTags) tags = tags.concat(tag);
|
|
11
|
-
} else if (typeof customTags === 'function') {
|
|
12
|
-
tags = customTags(tags.slice());
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
for (let i = 0; i < tags.length; ++i) {
|
|
16
|
-
const tag = tags[i];
|
|
17
|
-
|
|
18
|
-
if (typeof tag === 'string') {
|
|
19
|
-
const tagObj = knownTags[tag];
|
|
20
|
-
|
|
21
|
-
if (!tagObj) {
|
|
22
|
-
const keys = Object.keys(knownTags).map(key => JSON.stringify(key)).join(', ');
|
|
23
|
-
throw new Error("Unknown custom tag \"".concat(tag, "\"; use one of ").concat(keys));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
tags[i] = tagObj;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return tags;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export { getSchemaTags };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { Collection } from '../ast/Collection.js';
|
|
2
|
-
import { Pair } from '../ast/Pair.js';
|
|
3
|
-
import { Scalar } from '../ast/Scalar.js';
|
|
4
|
-
|
|
5
|
-
const visit = (node, tags) => {
|
|
6
|
-
if (node && typeof node === 'object') {
|
|
7
|
-
const {
|
|
8
|
-
tag
|
|
9
|
-
} = node;
|
|
10
|
-
|
|
11
|
-
if (node instanceof Collection) {
|
|
12
|
-
if (tag) tags[tag] = true;
|
|
13
|
-
node.items.forEach(n => visit(n, tags));
|
|
14
|
-
} else if (node instanceof Pair) {
|
|
15
|
-
visit(node.key, tags);
|
|
16
|
-
visit(node.value, tags);
|
|
17
|
-
} else if (node instanceof Scalar) {
|
|
18
|
-
if (tag) tags[tag] = true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
return tags;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const listTagNames = node => Object.keys(visit(node, {}));
|
|
26
|
-
|
|
27
|
-
export { listTagNames };
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { Type } from '../constants.js';
|
|
2
|
-
import { YAMLSyntaxError } from '../errors.js';
|
|
3
|
-
import { resolveNode } from '../resolve/resolveNode.js';
|
|
4
|
-
import { Collection } from '../ast/Collection.js';
|
|
5
|
-
|
|
6
|
-
function parseContents(doc, contents) {
|
|
7
|
-
const comments = {
|
|
8
|
-
before: [],
|
|
9
|
-
after: []
|
|
10
|
-
};
|
|
11
|
-
let body = undefined;
|
|
12
|
-
let spaceBefore = false;
|
|
13
|
-
|
|
14
|
-
for (const node of contents) {
|
|
15
|
-
if (node.valueRange) {
|
|
16
|
-
if (body !== undefined) {
|
|
17
|
-
const msg = 'Document contains trailing content not separated by a ... or --- line';
|
|
18
|
-
doc.errors.push(new YAMLSyntaxError(node, msg));
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const res = resolveNode(doc, node);
|
|
23
|
-
|
|
24
|
-
if (spaceBefore) {
|
|
25
|
-
res.spaceBefore = true;
|
|
26
|
-
spaceBefore = false;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
body = res;
|
|
30
|
-
} else if (node.comment !== null) {
|
|
31
|
-
const cc = body === undefined ? comments.before : comments.after;
|
|
32
|
-
cc.push(node.comment);
|
|
33
|
-
} else if (node.type === Type.BLANK_LINE) {
|
|
34
|
-
spaceBefore = true;
|
|
35
|
-
|
|
36
|
-
if (body === undefined && comments.before.length > 0 && !doc.commentBefore) {
|
|
37
|
-
// space-separated comments at start are parsed as document comments
|
|
38
|
-
doc.commentBefore = comments.before.join('\n');
|
|
39
|
-
comments.before = [];
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
doc.contents = body || null;
|
|
45
|
-
|
|
46
|
-
if (!body) {
|
|
47
|
-
doc.comment = comments.before.concat(comments.after).join('\n') || null;
|
|
48
|
-
} else {
|
|
49
|
-
const cb = comments.before.join('\n');
|
|
50
|
-
|
|
51
|
-
if (cb) {
|
|
52
|
-
const cbNode = body instanceof Collection && body.items[0] ? body.items[0] : body;
|
|
53
|
-
cbNode.commentBefore = cbNode.commentBefore ? "".concat(cb, "\n").concat(cbNode.commentBefore) : cb;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
doc.comment = comments.after.join('\n') || null;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export { parseContents };
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { YAMLWarning, YAMLSemanticError } from '../errors.js';
|
|
2
|
-
import { documentOptions } from '../options.js';
|
|
3
|
-
|
|
4
|
-
function resolveTagDirective({
|
|
5
|
-
tagPrefixes
|
|
6
|
-
}, directive) {
|
|
7
|
-
const [handle, prefix] = directive.parameters;
|
|
8
|
-
|
|
9
|
-
if (!handle || !prefix) {
|
|
10
|
-
const msg = 'Insufficient parameters given for %TAG directive';
|
|
11
|
-
throw new YAMLSemanticError(directive, msg);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (tagPrefixes.some(p => p.handle === handle)) {
|
|
15
|
-
const msg = 'The %TAG directive must only be given at most once per handle in the same document.';
|
|
16
|
-
throw new YAMLSemanticError(directive, msg);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
handle,
|
|
21
|
-
prefix
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function resolveYamlDirective(doc, directive) {
|
|
26
|
-
let [version] = directive.parameters;
|
|
27
|
-
if (directive.name === 'YAML:1.0') version = '1.0';
|
|
28
|
-
|
|
29
|
-
if (!version) {
|
|
30
|
-
const msg = 'Insufficient parameters given for %YAML directive';
|
|
31
|
-
throw new YAMLSemanticError(directive, msg);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (!documentOptions[version]) {
|
|
35
|
-
const v0 = doc.version || doc.options.version;
|
|
36
|
-
const msg = "Document will be parsed as YAML ".concat(v0, " rather than YAML ").concat(version);
|
|
37
|
-
doc.warnings.push(new YAMLWarning(directive, msg));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return version;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function parseDirectives(doc, directives, prevDoc) {
|
|
44
|
-
const directiveComments = [];
|
|
45
|
-
let hasDirectives = false;
|
|
46
|
-
|
|
47
|
-
for (const directive of directives) {
|
|
48
|
-
const {
|
|
49
|
-
comment,
|
|
50
|
-
name
|
|
51
|
-
} = directive;
|
|
52
|
-
|
|
53
|
-
switch (name) {
|
|
54
|
-
case 'TAG':
|
|
55
|
-
try {
|
|
56
|
-
doc.tagPrefixes.push(resolveTagDirective(doc, directive));
|
|
57
|
-
} catch (error) {
|
|
58
|
-
doc.errors.push(error);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
hasDirectives = true;
|
|
62
|
-
break;
|
|
63
|
-
|
|
64
|
-
case 'YAML':
|
|
65
|
-
case 'YAML:1.0':
|
|
66
|
-
if (doc.version) {
|
|
67
|
-
const msg = 'The %YAML directive must only be given at most once per document.';
|
|
68
|
-
doc.errors.push(new YAMLSemanticError(directive, msg));
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
try {
|
|
72
|
-
doc.version = resolveYamlDirective(doc, directive);
|
|
73
|
-
} catch (error) {
|
|
74
|
-
doc.errors.push(error);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
hasDirectives = true;
|
|
78
|
-
break;
|
|
79
|
-
|
|
80
|
-
default:
|
|
81
|
-
if (name) {
|
|
82
|
-
const msg = "YAML only supports %TAG and %YAML directives, and not %".concat(name);
|
|
83
|
-
doc.warnings.push(new YAMLWarning(directive, msg));
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (comment) directiveComments.push(comment);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if (prevDoc && !hasDirectives && '1.1' === (doc.version || prevDoc.version || doc.options.version)) {
|
|
92
|
-
const copyTagPrefix = ({
|
|
93
|
-
handle,
|
|
94
|
-
prefix
|
|
95
|
-
}) => ({
|
|
96
|
-
handle,
|
|
97
|
-
prefix
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
doc.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix);
|
|
101
|
-
doc.version = prevDoc.version;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
doc.commentBefore = directiveComments.join('\n') || null;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export { parseDirectives };
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { YAMLSemanticError } from '../errors.js';
|
|
2
|
-
import { Type } from '../constants.js';
|
|
3
|
-
|
|
4
|
-
function checkFlowCollectionEnd(errors, cst) {
|
|
5
|
-
let char, name;
|
|
6
|
-
|
|
7
|
-
switch (cst.type) {
|
|
8
|
-
case Type.FLOW_MAP:
|
|
9
|
-
char = '}';
|
|
10
|
-
name = 'flow map';
|
|
11
|
-
break;
|
|
12
|
-
|
|
13
|
-
case Type.FLOW_SEQ:
|
|
14
|
-
char = ']';
|
|
15
|
-
name = 'flow sequence';
|
|
16
|
-
break;
|
|
17
|
-
|
|
18
|
-
default:
|
|
19
|
-
errors.push(new YAMLSemanticError(cst, 'Not a flow collection!?'));
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
let lastItem;
|
|
24
|
-
|
|
25
|
-
for (let i = cst.items.length - 1; i >= 0; --i) {
|
|
26
|
-
const item = cst.items[i];
|
|
27
|
-
|
|
28
|
-
if (!item || item.type !== Type.COMMENT) {
|
|
29
|
-
lastItem = item;
|
|
30
|
-
break;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (lastItem && lastItem.char !== char) {
|
|
35
|
-
const msg = "Expected ".concat(name, " to end with ").concat(char);
|
|
36
|
-
let err;
|
|
37
|
-
|
|
38
|
-
if (typeof lastItem.offset === 'number') {
|
|
39
|
-
err = new YAMLSemanticError(cst, msg);
|
|
40
|
-
err.offset = lastItem.offset + 1;
|
|
41
|
-
} else {
|
|
42
|
-
err = new YAMLSemanticError(lastItem, msg);
|
|
43
|
-
if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
errors.push(err);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
function checkFlowCommentSpace(errors, comment) {
|
|
50
|
-
const prev = comment.context.src[comment.range.start - 1];
|
|
51
|
-
|
|
52
|
-
if (prev !== '\n' && prev !== '\t' && prev !== ' ') {
|
|
53
|
-
const msg = 'Comments must be separated from other tokens by white space characters';
|
|
54
|
-
errors.push(new YAMLSemanticError(comment, msg));
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function getLongKeyError(source, key) {
|
|
58
|
-
const sk = String(key);
|
|
59
|
-
const k = sk.substr(0, 8) + '...' + sk.substr(-8);
|
|
60
|
-
return new YAMLSemanticError(source, "The \"".concat(k, "\" key is too long"));
|
|
61
|
-
}
|
|
62
|
-
function resolveComments(collection, comments) {
|
|
63
|
-
for (const {
|
|
64
|
-
afterKey,
|
|
65
|
-
before,
|
|
66
|
-
comment
|
|
67
|
-
} of comments) {
|
|
68
|
-
let item = collection.items[before];
|
|
69
|
-
|
|
70
|
-
if (!item) {
|
|
71
|
-
if (comment !== undefined) {
|
|
72
|
-
if (collection.comment) collection.comment += '\n' + comment;else collection.comment = comment;
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
if (afterKey && item.value) item = item.value;
|
|
76
|
-
|
|
77
|
-
if (comment === undefined) {
|
|
78
|
-
if (afterKey || !item.commentBefore) item.spaceBefore = true;
|
|
79
|
-
} else {
|
|
80
|
-
if (item.commentBefore) item.commentBefore += '\n' + comment;else item.commentBefore = comment;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export { checkFlowCollectionEnd, checkFlowCommentSpace, getLongKeyError, resolveComments };
|