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,218 +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 _BlankLine = _interopRequireDefault(require("./BlankLine"));
13
-
14
- var _Comment = _interopRequireDefault(require("./Comment"));
15
-
16
- var _Node = _interopRequireDefault(require("./Node"));
17
-
18
- var _Range = _interopRequireDefault(require("./Range"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- class FlowCollection extends _Node.default {
23
- constructor(type, props) {
24
- super(type, props);
25
- this.items = null;
26
- }
27
-
28
- prevNodeIsJsonLike(idx = this.items.length) {
29
- const node = this.items[idx - 1];
30
- return !!node && (node.jsonLike || node.type === _constants.Type.COMMENT && this.nodeIsJsonLike(idx - 1));
31
- }
32
- /**
33
- * @param {ParseContext} context
34
- * @param {number} start - Index of first character
35
- * @returns {number} - Index of the character after this
36
- */
37
-
38
-
39
- parse(context, start) {
40
- this.context = context;
41
- const {
42
- parseNode,
43
- src
44
- } = context;
45
- let {
46
- indent,
47
- lineStart
48
- } = context;
49
- let char = src[start]; // { or [
50
-
51
- this.items = [{
52
- char,
53
- offset: start
54
- }];
55
-
56
- let offset = _Node.default.endOfWhiteSpace(src, start + 1);
57
-
58
- char = src[offset];
59
-
60
- while (char && char !== ']' && char !== '}') {
61
- switch (char) {
62
- case '\n':
63
- {
64
- lineStart = offset + 1;
65
-
66
- const wsEnd = _Node.default.endOfWhiteSpace(src, lineStart);
67
-
68
- if (src[wsEnd] === '\n') {
69
- const blankLine = new _BlankLine.default();
70
- lineStart = blankLine.parse({
71
- src
72
- }, lineStart);
73
- this.items.push(blankLine);
74
- }
75
-
76
- offset = _Node.default.endOfIndent(src, lineStart);
77
-
78
- if (offset <= lineStart + indent) {
79
- char = src[offset];
80
-
81
- if (offset < lineStart + indent || char !== ']' && char !== '}') {
82
- const msg = 'Insufficient indentation in flow collection';
83
- this.error = new _errors.YAMLSemanticError(this, msg);
84
- }
85
- }
86
- }
87
- break;
88
-
89
- case ',':
90
- {
91
- this.items.push({
92
- char,
93
- offset
94
- });
95
- offset += 1;
96
- }
97
- break;
98
-
99
- case '#':
100
- {
101
- const comment = new _Comment.default();
102
- offset = comment.parse({
103
- src
104
- }, offset);
105
- this.items.push(comment);
106
- }
107
- break;
108
-
109
- case '?':
110
- case ':':
111
- {
112
- const next = src[offset + 1];
113
-
114
- if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace
115
- char === ':' && this.prevNodeIsJsonLike()) {
116
- this.items.push({
117
- char,
118
- offset
119
- });
120
- offset += 1;
121
- break;
122
- }
123
- }
124
- // fallthrough
125
-
126
- default:
127
- {
128
- const node = parseNode({
129
- atLineStart: false,
130
- inCollection: false,
131
- inFlow: true,
132
- indent: -1,
133
- lineStart,
134
- parent: this
135
- }, offset);
136
-
137
- if (!node) {
138
- // at next document start
139
- this.valueRange = new _Range.default(start, offset);
140
- return offset;
141
- }
142
-
143
- this.items.push(node);
144
- offset = _Node.default.normalizeOffset(src, node.range.end);
145
- }
146
- }
147
-
148
- offset = _Node.default.endOfWhiteSpace(src, offset);
149
- char = src[offset];
150
- }
151
-
152
- this.valueRange = new _Range.default(start, offset + 1);
153
-
154
- if (char) {
155
- this.items.push({
156
- char,
157
- offset
158
- });
159
- offset = _Node.default.endOfWhiteSpace(src, offset + 1);
160
- offset = this.parseComment(offset);
161
- }
162
-
163
- return offset;
164
- }
165
-
166
- setOrigRanges(cr, offset) {
167
- offset = super.setOrigRanges(cr, offset);
168
- this.items.forEach(node => {
169
- if (node instanceof _Node.default) {
170
- offset = node.setOrigRanges(cr, offset);
171
- } else if (cr.length === 0) {
172
- node.origOffset = node.offset;
173
- } else {
174
- let i = offset;
175
-
176
- while (i < cr.length) {
177
- if (cr[i] > node.offset) break;else ++i;
178
- }
179
-
180
- node.origOffset = node.offset + i;
181
- offset = i;
182
- }
183
- });
184
- return offset;
185
- }
186
-
187
- toString() {
188
- const {
189
- context: {
190
- src
191
- },
192
- items,
193
- range,
194
- value
195
- } = this;
196
- if (value != null) return value;
197
- const nodes = items.filter(item => item instanceof _Node.default);
198
- let str = '';
199
- let prevEnd = range.start;
200
- nodes.forEach(node => {
201
- const prefix = src.slice(prevEnd, node.range.start);
202
- prevEnd = node.range.end;
203
- str += prefix + String(node);
204
-
205
- if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') {
206
- // Comment range does not include the terminal newline, but its
207
- // stringified value does. Without this fix, newlines at comment ends
208
- // get duplicated.
209
- prevEnd += 1;
210
- }
211
- });
212
- str += src.slice(prevEnd, range.end);
213
- return _Node.default.addStringTerminator(src, range.end, str);
214
- }
215
-
216
- }
217
-
218
- exports.default = FlowCollection;
package/dist/cst/Node.js DELETED
@@ -1,365 +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 _sourceUtils = require("./source-utils");
11
-
12
- var _Range = _interopRequireDefault(require("./Range"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
- /** Root class of all nodes */
17
- class Node {
18
- static addStringTerminator(src, offset, str) {
19
- if (str[str.length - 1] === '\n') return str;
20
- const next = Node.endOfWhiteSpace(src, offset);
21
- return next >= src.length || src[next] === '\n' ? str + '\n' : str;
22
- } // ^(---|...)
23
-
24
-
25
- static atDocumentBoundary(src, offset, sep) {
26
- const ch0 = src[offset];
27
- if (!ch0) return true;
28
- const prev = src[offset - 1];
29
- if (prev && prev !== '\n') return false;
30
-
31
- if (sep) {
32
- if (ch0 !== sep) return false;
33
- } else {
34
- if (ch0 !== _constants.Char.DIRECTIVES_END && ch0 !== _constants.Char.DOCUMENT_END) return false;
35
- }
36
-
37
- const ch1 = src[offset + 1];
38
- const ch2 = src[offset + 2];
39
- if (ch1 !== ch0 || ch2 !== ch0) return false;
40
- const ch3 = src[offset + 3];
41
- return !ch3 || ch3 === '\n' || ch3 === '\t' || ch3 === ' ';
42
- }
43
-
44
- static endOfIdentifier(src, offset) {
45
- let ch = src[offset];
46
- const isVerbatim = ch === '<';
47
- const notOk = isVerbatim ? ['\n', '\t', ' ', '>'] : ['\n', '\t', ' ', '[', ']', '{', '}', ','];
48
-
49
- while (ch && notOk.indexOf(ch) === -1) ch = src[offset += 1];
50
-
51
- if (isVerbatim && ch === '>') offset += 1;
52
- return offset;
53
- }
54
-
55
- static endOfIndent(src, offset) {
56
- let ch = src[offset];
57
-
58
- while (ch === ' ') ch = src[offset += 1];
59
-
60
- return offset;
61
- }
62
-
63
- static endOfLine(src, offset) {
64
- let ch = src[offset];
65
-
66
- while (ch && ch !== '\n') ch = src[offset += 1];
67
-
68
- return offset;
69
- }
70
-
71
- static endOfWhiteSpace(src, offset) {
72
- let ch = src[offset];
73
-
74
- while (ch === '\t' || ch === ' ') ch = src[offset += 1];
75
-
76
- return offset;
77
- }
78
-
79
- static startOfLine(src, offset) {
80
- let ch = src[offset - 1];
81
- if (ch === '\n') return offset;
82
-
83
- while (ch && ch !== '\n') ch = src[offset -= 1];
84
-
85
- return offset + 1;
86
- }
87
- /**
88
- * End of indentation, or null if the line's indent level is not more
89
- * than `indent`
90
- *
91
- * @param {string} src
92
- * @param {number} indent
93
- * @param {number} lineStart
94
- * @returns {?number}
95
- */
96
-
97
-
98
- static endOfBlockIndent(src, indent, lineStart) {
99
- const inEnd = Node.endOfIndent(src, lineStart);
100
-
101
- if (inEnd > lineStart + indent) {
102
- return inEnd;
103
- } else {
104
- const wsEnd = Node.endOfWhiteSpace(src, inEnd);
105
- const ch = src[wsEnd];
106
- if (!ch || ch === '\n') return wsEnd;
107
- }
108
-
109
- return null;
110
- }
111
-
112
- static atBlank(src, offset, endAsBlank) {
113
- const ch = src[offset];
114
- return ch === '\n' || ch === '\t' || ch === ' ' || endAsBlank && !ch;
115
- }
116
-
117
- static nextNodeIsIndented(ch, indentDiff, indicatorAsIndent) {
118
- if (!ch || indentDiff < 0) return false;
119
- if (indentDiff > 0) return true;
120
- return indicatorAsIndent && ch === '-';
121
- } // should be at line or string end, or at next non-whitespace char
122
-
123
-
124
- static normalizeOffset(src, offset) {
125
- const ch = src[offset];
126
- return !ch ? offset : ch !== '\n' && src[offset - 1] === '\n' ? offset - 1 : Node.endOfWhiteSpace(src, offset);
127
- } // fold single newline into space, multiple newlines to N - 1 newlines
128
- // presumes src[offset] === '\n'
129
-
130
-
131
- static foldNewline(src, offset, indent) {
132
- let inCount = 0;
133
- let error = false;
134
- let fold = '';
135
- let ch = src[offset + 1];
136
-
137
- while (ch === ' ' || ch === '\t' || ch === '\n') {
138
- switch (ch) {
139
- case '\n':
140
- inCount = 0;
141
- offset += 1;
142
- fold += '\n';
143
- break;
144
-
145
- case '\t':
146
- if (inCount <= indent) error = true;
147
- offset = Node.endOfWhiteSpace(src, offset + 2) - 1;
148
- break;
149
-
150
- case ' ':
151
- inCount += 1;
152
- offset += 1;
153
- break;
154
- }
155
-
156
- ch = src[offset + 1];
157
- }
158
-
159
- if (!fold) fold = ' ';
160
- if (ch && inCount <= indent) error = true;
161
- return {
162
- fold,
163
- offset,
164
- error
165
- };
166
- }
167
-
168
- constructor(type, props, context) {
169
- Object.defineProperty(this, 'context', {
170
- value: context || null,
171
- writable: true
172
- });
173
- this.error = null;
174
- this.range = null;
175
- this.valueRange = null;
176
- this.props = props || [];
177
- this.type = type;
178
- this.value = null;
179
- }
180
-
181
- getPropValue(idx, key, skipKey) {
182
- if (!this.context) return null;
183
- const {
184
- src
185
- } = this.context;
186
- const prop = this.props[idx];
187
- return prop && src[prop.start] === key ? src.slice(prop.start + (skipKey ? 1 : 0), prop.end) : null;
188
- }
189
-
190
- get anchor() {
191
- for (let i = 0; i < this.props.length; ++i) {
192
- const anchor = this.getPropValue(i, _constants.Char.ANCHOR, true);
193
- if (anchor != null) return anchor;
194
- }
195
-
196
- return null;
197
- }
198
-
199
- get comment() {
200
- const comments = [];
201
-
202
- for (let i = 0; i < this.props.length; ++i) {
203
- const comment = this.getPropValue(i, _constants.Char.COMMENT, true);
204
- if (comment != null) comments.push(comment);
205
- }
206
-
207
- return comments.length > 0 ? comments.join('\n') : null;
208
- }
209
-
210
- commentHasRequiredWhitespace(start) {
211
- const {
212
- src
213
- } = this.context;
214
- if (this.header && start === this.header.end) return false;
215
- if (!this.valueRange) return false;
216
- const {
217
- end
218
- } = this.valueRange;
219
- return start !== end || Node.atBlank(src, end - 1);
220
- }
221
-
222
- get hasComment() {
223
- if (this.context) {
224
- const {
225
- src
226
- } = this.context;
227
-
228
- for (let i = 0; i < this.props.length; ++i) {
229
- if (src[this.props[i].start] === _constants.Char.COMMENT) return true;
230
- }
231
- }
232
-
233
- return false;
234
- }
235
-
236
- get hasProps() {
237
- if (this.context) {
238
- const {
239
- src
240
- } = this.context;
241
-
242
- for (let i = 0; i < this.props.length; ++i) {
243
- if (src[this.props[i].start] !== _constants.Char.COMMENT) return true;
244
- }
245
- }
246
-
247
- return false;
248
- }
249
-
250
- get includesTrailingLines() {
251
- return false;
252
- }
253
-
254
- get jsonLike() {
255
- const jsonLikeTypes = [_constants.Type.FLOW_MAP, _constants.Type.FLOW_SEQ, _constants.Type.QUOTE_DOUBLE, _constants.Type.QUOTE_SINGLE];
256
- return jsonLikeTypes.indexOf(this.type) !== -1;
257
- }
258
-
259
- get rangeAsLinePos() {
260
- if (!this.range || !this.context) return undefined;
261
- const start = (0, _sourceUtils.getLinePos)(this.range.start, this.context.root);
262
- if (!start) return undefined;
263
- const end = (0, _sourceUtils.getLinePos)(this.range.end, this.context.root);
264
- return {
265
- start,
266
- end
267
- };
268
- }
269
-
270
- get rawValue() {
271
- if (!this.valueRange || !this.context) return null;
272
- const {
273
- start,
274
- end
275
- } = this.valueRange;
276
- return this.context.src.slice(start, end);
277
- }
278
-
279
- get tag() {
280
- for (let i = 0; i < this.props.length; ++i) {
281
- const tag = this.getPropValue(i, _constants.Char.TAG, false);
282
-
283
- if (tag != null) {
284
- if (tag[1] === '<') {
285
- return {
286
- verbatim: tag.slice(2, -1)
287
- };
288
- } else {
289
- // eslint-disable-next-line no-unused-vars
290
- const [_, handle, suffix] = tag.match(/^(.*!)([^!]*)$/);
291
- return {
292
- handle,
293
- suffix
294
- };
295
- }
296
- }
297
- }
298
-
299
- return null;
300
- }
301
-
302
- get valueRangeContainsNewline() {
303
- if (!this.valueRange || !this.context) return false;
304
- const {
305
- start,
306
- end
307
- } = this.valueRange;
308
- const {
309
- src
310
- } = this.context;
311
-
312
- for (let i = start; i < end; ++i) {
313
- if (src[i] === '\n') return true;
314
- }
315
-
316
- return false;
317
- }
318
-
319
- parseComment(start) {
320
- const {
321
- src
322
- } = this.context;
323
-
324
- if (src[start] === _constants.Char.COMMENT) {
325
- const end = Node.endOfLine(src, start + 1);
326
- const commentRange = new _Range.default(start, end);
327
- this.props.push(commentRange);
328
- return end;
329
- }
330
-
331
- return start;
332
- }
333
- /**
334
- * Populates the `origStart` and `origEnd` values of all ranges for this
335
- * node. Extended by child classes to handle descendant nodes.
336
- *
337
- * @param {number[]} cr - Positions of dropped CR characters
338
- * @param {number} offset - Starting index of `cr` from the last call
339
- * @returns {number} - The next offset, matching the one found for `origStart`
340
- */
341
-
342
-
343
- setOrigRanges(cr, offset) {
344
- if (this.range) offset = this.range.setOrigRange(cr, offset);
345
- if (this.valueRange) this.valueRange.setOrigRange(cr, offset);
346
- this.props.forEach(prop => prop.setOrigRange(cr, offset));
347
- return offset;
348
- }
349
-
350
- toString() {
351
- const {
352
- context: {
353
- src
354
- },
355
- range,
356
- value
357
- } = this;
358
- if (value != null) return value;
359
- const str = src.slice(range.start, range.end);
360
- return Node.addStringTerminator(src, range.end, str);
361
- }
362
-
363
- }
364
-
365
- exports.default = Node;