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
@@ -1,169 +0,0 @@
1
- function findLineStarts(src) {
2
- const ls = [0];
3
- let offset = src.indexOf('\n');
4
-
5
- while (offset !== -1) {
6
- offset += 1;
7
- ls.push(offset);
8
- offset = src.indexOf('\n', offset);
9
- }
10
-
11
- return ls;
12
- }
13
-
14
- function getSrcInfo(cst) {
15
- let lineStarts, src;
16
-
17
- if (typeof cst === 'string') {
18
- lineStarts = findLineStarts(cst);
19
- src = cst;
20
- } else {
21
- if (Array.isArray(cst)) cst = cst[0];
22
-
23
- if (cst && cst.context) {
24
- if (!cst.lineStarts) cst.lineStarts = findLineStarts(cst.context.src);
25
- lineStarts = cst.lineStarts;
26
- src = cst.context.src;
27
- }
28
- }
29
-
30
- return {
31
- lineStarts,
32
- src
33
- };
34
- }
35
- /**
36
- * @typedef {Object} LinePos - One-indexed position in the source
37
- * @property {number} line
38
- * @property {number} col
39
- */
40
-
41
- /**
42
- * Determine the line/col position matching a character offset.
43
- *
44
- * Accepts a source string or a CST document as the second parameter. With
45
- * the latter, starting indices for lines are cached in the document as
46
- * `lineStarts: number[]`.
47
- *
48
- * Returns a one-indexed `{ line, col }` location if found, or
49
- * `undefined` otherwise.
50
- *
51
- * @param {number} offset
52
- * @param {string|Document|Document[]} cst
53
- * @returns {?LinePos}
54
- */
55
-
56
-
57
- function getLinePos(offset, cst) {
58
- if (typeof offset !== 'number' || offset < 0) return null;
59
- const {
60
- lineStarts,
61
- src
62
- } = getSrcInfo(cst);
63
- if (!lineStarts || !src || offset > src.length) return null;
64
-
65
- for (let i = 0; i < lineStarts.length; ++i) {
66
- const start = lineStarts[i];
67
-
68
- if (offset < start) {
69
- return {
70
- line: i,
71
- col: offset - lineStarts[i - 1] + 1
72
- };
73
- }
74
-
75
- if (offset === start) return {
76
- line: i + 1,
77
- col: 1
78
- };
79
- }
80
-
81
- const line = lineStarts.length;
82
- return {
83
- line,
84
- col: offset - lineStarts[line - 1] + 1
85
- };
86
- }
87
- /**
88
- * Get a specified line from the source.
89
- *
90
- * Accepts a source string or a CST document as the second parameter. With
91
- * the latter, starting indices for lines are cached in the document as
92
- * `lineStarts: number[]`.
93
- *
94
- * Returns the line as a string if found, or `null` otherwise.
95
- *
96
- * @param {number} line One-indexed line number
97
- * @param {string|Document|Document[]} cst
98
- * @returns {?string}
99
- */
100
-
101
- function getLine(line, cst) {
102
- const {
103
- lineStarts,
104
- src
105
- } = getSrcInfo(cst);
106
- if (!lineStarts || !(line >= 1) || line > lineStarts.length) return null;
107
- const start = lineStarts[line - 1];
108
- let end = lineStarts[line]; // undefined for last line; that's ok for slice()
109
-
110
- while (end && end > start && src[end - 1] === '\n') --end;
111
-
112
- return src.slice(start, end);
113
- }
114
- /**
115
- * Pretty-print the starting line from the source indicated by the range `pos`
116
- *
117
- * Trims output to `maxWidth` chars while keeping the starting column visible,
118
- * using `…` at either end to indicate dropped characters.
119
- *
120
- * Returns a two-line string (or `null`) with `\n` as separator; the second line
121
- * will hold appropriately indented `^` marks indicating the column range.
122
- *
123
- * @param {Object} pos
124
- * @param {LinePos} pos.start
125
- * @param {LinePos} [pos.end]
126
- * @param {string|Document|Document[]*} cst
127
- * @param {number} [maxWidth=80]
128
- * @returns {?string}
129
- */
130
-
131
- function getPrettyContext({
132
- start,
133
- end
134
- }, cst, maxWidth = 80) {
135
- let src = getLine(start.line, cst);
136
- if (!src) return null;
137
- let {
138
- col
139
- } = start;
140
-
141
- if (src.length > maxWidth) {
142
- if (col <= maxWidth - 10) {
143
- src = src.substr(0, maxWidth - 1) + '…';
144
- } else {
145
- const halfWidth = Math.round(maxWidth / 2);
146
- if (src.length > col + halfWidth) src = src.substr(0, col + halfWidth - 1) + '…';
147
- col -= src.length - maxWidth;
148
- src = '…' + src.substr(1 - maxWidth);
149
- }
150
- }
151
-
152
- let errLen = 1;
153
- let errEnd = '';
154
-
155
- if (end) {
156
- if (end.line === start.line && col + (end.col - start.col) <= maxWidth + 1) {
157
- errLen = end.col - start.col;
158
- } else {
159
- errLen = Math.min(src.length + 1, maxWidth) - col;
160
- errEnd = '…';
161
- }
162
- }
163
-
164
- const offset = col > 1 ? ' '.repeat(col - 1) : '';
165
- const err = '^'.repeat(errLen);
166
- return "".concat(src, "\n").concat(offset).concat(err).concat(errEnd);
167
- }
168
-
169
- export { getLine, getLinePos, getPrettyContext };
@@ -1,115 +0,0 @@
1
- import { defineProperty as _defineProperty } from '../_virtual/_rollupPluginBabelHelpers.js';
2
- import { Scalar } from '../ast/Scalar.js';
3
- import { YAMLSeq } from '../ast/YAMLSeq.js';
4
- import { YAMLMap } from '../ast/YAMLMap.js';
5
- import { Alias } from '../ast/Alias.js';
6
- import { Merge } from '../ast/Merge.js';
7
-
8
- class Anchors {
9
- static validAnchorNode(node) {
10
- return node instanceof Scalar || node instanceof YAMLSeq || node instanceof YAMLMap;
11
- }
12
-
13
- constructor(prefix) {
14
- _defineProperty(this, "map", Object.create(null));
15
-
16
- this.prefix = prefix;
17
- }
18
-
19
- createAlias(node, name) {
20
- this.setAnchor(node, name);
21
- return new Alias(node);
22
- }
23
-
24
- createMergePair(...sources) {
25
- const merge = new Merge();
26
- merge.value.items = sources.map(s => {
27
- if (s instanceof Alias) {
28
- if (s.source instanceof YAMLMap) return s;
29
- } else if (s instanceof YAMLMap) {
30
- return this.createAlias(s);
31
- }
32
-
33
- throw new Error('Merge sources must be Map nodes or their Aliases');
34
- });
35
- return merge;
36
- }
37
-
38
- getName(node) {
39
- const {
40
- map
41
- } = this;
42
- return Object.keys(map).find(a => map[a] === node);
43
- }
44
-
45
- getNames() {
46
- return Object.keys(this.map);
47
- }
48
-
49
- getNode(name) {
50
- return this.map[name];
51
- }
52
-
53
- newName(prefix) {
54
- if (!prefix) prefix = this.prefix;
55
- const names = Object.keys(this.map);
56
-
57
- for (let i = 1; true; ++i) {
58
- const name = "".concat(prefix).concat(i);
59
- if (!names.includes(name)) return name;
60
- }
61
- } // During parsing, map & aliases contain CST nodes
62
-
63
-
64
- resolveNodes() {
65
- const {
66
- map,
67
- _cstAliases
68
- } = this;
69
- Object.keys(map).forEach(a => {
70
- map[a] = map[a].resolved;
71
- });
72
-
73
- _cstAliases.forEach(a => {
74
- a.source = a.source.resolved;
75
- });
76
-
77
- delete this._cstAliases;
78
- }
79
-
80
- setAnchor(node, name) {
81
- if (node != null && !Anchors.validAnchorNode(node)) {
82
- throw new Error('Anchors may only be set for Scalar, Seq and Map nodes');
83
- }
84
-
85
- if (name && /[\x00-\x19\s,[\]{}]/.test(name)) {
86
- throw new Error('Anchor names must not contain whitespace or control characters');
87
- }
88
-
89
- const {
90
- map
91
- } = this;
92
- const prev = node && Object.keys(map).find(a => map[a] === node);
93
-
94
- if (prev) {
95
- if (!name) {
96
- return prev;
97
- } else if (prev !== name) {
98
- delete map[prev];
99
- map[name] = node;
100
- }
101
- } else {
102
- if (!name) {
103
- if (!node) return null;
104
- name = this.newName();
105
- }
106
-
107
- map[name] = node;
108
- }
109
-
110
- return name;
111
- }
112
-
113
- }
114
-
115
- export { Anchors };
@@ -1,34 +0,0 @@
1
- import { tags, schemas } from '../tags/index.js';
2
- import { getSchemaTags } from './getSchemaTags.js';
3
-
4
- const sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;
5
-
6
- const coreKnownTags = {
7
- 'tag:yaml.org,2002:binary': tags.binary,
8
- 'tag:yaml.org,2002:omap': tags.omap,
9
- 'tag:yaml.org,2002:pairs': tags.pairs,
10
- 'tag:yaml.org,2002:set': tags.set,
11
- 'tag:yaml.org,2002:timestamp': tags.timestamp
12
- };
13
- class Schema {
14
- constructor({
15
- customTags,
16
- merge,
17
- resolveKnownTags,
18
- schema,
19
- sortMapEntries
20
- }) {
21
- this.merge = !!merge;
22
- this.name = schema;
23
- this.knownTags = resolveKnownTags ? coreKnownTags : {};
24
- this.tags = getSchemaTags(schemas, tags, customTags, schema); // Used by createNode(), to avoid circular dependencies
25
-
26
- this.map = tags.map;
27
- this.seq = tags.seq; // Used by createMap()
28
-
29
- this.sortMapEntries = sortMapEntries === true ? sortMapEntriesByKey : sortMapEntries || null;
30
- }
31
-
32
- }
33
-
34
- export { Schema };
@@ -1,33 +0,0 @@
1
- function getSchemaTags(schemas, knownTags, customTags, schemaId) {
2
- let tags = schemas[schemaId.replace(/\W/g, '')]; // 'yaml-1.1' -> 'yaml11'
3
-
4
- if (!tags) {
5
- const keys = Object.keys(schemas).map(key => JSON.stringify(key)).join(', ');
6
- throw new Error("Unknown schema \"".concat(schemaId, "\"; use one of ").concat(keys));
7
- }
8
-
9
- if (Array.isArray(customTags)) {
10
- for (const tag of customTags) tags = tags.concat(tag);
11
- } else if (typeof customTags === 'function') {
12
- tags = customTags(tags.slice());
13
- }
14
-
15
- for (let i = 0; i < tags.length; ++i) {
16
- const tag = tags[i];
17
-
18
- if (typeof tag === 'string') {
19
- const tagObj = knownTags[tag];
20
-
21
- if (!tagObj) {
22
- const keys = Object.keys(knownTags).map(key => JSON.stringify(key)).join(', ');
23
- throw new Error("Unknown custom tag \"".concat(tag, "\"; use one of ").concat(keys));
24
- }
25
-
26
- tags[i] = tagObj;
27
- }
28
- }
29
-
30
- return tags;
31
- }
32
-
33
- export { getSchemaTags };
@@ -1,27 +0,0 @@
1
- import { Collection } from '../ast/Collection.js';
2
- import { Pair } from '../ast/Pair.js';
3
- import { Scalar } from '../ast/Scalar.js';
4
-
5
- const visit = (node, tags) => {
6
- if (node && typeof node === 'object') {
7
- const {
8
- tag
9
- } = node;
10
-
11
- if (node instanceof Collection) {
12
- if (tag) tags[tag] = true;
13
- node.items.forEach(n => visit(n, tags));
14
- } else if (node instanceof Pair) {
15
- visit(node.key, tags);
16
- visit(node.value, tags);
17
- } else if (node instanceof Scalar) {
18
- if (tag) tags[tag] = true;
19
- }
20
- }
21
-
22
- return tags;
23
- };
24
-
25
- const listTagNames = node => Object.keys(visit(node, {}));
26
-
27
- export { listTagNames };
@@ -1,60 +0,0 @@
1
- import { Type } from '../constants.js';
2
- import { YAMLSyntaxError } from '../errors.js';
3
- import { resolveNode } from '../resolve/resolveNode.js';
4
- import { Collection } from '../ast/Collection.js';
5
-
6
- function parseContents(doc, contents) {
7
- const comments = {
8
- before: [],
9
- after: []
10
- };
11
- let body = undefined;
12
- let spaceBefore = false;
13
-
14
- for (const node of contents) {
15
- if (node.valueRange) {
16
- if (body !== undefined) {
17
- const msg = 'Document contains trailing content not separated by a ... or --- line';
18
- doc.errors.push(new YAMLSyntaxError(node, msg));
19
- break;
20
- }
21
-
22
- const res = resolveNode(doc, node);
23
-
24
- if (spaceBefore) {
25
- res.spaceBefore = true;
26
- spaceBefore = false;
27
- }
28
-
29
- body = res;
30
- } else if (node.comment !== null) {
31
- const cc = body === undefined ? comments.before : comments.after;
32
- cc.push(node.comment);
33
- } else if (node.type === Type.BLANK_LINE) {
34
- spaceBefore = true;
35
-
36
- if (body === undefined && comments.before.length > 0 && !doc.commentBefore) {
37
- // space-separated comments at start are parsed as document comments
38
- doc.commentBefore = comments.before.join('\n');
39
- comments.before = [];
40
- }
41
- }
42
- }
43
-
44
- doc.contents = body || null;
45
-
46
- if (!body) {
47
- doc.comment = comments.before.concat(comments.after).join('\n') || null;
48
- } else {
49
- const cb = comments.before.join('\n');
50
-
51
- if (cb) {
52
- const cbNode = body instanceof Collection && body.items[0] ? body.items[0] : body;
53
- cbNode.commentBefore = cbNode.commentBefore ? "".concat(cb, "\n").concat(cbNode.commentBefore) : cb;
54
- }
55
-
56
- doc.comment = comments.after.join('\n') || null;
57
- }
58
- }
59
-
60
- export { parseContents };
@@ -1,107 +0,0 @@
1
- import { YAMLWarning, YAMLSemanticError } from '../errors.js';
2
- import { documentOptions } from '../options.js';
3
-
4
- function resolveTagDirective({
5
- tagPrefixes
6
- }, directive) {
7
- const [handle, prefix] = directive.parameters;
8
-
9
- if (!handle || !prefix) {
10
- const msg = 'Insufficient parameters given for %TAG directive';
11
- throw new YAMLSemanticError(directive, msg);
12
- }
13
-
14
- if (tagPrefixes.some(p => p.handle === handle)) {
15
- const msg = 'The %TAG directive must only be given at most once per handle in the same document.';
16
- throw new YAMLSemanticError(directive, msg);
17
- }
18
-
19
- return {
20
- handle,
21
- prefix
22
- };
23
- }
24
-
25
- function resolveYamlDirective(doc, directive) {
26
- let [version] = directive.parameters;
27
- if (directive.name === 'YAML:1.0') version = '1.0';
28
-
29
- if (!version) {
30
- const msg = 'Insufficient parameters given for %YAML directive';
31
- throw new YAMLSemanticError(directive, msg);
32
- }
33
-
34
- if (!documentOptions[version]) {
35
- const v0 = doc.version || doc.options.version;
36
- const msg = "Document will be parsed as YAML ".concat(v0, " rather than YAML ").concat(version);
37
- doc.warnings.push(new YAMLWarning(directive, msg));
38
- }
39
-
40
- return version;
41
- }
42
-
43
- function parseDirectives(doc, directives, prevDoc) {
44
- const directiveComments = [];
45
- let hasDirectives = false;
46
-
47
- for (const directive of directives) {
48
- const {
49
- comment,
50
- name
51
- } = directive;
52
-
53
- switch (name) {
54
- case 'TAG':
55
- try {
56
- doc.tagPrefixes.push(resolveTagDirective(doc, directive));
57
- } catch (error) {
58
- doc.errors.push(error);
59
- }
60
-
61
- hasDirectives = true;
62
- break;
63
-
64
- case 'YAML':
65
- case 'YAML:1.0':
66
- if (doc.version) {
67
- const msg = 'The %YAML directive must only be given at most once per document.';
68
- doc.errors.push(new YAMLSemanticError(directive, msg));
69
- }
70
-
71
- try {
72
- doc.version = resolveYamlDirective(doc, directive);
73
- } catch (error) {
74
- doc.errors.push(error);
75
- }
76
-
77
- hasDirectives = true;
78
- break;
79
-
80
- default:
81
- if (name) {
82
- const msg = "YAML only supports %TAG and %YAML directives, and not %".concat(name);
83
- doc.warnings.push(new YAMLWarning(directive, msg));
84
- }
85
-
86
- }
87
-
88
- if (comment) directiveComments.push(comment);
89
- }
90
-
91
- if (prevDoc && !hasDirectives && '1.1' === (doc.version || prevDoc.version || doc.options.version)) {
92
- const copyTagPrefix = ({
93
- handle,
94
- prefix
95
- }) => ({
96
- handle,
97
- prefix
98
- });
99
-
100
- doc.tagPrefixes = prevDoc.tagPrefixes.map(copyTagPrefix);
101
- doc.version = prevDoc.version;
102
- }
103
-
104
- doc.commentBefore = directiveComments.join('\n') || null;
105
- }
106
-
107
- export { parseDirectives };
@@ -1,86 +0,0 @@
1
- import { YAMLSemanticError } from '../errors.js';
2
- import { Type } from '../constants.js';
3
-
4
- function checkFlowCollectionEnd(errors, cst) {
5
- let char, name;
6
-
7
- switch (cst.type) {
8
- case Type.FLOW_MAP:
9
- char = '}';
10
- name = 'flow map';
11
- break;
12
-
13
- case Type.FLOW_SEQ:
14
- char = ']';
15
- name = 'flow sequence';
16
- break;
17
-
18
- default:
19
- errors.push(new YAMLSemanticError(cst, 'Not a flow collection!?'));
20
- return;
21
- }
22
-
23
- let lastItem;
24
-
25
- for (let i = cst.items.length - 1; i >= 0; --i) {
26
- const item = cst.items[i];
27
-
28
- if (!item || item.type !== Type.COMMENT) {
29
- lastItem = item;
30
- break;
31
- }
32
- }
33
-
34
- if (lastItem && lastItem.char !== char) {
35
- const msg = "Expected ".concat(name, " to end with ").concat(char);
36
- let err;
37
-
38
- if (typeof lastItem.offset === 'number') {
39
- err = new YAMLSemanticError(cst, msg);
40
- err.offset = lastItem.offset + 1;
41
- } else {
42
- err = new YAMLSemanticError(lastItem, msg);
43
- if (lastItem.range && lastItem.range.end) err.offset = lastItem.range.end - lastItem.range.start;
44
- }
45
-
46
- errors.push(err);
47
- }
48
- }
49
- function checkFlowCommentSpace(errors, comment) {
50
- const prev = comment.context.src[comment.range.start - 1];
51
-
52
- if (prev !== '\n' && prev !== '\t' && prev !== ' ') {
53
- const msg = 'Comments must be separated from other tokens by white space characters';
54
- errors.push(new YAMLSemanticError(comment, msg));
55
- }
56
- }
57
- function getLongKeyError(source, key) {
58
- const sk = String(key);
59
- const k = sk.substr(0, 8) + '...' + sk.substr(-8);
60
- return new YAMLSemanticError(source, "The \"".concat(k, "\" key is too long"));
61
- }
62
- function resolveComments(collection, comments) {
63
- for (const {
64
- afterKey,
65
- before,
66
- comment
67
- } of comments) {
68
- let item = collection.items[before];
69
-
70
- if (!item) {
71
- if (comment !== undefined) {
72
- if (collection.comment) collection.comment += '\n' + comment;else collection.comment = comment;
73
- }
74
- } else {
75
- if (afterKey && item.value) item = item.value;
76
-
77
- if (comment === undefined) {
78
- if (afterKey || !item.commentBefore) item.spaceBefore = true;
79
- } else {
80
- if (item.commentBefore) item.commentBefore += '\n' + comment;else item.commentBefore = comment;
81
- }
82
- }
83
- }
84
- }
85
-
86
- export { checkFlowCollectionEnd, checkFlowCommentSpace, getLongKeyError, resolveComments };