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