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