step-node-agent 3.25.4 → 3.26.0

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 (289) hide show
  1. package/AgentConf.yaml +13 -0
  2. package/api/controllers/controller.js +4 -0
  3. package/api/routes/routes.js +1 -0
  4. package/node_modules/aws4/aws4.js +1 -1
  5. package/node_modules/aws4/package.json +2 -2
  6. package/node_modules/body-parser/HISTORY.md +7 -0
  7. package/node_modules/body-parser/README.md +11 -0
  8. package/node_modules/body-parser/lib/types/urlencoded.js +30 -7
  9. package/node_modules/body-parser/package.json +2 -2
  10. package/node_modules/encodeurl/README.md +19 -38
  11. package/node_modules/encodeurl/index.js +1 -1
  12. package/node_modules/encodeurl/package.json +7 -7
  13. package/node_modules/express/History.md +27 -0
  14. package/node_modules/express/Readme.md +100 -6
  15. package/node_modules/express/lib/response.js +11 -10
  16. package/node_modules/express/package.json +11 -11
  17. package/node_modules/finalhandler/HISTORY.md +15 -0
  18. package/node_modules/finalhandler/README.md +2 -2
  19. package/node_modules/finalhandler/index.js +7 -2
  20. package/node_modules/finalhandler/package.json +8 -7
  21. package/node_modules/get-fqdn/LICENSE +21 -0
  22. package/node_modules/get-fqdn/README.md +83 -0
  23. package/node_modules/get-fqdn/index.js +17 -0
  24. package/node_modules/get-fqdn/package.json +73 -0
  25. package/node_modules/is-core-module/CHANGELOG.md +10 -0
  26. package/node_modules/is-core-module/core.json +2 -2
  27. package/node_modules/is-core-module/package.json +4 -4
  28. package/node_modules/is-core-module/test/index.js +17 -1
  29. package/node_modules/merge-descriptors/README.md +4 -3
  30. package/node_modules/merge-descriptors/index.js +3 -3
  31. package/node_modules/merge-descriptors/package.json +14 -7
  32. package/node_modules/path-to-regexp/index.js +57 -40
  33. package/node_modules/path-to-regexp/package.json +2 -2
  34. package/node_modules/qs/.editorconfig +3 -0
  35. package/node_modules/qs/.eslintrc +2 -2
  36. package/node_modules/qs/CHANGELOG.md +59 -5
  37. package/node_modules/qs/README.md +133 -49
  38. package/node_modules/qs/dist/qs.js +56 -2020
  39. package/node_modules/qs/lib/parse.js +46 -13
  40. package/node_modules/qs/lib/stringify.js +53 -28
  41. package/node_modules/qs/lib/utils.js +47 -34
  42. package/node_modules/qs/package.json +26 -12
  43. package/node_modules/qs/test/empty-keys-cases.js +267 -0
  44. package/node_modules/qs/test/parse.js +347 -32
  45. package/node_modules/qs/test/stringify.js +436 -47
  46. package/node_modules/send/HISTORY.md +5 -0
  47. package/node_modules/send/index.js +1 -2
  48. package/node_modules/send/node_modules/encodeurl/LICENSE +22 -0
  49. package/node_modules/send/node_modules/encodeurl/README.md +128 -0
  50. package/node_modules/send/node_modules/encodeurl/index.js +60 -0
  51. package/node_modules/send/node_modules/encodeurl/package.json +40 -0
  52. package/node_modules/send/package.json +1 -1
  53. package/node_modules/serve-static/HISTORY.md +16 -0
  54. package/node_modules/serve-static/index.js +1 -2
  55. package/node_modules/serve-static/package.json +3 -3
  56. package/node_modules/yaml/LICENSE +13 -0
  57. package/node_modules/yaml/README.md +155 -0
  58. package/node_modules/yaml/bin.mjs +11 -0
  59. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  60. package/node_modules/yaml/browser/dist/compose/compose-doc.js +42 -0
  61. package/node_modules/yaml/browser/dist/compose/compose-node.js +92 -0
  62. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +80 -0
  63. package/node_modules/yaml/browser/dist/compose/composer.js +217 -0
  64. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +113 -0
  65. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  66. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +47 -0
  67. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  68. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +203 -0
  69. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
  70. package/node_modules/yaml/browser/dist/compose/resolve-props.js +148 -0
  71. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  72. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +27 -0
  73. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  74. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +17 -0
  75. package/node_modules/yaml/browser/dist/doc/Document.js +334 -0
  76. package/node_modules/yaml/browser/dist/doc/anchors.js +72 -0
  77. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  78. package/node_modules/yaml/browser/dist/doc/createNode.js +89 -0
  79. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  80. package/node_modules/yaml/browser/dist/errors.js +57 -0
  81. package/node_modules/yaml/browser/dist/index.js +17 -0
  82. package/node_modules/yaml/browser/dist/log.js +14 -0
  83. package/node_modules/yaml/browser/dist/nodes/Alias.js +101 -0
  84. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  85. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  86. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  87. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  88. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  89. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  90. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +104 -0
  91. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  92. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  93. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  94. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  95. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  96. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  97. package/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
  98. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  99. package/node_modules/yaml/browser/dist/parse/parser.js +954 -0
  100. package/node_modules/yaml/browser/dist/public-api.js +99 -0
  101. package/node_modules/yaml/browser/dist/schema/Schema.js +38 -0
  102. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  103. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  104. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  105. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  106. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  107. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  108. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  109. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  110. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  111. package/node_modules/yaml/browser/dist/schema/tags.js +83 -0
  112. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +66 -0
  113. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  114. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  115. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  116. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  117. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  118. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +37 -0
  119. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  120. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  121. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  122. package/node_modules/yaml/browser/dist/stringify/stringify.js +124 -0
  123. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +143 -0
  124. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  125. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  126. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
  127. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  128. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +328 -0
  129. package/node_modules/yaml/browser/dist/util.js +11 -0
  130. package/node_modules/yaml/browser/dist/visit.js +233 -0
  131. package/node_modules/yaml/browser/index.js +5 -0
  132. package/node_modules/yaml/browser/package.json +3 -0
  133. package/node_modules/yaml/dist/cli.d.ts +8 -0
  134. package/node_modules/yaml/dist/cli.mjs +199 -0
  135. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  136. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  137. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  138. package/node_modules/yaml/dist/compose/compose-doc.js +44 -0
  139. package/node_modules/yaml/dist/compose/compose-node.d.ts +28 -0
  140. package/node_modules/yaml/dist/compose/compose-node.js +95 -0
  141. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  142. package/node_modules/yaml/dist/compose/compose-scalar.js +82 -0
  143. package/node_modules/yaml/dist/compose/composer.d.ts +62 -0
  144. package/node_modules/yaml/dist/compose/composer.js +221 -0
  145. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  146. package/node_modules/yaml/dist/compose/resolve-block-map.js +115 -0
  147. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  148. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  149. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  150. package/node_modules/yaml/dist/compose/resolve-block-seq.js +49 -0
  151. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  152. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  153. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  154. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +205 -0
  155. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  156. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
  157. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  158. package/node_modules/yaml/dist/compose/resolve-props.js +150 -0
  159. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  160. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  161. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  162. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +29 -0
  163. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  164. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  165. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  166. package/node_modules/yaml/dist/compose/util-map-includes.js +19 -0
  167. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  168. package/node_modules/yaml/dist/doc/Document.js +336 -0
  169. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  170. package/node_modules/yaml/dist/doc/anchors.js +77 -0
  171. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  172. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  173. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  174. package/node_modules/yaml/dist/doc/createNode.js +91 -0
  175. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  176. package/node_modules/yaml/dist/doc/directives.js +178 -0
  177. package/node_modules/yaml/dist/errors.d.ts +21 -0
  178. package/node_modules/yaml/dist/errors.js +62 -0
  179. package/node_modules/yaml/dist/index.d.ts +22 -0
  180. package/node_modules/yaml/dist/index.js +50 -0
  181. package/node_modules/yaml/dist/log.d.ts +3 -0
  182. package/node_modules/yaml/dist/log.js +17 -0
  183. package/node_modules/yaml/dist/nodes/Alias.d.ts +28 -0
  184. package/node_modules/yaml/dist/nodes/Alias.js +103 -0
  185. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  186. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  187. package/node_modules/yaml/dist/nodes/Node.d.ts +47 -0
  188. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  189. package/node_modules/yaml/dist/nodes/Pair.d.ts +21 -0
  190. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  191. package/node_modules/yaml/dist/nodes/Scalar.d.ts +42 -0
  192. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  193. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  194. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  195. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  196. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  197. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  198. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +106 -0
  199. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  200. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  201. package/node_modules/yaml/dist/nodes/toJS.d.ts +27 -0
  202. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  203. package/node_modules/yaml/dist/options.d.ts +338 -0
  204. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  205. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  206. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  207. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  208. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  209. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  210. package/node_modules/yaml/dist/parse/cst.d.ts +108 -0
  211. package/node_modules/yaml/dist/parse/cst.js +112 -0
  212. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  213. package/node_modules/yaml/dist/parse/lexer.js +719 -0
  214. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  215. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  216. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  217. package/node_modules/yaml/dist/parse/parser.js +958 -0
  218. package/node_modules/yaml/dist/public-api.d.ts +43 -0
  219. package/node_modules/yaml/dist/public-api.js +104 -0
  220. package/node_modules/yaml/dist/schema/Schema.d.ts +18 -0
  221. package/node_modules/yaml/dist/schema/Schema.js +40 -0
  222. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  223. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  224. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  225. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  226. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  227. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  228. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  229. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  230. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  231. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  232. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  233. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  234. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  235. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  236. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  237. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  238. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  239. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  240. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  241. package/node_modules/yaml/dist/schema/tags.d.ts +40 -0
  242. package/node_modules/yaml/dist/schema/tags.js +86 -0
  243. package/node_modules/yaml/dist/schema/types.d.ts +90 -0
  244. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  245. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +68 -0
  246. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  247. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  248. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  249. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  250. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  251. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  252. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +28 -0
  253. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  254. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  255. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  256. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  257. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +39 -0
  258. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  259. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  260. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  261. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  262. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  263. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  264. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  265. package/node_modules/yaml/dist/stringify/stringify.js +127 -0
  266. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  267. package/node_modules/yaml/dist/stringify/stringifyCollection.js +145 -0
  268. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  269. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  270. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  271. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  272. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  273. package/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
  274. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  275. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  276. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  277. package/node_modules/yaml/dist/stringify/stringifyString.js +330 -0
  278. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  279. package/node_modules/yaml/dist/test-events.js +134 -0
  280. package/node_modules/yaml/dist/util.d.ts +12 -0
  281. package/node_modules/yaml/dist/util.js +28 -0
  282. package/node_modules/yaml/dist/visit.d.ts +102 -0
  283. package/node_modules/yaml/dist/visit.js +236 -0
  284. package/node_modules/yaml/package.json +96 -0
  285. package/node_modules/yaml/util.js +2 -0
  286. package/package.json +7 -3
  287. package/server.js +50 -23
  288. package/node_modules/path-to-regexp/History.md +0 -36
  289. /package/node_modules/{encodeurl → send/node_modules/encodeurl}/HISTORY.md +0 -0
