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.
Files changed (160) hide show
  1. package/README.md +4 -4
  2. package/browser/dist/PlainValue-ff5147c6.js +1277 -0
  3. package/browser/dist/Schema-2bf2c74e.js +679 -0
  4. package/browser/dist/index.js +869 -34
  5. package/browser/dist/legacy-exports.js +3 -0
  6. package/browser/dist/parse-cst.js +1904 -0
  7. package/browser/dist/resolveSeq-04825f30.js +2373 -0
  8. package/browser/dist/types.js +4 -0
  9. package/browser/dist/util.js +2 -0
  10. package/browser/dist/warnings-0e4b70d3.js +499 -0
  11. package/browser/index.js +1 -1
  12. package/browser/map.js +2 -4
  13. package/browser/pair.js +2 -4
  14. package/browser/parse-cst.js +1 -1
  15. package/browser/scalar.js +2 -4
  16. package/browser/schema.js +7 -10
  17. package/browser/seq.js +2 -4
  18. package/browser/types/binary.js +7 -5
  19. package/browser/types/omap.js +3 -4
  20. package/browser/types/pairs.js +3 -4
  21. package/browser/types/set.js +3 -4
  22. package/browser/types/timestamp.js +9 -5
  23. package/browser/types.js +1 -13
  24. package/browser/util.js +1 -18
  25. package/dist/Document-2cf6b08c.js +757 -0
  26. package/dist/PlainValue-ec8e588e.js +876 -0
  27. package/dist/Schema-42e9705c.js +522 -0
  28. package/dist/index.js +20 -84
  29. package/dist/legacy-exports.js +16 -0
  30. package/dist/parse-cst.js +1747 -0
  31. package/dist/resolveSeq-4a68b39b.js +2115 -0
  32. package/dist/test-events.js +11 -9
  33. package/dist/types.js +23 -0
  34. package/dist/util.js +19 -0
  35. package/dist/warnings-39684f17.js +416 -0
  36. package/index.d.ts +22 -8
  37. package/map.js +2 -2
  38. package/package.json +22 -39
  39. package/pair.js +2 -2
  40. package/parse-cst.js +1 -1
  41. package/scalar.js +2 -2
  42. package/schema.js +8 -6
  43. package/seq.js +2 -2
  44. package/types/binary.js +3 -2
  45. package/types/omap.js +3 -2
  46. package/types/pairs.js +3 -2
  47. package/types/set.js +3 -2
  48. package/types/timestamp.js +6 -6
  49. package/types.d.ts +113 -99
  50. package/types.js +16 -11
  51. package/types.mjs +15 -19
  52. package/util.js +14 -14
  53. package/util.mjs +13 -20
  54. package/browser/dist/Anchors.js +0 -130
  55. package/browser/dist/Document.js +0 -824
  56. package/browser/dist/addComment.js +0 -8
  57. package/browser/dist/constants.js +0 -26
  58. package/browser/dist/cst/Alias.js +0 -46
  59. package/browser/dist/cst/BlankLine.js +0 -52
  60. package/browser/dist/cst/BlockValue.js +0 -251
  61. package/browser/dist/cst/Collection.js +0 -278
  62. package/browser/dist/cst/CollectionItem.js +0 -140
  63. package/browser/dist/cst/Comment.js +0 -44
  64. package/browser/dist/cst/Directive.js +0 -76
  65. package/browser/dist/cst/Document.js +0 -286
  66. package/browser/dist/cst/FlowCollection.js +0 -220
  67. package/browser/dist/cst/Node.js +0 -386
  68. package/browser/dist/cst/ParseContext.js +0 -246
  69. package/browser/dist/cst/PlainValue.js +0 -170
  70. package/browser/dist/cst/QuoteDouble.js +0 -245
  71. package/browser/dist/cst/QuoteSingle.js +0 -120
  72. package/browser/dist/cst/Range.js +0 -64
  73. package/browser/dist/cst/parse.js +0 -48
  74. package/browser/dist/cst/source-utils.js +0 -168
  75. package/browser/dist/errors.js +0 -127
  76. package/browser/dist/foldFlowLines.js +0 -138
  77. package/browser/dist/listTagNames.js +0 -28
  78. package/browser/dist/schema/Alias.js +0 -135
  79. package/browser/dist/schema/Collection.js +0 -260
  80. package/browser/dist/schema/Map.js +0 -161
  81. package/browser/dist/schema/Merge.js +0 -118
  82. package/browser/dist/schema/Node.js +0 -4
  83. package/browser/dist/schema/Pair.js +0 -194
  84. package/browser/dist/schema/Scalar.js +0 -42
  85. package/browser/dist/schema/Seq.js +0 -116
  86. package/browser/dist/schema/index.js +0 -368
  87. package/browser/dist/schema/parseMap.js +0 -312
  88. package/browser/dist/schema/parseSeq.js +0 -168
  89. package/browser/dist/schema/parseUtils.js +0 -106
  90. package/browser/dist/stringify.js +0 -332
  91. package/browser/dist/tags/core.js +0 -141
  92. package/browser/dist/tags/failsafe/index.js +0 -4
  93. package/browser/dist/tags/failsafe/map.js +0 -53
  94. package/browser/dist/tags/failsafe/seq.js +0 -39
  95. package/browser/dist/tags/failsafe/string.js +0 -28
  96. package/browser/dist/tags/index.js +0 -36
  97. package/browser/dist/tags/json.js +0 -77
  98. package/browser/dist/tags/options.js +0 -26
  99. package/browser/dist/tags/yaml-1.1/binary.js +0 -87
  100. package/browser/dist/tags/yaml-1.1/index.js +0 -189
  101. package/browser/dist/tags/yaml-1.1/omap.js +0 -137
  102. package/browser/dist/tags/yaml-1.1/pairs.js +0 -78
  103. package/browser/dist/tags/yaml-1.1/set.js +0 -118
  104. package/browser/dist/tags/yaml-1.1/timestamp.js +0 -97
  105. package/browser/dist/test-events.js +0 -163
  106. package/browser/dist/toJSON.js +0 -19
  107. package/browser/dist/warnings.js +0 -39
  108. package/dist/Anchors.js +0 -120
  109. package/dist/Document.js +0 -714
  110. package/dist/addComment.js +0 -14
  111. package/dist/constants.js +0 -31
  112. package/dist/cst/Alias.js +0 -33
  113. package/dist/cst/BlankLine.js +0 -40
  114. package/dist/cst/BlockValue.js +0 -243
  115. package/dist/cst/Collection.js +0 -266
  116. package/dist/cst/CollectionItem.js +0 -135
  117. package/dist/cst/Comment.js +0 -33
  118. package/dist/cst/Directive.js +0 -59
  119. package/dist/cst/Document.js +0 -276
  120. package/dist/cst/FlowCollection.js +0 -213
  121. package/dist/cst/Node.js +0 -360
  122. package/dist/cst/ParseContext.js +0 -253
  123. package/dist/cst/PlainValue.js +0 -156
  124. package/dist/cst/QuoteDouble.js +0 -232
  125. package/dist/cst/QuoteSingle.js +0 -108
  126. package/dist/cst/Range.js +0 -60
  127. package/dist/cst/parse.js +0 -50
  128. package/dist/cst/source-utils.js +0 -175
  129. package/dist/errors.js +0 -97
  130. package/dist/foldFlowLines.js +0 -143
  131. package/dist/listTagNames.js +0 -33
  132. package/dist/schema/Alias.js +0 -105
  133. package/dist/schema/Collection.js +0 -184
  134. package/dist/schema/Map.js +0 -98
  135. package/dist/schema/Merge.js +0 -75
  136. package/dist/schema/Node.js +0 -7
  137. package/dist/schema/Pair.js +0 -174
  138. package/dist/schema/Scalar.js +0 -26
  139. package/dist/schema/Seq.js +0 -73
  140. package/dist/schema/index.js +0 -310
  141. package/dist/schema/parseMap.js +0 -334
  142. package/dist/schema/parseSeq.js +0 -175
  143. package/dist/schema/parseUtils.js +0 -101
  144. package/dist/stringify.js +0 -352
  145. package/dist/tags/core.js +0 -121
  146. package/dist/tags/failsafe/index.js +0 -12
  147. package/dist/tags/failsafe/map.js +0 -32
  148. package/dist/tags/failsafe/seq.js +0 -29
  149. package/dist/tags/failsafe/string.js +0 -37
  150. package/dist/tags/index.js +0 -53
  151. package/dist/tags/json.js +0 -64
  152. package/dist/tags/options.js +0 -36
  153. package/dist/tags/yaml-1.1/binary.js +0 -94
  154. package/dist/tags/yaml-1.1/index.js +0 -162
  155. package/dist/tags/yaml-1.1/omap.js +0 -100
  156. package/dist/tags/yaml-1.1/pairs.js +0 -75
  157. package/dist/tags/yaml-1.1/set.js +0 -82
  158. package/dist/tags/yaml-1.1/timestamp.js +0 -90
  159. package/dist/toJSON.js +0 -21
  160. package/dist/warnings.js +0 -48
