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,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 };