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
@@ -1,156 +0,0 @@
1
- "use strict";
2
-
3
- exports.PlainValue = void 0;
4
-
5
- var _Node = require("./Node");
6
-
7
- var _Range = require("./Range");
8
-
9
- class PlainValue extends _Node.Node {
10
- static endOfLine(src, start, inFlow) {
11
- let ch = src[start];
12
- let offset = start;
13
-
14
- while (ch && ch !== '\n') {
15
- if (inFlow && (ch === '[' || ch === ']' || ch === '{' || ch === '}' || ch === ',')) break;
16
- const next = src[offset + 1];
17
- if (ch === ':' && (!next || next === '\n' || next === '\t' || next === ' ' || inFlow && next === ',')) break;
18
- if ((ch === ' ' || ch === '\t') && next === '#') break;
19
- offset += 1;
20
- ch = next;
21
- }
22
-
23
- return offset;
24
- }
25
-
26
- get strValue() {
27
- if (!this.valueRange || !this.context) return null;
28
- let {
29
- start,
30
- end
31
- } = this.valueRange;
32
- const {
33
- src
34
- } = this.context;
35
- let ch = src[end - 1];
36
-
37
- while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[--end - 1];
38
-
39
- ch = src[start];
40
-
41
- while (start < end && (ch === '\n' || ch === '\t' || ch === ' ')) ch = src[++start];
42
-
43
- let str = '';
44
-
45
- for (let i = start; i < end; ++i) {
46
- const ch = src[i];
47
-
48
- if (ch === '\n') {
49
- const {
50
- fold,
51
- offset
52
- } = _Node.Node.foldNewline(src, i, -1);
53
-
54
- str += fold;
55
- i = offset;
56
- } else if (ch === ' ' || ch === '\t') {
57
- // trim trailing whitespace
58
- const wsStart = i;
59
- let next = src[i + 1];
60
-
61
- while (i < end && (next === ' ' || next === '\t')) {
62
- i += 1;
63
- next = src[i + 1];
64
- }
65
-
66
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
67
- } else {
68
- str += ch;
69
- }
70
- }
71
-
72
- return str;
73
- }
74
-
75
- parseBlockValue(start) {
76
- const {
77
- indent,
78
- inFlow,
79
- src
80
- } = this.context;
81
- let offset = start;
82
- let valueEnd = start;
83
-
84
- for (let ch = src[offset]; ch === '\n'; ch = src[offset]) {
85
- if (_Node.Node.atDocumentBoundary(src, offset + 1)) break;
86
-
87
- const end = _Node.Node.endOfBlockIndent(src, indent, offset + 1);
88
-
89
- if (end === null || src[end] === '#') break;
90
-
91
- if (src[end] === '\n') {
92
- offset = end;
93
- } else {
94
- valueEnd = PlainValue.endOfLine(src, end, inFlow);
95
- offset = valueEnd;
96
- }
97
- }
98
-
99
- if (this.valueRange.isEmpty()) this.valueRange.start = start;
100
- this.valueRange.end = valueEnd;
101
- return valueEnd;
102
- }
103
- /**
104
- * Parses a plain value from the source
105
- *
106
- * Accepted forms are:
107
- * ```
108
- * #comment
109
- *
110
- * first line
111
- *
112
- * first line #comment
113
- *
114
- * first line
115
- * block
116
- * lines
117
- *
118
- * #comment
119
- * block
120
- * lines
121
- * ```
122
- * where block lines are empty or have an indent level greater than `indent`.
123
- *
124
- * @param {ParseContext} context
125
- * @param {number} start - Index of first character
126
- * @returns {number} - Index of the character after this scalar, may be `\n`
127
- */
128
-
129
-
130
- parse(context, start) {
131
- this.context = context;
132
- const {
133
- inFlow,
134
- src
135
- } = context;
136
- let offset = start;
137
- const ch = src[offset];
138
-
139
- if (ch && ch !== '#' && ch !== '\n') {
140
- offset = PlainValue.endOfLine(src, start, inFlow);
141
- }
142
-
143
- this.valueRange = new _Range.Range(start, offset);
144
- offset = _Node.Node.endOfWhiteSpace(src, offset);
145
- offset = this.parseComment(offset);
146
-
147
- if (!this.hasComment || this.valueRange.isEmpty()) {
148
- offset = this.parseBlockValue(offset);
149
- }
150
-
151
- return offset;
152
- }
153
-
154
- }
155
-
156
- exports.PlainValue = PlainValue;
@@ -1,232 +0,0 @@
1
- "use strict";
2
-
3
- exports.QuoteDouble = void 0;
4
-
5
- var _errors = require("../errors");
6
-
7
- var _Node = require("./Node");
8
-
9
- var _Range = require("./Range");
10
-
11
- class QuoteDouble extends _Node.Node {
12
- static endOfQuote(src, offset) {
13
- let ch = src[offset];
14
-
15
- while (ch && ch !== '"') {
16
- offset += ch === '\\' ? 2 : 1;
17
- ch = src[offset];
18
- }
19
-
20
- return offset + 1;
21
- }
22
- /**
23
- * @returns {string | { str: string, errors: YAMLSyntaxError[] }}
24
- */
25
-
26
-
27
- get strValue() {
28
- if (!this.valueRange || !this.context) return null;
29
- const errors = [];
30
- const {
31
- start,
32
- end
33
- } = this.valueRange;
34
- const {
35
- indent,
36
- src
37
- } = this.context;
38
- if (src[end - 1] !== '"') errors.push(new _errors.YAMLSyntaxError(this, 'Missing closing "quote')); // Using String#replace is too painful with escaped newlines preceded by
39
- // escaped backslashes; also, this should be faster.
40
-
41
- let str = '';
42
-
43
- for (let i = start + 1; i < end - 1; ++i) {
44
- const ch = src[i];
45
-
46
- if (ch === '\n') {
47
- if (_Node.Node.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
48
-
49
- const {
50
- fold,
51
- offset,
52
- error
53
- } = _Node.Node.foldNewline(src, i, indent);
54
-
55
- str += fold;
56
- i = offset;
57
- if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line double-quoted string needs to be sufficiently indented'));
58
- } else if (ch === '\\') {
59
- i += 1;
60
-
61
- switch (src[i]) {
62
- case '0':
63
- str += '\0';
64
- break;
65
- // null character
66
-
67
- case 'a':
68
- str += '\x07';
69
- break;
70
- // bell character
71
-
72
- case 'b':
73
- str += '\b';
74
- break;
75
- // backspace
76
-
77
- case 'e':
78
- str += '\x1b';
79
- break;
80
- // escape character
81
-
82
- case 'f':
83
- str += '\f';
84
- break;
85
- // form feed
86
-
87
- case 'n':
88
- str += '\n';
89
- break;
90
- // line feed
91
-
92
- case 'r':
93
- str += '\r';
94
- break;
95
- // carriage return
96
-
97
- case 't':
98
- str += '\t';
99
- break;
100
- // horizontal tab
101
-
102
- case 'v':
103
- str += '\v';
104
- break;
105
- // vertical tab
106
-
107
- case 'N':
108
- str += '\u0085';
109
- break;
110
- // Unicode next line
111
-
112
- case '_':
113
- str += '\u00a0';
114
- break;
115
- // Unicode non-breaking space
116
-
117
- case 'L':
118
- str += '\u2028';
119
- break;
120
- // Unicode line separator
121
-
122
- case 'P':
123
- str += '\u2029';
124
- break;
125
- // Unicode paragraph separator
126
-
127
- case ' ':
128
- str += ' ';
129
- break;
130
-
131
- case '"':
132
- str += '"';
133
- break;
134
-
135
- case '/':
136
- str += '/';
137
- break;
138
-
139
- case '\\':
140
- str += '\\';
141
- break;
142
-
143
- case '\t':
144
- str += '\t';
145
- break;
146
-
147
- case 'x':
148
- str += this.parseCharCode(i + 1, 2, errors);
149
- i += 2;
150
- break;
151
-
152
- case 'u':
153
- str += this.parseCharCode(i + 1, 4, errors);
154
- i += 4;
155
- break;
156
-
157
- case 'U':
158
- str += this.parseCharCode(i + 1, 8, errors);
159
- i += 8;
160
- break;
161
-
162
- case '\n':
163
- // skip escaped newlines, but still trim the following line
164
- while (src[i + 1] === ' ' || src[i + 1] === '\t') i += 1;
165
-
166
- break;
167
-
168
- default:
169
- errors.push(new _errors.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(i - 1, 2)}`));
170
- str += '\\' + src[i];
171
- }
172
- } else if (ch === ' ' || ch === '\t') {
173
- // trim trailing whitespace
174
- const wsStart = i;
175
- let next = src[i + 1];
176
-
177
- while (next === ' ' || next === '\t') {
178
- i += 1;
179
- next = src[i + 1];
180
- }
181
-
182
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
183
- } else {
184
- str += ch;
185
- }
186
- }
187
-
188
- return errors.length > 0 ? {
189
- errors,
190
- str
191
- } : str;
192
- }
193
-
194
- parseCharCode(offset, length, errors) {
195
- const {
196
- src
197
- } = this.context;
198
- const cc = src.substr(offset, length);
199
- const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
200
- const code = ok ? parseInt(cc, 16) : NaN;
201
-
202
- if (isNaN(code)) {
203
- errors.push(new _errors.YAMLSyntaxError(this, `Invalid escape sequence ${src.substr(offset - 2, length + 2)}`));
204
- return src.substr(offset - 2, length + 2);
205
- }
206
-
207
- return String.fromCodePoint(code);
208
- }
209
- /**
210
- * Parses a "double quoted" value from the source
211
- *
212
- * @param {ParseContext} context
213
- * @param {number} start - Index of first character
214
- * @returns {number} - Index of the character after this scalar
215
- */
216
-
217
-
218
- parse(context, start) {
219
- this.context = context;
220
- const {
221
- src
222
- } = context;
223
- let offset = QuoteDouble.endOfQuote(src, start + 1);
224
- this.valueRange = new _Range.Range(start, offset);
225
- offset = _Node.Node.endOfWhiteSpace(src, offset);
226
- offset = this.parseComment(offset);
227
- return offset;
228
- }
229
-
230
- }
231
-
232
- exports.QuoteDouble = QuoteDouble;
@@ -1,108 +0,0 @@
1
- "use strict";
2
-
3
- exports.QuoteSingle = void 0;
4
-
5
- var _errors = require("../errors");
6
-
7
- var _Node = require("./Node");
8
-
9
- var _Range = require("./Range");
10
-
11
- class QuoteSingle extends _Node.Node {
12
- static endOfQuote(src, offset) {
13
- let ch = src[offset];
14
-
15
- while (ch) {
16
- if (ch === "'") {
17
- if (src[offset + 1] !== "'") break;
18
- ch = src[offset += 2];
19
- } else {
20
- ch = src[offset += 1];
21
- }
22
- }
23
-
24
- return offset + 1;
25
- }
26
- /**
27
- * @returns {string | { str: string, errors: YAMLSyntaxError[] }}
28
- */
29
-
30
-
31
- get strValue() {
32
- if (!this.valueRange || !this.context) return null;
33
- const errors = [];
34
- const {
35
- start,
36
- end
37
- } = this.valueRange;
38
- const {
39
- indent,
40
- src
41
- } = this.context;
42
- if (src[end - 1] !== "'") errors.push(new _errors.YAMLSyntaxError(this, "Missing closing 'quote"));
43
- let str = '';
44
-
45
- for (let i = start + 1; i < end - 1; ++i) {
46
- const ch = src[i];
47
-
48
- if (ch === '\n') {
49
- if (_Node.Node.atDocumentBoundary(src, i + 1)) errors.push(new _errors.YAMLSemanticError(this, 'Document boundary indicators are not allowed within string values'));
50
-
51
- const {
52
- fold,
53
- offset,
54
- error
55
- } = _Node.Node.foldNewline(src, i, indent);
56
-
57
- str += fold;
58
- i = offset;
59
- if (error) errors.push(new _errors.YAMLSemanticError(this, 'Multi-line single-quoted string needs to be sufficiently indented'));
60
- } else if (ch === "'") {
61
- str += ch;
62
- i += 1;
63
- if (src[i] !== "'") errors.push(new _errors.YAMLSyntaxError(this, 'Unescaped single quote? This should not happen.'));
64
- } else if (ch === ' ' || ch === '\t') {
65
- // trim trailing whitespace
66
- const wsStart = i;
67
- let next = src[i + 1];
68
-
69
- while (next === ' ' || next === '\t') {
70
- i += 1;
71
- next = src[i + 1];
72
- }
73
-
74
- if (next !== '\n') str += i > wsStart ? src.slice(wsStart, i + 1) : ch;
75
- } else {
76
- str += ch;
77
- }
78
- }
79
-
80
- return errors.length > 0 ? {
81
- errors,
82
- str
83
- } : str;
84
- }
85
- /**
86
- * Parses a 'single quoted' value from the source
87
- *
88
- * @param {ParseContext} context
89
- * @param {number} start - Index of first character
90
- * @returns {number} - Index of the character after this scalar
91
- */
92
-
93
-
94
- parse(context, start) {
95
- this.context = context;
96
- const {
97
- src
98
- } = context;
99
- let offset = QuoteSingle.endOfQuote(src, start + 1);
100
- this.valueRange = new _Range.Range(start, offset);
101
- offset = _Node.Node.endOfWhiteSpace(src, offset);
102
- offset = this.parseComment(offset);
103
- return offset;
104
- }
105
-
106
- }
107
-
108
- exports.QuoteSingle = QuoteSingle;
package/dist/cst/Range.js DELETED
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- exports.Range = void 0;
4
-
5
- class Range {
6
- static copy(orig) {
7
- return new Range(orig.start, orig.end);
8
- }
9
-
10
- constructor(start, end) {
11
- this.start = start;
12
- this.end = end || start;
13
- }
14
-
15
- isEmpty() {
16
- return typeof this.start !== 'number' || !this.end || this.end <= this.start;
17
- }
18
- /**
19
- * Set `origStart` and `origEnd` to point to the original source range for
20
- * this node, which may differ due to dropped CR characters.
21
- *
22
- * @param {number[]} cr - Positions of dropped CR characters
23
- * @param {number} offset - Starting index of `cr` from the last call
24
- * @returns {number} - The next offset, matching the one found for `origStart`
25
- */
26
-
27
-
28
- setOrigRange(cr, offset) {
29
- const {
30
- start,
31
- end
32
- } = this;
33
-
34
- if (cr.length === 0 || end <= cr[0]) {
35
- this.origStart = start;
36
- this.origEnd = end;
37
- return offset;
38
- }
39
-
40
- let i = offset;
41
-
42
- while (i < cr.length) {
43
- if (cr[i] > start) break;else ++i;
44
- }
45
-
46
- this.origStart = start + i;
47
- const nextOffset = i;
48
-
49
- while (i < cr.length) {
50
- // if end was at \n, it should now be at \r
51
- if (cr[i] >= end) break;else ++i;
52
- }
53
-
54
- this.origEnd = end + i;
55
- return nextOffset;
56
- }
57
-
58
- }
59
-
60
- exports.Range = Range;
package/dist/cst/parse.js DELETED
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- exports.parse = parse;
4
-
5
- var _Document = require("./Document");
6
-
7
- var _ParseContext = require("./ParseContext");
8
-
9
- // Published as 'yaml/parse-cst'
10
- function parse(src) {
11
- const cr = [];
12
-
13
- if (src.indexOf('\r') !== -1) {
14
- src = src.replace(/\r\n?/g, (match, offset) => {
15
- if (match.length > 1) cr.push(offset);
16
- return '\n';
17
- });
18
- }
19
-
20
- const documents = [];
21
- let offset = 0;
22
-
23
- do {
24
- const doc = new _Document.Document();
25
- const context = new _ParseContext.ParseContext({
26
- src
27
- });
28
- offset = doc.parse(context, offset);
29
- documents.push(doc);
30
- } while (offset < src.length);
31
-
32
- documents.setOrigRanges = () => {
33
- if (cr.length === 0) return false;
34
-
35
- for (let i = 1; i < cr.length; ++i) cr[i] -= i;
36
-
37
- let crOffset = 0;
38
-
39
- for (let i = 0; i < documents.length; ++i) {
40
- crOffset = documents[i].setOrigRanges(cr, crOffset);
41
- }
42
-
43
- cr.splice(0, cr.length);
44
- return true;
45
- };
46
-
47
- documents.toString = () => documents.join('...\n');
48
-
49
- return documents;
50
- }