@@ -0,0 +1,338 @@
1
+ import type { Reviver } from './doc/applyReviver.js';
2
+ import type { Directives } from './doc/directives.js';
3
+ import type { LogLevelId } from './log.js';
4
+ import type { ParsedNode } from './nodes/Node.js';
5
+ import type { Pair } from './nodes/Pair.js';
6
+ import type { Scalar } from './nodes/Scalar.js';
7
+ import type { LineCounter } from './parse/line-counter.js';
8
+ import type { Schema } from './schema/Schema.js';
9
+ import type { Tags } from './schema/tags.js';
10
+ import type { CollectionTag, ScalarTag } from './schema/types.js';
11
+ export type ParseOptions = {
12
+ /**
13
+ * Whether integers should be parsed into BigInt rather than number values.
14
+ *
15
+ * Default: `false`
16
+ *
17
+ * https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/BigInt
18
+ */
19
+ intAsBigInt?: boolean;
20
+ /**
21
+ * Include a `srcToken` value on each parsed `Node`, containing the CST token
22
+ * that was composed into this node.
23
+ *
24
+ * Default: `false`
25
+ */
26
+ keepSourceTokens?: boolean;
27
+ /**
28
+ * If set, newlines will be tracked, to allow for `lineCounter.linePos(offset)`
29
+ * to provide the `{ line, col }` positions within the input.
30
+ */
31
+ lineCounter?: LineCounter;
32
+ /**
33
+ * Include line/col position & node type directly in parse errors.
34
+ *
35
+ * Default: `true`
36
+ */
37
+ prettyErrors?: boolean;
38
+ /**
39
+ * Detect and report errors that are required by the YAML 1.2 spec,
40
+ * but are caused by unambiguous content.
41
+ *
42
+ * Default: `true`
43
+ */
44
+ strict?: boolean;
45
+ /**
46
+ * YAML requires map keys to be unique. By default, this is checked by
47
+ * comparing scalar values with `===`; deep equality is not checked for
48
+ * aliases or collections. If merge keys are enabled by the schema,
49
+ * multiple `<<` keys are allowed.
50
+ *
51
+ * Set `false` to disable, or provide your own comparator function to
52
+ * customise. The comparator will be passed two `ParsedNode` values, and
53
+ * is expected to return a `boolean` indicating their equality.
54
+ *
55
+ * Default: `true`
56
+ */
57
+ uniqueKeys?: boolean | ((a: ParsedNode, b: ParsedNode) => boolean);
58
+ };
59
+ export type DocumentOptions = {
60
+ /**
61
+ * @internal
62
+ * Used internally by Composer. If set and includes an explicit version,
63
+ * that overrides the `version` option.
64
+ */
65
+ _directives?: Directives;
66
+ /**
67
+ * Control the logging level during parsing
68
+ *
69
+ * Default: `'warn'`
70
+ */
71
+ logLevel?: LogLevelId;
72
+ /**
73
+ * The YAML version used by documents without a `%YAML` directive.
74
+ *
75
+ * Default: `"1.2"`
76
+ */
77
+ version?: '1.1' | '1.2' | 'next';
78
+ };
79
+ export type SchemaOptions = {
80
+ /**
81
+ * When parsing, warn about compatibility issues with the given schema.
82
+ * When stringifying, use scalar styles that are parsed correctly
83
+ * by the `compat` schema as well as the actual schema.
84
+ *
85
+ * Default: `null`
86
+ */
87
+ compat?: string | Tags | null;
88
+ /**
89
+ * Array of additional tags to include in the schema, or a function that may
90
+ * modify the schema's base tag array.
91
+ */
92
+ customTags?: Tags | ((tags: Tags) => Tags) | null;
93
+ /**
94
+ * Enable support for `<<` merge keys.
95
+ *
96
+ * Default: `false` for YAML 1.2, `true` for earlier versions
97
+ */
98
+ merge?: boolean;
99
+ /**
100
+ * When using the `'core'` schema, support parsing values with these
101
+ * explicit YAML 1.1 tags:
102
+ *
103
+ * `!!binary`, `!!omap`, `!!pairs`, `!!set`, `!!timestamp`.
104
+ *
105
+ * Default `true`
106
+ */
107
+ resolveKnownTags?: boolean;
108
+ /**
109
+ * The base schema to use.
110
+ *
111
+ * The core library has built-in support for the following:
112
+ * - `'failsafe'`: A minimal schema that parses all scalars as strings
113
+ * - `'core'`: The YAML 1.2 core schema
114
+ * - `'json'`: The YAML 1.2 JSON schema, with minimal rules for JSON compatibility
115
+ * - `'yaml-1.1'`: The YAML 1.1 schema
116
+ *
117
+ * If using another (custom) schema, the `customTags` array needs to
118
+ * fully define the schema's tags.
119
+ *
120
+ * Default: `'core'` for YAML 1.2, `'yaml-1.1'` for earlier versions
121
+ */
122
+ schema?: string | Schema;
123
+ /**
124
+ * When adding to or stringifying a map, sort the entries.
125
+ * If `true`, sort by comparing key values with `<`.
126
+ * Does not affect item order when parsing.
127
+ *
128
+ * Default: `false`
129
+ */
130
+ sortMapEntries?: boolean | ((a: Pair, b: Pair) => number);
131
+ /**
132
+ * Override default values for `toString()` options.
133
+ */
134
+ toStringDefaults?: ToStringOptions;
135
+ };
136
+ export type CreateNodeOptions = {
137
+ /**
138
+ * During node construction, use anchors and aliases to keep strictly equal
139
+ * non-null objects as equivalent in YAML.
140
+ *
141
+ * Default: `true`
142
+ */
143
+ aliasDuplicateObjects?: boolean;
144
+ /**
145
+ * Default prefix for anchors.
146
+ *
147
+ * Default: `'a'`, resulting in anchors `a1`, `a2`, etc.
148
+ */
149
+ anchorPrefix?: string;
150
+ /** Force the top-level collection node to use flow style. */
151
+ flow?: boolean;
152
+ /**
153
+ * Keep `undefined` object values when creating mappings, rather than
154
+ * discarding them.
155
+ *
156
+ * Default: `false`
157
+ */
158
+ keepUndefined?: boolean | null;
159
+ onTagObj?: (tagObj: ScalarTag | CollectionTag) => void;
160
+ /**
161
+ * Specify the top-level collection type, e.g. `"!!omap"`. Note that this
162
+ * requires the corresponding tag to be available in this document's schema.
163
+ */
164
+ tag?: string;
165
+ };
166
+ export type ToJSOptions = {
167
+ /**
168
+ * Use Map rather than Object to represent mappings.
169
+ *
170
+ * Default: `false`
171
+ */
172
+ mapAsMap?: boolean;
173
+ /**
174
+ * Prevent exponential entity expansion attacks by limiting data aliasing count;
175
+ * set to `-1` to disable checks; `0` disallows all alias nodes.
176
+ *
177
+ * Default: `100`
178
+ */
179
+ maxAliasCount?: number;
180
+ /**
181
+ * If defined, called with the resolved `value` and reference `count` for
182
+ * each anchor in the document.
183
+ */
184
+ onAnchor?: (value: unknown, count: number) => void;
185
+ /**
186
+ * Optional function that may filter or modify the output JS value
187
+ *
188
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#using_the_reviver_parameter
189
+ */
190
+ reviver?: Reviver;
191
+ };
192
+ export type ToStringOptions = {
193
+ /**
194
+ * Use block quote styles for scalar values where applicable.
195
+ * Set to `false` to disable block quotes completely.
196
+ *
197
+ * Default: `true`
198
+ */
199
+ blockQuote?: boolean | 'folded' | 'literal';
200
+ /**
201
+ * Enforce `'block'` or `'flow'` style on maps and sequences.
202
+ * Empty collections will always be stringified as `{}` or `[]`.
203
+ *
204
+ * Default: `'any'`, allowing each node to set its style separately
205
+ * with its `flow: boolean` (default `false`) property.
206
+ */
207
+ collectionStyle?: 'any' | 'block' | 'flow';
208
+ /**
209
+ * Comment stringifier.
210
+ * Output should be valid for the current schema.
211
+ *
212
+ * By default, empty comment lines are left empty,
213
+ * lines consisting of a single space are replaced by `#`,
214
+ * and all other lines are prefixed with a `#`.
215
+ */
216
+ commentString?: (comment: string) => string;
217
+ /**
218
+ * The default type of string literal used to stringify implicit key values.
219
+ * Output may use other types if required to fully represent the value.
220
+ *
221
+ * If `null`, the value of `defaultStringType` is used.
222
+ *
223
+ * Default: `null`
224
+ */
225
+ defaultKeyType?: Scalar.Type | null;
226
+ /**
227
+ * The default type of string literal used to stringify values in general.
228
+ * Output may use other types if required to fully represent the value.
229
+ *
230
+ * Default: `'PLAIN'`
231
+ */
232
+ defaultStringType?: Scalar.Type;
233
+ /**
234
+ * Include directives in the output.
235
+ *
236
+ * - If `true`, at least the document-start marker `---` is always included.
237
+ * This does not force the `%YAML` directive to be included. To do that,
238
+ * set `doc.directives.yaml.explicit = true`.
239
+ * - If `false`, no directives or marker is ever included. If using the `%TAG`
240
+ * directive, you are expected to include it manually in the stream before
241
+ * its use.
242
+ * - If `null`, directives and marker may be included if required.
243
+ *
244
+ * Default: `null`
245
+ */
246
+ directives?: boolean | null;
247
+ /**
248
+ * Restrict double-quoted strings to use JSON-compatible syntax.
249
+ *
250
+ * Default: `false`
251
+ */
252
+ doubleQuotedAsJSON?: boolean;
253
+ /**
254
+ * Minimum length for double-quoted strings to use multiple lines to
255
+ * represent the value. Ignored if `doubleQuotedAsJSON` is set.
256
+ *
257
+ * Default: `40`
258
+ */
259
+ doubleQuotedMinMultiLineLength?: number;
260
+ /**
261
+ * String representation for `false`.
262
+ * With the core schema, use `'false'`, `'False'`, or `'FALSE'`.
263
+ *
264
+ * Default: `'false'`
265
+ */
266
+ falseStr?: string;
267
+ /**
268
+ * When true, a single space of padding will be added inside the delimiters
269
+ * of non-empty single-line flow collections.
270
+ *
271
+ * Default: `true`
272
+ */
273
+ flowCollectionPadding?: boolean;
274
+ /**
275
+ * The number of spaces to use when indenting code.
276
+ *
277
+ * Default: `2`
278
+ */
279
+ indent?: number;
280
+ /**
281
+ * Whether block sequences should be indented.
282
+ *
283
+ * Default: `true`
284
+ */
285
+ indentSeq?: boolean;
286
+ /**
287
+ * Maximum line width (set to `0` to disable folding).
288
+ *
289
+ * This is a soft limit, as only double-quoted semantics allow for inserting
290
+ * a line break in the middle of a word, as well as being influenced by the
291
+ * `minContentWidth` option.
292
+ *
293
+ * Default: `80`
294
+ */
295
+ lineWidth?: number;
296
+ /**
297
+ * Minimum line width for highly-indented content (set to `0` to disable).
298
+ *
299
+ * Default: `20`
300
+ */
301
+ minContentWidth?: number;
302
+ /**
303
+ * String representation for `null`.
304
+ * With the core schema, use `'null'`, `'Null'`, `'NULL'`, `'~'`, or an empty
305
+ * string `''`.
306
+ *
307
+ * Default: `'null'`
308
+ */
309
+ nullStr?: string;
310
+ /**
311
+ * Require keys to be scalars and to use implicit rather than explicit notation.
312
+ *
313
+ * Default: `false`
314
+ */
315
+ simpleKeys?: boolean;
316
+ /**
317
+ * Use 'single quote' rather than "double quote" where applicable.
318
+ * Set to `false` to disable single quotes completely.
319
+ *
320
+ * Default: `null`
321
+ */
322
+ singleQuote?: boolean | null;
323
+ /**
324
+ * String representation for `true`.
325
+ * With the core schema, use `'true'`, `'True'`, or `'TRUE'`.
326
+ *
327
+ * Default: `'true'`
328
+ */
329
+ trueStr?: string;
330
+ /**
331
+ * The anchor used by an alias must be defined before the alias node. As it's
332
+ * possible for the document to be modified manually, the order may be
333
+ * verified during stringification.
334
+ *
335
+ * Default: `'true'`
336
+ */
337
+ verifyAliasOrder?: boolean;
338
+ };
@@ -0,0 +1,64 @@
1
+ import { ErrorCode } from '../errors.js';
2
+ import { Range } from '../nodes/Node.js';
3
+ import type { Scalar } from '../nodes/Scalar.js';
4
+ import type { BlockScalar, FlowScalar, SourceToken, Token } from './cst.js';
5
+ /**
6
+ * If `token` is a CST flow or block scalar, determine its string value and a few other attributes.
7
+ * Otherwise, return `null`.
8
+ */
9
+ export declare function resolveAsScalar(token: FlowScalar | BlockScalar, strict?: boolean, onError?: (offset: number, code: ErrorCode, message: string) => void): {
10
+ value: string;
11
+ type: Scalar.Type | null;
12
+ comment: string;
13
+ range: Range;
14
+ };
15
+ export declare function resolveAsScalar(token: Token | null | undefined, strict?: boolean, onError?: (offset: number, code: ErrorCode, message: string) => void): {
16
+ value: string;
17
+ type: Scalar.Type | null;
18
+ comment: string;
19
+ range: Range;
20
+ } | null;
21
+ /**
22
+ * Create a new scalar token with `value`
23
+ *
24
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
25
+ * as this function does not support any schema operations and won't check for such conflicts.
26
+ *
27
+ * @param value The string representation of the value, which will have its content properly indented.
28
+ * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.
29
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
30
+ * @param context.indent The indent level of the token.
31
+ * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.
32
+ * @param context.offset The offset position of the token.
33
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
34
+ */
35
+ export declare function createScalarToken(value: string, context: {
36
+ end?: SourceToken[];
37
+ implicitKey?: boolean;
38
+ indent: number;
39
+ inFlow?: boolean;
40
+ offset?: number;
41
+ type?: Scalar.Type;
42
+ }): BlockScalar | FlowScalar;
43
+ /**
44
+ * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.
45
+ *
46
+ * Best efforts are made to retain any comments previously associated with the `token`,
47
+ * though all contents within a collection's `items` will be overwritten.
48
+ *
49
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
50
+ * as this function does not support any schema operations and won't check for such conflicts.
51
+ *
52
+ * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.
53
+ * @param value The string representation of the value, which will have its content properly indented.
54
+ * @param context.afterKey In most cases, values after a key should have an additional level of indentation.
55
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
56
+ * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.
57
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
58
+ */
59
+ export declare function setScalarValue(token: Token, value: string, context?: {
60
+ afterKey?: boolean;
61
+ implicitKey?: boolean;
62
+ inFlow?: boolean;
63
+ type?: Scalar.Type;
64
+ }): void;
@@ -0,0 +1,218 @@
1
+ 'use strict';
2
+
3
+ var resolveBlockScalar = require('../compose/resolve-block-scalar.js');
4
+ var resolveFlowScalar = require('../compose/resolve-flow-scalar.js');
5
+ var errors = require('../errors.js');
6
+ var stringifyString = require('../stringify/stringifyString.js');
7
+
8
+ function resolveAsScalar(token, strict = true, onError) {
9
+ if (token) {
10
+ const _onError = (pos, code, message) => {
11
+ const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;
12
+ if (onError)
13
+ onError(offset, code, message);
14
+ else
15
+ throw new errors.YAMLParseError([offset, offset + 1], code, message);
16
+ };
17
+ switch (token.type) {
18
+ case 'scalar':
19
+ case 'single-quoted-scalar':
20
+ case 'double-quoted-scalar':
21
+ return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);
22
+ case 'block-scalar':
23
+ return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);
24
+ }
25
+ }
26
+ return null;
27
+ }
28
+ /**
29
+ * Create a new scalar token with `value`
30
+ *
31
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
32
+ * as this function does not support any schema operations and won't check for such conflicts.
33
+ *
34
+ * @param value The string representation of the value, which will have its content properly indented.
35
+ * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.
36
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
37
+ * @param context.indent The indent level of the token.
38
+ * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.
39
+ * @param context.offset The offset position of the token.
40
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
41
+ */
42
+ function createScalarToken(value, context) {
43
+ const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;
44
+ const source = stringifyString.stringifyString({ type, value }, {
45
+ implicitKey,
46
+ indent: indent > 0 ? ' '.repeat(indent) : '',
47
+ inFlow,
48
+ options: { blockQuote: true, lineWidth: -1 }
49
+ });
50
+ const end = context.end ?? [
51
+ { type: 'newline', offset: -1, indent, source: '\n' }
52
+ ];
53
+ switch (source[0]) {
54
+ case '|':
55
+ case '>': {
56
+ const he = source.indexOf('\n');
57
+ const head = source.substring(0, he);
58
+ const body = source.substring(he + 1) + '\n';
59
+ const props = [
60
+ { type: 'block-scalar-header', offset, indent, source: head }
61
+ ];
62
+ if (!addEndtoBlockProps(props, end))
63
+ props.push({ type: 'newline', offset: -1, indent, source: '\n' });
64
+ return { type: 'block-scalar', offset, indent, props, source: body };
65
+ }
66
+ case '"':
67
+ return { type: 'double-quoted-scalar', offset, indent, source, end };
68
+ case "'":
69
+ return { type: 'single-quoted-scalar', offset, indent, source, end };
70
+ default:
71
+ return { type: 'scalar', offset, indent, source, end };
72
+ }
73
+ }
74
+ /**
75
+ * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.
76
+ *
77
+ * Best efforts are made to retain any comments previously associated with the `token`,
78
+ * though all contents within a collection's `items` will be overwritten.
79
+ *
80
+ * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,
81
+ * as this function does not support any schema operations and won't check for such conflicts.
82
+ *
83
+ * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.
84
+ * @param value The string representation of the value, which will have its content properly indented.
85
+ * @param context.afterKey In most cases, values after a key should have an additional level of indentation.
86
+ * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.
87
+ * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.
88
+ * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.
89
+ */
90
+ function setScalarValue(token, value, context = {}) {
91
+ let { afterKey = false, implicitKey = false, inFlow = false, type } = context;
92
+ let indent = 'indent' in token ? token.indent : null;
93
+ if (afterKey && typeof indent === 'number')
94
+ indent += 2;
95
+ if (!type)
96
+ switch (token.type) {
97
+ case 'single-quoted-scalar':
98
+ type = 'QUOTE_SINGLE';
99
+ break;
100
+ case 'double-quoted-scalar':
101
+ type = 'QUOTE_DOUBLE';
102
+ break;
103
+ case 'block-scalar': {
104
+ const header = token.props[0];
105
+ if (header.type !== 'block-scalar-header')
106
+ throw new Error('Invalid block scalar header');
107
+ type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';
108
+ break;
109
+ }
110
+ default:
111
+ type = 'PLAIN';
112
+ }
113
+ const source = stringifyString.stringifyString({ type, value }, {
114
+ implicitKey: implicitKey || indent === null,
115
+ indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',
116
+ inFlow,
117
+ options: { blockQuote: true, lineWidth: -1 }
118
+ });
119
+ switch (source[0]) {
120
+ case '|':
121
+ case '>':
122
+ setBlockScalarValue(token, source);
123
+ break;
124
+ case '"':
125
+ setFlowScalarValue(token, source, 'double-quoted-scalar');
126
+ break;
127
+ case "'":
128
+ setFlowScalarValue(token, source, 'single-quoted-scalar');
129
+ break;
130
+ default:
131
+ setFlowScalarValue(token, source, 'scalar');
132
+ }
133
+ }
134
+ function setBlockScalarValue(token, source) {
135
+ const he = source.indexOf('\n');
136
+ const head = source.substring(0, he);
137
+ const body = source.substring(he + 1) + '\n';
138
+ if (token.type === 'block-scalar') {
139
+ const header = token.props[0];
140
+ if (header.type !== 'block-scalar-header')
141
+ throw new Error('Invalid block scalar header');
142
+ header.source = head;
143
+ token.source = body;
144
+ }
145
+ else {
146
+ const { offset } = token;
147
+ const indent = 'indent' in token ? token.indent : -1;
148
+ const props = [
149
+ { type: 'block-scalar-header', offset, indent, source: head }
150
+ ];
151
+ if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))
152
+ props.push({ type: 'newline', offset: -1, indent, source: '\n' });
153
+ for (const key of Object.keys(token))
154
+ if (key !== 'type' && key !== 'offset')
155
+ delete token[key];
156
+ Object.assign(token, { type: 'block-scalar', indent, props, source: body });
157
+ }
158
+ }
159
+ /** @returns `true` if last token is a newline */
160
+ function addEndtoBlockProps(props, end) {
161
+ if (end)
162
+ for (const st of end)
163
+ switch (st.type) {
164
+ case 'space':
165
+ case 'comment':
166
+ props.push(st);
167
+ break;
168
+ case 'newline':
169
+ props.push(st);
170
+ return true;
171
+ }
172
+ return false;
173
+ }
174
+ function setFlowScalarValue(token, source, type) {
175
+ switch (token.type) {
176
+ case 'scalar':
177
+ case 'double-quoted-scalar':
178
+ case 'single-quoted-scalar':
179
+ token.type = type;
180
+ token.source = source;
181
+ break;
182
+ case 'block-scalar': {
183
+ const end = token.props.slice(1);
184
+ let oa = source.length;
185
+ if (token.props[0].type === 'block-scalar-header')
186
+ oa -= token.props[0].source.length;
187
+ for (const tok of end)
188
+ tok.offset += oa;
189
+ delete token.props;
190
+ Object.assign(token, { type, source, end });
191
+ break;
192
+ }
193
+ case 'block-map':
194
+ case 'block-seq': {
195
+ const offset = token.offset + source.length;
196
+ const nl = { type: 'newline', offset, indent: token.indent, source: '\n' };
197
+ delete token.items;
198
+ Object.assign(token, { type, source, end: [nl] });
199
+ break;
200
+ }
201
+ default: {
202
+ const indent = 'indent' in token ? token.indent : -1;
203
+ const end = 'end' in token && Array.isArray(token.end)
204
+ ? token.end.filter(st => st.type === 'space' ||
205
+ st.type === 'comment' ||
206
+ st.type === 'newline')
207
+ : [];
208
+ for (const key of Object.keys(token))
209
+ if (key !== 'type' && key !== 'offset')
210
+ delete token[key];
211
+ Object.assign(token, { type, indent, source, end });
212
+ }
213
+ }
214
+ }
215
+
216
+ exports.createScalarToken = createScalarToken;
217
+ exports.resolveAsScalar = resolveAsScalar;
218
+ exports.setScalarValue = setScalarValue;
@@ -0,0 +1,8 @@
1
+ import type { CollectionItem, Token } from './cst.js';
2
+ /**
3
+ * Stringify a CST document, token, or collection item
4
+ *
5
+ * Fair warning: This applies no validation whatsoever, and
6
+ * simply concatenates the sources in their logical order.
7
+ */
8
+ export declare const stringify: (cst: Token | CollectionItem) => string;
@@ -0,0 +1,63 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Stringify a CST document, token, or collection item
5
+ *
6
+ * Fair warning: This applies no validation whatsoever, and
7
+ * simply concatenates the sources in their logical order.
8
+ */
9
+ const stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);
10
+ function stringifyToken(token) {
11
+ switch (token.type) {
12
+ case 'block-scalar': {
13
+ let res = '';
14
+ for (const tok of token.props)
15
+ res += stringifyToken(tok);
16
+ return res + token.source;
17
+ }
18
+ case 'block-map':
19
+ case 'block-seq': {
20
+ let res = '';
21
+ for (const item of token.items)
22
+ res += stringifyItem(item);
23
+ return res;
24
+ }
25
+ case 'flow-collection': {
26
+ let res = token.start.source;
27
+ for (const item of token.items)
28
+ res += stringifyItem(item);
29
+ for (const st of token.end)
30
+ res += st.source;
31
+ return res;
32
+ }
33
+ case 'document': {
34
+ let res = stringifyItem(token);
35
+ if (token.end)
36
+ for (const st of token.end)
37
+ res += st.source;
38
+ return res;
39
+ }
40
+ default: {
41
+ let res = token.source;
42
+ if ('end' in token && token.end)
43
+ for (const st of token.end)
44
+ res += st.source;
45
+ return res;
46
+ }
47
+ }
48
+ }
49
+ function stringifyItem({ start, key, sep, value }) {
50
+ let res = '';
51
+ for (const st of start)
52
+ res += st.source;
53
+ if (key)
54
+ res += stringifyToken(key);
55
+ if (sep)
56
+ for (const st of sep)
57
+ res += st.source;
58
+ if (value)
59
+ res += stringifyToken(value);
60
+ return res;
61
+ }
62
+
63
+ exports.stringify = stringify;