@@ -0,0 +1,1277 @@
1
+ function _typeof(obj) {
2
+ "@babel/helpers - typeof";
3
+
4
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
5
+ _typeof = function (obj) {
6
+ return typeof obj;
7
+ };
8
+ } else {
9
+ _typeof = function (obj) {
10
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
11
+ };
12
+ }
13
+
14
+ return _typeof(obj);
15
+ }
16
+
17
+ function _classCallCheck(instance, Constructor) {
18
+ if (!(instance instanceof Constructor)) {
19
+ throw new TypeError("Cannot call a class as a function");
20
+ }
21
+ }
22
+
23
+ function _defineProperties(target, props) {
24
+ for (var i = 0; i < props.length; i++) {
25
+ var descriptor = props[i];
26
+ descriptor.enumerable = descriptor.enumerable || false;
27
+ descriptor.configurable = true;
28
+ if ("value" in descriptor) descriptor.writable = true;
29
+ Object.defineProperty(target, descriptor.key, descriptor);
30
+ }
31
+ }
32
+
33
+ function _createClass(Constructor, protoProps, staticProps) {
34
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
35
+ if (staticProps) _defineProperties(Constructor, staticProps);
36
+ return Constructor;
37
+ }
38
+
39
+ function _defineProperty(obj, key, value) {
40
+ if (key in obj) {
41
+ Object.defineProperty(obj, key, {
42
+ value: value,
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true
46
+ });
47
+ } else {
48
+ obj[key] = value;
49
+ }
50
+
51
+ return obj;
52
+ }
53
+
54
+ function _inherits(subClass, superClass) {
55
+ if (typeof superClass !== "function" && superClass !== null) {
56
+ throw new TypeError("Super expression must either be null or a function");
57
+ }
58
+
59
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
60
+ constructor: {
61
+ value: subClass,
62
+ writable: true,
63
+ configurable: true
64
+ }
65
+ });
66
+ if (superClass) _setPrototypeOf(subClass, superClass);
67
+ }
68
+
69
+ function _getPrototypeOf(o) {
70
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
71
+ return o.__proto__ || Object.getPrototypeOf(o);
72
+ };
73
+ return _getPrototypeOf(o);
74
+ }
75
+
76
+ function _setPrototypeOf(o, p) {
77
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
78
+ o.__proto__ = p;
79
+ return o;
80
+ };
81
+
82
+ return _setPrototypeOf(o, p);
83
+ }
84
+
85
+ function _isNativeReflectConstruct() {
86
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
87
+ if (Reflect.construct.sham) return false;
88
+ if (typeof Proxy === "function") return true;
89
+
90
+ try {
91
+ Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
92
+ return true;
93
+ } catch (e) {
94
+ return false;
95
+ }
96
+ }
97
+
98
+ function _construct(Parent, args, Class) {
99
+ if (_isNativeReflectConstruct()) {
100
+ _construct = Reflect.construct;
101
+ } else {
102
+ _construct = function _construct(Parent, args, Class) {
103
+ var a = [null];
104
+ a.push.apply(a, args);
105
+ var Constructor = Function.bind.apply(Parent, a);
106
+ var instance = new Constructor();
107
+ if (Class) _setPrototypeOf(instance, Class.prototype);
108
+ return instance;
109
+ };
110
+ }
111
+
112
+ return _construct.apply(null, arguments);
113
+ }
114
+
115
+ function _isNativeFunction(fn) {
116
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
117
+ }
118
+
119
+ function _wrapNativeSuper(Class) {
120
+ var _cache = typeof Map === "function" ? new Map() : undefined;
121
+
122
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
123
+ if (Class === null || !_isNativeFunction(Class)) return Class;
124
+
125
+ if (typeof Class !== "function") {
126
+ throw new TypeError("Super expression must either be null or a function");
127
+ }
128
+
129
+ if (typeof _cache !== "undefined") {
130
+ if (_cache.has(Class)) return _cache.get(Class);
131
+
132
+ _cache.set(Class, Wrapper);
133
+ }
134
+
135
+ function Wrapper() {
136
+ return _construct(Class, arguments, _getPrototypeOf(this).constructor);
137
+ }
138
+
139
+ Wrapper.prototype = Object.create(Class.prototype, {
140
+ constructor: {
141
+ value: Wrapper,
142
+ enumerable: false,
143
+ writable: true,
144
+ configurable: true
145
+ }
146
+ });
147
+ return _setPrototypeOf(Wrapper, Class);
148
+ };
149
+
150
+ return _wrapNativeSuper(Class);
151
+ }
152
+
153
+ function _assertThisInitialized(self) {
154
+ if (self === void 0) {
155
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
156
+ }
157
+
158
+ return self;
159
+ }
160
+
161
+ function _possibleConstructorReturn(self, call) {
162
+ if (call && (typeof call === "object" || typeof call === "function")) {
163
+ return call;
164
+ }
165
+
166
+ return _assertThisInitialized(self);
167
+ }
168
+
169
+ function _createSuper(Derived) {
170
+ var hasNativeReflectConstruct = _isNativeReflectConstruct();
171
+
172
+ return function () {
173
+ var Super = _getPrototypeOf(Derived),
174
+ result;
175
+
176
+ if (hasNativeReflectConstruct) {
177
+ var NewTarget = _getPrototypeOf(this).constructor;
178
+
179
+ result = Reflect.construct(Super, arguments, NewTarget);
180
+ } else {
181
+ result = Super.apply(this, arguments);
182
+ }
183
+
184
+ return _possibleConstructorReturn(this, result);
185
+ };
186
+ }
187
+
188
+ function _superPropBase(object, property) {
189
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
190
+ object = _getPrototypeOf(object);
191
+ if (object === null) break;
192
+ }
193
+
194
+ return object;
195
+ }
196
+
197
+ function _get(target, property, receiver) {
198
+ if (typeof Reflect !== "undefined" && Reflect.get) {
199
+ _get = Reflect.get;
200
+ } else {
201
+ _get = function _get(target, property, receiver) {
202
+ var base = _superPropBase(target, property);
203
+
204
+ if (!base) return;
205
+ var desc = Object.getOwnPropertyDescriptor(base, property);
206
+
207
+ if (desc.get) {
208
+ return desc.get.call(receiver);
209
+ }
210
+
211
+ return desc.value;
212
+ };
213
+ }
214
+
215
+ return _get(target, property, receiver || target);
216
+ }
217
+
218
+ function _slicedToArray(arr, i) {
219
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
220
+ }
221
+
222
+ function _toArray(arr) {
223
+ return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
224
+ }
225
+
226
+ function _arrayWithHoles(arr) {
227
+ if (Array.isArray(arr)) return arr;
228
+ }
229
+
230
+ function _iterableToArray(iter) {
231
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
232
+ }
233
+
234
+ function _iterableToArrayLimit(arr, i) {
235
+ if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
236
+ var _arr = [];
237
+ var _n = true;
238
+ var _d = false;
239
+ var _e = undefined;
240
+
241
+ try {
242
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
243
+ _arr.push(_s.value);
244
+
245
+ if (i && _arr.length === i) break;
246
+ }
247
+ } catch (err) {
248
+ _d = true;
249
+ _e = err;
250
+ } finally {
251
+ try {
252
+ if (!_n && _i["return"] != null) _i["return"]();
253
+ } finally {
254
+ if (_d) throw _e;
255
+ }
256
+ }
257
+
258
+ return _arr;
259
+ }
260
+
261
+ function _unsupportedIterableToArray(o, minLen) {
262
+ if (!o) return;
263
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
264
+ var n = Object.prototype.toString.call(o).slice(8, -1);
265
+ if (n === "Object" && o.constructor) n = o.constructor.name;
266
+ if (n === "Map" || n === "Set") return Array.from(o);
267
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
268
+ }
269
+
270
+ function _arrayLikeToArray(arr, len) {
271
+ if (len == null || len > arr.length) len = arr.length;
272
+
273
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
274
+
275
+ return arr2;
276
+ }
277
+
278
+ function _nonIterableRest() {
279
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
280
+ }
281
+
282
+ function _createForOfIteratorHelper(o) {
283
+ if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
284
+ if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) {
285
+ var i = 0;
286
+
287
+ var F = function () {};
288
+
289
+ return {
290
+ s: F,
291
+ n: function () {
292
+ if (i >= o.length) return {
293
+ done: true
294
+ };
295
+ return {
296
+ done: false,
297
+ value: o[i++]
298
+ };
299
+ },
300
+ e: function (e) {
301
+ throw e;
302
+ },
303
+ f: F
304
+ };
305
+ }
306
+
307
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
308
+ }
309
+
310
+ var it,
311
+ normalCompletion = true,
312
+ didErr = false,
313
+ err;
314
+ return {
315
+ s: function () {
316
+ it = o[Symbol.iterator]();
317
+ },
318
+ n: function () {
319
+ var step = it.next();
320
+ normalCompletion = step.done;
321
+ return step;
322
+ },
323
+ e: function (e) {
324
+ didErr = true;
325
+ err = e;
326
+ },
327
+ f: function () {
328
+ try {
329
+ if (!normalCompletion && it.return != null) it.return();
330
+ } finally {
331
+ if (didErr) throw err;
332
+ }
333
+ }
334
+ };
335
+ }
336
+
337
+ var Char = {
338
+ ANCHOR: '&',
339
+ COMMENT: '#',
340
+ TAG: '!',
341
+ DIRECTIVES_END: '-',
342
+ DOCUMENT_END: '.'
343
+ };
344
+ var Type = {
345
+ ALIAS: 'ALIAS',
346
+ BLANK_LINE: 'BLANK_LINE',
347
+ BLOCK_FOLDED: 'BLOCK_FOLDED',
348
+ BLOCK_LITERAL: 'BLOCK_LITERAL',
349
+ COMMENT: 'COMMENT',
350
+ DIRECTIVE: 'DIRECTIVE',
351
+ DOCUMENT: 'DOCUMENT',
352
+ FLOW_MAP: 'FLOW_MAP',
353
+ FLOW_SEQ: 'FLOW_SEQ',
354
+ MAP: 'MAP',
355
+ MAP_KEY: 'MAP_KEY',
356
+ MAP_VALUE: 'MAP_VALUE',
357
+ PLAIN: 'PLAIN',
358
+ QUOTE_DOUBLE: 'QUOTE_DOUBLE',
359
+ QUOTE_SINGLE: 'QUOTE_SINGLE',
360
+ SEQ: 'SEQ',
361
+ SEQ_ITEM: 'SEQ_ITEM'
362
+ };
363
+ var defaultTagPrefix = 'tag:yaml.org,2002:';
364
+ var defaultTags = {
365
+ MAP: 'tag:yaml.org,2002:map',
366
+ SEQ: 'tag:yaml.org,2002:seq',
367
+ STR: 'tag:yaml.org,2002:str'
368
+ };
369
+
370
+ function findLineStarts(src) {
371
+ var ls = [0];
372
+ var offset = src.indexOf('\n');
373
+
374
+ while (offset !== -1) {
375
+ offset += 1;
376
+ ls.push(offset);
377
+ offset = src.indexOf('\n', offset);
378
+ }
379
+
380
+ return ls;
381
+ }
382
+
383
+ function getSrcInfo(cst) {
384
+ var lineStarts, src;
385
+
386
+ if (typeof cst === 'string') {
387
+ lineStarts = findLineStarts(cst);
388
+ src = cst;
389
+ } else {
390
+ if (Array.isArray(cst)) cst = cst[0];
391
+
392
+ if (cst && cst.context) {
393
+ if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
394
+ lineStarts = cst.lineStarts;
395
+ src = cst.context.src;
396
+ }
397
+ }
398
+
399
+ return {
400
+ lineStarts: lineStarts,
401
+ src: src
402
+ };
403
+ }
404
+ /**
405
+ * @typedef {Object} LinePos - One-indexed position in the source
406
+ * @property {number} line
407
+ * @property {number} col
408
+ */
409
+
410
+ /**
411
+ * Determine the line/col position matching a character offset.
412
+ *
413
+ * Accepts a source string or a CST document as the second parameter. With
414
+ * the latter, starting indices for lines are cached in the document as
415
+ * `lineStarts: number[]`.
416
+ *
417
+ * Returns a one-indexed `{ line, col }` location if found, or
418
+ * `undefined` otherwise.
419
+ *
420
+ * @param {number} offset
421
+ * @param {string|Document|Document[]} cst
422
+ * @returns {?LinePos}
423
+ */
424
+
425
+
426
+ function getLinePos(offset, cst) {
427
+ if (typeof offset !== 'number' || offset < 0) return null;
428
+
429
+ var _getSrcInfo = getSrcInfo(cst),
430
+ lineStarts = _getSrcInfo.lineStarts,
431
+ src = _getSrcInfo.src;
432
+
433
+ if (!lineStarts || !src || offset > src.length) return null;
434
+
435
+ for (var i = 0; i < lineStarts.length; ++i) {
436
+ var start = lineStarts[i];
437
+
438
+ if (offset < start) {
439
+ return {
440
+ line: i,
441
+ col: offset - lineStarts[i - 1] + 1
442
+ };
443
+ }
444
+
445
+ if (offset === start) return {
446
+ line: i + 1,
447
+ col: 1
448
+ };
449
+ }
450
+
451
+ var line = lineStarts.length;
452
+ return {
453
+ line: line,
454
+ col: offset - lineStarts[line - 1] + 1
455
+ };
456
+ }
457
+ /**
458
+ * Get a specified line from the source.
459
+ *
460
+ * Accepts a source string or a CST document as the second parameter. With
461
+ * the latter, starting indices for lines are cached in the document as
462
+ * `lineStarts: number[]`.
463
+ *
464
+ * Returns the line as a string if found, or `null` otherwise.
465
+ *
466
+ * @param {number} line One-indexed line number
467
+ * @param {string|Document|Document[]} cst
468
+ * @returns {?string}
469
+ */
470
+
471
+ function getLine(line, cst) {
472
+ var _getSrcInfo2 = getSrcInfo(cst),
473
+ lineStarts = _getSrcInfo2.lineStarts,
474
+ src = _getSrcInfo2.src;
475
+
476
+ if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
477
+ var start = lineStarts[line - 1];
478
+ var end = lineStarts[line]; // undefined for last line; that's ok for slice()
479
+
480
+ while (end && end > start && src[end - 1] === '\n') {
481
+ --end;
482
+ }
483
+
484
+ return src.slice(start, end);
485
+ }
486
+ /**
487
+ * Pretty-print the starting line from the source indicated by the range `pos`
488
+ *
489
+ * Trims output to `maxWidth` chars while keeping the starting column visible,
490
+ * using `…` at either end to indicate dropped characters.
491
+ *
492
+ * Returns a two-line string (or `null`) with `\n` as separator; the second line
493
+ * will hold appropriately indented `^` marks indicating the column range.
494
+ *
495
+ * @param {Object} pos
496
+ * @param {LinePos} pos.start
497
+ * @param {LinePos} [pos.end]
498
+ * @param {string|Document|Document[]*} cst
499
+ * @param {number} [maxWidth=80]
500
+ * @returns {?string}
501
+ */
502
+
503
+ function getPrettyContext(_ref, cst) {
504
+ var start = _ref.start,
505
+ end = _ref.end;
506
+ var maxWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 80;
507
+ var src = getLine(start.line, cst);
508
+ if (!src) return null;
509
+ var col = start.col;
510
+
511
+ if (src.length > maxWidth) {
512
+ if (col <= maxWidth - 10) {
513
+ src = src.substr(0, maxWidth - 1) + '…';
514
+ } else {
515
+ var halfWidth = Math.round(maxWidth / 2);
516
+ if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
517
+ col -= src.length - maxWidth;
518
+ src = '…' + src.substr(1 - maxWidth);
519
+ }
520
+ }
521
+
522
+ var errLen = 1;
523
+ var errEnd = '';
524
+
525
+ if (end) {
526
+ if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
527
+ errLen = end.col - start.col;
528
+ } else {
529
+ errLen = Math.min(src.length + 1, maxWidth) - col;
530
+ errEnd = '…';
531
+ }
532
+ }
533
+
534
+ var offset = col > 1 ? ' '.repeat(col - 1) : '';
535
+ var err = '^'.repeat(errLen);
536
+ return "".concat(src, "\n").concat(offset).concat(err).concat(errEnd);
537
+ }
538
+
539
+ var Range = /*#__PURE__*/function () {
540
+ _createClass(Range, null, [{
541
+ key: "copy",
542
+ value: function copy(orig) {
543
+ return new Range(orig.start, orig.end);
544
+ }
545
+ }]);
546
+
547
+ function Range(start, end) {
548
+ _classCallCheck(this, Range);
549
+
550
+ this.start = start;
551
+ this.end = end || start;
552
+ }
553
+
554
+ _createClass(Range, [{
555
+ key: "isEmpty",
556
+ value: function isEmpty() {
557
+ return typeof this.start !== 'number' || !this.end || this.end <= this.start;
558
+ }
559
+ /**
560
+ * Set `origStart` and `origEnd` to point to the original source range for
561
+ * this node, which may differ due to dropped CR characters.
562
+ *
563
+ * @param {number[]} cr - Positions of dropped CR characters
564
+ * @param {number} offset - Starting index of `cr` from the last call
565
+ * @returns {number} - The next offset, matching the one found for `origStart`
566
+ */
567
+
568
+ }, {
569
+ key: "setOrigRange",
570
+ value: function setOrigRange(cr, offset) {
571
+ var start = this.start,
572
+ end = this.end;
573
+
574
+ if (cr.length === 0 || end <= cr[0]) {
575
+ this.origStart = start;
576
+ this.origEnd = end;
577
+ return offset;
578
+ }
579
+
580
+ var i = offset;
581
+
582
+ while (i < cr.length) {
583
+ if (cr[i] > start) break;else ++i;
584
+ }
585
+
586
+ this.origStart = start + i;
587
+ var nextOffset = i;
588
+
589
+ while (i < cr.length) {
590
+ // if end was at \n, it should now be at \r
591
+ if (cr[i] >= end) break;else ++i;
592
+ }
593
+
594
+ this.origEnd = end + i;
595
+ return nextOffset;
596
+ }
597
+ }]);
598
+
599
+ return Range;
600
+ }();
601
+
602
+ /** Root class of all nodes */
603
+
604
+ var Node = /*#__PURE__*/function () {
605
+ _createClass(Node, null, [{
606
+ key: "addStringTerminator",
607
+ value: function addStringTerminator(src, offset, str) {
608
+ if (str[str.length - 1] === '\n') return str;
609
+ var next = Node.endOfWhiteSpace(src, offset);
610
+ return next >= src.length || src[next] === '\n' ? str + '\n' : str;
611
+ } // ^(---|...)
612
+
613
+ }, {
614
+ key: "atDocumentBoundary",
615
+ value: function atDocumentBoundary(src, offset, sep) {
616
+ var ch0 = src[offset];
617
+ if (!ch0) return true;
618
+ var prev = src[offset - 1];
619
+ if (prev && prev !== '\n') return false;
620
+
621
+ if (sep) {
622
+ if (ch0 !== sep) return false;
623
+ } else {
624
+ if (ch0 !== Char.DIRECTIVES_END && ch0 !== Char.DOCUMENT_END) return false;
625
+ }
626
+
627
+ var ch1 = src[offset + 1];
628
+ var ch2 = src[offset + 2];
629
+ if (ch1 !== ch0 || ch2 !== ch0) return false;
630
+ var ch3 = src[offset + 3];
631
+ return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' ';
632
+ }
633
+ }, {
634
+ key: "endOfIdentifier",
635
+ value: function endOfIdentifier(src, offset) {
636
+ var ch = src[offset];
637
+ var isVerbatim = ch === '<';
638
+ var notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
639
+
640
+ while (ch && notOk.indexOf(ch) === -1) {
641
+ ch = src[offset += 1];
642
+ }
643
+
644
+ if (isVerbatim && ch === '>') offset += 1;
645
+ return offset;
646
+ }
647
+ }, {
648
+ key: "endOfIndent",
649
+ value: function endOfIndent(src, offset) {
650
+ var ch = src[offset];
651
+
652
+ while (ch === ' ') {
653
+ ch = src[offset += 1];
654
+ }
655
+
656
+ return offset;
657
+ }
658
+ }, {
659
+ key: "endOfLine",
660
+ value: function endOfLine(src, offset) {
661
+ var ch = src[offset];
662
+
663
+ while (ch && ch !== '\n') {
664
+ ch = src[offset += 1];
665
+ }
666
+
667
+ return offset;
668
+ }
669
+ }, {
670
+ key: "endOfWhiteSpace",
671
+ value: function endOfWhiteSpace(src, offset) {
672
+ var ch = src[offset];
673
+
674
+ while (ch === '\t' || ch === ' ') {
675
+ ch = src[offset += 1];
676
+ }
677
+
678
+ return offset;
679
+ }
680
+ }, {
681
+ key: "startOfLine",
682
+ value: function startOfLine(src, offset) {
683
+ var ch = src[offset - 1];
684
+ if (ch === '\n') return offset;
685
+
686
+ while (ch && ch !== '\n') {
687
+ ch = src[offset -= 1];
688
+ }
689
+
690
+ return offset + 1;
691
+ }
692
+ /**
693
+ * End of indentation, or null if the line's indent level is not more
694
+ * than `indent`
695
+ *
696
+ * @param {string} src
697
+ * @param {number} indent
698
+ * @param {number} lineStart
699
+ * @returns {?number}
700
+ */
701
+
702
+ }, {
703
+ key: "endOfBlockIndent",
704
+ value: function endOfBlockIndent(src, indent, lineStart) {
705
+ var inEnd = Node.endOfIndent(src, lineStart);
706
+
707
+ if (inEnd > lineStart + indent) {
708
+ return inEnd;
709
+ } else {
710
+ var wsEnd = Node.endOfWhiteSpace(src, inEnd);
711
+ var ch = src[wsEnd];
712
+ if (!ch || ch === '\n') return wsEnd;
713
+ }
714
+
715
+ return null;
716
+ }
717
+ }, {
718
+ key: "atBlank",
719
+ value: function atBlank(src, offset, endAsBlank) {
720
+ var ch = src[offset];
721
+ return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch;
722
+ }
723
+ }, {
724
+ key: "nextNodeIsIndented",
725
+ value: function nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {
726
+ if (!ch || indentDiff < 0) return false;
727
+ if (indentDiff > 0) return true;
728
+ return indicatorAsIndent && ch === '-';
729
+ } // should be at line or string end, or at next non-whitespace char
730
+
731
+ }, {
732
+ key: "normalizeOffset",
733
+ value: function normalizeOffset(src, offset) {
734
+ var ch = src[offset];
735
+ return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);
736
+ } // fold single newline into space, multiple newlines to N - 1 newlines
737
+ // presumes src[offset] === '\n'
738
+
739
+ }, {
740
+ key: "foldNewline",
741
+ value: function foldNewline(src, offset, indent) {
742
+ var inCount = 0;
743
+ var error = false;
744
+ var fold = '';
745
+ var ch = src[offset + 1];
746
+
747
+ while (ch === ' ' || ch === '\t' || ch === '\n') {
748
+ switch (ch) {
749
+ case '\n':
750
+ inCount = 0;
751
+ offset += 1;
752
+ fold += '\n';
753
+ break;
754
+
755
+ case '\t':
756
+ if (inCount <= indent) error = true;
757
+ offset = Node.endOfWhiteSpace(src, offset + 2) - 1;
758
+ break;
759
+
760
+ case ' ':
761
+ inCount += 1;
762
+ offset += 1;
763
+ break;
764
+ }
765
+
766
+ ch = src[offset + 1];
767
+ }
768
+
769
+ if (!fold) fold = ' ';
770
+ if (ch && inCount <= indent) error = true;
771
+ return {
772
+ fold: fold,
773
+ offset: offset,
774
+ error: error
775
+ };
776
+ }
777
+ }]);
778
+
779
+ function Node(type, props, context) {
780
+ _classCallCheck(this, Node);
781
+
782
+ Object.defineProperty(this, 'context', {
783
+ value: context || null,
784
+ writable: true
785
+ });
786
+ this.error = null;
787
+ this.range = null;
788
+ this.valueRange = null;
789
+ this.props = props || [];
790
+ this.type = type;
791
+ this.value = null;
792
+ }
793
+
794
+ _createClass(Node, [{
795
+ key: "getPropValue",
796
+ value: function getPropValue(idx, key, skipKey) {
797
+ if (!this.context) return null;
798
+ var src = this.context.src;
799
+ var prop = this.props[idx];
800
+ return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;
801
+ }
802
+ }, {
803
+ key: "commentHasRequiredWhitespace",
804
+ value: function commentHasRequiredWhitespace(start) {
805
+ var src = this.context.src;
806
+ if (this.header && start === this.header.end) return false;
807
+ if (!this.valueRange) return false;
808
+ var end = this.valueRange.end;
809
+ return start !== end || Node.atBlank(src, end - 1);
810
+ }
811
+ }, {
812
+ key: "parseComment",
813
+ value: function parseComment(start) {
814
+ var src = this.context.src;
815
+
816
+ if (src[start] === Char.COMMENT) {
817
+ var end = Node.endOfLine(src, start + 1);
818
+ var commentRange = new Range(start, end);
819
+ this.props.push(commentRange);
820
+ return end;
821
+ }
822
+
823
+ return start;
824
+ }
825
+ /**
826
+ * Populates the `origStart` and `origEnd` values of all ranges for this
827
+ * node. Extended by child classes to handle descendant nodes.
828
+ *
829
+ * @param {number[]} cr - Positions of dropped CR characters
830
+ * @param {number} offset - Starting index of `cr` from the last call
831
+ * @returns {number} - The next offset, matching the one found for `origStart`
832
+ */
833
+
834
+ }, {
835
+ key: "setOrigRanges",
836
+ value: function setOrigRanges(cr, offset) {
837
+ if (this.range) offset = this.range.setOrigRange(cr, offset);
838
+ if (this.valueRange) this.valueRange.setOrigRange(cr, offset);
839
+ this.props.forEach(function (prop) {
840
+ return prop.setOrigRange(cr, offset);
841
+ });
842
+ return offset;
843
+ }
844
+ }, {
845
+ key: "toString",
846
+ value: function toString() {
847
+ var src = this.context.src,
848
+ range = this.range,
849
+ value = this.value;
850
+ if (value != null) return value;
851
+ var str = src.slice(range.start, range.end);
852
+ return Node.addStringTerminator(src, range.end, str);
853
+ }
854
+ }, {
855
+ key: "anchor",
856
+ get: function get() {
857
+ for (var i = 0; i < this.props.length; ++i) {
858
+ var anchor = this.getPropValue(i, Char.ANCHOR, true);
859
+ if (anchor != null) return anchor;
860
+ }
861
+
862
+ return null;
863
+ }
864
+ }, {
865
+ key: "comment",
866
+ get: function get() {
867
+ var comments = [];
868
+
869
+ for (var i = 0; i < this.props.length; ++i) {
870
+ var comment = this.getPropValue(i, Char.COMMENT, true);
871
+ if (comment != null) comments.push(comment);
872
+ }
873
+
874
+ return comments.length > 0 ? comments.join('\n') : null;
875
+ }
876
+ }, {
877
+ key: "hasComment",
878
+ get: function get() {
879
+ if (this.context) {
880
+ var src = this.context.src;
881
+
882
+ for (var i = 0; i < this.props.length; ++i) {
883
+ if (src[this.props[i].start] === Char.COMMENT) return true;
884
+ }
885
+ }
886
+
887
+ return false;
888
+ }
889
+ }, {
890
+ key: "hasProps",
891
+ get: function get() {
892
+ if (this.context) {
893
+ var src = this.context.src;
894
+
895
+ for (var i = 0; i < this.props.length; ++i) {
896
+ if (src[this.props[i].start] !== Char.COMMENT) return true;
897
+ }
898
+ }
899
+
900
+ return false;
901
+ }
902
+ }, {
903
+ key: "includesTrailingLines",
904
+ get: function get() {
905
+ return false;
906
+ }
907
+ }, {
908
+ key: "jsonLike",
909
+ get: function get() {
910
+ var jsonLikeTypes = [Type.FLOW_MAP, Type.FLOW_SEQ, Type.QUOTE_DOUBLE, Type.QUOTE_SINGLE];
911
+ return jsonLikeTypes.indexOf(this.type) !== -1;
912
+ }
913
+ }, {
914
+ key: "rangeAsLinePos",
915
+ get: function get() {
916
+ if (!this.range || !this.context) return undefined;
917
+ var start = getLinePos(this.range.start, this.context.root);
918
+ if (!start) return undefined;
919
+ var end = getLinePos(this.range.end, this.context.root);
920
+ return {
921
+ start: start,
922
+ end: end
923
+ };
924
+ }
925
+ }, {
926
+ key: "rawValue",
927
+ get: function get() {
928
+ if (!this.valueRange || !this.context) return null;
929
+ var _this$valueRange = this.valueRange,
930
+ start = _this$valueRange.start,
931
+ end = _this$valueRange.end;
932
+ return this.context.src.slice(start, end);
933
+ }
934
+ }, {
935
+ key: "tag",
936
+ get: function get() {
937
+ for (var i = 0; i < this.props.length; ++i) {
938
+ var tag = this.getPropValue(i, Char.TAG, false);
939
+
940
+ if (tag != null) {
941
+ if (tag[1] === '<') {
942
+ return {
943
+ verbatim: tag.slice(2, -1)
944
+ };
945
+ } else {
946
+ // eslint-disable-next-line no-unused-vars
947
+ var _tag$match = tag.match(/^(.*!)([^!]*)$/),
948
+ _tag$match2 = _slicedToArray(_tag$match, 3),
949
+ _ = _tag$match2[0],
950
+ handle = _tag$match2[1],
951
+ suffix = _tag$match2[2];
952
+
953
+ return {
954
+ handle: handle,
955
+ suffix: suffix
956
+ };
957
+ }
958
+ }
959
+ }
960
+
961
+ return null;
962
+ }
963
+ }, {
964
+ key: "valueRangeContainsNewline",
965
+ get: function get() {
966
+ if (!this.valueRange || !this.context) return false;
967
+ var _this$valueRange2 = this.valueRange,
968
+ start = _this$valueRange2.start,
969
+ end = _this$valueRange2.end;
970
+ var src = this.context.src;
971
+
972
+ for (var i = start; i < end; ++i) {
973
+ if (src[i] === '\n') return true;
974
+ }
975
+
976
+ return false;
977
+ }
978
+ }]);
979
+
980
+ return Node;
981
+ }();
982
+
983
+ var YAMLError = /*#__PURE__*/function (_Error) {
984
+ _inherits(YAMLError, _Error);
985
+
986
+ var _super = _createSuper(YAMLError);
987
+
988
+ function YAMLError(name, source, message) {
989
+ var _this;
990
+
991
+ _classCallCheck(this, YAMLError);
992
+
993
+ if (!message || !(source instanceof Node)) throw new Error("Invalid arguments for new ".concat(name));
994
+ _this = _super.call(this);
995
+ _this.name = name;
996
+ _this.message = message;
997
+ _this.source = source;
998
+ return _this;
999
+ }
1000
+
1001
+ _createClass(YAMLError, [{
1002
+ key: "makePretty",
1003
+ value: function makePretty() {
1004
+ if (!this.source) return;
1005
+ this.nodeType = this.source.type;
1006
+ var cst = this.source.context && this.source.context.root;
1007
+
1008
+ if (typeof this.offset === 'number') {
1009
+ this.range = new Range(this.offset, this.offset + 1);
1010
+ var start = cst && getLinePos(this.offset, cst);
1011
+
1012
+ if (start) {
1013
+ var end = {
1014
+ line: start.line,
1015
+ col: start.col + 1
1016
+ };
1017
+ this.linePos = {
1018
+ start: start,
1019
+ end: end
1020
+ };
1021
+ }
1022
+
1023
+ delete this.offset;
1024
+ } else {
1025
+ this.range = this.source.range;
1026
+ this.linePos = this.source.rangeAsLinePos;
1027
+ }
1028
+
1029
+ if (this.linePos) {
1030
+ var _this$linePos$start = this.linePos.start,
1031
+ line = _this$linePos$start.line,
1032
+ col = _this$linePos$start.col;
1033
+ this.message += " at line ".concat(line, ", column ").concat(col);
1034
+ var ctx = cst && getPrettyContext(this.linePos, cst);
1035
+ if (ctx) this.message += ":\n\n".concat(ctx, "\n");
1036
+ }
1037
+
1038
+ delete this.source;
1039
+ }
1040
+ }]);
1041
+
1042
+ return YAMLError;
1043
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
1044
+ var YAMLReferenceError = /*#__PURE__*/function (_YAMLError) {
1045
+ _inherits(YAMLReferenceError, _YAMLError);
1046
+
1047
+ var _super2 = _createSuper(YAMLReferenceError);
1048
+
1049
+ function YAMLReferenceError(source, message) {
1050
+ _classCallCheck(this, YAMLReferenceError);
1051
+
1052
+ return _super2.call(this, 'YAMLReferenceError', source, message);
1053
+ }
1054
+
1055
+ return YAMLReferenceError;
1056
+ }(YAMLError);
1057
+ var YAMLSemanticError = /*#__PURE__*/function (_YAMLError2) {
1058
+ _inherits(YAMLSemanticError, _YAMLError2);
1059
+
1060
+ var _super3 = _createSuper(YAMLSemanticError);
1061
+
1062
+ function YAMLSemanticError(source, message) {
1063
+ _classCallCheck(this, YAMLSemanticError);
1064
+
1065
+ return _super3.call(this, 'YAMLSemanticError', source, message);
1066
+ }
1067
+
1068
+ return YAMLSemanticError;
1069
+ }(YAMLError);
1070
+ var YAMLSyntaxError = /*#__PURE__*/function (_YAMLError3) {
1071
+ _inherits(YAMLSyntaxError, _YAMLError3);
1072
+
1073
+ var _super4 = _createSuper(YAMLSyntaxError);
1074
+
1075
+ function YAMLSyntaxError(source, message) {
1076
+ _classCallCheck(this, YAMLSyntaxError);
1077
+
1078
+ return _super4.call(this, 'YAMLSyntaxError', source, message);
1079
+ }
1080
+
1081
+ return YAMLSyntaxError;
1082
+ }(YAMLError);
1083
+ var YAMLWarning = /*#__PURE__*/function (_YAMLError4) {
1084
+ _inherits(YAMLWarning, _YAMLError4);
1085
+
1086
+ var _super5 = _createSuper(YAMLWarning);
1087
+
1088
+ function YAMLWarning(source, message) {
1089
+ _classCallCheck(this, YAMLWarning);
1090
+
1091
+ return _super5.call(this, 'YAMLWarning', source, message);
1092
+ }
1093
+
1094
+ return YAMLWarning;
1095
+ }(YAMLError);
1096
+
1097
+ var PlainValue = /*#__PURE__*/function (_Node) {
1098
+ _inherits(PlainValue, _Node);
1099
+
1100
+ var _super = _createSuper(PlainValue);
1101
+
1102
+ function PlainValue() {
1103
+ _classCallCheck(this, PlainValue);
1104
+
1105
+ return _super.apply(this, arguments);
1106
+ }
1107
+
1108
+ _createClass(PlainValue, [{
1109
+ key: "parseBlockValue",
1110
+ value: function parseBlockValue(start) {
1111
+ var _this$context = this.context,
1112
+ indent = _this$context.indent,
1113
+ inFlow = _this$context.inFlow,
1114
+ src = _this$context.src;
1115
+ var offset = start;
1116
+ var valueEnd = start;
1117
+
1118
+ for (var ch = src[offset]; ch === '\n'; ch = src[offset]) {
1119
+ if (Node.atDocumentBoundary(src, offset + 1)) break;
1120
+ var end = Node.endOfBlockIndent(src, indent, offset + 1);
1121
+ if (end === null || src[end] === '#') break;
1122
+
1123
+ if (src[end] === '\n') {
1124
+ offset = end;
1125
+ } else {
1126
+ valueEnd = PlainValue.endOfLine(src, end, inFlow);
1127
+ offset = valueEnd;
1128
+ }
1129
+ }
1130
+
1131
+ if (this.valueRange.isEmpty()) this.valueRange.start = start;
1132
+ this.valueRange.end = valueEnd;
1133
+ return valueEnd;
1134
+ }
1135
+ /**
1136
+ * Parses a plain value from the source
1137
+ *
1138
+ * Accepted forms are:
1139
+ * ```
1140
+ * #comment
1141
+ *
1142
+ * first line
1143
+ *
1144
+ * first line #comment
1145
+ *
1146
+ * first line
1147
+ * block
1148
+ * lines
1149
+ *
1150
+ * #comment
1151
+ * block
1152
+ * lines
1153
+ * ```
1154
+ * where block lines are empty or have an indent level greater than `indent`.
1155
+ *
1156
+ * @param {ParseContext} context
1157
+ * @param {number} start - Index of first character
1158
+ * @returns {number} - Index of the character after this scalar, may be `\n`
1159
+ */
1160
+
1161
+ }, {
1162
+ key: "parse",
1163
+ value: function parse(context, start) {
1164
+ this.context = context;
1165
+ var inFlow = context.inFlow,
1166
+ src = context.src;
1167
+ var offset = start;
1168
+ var ch = src[offset];
1169
+
1170
+ if (ch && ch !== '#' && ch !== '\n') {
1171
+ offset = PlainValue.endOfLine(src, start, inFlow);
1172
+ }
1173
+
1174
+ this.valueRange = new Range(start, offset);
1175
+ offset = Node.endOfWhiteSpace(src, offset);
1176
+ offset = this.parseComment(offset);
1177
+
1178
+ if (!this.hasComment || this.valueRange.isEmpty()) {
1179
+ offset = this.parseBlockValue(offset);
1180
+ }
1181
+
1182
+ return offset;
1183
+ }
1184
+ }, {
1185
+ key: "strValue",
1186
+ get: function get() {
1187
+ if (!this.valueRange || !this.context) return null;
1188
+ var _this$valueRange = this.valueRange,
1189
+ start = _this$valueRange.start,
1190
+ end = _this$valueRange.end;
1191
+ var src = this.context.src;
1192
+ var ch = src[end - 1];
1193
+
1194
+ while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) {
1195
+ ch = src[--end - 1];
1196
+ }
1197
+
1198
+ var str = '';
1199
+
1200
+ for (var i = start; i < end; ++i) {
1201
+ var _ch = src[i];
1202
+
1203
+ if (_ch === '\n') {
1204
+ var _Node$foldNewline = Node.foldNewline(src, i, -1),
1205
+ fold = _Node$foldNewline.fold,
1206
+ offset = _Node$foldNewline.offset;
1207
+
1208
+ str += fold;
1209
+ i = offset;
1210
+ } else if (_ch === ' ' || _ch === '\t') {
1211
+ // trim trailing whitespace
1212
+ var wsStart = i;
1213
+ var next = src[i + 1];
1214
+
1215
+ while (i < end && (next === ' ' || next === '\t')) {
1216
+ i += 1;
1217
+ next = src[i + 1];
1218
+ }
1219
+
1220
+ if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : _ch;
1221
+ } else {
1222
+ str += _ch;
1223
+ }
1224
+ }
1225
+
1226
+ var ch0 = src[start];
1227
+
1228
+ switch (ch0) {
1229
+ case '\t':
1230
+ {
1231
+ var msg = 'Plain value cannot start with a tab character';
1232
+ var errors = [new YAMLSemanticError(this, msg)];
1233
+ return {
1234
+ errors: errors,
1235
+ str: str
1236
+ };
1237
+ }
1238
+
1239
+ case '@':
1240
+ case '`':
1241
+ {
1242
+ var _msg = "Plain value cannot start with reserved character ".concat(ch0);
1243
+
1244
+ var _errors = [new YAMLSemanticError(this, _msg)];
1245
+ return {
1246
+ errors: _errors,
1247
+ str: str
1248
+ };
1249
+ }
1250
+
1251
+ default:
1252
+ return str;
1253
+ }
1254
+ }
1255
+ }], [{
1256
+ key: "endOfLine",
1257
+ value: function endOfLine(src, start, inFlow) {
1258
+ var ch = src[start];
1259
+ var offset = start;
1260
+
1261
+ while (ch && ch !== '\n') {
1262
+ if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;
1263
+ var next = src[offset + 1];
1264
+ if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break;
1265
+ if ((ch === ' ' || ch === '\t') && next === '#') break;
1266
+ offset += 1;
1267
+ ch = next;
1268
+ }
1269
+
1270
+ return offset;
1271
+ }
1272
+ }]);
1273
+
1274
+ return PlainValue;
1275
+ }(Node);
1276
+
1277
+ export { Char as C, Node as N, PlainValue as P, Range as R, Type as T, YAMLSyntaxError as Y, _createForOfIteratorHelper as _, _typeof as a, _createClass as b, _classCallCheck as c, defaultTagPrefix as d, _defineProperty as e, YAMLWarning as f, YAMLSemanticError as g, _slicedToArray as h, YAMLError as i, _inherits as j, _createSuper as k, _get as l, _getPrototypeOf as m, defaultTags as n, YAMLReferenceError as o, _assertThisInitialized as p, _toArray as q, _possibleConstructorReturn as r };