yaml 1.8.3 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/browser/dist/PlainValue-ff5147c6.js +1277 -0
- package/browser/dist/Schema-2bf2c74e.js +679 -0
- package/browser/dist/index.js +923 -38
- package/browser/dist/legacy-exports.js +3 -0
- package/browser/dist/parse-cst.js +1904 -0
- package/browser/dist/resolveSeq-04825f30.js +2373 -0
- package/browser/dist/types.js +4 -0
- package/browser/dist/util.js +2 -0
- package/browser/dist/warnings-0e4b70d3.js +499 -0
- package/browser/index.js +1 -1
- package/browser/map.js +2 -2
- package/browser/pair.js +2 -2
- package/browser/parse-cst.js +1 -1
- package/browser/scalar.js +2 -2
- package/browser/schema.js +8 -6
- package/browser/seq.js +2 -2
- package/browser/types/binary.js +3 -2
- package/browser/types/omap.js +3 -2
- package/browser/types/pairs.js +3 -2
- package/browser/types/set.js +3 -2
- package/browser/types/timestamp.js +6 -6
- package/browser/types.js +1 -11
- package/browser/util.js +1 -15
- package/dist/Document-2cf6b08c.js +757 -0
- package/dist/PlainValue-ec8e588e.js +876 -0
- package/dist/Schema-42e9705c.js +522 -0
- package/dist/index.js +21 -43
- package/dist/legacy-exports.js +16 -0
- package/dist/parse-cst.js +1747 -0
- package/dist/resolveSeq-4a68b39b.js +2115 -0
- package/dist/test-events.js +11 -14
- package/dist/types.js +23 -0
- package/dist/util.js +19 -0
- package/dist/warnings-39684f17.js +416 -0
- package/index.d.ts +372 -0
- package/index.js +1 -1
- package/map.js +2 -2
- package/package.json +32 -45
- package/pair.js +2 -2
- package/parse-cst.d.ts +187 -0
- package/parse-cst.js +1 -1
- package/scalar.js +2 -2
- package/schema.js +8 -6
- package/seq.js +2 -2
- package/types/binary.js +3 -2
- package/types/omap.js +3 -2
- package/types/pairs.js +3 -2
- package/types/set.js +3 -2
- package/types/timestamp.js +6 -6
- package/types.d.ts +407 -0
- package/types.js +16 -10
- package/types.mjs +15 -18
- package/util.d.ts +86 -0
- package/util.js +14 -13
- package/util.mjs +13 -19
- package/browser/dist/Anchors.js +0 -133
- package/browser/dist/Document.js +0 -819
- package/browser/dist/addComment.js +0 -8
- package/browser/dist/constants.js +0 -26
- package/browser/dist/cst/Alias.js +0 -42
- package/browser/dist/cst/BlankLine.js +0 -56
- package/browser/dist/cst/BlockValue.js +0 -247
- package/browser/dist/cst/Collection.js +0 -274
- package/browser/dist/cst/CollectionItem.js +0 -136
- package/browser/dist/cst/Comment.js +0 -40
- package/browser/dist/cst/Directive.js +0 -72
- package/browser/dist/cst/Document.js +0 -282
- package/browser/dist/cst/FlowCollection.js +0 -216
- package/browser/dist/cst/Node.js +0 -388
- package/browser/dist/cst/ParseContext.js +0 -248
- package/browser/dist/cst/PlainValue.js +0 -166
- package/browser/dist/cst/QuoteDouble.js +0 -241
- package/browser/dist/cst/QuoteSingle.js +0 -116
- package/browser/dist/cst/Range.js +0 -67
- package/browser/dist/cst/parse.js +0 -48
- package/browser/dist/cst/source-utils.js +0 -168
- package/browser/dist/errors.js +0 -112
- package/browser/dist/foldFlowLines.js +0 -138
- package/browser/dist/listTagNames.js +0 -28
- package/browser/dist/schema/Alias.js +0 -139
- package/browser/dist/schema/Collection.js +0 -267
- package/browser/dist/schema/Map.js +0 -178
- package/browser/dist/schema/Merge.js +0 -127
- package/browser/dist/schema/Node.js +0 -7
- package/browser/dist/schema/Pair.js +0 -171
- package/browser/dist/schema/Scalar.js +0 -38
- package/browser/dist/schema/Seq.js +0 -114
- package/browser/dist/schema/index.js +0 -382
- package/browser/dist/schema/parseMap.js +0 -312
- package/browser/dist/schema/parseSeq.js +0 -168
- package/browser/dist/schema/parseUtils.js +0 -110
- package/browser/dist/stringify.js +0 -331
- package/browser/dist/tags/core.js +0 -126
- package/browser/dist/tags/failsafe/index.js +0 -4
- package/browser/dist/tags/failsafe/map.js +0 -56
- package/browser/dist/tags/failsafe/seq.js +0 -43
- package/browser/dist/tags/failsafe/string.js +0 -28
- package/browser/dist/tags/index.js +0 -36
- package/browser/dist/tags/json.js +0 -76
- package/browser/dist/tags/options.js +0 -23
- package/browser/dist/tags/yaml-1.1/binary.js +0 -87
- package/browser/dist/tags/yaml-1.1/index.js +0 -157
- package/browser/dist/tags/yaml-1.1/omap.js +0 -142
- package/browser/dist/tags/yaml-1.1/pairs.js +0 -81
- package/browser/dist/tags/yaml-1.1/set.js +0 -114
- package/browser/dist/tags/yaml-1.1/timestamp.js +0 -97
- package/browser/dist/test-events.js +0 -163
- package/browser/dist/toJSON.js +0 -20
- package/browser/dist/warnings.js +0 -28
- package/dist/Anchors.js +0 -125
- package/dist/Document.js +0 -710
- package/dist/addComment.js +0 -17
- package/dist/constants.js +0 -34
- package/dist/cst/Alias.js +0 -38
- package/dist/cst/BlankLine.js +0 -56
- package/dist/cst/BlockValue.js +0 -248
- package/dist/cst/Collection.js +0 -271
- package/dist/cst/CollectionItem.js +0 -140
- package/dist/cst/Comment.js +0 -38
- package/dist/cst/Directive.js +0 -64
- package/dist/cst/Document.js +0 -281
- package/dist/cst/FlowCollection.js +0 -218
- package/dist/cst/Node.js +0 -365
- package/dist/cst/ParseContext.js +0 -258
- package/dist/cst/PlainValue.js +0 -161
- package/dist/cst/QuoteDouble.js +0 -237
- package/dist/cst/QuoteSingle.js +0 -113
- package/dist/cst/Range.js +0 -63
- package/dist/cst/parse.js +0 -55
- package/dist/cst/source-utils.js +0 -178
- package/dist/errors.js +0 -102
- package/dist/foldFlowLines.js +0 -146
- package/dist/listTagNames.js +0 -38
- package/dist/schema/Alias.js +0 -110
- package/dist/schema/Collection.js +0 -188
- package/dist/schema/Map.js +0 -103
- package/dist/schema/Merge.js +0 -80
- package/dist/schema/Node.js +0 -10
- package/dist/schema/Pair.js +0 -161
- package/dist/schema/Scalar.js +0 -31
- package/dist/schema/Seq.js +0 -78
- package/dist/schema/index.js +0 -315
- package/dist/schema/parseMap.js +0 -343
- package/dist/schema/parseSeq.js +0 -180
- package/dist/schema/parseUtils.js +0 -104
- package/dist/stringify.js +0 -358
- package/dist/tags/core.js +0 -114
- package/dist/tags/failsafe/index.js +0 -17
- package/dist/tags/failsafe/map.js +0 -37
- package/dist/tags/failsafe/seq.js +0 -34
- package/dist/tags/failsafe/string.js +0 -40
- package/dist/tags/index.js +0 -62
- package/dist/tags/json.js +0 -60
- package/dist/tags/options.js +0 -35
- package/dist/tags/yaml-1.1/binary.js +0 -97
- package/dist/tags/yaml-1.1/index.js +0 -131
- package/dist/tags/yaml-1.1/omap.js +0 -105
- package/dist/tags/yaml-1.1/pairs.js +0 -80
- package/dist/tags/yaml-1.1/set.js +0 -91
- package/dist/tags/yaml-1.1/timestamp.js +0 -93
- package/dist/toJSON.js +0 -23
- package/dist/warnings.js +0 -39
package/dist/cst/ParseContext.js
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _constants = require("../constants");
|
|
9
|
-
|
|
10
|
-
var _errors = require("../errors");
|
|
11
|
-
|
|
12
|
-
var _Alias = _interopRequireDefault(require("./Alias"));
|
|
13
|
-
|
|
14
|
-
var _BlockValue = _interopRequireDefault(require("./BlockValue"));
|
|
15
|
-
|
|
16
|
-
var _Collection = _interopRequireDefault(require("./Collection"));
|
|
17
|
-
|
|
18
|
-
var _CollectionItem = _interopRequireDefault(require("./CollectionItem"));
|
|
19
|
-
|
|
20
|
-
var _FlowCollection = _interopRequireDefault(require("./FlowCollection"));
|
|
21
|
-
|
|
22
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
23
|
-
|
|
24
|
-
var _PlainValue = _interopRequireDefault(require("./PlainValue"));
|
|
25
|
-
|
|
26
|
-
var _QuoteDouble = _interopRequireDefault(require("./QuoteDouble"));
|
|
27
|
-
|
|
28
|
-
var _QuoteSingle = _interopRequireDefault(require("./QuoteSingle"));
|
|
29
|
-
|
|
30
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
31
|
-
|
|
32
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
-
|
|
34
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
35
|
-
|
|
36
|
-
function createNewNode(type, props) {
|
|
37
|
-
switch (type) {
|
|
38
|
-
case _constants.Type.ALIAS:
|
|
39
|
-
return new _Alias.default(type, props);
|
|
40
|
-
|
|
41
|
-
case _constants.Type.BLOCK_FOLDED:
|
|
42
|
-
case _constants.Type.BLOCK_LITERAL:
|
|
43
|
-
return new _BlockValue.default(type, props);
|
|
44
|
-
|
|
45
|
-
case _constants.Type.FLOW_MAP:
|
|
46
|
-
case _constants.Type.FLOW_SEQ:
|
|
47
|
-
return new _FlowCollection.default(type, props);
|
|
48
|
-
|
|
49
|
-
case _constants.Type.MAP_KEY:
|
|
50
|
-
case _constants.Type.MAP_VALUE:
|
|
51
|
-
case _constants.Type.SEQ_ITEM:
|
|
52
|
-
return new _CollectionItem.default(type, props);
|
|
53
|
-
|
|
54
|
-
case _constants.Type.COMMENT:
|
|
55
|
-
case _constants.Type.PLAIN:
|
|
56
|
-
return new _PlainValue.default(type, props);
|
|
57
|
-
|
|
58
|
-
case _constants.Type.QUOTE_DOUBLE:
|
|
59
|
-
return new _QuoteDouble.default(type, props);
|
|
60
|
-
|
|
61
|
-
case _constants.Type.QUOTE_SINGLE:
|
|
62
|
-
return new _QuoteSingle.default(type, props);
|
|
63
|
-
|
|
64
|
-
/* istanbul ignore next */
|
|
65
|
-
|
|
66
|
-
default:
|
|
67
|
-
return null;
|
|
68
|
-
// should never happen
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* @param {boolean} atLineStart - Node starts at beginning of line
|
|
73
|
-
* @param {boolean} inFlow - true if currently in a flow context
|
|
74
|
-
* @param {boolean} inCollection - true if currently in a collection context
|
|
75
|
-
* @param {number} indent - Current level of indentation
|
|
76
|
-
* @param {number} lineStart - Start of the current line
|
|
77
|
-
* @param {Node} parent - The parent of the node
|
|
78
|
-
* @param {string} src - Source of the YAML document
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class ParseContext {
|
|
83
|
-
static parseType(src, offset, inFlow) {
|
|
84
|
-
switch (src[offset]) {
|
|
85
|
-
case '*':
|
|
86
|
-
return _constants.Type.ALIAS;
|
|
87
|
-
|
|
88
|
-
case '>':
|
|
89
|
-
return _constants.Type.BLOCK_FOLDED;
|
|
90
|
-
|
|
91
|
-
case '|':
|
|
92
|
-
return _constants.Type.BLOCK_LITERAL;
|
|
93
|
-
|
|
94
|
-
case '{':
|
|
95
|
-
return _constants.Type.FLOW_MAP;
|
|
96
|
-
|
|
97
|
-
case '[':
|
|
98
|
-
return _constants.Type.FLOW_SEQ;
|
|
99
|
-
|
|
100
|
-
case '?':
|
|
101
|
-
return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.MAP_KEY : _constants.Type.PLAIN;
|
|
102
|
-
|
|
103
|
-
case ':':
|
|
104
|
-
return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.MAP_VALUE : _constants.Type.PLAIN;
|
|
105
|
-
|
|
106
|
-
case '-':
|
|
107
|
-
return !inFlow && _Node.default.atBlank(src, offset + 1, true) ? _constants.Type.SEQ_ITEM : _constants.Type.PLAIN;
|
|
108
|
-
|
|
109
|
-
case '"':
|
|
110
|
-
return _constants.Type.QUOTE_DOUBLE;
|
|
111
|
-
|
|
112
|
-
case "'":
|
|
113
|
-
return _constants.Type.QUOTE_SINGLE;
|
|
114
|
-
|
|
115
|
-
default:
|
|
116
|
-
return _constants.Type.PLAIN;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
constructor(orig = {}, {
|
|
121
|
-
atLineStart,
|
|
122
|
-
inCollection,
|
|
123
|
-
inFlow,
|
|
124
|
-
indent,
|
|
125
|
-
lineStart,
|
|
126
|
-
parent
|
|
127
|
-
} = {}) {
|
|
128
|
-
_defineProperty(this, "parseNode", (overlay, start) => {
|
|
129
|
-
if (_Node.default.atDocumentBoundary(this.src, start)) return null;
|
|
130
|
-
const context = new ParseContext(this, overlay);
|
|
131
|
-
const {
|
|
132
|
-
props,
|
|
133
|
-
type,
|
|
134
|
-
valueStart
|
|
135
|
-
} = context.parseProps(start);
|
|
136
|
-
const node = createNewNode(type, props);
|
|
137
|
-
let offset = node.parse(context, valueStart);
|
|
138
|
-
node.range = new _Range.default(start, offset);
|
|
139
|
-
/* istanbul ignore if */
|
|
140
|
-
|
|
141
|
-
if (offset <= start) {
|
|
142
|
-
// This should never happen, but if it does, let's make sure to at least
|
|
143
|
-
// step one character forward to avoid a busy loop.
|
|
144
|
-
node.error = new Error(`Node#parse consumed no characters`);
|
|
145
|
-
node.error.parseEnd = offset;
|
|
146
|
-
node.error.source = node;
|
|
147
|
-
node.range.end = start + 1;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (context.nodeStartsCollection(node)) {
|
|
151
|
-
if (!node.error && !context.atLineStart && context.parent.type === _constants.Type.DOCUMENT) {
|
|
152
|
-
node.error = new _errors.YAMLSyntaxError(node, 'Block collection must not have preceding content here (e.g. directives-end indicator)');
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
const collection = new _Collection.default(node);
|
|
156
|
-
offset = collection.parse(new ParseContext(context), offset);
|
|
157
|
-
collection.range = new _Range.default(start, offset);
|
|
158
|
-
return collection;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return node;
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
this.atLineStart = atLineStart != null ? atLineStart : orig.atLineStart || false;
|
|
165
|
-
this.inCollection = inCollection != null ? inCollection : orig.inCollection || false;
|
|
166
|
-
this.inFlow = inFlow != null ? inFlow : orig.inFlow || false;
|
|
167
|
-
this.indent = indent != null ? indent : orig.indent;
|
|
168
|
-
this.lineStart = lineStart != null ? lineStart : orig.lineStart;
|
|
169
|
-
this.parent = parent != null ? parent : orig.parent || {};
|
|
170
|
-
this.root = orig.root;
|
|
171
|
-
this.src = orig.src;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
nodeStartsCollection(node) {
|
|
175
|
-
const {
|
|
176
|
-
inCollection,
|
|
177
|
-
inFlow,
|
|
178
|
-
src
|
|
179
|
-
} = this;
|
|
180
|
-
if (inCollection || inFlow) return false;
|
|
181
|
-
if (node instanceof _CollectionItem.default) return true; // check for implicit key
|
|
182
|
-
|
|
183
|
-
let offset = node.range.end;
|
|
184
|
-
if (src[offset] === '\n' || src[offset - 1] === '\n') return false;
|
|
185
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
186
|
-
return src[offset] === ':';
|
|
187
|
-
} // Anchor and tag are before type, which determines the node implementation
|
|
188
|
-
// class; hence this intermediate step.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
parseProps(offset) {
|
|
192
|
-
const {
|
|
193
|
-
inFlow,
|
|
194
|
-
parent,
|
|
195
|
-
src
|
|
196
|
-
} = this;
|
|
197
|
-
const props = [];
|
|
198
|
-
let lineHasProps = false;
|
|
199
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
200
|
-
let ch = src[offset];
|
|
201
|
-
|
|
202
|
-
while (ch === _constants.Char.ANCHOR || ch === _constants.Char.COMMENT || ch === _constants.Char.TAG || ch === '\n') {
|
|
203
|
-
if (ch === '\n') {
|
|
204
|
-
const lineStart = offset + 1;
|
|
205
|
-
|
|
206
|
-
const inEnd = _Node.default.endOfIndent(src, lineStart);
|
|
207
|
-
|
|
208
|
-
const indentDiff = inEnd - (lineStart + this.indent);
|
|
209
|
-
const noIndicatorAsIndent = parent.type === _constants.Type.SEQ_ITEM && parent.context.atLineStart;
|
|
210
|
-
if (!_Node.default.nextNodeIsIndented(src[inEnd], indentDiff, !noIndicatorAsIndent)) break;
|
|
211
|
-
this.atLineStart = true;
|
|
212
|
-
this.lineStart = lineStart;
|
|
213
|
-
lineHasProps = false;
|
|
214
|
-
offset = inEnd;
|
|
215
|
-
} else if (ch === _constants.Char.COMMENT) {
|
|
216
|
-
const end = _Node.default.endOfLine(src, offset + 1);
|
|
217
|
-
|
|
218
|
-
props.push(new _Range.default(offset, end));
|
|
219
|
-
offset = end;
|
|
220
|
-
} else {
|
|
221
|
-
let end = _Node.default.endOfIdentifier(src, offset + 1);
|
|
222
|
-
|
|
223
|
-
if (ch === _constants.Char.TAG && src[end] === ',' && /^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(src.slice(offset + 1, end + 13))) {
|
|
224
|
-
// Let's presume we're dealing with a YAML 1.0 domain tag here, rather
|
|
225
|
-
// than an empty but 'foo.bar' private-tagged node in a flow collection
|
|
226
|
-
// followed without whitespace by a plain string starting with a year
|
|
227
|
-
// or date divided by something.
|
|
228
|
-
end = _Node.default.endOfIdentifier(src, end + 5);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
props.push(new _Range.default(offset, end));
|
|
232
|
-
lineHasProps = true;
|
|
233
|
-
offset = _Node.default.endOfWhiteSpace(src, end);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
ch = src[offset];
|
|
237
|
-
} // '- &a : b' has an anchor on an empty node
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
if (lineHasProps && ch === ':' && _Node.default.atBlank(src, offset + 1, true)) offset -= 1;
|
|
241
|
-
const type = ParseContext.parseType(src, offset, inFlow);
|
|
242
|
-
return {
|
|
243
|
-
props,
|
|
244
|
-
type,
|
|
245
|
-
valueStart: offset
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
/**
|
|
249
|
-
* Parses a node from the source
|
|
250
|
-
* @param {ParseContext} overlay
|
|
251
|
-
* @param {number} start - Index of first non-whitespace character for the node
|
|
252
|
-
* @returns {?Node} - null if at a document boundary
|
|
253
|
-
*/
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
exports.default = ParseContext;
|
package/dist/cst/PlainValue.js
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
9
|
-
|
|
10
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
11
|
-
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
|
-
class PlainValue extends _Node.default {
|
|
15
|
-
static endOfLine(src, start, inFlow) {
|
|
16
|
-
let ch = src[start];
|
|
17
|
-
let offset = start;
|
|
18
|
-
|
|
19
|
-
while (ch && ch !== '\n') {
|
|
20
|
-
if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;
|
|
21
|
-
const next = src[offset + 1];
|
|
22
|
-
if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break;
|
|
23
|
-
if ((ch === ' ' || ch === '\t') && next === '#') break;
|
|
24
|
-
offset += 1;
|
|
25
|
-
ch = next;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return offset;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
get strValue() {
|
|
32
|
-
if (!this.valueRange || !this.context) return null;
|
|
33
|
-
let {
|
|
34
|
-
start,
|
|
35
|
-
end
|
|
36
|
-
} = this.valueRange;
|
|
37
|
-
const {
|
|
38
|
-
src
|
|
39
|
-
} = this.context;
|
|
40
|
-
let ch = src[end - 1];
|
|
41
|
-
|
|
42
|
-
while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[--end - 1];
|
|
43
|
-
|
|
44
|
-
ch = src[start];
|
|
45
|
-
|
|
46
|
-
while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[++start];
|
|
47
|
-
|
|
48
|
-
let str = '';
|
|
49
|
-
|
|
50
|
-
for (let i = start; i < end; ++i) {
|
|
51
|
-
const ch = src[i];
|
|
52
|
-
|
|
53
|
-
if (ch === '\n') {
|
|
54
|
-
const {
|
|
55
|
-
fold,
|
|
56
|
-
offset
|
|
57
|
-
} = _Node.default.foldNewline(src, i, -1);
|
|
58
|
-
|
|
59
|
-
str += fold;
|
|
60
|
-
i = offset;
|
|
61
|
-
} else if (ch === ' ' || ch === '\t') {
|
|
62
|
-
// trim trailing whitespace
|
|
63
|
-
const wsStart = i;
|
|
64
|
-
let next = src[i + 1];
|
|
65
|
-
|
|
66
|
-
while (i < end && (next === ' ' || next === '\t')) {
|
|
67
|
-
i += 1;
|
|
68
|
-
next = src[i + 1];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
|
|
72
|
-
} else {
|
|
73
|
-
str += ch;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return str;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
parseBlockValue(start) {
|
|
81
|
-
const {
|
|
82
|
-
indent,
|
|
83
|
-
inFlow,
|
|
84
|
-
src
|
|
85
|
-
} = this.context;
|
|
86
|
-
let offset = start;
|
|
87
|
-
let valueEnd = start;
|
|
88
|
-
|
|
89
|
-
for (let ch = src[offset]; ch === '\n'; ch = src[offset]) {
|
|
90
|
-
if (_Node.default.atDocumentBoundary(src, offset + 1)) break;
|
|
91
|
-
|
|
92
|
-
const end = _Node.default.endOfBlockIndent(src, indent, offset + 1);
|
|
93
|
-
|
|
94
|
-
if (end === null || src[end] === '#') break;
|
|
95
|
-
|
|
96
|
-
if (src[end] === '\n') {
|
|
97
|
-
offset = end;
|
|
98
|
-
} else {
|
|
99
|
-
valueEnd = PlainValue.endOfLine(src, end, inFlow);
|
|
100
|
-
offset = valueEnd;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (this.valueRange.isEmpty()) this.valueRange.start = start;
|
|
105
|
-
this.valueRange.end = valueEnd;
|
|
106
|
-
return valueEnd;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Parses a plain value from the source
|
|
110
|
-
*
|
|
111
|
-
* Accepted forms are:
|
|
112
|
-
* ```
|
|
113
|
-
* #comment
|
|
114
|
-
*
|
|
115
|
-
* first line
|
|
116
|
-
*
|
|
117
|
-
* first line #comment
|
|
118
|
-
*
|
|
119
|
-
* first line
|
|
120
|
-
* block
|
|
121
|
-
* lines
|
|
122
|
-
*
|
|
123
|
-
* #comment
|
|
124
|
-
* block
|
|
125
|
-
* lines
|
|
126
|
-
* ```
|
|
127
|
-
* where block lines are empty or have an indent level greater than `indent`.
|
|
128
|
-
*
|
|
129
|
-
* @param {ParseContext} context
|
|
130
|
-
* @param {number} start - Index of first character
|
|
131
|
-
* @returns {number} - Index of the character after this scalar, may be `\n`
|
|
132
|
-
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
parse(context, start) {
|
|
136
|
-
this.context = context;
|
|
137
|
-
const {
|
|
138
|
-
inFlow,
|
|
139
|
-
src
|
|
140
|
-
} = context;
|
|
141
|
-
let offset = start;
|
|
142
|
-
const ch = src[offset];
|
|
143
|
-
|
|
144
|
-
if (ch && ch !== '#' && ch !== '\n') {
|
|
145
|
-
offset = PlainValue.endOfLine(src, start, inFlow);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
this.valueRange = new _Range.default(start, offset);
|
|
149
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
150
|
-
offset = this.parseComment(offset);
|
|
151
|
-
|
|
152
|
-
if (!this.hasComment || this.valueRange.isEmpty()) {
|
|
153
|
-
offset = this.parseBlockValue(offset);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
return offset;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
exports.default = PlainValue;
|
package/dist/cst/QuoteDouble.js
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _errors = require("../errors");
|
|
9
|
-
|
|
10
|
-
var _Node = _interopRequireDefault(require("./Node"));
|
|
11
|
-
|
|
12
|
-
var _Range = _interopRequireDefault(require("./Range"));
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
class QuoteDouble extends _Node.default {
|
|
17
|
-
static endOfQuote(src, offset) {
|
|
18
|
-
let ch = src[offset];
|
|
19
|
-
|
|
20
|
-
while (ch && ch !== '"') {
|
|
21
|
-
offset += ch === '\\' ? 2 : 1;
|
|
22
|
-
ch = src[offset];
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
return offset + 1;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* @returns {string | { str: string, errors: YAMLSyntaxError[] }}
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
get strValue() {
|
|
33
|
-
if (!this.valueRange || !this.context) return null;
|
|
34
|
-
const errors = [];
|
|
35
|
-
const {
|
|
36
|
-
start,
|
|
37
|
-
end
|
|
38
|
-
} = this.valueRange;
|
|
39
|
-
const {
|
|
40
|
-
indent,
|
|
41
|
-
src
|
|
42
|
-
} = this.context;
|
|
43
|
-
if (src[end - 1] !== '"') errors.push(new _errors.YAMLSyntaxError(this, 'Missing closing "quote')); // Using String#replace is too painful with escaped newlines preceded by
|
|
44
|
-
// escaped backslashes; also, this should be faster.
|
|
45
|
-
|
|
46
|
-
let str = '';
|
|
47
|
-
|
|
48
|
-
for (let i = start + 1; i < end - 1; ++i) {
|
|
49
|
-
const ch = src[i];
|
|
50
|
-
|
|
51
|
-
if (ch === '\n') {
|
|
52
|
-
if (_Node.default.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
|
|
53
|
-
|
|
54
|
-
const {
|
|
55
|
-
fold,
|
|
56
|
-
offset,
|
|
57
|
-
error
|
|
58
|
-
} = _Node.default.foldNewline(src, i, indent);
|
|
59
|
-
|
|
60
|
-
str += fold;
|
|
61
|
-
i = offset;
|
|
62
|
-
if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line double-quoted string needs to be sufficiently indented'));
|
|
63
|
-
} else if (ch === '\\') {
|
|
64
|
-
i += 1;
|
|
65
|
-
|
|
66
|
-
switch (src[i]) {
|
|
67
|
-
case '0':
|
|
68
|
-
str += '\0';
|
|
69
|
-
break;
|
|
70
|
-
// null character
|
|
71
|
-
|
|
72
|
-
case 'a':
|
|
73
|
-
str += '\x07';
|
|
74
|
-
break;
|
|
75
|
-
// bell character
|
|
76
|
-
|
|
77
|
-
case 'b':
|
|
78
|
-
str += '\b';
|
|
79
|
-
break;
|
|
80
|
-
// backspace
|
|
81
|
-
|
|
82
|
-
case 'e':
|
|
83
|
-
str += '\x1b';
|
|
84
|
-
break;
|
|
85
|
-
// escape character
|
|
86
|
-
|
|
87
|
-
case 'f':
|
|
88
|
-
str += '\f';
|
|
89
|
-
break;
|
|
90
|
-
// form feed
|
|
91
|
-
|
|
92
|
-
case 'n':
|
|
93
|
-
str += '\n';
|
|
94
|
-
break;
|
|
95
|
-
// line feed
|
|
96
|
-
|
|
97
|
-
case 'r':
|
|
98
|
-
str += '\r';
|
|
99
|
-
break;
|
|
100
|
-
// carriage return
|
|
101
|
-
|
|
102
|
-
case 't':
|
|
103
|
-
str += '\t';
|
|
104
|
-
break;
|
|
105
|
-
// horizontal tab
|
|
106
|
-
|
|
107
|
-
case 'v':
|
|
108
|
-
str += '\v';
|
|
109
|
-
break;
|
|
110
|
-
// vertical tab
|
|
111
|
-
|
|
112
|
-
case 'N':
|
|
113
|
-
str += '\u0085';
|
|
114
|
-
break;
|
|
115
|
-
// Unicode next line
|
|
116
|
-
|
|
117
|
-
case '_':
|
|
118
|
-
str += '\u00a0';
|
|
119
|
-
break;
|
|
120
|
-
// Unicode non-breaking space
|
|
121
|
-
|
|
122
|
-
case 'L':
|
|
123
|
-
str += '\u2028';
|
|
124
|
-
break;
|
|
125
|
-
// Unicode line separator
|
|
126
|
-
|
|
127
|
-
case 'P':
|
|
128
|
-
str += '\u2029';
|
|
129
|
-
break;
|
|
130
|
-
// Unicode paragraph separator
|
|
131
|
-
|
|
132
|
-
case ' ':
|
|
133
|
-
str += ' ';
|
|
134
|
-
break;
|
|
135
|
-
|
|
136
|
-
case '"':
|
|
137
|
-
str += '"';
|
|
138
|
-
break;
|
|
139
|
-
|
|
140
|
-
case '/':
|
|
141
|
-
str += '/';
|
|
142
|
-
break;
|
|
143
|
-
|
|
144
|
-
case '\\':
|
|
145
|
-
str += '\\';
|
|
146
|
-
break;
|
|
147
|
-
|
|
148
|
-
case '\t':
|
|
149
|
-
str += '\t';
|
|
150
|
-
break;
|
|
151
|
-
|
|
152
|
-
case 'x':
|
|
153
|
-
str += this.parseCharCode(i + 1, 2, errors);
|
|
154
|
-
i += 2;
|
|
155
|
-
break;
|
|
156
|
-
|
|
157
|
-
case 'u':
|
|
158
|
-
str += this.parseCharCode(i + 1, 4, errors);
|
|
159
|
-
i += 4;
|
|
160
|
-
break;
|
|
161
|
-
|
|
162
|
-
case 'U':
|
|
163
|
-
str += this.parseCharCode(i + 1, 8, errors);
|
|
164
|
-
i += 8;
|
|
165
|
-
break;
|
|
166
|
-
|
|
167
|
-
case '\n':
|
|
168
|
-
// skip escaped newlines, but still trim the following line
|
|
169
|
-
while (src[i + 1] === ' ' || src[i + 1] === '\t') i += 1;
|
|
170
|
-
|
|
171
|
-
break;
|
|
172
|
-
|
|
173
|
-
default:
|
|
174
|
-
errors.push(new _errors.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(i - 1, 2)}`));
|
|
175
|
-
str += '\\' + src[i];
|
|
176
|
-
}
|
|
177
|
-
} else if (ch === ' ' || ch === '\t') {
|
|
178
|
-
// trim trailing whitespace
|
|
179
|
-
const wsStart = i;
|
|
180
|
-
let next = src[i + 1];
|
|
181
|
-
|
|
182
|
-
while (next === ' ' || next === '\t') {
|
|
183
|
-
i += 1;
|
|
184
|
-
next = src[i + 1];
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
|
|
188
|
-
} else {
|
|
189
|
-
str += ch;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return errors.length > 0 ? {
|
|
194
|
-
errors,
|
|
195
|
-
str
|
|
196
|
-
} : str;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
parseCharCode(offset, length, errors) {
|
|
200
|
-
const {
|
|
201
|
-
src
|
|
202
|
-
} = this.context;
|
|
203
|
-
const cc = src.substr(offset, length);
|
|
204
|
-
const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
|
|
205
|
-
const code = ok ? parseInt(cc, 16) : NaN;
|
|
206
|
-
|
|
207
|
-
if (isNaN(code)) {
|
|
208
|
-
errors.push(new _errors.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(offset - 2, length + 2)}`));
|
|
209
|
-
return src.substr(offset - 2, length + 2);
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
return String.fromCodePoint(code);
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Parses a "double quoted" value from the source
|
|
216
|
-
*
|
|
217
|
-
* @param {ParseContext} context
|
|
218
|
-
* @param {number} start - Index of first character
|
|
219
|
-
* @returns {number} - Index of the character after this scalar
|
|
220
|
-
*/
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
parse(context, start) {
|
|
224
|
-
this.context = context;
|
|
225
|
-
const {
|
|
226
|
-
src
|
|
227
|
-
} = context;
|
|
228
|
-
let offset = QuoteDouble.endOfQuote(src, start + 1);
|
|
229
|
-
this.valueRange = new _Range.default(start, offset);
|
|
230
|
-
offset = _Node.default.endOfWhiteSpace(src, offset);
|
|
231
|
-
offset = this.parseComment(offset);
|
|
232
|
-
return offset;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
exports.default = QuoteDouble;
|