yaml 2.0.0-2 → 2.0.0-6

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 (347) 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 +72 -0
  6. package/browser/dist/compose/compose-scalar.js +74 -0
  7. package/browser/dist/compose/composer.js +218 -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 +211 -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 +71 -55
  22. package/browser/dist/doc/directives.js +161 -0
  23. package/browser/dist/errors.js +50 -72
  24. package/browser/dist/index.js +17 -73
  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 +656 -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 +146 -0
  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 +75 -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 +222 -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 +213 -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 +71 -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 +40 -71
  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 +658 -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 +148 -0
  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/ast/visit.js +0 -83
  233. package/browser/dist/constants.js +0 -40
  234. package/browser/dist/cst/Alias.js +0 -26
  235. package/browser/dist/cst/BlankLine.js +0 -34
  236. package/browser/dist/cst/BlockValue.js +0 -240
  237. package/browser/dist/cst/Collection.js +0 -259
  238. package/browser/dist/cst/CollectionItem.js +0 -123
  239. package/browser/dist/cst/Comment.js +0 -27
  240. package/browser/dist/cst/Directive.js +0 -53
  241. package/browser/dist/cst/Document.js +0 -262
  242. package/browser/dist/cst/FlowCollection.js +0 -201
  243. package/browser/dist/cst/Node.js +0 -355
  244. package/browser/dist/cst/ParseContext.js +0 -234
  245. package/browser/dist/cst/PlainValue.js +0 -171
  246. package/browser/dist/cst/QuoteDouble.js +0 -224
  247. package/browser/dist/cst/QuoteSingle.js +0 -100
  248. package/browser/dist/cst/Range.js +0 -56
  249. package/browser/dist/cst/parse.js +0 -46
  250. package/browser/dist/cst/source-utils.js +0 -169
  251. package/browser/dist/doc/Anchors.js +0 -115
  252. package/browser/dist/doc/Schema.js +0 -34
  253. package/browser/dist/doc/getSchemaTags.js +0 -33
  254. package/browser/dist/doc/listTagNames.js +0 -27
  255. package/browser/dist/doc/parseContents.js +0 -60
  256. package/browser/dist/doc/parseDirectives.js +0 -107
  257. package/browser/dist/resolve/collection-utils.js +0 -86
  258. package/browser/dist/resolve/resolveMap.js +0 -315
  259. package/browser/dist/resolve/resolveNode.js +0 -173
  260. package/browser/dist/resolve/resolveScalar.js +0 -20
  261. package/browser/dist/resolve/resolveSeq.js +0 -170
  262. package/browser/dist/resolve/resolveTag.js +0 -107
  263. package/browser/dist/resolve/resolveTagName.js +0 -87
  264. package/browser/dist/stringify/addComment.js +0 -10
  265. package/browser/dist/stringify/stringifyTag.js +0 -28
  266. package/browser/dist/tags/core.js +0 -128
  267. package/browser/dist/tags/failsafe/index.js +0 -7
  268. package/browser/dist/tags/failsafe/map.js +0 -37
  269. package/browser/dist/tags/failsafe/seq.js +0 -34
  270. package/browser/dist/tags/failsafe/string.js +0 -20
  271. package/browser/dist/tags/index.js +0 -39
  272. package/browser/dist/tags/json.js +0 -62
  273. package/browser/dist/tags/options.js +0 -31
  274. package/browser/dist/tags/yaml-1.1/binary.js +0 -83
  275. package/browser/dist/tags/yaml-1.1/index.js +0 -174
  276. package/browser/dist/tags/yaml-1.1/omap.js +0 -86
  277. package/browser/dist/tags/yaml-1.1/pairs.js +0 -62
  278. package/browser/dist/tags/yaml-1.1/set.js +0 -78
  279. package/browser/dist/tags/yaml-1.1/timestamp.js +0 -101
  280. package/browser/dist/types.js +0 -10
  281. package/cst.d.ts +0 -185
  282. package/dist/_virtual/_rollupPluginBabelHelpers.js +0 -18
  283. package/dist/ast/Alias.js +0 -97
  284. package/dist/ast/Collection.js +0 -196
  285. package/dist/ast/Merge.js +0 -74
  286. package/dist/ast/Node.js +0 -5
  287. package/dist/ast/Pair.js +0 -203
  288. package/dist/ast/Scalar.js +0 -24
  289. package/dist/ast/YAMLMap.js +0 -94
  290. package/dist/ast/YAMLSeq.js +0 -69
  291. package/dist/ast/toJS.js +0 -31
  292. package/dist/ast/visit.js +0 -85
  293. package/dist/constants.js +0 -46
  294. package/dist/cst/Alias.js +0 -28
  295. package/dist/cst/BlankLine.js +0 -36
  296. package/dist/cst/BlockValue.js +0 -243
  297. package/dist/cst/Collection.js +0 -262
  298. package/dist/cst/CollectionItem.js +0 -125
  299. package/dist/cst/Comment.js +0 -29
  300. package/dist/cst/Directive.js +0 -55
  301. package/dist/cst/Document.js +0 -264
  302. package/dist/cst/FlowCollection.js +0 -203
  303. package/dist/cst/Node.js +0 -357
  304. package/dist/cst/ParseContext.js +0 -236
  305. package/dist/cst/PlainValue.js +0 -173
  306. package/dist/cst/QuoteDouble.js +0 -226
  307. package/dist/cst/QuoteSingle.js +0 -102
  308. package/dist/cst/Range.js +0 -58
  309. package/dist/cst/parse.js +0 -48
  310. package/dist/cst/source-utils.js +0 -173
  311. package/dist/doc/Anchors.js +0 -117
  312. package/dist/doc/Schema.js +0 -36
  313. package/dist/doc/getSchemaTags.js +0 -35
  314. package/dist/doc/listTagNames.js +0 -29
  315. package/dist/doc/parseContents.js +0 -62
  316. package/dist/doc/parseDirectives.js +0 -109
  317. package/dist/resolve/collection-utils.js +0 -91
  318. package/dist/resolve/resolveMap.js +0 -317
  319. package/dist/resolve/resolveNode.js +0 -175
  320. package/dist/resolve/resolveScalar.js +0 -22
  321. package/dist/resolve/resolveSeq.js +0 -172
  322. package/dist/resolve/resolveTag.js +0 -109
  323. package/dist/resolve/resolveTagName.js +0 -89
  324. package/dist/stringify/addComment.js +0 -13
  325. package/dist/stringify/stringifyTag.js +0 -30
  326. package/dist/tags/core.js +0 -138
  327. package/dist/tags/failsafe/index.js +0 -9
  328. package/dist/tags/failsafe/map.js +0 -39
  329. package/dist/tags/failsafe/seq.js +0 -36
  330. package/dist/tags/failsafe/string.js +0 -22
  331. package/dist/tags/index.js +0 -42
  332. package/dist/tags/json.js +0 -64
  333. package/dist/tags/options.js +0 -37
  334. package/dist/tags/yaml-1.1/binary.js +0 -85
  335. package/dist/tags/yaml-1.1/index.js +0 -176
  336. package/dist/tags/yaml-1.1/omap.js +0 -89
  337. package/dist/tags/yaml-1.1/pairs.js +0 -66
  338. package/dist/tags/yaml-1.1/set.js +0 -81
  339. package/dist/tags/yaml-1.1/timestamp.js +0 -105
  340. package/dist/types.js +0 -29
  341. package/index.d.ts +0 -519
  342. package/index.js +0 -1
  343. package/types.d.ts +0 -379
  344. package/types.js +0 -17
  345. package/types.mjs +0 -17
  346. package/util.d.ts +0 -76
  347. package/util.mjs +0 -15
