yaml 1.9.2 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/browser/dist/PlainValue-ff5147c6.js +1277 -0
- package/browser/dist/Schema-2bf2c74e.js +679 -0
- package/browser/dist/index.js +869 -34
- package/browser/dist/legacy-exports.js +3 -0
- package/browser/dist/parse-cst.js +1904 -0
- package/browser/dist/resolveSeq-04825f30.js +2373 -0
- package/browser/dist/types.js +4 -0
- package/browser/dist/util.js +2 -0
- package/browser/dist/warnings-0e4b70d3.js +499 -0
- package/browser/index.js +1 -1
- package/browser/map.js +2 -4
- package/browser/pair.js +2 -4
- package/browser/parse-cst.js +1 -1
- package/browser/scalar.js +2 -4
- package/browser/schema.js +7 -10
- package/browser/seq.js +2 -4
- package/browser/types/binary.js +7 -5
- package/browser/types/omap.js +3 -4
- package/browser/types/pairs.js +3 -4
- package/browser/types/set.js +3 -4
- package/browser/types/timestamp.js +9 -5
- package/browser/types.js +1 -13
- package/browser/util.js +1 -18
- package/dist/Document-2cf6b08c.js +757 -0
- package/dist/PlainValue-ec8e588e.js +876 -0
- package/dist/Schema-42e9705c.js +522 -0
- package/dist/index.js +20 -84
- package/dist/legacy-exports.js +16 -0
- package/dist/parse-cst.js +1747 -0
- package/dist/resolveSeq-4a68b39b.js +2115 -0
- package/dist/test-events.js +11 -9
- package/dist/types.js +23 -0
- package/dist/util.js +19 -0
- package/dist/warnings-39684f17.js +416 -0
- package/index.d.ts +22 -8
- package/map.js +2 -2
- package/package.json +22 -39
- package/pair.js +2 -2
- package/parse-cst.js +1 -1
- package/scalar.js +2 -2
- package/schema.js +8 -6
- package/seq.js +2 -2
- package/types/binary.js +3 -2
- package/types/omap.js +3 -2
- package/types/pairs.js +3 -2
- package/types/set.js +3 -2
- package/types/timestamp.js +6 -6
- package/types.d.ts +113 -99
- package/types.js +16 -11
- package/types.mjs +15 -19
- package/util.js +14 -14
- package/util.mjs +13 -20
- package/browser/dist/Anchors.js +0 -130
- package/browser/dist/Document.js +0 -824
- package/browser/dist/addComment.js +0 -8
- package/browser/dist/constants.js +0 -26
- package/browser/dist/cst/Alias.js +0 -46
- package/browser/dist/cst/BlankLine.js +0 -52
- package/browser/dist/cst/BlockValue.js +0 -251
- package/browser/dist/cst/Collection.js +0 -278
- package/browser/dist/cst/CollectionItem.js +0 -140
- package/browser/dist/cst/Comment.js +0 -44
- package/browser/dist/cst/Directive.js +0 -76
- package/browser/dist/cst/Document.js +0 -286
- package/browser/dist/cst/FlowCollection.js +0 -220
- package/browser/dist/cst/Node.js +0 -386
- package/browser/dist/cst/ParseContext.js +0 -246
- package/browser/dist/cst/PlainValue.js +0 -170
- package/browser/dist/cst/QuoteDouble.js +0 -245
- package/browser/dist/cst/QuoteSingle.js +0 -120
- package/browser/dist/cst/Range.js +0 -64
- package/browser/dist/cst/parse.js +0 -48
- package/browser/dist/cst/source-utils.js +0 -168
- package/browser/dist/errors.js +0 -127
- package/browser/dist/foldFlowLines.js +0 -138
- package/browser/dist/listTagNames.js +0 -28
- package/browser/dist/schema/Alias.js +0 -135
- package/browser/dist/schema/Collection.js +0 -260
- package/browser/dist/schema/Map.js +0 -161
- package/browser/dist/schema/Merge.js +0 -118
- package/browser/dist/schema/Node.js +0 -4
- package/browser/dist/schema/Pair.js +0 -194
- package/browser/dist/schema/Scalar.js +0 -42
- package/browser/dist/schema/Seq.js +0 -116
- package/browser/dist/schema/index.js +0 -368
- package/browser/dist/schema/parseMap.js +0 -312
- package/browser/dist/schema/parseSeq.js +0 -168
- package/browser/dist/schema/parseUtils.js +0 -106
- package/browser/dist/stringify.js +0 -332
- package/browser/dist/tags/core.js +0 -141
- package/browser/dist/tags/failsafe/index.js +0 -4
- package/browser/dist/tags/failsafe/map.js +0 -53
- package/browser/dist/tags/failsafe/seq.js +0 -39
- package/browser/dist/tags/failsafe/string.js +0 -28
- package/browser/dist/tags/index.js +0 -36
- package/browser/dist/tags/json.js +0 -77
- package/browser/dist/tags/options.js +0 -26
- package/browser/dist/tags/yaml-1.1/binary.js +0 -87
- package/browser/dist/tags/yaml-1.1/index.js +0 -189
- package/browser/dist/tags/yaml-1.1/omap.js +0 -137
- package/browser/dist/tags/yaml-1.1/pairs.js +0 -78
- package/browser/dist/tags/yaml-1.1/set.js +0 -118
- package/browser/dist/tags/yaml-1.1/timestamp.js +0 -97
- package/browser/dist/test-events.js +0 -163
- package/browser/dist/toJSON.js +0 -19
- package/browser/dist/warnings.js +0 -39
- package/dist/Anchors.js +0 -120
- package/dist/Document.js +0 -714
- package/dist/addComment.js +0 -14
- package/dist/constants.js +0 -31
- package/dist/cst/Alias.js +0 -33
- package/dist/cst/BlankLine.js +0 -40
- package/dist/cst/BlockValue.js +0 -243
- package/dist/cst/Collection.js +0 -266
- package/dist/cst/CollectionItem.js +0 -135
- package/dist/cst/Comment.js +0 -33
- package/dist/cst/Directive.js +0 -59
- package/dist/cst/Document.js +0 -276
- package/dist/cst/FlowCollection.js +0 -213
- package/dist/cst/Node.js +0 -360
- package/dist/cst/ParseContext.js +0 -253
- package/dist/cst/PlainValue.js +0 -156
- package/dist/cst/QuoteDouble.js +0 -232
- package/dist/cst/QuoteSingle.js +0 -108
- package/dist/cst/Range.js +0 -60
- package/dist/cst/parse.js +0 -50
- package/dist/cst/source-utils.js +0 -175
- package/dist/errors.js +0 -97
- package/dist/foldFlowLines.js +0 -143
- package/dist/listTagNames.js +0 -33
- package/dist/schema/Alias.js +0 -105
- package/dist/schema/Collection.js +0 -184
- package/dist/schema/Map.js +0 -98
- package/dist/schema/Merge.js +0 -75
- package/dist/schema/Node.js +0 -7
- package/dist/schema/Pair.js +0 -174
- package/dist/schema/Scalar.js +0 -26
- package/dist/schema/Seq.js +0 -73
- package/dist/schema/index.js +0 -310
- package/dist/schema/parseMap.js +0 -334
- package/dist/schema/parseSeq.js +0 -175
- package/dist/schema/parseUtils.js +0 -101
- package/dist/stringify.js +0 -352
- package/dist/tags/core.js +0 -121
- package/dist/tags/failsafe/index.js +0 -12
- package/dist/tags/failsafe/map.js +0 -32
- package/dist/tags/failsafe/seq.js +0 -29
- package/dist/tags/failsafe/string.js +0 -37
- package/dist/tags/index.js +0 -53
- package/dist/tags/json.js +0 -64
- package/dist/tags/options.js +0 -36
- package/dist/tags/yaml-1.1/binary.js +0 -94
- package/dist/tags/yaml-1.1/index.js +0 -162
- package/dist/tags/yaml-1.1/omap.js +0 -100
- package/dist/tags/yaml-1.1/pairs.js +0 -75
- package/dist/tags/yaml-1.1/set.js +0 -82
- package/dist/tags/yaml-1.1/timestamp.js +0 -90
- package/dist/toJSON.js +0 -21
- package/dist/warnings.js +0 -48
package/dist/test-events.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
require('./PlainValue-ec8e588e.js');
|
|
4
|
+
var parseCst = require('./parse-cst.js');
|
|
5
|
+
require('./resolveSeq-4a68b39b.js');
|
|
6
|
+
var Document$1 = require('./Document-2cf6b08c.js');
|
|
7
|
+
require('./Schema-42e9705c.js');
|
|
8
|
+
require('./warnings-39684f17.js');
|
|
8
9
|
|
|
9
|
-
// test harness for yaml-test-suite event tests
|
|
10
10
|
function testEvents(src, options) {
|
|
11
11
|
const opt = Object.assign({
|
|
12
12
|
keepCstNodes: true,
|
|
13
13
|
keepNodeTypes: true,
|
|
14
14
|
version: '1.2'
|
|
15
15
|
}, options);
|
|
16
|
-
const docs =
|
|
16
|
+
const docs = parseCst.parse(src).map(cstDoc => new Document$1.Document(opt).parse(cstDoc));
|
|
17
17
|
const errDoc = docs.find(doc => doc.errors.length > 0);
|
|
18
18
|
const error = errDoc ? errDoc.errors[0].message : null;
|
|
19
19
|
const events = ['+STR'];
|
|
@@ -157,4 +157,6 @@ function addEvents(events, doc, e, node) {
|
|
|
157
157
|
const value = node.cstNode.strValue.replace(/\\/g, '\\\\').replace(/\0/g, '\\0').replace(/\x07/g, '\\a').replace(/\x08/g, '\\b').replace(/\t/g, '\\t').replace(/\n/g, '\\n').replace(/\v/g, '\\v').replace(/\f/g, '\\f').replace(/\r/g, '\\r').replace(/\x1b/g, '\\e');
|
|
158
158
|
events.push(`=VAL${props} ${scalar}${value}`);
|
|
159
159
|
}
|
|
160
|
-
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
exports.testEvents = testEvents;
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('./PlainValue-ec8e588e.js');
|
|
4
|
+
var resolveSeq = require('./resolveSeq-4a68b39b.js');
|
|
5
|
+
var Schema = require('./Schema-42e9705c.js');
|
|
6
|
+
require('./warnings-39684f17.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.Alias = resolveSeq.Alias;
|
|
11
|
+
exports.Collection = resolveSeq.Collection;
|
|
12
|
+
exports.Merge = resolveSeq.Merge;
|
|
13
|
+
exports.Node = resolveSeq.Node;
|
|
14
|
+
exports.Pair = resolveSeq.Pair;
|
|
15
|
+
exports.Scalar = resolveSeq.Scalar;
|
|
16
|
+
exports.YAMLMap = resolveSeq.YAMLMap;
|
|
17
|
+
exports.YAMLSeq = resolveSeq.YAMLSeq;
|
|
18
|
+
exports.binaryOptions = resolveSeq.binaryOptions;
|
|
19
|
+
exports.boolOptions = resolveSeq.boolOptions;
|
|
20
|
+
exports.intOptions = resolveSeq.intOptions;
|
|
21
|
+
exports.nullOptions = resolveSeq.nullOptions;
|
|
22
|
+
exports.strOptions = resolveSeq.strOptions;
|
|
23
|
+
exports.Schema = Schema.Schema;
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var PlainValue = require('./PlainValue-ec8e588e.js');
|
|
4
|
+
var resolveSeq = require('./resolveSeq-4a68b39b.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
exports.Type = PlainValue.Type;
|
|
9
|
+
exports.YAMLError = PlainValue.YAMLError;
|
|
10
|
+
exports.YAMLReferenceError = PlainValue.YAMLReferenceError;
|
|
11
|
+
exports.YAMLSemanticError = PlainValue.YAMLSemanticError;
|
|
12
|
+
exports.YAMLSyntaxError = PlainValue.YAMLSyntaxError;
|
|
13
|
+
exports.YAMLWarning = PlainValue.YAMLWarning;
|
|
14
|
+
exports.findPair = resolveSeq.findPair;
|
|
15
|
+
exports.parseMap = resolveSeq.resolveMap;
|
|
16
|
+
exports.parseSeq = resolveSeq.resolveSeq;
|
|
17
|
+
exports.stringifyNumber = resolveSeq.stringifyNumber;
|
|
18
|
+
exports.stringifyString = resolveSeq.stringifyString;
|
|
19
|
+
exports.toJSON = resolveSeq.toJSON;
|
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var PlainValue = require('./PlainValue-ec8e588e.js');
|
|
4
|
+
var resolveSeq = require('./resolveSeq-4a68b39b.js');
|
|
5
|
+
|
|
6
|
+
/* global atob, btoa, Buffer */
|
|
7
|
+
const binary = {
|
|
8
|
+
identify: value => value instanceof Uint8Array,
|
|
9
|
+
// Buffer inherits from Uint8Array
|
|
10
|
+
default: false,
|
|
11
|
+
tag: 'tag:yaml.org,2002:binary',
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Returns a Buffer in node and an Uint8Array in browsers
|
|
15
|
+
*
|
|
16
|
+
* To use the resulting buffer as an image, you'll want to do something like:
|
|
17
|
+
*
|
|
18
|
+
* const blob = new Blob([buffer], { type: 'image/jpeg' })
|
|
19
|
+
* document.querySelector('#photo').src = URL.createObjectURL(blob)
|
|
20
|
+
*/
|
|
21
|
+
resolve: (doc, node) => {
|
|
22
|
+
const src = resolveSeq.resolveString(doc, node);
|
|
23
|
+
|
|
24
|
+
if (typeof Buffer === 'function') {
|
|
25
|
+
return Buffer.from(src, 'base64');
|
|
26
|
+
} else if (typeof atob === 'function') {
|
|
27
|
+
// On IE 11, atob() can't handle newlines
|
|
28
|
+
const str = atob(src.replace(/[\n\r]/g, ''));
|
|
29
|
+
const buffer = new Uint8Array(str.length);
|
|
30
|
+
|
|
31
|
+
for (let i = 0; i < str.length; ++i) buffer[i] = str.charCodeAt(i);
|
|
32
|
+
|
|
33
|
+
return buffer;
|
|
34
|
+
} else {
|
|
35
|
+
const msg = 'This environment does not support reading binary tags; either Buffer or atob is required';
|
|
36
|
+
doc.errors.push(new PlainValue.YAMLReferenceError(node, msg));
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
options: resolveSeq.binaryOptions,
|
|
41
|
+
stringify: ({
|
|
42
|
+
comment,
|
|
43
|
+
type,
|
|
44
|
+
value
|
|
45
|
+
}, ctx, onComment, onChompKeep) => {
|
|
46
|
+
let src;
|
|
47
|
+
|
|
48
|
+
if (typeof Buffer === 'function') {
|
|
49
|
+
src = value instanceof Buffer ? value.toString('base64') : Buffer.from(value.buffer).toString('base64');
|
|
50
|
+
} else if (typeof btoa === 'function') {
|
|
51
|
+
let s = '';
|
|
52
|
+
|
|
53
|
+
for (let i = 0; i < value.length; ++i) s += String.fromCharCode(value[i]);
|
|
54
|
+
|
|
55
|
+
src = btoa(s);
|
|
56
|
+
} else {
|
|
57
|
+
throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (!type) type = resolveSeq.binaryOptions.defaultType;
|
|
61
|
+
|
|
62
|
+
if (type === PlainValue.Type.QUOTE_DOUBLE) {
|
|
63
|
+
value = src;
|
|
64
|
+
} else {
|
|
65
|
+
const {
|
|
66
|
+
lineWidth
|
|
67
|
+
} = resolveSeq.binaryOptions;
|
|
68
|
+
const n = Math.ceil(src.length / lineWidth);
|
|
69
|
+
const lines = new Array(n);
|
|
70
|
+
|
|
71
|
+
for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
|
|
72
|
+
lines[i] = src.substr(o, lineWidth);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
value = lines.join(type === PlainValue.Type.BLOCK_LITERAL ? '\n' : ' ');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return resolveSeq.stringifyString({
|
|
79
|
+
comment,
|
|
80
|
+
type,
|
|
81
|
+
value
|
|
82
|
+
}, ctx, onComment, onChompKeep);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
function parsePairs(doc, cst) {
|
|
87
|
+
const seq = resolveSeq.resolveSeq(doc, cst);
|
|
88
|
+
|
|
89
|
+
for (let i = 0; i < seq.items.length; ++i) {
|
|
90
|
+
let item = seq.items[i];
|
|
91
|
+
if (item instanceof resolveSeq.Pair) continue;else if (item instanceof resolveSeq.YAMLMap) {
|
|
92
|
+
if (item.items.length > 1) {
|
|
93
|
+
const msg = 'Each pair must have its own sequence indicator';
|
|
94
|
+
throw new PlainValue.YAMLSemanticError(cst, msg);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const pair = item.items[0] || new resolveSeq.Pair();
|
|
98
|
+
if (item.commentBefore) pair.commentBefore = pair.commentBefore ? `${item.commentBefore}\n${pair.commentBefore}` : item.commentBefore;
|
|
99
|
+
if (item.comment) pair.comment = pair.comment ? `${item.comment}\n${pair.comment}` : item.comment;
|
|
100
|
+
item = pair;
|
|
101
|
+
}
|
|
102
|
+
seq.items[i] = item instanceof resolveSeq.Pair ? item : new resolveSeq.Pair(item);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return seq;
|
|
106
|
+
}
|
|
107
|
+
function createPairs(schema, iterable, ctx) {
|
|
108
|
+
const pairs = new resolveSeq.YAMLSeq(schema);
|
|
109
|
+
pairs.tag = 'tag:yaml.org,2002:pairs';
|
|
110
|
+
|
|
111
|
+
for (const it of iterable) {
|
|
112
|
+
let key, value;
|
|
113
|
+
|
|
114
|
+
if (Array.isArray(it)) {
|
|
115
|
+
if (it.length === 2) {
|
|
116
|
+
key = it[0];
|
|
117
|
+
value = it[1];
|
|
118
|
+
} else throw new TypeError(`Expected [key, value] tuple: ${it}`);
|
|
119
|
+
} else if (it && it instanceof Object) {
|
|
120
|
+
const keys = Object.keys(it);
|
|
121
|
+
|
|
122
|
+
if (keys.length === 1) {
|
|
123
|
+
key = keys[0];
|
|
124
|
+
value = it[key];
|
|
125
|
+
} else throw new TypeError(`Expected { key: value } tuple: ${it}`);
|
|
126
|
+
} else {
|
|
127
|
+
key = it;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const pair = schema.createPair(key, value, ctx);
|
|
131
|
+
pairs.items.push(pair);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return pairs;
|
|
135
|
+
}
|
|
136
|
+
const pairs = {
|
|
137
|
+
default: false,
|
|
138
|
+
tag: 'tag:yaml.org,2002:pairs',
|
|
139
|
+
resolve: parsePairs,
|
|
140
|
+
createNode: createPairs
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
class YAMLOMap extends resolveSeq.YAMLSeq {
|
|
144
|
+
constructor() {
|
|
145
|
+
super();
|
|
146
|
+
|
|
147
|
+
PlainValue._defineProperty(this, "add", resolveSeq.YAMLMap.prototype.add.bind(this));
|
|
148
|
+
|
|
149
|
+
PlainValue._defineProperty(this, "delete", resolveSeq.YAMLMap.prototype.delete.bind(this));
|
|
150
|
+
|
|
151
|
+
PlainValue._defineProperty(this, "get", resolveSeq.YAMLMap.prototype.get.bind(this));
|
|
152
|
+
|
|
153
|
+
PlainValue._defineProperty(this, "has", resolveSeq.YAMLMap.prototype.has.bind(this));
|
|
154
|
+
|
|
155
|
+
PlainValue._defineProperty(this, "set", resolveSeq.YAMLMap.prototype.set.bind(this));
|
|
156
|
+
|
|
157
|
+
this.tag = YAMLOMap.tag;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
toJSON(_, ctx) {
|
|
161
|
+
const map = new Map();
|
|
162
|
+
if (ctx && ctx.onCreate) ctx.onCreate(map);
|
|
163
|
+
|
|
164
|
+
for (const pair of this.items) {
|
|
165
|
+
let key, value;
|
|
166
|
+
|
|
167
|
+
if (pair instanceof resolveSeq.Pair) {
|
|
168
|
+
key = resolveSeq.toJSON(pair.key, '', ctx);
|
|
169
|
+
value = resolveSeq.toJSON(pair.value, key, ctx);
|
|
170
|
+
} else {
|
|
171
|
+
key = resolveSeq.toJSON(pair, '', ctx);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
if (map.has(key)) throw new Error('Ordered maps must not include duplicate keys');
|
|
175
|
+
map.set(key, value);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return map;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
PlainValue._defineProperty(YAMLOMap, "tag", 'tag:yaml.org,2002:omap');
|
|
184
|
+
|
|
185
|
+
function parseOMap(doc, cst) {
|
|
186
|
+
const pairs = parsePairs(doc, cst);
|
|
187
|
+
const seenKeys = [];
|
|
188
|
+
|
|
189
|
+
for (const {
|
|
190
|
+
key
|
|
191
|
+
} of pairs.items) {
|
|
192
|
+
if (key instanceof resolveSeq.Scalar) {
|
|
193
|
+
if (seenKeys.includes(key.value)) {
|
|
194
|
+
const msg = 'Ordered maps must not include duplicate keys';
|
|
195
|
+
throw new PlainValue.YAMLSemanticError(cst, msg);
|
|
196
|
+
} else {
|
|
197
|
+
seenKeys.push(key.value);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return Object.assign(new YAMLOMap(), pairs);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function createOMap(schema, iterable, ctx) {
|
|
206
|
+
const pairs = createPairs(schema, iterable, ctx);
|
|
207
|
+
const omap = new YAMLOMap();
|
|
208
|
+
omap.items = pairs.items;
|
|
209
|
+
return omap;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const omap = {
|
|
213
|
+
identify: value => value instanceof Map,
|
|
214
|
+
nodeClass: YAMLOMap,
|
|
215
|
+
default: false,
|
|
216
|
+
tag: 'tag:yaml.org,2002:omap',
|
|
217
|
+
resolve: parseOMap,
|
|
218
|
+
createNode: createOMap
|
|
219
|
+
};
|
|
220
|
+
|
|
221
|
+
class YAMLSet extends resolveSeq.YAMLMap {
|
|
222
|
+
constructor() {
|
|
223
|
+
super();
|
|
224
|
+
this.tag = YAMLSet.tag;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
add(key) {
|
|
228
|
+
const pair = key instanceof resolveSeq.Pair ? key : new resolveSeq.Pair(key);
|
|
229
|
+
const prev = resolveSeq.findPair(this.items, pair.key);
|
|
230
|
+
if (!prev) this.items.push(pair);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
get(key, keepPair) {
|
|
234
|
+
const pair = resolveSeq.findPair(this.items, key);
|
|
235
|
+
return !keepPair && pair instanceof resolveSeq.Pair ? pair.key instanceof resolveSeq.Scalar ? pair.key.value : pair.key : pair;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
set(key, value) {
|
|
239
|
+
if (typeof value !== 'boolean') throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);
|
|
240
|
+
const prev = resolveSeq.findPair(this.items, key);
|
|
241
|
+
|
|
242
|
+
if (prev && !value) {
|
|
243
|
+
this.items.splice(this.items.indexOf(prev), 1);
|
|
244
|
+
} else if (!prev && value) {
|
|
245
|
+
this.items.push(new resolveSeq.Pair(key));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
toJSON(_, ctx) {
|
|
250
|
+
return super.toJSON(_, ctx, Set);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
toString(ctx, onComment, onChompKeep) {
|
|
254
|
+
if (!ctx) return JSON.stringify(this);
|
|
255
|
+
if (this.hasAllNullValues()) return super.toString(ctx, onComment, onChompKeep);else throw new Error('Set items must all have null values');
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
PlainValue._defineProperty(YAMLSet, "tag", 'tag:yaml.org,2002:set');
|
|
261
|
+
|
|
262
|
+
function parseSet(doc, cst) {
|
|
263
|
+
const map = resolveSeq.resolveMap(doc, cst);
|
|
264
|
+
if (!map.hasAllNullValues()) throw new PlainValue.YAMLSemanticError(cst, 'Set items must all have null values');
|
|
265
|
+
return Object.assign(new YAMLSet(), map);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
function createSet(schema, iterable, ctx) {
|
|
269
|
+
const set = new YAMLSet();
|
|
270
|
+
|
|
271
|
+
for (const value of iterable) set.items.push(schema.createPair(value, null, ctx));
|
|
272
|
+
|
|
273
|
+
return set;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const set = {
|
|
277
|
+
identify: value => value instanceof Set,
|
|
278
|
+
nodeClass: YAMLSet,
|
|
279
|
+
default: false,
|
|
280
|
+
tag: 'tag:yaml.org,2002:set',
|
|
281
|
+
resolve: parseSet,
|
|
282
|
+
createNode: createSet
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
const parseSexagesimal = (sign, parts) => {
|
|
286
|
+
const n = parts.split(':').reduce((n, p) => n * 60 + Number(p), 0);
|
|
287
|
+
return sign === '-' ? -n : n;
|
|
288
|
+
}; // hhhh:mm:ss.sss
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
const stringifySexagesimal = ({
|
|
292
|
+
value
|
|
293
|
+
}) => {
|
|
294
|
+
if (isNaN(value) || !isFinite(value)) return resolveSeq.stringifyNumber(value);
|
|
295
|
+
let sign = '';
|
|
296
|
+
|
|
297
|
+
if (value < 0) {
|
|
298
|
+
sign = '-';
|
|
299
|
+
value = Math.abs(value);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const parts = [value % 60]; // seconds, including ms
|
|
303
|
+
|
|
304
|
+
if (value < 60) {
|
|
305
|
+
parts.unshift(0); // at least one : is required
|
|
306
|
+
} else {
|
|
307
|
+
value = Math.round((value - parts[0]) / 60);
|
|
308
|
+
parts.unshift(value % 60); // minutes
|
|
309
|
+
|
|
310
|
+
if (value >= 60) {
|
|
311
|
+
value = Math.round((value - parts[0]) / 60);
|
|
312
|
+
parts.unshift(value); // hours
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return sign + parts.map(n => n < 10 ? '0' + String(n) : String(n)).join(':').replace(/000000\d*$/, '') // % 60 may introduce error
|
|
317
|
+
;
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
const intTime = {
|
|
321
|
+
identify: value => typeof value === 'number',
|
|
322
|
+
default: true,
|
|
323
|
+
tag: 'tag:yaml.org,2002:int',
|
|
324
|
+
format: 'TIME',
|
|
325
|
+
test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/,
|
|
326
|
+
resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, '')),
|
|
327
|
+
stringify: stringifySexagesimal
|
|
328
|
+
};
|
|
329
|
+
const floatTime = {
|
|
330
|
+
identify: value => typeof value === 'number',
|
|
331
|
+
default: true,
|
|
332
|
+
tag: 'tag:yaml.org,2002:float',
|
|
333
|
+
format: 'TIME',
|
|
334
|
+
test: /^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/,
|
|
335
|
+
resolve: (str, sign, parts) => parseSexagesimal(sign, parts.replace(/_/g, '')),
|
|
336
|
+
stringify: stringifySexagesimal
|
|
337
|
+
};
|
|
338
|
+
const timestamp = {
|
|
339
|
+
identify: value => value instanceof Date,
|
|
340
|
+
default: true,
|
|
341
|
+
tag: 'tag:yaml.org,2002:timestamp',
|
|
342
|
+
// If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part
|
|
343
|
+
// may be omitted altogether, resulting in a date format. In such a case, the time part is
|
|
344
|
+
// assumed to be 00:00:00Z (start of day, UTC).
|
|
345
|
+
test: RegExp('^(?:' + '([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd
|
|
346
|
+
'(?:(?:t|T|[ \\t]+)' + // t | T | whitespace
|
|
347
|
+
'([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?
|
|
348
|
+
'(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30
|
|
349
|
+
')?' + ')$'),
|
|
350
|
+
resolve: (str, year, month, day, hour, minute, second, millisec, tz) => {
|
|
351
|
+
if (millisec) millisec = (millisec + '00').substr(1, 3);
|
|
352
|
+
let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec || 0);
|
|
353
|
+
|
|
354
|
+
if (tz && tz !== 'Z') {
|
|
355
|
+
let d = parseSexagesimal(tz[0], tz.slice(1));
|
|
356
|
+
if (Math.abs(d) < 30) d *= 60;
|
|
357
|
+
date -= 60000 * d;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return new Date(date);
|
|
361
|
+
},
|
|
362
|
+
stringify: ({
|
|
363
|
+
value
|
|
364
|
+
}) => value.toISOString().replace(/((T00:00)?:00)?\.000Z$/, '')
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
/* global console, process, YAML_SILENCE_DEPRECATION_WARNINGS, YAML_SILENCE_WARNINGS */
|
|
368
|
+
function shouldWarn(deprecation) {
|
|
369
|
+
const env = typeof process !== 'undefined' && process.env || {};
|
|
370
|
+
|
|
371
|
+
if (deprecation) {
|
|
372
|
+
if (typeof YAML_SILENCE_DEPRECATION_WARNINGS !== 'undefined') return !YAML_SILENCE_DEPRECATION_WARNINGS;
|
|
373
|
+
return !env.YAML_SILENCE_DEPRECATION_WARNINGS;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
if (typeof YAML_SILENCE_WARNINGS !== 'undefined') return !YAML_SILENCE_WARNINGS;
|
|
377
|
+
return !env.YAML_SILENCE_WARNINGS;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
function warn(warning, type) {
|
|
381
|
+
if (shouldWarn(false)) {
|
|
382
|
+
const emit = typeof process !== 'undefined' && process.emitWarning; // This will throw in Jest if `warning` is an Error instance due to
|
|
383
|
+
// https://github.com/facebook/jest/issues/2549
|
|
384
|
+
|
|
385
|
+
if (emit) emit(warning, type);else {
|
|
386
|
+
// eslint-disable-next-line no-console
|
|
387
|
+
console.warn(type ? `${type}: ${warning}` : warning);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
function warnFileDeprecation(filename) {
|
|
392
|
+
if (shouldWarn(true)) {
|
|
393
|
+
const path = filename.replace(/.*yaml[/\\]/i, '').replace(/\.js$/, '').replace(/\\/g, '/');
|
|
394
|
+
warn(`The endpoint 'yaml/${path}' will be removed in a future release.`, 'DeprecationWarning');
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
const warned = {};
|
|
398
|
+
function warnOptionDeprecation(name, alternative) {
|
|
399
|
+
if (!warned[name] && shouldWarn(true)) {
|
|
400
|
+
warned[name] = true;
|
|
401
|
+
let msg = `The option '${name}' will be removed in a future release`;
|
|
402
|
+
msg += alternative ? `, use '${alternative}' instead.` : '.';
|
|
403
|
+
warn(msg, 'DeprecationWarning');
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
exports.binary = binary;
|
|
408
|
+
exports.floatTime = floatTime;
|
|
409
|
+
exports.intTime = intTime;
|
|
410
|
+
exports.omap = omap;
|
|
411
|
+
exports.pairs = pairs;
|
|
412
|
+
exports.set = set;
|
|
413
|
+
exports.timestamp = timestamp;
|
|
414
|
+
exports.warn = warn;
|
|
415
|
+
exports.warnFileDeprecation = warnFileDeprecation;
|
|
416
|
+
exports.warnOptionDeprecation = warnOptionDeprecation;
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { CST } from './parse-cst'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AST,
|
|
4
|
+
Alias,
|
|
5
|
+
Collection,
|
|
6
|
+
Merge,
|
|
7
|
+
Node,
|
|
8
|
+
Scalar,
|
|
9
|
+
Schema,
|
|
10
|
+
YAMLMap,
|
|
11
|
+
YAMLSeq
|
|
12
|
+
} from './types'
|
|
3
13
|
import { Type, YAMLError, YAMLWarning } from './util'
|
|
4
14
|
|
|
5
15
|
export { AST, CST }
|
|
@@ -183,10 +193,11 @@ export namespace scalarOptions {
|
|
|
183
193
|
}
|
|
184
194
|
}
|
|
185
195
|
|
|
186
|
-
export class Document extends
|
|
196
|
+
export class Document extends Collection {
|
|
187
197
|
cstNode?: CST.Document
|
|
188
198
|
constructor(options?: Options)
|
|
189
199
|
tag: never
|
|
200
|
+
directivesEndMarker?: boolean
|
|
190
201
|
type: Type.DOCUMENT
|
|
191
202
|
/**
|
|
192
203
|
* Anchors associated with the document's nodes;
|
|
@@ -194,7 +205,7 @@ export class Document extends AST.Collection {
|
|
|
194
205
|
*/
|
|
195
206
|
anchors: Document.Anchors
|
|
196
207
|
/** The document contents. */
|
|
197
|
-
contents:
|
|
208
|
+
contents: any
|
|
198
209
|
/** Errors encountered during parsing. */
|
|
199
210
|
errors: YAMLError[]
|
|
200
211
|
/**
|
|
@@ -249,6 +260,7 @@ export class Document extends AST.Collection {
|
|
|
249
260
|
|
|
250
261
|
export namespace Document {
|
|
251
262
|
interface Parsed extends Document {
|
|
263
|
+
contents: Node | null
|
|
252
264
|
/** The schema used with the document. */
|
|
253
265
|
schema: Schema
|
|
254
266
|
}
|
|
@@ -258,16 +270,18 @@ export namespace Document {
|
|
|
258
270
|
* Create a new `Alias` node, adding the required anchor for `node`.
|
|
259
271
|
* If `name` is empty, a new anchor name will be generated.
|
|
260
272
|
*/
|
|
261
|
-
createAlias(node:
|
|
273
|
+
createAlias(node: Node, name?: string): Alias
|
|
262
274
|
/**
|
|
263
275
|
* Create a new `Merge` node with the given source nodes.
|
|
264
276
|
* Non-`Alias` sources will be automatically wrapped.
|
|
265
277
|
*/
|
|
266
|
-
createMergePair(...nodes:
|
|
278
|
+
createMergePair(...nodes: Node[]): Merge
|
|
267
279
|
/** The anchor name associated with `node`, if set. */
|
|
268
|
-
getName(node:
|
|
280
|
+
getName(node: Node): undefined | string
|
|
281
|
+
/** List of all defined anchor names. */
|
|
282
|
+
getNames(): string[]
|
|
269
283
|
/** The node associated with the anchor `name`, if set. */
|
|
270
|
-
getNode(name: string): undefined |
|
|
284
|
+
getNode(name: string): undefined | Node
|
|
271
285
|
/**
|
|
272
286
|
* Find an available anchor name with the given `prefix` and a
|
|
273
287
|
* numerical suffix.
|
|
@@ -277,7 +291,7 @@ export namespace Document {
|
|
|
277
291
|
* Associate an anchor with `node`. If `name` is empty, a new name will be generated.
|
|
278
292
|
* To remove an anchor, use `setAnchor(null, name)`.
|
|
279
293
|
*/
|
|
280
|
-
setAnchor(node:
|
|
294
|
+
setAnchor(node: Node | null, name?: string): void | string
|
|
281
295
|
}
|
|
282
296
|
|
|
283
297
|
interface TagPrefix {
|
package/map.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
module.exports = require('./dist/
|
|
2
|
-
require('./dist/
|
|
1
|
+
module.exports = require('./dist/types').YAMLMap
|
|
2
|
+
require('./dist/legacy-exports').warnFileDeprecation(__filename)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yaml",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"license": "ISC",
|
|
5
5
|
"author": "Eemeli Aro <eemeli@gmail.com>",
|
|
6
6
|
"repository": "github:eemeli/yaml",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"*.d.ts",
|
|
19
19
|
"*.js",
|
|
20
20
|
"*.mjs",
|
|
21
|
-
"
|
|
21
|
+
"!*config.js"
|
|
22
22
|
],
|
|
23
23
|
"type": "commonjs",
|
|
24
24
|
"main": "./index.js",
|
|
@@ -42,33 +42,31 @@
|
|
|
42
42
|
},
|
|
43
43
|
"exports": {
|
|
44
44
|
".": "./index.js",
|
|
45
|
-
"./": "./",
|
|
46
45
|
"./parse-cst": "./parse-cst.js",
|
|
47
46
|
"./types": [
|
|
48
47
|
{
|
|
49
|
-
"default": "./types.js",
|
|
50
48
|
"import": "./types.mjs"
|
|
51
49
|
},
|
|
52
50
|
"./types.js"
|
|
53
51
|
],
|
|
54
52
|
"./util": [
|
|
55
53
|
{
|
|
56
|
-
"default": "./util.js",
|
|
57
54
|
"import": "./util.mjs"
|
|
58
55
|
},
|
|
59
56
|
"./util.js"
|
|
60
|
-
]
|
|
57
|
+
],
|
|
58
|
+
"./": "./"
|
|
61
59
|
},
|
|
62
60
|
"scripts": {
|
|
63
|
-
"
|
|
61
|
+
"build": "npm run build:node && npm run build:browser",
|
|
62
|
+
"build:browser": "rollup -c rollup.browser-config.js",
|
|
63
|
+
"build:node": "rollup -c rollup.node-config.js",
|
|
64
64
|
"clean": "git clean -fdxe node_modules",
|
|
65
|
-
"dist:build": "babel src/ --out-dir dist/",
|
|
66
|
-
"build": "npm run dist:build && npm run browser:build",
|
|
67
|
-
"prettier": "prettier --write .",
|
|
68
65
|
"lint": "eslint src/",
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"test
|
|
66
|
+
"prettier": "prettier --write .",
|
|
67
|
+
"start": "cross-env TRACE_LEVEL=log npm run build:node && node -i -e 'YAML=require(\".\")'",
|
|
68
|
+
"test": "jest",
|
|
69
|
+
"test:dist": "npm run build:node && jest",
|
|
72
70
|
"test:types": "tsc --lib ES2017 --noEmit tests/typings.ts",
|
|
73
71
|
"docs:install": "cd docs-slate && bundle install",
|
|
74
72
|
"docs:deploy": "cd docs-slate && ./deploy.sh",
|
|
@@ -77,18 +75,6 @@
|
|
|
77
75
|
"prepublishOnly": "npm run clean && npm test && npm run build"
|
|
78
76
|
},
|
|
79
77
|
"browserslist": "> 0.5%, not dead",
|
|
80
|
-
"jest": {
|
|
81
|
-
"collectCoverageFrom": [
|
|
82
|
-
"src/**/*.js"
|
|
83
|
-
],
|
|
84
|
-
"testMatch": [
|
|
85
|
-
"**/tests/**/*.js"
|
|
86
|
-
],
|
|
87
|
-
"testPathIgnorePatterns": [
|
|
88
|
-
"tests/common",
|
|
89
|
-
"tests/cst/common"
|
|
90
|
-
]
|
|
91
|
-
},
|
|
92
78
|
"prettier": {
|
|
93
79
|
"arrowParens": "avoid",
|
|
94
80
|
"semi": false,
|
|
@@ -96,26 +82,23 @@
|
|
|
96
82
|
"trailingComma": "none"
|
|
97
83
|
},
|
|
98
84
|
"devDependencies": {
|
|
99
|
-
"@babel/
|
|
100
|
-
"@babel/core": "^7.9.0",
|
|
85
|
+
"@babel/core": "^7.9.6",
|
|
101
86
|
"@babel/plugin-proposal-class-properties": "^7.8.3",
|
|
102
|
-
"@babel/
|
|
103
|
-
"@
|
|
87
|
+
"@babel/preset-env": "^7.9.6",
|
|
88
|
+
"@rollup/plugin-babel": "^5.0.0",
|
|
104
89
|
"babel-eslint": "^10.1.0",
|
|
105
|
-
"babel-jest": "^
|
|
90
|
+
"babel-jest": "^26.0.1",
|
|
106
91
|
"babel-plugin-trace": "^1.1.0",
|
|
107
92
|
"common-tags": "^1.8.0",
|
|
108
93
|
"cross-env": "^7.0.2",
|
|
109
|
-
"eslint": "^
|
|
110
|
-
"eslint-config-prettier": "^6.
|
|
94
|
+
"eslint": "^7.0.0",
|
|
95
|
+
"eslint-config-prettier": "^6.11.0",
|
|
111
96
|
"eslint-plugin-prettier": "^3.1.3",
|
|
112
|
-
"fast-check": "^1.24.
|
|
113
|
-
"jest": "^
|
|
114
|
-
"prettier": "^2.0.
|
|
115
|
-
"
|
|
116
|
-
|
|
117
|
-
"dependencies": {
|
|
118
|
-
"@babel/runtime": "^7.9.2"
|
|
97
|
+
"fast-check": "^1.24.2",
|
|
98
|
+
"jest": "^26.0.1",
|
|
99
|
+
"prettier": "^2.0.5",
|
|
100
|
+
"rollup": "^2.10.2",
|
|
101
|
+
"typescript": "^3.9.2"
|
|
119
102
|
},
|
|
120
103
|
"engines": {
|
|
121
104
|
"node": ">= 6"
|