yaml 2.8.2 → 3.0.0-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 +65 -85
- package/{bin.mjs → bin.js} +1 -1
- package/dist/chunk-BYypO7fO.js +18 -0
- package/dist/cli.d.ts +10 -7
- package/dist/cli.js +181 -0
- package/dist/directives-CG6n4xSM.js +2856 -0
- package/dist/index.d.ts +335 -25
- package/dist/index.js +4 -49
- package/dist/line-counter-TFl552k_.js +3098 -0
- package/dist/public-api-BE74JyVm.js +79 -0
- package/dist/stringifyString-S_ITVLTO.d.ts +1306 -0
- package/dist/test-events.d.ts +6 -3
- package/dist/test-events.js +98 -124
- package/dist/util.d.ts +2 -16
- package/dist/util.js +2 -27
- package/package.json +20 -44
- package/browser/dist/compose/compose-collection.js +0 -88
- package/browser/dist/compose/compose-doc.js +0 -43
- package/browser/dist/compose/compose-node.js +0 -102
- package/browser/dist/compose/compose-scalar.js +0 -86
- package/browser/dist/compose/composer.js +0 -217
- package/browser/dist/compose/resolve-block-map.js +0 -115
- package/browser/dist/compose/resolve-block-scalar.js +0 -198
- package/browser/dist/compose/resolve-block-seq.js +0 -49
- package/browser/dist/compose/resolve-end.js +0 -37
- package/browser/dist/compose/resolve-flow-collection.js +0 -207
- package/browser/dist/compose/resolve-flow-scalar.js +0 -223
- package/browser/dist/compose/resolve-props.js +0 -146
- package/browser/dist/compose/util-contains-newline.js +0 -34
- package/browser/dist/compose/util-empty-scalar-position.js +0 -26
- package/browser/dist/compose/util-flow-indent-check.js +0 -15
- package/browser/dist/compose/util-map-includes.js +0 -13
- package/browser/dist/doc/Document.js +0 -335
- package/browser/dist/doc/anchors.js +0 -71
- package/browser/dist/doc/applyReviver.js +0 -55
- package/browser/dist/doc/createNode.js +0 -88
- package/browser/dist/doc/directives.js +0 -176
- package/browser/dist/errors.js +0 -57
- package/browser/dist/index.js +0 -17
- package/browser/dist/log.js +0 -11
- package/browser/dist/nodes/Alias.js +0 -114
- package/browser/dist/nodes/Collection.js +0 -147
- package/browser/dist/nodes/Node.js +0 -38
- package/browser/dist/nodes/Pair.js +0 -36
- package/browser/dist/nodes/Scalar.js +0 -24
- package/browser/dist/nodes/YAMLMap.js +0 -144
- package/browser/dist/nodes/YAMLSeq.js +0 -113
- package/browser/dist/nodes/addPairToJSMap.js +0 -63
- package/browser/dist/nodes/identity.js +0 -36
- package/browser/dist/nodes/toJS.js +0 -37
- package/browser/dist/parse/cst-scalar.js +0 -214
- package/browser/dist/parse/cst-stringify.js +0 -61
- package/browser/dist/parse/cst-visit.js +0 -97
- package/browser/dist/parse/cst.js +0 -98
- package/browser/dist/parse/lexer.js +0 -717
- package/browser/dist/parse/line-counter.js +0 -39
- package/browser/dist/parse/parser.js +0 -967
- package/browser/dist/public-api.js +0 -102
- package/browser/dist/schema/Schema.js +0 -37
- package/browser/dist/schema/common/map.js +0 -17
- package/browser/dist/schema/common/null.js +0 -15
- package/browser/dist/schema/common/seq.js +0 -17
- package/browser/dist/schema/common/string.js +0 -14
- package/browser/dist/schema/core/bool.js +0 -19
- package/browser/dist/schema/core/float.js +0 -43
- package/browser/dist/schema/core/int.js +0 -38
- package/browser/dist/schema/core/schema.js +0 -23
- package/browser/dist/schema/json/schema.js +0 -62
- package/browser/dist/schema/tags.js +0 -96
- package/browser/dist/schema/yaml-1.1/binary.js +0 -58
- package/browser/dist/schema/yaml-1.1/bool.js +0 -26
- package/browser/dist/schema/yaml-1.1/float.js +0 -46
- package/browser/dist/schema/yaml-1.1/int.js +0 -71
- package/browser/dist/schema/yaml-1.1/merge.js +0 -64
- package/browser/dist/schema/yaml-1.1/omap.js +0 -74
- package/browser/dist/schema/yaml-1.1/pairs.js +0 -78
- package/browser/dist/schema/yaml-1.1/schema.js +0 -39
- package/browser/dist/schema/yaml-1.1/set.js +0 -93
- package/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
- package/browser/dist/stringify/foldFlowLines.js +0 -146
- package/browser/dist/stringify/stringify.js +0 -128
- package/browser/dist/stringify/stringifyCollection.js +0 -143
- package/browser/dist/stringify/stringifyComment.js +0 -20
- package/browser/dist/stringify/stringifyDocument.js +0 -85
- package/browser/dist/stringify/stringifyNumber.js +0 -24
- package/browser/dist/stringify/stringifyPair.js +0 -150
- package/browser/dist/stringify/stringifyString.js +0 -336
- package/browser/dist/util.js +0 -11
- package/browser/dist/visit.js +0 -233
- package/browser/index.js +0 -5
- package/browser/package.json +0 -3
- package/dist/cli.mjs +0 -201
- package/dist/compose/compose-collection.d.ts +0 -11
- package/dist/compose/compose-collection.js +0 -90
- package/dist/compose/compose-doc.d.ts +0 -7
- package/dist/compose/compose-doc.js +0 -45
- package/dist/compose/compose-node.d.ts +0 -29
- package/dist/compose/compose-node.js +0 -105
- package/dist/compose/compose-scalar.d.ts +0 -5
- package/dist/compose/compose-scalar.js +0 -88
- package/dist/compose/composer.d.ts +0 -63
- package/dist/compose/composer.js +0 -222
- package/dist/compose/resolve-block-map.d.ts +0 -6
- package/dist/compose/resolve-block-map.js +0 -117
- package/dist/compose/resolve-block-scalar.d.ts +0 -11
- package/dist/compose/resolve-block-scalar.js +0 -200
- package/dist/compose/resolve-block-seq.d.ts +0 -6
- package/dist/compose/resolve-block-seq.js +0 -51
- package/dist/compose/resolve-end.d.ts +0 -6
- package/dist/compose/resolve-end.js +0 -39
- package/dist/compose/resolve-flow-collection.d.ts +0 -7
- package/dist/compose/resolve-flow-collection.js +0 -209
- package/dist/compose/resolve-flow-scalar.d.ts +0 -10
- package/dist/compose/resolve-flow-scalar.js +0 -225
- package/dist/compose/resolve-props.d.ts +0 -23
- package/dist/compose/resolve-props.js +0 -148
- package/dist/compose/util-contains-newline.d.ts +0 -2
- package/dist/compose/util-contains-newline.js +0 -36
- package/dist/compose/util-empty-scalar-position.d.ts +0 -2
- package/dist/compose/util-empty-scalar-position.js +0 -28
- package/dist/compose/util-flow-indent-check.d.ts +0 -3
- package/dist/compose/util-flow-indent-check.js +0 -17
- package/dist/compose/util-map-includes.d.ts +0 -4
- package/dist/compose/util-map-includes.js +0 -15
- package/dist/doc/Document.d.ts +0 -141
- package/dist/doc/Document.js +0 -337
- package/dist/doc/anchors.d.ts +0 -24
- package/dist/doc/anchors.js +0 -76
- package/dist/doc/applyReviver.d.ts +0 -9
- package/dist/doc/applyReviver.js +0 -57
- package/dist/doc/createNode.d.ts +0 -17
- package/dist/doc/createNode.js +0 -90
- package/dist/doc/directives.d.ts +0 -49
- package/dist/doc/directives.js +0 -178
- package/dist/errors.d.ts +0 -21
- package/dist/errors.js +0 -62
- package/dist/log.d.ts +0 -3
- package/dist/log.js +0 -19
- package/dist/nodes/Alias.d.ts +0 -29
- package/dist/nodes/Alias.js +0 -116
- package/dist/nodes/Collection.d.ts +0 -73
- package/dist/nodes/Collection.js +0 -151
- package/dist/nodes/Node.d.ts +0 -53
- package/dist/nodes/Node.js +0 -40
- package/dist/nodes/Pair.d.ts +0 -22
- package/dist/nodes/Pair.js +0 -39
- package/dist/nodes/Scalar.d.ts +0 -43
- package/dist/nodes/Scalar.js +0 -27
- package/dist/nodes/YAMLMap.d.ts +0 -53
- package/dist/nodes/YAMLMap.js +0 -147
- package/dist/nodes/YAMLSeq.d.ts +0 -60
- package/dist/nodes/YAMLSeq.js +0 -115
- package/dist/nodes/addPairToJSMap.d.ts +0 -4
- package/dist/nodes/addPairToJSMap.js +0 -65
- package/dist/nodes/identity.d.ts +0 -23
- package/dist/nodes/identity.js +0 -53
- package/dist/nodes/toJS.d.ts +0 -29
- package/dist/nodes/toJS.js +0 -39
- package/dist/options.d.ts +0 -344
- package/dist/parse/cst-scalar.d.ts +0 -64
- package/dist/parse/cst-scalar.js +0 -218
- package/dist/parse/cst-stringify.d.ts +0 -8
- package/dist/parse/cst-stringify.js +0 -63
- package/dist/parse/cst-visit.d.ts +0 -39
- package/dist/parse/cst-visit.js +0 -99
- package/dist/parse/cst.d.ts +0 -109
- package/dist/parse/cst.js +0 -112
- package/dist/parse/lexer.d.ts +0 -87
- package/dist/parse/lexer.js +0 -719
- package/dist/parse/line-counter.d.ts +0 -22
- package/dist/parse/line-counter.js +0 -41
- package/dist/parse/parser.d.ts +0 -84
- package/dist/parse/parser.js +0 -972
- package/dist/public-api.d.ts +0 -44
- package/dist/public-api.js +0 -107
- package/dist/schema/Schema.d.ts +0 -17
- package/dist/schema/Schema.js +0 -39
- package/dist/schema/common/map.d.ts +0 -2
- package/dist/schema/common/map.js +0 -19
- package/dist/schema/common/null.d.ts +0 -4
- package/dist/schema/common/null.js +0 -17
- package/dist/schema/common/seq.d.ts +0 -2
- package/dist/schema/common/seq.js +0 -19
- package/dist/schema/common/string.d.ts +0 -2
- package/dist/schema/common/string.js +0 -16
- package/dist/schema/core/bool.d.ts +0 -4
- package/dist/schema/core/bool.js +0 -21
- package/dist/schema/core/float.d.ts +0 -4
- package/dist/schema/core/float.js +0 -47
- package/dist/schema/core/int.d.ts +0 -4
- package/dist/schema/core/int.js +0 -42
- package/dist/schema/core/schema.d.ts +0 -1
- package/dist/schema/core/schema.js +0 -25
- package/dist/schema/json/schema.d.ts +0 -2
- package/dist/schema/json/schema.js +0 -64
- package/dist/schema/json-schema.d.ts +0 -69
- package/dist/schema/tags.d.ts +0 -48
- package/dist/schema/tags.js +0 -99
- package/dist/schema/types.d.ts +0 -92
- package/dist/schema/yaml-1.1/binary.d.ts +0 -2
- package/dist/schema/yaml-1.1/binary.js +0 -70
- package/dist/schema/yaml-1.1/bool.d.ts +0 -7
- package/dist/schema/yaml-1.1/bool.js +0 -29
- package/dist/schema/yaml-1.1/float.d.ts +0 -4
- package/dist/schema/yaml-1.1/float.js +0 -50
- package/dist/schema/yaml-1.1/int.d.ts +0 -5
- package/dist/schema/yaml-1.1/int.js +0 -76
- package/dist/schema/yaml-1.1/merge.d.ts +0 -9
- package/dist/schema/yaml-1.1/merge.js +0 -68
- package/dist/schema/yaml-1.1/omap.d.ts +0 -22
- package/dist/schema/yaml-1.1/omap.js +0 -77
- package/dist/schema/yaml-1.1/pairs.d.ts +0 -10
- package/dist/schema/yaml-1.1/pairs.js +0 -82
- package/dist/schema/yaml-1.1/schema.d.ts +0 -1
- package/dist/schema/yaml-1.1/schema.js +0 -41
- package/dist/schema/yaml-1.1/set.d.ts +0 -28
- package/dist/schema/yaml-1.1/set.js +0 -96
- package/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
- package/dist/schema/yaml-1.1/timestamp.js +0 -105
- package/dist/stringify/foldFlowLines.d.ts +0 -34
- package/dist/stringify/foldFlowLines.js +0 -151
- package/dist/stringify/stringify.d.ts +0 -21
- package/dist/stringify/stringify.js +0 -131
- package/dist/stringify/stringifyCollection.d.ts +0 -17
- package/dist/stringify/stringifyCollection.js +0 -145
- package/dist/stringify/stringifyComment.d.ts +0 -10
- package/dist/stringify/stringifyComment.js +0 -24
- package/dist/stringify/stringifyDocument.d.ts +0 -4
- package/dist/stringify/stringifyDocument.js +0 -87
- package/dist/stringify/stringifyNumber.d.ts +0 -2
- package/dist/stringify/stringifyNumber.js +0 -26
- package/dist/stringify/stringifyPair.d.ts +0 -3
- package/dist/stringify/stringifyPair.js +0 -152
- package/dist/stringify/stringifyString.d.ts +0 -9
- package/dist/stringify/stringifyString.js +0 -338
- package/dist/visit.d.ts +0 -102
- package/dist/visit.js +0 -236
- package/util.js +0 -2
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import type { Schema } from '../schema/Schema';
|
|
2
|
-
import { NODE_TYPE } from './identity';
|
|
3
|
-
import { NodeBase } from './Node';
|
|
4
|
-
export declare function collectionFromPath(schema: Schema, path: unknown[], value: unknown): import('./Node').Node;
|
|
5
|
-
export declare const isEmptyPath: (path: Iterable<unknown> | null | undefined) => path is null | undefined;
|
|
6
|
-
export declare abstract class Collection extends NodeBase {
|
|
7
|
-
schema: Schema | undefined;
|
|
8
|
-
[NODE_TYPE]: symbol;
|
|
9
|
-
items: unknown[];
|
|
10
|
-
/** An optional anchor on this node. Used by alias nodes. */
|
|
11
|
-
anchor?: string;
|
|
12
|
-
/**
|
|
13
|
-
* If true, stringify this and all child nodes using flow rather than
|
|
14
|
-
* block styles.
|
|
15
|
-
*/
|
|
16
|
-
flow?: boolean;
|
|
17
|
-
constructor(type: symbol, schema?: Schema);
|
|
18
|
-
/**
|
|
19
|
-
* Create a copy of this collection.
|
|
20
|
-
*
|
|
21
|
-
* @param schema - If defined, overwrites the original's schema
|
|
22
|
-
*/
|
|
23
|
-
clone(schema?: Schema): Collection;
|
|
24
|
-
/** Adds a value to the collection. */
|
|
25
|
-
abstract add(value: unknown): void;
|
|
26
|
-
/**
|
|
27
|
-
* Removes a value from the collection.
|
|
28
|
-
* @returns `true` if the item was found and removed.
|
|
29
|
-
*/
|
|
30
|
-
abstract delete(key: unknown): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Returns item at `key`, or `undefined` if not found. By default unwraps
|
|
33
|
-
* scalar values from their surrounding node; to disable set `keepScalar` to
|
|
34
|
-
* `true` (collections are always returned intact).
|
|
35
|
-
*/
|
|
36
|
-
abstract get(key: unknown, keepScalar?: boolean): unknown;
|
|
37
|
-
/**
|
|
38
|
-
* Checks if the collection includes a value with the key `key`.
|
|
39
|
-
*/
|
|
40
|
-
abstract has(key: unknown): boolean;
|
|
41
|
-
/**
|
|
42
|
-
* Sets a value in this collection. For `!!set`, `value` needs to be a
|
|
43
|
-
* boolean to add/remove the item from the set.
|
|
44
|
-
*/
|
|
45
|
-
abstract set(key: unknown, value: unknown): void;
|
|
46
|
-
/**
|
|
47
|
-
* Adds a value to the collection. For `!!map` and `!!omap` the value must
|
|
48
|
-
* be a Pair instance or a `{ key, value }` object, which may not have a key
|
|
49
|
-
* that already exists in the map.
|
|
50
|
-
*/
|
|
51
|
-
addIn(path: Iterable<unknown>, value: unknown): void;
|
|
52
|
-
/**
|
|
53
|
-
* Removes a value from the collection.
|
|
54
|
-
* @returns `true` if the item was found and removed.
|
|
55
|
-
*/
|
|
56
|
-
deleteIn(path: Iterable<unknown>): boolean;
|
|
57
|
-
/**
|
|
58
|
-
* Returns item at `key`, or `undefined` if not found. By default unwraps
|
|
59
|
-
* scalar values from their surrounding node; to disable set `keepScalar` to
|
|
60
|
-
* `true` (collections are always returned intact).
|
|
61
|
-
*/
|
|
62
|
-
getIn(path: Iterable<unknown>, keepScalar?: boolean): unknown;
|
|
63
|
-
hasAllNullValues(allowScalar?: boolean): boolean;
|
|
64
|
-
/**
|
|
65
|
-
* Checks if the collection includes a value with the key `key`.
|
|
66
|
-
*/
|
|
67
|
-
hasIn(path: Iterable<unknown>): boolean;
|
|
68
|
-
/**
|
|
69
|
-
* Sets a value in this collection. For `!!set`, `value` needs to be a
|
|
70
|
-
* boolean to add/remove the item from the set.
|
|
71
|
-
*/
|
|
72
|
-
setIn(path: Iterable<unknown>, value: unknown): void;
|
|
73
|
-
}
|
package/dist/nodes/Collection.js
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var createNode = require('../doc/createNode.js');
|
|
4
|
-
var identity = require('./identity.js');
|
|
5
|
-
var Node = require('./Node.js');
|
|
6
|
-
|
|
7
|
-
function collectionFromPath(schema, path, value) {
|
|
8
|
-
let v = value;
|
|
9
|
-
for (let i = path.length - 1; i >= 0; --i) {
|
|
10
|
-
const k = path[i];
|
|
11
|
-
if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {
|
|
12
|
-
const a = [];
|
|
13
|
-
a[k] = v;
|
|
14
|
-
v = a;
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
v = new Map([[k, v]]);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return createNode.createNode(v, undefined, {
|
|
21
|
-
aliasDuplicateObjects: false,
|
|
22
|
-
keepUndefined: false,
|
|
23
|
-
onAnchor: () => {
|
|
24
|
-
throw new Error('This should not happen, please report a bug.');
|
|
25
|
-
},
|
|
26
|
-
schema,
|
|
27
|
-
sourceObjects: new Map()
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
// Type guard is intentionally a little wrong so as to be more useful,
|
|
31
|
-
// as it does not cover untypable empty non-string iterables (e.g. []).
|
|
32
|
-
const isEmptyPath = (path) => path == null ||
|
|
33
|
-
(typeof path === 'object' && !!path[Symbol.iterator]().next().done);
|
|
34
|
-
class Collection extends Node.NodeBase {
|
|
35
|
-
constructor(type, schema) {
|
|
36
|
-
super(type);
|
|
37
|
-
Object.defineProperty(this, 'schema', {
|
|
38
|
-
value: schema,
|
|
39
|
-
configurable: true,
|
|
40
|
-
enumerable: false,
|
|
41
|
-
writable: true
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Create a copy of this collection.
|
|
46
|
-
*
|
|
47
|
-
* @param schema - If defined, overwrites the original's schema
|
|
48
|
-
*/
|
|
49
|
-
clone(schema) {
|
|
50
|
-
const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
|
|
51
|
-
if (schema)
|
|
52
|
-
copy.schema = schema;
|
|
53
|
-
copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);
|
|
54
|
-
if (this.range)
|
|
55
|
-
copy.range = this.range.slice();
|
|
56
|
-
return copy;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Adds a value to the collection. For `!!map` and `!!omap` the value must
|
|
60
|
-
* be a Pair instance or a `{ key, value }` object, which may not have a key
|
|
61
|
-
* that already exists in the map.
|
|
62
|
-
*/
|
|
63
|
-
addIn(path, value) {
|
|
64
|
-
if (isEmptyPath(path))
|
|
65
|
-
this.add(value);
|
|
66
|
-
else {
|
|
67
|
-
const [key, ...rest] = path;
|
|
68
|
-
const node = this.get(key, true);
|
|
69
|
-
if (identity.isCollection(node))
|
|
70
|
-
node.addIn(rest, value);
|
|
71
|
-
else if (node === undefined && this.schema)
|
|
72
|
-
this.set(key, collectionFromPath(this.schema, rest, value));
|
|
73
|
-
else
|
|
74
|
-
throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Removes a value from the collection.
|
|
79
|
-
* @returns `true` if the item was found and removed.
|
|
80
|
-
*/
|
|
81
|
-
deleteIn(path) {
|
|
82
|
-
const [key, ...rest] = path;
|
|
83
|
-
if (rest.length === 0)
|
|
84
|
-
return this.delete(key);
|
|
85
|
-
const node = this.get(key, true);
|
|
86
|
-
if (identity.isCollection(node))
|
|
87
|
-
return node.deleteIn(rest);
|
|
88
|
-
else
|
|
89
|
-
throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Returns item at `key`, or `undefined` if not found. By default unwraps
|
|
93
|
-
* scalar values from their surrounding node; to disable set `keepScalar` to
|
|
94
|
-
* `true` (collections are always returned intact).
|
|
95
|
-
*/
|
|
96
|
-
getIn(path, keepScalar) {
|
|
97
|
-
const [key, ...rest] = path;
|
|
98
|
-
const node = this.get(key, true);
|
|
99
|
-
if (rest.length === 0)
|
|
100
|
-
return !keepScalar && identity.isScalar(node) ? node.value : node;
|
|
101
|
-
else
|
|
102
|
-
return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;
|
|
103
|
-
}
|
|
104
|
-
hasAllNullValues(allowScalar) {
|
|
105
|
-
return this.items.every(node => {
|
|
106
|
-
if (!identity.isPair(node))
|
|
107
|
-
return false;
|
|
108
|
-
const n = node.value;
|
|
109
|
-
return (n == null ||
|
|
110
|
-
(allowScalar &&
|
|
111
|
-
identity.isScalar(n) &&
|
|
112
|
-
n.value == null &&
|
|
113
|
-
!n.commentBefore &&
|
|
114
|
-
!n.comment &&
|
|
115
|
-
!n.tag));
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Checks if the collection includes a value with the key `key`.
|
|
120
|
-
*/
|
|
121
|
-
hasIn(path) {
|
|
122
|
-
const [key, ...rest] = path;
|
|
123
|
-
if (rest.length === 0)
|
|
124
|
-
return this.has(key);
|
|
125
|
-
const node = this.get(key, true);
|
|
126
|
-
return identity.isCollection(node) ? node.hasIn(rest) : false;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Sets a value in this collection. For `!!set`, `value` needs to be a
|
|
130
|
-
* boolean to add/remove the item from the set.
|
|
131
|
-
*/
|
|
132
|
-
setIn(path, value) {
|
|
133
|
-
const [key, ...rest] = path;
|
|
134
|
-
if (rest.length === 0) {
|
|
135
|
-
this.set(key, value);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
const node = this.get(key, true);
|
|
139
|
-
if (identity.isCollection(node))
|
|
140
|
-
node.setIn(rest, value);
|
|
141
|
-
else if (node === undefined && this.schema)
|
|
142
|
-
this.set(key, collectionFromPath(this.schema, rest, value));
|
|
143
|
-
else
|
|
144
|
-
throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
exports.Collection = Collection;
|
|
150
|
-
exports.collectionFromPath = collectionFromPath;
|
|
151
|
-
exports.isEmptyPath = isEmptyPath;
|
package/dist/nodes/Node.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { Document } from '../doc/Document';
|
|
2
|
-
import type { ToJSOptions } from '../options';
|
|
3
|
-
import type { Token } from '../parse/cst';
|
|
4
|
-
import type { StringifyContext } from '../stringify/stringify';
|
|
5
|
-
import type { Alias } from './Alias';
|
|
6
|
-
import { NODE_TYPE } from './identity';
|
|
7
|
-
import type { Scalar } from './Scalar';
|
|
8
|
-
import type { ToJSContext } from './toJS';
|
|
9
|
-
import type { MapLike, YAMLMap } from './YAMLMap';
|
|
10
|
-
import type { YAMLSeq } from './YAMLSeq';
|
|
11
|
-
export type Node<T = unknown> = Alias | Scalar<T> | YAMLMap<unknown, T> | YAMLSeq<T>;
|
|
12
|
-
/** Utility type mapper */
|
|
13
|
-
export type NodeType<T> = T extends string | number | bigint | boolean | null | undefined ? Scalar<T> : T extends Date ? Scalar<string | Date> : T extends Array<any> ? YAMLSeq<NodeType<T[number]>> : T extends {
|
|
14
|
-
[key: string]: any;
|
|
15
|
-
} ? YAMLMap<NodeType<keyof T>, NodeType<T[keyof T]>> : T extends {
|
|
16
|
-
[key: number]: any;
|
|
17
|
-
} ? YAMLMap<NodeType<keyof T>, NodeType<T[keyof T]>> : Node;
|
|
18
|
-
export type ParsedNode = Alias.Parsed | Scalar.Parsed | YAMLMap.Parsed | YAMLSeq.Parsed;
|
|
19
|
-
/** `[start, value-end, node-end]` */
|
|
20
|
-
export type Range = [number, number, number];
|
|
21
|
-
export declare abstract class NodeBase {
|
|
22
|
-
readonly [NODE_TYPE]: symbol;
|
|
23
|
-
/** A comment on or immediately after this */
|
|
24
|
-
comment?: string | null;
|
|
25
|
-
/** A comment before this */
|
|
26
|
-
commentBefore?: string | null;
|
|
27
|
-
/**
|
|
28
|
-
* The `[start, value-end, node-end]` character offsets for the part of the
|
|
29
|
-
* source parsed into this node (undefined if not parsed). The `value-end`
|
|
30
|
-
* and `node-end` positions are themselves not included in their respective
|
|
31
|
-
* ranges.
|
|
32
|
-
*/
|
|
33
|
-
range?: Range | null;
|
|
34
|
-
/** A blank line before this node and its commentBefore */
|
|
35
|
-
spaceBefore?: boolean;
|
|
36
|
-
/** The CST token that was composed into this node. */
|
|
37
|
-
srcToken?: Token;
|
|
38
|
-
/** A fully qualified tag, if required */
|
|
39
|
-
tag?: string;
|
|
40
|
-
/**
|
|
41
|
-
* Customize the way that a key-value pair is resolved.
|
|
42
|
-
* Used for YAML 1.1 !!merge << handling.
|
|
43
|
-
*/
|
|
44
|
-
addToJSMap?: (ctx: ToJSContext | undefined, map: MapLike, value: unknown) => void;
|
|
45
|
-
/** A plain JS representation of this node */
|
|
46
|
-
abstract toJSON(): any;
|
|
47
|
-
abstract toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
|
|
48
|
-
constructor(type: symbol);
|
|
49
|
-
/** Create a copy of this node. */
|
|
50
|
-
clone(): NodeBase;
|
|
51
|
-
/** A plain JavaScript representation of this node. */
|
|
52
|
-
toJS(doc: Document<Node, boolean>, { mapAsMap, maxAliasCount, onAnchor, reviver }?: ToJSOptions): any;
|
|
53
|
-
}
|
package/dist/nodes/Node.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var applyReviver = require('../doc/applyReviver.js');
|
|
4
|
-
var identity = require('./identity.js');
|
|
5
|
-
var toJS = require('./toJS.js');
|
|
6
|
-
|
|
7
|
-
class NodeBase {
|
|
8
|
-
constructor(type) {
|
|
9
|
-
Object.defineProperty(this, identity.NODE_TYPE, { value: type });
|
|
10
|
-
}
|
|
11
|
-
/** Create a copy of this node. */
|
|
12
|
-
clone() {
|
|
13
|
-
const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));
|
|
14
|
-
if (this.range)
|
|
15
|
-
copy.range = this.range.slice();
|
|
16
|
-
return copy;
|
|
17
|
-
}
|
|
18
|
-
/** A plain JavaScript representation of this node. */
|
|
19
|
-
toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {
|
|
20
|
-
if (!identity.isDocument(doc))
|
|
21
|
-
throw new TypeError('A document argument is required');
|
|
22
|
-
const ctx = {
|
|
23
|
-
anchors: new Map(),
|
|
24
|
-
doc,
|
|
25
|
-
keep: true,
|
|
26
|
-
mapAsMap: mapAsMap === true,
|
|
27
|
-
mapKeyWarned: false,
|
|
28
|
-
maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100
|
|
29
|
-
};
|
|
30
|
-
const res = toJS.toJS(this, '', ctx);
|
|
31
|
-
if (typeof onAnchor === 'function')
|
|
32
|
-
for (const { count, res } of ctx.anchors.values())
|
|
33
|
-
onAnchor(res, count);
|
|
34
|
-
return typeof reviver === 'function'
|
|
35
|
-
? applyReviver.applyReviver(reviver, { '': res }, '', res)
|
|
36
|
-
: res;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
exports.NodeBase = NodeBase;
|
package/dist/nodes/Pair.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { CreateNodeContext } from '../doc/createNode';
|
|
2
|
-
import type { CollectionItem } from '../parse/cst';
|
|
3
|
-
import type { Schema } from '../schema/Schema';
|
|
4
|
-
import type { StringifyContext } from '../stringify/stringify';
|
|
5
|
-
import { addPairToJSMap } from './addPairToJSMap';
|
|
6
|
-
import { NODE_TYPE } from './identity';
|
|
7
|
-
import type { Node } from './Node';
|
|
8
|
-
import type { ToJSContext } from './toJS';
|
|
9
|
-
export declare function createPair(key: unknown, value: unknown, ctx: CreateNodeContext): Pair<Node, Node>;
|
|
10
|
-
export declare class Pair<K = unknown, V = unknown> {
|
|
11
|
-
readonly [NODE_TYPE]: symbol;
|
|
12
|
-
/** Always Node or null when parsed, but can be set to anything. */
|
|
13
|
-
key: K;
|
|
14
|
-
/** Always Node or null when parsed, but can be set to anything. */
|
|
15
|
-
value: V | null;
|
|
16
|
-
/** The CST token that was composed into this pair. */
|
|
17
|
-
srcToken?: CollectionItem;
|
|
18
|
-
constructor(key: K, value?: V | null);
|
|
19
|
-
clone(schema?: Schema): Pair<K, V>;
|
|
20
|
-
toJSON(_?: unknown, ctx?: ToJSContext): ReturnType<typeof addPairToJSMap>;
|
|
21
|
-
toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
|
|
22
|
-
}
|
package/dist/nodes/Pair.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var createNode = require('../doc/createNode.js');
|
|
4
|
-
var stringifyPair = require('../stringify/stringifyPair.js');
|
|
5
|
-
var addPairToJSMap = require('./addPairToJSMap.js');
|
|
6
|
-
var identity = require('./identity.js');
|
|
7
|
-
|
|
8
|
-
function createPair(key, value, ctx) {
|
|
9
|
-
const k = createNode.createNode(key, undefined, ctx);
|
|
10
|
-
const v = createNode.createNode(value, undefined, ctx);
|
|
11
|
-
return new Pair(k, v);
|
|
12
|
-
}
|
|
13
|
-
class Pair {
|
|
14
|
-
constructor(key, value = null) {
|
|
15
|
-
Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });
|
|
16
|
-
this.key = key;
|
|
17
|
-
this.value = value;
|
|
18
|
-
}
|
|
19
|
-
clone(schema) {
|
|
20
|
-
let { key, value } = this;
|
|
21
|
-
if (identity.isNode(key))
|
|
22
|
-
key = key.clone(schema);
|
|
23
|
-
if (identity.isNode(value))
|
|
24
|
-
value = value.clone(schema);
|
|
25
|
-
return new Pair(key, value);
|
|
26
|
-
}
|
|
27
|
-
toJSON(_, ctx) {
|
|
28
|
-
const pair = ctx?.mapAsMap ? new Map() : {};
|
|
29
|
-
return addPairToJSMap.addPairToJSMap(ctx, pair, this);
|
|
30
|
-
}
|
|
31
|
-
toString(ctx, onComment, onChompKeep) {
|
|
32
|
-
return ctx?.doc
|
|
33
|
-
? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)
|
|
34
|
-
: JSON.stringify(this);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
exports.Pair = Pair;
|
|
39
|
-
exports.createPair = createPair;
|
package/dist/nodes/Scalar.d.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { BlockScalar, FlowScalar } from '../parse/cst';
|
|
2
|
-
import type { Range } from './Node';
|
|
3
|
-
import { NodeBase } from './Node';
|
|
4
|
-
import type { ToJSContext } from './toJS';
|
|
5
|
-
export declare const isScalarValue: (value: unknown) => boolean;
|
|
6
|
-
export declare namespace Scalar {
|
|
7
|
-
interface Parsed extends Scalar {
|
|
8
|
-
range: Range;
|
|
9
|
-
source: string;
|
|
10
|
-
srcToken?: FlowScalar | BlockScalar;
|
|
11
|
-
}
|
|
12
|
-
type BLOCK_FOLDED = 'BLOCK_FOLDED';
|
|
13
|
-
type BLOCK_LITERAL = 'BLOCK_LITERAL';
|
|
14
|
-
type PLAIN = 'PLAIN';
|
|
15
|
-
type QUOTE_DOUBLE = 'QUOTE_DOUBLE';
|
|
16
|
-
type QUOTE_SINGLE = 'QUOTE_SINGLE';
|
|
17
|
-
type Type = BLOCK_FOLDED | BLOCK_LITERAL | PLAIN | QUOTE_DOUBLE | QUOTE_SINGLE;
|
|
18
|
-
}
|
|
19
|
-
export declare class Scalar<T = unknown> extends NodeBase {
|
|
20
|
-
static readonly BLOCK_FOLDED = "BLOCK_FOLDED";
|
|
21
|
-
static readonly BLOCK_LITERAL = "BLOCK_LITERAL";
|
|
22
|
-
static readonly PLAIN = "PLAIN";
|
|
23
|
-
static readonly QUOTE_DOUBLE = "QUOTE_DOUBLE";
|
|
24
|
-
static readonly QUOTE_SINGLE = "QUOTE_SINGLE";
|
|
25
|
-
value: T;
|
|
26
|
-
/** An optional anchor on this node. Used by alias nodes. */
|
|
27
|
-
anchor?: string;
|
|
28
|
-
/**
|
|
29
|
-
* By default (undefined), numbers use decimal notation.
|
|
30
|
-
* The YAML 1.2 core schema only supports 'HEX' and 'OCT'.
|
|
31
|
-
* The YAML 1.1 schema also supports 'BIN' and 'TIME'
|
|
32
|
-
*/
|
|
33
|
-
format?: string;
|
|
34
|
-
/** If `value` is a number, use this value when stringifying this node. */
|
|
35
|
-
minFractionDigits?: number;
|
|
36
|
-
/** Set during parsing to the source string value */
|
|
37
|
-
source?: string;
|
|
38
|
-
/** The scalar style used for the node's string representation */
|
|
39
|
-
type?: Scalar.Type;
|
|
40
|
-
constructor(value: T);
|
|
41
|
-
toJSON(arg?: any, ctx?: ToJSContext): any;
|
|
42
|
-
toString(): string;
|
|
43
|
-
}
|
package/dist/nodes/Scalar.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var identity = require('./identity.js');
|
|
4
|
-
var Node = require('./Node.js');
|
|
5
|
-
var toJS = require('./toJS.js');
|
|
6
|
-
|
|
7
|
-
const isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');
|
|
8
|
-
class Scalar extends Node.NodeBase {
|
|
9
|
-
constructor(value) {
|
|
10
|
-
super(identity.SCALAR);
|
|
11
|
-
this.value = value;
|
|
12
|
-
}
|
|
13
|
-
toJSON(arg, ctx) {
|
|
14
|
-
return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);
|
|
15
|
-
}
|
|
16
|
-
toString() {
|
|
17
|
-
return String(this.value);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
Scalar.BLOCK_FOLDED = 'BLOCK_FOLDED';
|
|
21
|
-
Scalar.BLOCK_LITERAL = 'BLOCK_LITERAL';
|
|
22
|
-
Scalar.PLAIN = 'PLAIN';
|
|
23
|
-
Scalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';
|
|
24
|
-
Scalar.QUOTE_SINGLE = 'QUOTE_SINGLE';
|
|
25
|
-
|
|
26
|
-
exports.Scalar = Scalar;
|
|
27
|
-
exports.isScalarValue = isScalarValue;
|
package/dist/nodes/YAMLMap.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { BlockMap, FlowCollection } from '../parse/cst';
|
|
2
|
-
import type { Schema } from '../schema/Schema';
|
|
3
|
-
import type { StringifyContext } from '../stringify/stringify';
|
|
4
|
-
import type { CreateNodeContext } from '../util';
|
|
5
|
-
import { Collection } from './Collection';
|
|
6
|
-
import type { ParsedNode, Range } from './Node';
|
|
7
|
-
import { Pair } from './Pair';
|
|
8
|
-
import type { Scalar } from './Scalar';
|
|
9
|
-
import type { ToJSContext } from './toJS';
|
|
10
|
-
export type MapLike = Map<unknown, unknown> | Set<unknown> | Record<string | number | symbol, unknown>;
|
|
11
|
-
export declare function findPair<K = unknown, V = unknown>(items: Iterable<Pair<K, V>>, key: unknown): Pair<K, V> | undefined;
|
|
12
|
-
export declare namespace YAMLMap {
|
|
13
|
-
interface Parsed<K extends ParsedNode = ParsedNode, V extends ParsedNode | null = ParsedNode | null> extends YAMLMap<K, V> {
|
|
14
|
-
items: Pair<K, V>[];
|
|
15
|
-
range: Range;
|
|
16
|
-
srcToken?: BlockMap | FlowCollection;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export declare class YAMLMap<K = unknown, V = unknown> extends Collection {
|
|
20
|
-
static get tagName(): 'tag:yaml.org,2002:map';
|
|
21
|
-
items: Pair<K, V>[];
|
|
22
|
-
constructor(schema?: Schema);
|
|
23
|
-
/**
|
|
24
|
-
* A generic collection parsing method that can be extended
|
|
25
|
-
* to other node classes that inherit from YAMLMap
|
|
26
|
-
*/
|
|
27
|
-
static from(schema: Schema, obj: unknown, ctx: CreateNodeContext): YAMLMap;
|
|
28
|
-
/**
|
|
29
|
-
* Adds a value to the collection.
|
|
30
|
-
*
|
|
31
|
-
* @param overwrite - If not set `true`, using a key that is already in the
|
|
32
|
-
* collection will throw. Otherwise, overwrites the previous value.
|
|
33
|
-
*/
|
|
34
|
-
add(pair: Pair<K, V> | {
|
|
35
|
-
key: K;
|
|
36
|
-
value: V;
|
|
37
|
-
}, overwrite?: boolean): void;
|
|
38
|
-
delete(key: unknown): boolean;
|
|
39
|
-
get(key: unknown, keepScalar: true): Scalar<V> | undefined;
|
|
40
|
-
get(key: unknown, keepScalar?: false): V | undefined;
|
|
41
|
-
get(key: unknown, keepScalar?: boolean): V | Scalar<V> | undefined;
|
|
42
|
-
has(key: unknown): boolean;
|
|
43
|
-
set(key: K, value: V): void;
|
|
44
|
-
/**
|
|
45
|
-
* @param ctx - Conversion context, originally set in Document#toJS()
|
|
46
|
-
* @param {Class} Type - If set, forces the returned collection type
|
|
47
|
-
* @returns Instance of Type, Map, or Object
|
|
48
|
-
*/
|
|
49
|
-
toJSON<T extends MapLike = Map<unknown, unknown>>(_?: unknown, ctx?: ToJSContext, Type?: {
|
|
50
|
-
new (): T;
|
|
51
|
-
}): any;
|
|
52
|
-
toString(ctx?: StringifyContext, onComment?: () => void, onChompKeep?: () => void): string;
|
|
53
|
-
}
|
package/dist/nodes/YAMLMap.js
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var stringifyCollection = require('../stringify/stringifyCollection.js');
|
|
4
|
-
var addPairToJSMap = require('./addPairToJSMap.js');
|
|
5
|
-
var Collection = require('./Collection.js');
|
|
6
|
-
var identity = require('./identity.js');
|
|
7
|
-
var Pair = require('./Pair.js');
|
|
8
|
-
var Scalar = require('./Scalar.js');
|
|
9
|
-
|
|
10
|
-
function findPair(items, key) {
|
|
11
|
-
const k = identity.isScalar(key) ? key.value : key;
|
|
12
|
-
for (const it of items) {
|
|
13
|
-
if (identity.isPair(it)) {
|
|
14
|
-
if (it.key === key || it.key === k)
|
|
15
|
-
return it;
|
|
16
|
-
if (identity.isScalar(it.key) && it.key.value === k)
|
|
17
|
-
return it;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
class YAMLMap extends Collection.Collection {
|
|
23
|
-
static get tagName() {
|
|
24
|
-
return 'tag:yaml.org,2002:map';
|
|
25
|
-
}
|
|
26
|
-
constructor(schema) {
|
|
27
|
-
super(identity.MAP, schema);
|
|
28
|
-
this.items = [];
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* A generic collection parsing method that can be extended
|
|
32
|
-
* to other node classes that inherit from YAMLMap
|
|
33
|
-
*/
|
|
34
|
-
static from(schema, obj, ctx) {
|
|
35
|
-
const { keepUndefined, replacer } = ctx;
|
|
36
|
-
const map = new this(schema);
|
|
37
|
-
const add = (key, value) => {
|
|
38
|
-
if (typeof replacer === 'function')
|
|
39
|
-
value = replacer.call(obj, key, value);
|
|
40
|
-
else if (Array.isArray(replacer) && !replacer.includes(key))
|
|
41
|
-
return;
|
|
42
|
-
if (value !== undefined || keepUndefined)
|
|
43
|
-
map.items.push(Pair.createPair(key, value, ctx));
|
|
44
|
-
};
|
|
45
|
-
if (obj instanceof Map) {
|
|
46
|
-
for (const [key, value] of obj)
|
|
47
|
-
add(key, value);
|
|
48
|
-
}
|
|
49
|
-
else if (obj && typeof obj === 'object') {
|
|
50
|
-
for (const key of Object.keys(obj))
|
|
51
|
-
add(key, obj[key]);
|
|
52
|
-
}
|
|
53
|
-
if (typeof schema.sortMapEntries === 'function') {
|
|
54
|
-
map.items.sort(schema.sortMapEntries);
|
|
55
|
-
}
|
|
56
|
-
return map;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Adds a value to the collection.
|
|
60
|
-
*
|
|
61
|
-
* @param overwrite - If not set `true`, using a key that is already in the
|
|
62
|
-
* collection will throw. Otherwise, overwrites the previous value.
|
|
63
|
-
*/
|
|
64
|
-
add(pair, overwrite) {
|
|
65
|
-
let _pair;
|
|
66
|
-
if (identity.isPair(pair))
|
|
67
|
-
_pair = pair;
|
|
68
|
-
else if (!pair || typeof pair !== 'object' || !('key' in pair)) {
|
|
69
|
-
// In TypeScript, this never happens.
|
|
70
|
-
_pair = new Pair.Pair(pair, pair?.value);
|
|
71
|
-
}
|
|
72
|
-
else
|
|
73
|
-
_pair = new Pair.Pair(pair.key, pair.value);
|
|
74
|
-
const prev = findPair(this.items, _pair.key);
|
|
75
|
-
const sortEntries = this.schema?.sortMapEntries;
|
|
76
|
-
if (prev) {
|
|
77
|
-
if (!overwrite)
|
|
78
|
-
throw new Error(`Key ${_pair.key} already set`);
|
|
79
|
-
// For scalars, keep the old node & its comments and anchors
|
|
80
|
-
if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))
|
|
81
|
-
prev.value.value = _pair.value;
|
|
82
|
-
else
|
|
83
|
-
prev.value = _pair.value;
|
|
84
|
-
}
|
|
85
|
-
else if (sortEntries) {
|
|
86
|
-
const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);
|
|
87
|
-
if (i === -1)
|
|
88
|
-
this.items.push(_pair);
|
|
89
|
-
else
|
|
90
|
-
this.items.splice(i, 0, _pair);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
this.items.push(_pair);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
delete(key) {
|
|
97
|
-
const it = findPair(this.items, key);
|
|
98
|
-
if (!it)
|
|
99
|
-
return false;
|
|
100
|
-
const del = this.items.splice(this.items.indexOf(it), 1);
|
|
101
|
-
return del.length > 0;
|
|
102
|
-
}
|
|
103
|
-
get(key, keepScalar) {
|
|
104
|
-
const it = findPair(this.items, key);
|
|
105
|
-
const node = it?.value;
|
|
106
|
-
return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;
|
|
107
|
-
}
|
|
108
|
-
has(key) {
|
|
109
|
-
return !!findPair(this.items, key);
|
|
110
|
-
}
|
|
111
|
-
set(key, value) {
|
|
112
|
-
this.add(new Pair.Pair(key, value), true);
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* @param ctx - Conversion context, originally set in Document#toJS()
|
|
116
|
-
* @param {Class} Type - If set, forces the returned collection type
|
|
117
|
-
* @returns Instance of Type, Map, or Object
|
|
118
|
-
*/
|
|
119
|
-
toJSON(_, ctx, Type) {
|
|
120
|
-
const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};
|
|
121
|
-
if (ctx?.onCreate)
|
|
122
|
-
ctx.onCreate(map);
|
|
123
|
-
for (const item of this.items)
|
|
124
|
-
addPairToJSMap.addPairToJSMap(ctx, map, item);
|
|
125
|
-
return map;
|
|
126
|
-
}
|
|
127
|
-
toString(ctx, onComment, onChompKeep) {
|
|
128
|
-
if (!ctx)
|
|
129
|
-
return JSON.stringify(this);
|
|
130
|
-
for (const item of this.items) {
|
|
131
|
-
if (!identity.isPair(item))
|
|
132
|
-
throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);
|
|
133
|
-
}
|
|
134
|
-
if (!ctx.allNullValues && this.hasAllNullValues(false))
|
|
135
|
-
ctx = Object.assign({}, ctx, { allNullValues: true });
|
|
136
|
-
return stringifyCollection.stringifyCollection(this, ctx, {
|
|
137
|
-
blockItemPrefix: '',
|
|
138
|
-
flowChars: { start: '{', end: '}' },
|
|
139
|
-
itemIndent: ctx.indent || '',
|
|
140
|
-
onChompKeep,
|
|
141
|
-
onComment
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
exports.YAMLMap = YAMLMap;
|
|
147
|
-
exports.findPair = findPair;
|