@@ -1,262 +0,0 @@
1
- import { Type, Char } from '../constants.js';
2
- import { YAMLSemanticError, YAMLSyntaxError } from '../errors.js';
3
- import { BlankLine } from './BlankLine.js';
4
- import { grabCollectionEndComments } from './Collection.js';
5
- import { Comment } from './Comment.js';
6
- import { Directive } from './Directive.js';
7
- import { Node } from './Node.js';
8
- import { Range } from './Range.js';
9
-
10
- class Document extends Node {
11
- static startCommentOrEndBlankLine(src, start) {
12
- const offset = Node.endOfWhiteSpace(src, start);
13
- const ch = src[offset];
14
- return ch === '#' || ch === '\n' ? offset : start;
15
- }
16
-
17
- constructor() {
18
- super(Type.DOCUMENT);
19
- this.directives = null;
20
- this.contents = null;
21
- this.directivesEndMarker = null;
22
- this.documentEndMarker = null;
23
- }
24
-
25
- parseDirectives(start) {
26
- const {
27
- src
28
- } = this.context;
29
- this.directives = [];
30
- let atLineStart = true;
31
- let hasDirectives = false;
32
- let offset = start;
33
-
34
- while (!Node.atDocumentBoundary(src, offset, Char.DIRECTIVES_END)) {
35
- offset = Document.startCommentOrEndBlankLine(src, offset);
36
-
37
- switch (src[offset]) {
38
- case '\n':
39
- if (atLineStart) {
40
- const blankLine = new BlankLine();
41
- offset = blankLine.parse({
42
- src
43
- }, offset);
44
-
45
- if (offset < src.length) {
46
- this.directives.push(blankLine);
47
- }
48
- } else {
49
- offset += 1;
50
- atLineStart = true;
51
- }
52
-
53
- break;
54
-
55
- case '#':
56
- {
57
- const comment = new Comment();
58
- offset = comment.parse({
59
- src
60
- }, offset);
61
- this.directives.push(comment);
62
- atLineStart = false;
63
- }
64
- break;
65
-
66
- case '%':
67
- {
68
- const directive = new Directive();
69
- offset = directive.parse({
70
- parent: this,
71
- src
72
- }, offset);
73
- this.directives.push(directive);
74
- hasDirectives = true;
75
- atLineStart = false;
76
- }
77
- break;
78
-
79
- default:
80
- if (hasDirectives) {
81
- this.error = new YAMLSemanticError(this, 'Missing directives-end indicator line');
82
- } else if (this.directives.length > 0) {
83
- this.contents = this.directives;
84
- this.directives = [];
85
- }
86
-
87
- return offset;
88
- }
89
- }
90
-
91
- if (src[offset]) {
92
- this.directivesEndMarker = new Range(offset, offset + 3);
93
- return offset + 3;
94
- }
95
-
96
- if (hasDirectives) {
97
- this.error = new YAMLSemanticError(this, 'Missing directives-end indicator line');
98
- } else if (this.directives.length > 0) {
99
- this.contents = this.directives;
100
- this.directives = [];
101
- }
102
-
103
- return offset;
104
- }
105
-
106
- parseContents(start) {
107
- const {
108
- parseNode,
109
- src
110
- } = this.context;
111
- if (!this.contents) this.contents = [];
112
- let lineStart = start;
113
-
114
- while (src[lineStart - 1] === '-') lineStart -= 1;
115
-
116
- let offset = Node.endOfWhiteSpace(src, start);
117
- let atLineStart = lineStart === start;
118
- this.valueRange = new Range(offset);
119
-
120
- while (!Node.atDocumentBoundary(src, offset, Char.DOCUMENT_END)) {
121
- switch (src[offset]) {
122
- case '\n':
123
- if (atLineStart) {
124
- const blankLine = new BlankLine();
125
- offset = blankLine.parse({
126
- src
127
- }, offset);
128
-
129
- if (offset < src.length) {
130
- this.contents.push(blankLine);
131
- }
132
- } else {
133
- offset += 1;
134
- atLineStart = true;
135
- }
136
-
137
- lineStart = offset;
138
- break;
139
-
140
- case '#':
141
- {
142
- const comment = new Comment();
143
- offset = comment.parse({
144
- src
145
- }, offset);
146
- this.contents.push(comment);
147
- atLineStart = false;
148
- }
149
- break;
150
-
151
- default:
152
- {
153
- const iEnd = Node.endOfIndent(src, offset);
154
- const context = {
155
- atLineStart,
156
- indent: -1,
157
- inFlow: false,
158
- inCollection: false,
159
- lineStart,
160
- parent: this
161
- };
162
- const node = parseNode(context, iEnd);
163
- if (!node) return this.valueRange.end = iEnd; // at next document start
164
-
165
- this.contents.push(node);
166
- offset = node.range.end;
167
- atLineStart = false;
168
- const ec = grabCollectionEndComments(node);
169
- if (ec) Array.prototype.push.apply(this.contents, ec);
170
- }
171
- }
172
-
173
- offset = Document.startCommentOrEndBlankLine(src, offset);
174
- }
175
-
176
- this.valueRange.end = offset;
177
-
178
- if (src[offset]) {
179
- this.documentEndMarker = new Range(offset, offset + 3);
180
- offset += 3;
181
-
182
- if (src[offset]) {
183
- offset = Node.endOfWhiteSpace(src, offset);
184
-
185
- if (src[offset] === '#') {
186
- const comment = new Comment();
187
- offset = comment.parse({
188
- src
189
- }, offset);
190
- this.contents.push(comment);
191
- }
192
-
193
- switch (src[offset]) {
194
- case '\n':
195
- offset += 1;
196
- break;
197
-
198
- case undefined:
199
- break;
200
-
201
- default:
202
- this.error = new YAMLSyntaxError(this, 'Document end marker line cannot have a non-comment suffix');
203
- }
204
- }
205
- }
206
-
207
- return offset;
208
- }
209
- /**
210
- * @param {ParseContext} context
211
- * @param {number} start - Index of first character
212
- * @returns {number} - Index of the character after this
213
- */
214
-
215
-
216
- parse(context, start) {
217
- context.root = this;
218
- this.context = context;
219
- const {
220
- src
221
- } = context;
222
- let offset = src.charCodeAt(start) === 0xfeff ? start + 1 : start; // skip BOM
223
-
224
- offset = this.parseDirectives(offset);
225
- offset = this.parseContents(offset);
226
- return offset;
227
- }
228
-
229
- setOrigRanges(cr, offset) {
230
- offset = super.setOrigRanges(cr, offset);
231
- this.directives.forEach(node => {
232
- offset = node.setOrigRanges(cr, offset);
233
- });
234
- if (this.directivesEndMarker) offset = this.directivesEndMarker.setOrigRange(cr, offset);
235
- this.contents.forEach(node => {
236
- offset = node.setOrigRanges(cr, offset);
237
- });
238
- if (this.documentEndMarker) offset = this.documentEndMarker.setOrigRange(cr, offset);
239
- return offset;
240
- }
241
-
242
- toString() {
243
- const {
244
- contents,
245
- directives,
246
- value
247
- } = this;
248
- if (value != null) return value;
249
- let str = directives.join('');
250
-
251
- if (contents.length > 0) {
252
- if (directives.length > 0 || contents[0].type === Type.COMMENT) str += '---\n';
253
- str += contents.join('');
254
- }
255
-
256
- if (str[str.length - 1] !== '\n') str += '\n';
257
- return str;
258
- }
259
-
260
- }
261
-
262
- export { Document };
@@ -1,201 +0,0 @@
1
- import { Type } from '../constants.js';
2
- import { YAMLSemanticError } from '../errors.js';
3
- import { BlankLine } from './BlankLine.js';
4
- import { Comment } from './Comment.js';
5
- import { Node } from './Node.js';
6
- import { Range } from './Range.js';
7
-
8
- class FlowCollection extends Node {
9
- constructor(type, props) {
10
- super(type, props);
11
- this.items = null;
12
- }
13
-
14
- prevNodeIsJsonLike(idx = this.items.length) {
15
- const node = this.items[idx - 1];
16
- return !!node && (node.jsonLike || node.type === Type.COMMENT && this.prevNodeIsJsonLike(idx - 1));
17
- }
18
- /**
19
- * @param {ParseContext} context
20
- * @param {number} start - Index of first character
21
- * @returns {number} - Index of the character after this
22
- */
23
-
24
-
25
- parse(context, start) {
26
- this.context = context;
27
- const {
28
- parseNode,
29
- src
30
- } = context;
31
- let {
32
- indent,
33
- lineStart
34
- } = context;
35
- let char = src[start]; // { or [
36
-
37
- this.items = [{
38
- char,
39
- offset: start
40
- }];
41
- let offset = Node.endOfWhiteSpace(src, start + 1);
42
- char = src[offset];
43
-
44
- while (char && char !== ']' && char !== '}') {
45
- switch (char) {
46
- case '\n':
47
- {
48
- lineStart = offset + 1;
49
- const wsEnd = Node.endOfWhiteSpace(src, lineStart);
50
-
51
- if (src[wsEnd] === '\n') {
52
- const blankLine = new BlankLine();
53
- lineStart = blankLine.parse({
54
- src
55
- }, lineStart);
56
- this.items.push(blankLine);
57
- }
58
-
59
- offset = Node.endOfIndent(src, lineStart);
60
-
61
- if (offset <= lineStart + indent) {
62
- char = src[offset];
63
-
64
- if (offset < lineStart + indent || char !== ']' && char !== '}') {
65
- const msg = 'Insufficient indentation in flow collection';
66
- this.error = new YAMLSemanticError(this, msg);
67
- }
68
- }
69
- }
70
- break;
71
-
72
- case ',':
73
- {
74
- this.items.push({
75
- char,
76
- offset
77
- });
78
- offset += 1;
79
- }
80
- break;
81
-
82
- case '#':
83
- {
84
- const comment = new Comment();
85
- offset = comment.parse({
86
- src
87
- }, offset);
88
- this.items.push(comment);
89
- }
90
- break;
91
-
92
- case '?':
93
- case ':':
94
- {
95
- const next = src[offset + 1];
96
-
97
- if (next === '\n' || next === '\t' || next === ' ' || next === ',' || // in-flow : after JSON-like key does not need to be followed by whitespace
98
- char === ':' && this.prevNodeIsJsonLike()) {
99
- this.items.push({
100
- char,
101
- offset
102
- });
103
- offset += 1;
104
- break;
105
- }
106
- }
107
- // fallthrough
108
-
109
- default:
110
- {
111
- const node = parseNode({
112
- atLineStart: false,
113
- inCollection: false,
114
- inFlow: true,
115
- indent: -1,
116
- lineStart,
117
- parent: this
118
- }, offset);
119
-
120
- if (!node) {
121
- // at next document start
122
- this.valueRange = new Range(start, offset);
123
- return offset;
124
- }
125
-
126
- this.items.push(node);
127
- offset = Node.normalizeOffset(src, node.range.end);
128
- }
129
- }
130
-
131
- offset = Node.endOfWhiteSpace(src, offset);
132
- char = src[offset];
133
- }
134
-
135
- this.valueRange = new Range(start, offset + 1);
136
-
137
- if (char) {
138
- this.items.push({
139
- char,
140
- offset
141
- });
142
- offset = Node.endOfWhiteSpace(src, offset + 1);
143
- offset = this.parseComment(offset);
144
- }
145
-
146
- return offset;
147
- }
148
-
149
- setOrigRanges(cr, offset) {
150
- offset = super.setOrigRanges(cr, offset);
151
- this.items.forEach(node => {
152
- if (node instanceof Node) {
153
- offset = node.setOrigRanges(cr, offset);
154
- } else if (cr.length === 0) {
155
- node.origOffset = node.offset;
156
- } else {
157
- let i = offset;
158
-
159
- while (i < cr.length) {
160
- if (cr[i] > node.offset) break;else ++i;
161
- }
162
-
163
- node.origOffset = node.offset + i;
164
- offset = i;
165
- }
166
- });
167
- return offset;
168
- }
169
-
170
- toString() {
171
- const {
172
- context: {
173
- src
174
- },
175
- items,
176
- range,
177
- value
178
- } = this;
179
- if (value != null) return value;
180
- const nodes = items.filter(item => item instanceof Node);
181
- let str = '';
182
- let prevEnd = range.start;
183
- nodes.forEach(node => {
184
- const prefix = src.slice(prevEnd, node.range.start);
185
- prevEnd = node.range.end;
186
- str += prefix + String(node);
187
-
188
- if (str[str.length - 1] === '\n' && src[prevEnd - 1] !== '\n' && src[prevEnd] === '\n') {
189
- // Comment range does not include the terminal newline, but its
190
- // stringified value does. Without this fix, newlines at comment ends
191
- // get duplicated.
192
- prevEnd += 1;
193
- }
194
- });
195
- str += src.slice(prevEnd, range.end);
196
- return Node.addStringTerminator(src, range.end, str);
197
- }
198
-
199
- }
200
-
201
- export { FlowCollection };