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,198 @@
1
+ import { Scalar } from '../nodes/Scalar.js';
2
+
3
+ function resolveBlockScalar(ctx, scalar, onError) {
4
+ const start = scalar.offset;
5
+ const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);
6
+ if (!header)
7
+ return { value: '', type: null, comment: '', range: [start, start, start] };
8
+ const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;
9
+ const lines = scalar.source ? splitLines(scalar.source) : [];
10
+ // determine the end of content & start of chomping
11
+ let chompStart = lines.length;
12
+ for (let i = lines.length - 1; i >= 0; --i) {
13
+ const content = lines[i][1];
14
+ if (content === '' || content === '\r')
15
+ chompStart = i;
16
+ else
17
+ break;
18
+ }
19
+ // shortcut for empty contents
20
+ if (chompStart === 0) {
21
+ const value = header.chomp === '+' && lines.length > 0
22
+ ? '\n'.repeat(Math.max(1, lines.length - 1))
23
+ : '';
24
+ let end = start + header.length;
25
+ if (scalar.source)
26
+ end += scalar.source.length;
27
+ return { value, type, comment: header.comment, range: [start, end, end] };
28
+ }
29
+ // find the indentation level to trim from start
30
+ let trimIndent = scalar.indent + header.indent;
31
+ let offset = scalar.offset + header.length;
32
+ let contentStart = 0;
33
+ for (let i = 0; i < chompStart; ++i) {
34
+ const [indent, content] = lines[i];
35
+ if (content === '' || content === '\r') {
36
+ if (header.indent === 0 && indent.length > trimIndent)
37
+ trimIndent = indent.length;
38
+ }
39
+ else {
40
+ if (indent.length < trimIndent) {
41
+ const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';
42
+ onError(offset + indent.length, 'MISSING_CHAR', message);
43
+ }
44
+ if (header.indent === 0)
45
+ trimIndent = indent.length;
46
+ contentStart = i;
47
+ if (trimIndent === 0 && !ctx.atRoot) {
48
+ const message = 'Block scalar values in collections must be indented';
49
+ onError(offset, 'BAD_INDENT', message);
50
+ }
51
+ break;
52
+ }
53
+ offset += indent.length + content.length + 1;
54
+ }
55
+ // include trailing more-indented empty lines in content
56
+ for (let i = lines.length - 1; i >= chompStart; --i) {
57
+ if (lines[i][0].length > trimIndent)
58
+ chompStart = i + 1;
59
+ }
60
+ let value = '';
61
+ let sep = '';
62
+ let prevMoreIndented = false;
63
+ // leading whitespace is kept intact
64
+ for (let i = 0; i < contentStart; ++i)
65
+ value += lines[i][0].slice(trimIndent) + '\n';
66
+ for (let i = contentStart; i < chompStart; ++i) {
67
+ let [indent, content] = lines[i];
68
+ offset += indent.length + content.length + 1;
69
+ const crlf = content[content.length - 1] === '\r';
70
+ if (crlf)
71
+ content = content.slice(0, -1);
72
+ /* istanbul ignore if already caught in lexer */
73
+ if (content && indent.length < trimIndent) {
74
+ const src = header.indent
75
+ ? 'explicit indentation indicator'
76
+ : 'first line';
77
+ const message = `Block scalar lines must not be less indented than their ${src}`;
78
+ onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);
79
+ indent = '';
80
+ }
81
+ if (type === Scalar.BLOCK_LITERAL) {
82
+ value += sep + indent.slice(trimIndent) + content;
83
+ sep = '\n';
84
+ }
85
+ else if (indent.length > trimIndent || content[0] === '\t') {
86
+ // more-indented content within a folded block
87
+ if (sep === ' ')
88
+ sep = '\n';
89
+ else if (!prevMoreIndented && sep === '\n')
90
+ sep = '\n\n';
91
+ value += sep + indent.slice(trimIndent) + content;
92
+ sep = '\n';
93
+ prevMoreIndented = true;
94
+ }
95
+ else if (content === '') {
96
+ // empty line
97
+ if (sep === '\n')
98
+ value += '\n';
99
+ else
100
+ sep = '\n';
101
+ }
102
+ else {
103
+ value += sep + content;
104
+ sep = ' ';
105
+ prevMoreIndented = false;
106
+ }
107
+ }
108
+ switch (header.chomp) {
109
+ case '-':
110
+ break;
111
+ case '+':
112
+ for (let i = chompStart; i < lines.length; ++i)
113
+ value += '\n' + lines[i][0].slice(trimIndent);
114
+ if (value[value.length - 1] !== '\n')
115
+ value += '\n';
116
+ break;
117
+ default:
118
+ value += '\n';
119
+ }
120
+ const end = start + header.length + scalar.source.length;
121
+ return { value, type, comment: header.comment, range: [start, end, end] };
122
+ }
123
+ function parseBlockScalarHeader({ offset, props }, strict, onError) {
124
+ /* istanbul ignore if should not happen */
125
+ if (props[0].type !== 'block-scalar-header') {
126
+ onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');
127
+ return null;
128
+ }
129
+ const { source } = props[0];
130
+ const mode = source[0];
131
+ let indent = 0;
132
+ let chomp = '';
133
+ let error = -1;
134
+ for (let i = 1; i < source.length; ++i) {
135
+ const ch = source[i];
136
+ if (!chomp && (ch === '-' || ch === '+'))
137
+ chomp = ch;
138
+ else {
139
+ const n = Number(ch);
140
+ if (!indent && n)
141
+ indent = n;
142
+ else if (error === -1)
143
+ error = offset + i;
144
+ }
145
+ }
146
+ if (error !== -1)
147
+ onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);
148
+ let hasSpace = false;
149
+ let comment = '';
150
+ let length = source.length;
151
+ for (let i = 1; i < props.length; ++i) {
152
+ const token = props[i];
153
+ switch (token.type) {
154
+ case 'space':
155
+ hasSpace = true;
156
+ // fallthrough
157
+ case 'newline':
158
+ length += token.source.length;
159
+ break;
160
+ case 'comment':
161
+ if (strict && !hasSpace) {
162
+ const message = 'Comments must be separated from other tokens by white space characters';
163
+ onError(token, 'MISSING_CHAR', message);
164
+ }
165
+ length += token.source.length;
166
+ comment = token.source.substring(1);
167
+ break;
168
+ case 'error':
169
+ onError(token, 'UNEXPECTED_TOKEN', token.message);
170
+ length += token.source.length;
171
+ break;
172
+ /* istanbul ignore next should not happen */
173
+ default: {
174
+ const message = `Unexpected token in block scalar header: ${token.type}`;
175
+ onError(token, 'UNEXPECTED_TOKEN', message);
176
+ const ts = token.source;
177
+ if (ts && typeof ts === 'string')
178
+ length += ts.length;
179
+ }
180
+ }
181
+ }
182
+ return { mode, indent, chomp, comment, length };
183
+ }
184
+ /** @returns Array of lines split up as `[indent, content]` */
185
+ function splitLines(source) {
186
+ const split = source.split(/\n( *)/);
187
+ const first = split[0];
188
+ const m = first.match(/^( *)/);
189
+ const line0 = m?.[1]
190
+ ? [m[1], first.slice(m[1].length)]
191
+ : ['', first];
192
+ const lines = [line0];
193
+ for (let i = 1; i < split.length; i += 2)
194
+ lines.push([split[i], split[i + 1]]);
195
+ return lines;
196
+ }
197
+
198
+ export { resolveBlockScalar };
@@ -0,0 +1,47 @@
1
+ import { YAMLSeq } from '../nodes/YAMLSeq.js';
2
+ import { resolveProps } from './resolve-props.js';
3
+ import { flowIndentCheck } from './util-flow-indent-check.js';
4
+
5
+ function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {
6
+ const NodeClass = tag?.nodeClass ?? YAMLSeq;
7
+ const seq = new NodeClass(ctx.schema);
8
+ if (ctx.atRoot)
9
+ ctx.atRoot = false;
10
+ let offset = bs.offset;
11
+ let commentEnd = null;
12
+ for (const { start, value } of bs.items) {
13
+ const props = resolveProps(start, {
14
+ indicator: 'seq-item-ind',
15
+ next: value,
16
+ offset,
17
+ onError,
18
+ parentIndent: bs.indent,
19
+ startOnNewline: true
20
+ });
21
+ if (!props.found) {
22
+ if (props.anchor || props.tag || value) {
23
+ if (value && value.type === 'block-seq')
24
+ onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');
25
+ else
26
+ onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');
27
+ }
28
+ else {
29
+ commentEnd = props.end;
30
+ if (props.comment)
31
+ seq.comment = props.comment;
32
+ continue;
33
+ }
34
+ }
35
+ const node = value
36
+ ? composeNode(ctx, value, props, onError)
37
+ : composeEmptyNode(ctx, props.end, start, null, props, onError);
38
+ if (ctx.schema.compat)
39
+ flowIndentCheck(bs.indent, value, onError);
40
+ offset = node.range[2];
41
+ seq.items.push(node);
42
+ }
43
+ seq.range = [bs.offset, offset, commentEnd ?? offset];
44
+ return seq;
45
+ }
46
+
47
+ export { resolveBlockSeq };
@@ -0,0 +1,37 @@
1
+ function resolveEnd(end, offset, reqSpace, onError) {
2
+ let comment = '';
3
+ if (end) {
4
+ let hasSpace = false;
5
+ let sep = '';
6
+ for (const token of end) {
7
+ const { source, type } = token;
8
+ switch (type) {
9
+ case 'space':
10
+ hasSpace = true;
11
+ break;
12
+ case 'comment': {
13
+ if (reqSpace && !hasSpace)
14
+ onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
15
+ const cb = source.substring(1) || ' ';
16
+ if (!comment)
17
+ comment = cb;
18
+ else
19
+ comment += sep + cb;
20
+ sep = '';
21
+ break;
22
+ }
23
+ case 'newline':
24
+ if (comment)
25
+ sep += source;
26
+ hasSpace = true;
27
+ break;
28
+ default:
29
+ onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);
30
+ }
31
+ offset += source.length;
32
+ }
33
+ }
34
+ return { comment, offset };
35
+ }
36
+
37
+ export { resolveEnd };
@@ -0,0 +1,203 @@
1
+ import { isPair } from '../nodes/identity.js';
2
+ import { Pair } from '../nodes/Pair.js';
3
+ import { YAMLMap } from '../nodes/YAMLMap.js';
4
+ import { YAMLSeq } from '../nodes/YAMLSeq.js';
5
+ import { resolveEnd } from './resolve-end.js';
6
+ import { resolveProps } from './resolve-props.js';
7
+ import { containsNewline } from './util-contains-newline.js';
8
+ import { mapIncludes } from './util-map-includes.js';
9
+
10
+ const blockMsg = 'Block collections are not allowed within flow collections';
11
+ const isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');
12
+ function resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {
13
+ const isMap = fc.start.source === '{';
14
+ const fcName = isMap ? 'flow map' : 'flow sequence';
15
+ const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap : YAMLSeq));
16
+ const coll = new NodeClass(ctx.schema);
17
+ coll.flow = true;
18
+ const atRoot = ctx.atRoot;
19
+ if (atRoot)
20
+ ctx.atRoot = false;
21
+ let offset = fc.offset + fc.start.source.length;
22
+ for (let i = 0; i < fc.items.length; ++i) {
23
+ const collItem = fc.items[i];
24
+ const { start, key, sep, value } = collItem;
25
+ const props = resolveProps(start, {
26
+ flow: fcName,
27
+ indicator: 'explicit-key-ind',
28
+ next: key ?? sep?.[0],
29
+ offset,
30
+ onError,
31
+ parentIndent: fc.indent,
32
+ startOnNewline: false
33
+ });
34
+ if (!props.found) {
35
+ if (!props.anchor && !props.tag && !sep && !value) {
36
+ if (i === 0 && props.comma)
37
+ onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
38
+ else if (i < fc.items.length - 1)
39
+ onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);
40
+ if (props.comment) {
41
+ if (coll.comment)
42
+ coll.comment += '\n' + props.comment;
43
+ else
44
+ coll.comment = props.comment;
45
+ }
46
+ offset = props.end;
47
+ continue;
48
+ }
49
+ if (!isMap && ctx.options.strict && containsNewline(key))
50
+ onError(key, // checked by containsNewline()
51
+ 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
52
+ }
53
+ if (i === 0) {
54
+ if (props.comma)
55
+ onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);
56
+ }
57
+ else {
58
+ if (!props.comma)
59
+ onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);
60
+ if (props.comment) {
61
+ let prevItemComment = '';
62
+ loop: for (const st of start) {
63
+ switch (st.type) {
64
+ case 'comma':
65
+ case 'space':
66
+ break;
67
+ case 'comment':
68
+ prevItemComment = st.source.substring(1);
69
+ break loop;
70
+ default:
71
+ break loop;
72
+ }
73
+ }
74
+ if (prevItemComment) {
75
+ let prev = coll.items[coll.items.length - 1];
76
+ if (isPair(prev))
77
+ prev = prev.value ?? prev.key;
78
+ if (prev.comment)
79
+ prev.comment += '\n' + prevItemComment;
80
+ else
81
+ prev.comment = prevItemComment;
82
+ props.comment = props.comment.substring(prevItemComment.length + 1);
83
+ }
84
+ }
85
+ }
86
+ if (!isMap && !sep && !props.found) {
87
+ // item is a value in a seq
88
+ // → key & sep are empty, start does not include ? or :
89
+ const valueNode = value
90
+ ? composeNode(ctx, value, props, onError)
91
+ : composeEmptyNode(ctx, props.end, sep, null, props, onError);
92
+ coll.items.push(valueNode);
93
+ offset = valueNode.range[2];
94
+ if (isBlock(value))
95
+ onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
96
+ }
97
+ else {
98
+ // item is a key+value pair
99
+ // key value
100
+ const keyStart = props.end;
101
+ const keyNode = key
102
+ ? composeNode(ctx, key, props, onError)
103
+ : composeEmptyNode(ctx, keyStart, start, null, props, onError);
104
+ if (isBlock(key))
105
+ onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);
106
+ // value properties
107
+ const valueProps = resolveProps(sep ?? [], {
108
+ flow: fcName,
109
+ indicator: 'map-value-ind',
110
+ next: value,
111
+ offset: keyNode.range[2],
112
+ onError,
113
+ parentIndent: fc.indent,
114
+ startOnNewline: false
115
+ });
116
+ if (valueProps.found) {
117
+ if (!isMap && !props.found && ctx.options.strict) {
118
+ if (sep)
119
+ for (const st of sep) {
120
+ if (st === valueProps.found)
121
+ break;
122
+ if (st.type === 'newline') {
123
+ onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');
124
+ break;
125
+ }
126
+ }
127
+ if (props.start < valueProps.found.offset - 1024)
128
+ onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');
129
+ }
130
+ }
131
+ else if (value) {
132
+ if ('source' in value && value.source && value.source[0] === ':')
133
+ onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);
134
+ else
135
+ onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);
136
+ }
137
+ // value value
138
+ const valueNode = value
139
+ ? composeNode(ctx, value, valueProps, onError)
140
+ : valueProps.found
141
+ ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)
142
+ : null;
143
+ if (valueNode) {
144
+ if (isBlock(value))
145
+ onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);
146
+ }
147
+ else if (valueProps.comment) {
148
+ if (keyNode.comment)
149
+ keyNode.comment += '\n' + valueProps.comment;
150
+ else
151
+ keyNode.comment = valueProps.comment;
152
+ }
153
+ const pair = new Pair(keyNode, valueNode);
154
+ if (ctx.options.keepSourceTokens)
155
+ pair.srcToken = collItem;
156
+ if (isMap) {
157
+ const map = coll;
158
+ if (mapIncludes(ctx, map.items, keyNode))
159
+ onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
160
+ map.items.push(pair);
161
+ }
162
+ else {
163
+ const map = new YAMLMap(ctx.schema);
164
+ map.flow = true;
165
+ map.items.push(pair);
166
+ const endRange = (valueNode ?? keyNode).range;
167
+ map.range = [keyNode.range[0], endRange[1], endRange[2]];
168
+ coll.items.push(map);
169
+ }
170
+ offset = valueNode ? valueNode.range[2] : valueProps.end;
171
+ }
172
+ }
173
+ const expectedEnd = isMap ? '}' : ']';
174
+ const [ce, ...ee] = fc.end;
175
+ let cePos = offset;
176
+ if (ce && ce.source === expectedEnd)
177
+ cePos = ce.offset + ce.source.length;
178
+ else {
179
+ const name = fcName[0].toUpperCase() + fcName.substring(1);
180
+ const msg = atRoot
181
+ ? `${name} must end with a ${expectedEnd}`
182
+ : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;
183
+ onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);
184
+ if (ce && ce.source.length !== 1)
185
+ ee.unshift(ce);
186
+ }
187
+ if (ee.length > 0) {
188
+ const end = resolveEnd(ee, cePos, ctx.options.strict, onError);
189
+ if (end.comment) {
190
+ if (coll.comment)
191
+ coll.comment += '\n' + end.comment;
192
+ else
193
+ coll.comment = end.comment;
194
+ }
195
+ coll.range = [fc.offset, cePos, end.offset];
196
+ }
197
+ else {
198
+ coll.range = [fc.offset, cePos, cePos];
199
+ }
200
+ return coll;
201
+ }
202
+
203
+ export { resolveFlowCollection };