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,107 +0,0 @@
1
- import { Collection } from '../ast/Collection.js';
2
- import { Scalar } from '../ast/Scalar.js';
3
- import { Type, defaultTags } from '../constants.js';
4
- import { YAMLSemanticError, YAMLWarning, YAMLReferenceError } from '../errors.js';
5
- import { resolveMap } from './resolveMap.js';
6
- import { resolveScalar } from './resolveScalar.js';
7
- import { resolveSeq } from './resolveSeq.js';
8
-
9
- function resolveByTagName({
10
- knownTags,
11
- tags
12
- }, tagName, value, onError) {
13
- const matchWithTest = [];
14
-
15
- for (const tag of tags) {
16
- if (tag.tag === tagName) {
17
- if (tag.test) {
18
- if (typeof value === 'string') matchWithTest.push(tag);else onError("The tag ".concat(tagName, " cannot be applied to a collection"));
19
- } else {
20
- const res = tag.resolve(value, onError);
21
- return res instanceof Collection ? res : new Scalar(res);
22
- }
23
- }
24
- }
25
-
26
- if (matchWithTest.length > 0) return resolveScalar(value, matchWithTest);
27
- const kt = knownTags[tagName];
28
-
29
- if (kt) {
30
- tags.push(Object.assign({}, kt, {
31
- default: false,
32
- test: undefined
33
- }));
34
- const res = kt.resolve(value, onError);
35
- return res instanceof Collection ? res : new Scalar(res);
36
- }
37
-
38
- return null;
39
- }
40
-
41
- function resolveTag(doc, node, tagName) {
42
- const {
43
- MAP,
44
- SEQ,
45
- STR
46
- } = defaultTags;
47
- let value, fallback;
48
-
49
- const onError = message => doc.errors.push(new YAMLSemanticError(node, message));
50
-
51
- try {
52
- switch (node.type) {
53
- case Type.FLOW_MAP:
54
- case Type.MAP:
55
- value = resolveMap(doc, node);
56
- fallback = MAP;
57
- if (tagName === SEQ || tagName === STR) onError("The tag ".concat(tagName, " cannot be applied to a mapping"));
58
- break;
59
-
60
- case Type.FLOW_SEQ:
61
- case Type.SEQ:
62
- value = resolveSeq(doc, node);
63
- fallback = SEQ;
64
- if (tagName === MAP || tagName === STR) onError("The tag ".concat(tagName, " cannot be applied to a sequence"));
65
- break;
66
-
67
- default:
68
- value = node.strValue || '';
69
-
70
- if (typeof value !== 'string') {
71
- value.errors.forEach(error => doc.errors.push(error));
72
- value = value.str;
73
- }
74
-
75
- if (tagName === MAP || tagName === SEQ) onError("The tag ".concat(tagName, " cannot be applied to a scalar"));
76
- fallback = STR;
77
- }
78
-
79
- const res = resolveByTagName(doc.schema, tagName, value, onError);
80
-
81
- if (res) {
82
- if (tagName && node.tag) res.tag = tagName;
83
- return res;
84
- }
85
- } catch (error) {
86
- /* istanbul ignore if */
87
- if (!error.source) error.source = node;
88
- doc.errors.push(error);
89
- return null;
90
- }
91
-
92
- try {
93
- if (!fallback) throw new Error("The tag ".concat(tagName, " is unavailable"));
94
- const msg = "The tag ".concat(tagName, " is unavailable, falling back to ").concat(fallback);
95
- doc.warnings.push(new YAMLWarning(node, msg));
96
- const res = resolveByTagName(doc.schema, fallback, value, onError);
97
- res.tag = tagName;
98
- return res;
99
- } catch (error) {
100
- const refError = new YAMLReferenceError(node, error.message);
101
- refError.stack = error.stack;
102
- doc.errors.push(refError);
103
- return null;
104
- }
105
- }
106
-
107
- export { resolveTag };
@@ -1,87 +0,0 @@
1
- import { Type, defaultTags } from '../constants.js';
2
- import { YAMLSemanticError, YAMLWarning } from '../errors.js';
3
-
4
- function resolveTagHandle(doc, node) {
5
- const {
6
- handle,
7
- suffix
8
- } = node.tag;
9
- let prefix = doc.tagPrefixes.find(p => p.handle === handle);
10
-
11
- if (!prefix) {
12
- const dtp = doc.getDefaults().tagPrefixes;
13
- if (dtp) prefix = dtp.find(p => p.handle === handle);
14
- if (!prefix) throw new YAMLSemanticError(node, "The ".concat(handle, " tag handle is non-default and was not declared."));
15
- }
16
-
17
- if (!suffix) throw new YAMLSemanticError(node, "The ".concat(handle, " tag has no suffix."));
18
-
19
- if (handle === '!' && (doc.version || doc.options.version) === '1.0') {
20
- if (suffix[0] === '^') {
21
- doc.warnings.push(new YAMLWarning(node, 'YAML 1.0 ^ tag expansion is not supported'));
22
- return suffix;
23
- }
24
-
25
- if (/[:/]/.test(suffix)) {
26
- // word/foo -> tag:word.yaml.org,2002:foo
27
- const vocab = suffix.match(/^([a-z0-9-]+)\/(.*)/i);
28
- return vocab ? "tag:".concat(vocab[1], ".yaml.org,2002:").concat(vocab[2]) : "tag:".concat(suffix);
29
- }
30
- }
31
-
32
- return prefix.prefix + decodeURIComponent(suffix);
33
- }
34
-
35
- function resolveTagName(doc, node) {
36
- const {
37
- tag,
38
- type
39
- } = node;
40
- let nonSpecific = false;
41
-
42
- if (tag) {
43
- const {
44
- handle,
45
- suffix,
46
- verbatim
47
- } = tag;
48
-
49
- if (verbatim) {
50
- if (verbatim !== '!' && verbatim !== '!!') return verbatim;
51
- const msg = "Verbatim tags aren't resolved, so ".concat(verbatim, " is invalid.");
52
- doc.errors.push(new YAMLSemanticError(node, msg));
53
- } else if (handle === '!' && !suffix) {
54
- nonSpecific = true;
55
- } else {
56
- try {
57
- return resolveTagHandle(doc, node);
58
- } catch (error) {
59
- doc.errors.push(error);
60
- }
61
- }
62
- }
63
-
64
- switch (type) {
65
- case Type.BLOCK_FOLDED:
66
- case Type.BLOCK_LITERAL:
67
- case Type.QUOTE_DOUBLE:
68
- case Type.QUOTE_SINGLE:
69
- return defaultTags.STR;
70
-
71
- case Type.FLOW_MAP:
72
- case Type.MAP:
73
- return defaultTags.MAP;
74
-
75
- case Type.FLOW_SEQ:
76
- case Type.SEQ:
77
- return defaultTags.SEQ;
78
-
79
- case Type.PLAIN:
80
- return nonSpecific ? defaultTags.STR : null;
81
-
82
- default:
83
- return null;
84
- }
85
- }
86
-
87
- export { resolveTagName };
@@ -1,10 +0,0 @@
1
- function addCommentBefore(str, indent, comment) {
2
- if (!comment) return str;
3
- const cc = comment.replace(/[\s\S]^/gm, "$&".concat(indent, "#"));
4
- return "#".concat(cc, "\n").concat(indent).concat(str);
5
- }
6
- function addComment(str, indent, comment) {
7
- return !comment ? str : comment.indexOf('\n') === -1 ? "".concat(str, " #").concat(comment) : "".concat(str, "\n") + comment.replace(/^/gm, "".concat(indent || '', "#"));
8
- }
9
-
10
- export { addComment, addCommentBefore };
@@ -1,28 +0,0 @@
1
- function stringifyTag(doc, tag) {
2
- if ((doc.version || doc.options.version) === '1.0') {
3
- const priv = tag.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/);
4
- if (priv) return '!' + priv[1];
5
- const vocab = tag.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/);
6
- return vocab ? "!".concat(vocab[1], "/").concat(vocab[2]) : "!".concat(tag.replace(/^tag:/, ''));
7
- }
8
-
9
- let p = doc.tagPrefixes.find(p => tag.indexOf(p.prefix) === 0);
10
-
11
- if (!p) {
12
- const dtp = doc.getDefaults().tagPrefixes;
13
- p = dtp && dtp.find(p => tag.indexOf(p.prefix) === 0);
14
- }
15
-
16
- if (!p) return tag[0] === '!' ? tag : "!<".concat(tag, ">");
17
- const suffix = tag.substr(p.prefix.length).replace(/[!,[\]{}]/g, ch => ({
18
- '!': '%21',
19
- ',': '%2C',
20
- '[': '%5B',
21
- ']': '%5D',
22
- '{': '%7B',
23
- '}': '%7D'
24
- })[ch]);
25
- return p.handle + suffix;
26
- }
27
-
28
- export { stringifyTag };
@@ -1,128 +0,0 @@
1
- import { Scalar } from '../ast/Scalar.js';
2
- import { stringifyNumber } from '../stringify/stringifyNumber.js';
3
- import { failsafe } from './failsafe/index.js';
4
- import { nullOptions, boolOptions, intOptions } from './options.js';
5
-
6
- /* global BigInt */
7
-
8
- const intIdentify = value => typeof value === 'bigint' || Number.isInteger(value);
9
-
10
- const intResolve = (src, offset, radix) => intOptions.asBigInt ? BigInt(src) : parseInt(src.substring(offset), radix);
11
-
12
- function intStringify(node, radix, prefix) {
13
- const {
14
- value
15
- } = node;
16
- if (intIdentify(value) && value >= 0) return prefix + value.toString(radix);
17
- return stringifyNumber(node);
18
- }
19
-
20
- function stringifyBool(node) {
21
- const {
22
- value,
23
- sourceStr
24
- } = node;
25
-
26
- if (sourceStr) {
27
- const match = boolObj.test.test(sourceStr);
28
- if (match && value === (sourceStr[0] === 't' || sourceStr[0] === 'T')) return sourceStr;
29
- }
30
-
31
- return value ? boolOptions.trueStr : boolOptions.falseStr;
32
- }
33
-
34
- const nullObj = {
35
- identify: value => value == null,
36
- createNode: (schema, value, ctx) => ctx.wrapScalars ? new Scalar(null) : null,
37
- default: true,
38
- tag: 'tag:yaml.org,2002:null',
39
- test: /^(?:~|[Nn]ull|NULL)?$/,
40
- resolve: str => {
41
- const node = new Scalar(null);
42
- node.sourceStr = str;
43
- return node;
44
- },
45
- options: nullOptions,
46
- stringify: ({
47
- sourceStr
48
- }) => sourceStr !== null && sourceStr !== void 0 ? sourceStr : nullOptions.nullStr
49
- };
50
- const boolObj = {
51
- identify: value => typeof value === 'boolean',
52
- default: true,
53
- tag: 'tag:yaml.org,2002:bool',
54
- test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,
55
- resolve: str => {
56
- const node = new Scalar(str[0] === 't' || str[0] === 'T');
57
- node.sourceStr = str;
58
- return node;
59
- },
60
- options: boolOptions,
61
- stringify: stringifyBool
62
- };
63
- const octObj = {
64
- identify: value => intIdentify(value) && value >= 0,
65
- default: true,
66
- tag: 'tag:yaml.org,2002:int',
67
- format: 'OCT',
68
- test: /^0o[0-7]+$/,
69
- resolve: str => intResolve(str, 2, 8),
70
- options: intOptions,
71
- stringify: node => intStringify(node, 8, '0o')
72
- };
73
- const intObj = {
74
- identify: intIdentify,
75
- default: true,
76
- tag: 'tag:yaml.org,2002:int',
77
- test: /^[-+]?[0-9]+$/,
78
- resolve: str => intResolve(str, 0, 10),
79
- options: intOptions,
80
- stringify: stringifyNumber
81
- };
82
- const hexObj = {
83
- identify: value => intIdentify(value) && value >= 0,
84
- default: true,
85
- tag: 'tag:yaml.org,2002:int',
86
- format: 'HEX',
87
- test: /^0x[0-9a-fA-F]+$/,
88
- resolve: str => intResolve(str, 2, 16),
89
- options: intOptions,
90
- stringify: node => intStringify(node, 16, '0x')
91
- };
92
- const nanObj = {
93
- identify: value => typeof value === 'number',
94
- default: true,
95
- tag: 'tag:yaml.org,2002:float',
96
- test: /^(?:[-+]?\.(?:inf|Inf|INF|nan|NaN|NAN))$/,
97
- resolve: str => str.slice(-3).toLowerCase() === 'nan' ? NaN : str[0] === '-' ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY,
98
- stringify: stringifyNumber
99
- };
100
- const expObj = {
101
- identify: value => typeof value === 'number',
102
- default: true,
103
- tag: 'tag:yaml.org,2002:float',
104
- format: 'EXP',
105
- test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,
106
- resolve: str => parseFloat(str),
107
- stringify: ({
108
- value
109
- }) => Number(value).toExponential()
110
- };
111
- const floatObj = {
112
- identify: value => typeof value === 'number',
113
- default: true,
114
- tag: 'tag:yaml.org,2002:float',
115
- test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,
116
-
117
- resolve(str) {
118
- const node = new Scalar(parseFloat(str));
119
- const dot = str.indexOf('.');
120
- if (dot !== -1 && str[str.length - 1] === '0') node.minFractionDigits = str.length - dot - 1;
121
- return node;
122
- },
123
-
124
- stringify: stringifyNumber
125
- };
126
- const core = failsafe.concat([nullObj, boolObj, octObj, intObj, hexObj, nanObj, expObj, floatObj]);
127
-
128
- export { boolObj, core, expObj, floatObj, hexObj, intObj, nanObj, nullObj, octObj };
@@ -1,7 +0,0 @@
1
- import { map } from './map.js';
2
- import { seq } from './seq.js';
3
- import { string } from './string.js';
4
-
5
- const failsafe = [map, seq, string];
6
-
7
- export { failsafe };
@@ -1,37 +0,0 @@
1
- import { createPair } from '../../ast/Pair.js';
2
- import { YAMLMap } from '../../ast/YAMLMap.js';
3
-
4
- function createMap(schema, obj, ctx) {
5
- const {
6
- keepUndefined,
7
- replacer
8
- } = ctx;
9
- const map = new YAMLMap(schema);
10
-
11
- const add = (key, value) => {
12
- if (typeof replacer === 'function') value = replacer.call(obj, key, value);else if (Array.isArray(replacer) && !replacer.includes(key)) return;
13
- if (value !== undefined || keepUndefined) map.items.push(createPair(key, value, ctx));
14
- };
15
-
16
- if (obj instanceof Map) {
17
- for (const [key, value] of obj) add(key, value);
18
- } else if (obj && typeof obj === 'object') {
19
- for (const key of Object.keys(obj)) add(key, obj[key]);
20
- }
21
-
22
- if (typeof schema.sortMapEntries === 'function') {
23
- map.items.sort(schema.sortMapEntries);
24
- }
25
-
26
- return map;
27
- }
28
-
29
- const map = {
30
- createNode: createMap,
31
- default: true,
32
- nodeClass: YAMLMap,
33
- tag: 'tag:yaml.org,2002:map',
34
- resolve: map => map
35
- };
36
-
37
- export { map };
@@ -1,34 +0,0 @@
1
- import { YAMLSeq } from '../../ast/YAMLSeq.js';
2
- import { createNode } from '../../doc/createNode.js';
3
-
4
- function createSeq(schema, obj, ctx) {
5
- const {
6
- replacer
7
- } = ctx;
8
- const seq = new YAMLSeq(schema);
9
-
10
- if (obj && obj[Symbol.iterator]) {
11
- let i = 0;
12
-
13
- for (let it of obj) {
14
- if (typeof replacer === 'function') {
15
- const key = obj instanceof Set ? it : String(i++);
16
- it = replacer.call(obj, key, it);
17
- }
18
-
19
- seq.items.push(createNode(it, null, ctx));
20
- }
21
- }
22
-
23
- return seq;
24
- }
25
-
26
- const seq = {
27
- createNode: createSeq,
28
- default: true,
29
- nodeClass: YAMLSeq,
30
- tag: 'tag:yaml.org,2002:seq',
31
- resolve: seq => seq
32
- };
33
-
34
- export { seq };
@@ -1,20 +0,0 @@
1
- import { stringifyString } from '../../stringify/stringifyString.js';
2
- import { strOptions } from '../options.js';
3
-
4
- const string = {
5
- identify: value => typeof value === 'string',
6
- default: true,
7
- tag: 'tag:yaml.org,2002:str',
8
- resolve: str => str,
9
-
10
- stringify(item, ctx, onComment, onChompKeep) {
11
- ctx = Object.assign({
12
- actualString: true
13
- }, ctx);
14
- return stringifyString(item, ctx, onComment, onChompKeep);
15
- },
16
-
17
- options: strOptions
18
- };
19
-
20
- export { string };
@@ -1,39 +0,0 @@
1
- import { boolObj, floatObj, expObj, nanObj, intObj, hexObj, octObj, nullObj, core } from './core.js';
2
- import { failsafe } from './failsafe/index.js';
3
- import { json } from './json.js';
4
- import { yaml11 } from './yaml-1.1/index.js';
5
- import { map } from './failsafe/map.js';
6
- import { seq } from './failsafe/seq.js';
7
- import { binary } from './yaml-1.1/binary.js';
8
- import { omap } from './yaml-1.1/omap.js';
9
- import { pairs } from './yaml-1.1/pairs.js';
10
- import { set } from './yaml-1.1/set.js';
11
- import { floatTime, intTime, timestamp } from './yaml-1.1/timestamp.js';
12
-
13
- const schemas = {
14
- core,
15
- failsafe,
16
- json,
17
- yaml11
18
- };
19
- const tags = {
20
- binary,
21
- bool: boolObj,
22
- float: floatObj,
23
- floatExp: expObj,
24
- floatNaN: nanObj,
25
- floatTime,
26
- int: intObj,
27
- intHex: hexObj,
28
- intOct: octObj,
29
- intTime,
30
- map,
31
- null: nullObj,
32
- omap,
33
- pairs,
34
- seq,
35
- set,
36
- timestamp
37
- };
38
-
39
- export { schemas, tags };
@@ -1,62 +0,0 @@
1
- import { Scalar } from '../ast/Scalar.js';
2
- import { map } from './failsafe/map.js';
3
- import { seq } from './failsafe/seq.js';
4
- import { intOptions } from './options.js';
5
-
6
- /* global BigInt */
7
-
8
- const intIdentify = value => typeof value === 'bigint' || Number.isInteger(value);
9
-
10
- const stringifyJSON = ({
11
- value
12
- }) => JSON.stringify(value);
13
-
14
- const json = [map, seq, {
15
- identify: value => typeof value === 'string',
16
- default: true,
17
- tag: 'tag:yaml.org,2002:str',
18
- resolve: str => str,
19
- stringify: stringifyJSON
20
- }, {
21
- identify: value => value == null,
22
- createNode: (schema, value, ctx) => ctx.wrapScalars ? new Scalar(null) : null,
23
- default: true,
24
- tag: 'tag:yaml.org,2002:null',
25
- test: /^null$/,
26
- resolve: () => null,
27
- stringify: stringifyJSON
28
- }, {
29
- identify: value => typeof value === 'boolean',
30
- default: true,
31
- tag: 'tag:yaml.org,2002:bool',
32
- test: /^true|false$/,
33
- resolve: str => str === 'true',
34
- stringify: stringifyJSON
35
- }, {
36
- identify: intIdentify,
37
- default: true,
38
- tag: 'tag:yaml.org,2002:int',
39
- test: /^-?(?:0|[1-9][0-9]*)$/,
40
- resolve: str => intOptions.asBigInt ? BigInt(str) : parseInt(str, 10),
41
- stringify: ({
42
- value
43
- }) => intIdentify(value) ? value.toString() : JSON.stringify(value)
44
- }, {
45
- identify: value => typeof value === 'number',
46
- default: true,
47
- tag: 'tag:yaml.org,2002:float',
48
- test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,
49
- resolve: str => parseFloat(str),
50
- stringify: stringifyJSON
51
- }, {
52
- default: true,
53
- test: /^/,
54
-
55
- resolve(str, onError) {
56
- onError("Unresolved plain scalar ".concat(JSON.stringify(str)));
57
- return str;
58
- }
59
-
60
- }];
61
-
62
- export { json };
@@ -1,31 +0,0 @@
1
- import { Type } from '../constants.js';
2
-
3
- const binaryOptions = {
4
- defaultType: Type.BLOCK_LITERAL,
5
- lineWidth: 76
6
- };
7
- const boolOptions = {
8
- trueStr: 'true',
9
- falseStr: 'false'
10
- };
11
- const intOptions = {
12
- asBigInt: false
13
- };
14
- const nullOptions = {
15
- nullStr: 'null'
16
- };
17
- const strOptions = {
18
- defaultType: Type.PLAIN,
19
- defaultKeyType: Type.PLAIN,
20
- defaultQuoteSingle: false,
21
- doubleQuoted: {
22
- jsonEncoding: false,
23
- minMultiLineLength: 40
24
- },
25
- fold: {
26
- lineWidth: 80,
27
- minContentWidth: 20
28
- }
29
- };
30
-
31
- export { binaryOptions, boolOptions, intOptions, nullOptions, strOptions };
@@ -1,83 +0,0 @@
1
- import { Type } from '../../constants.js';
2
- import { stringifyString } from '../../stringify/stringifyString.js';
3
- import { binaryOptions } from '../options.js';
4
-
5
- /* global atob, btoa, Buffer */
6
- const binary = {
7
- identify: value => value instanceof Uint8Array,
8
- // Buffer inherits from Uint8Array
9
- default: false,
10
- tag: 'tag:yaml.org,2002:binary',
11
-
12
- /**
13
- * Returns a Buffer in node and an Uint8Array in browsers
14
- *
15
- * To use the resulting buffer as an image, you'll want to do something like:
16
- *
17
- * const blob = new Blob([buffer], { type: 'image/jpeg' })
18
- * document.querySelector('#photo').src = URL.createObjectURL(blob)
19
- */
20
- resolve(src, onError) {
21
- if (typeof Buffer === 'function') {
22
- return Buffer.from(src, 'base64');
23
- } else if (typeof atob === 'function') {
24
- // On IE 11, atob() can't handle newlines
25
- const str = atob(src.replace(/[\n\r]/g, ''));
26
- const buffer = new Uint8Array(str.length);
27
-
28
- for (let i = 0; i < str.length; ++i) buffer[i] = str.charCodeAt(i);
29
-
30
- return buffer;
31
- } else {
32
- onError('This environment does not support reading binary tags; either Buffer or atob is required');
33
- return src;
34
- }
35
- },
36
-
37
- options: binaryOptions,
38
- stringify: ({
39
- comment,
40
- type,
41
- value
42
- }, ctx, onComment, onChompKeep) => {
43
- let src;
44
-
45
- if (typeof Buffer === 'function') {
46
- src = value instanceof Buffer ? value.toString('base64') : Buffer.from(value.buffer).toString('base64');
47
- } else if (typeof btoa === 'function') {
48
- let s = '';
49
-
50
- for (let i = 0; i < value.length; ++i) s += String.fromCharCode(value[i]);
51
-
52
- src = btoa(s);
53
- } else {
54
- throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');
55
- }
56
-
57
- if (!type) type = binaryOptions.defaultType;
58
-
59
- if (type === Type.QUOTE_DOUBLE) {
60
- value = src;
61
- } else {
62
- const {
63
- lineWidth
64
- } = binaryOptions;
65
- const n = Math.ceil(src.length / lineWidth);
66
- const lines = new Array(n);
67
-
68
- for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {
69
- lines[i] = src.substr(o, lineWidth);
70
- }
71
-
72
- value = lines.join(type === Type.BLOCK_LITERAL ? '\n' : ' ');
73
- }
74
-
75
- return stringifyString({
76
- comment,
77
- type,
78
- value
79
- }, ctx, onComment, onChompKeep);
80
- }
81
- };
82
-
83
- export { binary };