yaml 2.0.0-3 → 2.0.0-7

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 (345) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +46 -26
  3. package/browser/dist/compose/compose-collection.js +59 -0
  4. package/browser/dist/compose/compose-doc.js +39 -0
  5. package/browser/dist/compose/compose-node.js +79 -0
  6. package/browser/dist/compose/compose-scalar.js +74 -0
  7. package/browser/dist/compose/composer.js +219 -0
  8. package/browser/dist/compose/resolve-block-map.js +93 -0
  9. package/browser/dist/compose/resolve-block-scalar.js +185 -0
  10. package/browser/dist/compose/resolve-block-seq.js +40 -0
  11. package/browser/dist/compose/resolve-end.js +37 -0
  12. package/browser/dist/compose/resolve-flow-collection.js +189 -0
  13. package/browser/dist/compose/resolve-flow-scalar.js +217 -0
  14. package/browser/dist/compose/resolve-props.js +126 -0
  15. package/browser/dist/compose/util-contains-newline.js +34 -0
  16. package/browser/dist/compose/util-empty-scalar-position.js +27 -0
  17. package/browser/dist/compose/util-map-includes.js +17 -0
  18. package/browser/dist/doc/Document.js +251 -348
  19. package/browser/dist/doc/anchors.js +72 -0
  20. package/browser/dist/doc/applyReviver.js +41 -28
  21. package/browser/dist/doc/createNode.js +75 -55
  22. package/browser/dist/doc/directives.js +161 -0
  23. package/browser/dist/errors.js +50 -72
  24. package/browser/dist/index.js +16 -72
  25. package/browser/dist/log.js +11 -7
  26. package/browser/dist/nodes/Alias.js +94 -0
  27. package/browser/dist/nodes/Collection.js +133 -0
  28. package/browser/dist/nodes/Node.js +41 -0
  29. package/browser/dist/nodes/Pair.js +28 -0
  30. package/browser/dist/nodes/Scalar.js +23 -0
  31. package/browser/dist/nodes/YAMLMap.js +116 -0
  32. package/browser/dist/nodes/YAMLSeq.js +105 -0
  33. package/browser/dist/nodes/addPairToJSMap.js +103 -0
  34. package/browser/dist/nodes/toJS.js +35 -0
  35. package/browser/dist/options.js +14 -95
  36. package/browser/dist/parse/cst-scalar.js +219 -0
  37. package/browser/dist/parse/cst-stringify.js +61 -0
  38. package/browser/dist/parse/cst-visit.js +97 -0
  39. package/browser/dist/parse/cst.js +98 -0
  40. package/browser/dist/parse/lexer.js +674 -0
  41. package/browser/dist/parse/line-counter.js +39 -0
  42. package/browser/dist/parse/parser.js +876 -0
  43. package/browser/dist/public-api.js +101 -0
  44. package/browser/dist/schema/Schema.js +23 -0
  45. package/browser/dist/schema/common/map.js +42 -0
  46. package/browser/dist/schema/common/null.js +13 -0
  47. package/browser/dist/schema/common/seq.js +33 -0
  48. package/browser/dist/schema/common/string.js +14 -0
  49. package/browser/dist/schema/core/bool.js +19 -0
  50. package/browser/dist/schema/core/float.js +40 -0
  51. package/browser/dist/schema/core/int.js +38 -0
  52. package/browser/dist/schema/core/schema.js +23 -0
  53. package/browser/dist/schema/json/schema.js +62 -0
  54. package/browser/dist/schema/tags.js +79 -0
  55. package/browser/dist/schema/yaml-1.1/binary.js +66 -0
  56. package/browser/dist/schema/yaml-1.1/bool.js +26 -0
  57. package/browser/dist/schema/yaml-1.1/float.js +43 -0
  58. package/browser/dist/schema/yaml-1.1/int.js +71 -0
  59. package/browser/dist/schema/yaml-1.1/omap.js +73 -0
  60. package/browser/dist/schema/yaml-1.1/pairs.js +77 -0
  61. package/browser/dist/schema/yaml-1.1/schema.js +37 -0
  62. package/browser/dist/schema/yaml-1.1/set.js +87 -0
  63. package/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  64. package/browser/dist/stringify/foldFlowLines.js +121 -139
  65. package/browser/dist/stringify/stringify.js +87 -72
  66. package/browser/dist/stringify/stringifyCollection.js +122 -0
  67. package/browser/dist/stringify/stringifyComment.js +14 -0
  68. package/browser/dist/stringify/stringifyDocument.js +64 -0
  69. package/browser/dist/stringify/stringifyNumber.js +20 -23
  70. package/browser/dist/stringify/stringifyPair.js +111 -0
  71. package/browser/dist/stringify/stringifyString.js +295 -322
  72. package/browser/dist/util.js +4 -4
  73. package/browser/dist/visit.js +134 -71
  74. package/browser/index.js +4 -1
  75. package/dist/compose/compose-collection.d.ts +5 -0
  76. package/dist/compose/compose-collection.js +61 -0
  77. package/dist/compose/compose-doc.d.ts +6 -0
  78. package/dist/compose/compose-doc.js +41 -0
  79. package/dist/compose/compose-node.d.ts +25 -0
  80. package/dist/compose/compose-node.js +82 -0
  81. package/dist/compose/compose-scalar.d.ts +5 -0
  82. package/dist/compose/compose-scalar.js +76 -0
  83. package/dist/compose/composer.d.ts +62 -0
  84. package/dist/compose/composer.js +223 -0
  85. package/dist/compose/resolve-block-map.d.ts +6 -0
  86. package/dist/compose/resolve-block-map.js +95 -0
  87. package/dist/compose/resolve-block-scalar.d.ts +10 -0
  88. package/dist/compose/resolve-block-scalar.js +187 -0
  89. package/dist/compose/resolve-block-seq.d.ts +5 -0
  90. package/dist/compose/resolve-block-seq.js +42 -0
  91. package/dist/compose/resolve-end.d.ts +6 -0
  92. package/dist/compose/resolve-end.js +39 -0
  93. package/dist/compose/resolve-flow-collection.d.ts +6 -0
  94. package/dist/compose/resolve-flow-collection.js +191 -0
  95. package/dist/compose/resolve-flow-scalar.d.ts +10 -0
  96. package/dist/compose/resolve-flow-scalar.js +219 -0
  97. package/dist/compose/resolve-props.d.ts +21 -0
  98. package/dist/compose/resolve-props.js +128 -0
  99. package/dist/compose/util-contains-newline.d.ts +2 -0
  100. package/dist/compose/util-contains-newline.js +36 -0
  101. package/dist/compose/util-empty-scalar-position.d.ts +2 -0
  102. package/dist/compose/util-empty-scalar-position.js +29 -0
  103. package/dist/compose/util-map-includes.d.ts +4 -0
  104. package/dist/compose/util-map-includes.js +19 -0
  105. package/dist/doc/Document.d.ts +130 -0
  106. package/dist/doc/Document.js +250 -347
  107. package/dist/doc/anchors.d.ts +24 -0
  108. package/dist/doc/anchors.js +77 -0
  109. package/dist/doc/applyReviver.d.ts +9 -0
  110. package/dist/doc/applyReviver.js +41 -28
  111. package/dist/doc/createNode.d.ts +16 -0
  112. package/dist/doc/createNode.js +75 -55
  113. package/dist/doc/directives.d.ts +46 -0
  114. package/dist/doc/directives.js +163 -0
  115. package/dist/errors.d.ts +21 -0
  116. package/dist/errors.js +51 -74
  117. package/dist/index.d.ts +19 -0
  118. package/dist/index.js +39 -70
  119. package/dist/log.d.ts +3 -0
  120. package/dist/log.js +11 -6
  121. package/dist/nodes/Alias.d.ts +24 -0
  122. package/dist/nodes/Alias.js +96 -0
  123. package/dist/nodes/Collection.d.ts +67 -0
  124. package/dist/nodes/Collection.js +137 -0
  125. package/dist/nodes/Node.d.ts +48 -0
  126. package/dist/nodes/Node.js +59 -0
  127. package/dist/nodes/Pair.d.ts +16 -0
  128. package/dist/nodes/Pair.js +31 -0
  129. package/dist/nodes/Scalar.d.ts +40 -0
  130. package/dist/nodes/Scalar.js +26 -0
  131. package/dist/nodes/YAMLMap.d.ts +39 -0
  132. package/dist/nodes/YAMLMap.js +119 -0
  133. package/dist/nodes/YAMLSeq.d.ts +53 -0
  134. package/dist/nodes/YAMLSeq.js +107 -0
  135. package/dist/nodes/addPairToJSMap.d.ts +3 -0
  136. package/dist/nodes/addPairToJSMap.js +105 -0
  137. package/dist/nodes/toJS.d.ts +30 -0
  138. package/dist/nodes/toJS.js +37 -0
  139. package/dist/options.d.ts +278 -0
  140. package/dist/options.js +13 -96
  141. package/dist/parse/cst-scalar.d.ts +58 -0
  142. package/dist/parse/cst-scalar.js +223 -0
  143. package/dist/parse/cst-stringify.d.ts +8 -0
  144. package/dist/parse/cst-stringify.js +63 -0
  145. package/dist/parse/cst-visit.d.ts +39 -0
  146. package/dist/parse/cst-visit.js +99 -0
  147. package/dist/parse/cst.d.ts +106 -0
  148. package/dist/parse/cst.js +112 -0
  149. package/dist/parse/lexer.d.ts +85 -0
  150. package/dist/parse/lexer.js +676 -0
  151. package/dist/parse/line-counter.d.ts +22 -0
  152. package/dist/parse/line-counter.js +41 -0
  153. package/dist/parse/parser.d.ts +84 -0
  154. package/dist/parse/parser.js +880 -0
  155. package/dist/public-api.d.ts +43 -0
  156. package/dist/public-api.js +106 -0
  157. package/dist/schema/Schema.d.ts +16 -0
  158. package/dist/schema/Schema.js +25 -0
  159. package/dist/schema/common/map.d.ts +2 -0
  160. package/dist/schema/common/map.js +44 -0
  161. package/dist/schema/common/null.d.ts +4 -0
  162. package/dist/schema/common/null.js +15 -0
  163. package/dist/schema/common/seq.d.ts +2 -0
  164. package/dist/schema/common/seq.js +35 -0
  165. package/dist/schema/common/string.d.ts +2 -0
  166. package/dist/schema/common/string.js +16 -0
  167. package/dist/schema/core/bool.d.ts +4 -0
  168. package/dist/schema/core/bool.js +21 -0
  169. package/dist/schema/core/float.d.ts +4 -0
  170. package/dist/schema/core/float.js +44 -0
  171. package/dist/schema/core/int.d.ts +4 -0
  172. package/dist/schema/core/int.js +42 -0
  173. package/dist/schema/core/schema.d.ts +1 -0
  174. package/dist/schema/core/schema.js +25 -0
  175. package/dist/schema/json/schema.d.ts +2 -0
  176. package/dist/schema/json/schema.js +64 -0
  177. package/dist/schema/tags.d.ts +41 -0
  178. package/dist/schema/tags.js +82 -0
  179. package/dist/schema/types.d.ts +82 -0
  180. package/dist/schema/yaml-1.1/binary.d.ts +2 -0
  181. package/dist/schema/yaml-1.1/binary.js +68 -0
  182. package/dist/schema/yaml-1.1/bool.d.ts +7 -0
  183. package/dist/schema/yaml-1.1/bool.js +29 -0
  184. package/dist/schema/yaml-1.1/float.d.ts +4 -0
  185. package/dist/schema/yaml-1.1/float.js +47 -0
  186. package/dist/schema/yaml-1.1/int.d.ts +5 -0
  187. package/dist/schema/yaml-1.1/int.js +76 -0
  188. package/dist/schema/yaml-1.1/omap.d.ts +21 -0
  189. package/dist/schema/yaml-1.1/omap.js +76 -0
  190. package/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  191. package/dist/schema/yaml-1.1/pairs.js +81 -0
  192. package/dist/schema/yaml-1.1/schema.d.ts +1 -0
  193. package/dist/schema/yaml-1.1/schema.js +39 -0
  194. package/dist/schema/yaml-1.1/set.d.ts +22 -0
  195. package/dist/schema/yaml-1.1/set.js +90 -0
  196. package/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  197. package/dist/schema/yaml-1.1/timestamp.js +105 -0
  198. package/dist/stringify/foldFlowLines.d.ts +34 -0
  199. package/dist/stringify/foldFlowLines.js +121 -139
  200. package/dist/stringify/stringify.d.ts +18 -0
  201. package/dist/stringify/stringify.js +87 -71
  202. package/dist/stringify/stringifyCollection.d.ts +21 -0
  203. package/dist/stringify/stringifyCollection.js +124 -0
  204. package/dist/stringify/stringifyComment.d.ts +2 -0
  205. package/dist/stringify/stringifyComment.js +17 -0
  206. package/dist/stringify/stringifyDocument.d.ts +3 -0
  207. package/dist/stringify/stringifyDocument.js +66 -0
  208. package/dist/stringify/stringifyNumber.d.ts +2 -0
  209. package/dist/stringify/stringifyNumber.js +20 -23
  210. package/dist/stringify/stringifyPair.d.ts +3 -0
  211. package/dist/stringify/stringifyPair.js +113 -0
  212. package/dist/stringify/stringifyString.d.ts +3 -0
  213. package/dist/stringify/stringifyString.js +295 -322
  214. package/dist/test-events.d.ts +4 -0
  215. package/dist/test-events.js +124 -148
  216. package/dist/util.d.ts +6 -0
  217. package/dist/util.js +9 -12
  218. package/dist/visit.d.ts +63 -0
  219. package/dist/visit.js +134 -71
  220. package/package.json +31 -39
  221. package/util.js +2 -14
  222. package/browser/dist/_virtual/_rollupPluginBabelHelpers.js +0 -16
  223. package/browser/dist/ast/Alias.js +0 -95
  224. package/browser/dist/ast/Collection.js +0 -192
  225. package/browser/dist/ast/Merge.js +0 -71
  226. package/browser/dist/ast/Node.js +0 -3
  227. package/browser/dist/ast/Pair.js +0 -200
  228. package/browser/dist/ast/Scalar.js +0 -21
  229. package/browser/dist/ast/YAMLMap.js +0 -91
  230. package/browser/dist/ast/YAMLSeq.js +0 -67
  231. package/browser/dist/ast/toJS.js +0 -29
  232. package/browser/dist/constants.js +0 -40
  233. package/browser/dist/cst/Alias.js +0 -26
  234. package/browser/dist/cst/BlankLine.js +0 -34
  235. package/browser/dist/cst/BlockValue.js +0 -240
  236. package/browser/dist/cst/Collection.js +0 -259
  237. package/browser/dist/cst/CollectionItem.js +0 -123
  238. package/browser/dist/cst/Comment.js +0 -27
  239. package/browser/dist/cst/Directive.js +0 -53
  240. package/browser/dist/cst/Document.js +0 -262
  241. package/browser/dist/cst/FlowCollection.js +0 -201
  242. package/browser/dist/cst/Node.js +0 -355
  243. package/browser/dist/cst/ParseContext.js +0 -234
  244. package/browser/dist/cst/PlainValue.js +0 -171
  245. package/browser/dist/cst/QuoteDouble.js +0 -224
  246. package/browser/dist/cst/QuoteSingle.js +0 -100
  247. package/browser/dist/cst/Range.js +0 -56
  248. package/browser/dist/cst/parse.js +0 -46
  249. package/browser/dist/cst/source-utils.js +0 -169
  250. package/browser/dist/doc/Anchors.js +0 -115
  251. package/browser/dist/doc/Schema.js +0 -34
  252. package/browser/dist/doc/getSchemaTags.js +0 -33
  253. package/browser/dist/doc/listTagNames.js +0 -27
  254. package/browser/dist/doc/parseContents.js +0 -60
  255. package/browser/dist/doc/parseDirectives.js +0 -107
  256. package/browser/dist/resolve/collection-utils.js +0 -86
  257. package/browser/dist/resolve/resolveMap.js +0 -315
  258. package/browser/dist/resolve/resolveNode.js +0 -173
  259. package/browser/dist/resolve/resolveScalar.js +0 -20
  260. package/browser/dist/resolve/resolveSeq.js +0 -170
  261. package/browser/dist/resolve/resolveTag.js +0 -107
  262. package/browser/dist/resolve/resolveTagName.js +0 -87
  263. package/browser/dist/stringify/addComment.js +0 -10
  264. package/browser/dist/stringify/stringifyTag.js +0 -28
  265. package/browser/dist/tags/core.js +0 -128
  266. package/browser/dist/tags/failsafe/index.js +0 -7
  267. package/browser/dist/tags/failsafe/map.js +0 -37
  268. package/browser/dist/tags/failsafe/seq.js +0 -34
  269. package/browser/dist/tags/failsafe/string.js +0 -20
  270. package/browser/dist/tags/index.js +0 -39
  271. package/browser/dist/tags/json.js +0 -62
  272. package/browser/dist/tags/options.js +0 -31
  273. package/browser/dist/tags/yaml-1.1/binary.js +0 -83
  274. package/browser/dist/tags/yaml-1.1/index.js +0 -174
  275. package/browser/dist/tags/yaml-1.1/omap.js +0 -86
  276. package/browser/dist/tags/yaml-1.1/pairs.js +0 -62
  277. package/browser/dist/tags/yaml-1.1/set.js +0 -78
  278. package/browser/dist/tags/yaml-1.1/timestamp.js +0 -101
  279. package/browser/dist/types.js +0 -10
  280. package/cst.d.ts +0 -185
  281. package/dist/_virtual/_rollupPluginBabelHelpers.js +0 -18
  282. package/dist/ast/Alias.js +0 -97
  283. package/dist/ast/Collection.js +0 -196
  284. package/dist/ast/Merge.js +0 -74
  285. package/dist/ast/Node.js +0 -5
  286. package/dist/ast/Pair.js +0 -203
  287. package/dist/ast/Scalar.js +0 -24
  288. package/dist/ast/YAMLMap.js +0 -94
  289. package/dist/ast/YAMLSeq.js +0 -69
  290. package/dist/ast/toJS.js +0 -31
  291. package/dist/constants.js +0 -46
  292. package/dist/cst/Alias.js +0 -28
  293. package/dist/cst/BlankLine.js +0 -36
  294. package/dist/cst/BlockValue.js +0 -243
  295. package/dist/cst/Collection.js +0 -262
  296. package/dist/cst/CollectionItem.js +0 -125
  297. package/dist/cst/Comment.js +0 -29
  298. package/dist/cst/Directive.js +0 -55
  299. package/dist/cst/Document.js +0 -264
  300. package/dist/cst/FlowCollection.js +0 -203
  301. package/dist/cst/Node.js +0 -357
  302. package/dist/cst/ParseContext.js +0 -236
  303. package/dist/cst/PlainValue.js +0 -173
  304. package/dist/cst/QuoteDouble.js +0 -226
  305. package/dist/cst/QuoteSingle.js +0 -102
  306. package/dist/cst/Range.js +0 -58
  307. package/dist/cst/parse.js +0 -48
  308. package/dist/cst/source-utils.js +0 -173
  309. package/dist/doc/Anchors.js +0 -117
  310. package/dist/doc/Schema.js +0 -36
  311. package/dist/doc/getSchemaTags.js +0 -35
  312. package/dist/doc/listTagNames.js +0 -29
  313. package/dist/doc/parseContents.js +0 -62
  314. package/dist/doc/parseDirectives.js +0 -109
  315. package/dist/resolve/collection-utils.js +0 -91
  316. package/dist/resolve/resolveMap.js +0 -317
  317. package/dist/resolve/resolveNode.js +0 -175
  318. package/dist/resolve/resolveScalar.js +0 -22
  319. package/dist/resolve/resolveSeq.js +0 -172
  320. package/dist/resolve/resolveTag.js +0 -109
  321. package/dist/resolve/resolveTagName.js +0 -89
  322. package/dist/stringify/addComment.js +0 -13
  323. package/dist/stringify/stringifyTag.js +0 -30
  324. package/dist/tags/core.js +0 -138
  325. package/dist/tags/failsafe/index.js +0 -9
  326. package/dist/tags/failsafe/map.js +0 -39
  327. package/dist/tags/failsafe/seq.js +0 -36
  328. package/dist/tags/failsafe/string.js +0 -22
  329. package/dist/tags/index.js +0 -42
  330. package/dist/tags/json.js +0 -64
  331. package/dist/tags/options.js +0 -37
  332. package/dist/tags/yaml-1.1/binary.js +0 -85
  333. package/dist/tags/yaml-1.1/index.js +0 -176
  334. package/dist/tags/yaml-1.1/omap.js +0 -89
  335. package/dist/tags/yaml-1.1/pairs.js +0 -66
  336. package/dist/tags/yaml-1.1/set.js +0 -81
  337. package/dist/tags/yaml-1.1/timestamp.js +0 -105
  338. package/dist/types.js +0 -29
  339. package/index.d.ts +0 -519
  340. package/index.js +0 -1
  341. package/types.d.ts +0 -379
  342. package/types.js +0 -17
  343. package/types.mjs +0 -17
  344. package/util.d.ts +0 -76
  345. package/util.mjs +0 -15
