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,372 +1,275 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { Alias } from '../nodes/Alias.js';
|
|
2
|
+
import { isEmptyPath, collectionFromPath } from '../nodes/Collection.js';
|
|
3
|
+
import { NODE_TYPE, DOC, isCollection, isScalar } from '../nodes/Node.js';
|
|
4
|
+
import { Pair } from '../nodes/Pair.js';
|
|
5
|
+
import { toJS } from '../nodes/toJS.js';
|
|
6
|
+
import { defaultOptions } from '../options.js';
|
|
7
|
+
import { Schema } from '../schema/Schema.js';
|
|
7
8
|
import { stringify } from '../stringify/stringify.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
9
|
+
import { stringifyDocument } from '../stringify/stringifyDocument.js';
|
|
10
|
+
import { anchorNames, findNewAnchor, createNodeAnchors } from './anchors.js';
|
|
10
11
|
import { applyReviver } from './applyReviver.js';
|
|
11
12
|
import { createNode } from './createNode.js';
|
|
12
|
-
import {
|
|
13
|
-
import { parseContents } from './parseContents.js';
|
|
14
|
-
import { parseDirectives } from './parseDirectives.js';
|
|
15
|
-
import { Pair } from '../ast/Pair.js';
|
|
16
|
-
import { isEmptyPath, Collection, collectionFromPath } from '../ast/Collection.js';
|
|
17
|
-
import { Scalar } from '../ast/Scalar.js';
|
|
18
|
-
import { toJS } from '../ast/toJS.js';
|
|
19
|
-
import { Node } from '../ast/Node.js';
|
|
20
|
-
import { Alias } from '../ast/Alias.js';
|
|
21
|
-
|
|
22
|
-
function assertCollection(contents) {
|
|
23
|
-
if (contents instanceof Collection) return true;
|
|
24
|
-
throw new Error('Expected a YAML collection as document contents');
|
|
25
|
-
}
|
|
13
|
+
import { Directives } from './directives.js';
|
|
26
14
|
|
|
27
15
|
class Document {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
16
|
+
constructor(value, replacer, options) {
|
|
17
|
+
/** A comment before this Document */
|
|
18
|
+
this.commentBefore = null;
|
|
19
|
+
/** A comment immediately after this Document */
|
|
20
|
+
this.comment = null;
|
|
21
|
+
/** Errors encountered during parsing. */
|
|
22
|
+
this.errors = [];
|
|
23
|
+
/** Warnings encountered during parsing. */
|
|
24
|
+
this.warnings = [];
|
|
25
|
+
Object.defineProperty(this, NODE_TYPE, { value: DOC });
|
|
26
|
+
let _replacer = null;
|
|
27
|
+
if (typeof replacer === 'function' || Array.isArray(replacer)) {
|
|
28
|
+
_replacer = replacer;
|
|
29
|
+
}
|
|
30
|
+
else if (options === undefined && replacer) {
|
|
31
|
+
options = replacer;
|
|
32
|
+
replacer = undefined;
|
|
33
|
+
}
|
|
34
|
+
const opt = Object.assign({}, defaultOptions, options);
|
|
35
|
+
this.options = opt;
|
|
36
|
+
let { version } = opt;
|
|
37
|
+
if (options === null || options === void 0 ? void 0 : options.directives) {
|
|
38
|
+
this.directives = options.directives.atDocument();
|
|
39
|
+
if (this.directives.yaml.explicit)
|
|
40
|
+
version = this.directives.yaml.version;
|
|
41
|
+
}
|
|
42
|
+
else
|
|
43
|
+
this.directives = new Directives({ version });
|
|
44
|
+
this.setSchema(version, options);
|
|
45
|
+
if (value === undefined)
|
|
46
|
+
this.contents = null;
|
|
47
|
+
else {
|
|
48
|
+
this.contents = this.createNode(value, _replacer, options);
|
|
49
|
+
}
|
|
32
50
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this.comment = null;
|
|
38
|
-
this.directivesEndMarker = null;
|
|
39
|
-
this.errors = [];
|
|
40
|
-
this.schema = null;
|
|
41
|
-
this.tagPrefixes = [];
|
|
42
|
-
this.version = null;
|
|
43
|
-
this.warnings = [];
|
|
44
|
-
|
|
45
|
-
if (value === undefined) {
|
|
46
|
-
// note that this.schema is left as null here
|
|
47
|
-
this.contents = null;
|
|
48
|
-
} else if (value instanceof Document$1) {
|
|
49
|
-
this.parse(value);
|
|
50
|
-
} else {
|
|
51
|
-
this.contents = this.createNode(value, {
|
|
52
|
-
replacer
|
|
53
|
-
});
|
|
51
|
+
/** Adds a value to the document. */
|
|
52
|
+
add(value) {
|
|
53
|
+
if (assertCollection(this.contents))
|
|
54
|
+
this.contents.add(value);
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return this.contents.add(value);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
addIn(path, value) {
|
|
63
|
-
assertCollection(this.contents);
|
|
64
|
-
this.contents.addIn(path, value);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
createNode(value, {
|
|
68
|
-
keepUndefined,
|
|
69
|
-
onTagObj,
|
|
70
|
-
replacer,
|
|
71
|
-
tag,
|
|
72
|
-
wrapScalars
|
|
73
|
-
} = {}) {
|
|
74
|
-
this.setSchema();
|
|
75
|
-
if (typeof replacer === 'function') value = replacer.call({
|
|
76
|
-
'': value
|
|
77
|
-
}, '', value);else if (Array.isArray(replacer)) {
|
|
78
|
-
const keyToStr = v => typeof v === 'number' || v instanceof String || v instanceof Number;
|
|
79
|
-
|
|
80
|
-
const asStr = replacer.filter(keyToStr).map(String);
|
|
81
|
-
if (asStr.length > 0) replacer = replacer.concat(asStr);
|
|
56
|
+
/** Adds a value to the document. */
|
|
57
|
+
addIn(path, value) {
|
|
58
|
+
if (assertCollection(this.contents))
|
|
59
|
+
this.contents.addIn(path, value);
|
|
82
60
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
};
|
|
100
|
-
const node = createNode(value, tag, ctx);
|
|
101
|
-
|
|
102
|
-
for (const alias of aliasNodes) {
|
|
103
|
-
// With circular references, the source node is only resolved after all of
|
|
104
|
-
// its child nodes are. This is why anchors are set only after all of the
|
|
105
|
-
// nodes have been created.
|
|
106
|
-
alias.source = alias.source.node;
|
|
107
|
-
let name = this.anchors.getName(alias.source);
|
|
108
|
-
|
|
109
|
-
if (!name) {
|
|
110
|
-
name = this.anchors.newName();
|
|
111
|
-
this.anchors.map[name] = alias.source;
|
|
112
|
-
}
|
|
61
|
+
/**
|
|
62
|
+
* Create a new `Alias` node, ensuring that the target `node` has the required anchor.
|
|
63
|
+
*
|
|
64
|
+
* If `node` already has an anchor, `name` is ignored.
|
|
65
|
+
* Otherwise, the `node.anchor` value will be set to `name`,
|
|
66
|
+
* or if an anchor with that name is already present in the document,
|
|
67
|
+
* `name` will be used as a prefix for a new unique anchor.
|
|
68
|
+
* If `name` is undefined, the generated anchor will use 'a' as a prefix.
|
|
69
|
+
*/
|
|
70
|
+
createAlias(node, name) {
|
|
71
|
+
if (!node.anchor) {
|
|
72
|
+
const prev = anchorNames(this);
|
|
73
|
+
node.anchor =
|
|
74
|
+
!name || prev.has(name) ? findNewAnchor(name || 'a', prev) : name;
|
|
75
|
+
}
|
|
76
|
+
return new Alias(node.anchor);
|
|
113
77
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
78
|
+
createNode(value, replacer, options) {
|
|
79
|
+
let _replacer = undefined;
|
|
80
|
+
if (typeof replacer === 'function') {
|
|
81
|
+
value = replacer.call({ '': value }, '', value);
|
|
82
|
+
_replacer = replacer;
|
|
83
|
+
}
|
|
84
|
+
else if (Array.isArray(replacer)) {
|
|
85
|
+
const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;
|
|
86
|
+
const asStr = replacer.filter(keyToStr).map(String);
|
|
87
|
+
if (asStr.length > 0)
|
|
88
|
+
replacer = replacer.concat(asStr);
|
|
89
|
+
_replacer = replacer;
|
|
90
|
+
}
|
|
91
|
+
else if (options === undefined && replacer) {
|
|
92
|
+
options = replacer;
|
|
93
|
+
replacer = undefined;
|
|
94
|
+
}
|
|
95
|
+
const { anchorPrefix, flow, keepUndefined, onTagObj, tag } = options || {};
|
|
96
|
+
const { onAnchor, setAnchors, sourceObjects } = createNodeAnchors(this, anchorPrefix || 'a');
|
|
97
|
+
const ctx = {
|
|
98
|
+
keepUndefined: keepUndefined !== null && keepUndefined !== void 0 ? keepUndefined : false,
|
|
99
|
+
onAnchor,
|
|
100
|
+
onTagObj,
|
|
101
|
+
replacer: _replacer,
|
|
102
|
+
schema: this.schema,
|
|
103
|
+
sourceObjects
|
|
104
|
+
};
|
|
105
|
+
const node = createNode(value, tag, ctx);
|
|
106
|
+
if (flow && isCollection(node))
|
|
107
|
+
node.flow = true;
|
|
108
|
+
setAnchors();
|
|
109
|
+
return node;
|
|
134
110
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
get(key, keepScalar) {
|
|
145
|
-
return this.contents instanceof Collection ? this.contents.get(key, keepScalar) : undefined;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
getIn(path, keepScalar) {
|
|
149
|
-
if (isEmptyPath(path)) return !keepScalar && this.contents instanceof Scalar ? this.contents.value : this.contents;
|
|
150
|
-
return this.contents instanceof Collection ? this.contents.getIn(path, keepScalar) : undefined;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
has(key) {
|
|
154
|
-
return this.contents instanceof Collection ? this.contents.has(key) : false;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
hasIn(path) {
|
|
158
|
-
if (isEmptyPath(path)) return this.contents !== undefined;
|
|
159
|
-
return this.contents instanceof Collection ? this.contents.hasIn(path) : false;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
set(key, value) {
|
|
163
|
-
if (this.contents == null) {
|
|
164
|
-
this.setSchema();
|
|
165
|
-
this.contents = collectionFromPath(this.schema, [key], value);
|
|
166
|
-
} else {
|
|
167
|
-
assertCollection(this.contents);
|
|
168
|
-
this.contents.set(key, value);
|
|
111
|
+
/**
|
|
112
|
+
* Convert a key and a value into a `Pair` using the current schema,
|
|
113
|
+
* recursively wrapping all values as `Scalar` or `Collection` nodes.
|
|
114
|
+
*/
|
|
115
|
+
createPair(key, value, options = {}) {
|
|
116
|
+
const k = this.createNode(key, null, options);
|
|
117
|
+
const v = this.createNode(value, null, options);
|
|
118
|
+
return new Pair(k, v);
|
|
169
119
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
} else {
|
|
177
|
-
assertCollection(this.contents);
|
|
178
|
-
this.contents.setIn(path, value);
|
|
120
|
+
/**
|
|
121
|
+
* Removes a value from the document.
|
|
122
|
+
* @returns `true` if the item was found and removed.
|
|
123
|
+
*/
|
|
124
|
+
delete(key) {
|
|
125
|
+
return assertCollection(this.contents) ? this.contents.delete(key) : false;
|
|
179
126
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
127
|
+
/**
|
|
128
|
+
* Removes a value from the document.
|
|
129
|
+
* @returns `true` if the item was found and removed.
|
|
130
|
+
*/
|
|
131
|
+
deleteIn(path) {
|
|
132
|
+
if (isEmptyPath(path)) {
|
|
133
|
+
if (this.contents == null)
|
|
134
|
+
return false;
|
|
135
|
+
this.contents = null;
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return assertCollection(this.contents)
|
|
139
|
+
? this.contents.deleteIn(path)
|
|
140
|
+
: false;
|
|
191
141
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
const {
|
|
202
|
-
directives = [],
|
|
203
|
-
contents = [],
|
|
204
|
-
directivesEndMarker,
|
|
205
|
-
error,
|
|
206
|
-
valueRange
|
|
207
|
-
} = node;
|
|
208
|
-
|
|
209
|
-
if (error) {
|
|
210
|
-
if (!error.source) error.source = this;
|
|
211
|
-
this.errors.push(error);
|
|
142
|
+
/**
|
|
143
|
+
* Returns item at `key`, or `undefined` if not found. By default unwraps
|
|
144
|
+
* scalar values from their surrounding node; to disable set `keepScalar` to
|
|
145
|
+
* `true` (collections are always returned intact).
|
|
146
|
+
*/
|
|
147
|
+
get(key, keepScalar) {
|
|
148
|
+
return isCollection(this.contents)
|
|
149
|
+
? this.contents.get(key, keepScalar)
|
|
150
|
+
: undefined;
|
|
212
151
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Returns item at `path`, or `undefined` if not found. By default unwraps
|
|
154
|
+
* scalar values from their surrounding node; to disable set `keepScalar` to
|
|
155
|
+
* `true` (collections are always returned intact).
|
|
156
|
+
*/
|
|
157
|
+
getIn(path, keepScalar) {
|
|
158
|
+
if (isEmptyPath(path))
|
|
159
|
+
return !keepScalar && isScalar(this.contents)
|
|
160
|
+
? this.contents.value
|
|
161
|
+
: this.contents;
|
|
162
|
+
return isCollection(this.contents)
|
|
163
|
+
? this.contents.getIn(path, keepScalar)
|
|
164
|
+
: undefined;
|
|
226
165
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return listTagNames(this.contents).filter(t => t.indexOf(defaultTagPrefix) !== 0);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
setTagPrefix(handle, prefix) {
|
|
236
|
-
if (handle[0] !== '!' || handle[handle.length - 1] !== '!') throw new Error('Handle must start and end with !');
|
|
237
|
-
|
|
238
|
-
if (prefix) {
|
|
239
|
-
const prev = this.tagPrefixes.find(p => p.handle === handle);
|
|
240
|
-
if (prev) prev.prefix = prefix;else this.tagPrefixes.push({
|
|
241
|
-
handle,
|
|
242
|
-
prefix
|
|
243
|
-
});
|
|
244
|
-
} else {
|
|
245
|
-
this.tagPrefixes = this.tagPrefixes.filter(p => p.handle !== handle);
|
|
166
|
+
/**
|
|
167
|
+
* Checks if the document includes a value with the key `key`.
|
|
168
|
+
*/
|
|
169
|
+
has(key) {
|
|
170
|
+
return isCollection(this.contents) ? this.contents.has(key) : false;
|
|
246
171
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
reviver
|
|
255
|
-
} = {}) {
|
|
256
|
-
const anchorNodes = Object.values(this.anchors.map).map(node => [node, {
|
|
257
|
-
alias: [],
|
|
258
|
-
aliasCount: 0,
|
|
259
|
-
count: 1
|
|
260
|
-
}]);
|
|
261
|
-
const anchors = anchorNodes.length > 0 ? new Map(anchorNodes) : null;
|
|
262
|
-
const ctx = {
|
|
263
|
-
anchors,
|
|
264
|
-
doc: this,
|
|
265
|
-
indentStep: ' ',
|
|
266
|
-
keep: !json,
|
|
267
|
-
mapAsMap: typeof mapAsMap === 'boolean' ? mapAsMap : !!this.options.mapAsMap,
|
|
268
|
-
mapKeyWarned: false,
|
|
269
|
-
maxAliasCount: this.options.maxAliasCount,
|
|
270
|
-
stringify // Requiring directly in Pair would create circular dependencies
|
|
271
|
-
|
|
272
|
-
};
|
|
273
|
-
const res = toJS(this.contents, jsonArg || '', ctx);
|
|
274
|
-
if (typeof onAnchor === 'function' && anchors) for (const {
|
|
275
|
-
count,
|
|
276
|
-
res
|
|
277
|
-
} of anchors.values()) onAnchor(res, count);
|
|
278
|
-
return typeof reviver === 'function' ? applyReviver(reviver, {
|
|
279
|
-
'': res
|
|
280
|
-
}, '', res) : res;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
toJSON(jsonArg, onAnchor) {
|
|
284
|
-
return this.toJS({
|
|
285
|
-
json: true,
|
|
286
|
-
jsonArg,
|
|
287
|
-
mapAsMap: false,
|
|
288
|
-
onAnchor
|
|
289
|
-
});
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
toString() {
|
|
293
|
-
if (this.errors.length > 0) throw new Error('Document with errors cannot be stringified');
|
|
294
|
-
const indentSize = this.options.indent;
|
|
295
|
-
|
|
296
|
-
if (!Number.isInteger(indentSize) || indentSize <= 0) {
|
|
297
|
-
const s = JSON.stringify(indentSize);
|
|
298
|
-
throw new Error("\"indent\" option must be a positive integer, not ".concat(s));
|
|
172
|
+
/**
|
|
173
|
+
* Checks if the document includes a value at `path`.
|
|
174
|
+
*/
|
|
175
|
+
hasIn(path) {
|
|
176
|
+
if (isEmptyPath(path))
|
|
177
|
+
return this.contents !== undefined;
|
|
178
|
+
return isCollection(this.contents) ? this.contents.hasIn(path) : false;
|
|
299
179
|
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
lines.push(vd);
|
|
313
|
-
hasDirectives = true;
|
|
180
|
+
/**
|
|
181
|
+
* Sets a value in this document. For `!!set`, `value` needs to be a
|
|
182
|
+
* boolean to add/remove the item from the set.
|
|
183
|
+
*/
|
|
184
|
+
set(key, value) {
|
|
185
|
+
if (this.contents == null) {
|
|
186
|
+
this.contents = collectionFromPath(this.schema, [key], value);
|
|
187
|
+
}
|
|
188
|
+
else if (assertCollection(this.contents)) {
|
|
189
|
+
this.contents.set(key, value);
|
|
190
|
+
}
|
|
314
191
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
if (this.commentBefore) {
|
|
329
|
-
if (hasDirectives || !this.directivesEndMarker) lines.unshift('');
|
|
330
|
-
lines.unshift(this.commentBefore.replace(/^/gm, '#'));
|
|
192
|
+
/**
|
|
193
|
+
* Sets a value in this document. For `!!set`, `value` needs to be a
|
|
194
|
+
* boolean to add/remove the item from the set.
|
|
195
|
+
*/
|
|
196
|
+
setIn(path, value) {
|
|
197
|
+
if (isEmptyPath(path))
|
|
198
|
+
this.contents = value;
|
|
199
|
+
else if (this.contents == null) {
|
|
200
|
+
this.contents = collectionFromPath(this.schema, Array.from(path), value);
|
|
201
|
+
}
|
|
202
|
+
else if (assertCollection(this.contents)) {
|
|
203
|
+
this.contents.setIn(path, value);
|
|
204
|
+
}
|
|
331
205
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
const body = stringify(this.contents, ctx, () => contentComment = null, onChompKeep);
|
|
355
|
-
lines.push(addComment(body, '', contentComment));
|
|
356
|
-
} else {
|
|
357
|
-
lines.push(stringify(this.contents, ctx));
|
|
206
|
+
/**
|
|
207
|
+
* Change the YAML version and schema used by the document.
|
|
208
|
+
*
|
|
209
|
+
* Overrides all previously set schema options
|
|
210
|
+
*/
|
|
211
|
+
setSchema(version, options) {
|
|
212
|
+
let _options;
|
|
213
|
+
switch (String(version)) {
|
|
214
|
+
case '1.1':
|
|
215
|
+
this.directives.yaml.version = '1.1';
|
|
216
|
+
_options = Object.assign({ merge: true, resolveKnownTags: false, schema: 'yaml-1.1' }, options);
|
|
217
|
+
break;
|
|
218
|
+
case '1.2':
|
|
219
|
+
this.directives.yaml.version = '1.2';
|
|
220
|
+
_options = Object.assign({ merge: false, resolveKnownTags: true, schema: 'core' }, options);
|
|
221
|
+
break;
|
|
222
|
+
default: {
|
|
223
|
+
const sv = JSON.stringify(version);
|
|
224
|
+
throw new Error(`Expected '1.1' or '1.2' as version, but found: ${sv}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
this.schema = new Schema(_options);
|
|
358
228
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
229
|
+
// json & jsonArg are only used from toJSON()
|
|
230
|
+
toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
|
|
231
|
+
const ctx = {
|
|
232
|
+
anchors: new Map(),
|
|
233
|
+
doc: this,
|
|
234
|
+
keep: !json,
|
|
235
|
+
mapAsMap: mapAsMap === true,
|
|
236
|
+
mapKeyWarned: false,
|
|
237
|
+
maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100,
|
|
238
|
+
stringify
|
|
239
|
+
};
|
|
240
|
+
const res = toJS(this.contents, jsonArg || '', ctx);
|
|
241
|
+
if (typeof onAnchor === 'function')
|
|
242
|
+
for (const { count, res } of ctx.anchors.values())
|
|
243
|
+
onAnchor(res, count);
|
|
244
|
+
return typeof reviver === 'function'
|
|
245
|
+
? applyReviver(reviver, { '': res }, '', res)
|
|
246
|
+
: res;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* A JSON representation of the document `contents`.
|
|
250
|
+
*
|
|
251
|
+
* @param jsonArg Used by `JSON.stringify` to indicate the array index or
|
|
252
|
+
* property name.
|
|
253
|
+
*/
|
|
254
|
+
toJSON(jsonArg, onAnchor) {
|
|
255
|
+
return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });
|
|
256
|
+
}
|
|
257
|
+
/** A YAML representation of the document. */
|
|
258
|
+
toString(options = {}) {
|
|
259
|
+
if (this.errors.length > 0)
|
|
260
|
+
throw new Error('Document with errors cannot be stringified');
|
|
261
|
+
if ('indent' in options &&
|
|
262
|
+
(!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {
|
|
263
|
+
const s = JSON.stringify(options.indent);
|
|
264
|
+
throw new Error(`"indent" option must be a positive integer, not ${s}`);
|
|
265
|
+
}
|
|
266
|
+
return stringifyDocument(this, options);
|
|
363
267
|
}
|
|
364
|
-
|
|
365
|
-
return lines.join('\n') + '\n';
|
|
366
|
-
}
|
|
367
|
-
|
|
368
268
|
}
|
|
369
|
-
|
|
370
|
-
|
|
269
|
+
function assertCollection(contents) {
|
|
270
|
+
if (isCollection(contents))
|
|
271
|
+
return true;
|
|
272
|
+
throw new Error('Expected a YAML collection as document contents');
|
|
273
|
+
}
|
|
371
274
|
|
|
372
275
|
export { Document };
|