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
@@ -0,0 +1,522 @@
1
+ 'use strict';
2
+
3
+ var PlainValue = require('./PlainValue-ec8e588e.js');
4
+ var resolveSeq = require('./resolveSeq-4a68b39b.js');
5
+ var warnings = require('./warnings-39684f17.js');
6
+
7
+ function createMap(schema, obj, ctx) {
8
+ const map = new resolveSeq.YAMLMap(schema);
9
+
10
+ if (obj instanceof Map) {
11
+ for (const [key, value] of obj) map.items.push(schema.createPair(key, value, ctx));
12
+ } else if (obj && typeof obj === 'object') {
13
+ for (const key of Object.keys(obj)) map.items.push(schema.createPair(key, obj[key], ctx));
14
+ }
15
+
16
+ if (typeof schema.sortMapEntries === 'function') {
17
+ map.items.sort(schema.sortMapEntries);
18
+ }
19
+
20
+ return map;
21
+ }
22
+
23
+ const map = {
24
+ createNode: createMap,
25
+ default: true,
26
+ nodeClass: resolveSeq.YAMLMap,
27
+ tag: 'tag:yaml.org,2002:map',
28
+ resolve: resolveSeq.resolveMap
29
+ };
30
+
31
+ function createSeq(schema, obj, ctx) {
32
+ const seq = new resolveSeq.YAMLSeq(schema);
33
+
34
+ if (obj && obj[Symbol.iterator]) {
35
+ for (const it of obj) {
36
+ const v = schema.createNode(it, ctx.wrapScalars, null, ctx);
37
+ seq.items.push(v);
38
+ }
39
+ }
40
+
41
+ return seq;
42
+ }
43
+
44
+ const seq = {
45
+ createNode: createSeq,
46
+ default: true,
47
+ nodeClass: resolveSeq.YAMLSeq,
48
+ tag: 'tag:yaml.org,2002:seq',
49
+ resolve: resolveSeq.resolveSeq
50
+ };
51
+
52
+ const string = {
53
+ identify: value => typeof value === 'string',
54
+ default: true,
55
+ tag: 'tag:yaml.org,2002:str',
56
+ resolve: resolveSeq.resolveString,
57
+
58
+ stringify(item, ctx, onComment, onChompKeep) {
59
+ ctx = Object.assign({
60
+ actualString: true
61
+ }, ctx);
62
+ return resolveSeq.stringifyString(item, ctx, onComment, onChompKeep);
63
+ },
64
+
65
+ options: resolveSeq.strOptions
66
+ };
67
+
68
+ const failsafe = [map, seq, string];
69
+
70
+ /* global BigInt */
71
+
72
+ const intIdentify = value => typeof value === 'bigint' || Number.isInteger(value);
73
+
74
+ const intResolve = (src, part, radix) => resolveSeq.intOptions.asBigInt ? BigInt(src) : parseInt(part, radix);
75
+
76
+ function intStringify(node, radix, prefix) {
77
+ const {
78
+ value
79
+ } = node;
80
+ if (intIdentify(value) && value >= 0) return prefix + value.toString(radix);
81
+ return resolveSeq.stringifyNumber(node);
82
+ }
83
+
84
+ const nullObj = {
85
+ identify: value => value == null,
86
+ createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null,
87
+ default: true,
88
+ tag: 'tag:yaml.org,2002:null',
89
+ test: /^(?:~|[Nn]ull|NULL)?$/,
90
+ resolve: () => null,
91
+ options: resolveSeq.nullOptions,
92
+ stringify: () => resolveSeq.nullOptions.nullStr
93
+ };
94
+ const boolObj = {
95
+ identify: value => typeof value === 'boolean',
96
+ default: true,
97
+ tag: 'tag:yaml.org,2002:bool',
98
+ test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
99
+ resolve: str => str[0] === 't' || str[0] === 'T',
100
+ options: resolveSeq.boolOptions,
101
+ stringify: ({
102
+ value
103
+ }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr
104
+ };
105
+ const octObj = {
106
+ identify: value => intIdentify(value) && value >= 0,
107
+ default: true,
108
+ tag: 'tag:yaml.org,2002:int',
109
+ format: 'OCT',
110
+ test: /^0o([0-7]+)$/,
111
+ resolve: (str, oct) => intResolve(str, oct, 8),
112
+ options: resolveSeq.intOptions,
113
+ stringify: node => intStringify(node, 8, '0o')
114
+ };
115
+ const intObj = {
116
+ identify: intIdentify,
117
+ default: true,
118
+ tag: 'tag:yaml.org,2002:int',
119
+ test: /^[-+]?[0-9]+$/,
120
+ resolve: str => intResolve(str, str, 10),
121
+ options: resolveSeq.intOptions,
122
+ stringify: resolveSeq.stringifyNumber
123
+ };
124
+ const hexObj = {
125
+ identify: value => intIdentify(value) && value >= 0,
126
+ default: true,
127
+ tag: 'tag:yaml.org,2002:int',
128
+ format: 'HEX',
129
+ test: /^0x([0-9a-fA-F]+)$/,
130
+ resolve: (str, hex) => intResolve(str, hex, 16),
131
+ options: resolveSeq.intOptions,
132
+ stringify: node => intStringify(node, 16, '0x')
133
+ };
134
+ const nanObj = {
135
+ identify: value => typeof value === 'number',
136
+ default: true,
137
+ tag: 'tag:yaml.org,2002:float',
138
+ test: /^(?:[-+]?\.inf|(\.nan))$/i,
139
+ resolve: (str, nan) => nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
140
+ stringify: resolveSeq.stringifyNumber
141
+ };
142
+ const expObj = {
143
+ identify: value => typeof value === 'number',
144
+ default: true,
145
+ tag: 'tag:yaml.org,2002:float',
146
+ format: 'EXP',
147
+ test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,
148
+ resolve: str => parseFloat(str),
149
+ stringify: ({
150
+ value
151
+ }) => Number(value).toExponential()
152
+ };
153
+ const floatObj = {
154
+ identify: value => typeof value === 'number',
155
+ default: true,
156
+ tag: 'tag:yaml.org,2002:float',
157
+ test: /^[-+]?(?:\.([0-9]+)|[0-9]+\.([0-9]*))$/,
158
+
159
+ resolve(str, frac1, frac2) {
160
+ const frac = frac1 || frac2;
161
+ const node = new resolveSeq.Scalar(parseFloat(str));
162
+ if (frac && frac[frac.length - 1] === '0') node.minFractionDigits = frac.length;
163
+ return node;
164
+ },
165
+
166
+ stringify: resolveSeq.stringifyNumber
167
+ };
168
+ const core = failsafe.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]);
169
+
170
+ /* global BigInt */
171
+
172
+ const intIdentify$1 = value => typeof value === 'bigint' || Number.isInteger(value);
173
+
174
+ const stringifyJSON = ({
175
+ value
176
+ }) => JSON.stringify(value);
177
+
178
+ const json = [map, seq, {
179
+ identify: value => typeof value === 'string',
180
+ default: true,
181
+ tag: 'tag:yaml.org,2002:str',
182
+ resolve: resolveSeq.resolveString,
183
+ stringify: stringifyJSON
184
+ }, {
185
+ identify: value => value == null,
186
+ createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null,
187
+ default: true,
188
+ tag: 'tag:yaml.org,2002:null',
189
+ test: /^null$/,
190
+ resolve: () => null,
191
+ stringify: stringifyJSON
192
+ }, {
193
+ identify: value => typeof value === 'boolean',
194
+ default: true,
195
+ tag: 'tag:yaml.org,2002:bool',
196
+ test: /^true|false$/,
197
+ resolve: str => str === 'true',
198
+ stringify: stringifyJSON
199
+ }, {
200
+ identify: intIdentify$1,
201
+ default: true,
202
+ tag: 'tag:yaml.org,2002:int',
203
+ test: /^-?(?:0|[1-9][0-9]*)$/,
204
+ resolve: str => resolveSeq.intOptions.asBigInt ? BigInt(str) : parseInt(str, 10),
205
+ stringify: ({
206
+ value
207
+ }) => intIdentify$1(value) ? value.toString() : JSON.stringify(value)
208
+ }, {
209
+ identify: value => typeof value === 'number',
210
+ default: true,
211
+ tag: 'tag:yaml.org,2002:float',
212
+ test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
213
+ resolve: str => parseFloat(str),
214
+ stringify: stringifyJSON
215
+ }];
216
+
217
+ json.scalarFallback = str => {
218
+ throw new SyntaxError(`Unresolved plain scalar ${JSON.stringify(str)}`);
219
+ };
220
+
221
+ /* global BigInt */
222
+
223
+ const boolStringify = ({
224
+ value
225
+ }) => value ? resolveSeq.boolOptions.trueStr : resolveSeq.boolOptions.falseStr;
226
+
227
+ const intIdentify$2 = value => typeof value === 'bigint' || Number.isInteger(value);
228
+
229
+ function intResolve$1(sign, src, radix) {
230
+ let str = src.replace(/_/g, '');
231
+
232
+ if (resolveSeq.intOptions.asBigInt) {
233
+ switch (radix) {
234
+ case 2:
235
+ str = `0b${str}`;
236
+ break;
237
+
238
+ case 8:
239
+ str = `0o${str}`;
240
+ break;
241
+
242
+ case 16:
243
+ str = `0x${str}`;
244
+ break;
245
+ }
246
+
247
+ const n = BigInt(str);
248
+ return sign === '-' ? BigInt(-1) * n : n;
249
+ }
250
+
251
+ const n = parseInt(str, radix);
252
+ return sign === '-' ? -1 * n : n;
253
+ }
254
+
255
+ function intStringify$1(node, radix, prefix) {
256
+ const {
257
+ value
258
+ } = node;
259
+
260
+ if (intIdentify$2(value)) {
261
+ const str = value.toString(radix);
262
+ return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;
263
+ }
264
+
265
+ return resolveSeq.stringifyNumber(node);
266
+ }
267
+
268
+ const yaml11 = failsafe.concat([{
269
+ identify: value => value == null,
270
+ createNode: (schema, value, ctx) => ctx.wrapScalars ? new resolveSeq.Scalar(null) : null,
271
+ default: true,
272
+ tag: 'tag:yaml.org,2002:null',
273
+ test: /^(?:~|[Nn]ull|NULL)?$/,
274
+ resolve: () => null,
275
+ options: resolveSeq.nullOptions,
276
+ stringify: () => resolveSeq.nullOptions.nullStr
277
+ }, {
278
+ identify: value => typeof value === 'boolean',
279
+ default: true,
280
+ tag: 'tag:yaml.org,2002:bool',
281
+ test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
282
+ resolve: () => true,
283
+ options: resolveSeq.boolOptions,
284
+ stringify: boolStringify
285
+ }, {
286
+ identify: value => typeof value === 'boolean',
287
+ default: true,
288
+ tag: 'tag:yaml.org,2002:bool',
289
+ test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,
290
+ resolve: () => false,
291
+ options: resolveSeq.boolOptions,
292
+ stringify: boolStringify
293
+ }, {
294
+ identify: intIdentify$2,
295
+ default: true,
296
+ tag: 'tag:yaml.org,2002:int',
297
+ format: 'BIN',
298
+ test: /^([-+]?)0b([0-1_]+)$/,
299
+ resolve: (str, sign, bin) => intResolve$1(sign, bin, 2),
300
+ stringify: node => intStringify$1(node, 2, '0b')
301
+ }, {
302
+ identify: intIdentify$2,
303
+ default: true,
304
+ tag: 'tag:yaml.org,2002:int',
305
+ format: 'OCT',
306
+ test: /^([-+]?)0([0-7_]+)$/,
307
+ resolve: (str, sign, oct) => intResolve$1(sign, oct, 8),
308
+ stringify: node => intStringify$1(node, 8, '0')
309
+ }, {
310
+ identify: intIdentify$2,
311
+ default: true,
312
+ tag: 'tag:yaml.org,2002:int',
313
+ test: /^([-+]?)([0-9][0-9_]*)$/,
314
+ resolve: (str, sign, abs) => intResolve$1(sign, abs, 10),
315
+ stringify: resolveSeq.stringifyNumber
316
+ }, {
317
+ identify: intIdentify$2,
318
+ default: true,
319
+ tag: 'tag:yaml.org,2002:int',
320
+ format: 'HEX',
321
+ test: /^([-+]?)0x([0-9a-fA-F_]+)$/,
322
+ resolve: (str, sign, hex) => intResolve$1(sign, hex, 16),
323
+ stringify: node => intStringify$1(node, 16, '0x')
324
+ }, {
325
+ identify: value => typeof value === 'number',
326
+ default: true,
327
+ tag: 'tag:yaml.org,2002:float',
328
+ test: /^(?:[-+]?\.inf|(\.nan))$/i,
329
+ resolve: (str, nan) => nan ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
330
+ stringify: resolveSeq.stringifyNumber
331
+ }, {
332
+ identify: value => typeof value === 'number',
333
+ default: true,
334
+ tag: 'tag:yaml.org,2002:float',
335
+ format: 'EXP',
336
+ test: /^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/,
337
+ resolve: str => parseFloat(str.replace(/_/g, '')),
338
+ stringify: ({
339
+ value
340
+ }) => Number(value).toExponential()
341
+ }, {
342
+ identify: value => typeof value === 'number',
343
+ default: true,
344
+ tag: 'tag:yaml.org,2002:float',
345
+ test: /^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/,
346
+
347
+ resolve(str, frac) {
348
+ const node = new resolveSeq.Scalar(parseFloat(str.replace(/_/g, '')));
349
+
350
+ if (frac) {
351
+ const f = frac.replace(/_/g, '');
352
+ if (f[f.length - 1] === '0') node.minFractionDigits = f.length;
353
+ }
354
+
355
+ return node;
356
+ },
357
+
358
+ stringify: resolveSeq.stringifyNumber
359
+ }], warnings.binary, warnings.omap, warnings.pairs, warnings.set, warnings.intTime, warnings.floatTime, warnings.timestamp);
360
+
361
+ const schemas = {
362
+ core,
363
+ failsafe,
364
+ json,
365
+ yaml11
366
+ };
367
+ const tags = {
368
+ binary: warnings.binary,
369
+ bool: boolObj,
370
+ float: floatObj,
371
+ floatExp: expObj,
372
+ floatNaN: nanObj,
373
+ floatTime: warnings.floatTime,
374
+ int: intObj,
375
+ intHex: hexObj,
376
+ intOct: octObj,
377
+ intTime: warnings.intTime,
378
+ map,
379
+ null: nullObj,
380
+ omap: warnings.omap,
381
+ pairs: warnings.pairs,
382
+ seq,
383
+ set: warnings.set,
384
+ timestamp: warnings.timestamp
385
+ };
386
+
387
+ function findTagObject(value, tagName, tags) {
388
+ if (tagName) {
389
+ const match = tags.filter(t => t.tag === tagName);
390
+ const tagObj = match.find(t => !t.format) || match[0];
391
+ if (!tagObj) throw new Error(`Tag ${tagName} not found`);
392
+ return tagObj;
393
+ } // TODO: deprecate/remove class check
394
+
395
+
396
+ return tags.find(t => (t.identify && t.identify(value) || t.class && value instanceof t.class) && !t.format);
397
+ }
398
+
399
+ function createNode(value, tagName, ctx) {
400
+ if (value instanceof resolveSeq.Node) return value;
401
+ const {
402
+ defaultPrefix,
403
+ onTagObj,
404
+ prevObjects,
405
+ schema,
406
+ wrapScalars
407
+ } = ctx;
408
+ if (tagName && tagName.startsWith('!!')) tagName = defaultPrefix + tagName.slice(2);
409
+ let tagObj = findTagObject(value, tagName, schema.tags);
410
+
411
+ if (!tagObj) {
412
+ if (typeof value.toJSON === 'function') value = value.toJSON();
413
+ if (typeof value !== 'object') return wrapScalars ? new resolveSeq.Scalar(value) : value;
414
+ tagObj = value instanceof Map ? map : value[Symbol.iterator] ? seq : map;
415
+ }
416
+
417
+ if (onTagObj) {
418
+ onTagObj(tagObj);
419
+ delete ctx.onTagObj;
420
+ } // Detect duplicate references to the same object & use Alias nodes for all
421
+ // after first. The `obj` wrapper allows for circular references to resolve.
422
+
423
+
424
+ const obj = {};
425
+
426
+ if (value && typeof value === 'object' && prevObjects) {
427
+ const prev = prevObjects.get(value);
428
+
429
+ if (prev) {
430
+ const alias = new resolveSeq.Alias(prev); // leaves source dirty; must be cleaned by caller
431
+
432
+ ctx.aliasNodes.push(alias); // defined along with prevObjects
433
+
434
+ return alias;
435
+ }
436
+
437
+ obj.value = value;
438
+ prevObjects.set(value, obj);
439
+ }
440
+
441
+ obj.node = tagObj.createNode ? tagObj.createNode(ctx.schema, value, ctx) : wrapScalars ? new resolveSeq.Scalar(value) : value;
442
+ if (tagName && obj.node instanceof resolveSeq.Node) obj.node.tag = tagName;
443
+ return obj.node;
444
+ }
445
+
446
+ function getSchemaTags(schemas, knownTags, customTags, schemaId) {
447
+ let tags = schemas[schemaId.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11'
448
+
449
+ if (!tags) {
450
+ const keys = Object.keys(schemas).map(key => JSON.stringify(key)).join(', ');
451
+ throw new Error(`Unknown schema "${schemaId}"; use one of ${keys}`);
452
+ }
453
+
454
+ if (Array.isArray(customTags)) {
455
+ for (const tag of customTags) tags = tags.concat(tag);
456
+ } else if (typeof customTags === 'function') {
457
+ tags = customTags(tags.slice());
458
+ }
459
+
460
+ for (let i = 0; i < tags.length; ++i) {
461
+ const tag = tags[i];
462
+
463
+ if (typeof tag === 'string') {
464
+ const tagObj = knownTags[tag];
465
+
466
+ if (!tagObj) {
467
+ const keys = Object.keys(knownTags).map(key => JSON.stringify(key)).join(', ');
468
+ throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`);
469
+ }
470
+
471
+ tags[i] = tagObj;
472
+ }
473
+ }
474
+
475
+ return tags;
476
+ }
477
+
478
+ const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
479
+
480
+ class Schema {
481
+ // TODO: remove in v2
482
+ // TODO: remove in v2
483
+ constructor({
484
+ customTags,
485
+ merge,
486
+ schema,
487
+ sortMapEntries,
488
+ tags: deprecatedCustomTags
489
+ }) {
490
+ this.merge = !!merge;
491
+ this.name = schema;
492
+ this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null;
493
+ if (!customTags && deprecatedCustomTags) warnings.warnOptionDeprecation('tags', 'customTags');
494
+ this.tags = getSchemaTags(schemas, tags, customTags || deprecatedCustomTags, schema);
495
+ }
496
+
497
+ createNode(value, wrapScalars, tagName, ctx) {
498
+ const baseCtx = {
499
+ defaultPrefix: Schema.defaultPrefix,
500
+ schema: this,
501
+ wrapScalars
502
+ };
503
+ const createCtx = ctx ? Object.assign(ctx, baseCtx) : baseCtx;
504
+ return createNode(value, tagName, createCtx);
505
+ }
506
+
507
+ createPair(key, value, ctx) {
508
+ if (!ctx) ctx = {
509
+ wrapScalars: true
510
+ };
511
+ const k = this.createNode(key, ctx.wrapScalars, null, ctx);
512
+ const v = this.createNode(value, ctx.wrapScalars, null, ctx);
513
+ return new resolveSeq.Pair(k, v);
514
+ }
515
+
516
+ }
517
+
518
+ PlainValue._defineProperty(Schema, "defaultPrefix", PlainValue.defaultTagPrefix);
519
+
520
+ PlainValue._defineProperty(Schema, "defaultTags", PlainValue.defaultTags);
521
+
522
+ exports.Schema = Schema;
package/dist/index.js CHANGED
@@ -1,35 +1,11 @@
1
- "use strict";
1
+ 'use strict';
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _parse = _interopRequireDefault(require("./cst/parse"));
9
-
10
- var _Document = _interopRequireDefault(require("./Document"));
11
-
12
- var _errors = require("./errors");
13
-
14
- var _schema = _interopRequireDefault(require("./schema"));
15
-
16
- var _warnings = require("./warnings");
17
-
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
- const defaultOptions = {
21
- anchorPrefix: 'a',
22
- customTags: null,
23
- keepCstNodes: false,
24
- keepNodeTypes: true,
25
- keepBlobsInJSON: true,
26
- mapAsMap: false,
27
- maxAliasCount: 100,
28
- prettyErrors: false,
29
- // TODO Set true in v2
30
- simpleKeys: false,
31
- version: '1.2'
32
- };
3
+ var PlainValue = require('./PlainValue-ec8e588e.js');
4
+ var parseCst = require('./parse-cst.js');
5
+ require('./resolveSeq-4a68b39b.js');
6
+ var Document$1 = require('./Document-2cf6b08c.js');
7
+ var Schema = require('./Schema-42e9705c.js');
8
+ var warnings = require('./warnings-39684f17.js');
33
9
 
34
10
  function createNode(value, wrapScalars = true, tag) {
35
11
  if (tag === undefined && typeof wrapScalars === 'string') {
@@ -37,14 +13,14 @@ function createNode(value, wrapScalars = true, tag) {
37
13
  wrapScalars = true;
38
14
  }
39
15
 
40
- const options = Object.assign({}, _Document.default.defaults[defaultOptions.version], defaultOptions);
41
- const schema = new _schema.default(options);
16
+ const options = Object.assign({}, Document$1.Document.defaults[Document$1.defaultOptions.version], Document$1.defaultOptions);
17
+ const schema = new Schema.Schema(options);
42
18
  return schema.createNode(value, wrapScalars, tag);
43
19
  }
44
20
 
45
- class Document extends _Document.default {
21
+ class Document extends Document$1.Document {
46
22
  constructor(options) {
47
- super(Object.assign({}, defaultOptions, options));
23
+ super(Object.assign({}, Document$1.defaultOptions, options));
48
24
  }
49
25
 
50
26
  }
@@ -53,7 +29,7 @@ function parseAllDocuments(src, options) {
53
29
  const stream = [];
54
30
  let prev;
55
31
 
56
- for (const cstDoc of (0, _parse.default)(src)) {
32
+ for (const cstDoc of parseCst.parse(src)) {
57
33
  const doc = new Document(options);
58
34
  doc.parse(cstDoc, prev);
59
35
  stream.push(doc);
@@ -64,12 +40,12 @@ function parseAllDocuments(src, options) {
64
40
  }
65
41
 
66
42
  function parseDocument(src, options) {
67
- const cst = (0, _parse.default)(src);
43
+ const cst = parseCst.parse(src);
68
44
  const doc = new Document(options).parse(cst[0]);
69
45
 
70
46
  if (cst.length > 1) {
71
47
  const errMsg = 'Source contains multiple documents; please use YAML.parseAllDocuments()';
72
- doc.errors.unshift(new _errors.YAMLSemanticError(cst[1], errMsg));
48
+ doc.errors.unshift(new PlainValue.YAMLSemanticError(cst[1], errMsg));
73
49
  }
74
50
 
75
51
  return doc;
@@ -77,7 +53,7 @@ function parseDocument(src, options) {
77
53
 
78
54
  function parse(src, options) {
79
55
  const doc = parseDocument(src, options);
80
- doc.warnings.forEach(warning => (0, _warnings.warn)(warning));
56
+ doc.warnings.forEach(warning => warnings.warn(warning));
81
57
  if (doc.errors.length > 0) throw doc.errors[0];
82
58
  return doc.toJSON();
83
59
  }
@@ -88,14 +64,16 @@ function stringify(value, options) {
88
64
  return String(doc);
89
65
  }
90
66
 
91
- var _default = {
67
+ const YAML = {
92
68
  createNode,
93
- defaultOptions,
69
+ defaultOptions: Document$1.defaultOptions,
94
70
  Document,
95
71
  parse,
96
72
  parseAllDocuments,
97
- parseCST: _parse.default,
73
+ parseCST: parseCst.parse,
98
74
  parseDocument,
75
+ scalarOptions: Document$1.scalarOptions,
99
76
  stringify
100
77
  };
101
- exports.default = _default;
78
+
79
+ exports.YAML = YAML;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ require('./PlainValue-ec8e588e.js');
4
+ require('./resolveSeq-4a68b39b.js');
5
+ var warnings = require('./warnings-39684f17.js');
6
+
7
+
8
+
9
+ exports.binary = warnings.binary;
10
+ exports.floatTime = warnings.floatTime;
11
+ exports.intTime = warnings.intTime;
12
+ exports.omap = warnings.omap;
13
+ exports.pairs = warnings.pairs;
14
+ exports.set = warnings.set;
15
+ exports.timestamp = warnings.timestamp;
16
+ exports.warnFileDeprecation = warnings.warnFileDeprecation;