@@ -0,0 +1,101 @@
1
+ import { Composer } from './compose/composer.js';
2
+ import { Document } from './doc/Document.js';
3
+ import { prettifyError, YAMLParseError } from './errors.js';
4
+ import { warn } from './log.js';
5
+ import { LineCounter } from './parse/line-counter.js';
6
+ import { Parser } from './parse/parser.js';
7
+
8
+ function parseOptions(options) {
9
+ const prettyErrors = !options || options.prettyErrors !== false;
10
+ const lineCounter = (options && options.lineCounter) ||
11
+ (prettyErrors && new LineCounter()) ||
12
+ null;
13
+ return { lineCounter, prettyErrors };
14
+ }
15
+ /**
16
+ * Parse the input as a stream of YAML documents.
17
+ *
18
+ * Documents should be separated from each other by `...` or `---` marker lines.
19
+ *
20
+ * @returns If an empty `docs` array is returned, it will be of type
21
+ * EmptyStream and contain additional stream information. In
22
+ * TypeScript, you should use `'empty' in docs` as a type guard for it.
23
+ */
24
+ function parseAllDocuments(source, options = {}) {
25
+ const { lineCounter, prettyErrors } = parseOptions(options);
26
+ const parser = new Parser(lineCounter === null || lineCounter === void 0 ? void 0 : lineCounter.addNewLine);
27
+ const composer = new Composer(options);
28
+ const docs = Array.from(composer.compose(parser.parse(source)));
29
+ if (prettyErrors && lineCounter)
30
+ for (const doc of docs) {
31
+ doc.errors.forEach(prettifyError(source, lineCounter));
32
+ doc.warnings.forEach(prettifyError(source, lineCounter));
33
+ }
34
+ if (docs.length > 0)
35
+ return docs;
36
+ return Object.assign([], { empty: true }, composer.streamInfo());
37
+ }
38
+ /** Parse an input string into a single YAML.Document */
39
+ function parseDocument(source, options = {}) {
40
+ const { lineCounter, prettyErrors } = parseOptions(options);
41
+ const parser = new Parser(lineCounter === null || lineCounter === void 0 ? void 0 : lineCounter.addNewLine);
42
+ const composer = new Composer(options);
43
+ // `doc` is always set by compose.end(true) at the very latest
44
+ let doc = null;
45
+ for (const _doc of composer.compose(parser.parse(source), true, source.length)) {
46
+ if (!doc)
47
+ doc = _doc;
48
+ else if (doc.options.logLevel !== 'silent') {
49
+ doc.errors.push(new YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));
50
+ break;
51
+ }
52
+ }
53
+ if (prettyErrors && lineCounter) {
54
+ doc.errors.forEach(prettifyError(source, lineCounter));
55
+ doc.warnings.forEach(prettifyError(source, lineCounter));
56
+ }
57
+ return doc;
58
+ }
59
+ function parse(src, reviver, options) {
60
+ let _reviver = undefined;
61
+ if (typeof reviver === 'function') {
62
+ _reviver = reviver;
63
+ }
64
+ else if (options === undefined && reviver && typeof reviver === 'object') {
65
+ options = reviver;
66
+ }
67
+ const doc = parseDocument(src, options);
68
+ if (!doc)
69
+ return null;
70
+ doc.warnings.forEach(warning => warn(doc.options.logLevel, warning));
71
+ if (doc.errors.length > 0) {
72
+ if (doc.options.logLevel !== 'silent')
73
+ throw doc.errors[0];
74
+ else
75
+ doc.errors = [];
76
+ }
77
+ return doc.toJS(Object.assign({ reviver: _reviver }, options));
78
+ }
79
+ function stringify(value, replacer, options) {
80
+ let _replacer = null;
81
+ if (typeof replacer === 'function' || Array.isArray(replacer)) {
82
+ _replacer = replacer;
83
+ }
84
+ else if (options === undefined && replacer) {
85
+ options = replacer;
86
+ }
87
+ if (typeof options === 'string')
88
+ options = options.length;
89
+ if (typeof options === 'number') {
90
+ const indent = Math.round(options);
91
+ options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };
92
+ }
93
+ if (value === undefined) {
94
+ const { keepUndefined } = options || replacer || {};
95
+ if (!keepUndefined)
96
+ return undefined;
97
+ }
98
+ return new Document(value, _replacer, options).toString(options);
99
+ }
100
+
101
+ export { parse, parseAllDocuments, parseDocument, stringify };
@@ -0,0 +1,23 @@
1
+ import { MAP, SCALAR, SEQ } from '../nodes/Node.js';
2
+ import { map } from './common/map.js';
3
+ import { seq } from './common/seq.js';
4
+ import { string } from './common/string.js';
5
+ import { coreKnownTags, getTags } from './tags.js';
6
+
7
+ const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
8
+ class Schema {
9
+ constructor({ customTags, merge, resolveKnownTags, schema, sortMapEntries }) {
10
+ this.merge = !!merge;
11
+ this.name = schema || 'core';
12
+ this.knownTags = resolveKnownTags ? coreKnownTags : {};
13
+ this.tags = getTags(customTags, this.name);
14
+ Object.defineProperty(this, MAP, { value: map });
15
+ Object.defineProperty(this, SCALAR, { value: string });
16
+ Object.defineProperty(this, SEQ, { value: seq });
17
+ // Used by createMap()
18
+ this.sortMapEntries =
19
+ sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null;
20
+ }
21
+ }
22
+
23
+ export { Schema };
@@ -0,0 +1,42 @@
1
+ import { isMap } from '../../nodes/Node.js';
2
+ import { createPair } from '../../nodes/Pair.js';
3
+ import { YAMLMap } from '../../nodes/YAMLMap.js';
4
+
5
+ function createMap(schema, obj, ctx) {
6
+ const { keepUndefined, replacer } = ctx;
7
+ const map = new YAMLMap(schema);
8
+ const add = (key, value) => {
9
+ if (typeof replacer === 'function')
10
+ value = replacer.call(obj, key, value);
11
+ else if (Array.isArray(replacer) && !replacer.includes(key))
12
+ return;
13
+ if (value !== undefined || keepUndefined)
14
+ map.items.push(createPair(key, value, ctx));
15
+ };
16
+ if (obj instanceof Map) {
17
+ for (const [key, value] of obj)
18
+ add(key, value);
19
+ }
20
+ else if (obj && typeof obj === 'object') {
21
+ for (const key of Object.keys(obj))
22
+ add(key, obj[key]);
23
+ }
24
+ if (typeof schema.sortMapEntries === 'function') {
25
+ map.items.sort(schema.sortMapEntries);
26
+ }
27
+ return map;
28
+ }
29
+ const map = {
30
+ collection: 'map',
31
+ createNode: createMap,
32
+ default: true,
33
+ nodeClass: YAMLMap,
34
+ tag: 'tag:yaml.org,2002:map',
35
+ resolve(map, onError) {
36
+ if (!isMap(map))
37
+ onError('Expected a mapping for this tag');
38
+ return map;
39
+ }
40
+ };
41
+
42
+ export { map };
@@ -0,0 +1,13 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+
3
+ const nullTag = {
4
+ identify: value => value == null,
5
+ createNode: () => new Scalar(null),
6
+ default: true,
7
+ tag: 'tag:yaml.org,2002:null',
8
+ test: /^(?:~|[Nn]ull|NULL)?$/,
9
+ resolve: () => new Scalar(null),
10
+ stringify: ({ source }, ctx) => source && nullTag.test.test(source) ? source : ctx.options.nullStr
11
+ };
12
+
13
+ export { nullTag };
@@ -0,0 +1,33 @@
1
+ import { createNode } from '../../doc/createNode.js';
2
+ import { isSeq } from '../../nodes/Node.js';
3
+ import { YAMLSeq } from '../../nodes/YAMLSeq.js';
4
+
5
+ function createSeq(schema, obj, ctx) {
6
+ const { replacer } = ctx;
7
+ const seq = new YAMLSeq(schema);
8
+ if (obj && Symbol.iterator in Object(obj)) {
9
+ let i = 0;
10
+ for (let it of obj) {
11
+ if (typeof replacer === 'function') {
12
+ const key = obj instanceof Set ? it : String(i++);
13
+ it = replacer.call(obj, key, it);
14
+ }
15
+ seq.items.push(createNode(it, undefined, ctx));
16
+ }
17
+ }
18
+ return seq;
19
+ }
20
+ const seq = {
21
+ collection: 'seq',
22
+ createNode: createSeq,
23
+ default: true,
24
+ nodeClass: YAMLSeq,
25
+ tag: 'tag:yaml.org,2002:seq',
26
+ resolve(seq, onError) {
27
+ if (!isSeq(seq))
28
+ onError('Expected a sequence for this tag');
29
+ return seq;
30
+ }
31
+ };
32
+
33
+ export { seq };
@@ -0,0 +1,14 @@
1
+ import { stringifyString } from '../../stringify/stringifyString.js';
2
+
3
+ const string = {
4
+ identify: value => typeof value === 'string',
5
+ default: true,
6
+ tag: 'tag:yaml.org,2002:str',
7
+ resolve: str => str,
8
+ stringify(item, ctx, onComment, onChompKeep) {
9
+ ctx = Object.assign({ actualString: true }, ctx);
10
+ return stringifyString(item, ctx, onComment, onChompKeep);
11
+ }
12
+ };
13
+
14
+ export { string };
@@ -0,0 +1,19 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+
3
+ const boolTag = {
4
+ identify: value => typeof value === 'boolean',
5
+ default: true,
6
+ tag: 'tag:yaml.org,2002:bool',
7
+ test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
8
+ resolve: str => new Scalar(str[0] === 't' || str[0] === 'T'),
9
+ stringify({ source, value }, ctx) {
10
+ if (source && boolTag.test.test(source)) {
11
+ const sv = source[0] === 't' || source[0] === 'T';
12
+ if (value === sv)
13
+ return source;
14
+ }
15
+ return value ? ctx.options.trueStr : ctx.options.falseStr;
16
+ }
17
+ };
18
+
19
+ export { boolTag };
@@ -0,0 +1,40 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+ import { stringifyNumber } from '../../stringify/stringifyNumber.js';
3
+
4
+ const floatNaN = {
5
+ identify: value => typeof value === 'number',
6
+ default: true,
7
+ tag: 'tag:yaml.org,2002:float',
8
+ test: /^(?:[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN))$/,
9
+ resolve: str => str.slice(-3).toLowerCase() === 'nan'
10
+ ? NaN
11
+ : str[0] === '-'
12
+ ? Number.NEGATIVE_INFINITY
13
+ : Number.POSITIVE_INFINITY,
14
+ stringify: stringifyNumber
15
+ };
16
+ const floatExp = {
17
+ identify: value => typeof value === 'number',
18
+ default: true,
19
+ tag: 'tag:yaml.org,2002:float',
20
+ format: 'EXP',
21
+ test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,
22
+ resolve: str => parseFloat(str),
23
+ stringify: ({ value }) => Number(value).toExponential()
24
+ };
25
+ const float = {
26
+ identify: value => typeof value === 'number',
27
+ default: true,
28
+ tag: 'tag:yaml.org,2002:float',
29
+ test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,
30
+ resolve(str) {
31
+ const node = new Scalar(parseFloat(str));
32
+ const dot = str.indexOf('.');
33
+ if (dot !== -1 && str[str.length - 1] === '0')
34
+ node.minFractionDigits = str.length - dot - 1;
35
+ return node;
36
+ },
37
+ stringify: stringifyNumber
38
+ };
39
+
40
+ export { float, floatExp, floatNaN };
@@ -0,0 +1,38 @@
1
+ import { stringifyNumber } from '../../stringify/stringifyNumber.js';
2
+
3
+ const intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);
4
+ const intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));
5
+ function intStringify(node, radix, prefix) {
6
+ const { value } = node;
7
+ if (intIdentify(value) && value >= 0)
8
+ return prefix + value.toString(radix);
9
+ return stringifyNumber(node);
10
+ }
11
+ const intOct = {
12
+ identify: value => intIdentify(value) && value >= 0,
13
+ default: true,
14
+ tag: 'tag:yaml.org,2002:int',
15
+ format: 'OCT',
16
+ test: /^0o[0-7]+$/,
17
+ resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),
18
+ stringify: node => intStringify(node, 8, '0o')
19
+ };
20
+ const int = {
21
+ identify: intIdentify,
22
+ default: true,
23
+ tag: 'tag:yaml.org,2002:int',
24
+ test: /^[-+]?[0-9]+$/,
25
+ resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),
26
+ stringify: stringifyNumber
27
+ };
28
+ const intHex = {
29
+ identify: value => intIdentify(value) && value >= 0,
30
+ default: true,
31
+ tag: 'tag:yaml.org,2002:int',
32
+ format: 'HEX',
33
+ test: /^0x[0-9a-fA-F]+$/,
34
+ resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),
35
+ stringify: node => intStringify(node, 16, '0x')
36
+ };
37
+
38
+ export { int, intHex, intOct };
@@ -0,0 +1,23 @@
1
+ import { map } from '../common/map.js';
2
+ import { nullTag } from '../common/null.js';
3
+ import { seq } from '../common/seq.js';
4
+ import { string } from '../common/string.js';
5
+ import { boolTag } from './bool.js';
6
+ import { floatNaN, floatExp, float } from './float.js';
7
+ import { intOct, int, intHex } from './int.js';
8
+
9
+ const schema = [
10
+ map,
11
+ seq,
12
+ string,
13
+ nullTag,
14
+ boolTag,
15
+ intOct,
16
+ int,
17
+ intHex,
18
+ floatNaN,
19
+ floatExp,
20
+ float
21
+ ];
22
+
23
+ export { schema };
@@ -0,0 +1,62 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+ import { map } from '../common/map.js';
3
+ import { seq } from '../common/seq.js';
4
+
5
+ function intIdentify(value) {
6
+ return typeof value === 'bigint' || Number.isInteger(value);
7
+ }
8
+ const stringifyJSON = ({ value }) => JSON.stringify(value);
9
+ const jsonScalars = [
10
+ {
11
+ identify: value => typeof value === 'string',
12
+ default: true,
13
+ tag: 'tag:yaml.org,2002:str',
14
+ resolve: str => str,
15
+ stringify: stringifyJSON
16
+ },
17
+ {
18
+ identify: value => value == null,
19
+ createNode: () => new Scalar(null),
20
+ default: true,
21
+ tag: 'tag:yaml.org,2002:null',
22
+ test: /^null$/,
23
+ resolve: () => null,
24
+ stringify: stringifyJSON
25
+ },
26
+ {
27
+ identify: value => typeof value === 'boolean',
28
+ default: true,
29
+ tag: 'tag:yaml.org,2002:bool',
30
+ test: /^true|false$/,
31
+ resolve: str => str === 'true',
32
+ stringify: stringifyJSON
33
+ },
34
+ {
35
+ identify: intIdentify,
36
+ default: true,
37
+ tag: 'tag:yaml.org,2002:int',
38
+ test: /^-?(?:0|[1-9][0-9]*)$/,
39
+ resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),
40
+ stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)
41
+ },
42
+ {
43
+ identify: value => typeof value === 'number',
44
+ default: true,
45
+ tag: 'tag:yaml.org,2002:float',
46
+ test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
47
+ resolve: str => parseFloat(str),
48
+ stringify: stringifyJSON
49
+ }
50
+ ];
51
+ const jsonError = {
52
+ default: true,
53
+ tag: '',
54
+ test: /^/,
55
+ resolve(str, onError) {
56
+ onError(`Unresolved plain scalar ${JSON.stringify(str)}`);
57
+ return str;
58
+ }
59
+ };
60
+ const schema = [map, seq].concat(jsonScalars, jsonError);
61
+
62
+ export { schema };
@@ -0,0 +1,79 @@
1
+ import { map } from './common/map.js';
2
+ import { nullTag } from './common/null.js';
3
+ import { seq } from './common/seq.js';
4
+ import { string } from './common/string.js';
5
+ import { boolTag } from './core/bool.js';
6
+ import { float, floatExp, floatNaN } from './core/float.js';
7
+ import { int, intHex, intOct } from './core/int.js';
8
+ import { schema } from './core/schema.js';
9
+ import { schema as schema$1 } from './json/schema.js';
10
+ import { binary } from './yaml-1.1/binary.js';
11
+ import { omap } from './yaml-1.1/omap.js';
12
+ import { pairs } from './yaml-1.1/pairs.js';
13
+ import { schema as schema$2 } from './yaml-1.1/schema.js';
14
+ import { set } from './yaml-1.1/set.js';
15
+ import { floatTime, intTime, timestamp } from './yaml-1.1/timestamp.js';
16
+
17
+ const schemas = {
18
+ core: schema,
19
+ failsafe: [map, seq, string],
20
+ json: schema$1,
21
+ yaml11: schema$2,
22
+ 'yaml-1.1': schema$2
23
+ };
24
+ const tagsByName = {
25
+ binary,
26
+ bool: boolTag,
27
+ float,
28
+ floatExp,
29
+ floatNaN,
30
+ floatTime,
31
+ int,
32
+ intHex,
33
+ intOct,
34
+ intTime,
35
+ map,
36
+ null: nullTag,
37
+ omap,
38
+ pairs,
39
+ seq,
40
+ set,
41
+ timestamp
42
+ };
43
+ const coreKnownTags = {
44
+ 'tag:yaml.org,2002:binary': binary,
45
+ 'tag:yaml.org,2002:omap': omap,
46
+ 'tag:yaml.org,2002:pairs': pairs,
47
+ 'tag:yaml.org,2002:set': set,
48
+ 'tag:yaml.org,2002:timestamp': timestamp
49
+ };
50
+ function getTags(customTags, schemaName) {
51
+ let tags = schemas[schemaName];
52
+ if (!tags) {
53
+ const keys = Object.keys(schemas)
54
+ .filter(key => key !== 'yaml11')
55
+ .map(key => JSON.stringify(key))
56
+ .join(', ');
57
+ throw new Error(`Unknown schema "${schemaName}"; use one of ${keys}`);
58
+ }
59
+ if (Array.isArray(customTags)) {
60
+ for (const tag of customTags)
61
+ tags = tags.concat(tag);
62
+ }
63
+ else if (typeof customTags === 'function') {
64
+ tags = customTags(tags.slice());
65
+ }
66
+ return tags.map(tag => {
67
+ if (typeof tag !== 'string')
68
+ return tag;
69
+ const tagObj = tagsByName[tag];
70
+ if (tagObj)
71
+ return tagObj;
72
+ const keys = Object.keys(tagsByName)
73
+ .map(key => JSON.stringify(key))
74
+ .join(', ');
75
+ throw new Error(`Unknown custom tag "${tag}"; use one of ${keys}`);
76
+ });
77
+ }
78
+
79
+ export { coreKnownTags, getTags };
@@ -0,0 +1,66 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+ import { stringifyString } from '../../stringify/stringifyString.js';
3
+
4
+ const binary = {
5
+ identify: value => value instanceof Uint8Array,
6
+ default: false,
7
+ tag: 'tag:yaml.org,2002:binary',
8
+ /**
9
+ * Returns a Buffer in node and an Uint8Array in browsers
10
+ *
11
+ * To use the resulting buffer as an image, you'll want to do something like:
12
+ *
13
+ * const blob = new Blob([buffer], { type: 'image/jpeg' })
14
+ * document.querySelector('#photo').src = URL.createObjectURL(blob)
15
+ */
16
+ resolve(src, onError) {
17
+ if (typeof Buffer === 'function') {
18
+ return Buffer.from(src, 'base64');
19
+ }
20
+ else if (typeof atob === 'function') {
21
+ // On IE 11, atob() can't handle newlines
22
+ const str = atob(src.replace(/[\n\r]/g, ''));
23
+ const buffer = new Uint8Array(str.length);
24
+ for (let i = 0; i < str.length; ++i)
25
+ buffer[i] = str.charCodeAt(i);
26
+ return buffer;
27
+ }
28
+ else {
29
+ onError('This environment does not support reading binary tags; either Buffer or atob is required');
30
+ return src;
31
+ }
32
+ },
33
+ stringify({ comment, type, value }, ctx, onComment, onChompKeep) {
34
+ const buf = value; // checked earlier by binary.identify()
35
+ let str;
36
+ if (typeof Buffer === 'function') {
37
+ str =
38
+ buf instanceof Buffer
39
+ ? buf.toString('base64')
40
+ : Buffer.from(buf.buffer).toString('base64');
41
+ }
42
+ else if (typeof btoa === 'function') {
43
+ let s = '';
44
+ for (let i = 0; i < buf.length; ++i)
45
+ s += String.fromCharCode(buf[i]);
46
+ str = btoa(s);
47
+ }
48
+ else {
49
+ throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
50
+ }
51
+ if (!type)
52
+ type = Scalar.BLOCK_LITERAL;
53
+ if (type !== Scalar.QUOTE_DOUBLE) {
54
+ const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);
55
+ const n = Math.ceil(str.length / lineWidth);
56
+ const lines = new Array(n);
57
+ for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
58
+ lines[i] = str.substr(o, lineWidth);
59
+ }
60
+ str = lines.join(type === Scalar.BLOCK_LITERAL ? '\n' : ' ');
61
+ }
62
+ return stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);
63
+ }
64
+ };
65
+
66
+ export { binary };
@@ -0,0 +1,26 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+
3
+ function boolStringify({ value, source }, ctx) {
4
+ const boolObj = value ? trueTag : falseTag;
5
+ if (source && boolObj.test.test(source))
6
+ return source;
7
+ return value ? ctx.options.trueStr : ctx.options.falseStr;
8
+ }
9
+ const trueTag = {
10
+ identify: value => value === true,
11
+ default: true,
12
+ tag: 'tag:yaml.org,2002:bool',
13
+ test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,
14
+ resolve: () => new Scalar(true),
15
+ stringify: boolStringify
16
+ };
17
+ const falseTag = {
18
+ identify: value => value === false,
19
+ default: true,
20
+ tag: 'tag:yaml.org,2002:bool',
21
+ test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,
22
+ resolve: () => new Scalar(false),
23
+ stringify: boolStringify
24
+ };
25
+
26
+ export { falseTag, trueTag };
@@ -0,0 +1,43 @@
1
+ import { Scalar } from '../../nodes/Scalar.js';
2
+ import { stringifyNumber } from '../../stringify/stringifyNumber.js';
3
+
4
+ const floatNaN = {
5
+ identify: value => typeof value === 'number',
6
+ default: true,
7
+ tag: 'tag:yaml.org,2002:float',
8
+ test: /^[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN)$/,
9
+ resolve: (str) => str.slice(-3).toLowerCase() === 'nan'
10
+ ? NaN
11
+ : str[0] === '-'
12
+ ? Number.NEGATIVE_INFINITY
13
+ : Number.POSITIVE_INFINITY,
14
+ stringify: stringifyNumber
15
+ };
16
+ const floatExp = {
17
+ identify: value => typeof value === 'number',
18
+ default: true,
19
+ tag: 'tag:yaml.org,2002:float',
20
+ format: 'EXP',
21
+ test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,
22
+ resolve: (str) => parseFloat(str.replace(/_/g, '')),
23
+ stringify: ({ value }) => Number(value).toExponential()
24
+ };
25
+ const float = {
26
+ identify: value => typeof value === 'number',
27
+ default: true,
28
+ tag: 'tag:yaml.org,2002:float',
29
+ test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,
30
+ resolve(str) {
31
+ const node = new Scalar(parseFloat(str.replace(/_/g, '')));
32
+ const dot = str.indexOf('.');
33
+ if (dot !== -1) {
34
+ const f = str.substring(dot + 1).replace(/_/g, '');
35
+ if (f[f.length - 1] === '0')
36
+ node.minFractionDigits = f.length;
37
+ }
38
+ return node;
39
+ },
40
+ stringify: stringifyNumber
41
+ };
42
+
43
+ export { float, floatExp, floatNaN };