yaml 2.8.2 → 3.0.0-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 (238) hide show
  1. package/README.md +65 -85
  2. package/{bin.mjs → bin.js} +1 -1
  3. package/dist/chunk-BYypO7fO.js +18 -0
  4. package/dist/cli.d.ts +10 -7
  5. package/dist/cli.js +181 -0
  6. package/dist/directives-CG6n4xSM.js +2856 -0
  7. package/dist/index.d.ts +335 -25
  8. package/dist/index.js +4 -49
  9. package/dist/line-counter-TFl552k_.js +3098 -0
  10. package/dist/public-api-BE74JyVm.js +79 -0
  11. package/dist/stringifyString-S_ITVLTO.d.ts +1306 -0
  12. package/dist/test-events.d.ts +6 -3
  13. package/dist/test-events.js +98 -124
  14. package/dist/util.d.ts +2 -16
  15. package/dist/util.js +2 -27
  16. package/package.json +20 -44
  17. package/browser/dist/compose/compose-collection.js +0 -88
  18. package/browser/dist/compose/compose-doc.js +0 -43
  19. package/browser/dist/compose/compose-node.js +0 -102
  20. package/browser/dist/compose/compose-scalar.js +0 -86
  21. package/browser/dist/compose/composer.js +0 -217
  22. package/browser/dist/compose/resolve-block-map.js +0 -115
  23. package/browser/dist/compose/resolve-block-scalar.js +0 -198
  24. package/browser/dist/compose/resolve-block-seq.js +0 -49
  25. package/browser/dist/compose/resolve-end.js +0 -37
  26. package/browser/dist/compose/resolve-flow-collection.js +0 -207
  27. package/browser/dist/compose/resolve-flow-scalar.js +0 -223
  28. package/browser/dist/compose/resolve-props.js +0 -146
  29. package/browser/dist/compose/util-contains-newline.js +0 -34
  30. package/browser/dist/compose/util-empty-scalar-position.js +0 -26
  31. package/browser/dist/compose/util-flow-indent-check.js +0 -15
  32. package/browser/dist/compose/util-map-includes.js +0 -13
  33. package/browser/dist/doc/Document.js +0 -335
  34. package/browser/dist/doc/anchors.js +0 -71
  35. package/browser/dist/doc/applyReviver.js +0 -55
  36. package/browser/dist/doc/createNode.js +0 -88
  37. package/browser/dist/doc/directives.js +0 -176
  38. package/browser/dist/errors.js +0 -57
  39. package/browser/dist/index.js +0 -17
  40. package/browser/dist/log.js +0 -11
  41. package/browser/dist/nodes/Alias.js +0 -114
  42. package/browser/dist/nodes/Collection.js +0 -147
  43. package/browser/dist/nodes/Node.js +0 -38
  44. package/browser/dist/nodes/Pair.js +0 -36
  45. package/browser/dist/nodes/Scalar.js +0 -24
  46. package/browser/dist/nodes/YAMLMap.js +0 -144
  47. package/browser/dist/nodes/YAMLSeq.js +0 -113
  48. package/browser/dist/nodes/addPairToJSMap.js +0 -63
  49. package/browser/dist/nodes/identity.js +0 -36
  50. package/browser/dist/nodes/toJS.js +0 -37
  51. package/browser/dist/parse/cst-scalar.js +0 -214
  52. package/browser/dist/parse/cst-stringify.js +0 -61
  53. package/browser/dist/parse/cst-visit.js +0 -97
  54. package/browser/dist/parse/cst.js +0 -98
  55. package/browser/dist/parse/lexer.js +0 -717
  56. package/browser/dist/parse/line-counter.js +0 -39
  57. package/browser/dist/parse/parser.js +0 -967
  58. package/browser/dist/public-api.js +0 -102
  59. package/browser/dist/schema/Schema.js +0 -37
  60. package/browser/dist/schema/common/map.js +0 -17
  61. package/browser/dist/schema/common/null.js +0 -15
  62. package/browser/dist/schema/common/seq.js +0 -17
  63. package/browser/dist/schema/common/string.js +0 -14
  64. package/browser/dist/schema/core/bool.js +0 -19
  65. package/browser/dist/schema/core/float.js +0 -43
  66. package/browser/dist/schema/core/int.js +0 -38
  67. package/browser/dist/schema/core/schema.js +0 -23
  68. package/browser/dist/schema/json/schema.js +0 -62
  69. package/browser/dist/schema/tags.js +0 -96
  70. package/browser/dist/schema/yaml-1.1/binary.js +0 -58
  71. package/browser/dist/schema/yaml-1.1/bool.js +0 -26
  72. package/browser/dist/schema/yaml-1.1/float.js +0 -46
  73. package/browser/dist/schema/yaml-1.1/int.js +0 -71
  74. package/browser/dist/schema/yaml-1.1/merge.js +0 -64
  75. package/browser/dist/schema/yaml-1.1/omap.js +0 -74
  76. package/browser/dist/schema/yaml-1.1/pairs.js +0 -78
  77. package/browser/dist/schema/yaml-1.1/schema.js +0 -39
  78. package/browser/dist/schema/yaml-1.1/set.js +0 -93
  79. package/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
  80. package/browser/dist/stringify/foldFlowLines.js +0 -146
  81. package/browser/dist/stringify/stringify.js +0 -128
  82. package/browser/dist/stringify/stringifyCollection.js +0 -143
  83. package/browser/dist/stringify/stringifyComment.js +0 -20
  84. package/browser/dist/stringify/stringifyDocument.js +0 -85
  85. package/browser/dist/stringify/stringifyNumber.js +0 -24
  86. package/browser/dist/stringify/stringifyPair.js +0 -150
  87. package/browser/dist/stringify/stringifyString.js +0 -336
  88. package/browser/dist/util.js +0 -11
  89. package/browser/dist/visit.js +0 -233
  90. package/browser/index.js +0 -5
  91. package/browser/package.json +0 -3
  92. package/dist/cli.mjs +0 -201
  93. package/dist/compose/compose-collection.d.ts +0 -11
  94. package/dist/compose/compose-collection.js +0 -90
  95. package/dist/compose/compose-doc.d.ts +0 -7
  96. package/dist/compose/compose-doc.js +0 -45
  97. package/dist/compose/compose-node.d.ts +0 -29
  98. package/dist/compose/compose-node.js +0 -105
  99. package/dist/compose/compose-scalar.d.ts +0 -5
  100. package/dist/compose/compose-scalar.js +0 -88
  101. package/dist/compose/composer.d.ts +0 -63
  102. package/dist/compose/composer.js +0 -222
  103. package/dist/compose/resolve-block-map.d.ts +0 -6
  104. package/dist/compose/resolve-block-map.js +0 -117
  105. package/dist/compose/resolve-block-scalar.d.ts +0 -11
  106. package/dist/compose/resolve-block-scalar.js +0 -200
  107. package/dist/compose/resolve-block-seq.d.ts +0 -6
  108. package/dist/compose/resolve-block-seq.js +0 -51
  109. package/dist/compose/resolve-end.d.ts +0 -6
  110. package/dist/compose/resolve-end.js +0 -39
  111. package/dist/compose/resolve-flow-collection.d.ts +0 -7
  112. package/dist/compose/resolve-flow-collection.js +0 -209
  113. package/dist/compose/resolve-flow-scalar.d.ts +0 -10
  114. package/dist/compose/resolve-flow-scalar.js +0 -225
  115. package/dist/compose/resolve-props.d.ts +0 -23
  116. package/dist/compose/resolve-props.js +0 -148
  117. package/dist/compose/util-contains-newline.d.ts +0 -2
  118. package/dist/compose/util-contains-newline.js +0 -36
  119. package/dist/compose/util-empty-scalar-position.d.ts +0 -2
  120. package/dist/compose/util-empty-scalar-position.js +0 -28
  121. package/dist/compose/util-flow-indent-check.d.ts +0 -3
  122. package/dist/compose/util-flow-indent-check.js +0 -17
  123. package/dist/compose/util-map-includes.d.ts +0 -4
  124. package/dist/compose/util-map-includes.js +0 -15
  125. package/dist/doc/Document.d.ts +0 -141
  126. package/dist/doc/Document.js +0 -337
  127. package/dist/doc/anchors.d.ts +0 -24
  128. package/dist/doc/anchors.js +0 -76
  129. package/dist/doc/applyReviver.d.ts +0 -9
  130. package/dist/doc/applyReviver.js +0 -57
  131. package/dist/doc/createNode.d.ts +0 -17
  132. package/dist/doc/createNode.js +0 -90
  133. package/dist/doc/directives.d.ts +0 -49
  134. package/dist/doc/directives.js +0 -178
  135. package/dist/errors.d.ts +0 -21
  136. package/dist/errors.js +0 -62
  137. package/dist/log.d.ts +0 -3
  138. package/dist/log.js +0 -19
  139. package/dist/nodes/Alias.d.ts +0 -29
  140. package/dist/nodes/Alias.js +0 -116
  141. package/dist/nodes/Collection.d.ts +0 -73
  142. package/dist/nodes/Collection.js +0 -151
  143. package/dist/nodes/Node.d.ts +0 -53
  144. package/dist/nodes/Node.js +0 -40
  145. package/dist/nodes/Pair.d.ts +0 -22
  146. package/dist/nodes/Pair.js +0 -39
  147. package/dist/nodes/Scalar.d.ts +0 -43
  148. package/dist/nodes/Scalar.js +0 -27
  149. package/dist/nodes/YAMLMap.d.ts +0 -53
  150. package/dist/nodes/YAMLMap.js +0 -147
  151. package/dist/nodes/YAMLSeq.d.ts +0 -60
  152. package/dist/nodes/YAMLSeq.js +0 -115
  153. package/dist/nodes/addPairToJSMap.d.ts +0 -4
  154. package/dist/nodes/addPairToJSMap.js +0 -65
  155. package/dist/nodes/identity.d.ts +0 -23
  156. package/dist/nodes/identity.js +0 -53
  157. package/dist/nodes/toJS.d.ts +0 -29
  158. package/dist/nodes/toJS.js +0 -39
  159. package/dist/options.d.ts +0 -344
  160. package/dist/parse/cst-scalar.d.ts +0 -64
  161. package/dist/parse/cst-scalar.js +0 -218
  162. package/dist/parse/cst-stringify.d.ts +0 -8
  163. package/dist/parse/cst-stringify.js +0 -63
  164. package/dist/parse/cst-visit.d.ts +0 -39
  165. package/dist/parse/cst-visit.js +0 -99
  166. package/dist/parse/cst.d.ts +0 -109
  167. package/dist/parse/cst.js +0 -112
  168. package/dist/parse/lexer.d.ts +0 -87
  169. package/dist/parse/lexer.js +0 -719
  170. package/dist/parse/line-counter.d.ts +0 -22
  171. package/dist/parse/line-counter.js +0 -41
  172. package/dist/parse/parser.d.ts +0 -84
  173. package/dist/parse/parser.js +0 -972
  174. package/dist/public-api.d.ts +0 -44
  175. package/dist/public-api.js +0 -107
  176. package/dist/schema/Schema.d.ts +0 -17
  177. package/dist/schema/Schema.js +0 -39
  178. package/dist/schema/common/map.d.ts +0 -2
  179. package/dist/schema/common/map.js +0 -19
  180. package/dist/schema/common/null.d.ts +0 -4
  181. package/dist/schema/common/null.js +0 -17
  182. package/dist/schema/common/seq.d.ts +0 -2
  183. package/dist/schema/common/seq.js +0 -19
  184. package/dist/schema/common/string.d.ts +0 -2
  185. package/dist/schema/common/string.js +0 -16
  186. package/dist/schema/core/bool.d.ts +0 -4
  187. package/dist/schema/core/bool.js +0 -21
  188. package/dist/schema/core/float.d.ts +0 -4
  189. package/dist/schema/core/float.js +0 -47
  190. package/dist/schema/core/int.d.ts +0 -4
  191. package/dist/schema/core/int.js +0 -42
  192. package/dist/schema/core/schema.d.ts +0 -1
  193. package/dist/schema/core/schema.js +0 -25
  194. package/dist/schema/json/schema.d.ts +0 -2
  195. package/dist/schema/json/schema.js +0 -64
  196. package/dist/schema/json-schema.d.ts +0 -69
  197. package/dist/schema/tags.d.ts +0 -48
  198. package/dist/schema/tags.js +0 -99
  199. package/dist/schema/types.d.ts +0 -92
  200. package/dist/schema/yaml-1.1/binary.d.ts +0 -2
  201. package/dist/schema/yaml-1.1/binary.js +0 -70
  202. package/dist/schema/yaml-1.1/bool.d.ts +0 -7
  203. package/dist/schema/yaml-1.1/bool.js +0 -29
  204. package/dist/schema/yaml-1.1/float.d.ts +0 -4
  205. package/dist/schema/yaml-1.1/float.js +0 -50
  206. package/dist/schema/yaml-1.1/int.d.ts +0 -5
  207. package/dist/schema/yaml-1.1/int.js +0 -76
  208. package/dist/schema/yaml-1.1/merge.d.ts +0 -9
  209. package/dist/schema/yaml-1.1/merge.js +0 -68
  210. package/dist/schema/yaml-1.1/omap.d.ts +0 -22
  211. package/dist/schema/yaml-1.1/omap.js +0 -77
  212. package/dist/schema/yaml-1.1/pairs.d.ts +0 -10
  213. package/dist/schema/yaml-1.1/pairs.js +0 -82
  214. package/dist/schema/yaml-1.1/schema.d.ts +0 -1
  215. package/dist/schema/yaml-1.1/schema.js +0 -41
  216. package/dist/schema/yaml-1.1/set.d.ts +0 -28
  217. package/dist/schema/yaml-1.1/set.js +0 -96
  218. package/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
  219. package/dist/schema/yaml-1.1/timestamp.js +0 -105
  220. package/dist/stringify/foldFlowLines.d.ts +0 -34
  221. package/dist/stringify/foldFlowLines.js +0 -151
  222. package/dist/stringify/stringify.d.ts +0 -21
  223. package/dist/stringify/stringify.js +0 -131
  224. package/dist/stringify/stringifyCollection.d.ts +0 -17
  225. package/dist/stringify/stringifyCollection.js +0 -145
  226. package/dist/stringify/stringifyComment.d.ts +0 -10
  227. package/dist/stringify/stringifyComment.js +0 -24
  228. package/dist/stringify/stringifyDocument.d.ts +0 -4
  229. package/dist/stringify/stringifyDocument.js +0 -87
  230. package/dist/stringify/stringifyNumber.d.ts +0 -2
  231. package/dist/stringify/stringifyNumber.js +0 -26
  232. package/dist/stringify/stringifyPair.d.ts +0 -3
  233. package/dist/stringify/stringifyPair.js +0 -152
  234. package/dist/stringify/stringifyString.d.ts +0 -9
  235. package/dist/stringify/stringifyString.js +0 -338
  236. package/dist/visit.d.ts +0 -102
  237. package/dist/visit.js +0 -236
  238. package/util.js +0 -2
package/README.md CHANGED
@@ -14,7 +14,7 @@ It has no external dependencies and runs on Node.js as well as modern browsers.
14
14
  For the purposes of versioning, any changes that break any of the documented endpoints or APIs will be considered semver-major breaking changes.
15
15
  Undocumented library internals may change between minor versions, and previous APIs may be deprecated (but not removed).
16
16
 
17
- The minimum supported TypeScript version of the included typings is 3.9;
17
+ The minimum supported TypeScript version of the included typings is 5.9;
18
18
  for use in earlier versions you may need to set `skipLibCheck: true` in your config.
19
19
  This requirement may be updated between minor versions of the library.
20
20
 
@@ -25,13 +25,11 @@ For build instructions and contribution guidelines, see [docs/CONTRIBUTING.md](d
25
25
  To install:
26
26
 
27
27
  ```sh
28
- npm install yaml
28
+ npm install --save-exact yaml@next
29
29
  # or
30
30
  deno add jsr:@eemeli/yaml
31
31
  ```
32
32
 
33
- **Note:** These docs are for `yaml@2`. For v1, see the [v1.10.0 tag](https://github.com/eemeli/yaml/tree/v1.10.0) for the source and [eemeli.org/yaml/v1](https://eemeli.org/yaml/v1/) for the documentation.
34
-
35
33
  ## API Overview
36
34
 
37
35
  The API provided by `yaml` has three layers, depending on how deep you need to go: [Parse & Stringify](https://eemeli.org/yaml/#parse-amp-stringify), [Documents](https://eemeli.org/yaml/#documents), and the underlying [Lexer/Parser/Composer](https://eemeli.org/yaml/#parsing-yaml).
@@ -41,53 +39,80 @@ A [command-line tool](https://eemeli.org/yaml/#command-line-tool) is also includ
41
39
 
42
40
  ### Parse & Stringify
43
41
 
44
- ```js
45
- import { parse, stringify } from 'yaml'
46
- ```
42
+ As far as possible, these functions work the same as `JSON.parse` and `JSON.stringify`.
47
43
 
48
44
  - [`parse(str, reviver?, options?): value`](https://eemeli.org/yaml/#yaml-parse)
49
45
  - [`stringify(value, replacer?, options?): string`](https://eemeli.org/yaml/#yaml-stringify)
50
46
 
51
- ### Documents
47
+ ```js
48
+ import { parse, stringify } from 'yaml'
49
+
50
+ parse('[ true, false, maybe, null, 3.14159 ]')
51
+ // [ true, false, 'maybe', null, 3.14159 ]
52
+
53
+ stringify([true, false, 'maybe', null, 3.14159])
54
+ // `- true
55
+ // - false
56
+ // - maybe
57
+ // - null
58
+ // - 3.14159
59
+ // `
60
+
61
+ stringify({ number: 3, plain: 'string', block: 'two\nlines\n' })
62
+ // `number: 3
63
+ // plain: string
64
+ // block: |
65
+ // two
66
+ // lines
67
+ // `
68
+ ```
69
+
70
+ ```yaml
71
+ # file.yml
72
+ YAML:
73
+ - A human-readable data serialization language
74
+ - https://en.wikipedia.org/wiki/YAML
75
+ yaml:
76
+ - A complete JavaScript implementation
77
+ - https://www.npmjs.com/package/yaml
78
+ ```
52
79
 
53
- <!-- prettier-ignore -->
54
80
  ```js
55
- import {
56
- Document,
57
- isDocument,
58
- parseAllDocuments,
59
- parseDocument
60
- } from 'yaml'
81
+ import fs from 'node:fs'
82
+ import { parse } from 'yaml'
83
+
84
+ const file = fs.readFileSync('./file.yml', 'utf8')
85
+ parse(file)
86
+ // { YAML:
87
+ // [ 'A human-readable data serialization language',
88
+ // 'https://en.wikipedia.org/wiki/YAML' ],
89
+ // yaml:
90
+ // [ 'A complete JavaScript implementation',
91
+ // 'https://www.npmjs.com/package/yaml' ] }
61
92
  ```
62
93
 
94
+ ### Documents
95
+
63
96
  - [`Document`](https://eemeli.org/yaml/#documents)
64
97
  - [`constructor(value, replacer?, options?)`](https://eemeli.org/yaml/#creating-documents)
65
- - [`#contents`](https://eemeli.org/yaml/#content-nodes)
98
+ - [`#value`](https://eemeli.org/yaml/#content-nodes)
66
99
  - [`#directives`](https://eemeli.org/yaml/#stream-directives)
67
100
  - [`#errors`](https://eemeli.org/yaml/#errors)
68
101
  - [`#warnings`](https://eemeli.org/yaml/#errors)
69
- - [`isDocument(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
70
102
  - [`parseAllDocuments(str, options?): Document[]`](https://eemeli.org/yaml/#parsing-documents)
71
103
  - [`parseDocument(str, options?): Document`](https://eemeli.org/yaml/#parsing-documents)
72
104
 
73
- ### Content Nodes
74
-
75
105
  <!-- prettier-ignore -->
76
106
  ```js
77
107
  import {
78
- isAlias, isCollection, isMap, isNode,
79
- isPair, isScalar, isSeq, Scalar,
80
- visit, visitAsync, YAMLMap, YAMLSeq
108
+ Document,
109
+ parseAllDocuments,
110
+ parseDocument
81
111
  } from 'yaml'
82
112
  ```
83
113
 
84
- - [`isAlias(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
85
- - [`isCollection(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
86
- - [`isMap(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
87
- - [`isNode(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
88
- - [`isPair(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
89
- - [`isScalar(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
90
- - [`isSeq(foo): boolean`](https://eemeli.org/yaml/#identifying-node-types)
114
+ ### Content Nodes
115
+
91
116
  - [`new Scalar(value)`](https://eemeli.org/yaml/#scalar-values)
92
117
  - [`new YAMLMap()`](https://eemeli.org/yaml/#collections)
93
118
  - [`new YAMLSeq()`](https://eemeli.org/yaml/#collections)
@@ -97,70 +122,25 @@ import {
97
122
  - [`visit(node, visitor)`](https://eemeli.org/yaml/#finding-and-modifying-nodes)
98
123
  - [`visitAsync(node, visitor)`](https://eemeli.org/yaml/#finding-and-modifying-nodes)
99
124
 
100
- ### Parsing YAML
101
-
125
+ <!-- prettier-ignore -->
102
126
  ```js
103
- import { Composer, Lexer, Parser } from 'yaml'
127
+ import {
128
+ Scalar,
129
+ visit,
130
+ visitAsync,
131
+ YAMLMap,
132
+ YAMLSeq
133
+ } from 'yaml'
104
134
  ```
105
135
 
136
+ ### Lexer, Concrete Syntax Tree, and AST Composer
137
+
106
138
  - [`new Lexer().lex(src)`](https://eemeli.org/yaml/#lexer)
107
139
  - [`new Parser(onNewLine?).parse(src)`](https://eemeli.org/yaml/#parser)
108
140
  - [`new Composer(options?).compose(tokens)`](https://eemeli.org/yaml/#composer)
109
141
 
110
- ## YAML.parse
111
-
112
- ```yaml
113
- # file.yml
114
- YAML:
115
- - A human-readable data serialization language
116
- - https://en.wikipedia.org/wiki/YAML
117
- yaml:
118
- - A complete JavaScript implementation
119
- - https://www.npmjs.com/package/yaml
120
- ```
121
-
122
- ```js
123
- import fs from 'fs'
124
- import YAML from 'yaml'
125
-
126
- YAML.parse('3.14159')
127
- // 3.14159
128
-
129
- YAML.parse('[ true, false, maybe, null ]\n')
130
- // [ true, false, 'maybe', null ]
131
-
132
- const file = fs.readFileSync('./file.yml', 'utf8')
133
- YAML.parse(file)
134
- // { YAML:
135
- // [ 'A human-readable data serialization language',
136
- // 'https://en.wikipedia.org/wiki/YAML' ],
137
- // yaml:
138
- // [ 'A complete JavaScript implementation',
139
- // 'https://www.npmjs.com/package/yaml' ] }
140
- ```
141
-
142
- ## YAML.stringify
143
-
144
142
  ```js
145
- import YAML from 'yaml'
146
-
147
- YAML.stringify(3.14159)
148
- // '3.14159\n'
149
-
150
- YAML.stringify([true, false, 'maybe', null])
151
- // `- true
152
- // - false
153
- // - maybe
154
- // - null
155
- // `
156
-
157
- YAML.stringify({ number: 3, plain: 'string', block: 'two\nlines\n' })
158
- // `number: 3
159
- // plain: string
160
- // block: |
161
- // two
162
- // lines
163
- // `
143
+ import { Composer, Lexer, Parser } from 'yaml'
164
144
  ```
165
145
 
166
146
  ---
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { UserError, cli, help } from './dist/cli.mjs'
3
+ import { UserError, cli, help } from './dist/cli.js'
4
4
 
5
5
  cli(process.stdin, error => {
6
6
  if (error instanceof UserError) {
@@ -0,0 +1,18 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) {
6
+ __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ }
11
+ if (!no_symbols) {
12
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
13
+ }
14
+ return target;
15
+ };
16
+
17
+ //#endregion
18
+ export { __exportAll as t };
package/dist/cli.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- export declare const help = "yaml: A command-line YAML processor and inspector\n\nReads stdin and writes output to stdout and errors & warnings to stderr.\n\nUsage:\n yaml Process a YAML stream, outputting it as YAML\n yaml cst Parse the CST of a YAML stream\n yaml lex Parse the lexical tokens of a YAML stream\n yaml valid Validate a YAML stream, returning 0 on success\n\nOptions:\n --help, -h Show this message.\n --json, -j Output JSON.\n --indent 2 Output pretty-printed data, indented by the given number of spaces.\n --merge, -m Enable support for \"<<\" merge keys.\n\nAdditional options for bare \"yaml\" command:\n --doc, -d Output pretty-printed JS Document objects.\n --single, -1 Require the input to consist of a single YAML document.\n --strict, -s Stop on errors.\n --visit, -v Apply a visitor to each document (requires a path to import)\n --yaml 1.1 Set the YAML version. (default: 1.2)";
2
- export declare class UserError extends Error {
3
- static ARGS: number;
4
- static SINGLE: number;
5
- code: number;
6
- constructor(code: number, message: string);
1
+ //#region src/cli.d.ts
2
+ declare const help: string;
3
+ declare class UserError extends Error {
4
+ static ARGS: number;
5
+ static SINGLE: number;
6
+ code: number;
7
+ constructor(code: number, message: string);
7
8
  }
8
- export declare function cli(stdin: NodeJS.ReadableStream, done: (error?: Error) => void, argv?: string[]): Promise<void>;
9
+ declare function cli(stdin: NodeJS.ReadableStream, done: (error?: Error) => void, argv?: string[]): Promise<void>;
10
+ //#endregion
11
+ export { UserError, cli, help };
package/dist/cli.js ADDED
@@ -0,0 +1,181 @@
1
+ import { n as visit } from "./directives-CG6n4xSM.js";
2
+ import { i as lex, n as Composer, o as prettyToken, r as Parser, t as LineCounter, u as prettifyError } from "./line-counter-TFl552k_.js";
3
+ import { resolve } from "node:path";
4
+ import { parseArgs } from "node:util";
5
+
6
+ //#region src/cli.ts
7
+ const help = `\
8
+ yaml: A command-line YAML processor and inspector
9
+
10
+ Reads stdin and writes output to stdout and errors & warnings to stderr.
11
+
12
+ Usage:
13
+ yaml Process a YAML stream, outputting it as YAML
14
+ yaml cst Parse the CST of a YAML stream
15
+ yaml lex Parse the lexical tokens of a YAML stream
16
+ yaml valid Validate a YAML stream, returning 0 on success
17
+
18
+ Options:
19
+ --help, -h Show this message.
20
+ --json, -j Output JSON.
21
+ --indent 2 Output pretty-printed data, indented by the given number of spaces.
22
+ --merge, -m Enable support for "<<" merge keys.
23
+
24
+ Additional options for bare "yaml" command:
25
+ --doc, -d Output pretty-printed JS Document objects.
26
+ --single, -1 Require the input to consist of a single YAML document.
27
+ --strict, -s Stop on errors.
28
+ --visit, -v Apply a visitor to each document (requires a path to import)
29
+ --yaml 1.1 Set the YAML version. (default: 1.2)`;
30
+ var UserError = class extends Error {
31
+ static ARGS = 2;
32
+ static SINGLE = 3;
33
+ code;
34
+ constructor(code, message) {
35
+ super(`Error: ${message}`);
36
+ this.code = code;
37
+ }
38
+ };
39
+ async function cli(stdin, done, argv) {
40
+ let args;
41
+ try {
42
+ args = parseArgs({
43
+ args: argv,
44
+ allowPositionals: true,
45
+ options: {
46
+ doc: {
47
+ type: "boolean",
48
+ short: "d"
49
+ },
50
+ help: {
51
+ type: "boolean",
52
+ short: "h"
53
+ },
54
+ indent: {
55
+ type: "string",
56
+ short: "i"
57
+ },
58
+ merge: {
59
+ type: "boolean",
60
+ short: "m"
61
+ },
62
+ json: {
63
+ type: "boolean",
64
+ short: "j"
65
+ },
66
+ single: {
67
+ type: "boolean",
68
+ short: "1"
69
+ },
70
+ strict: {
71
+ type: "boolean",
72
+ short: "s"
73
+ },
74
+ visit: {
75
+ type: "string",
76
+ short: "v"
77
+ },
78
+ yaml: {
79
+ type: "string",
80
+ default: "1.2"
81
+ }
82
+ }
83
+ });
84
+ } catch (error) {
85
+ return done(new UserError(UserError.ARGS, error.message));
86
+ }
87
+ const { positionals: [mode], values: opt } = args;
88
+ let indent = Number(opt.indent);
89
+ stdin.setEncoding("utf-8");
90
+ switch (opt.help || mode) {
91
+ case true:
92
+ console.log(help);
93
+ break;
94
+ case "lex": {
95
+ const chunks = [];
96
+ stdin.on("data", (chunk) => chunks.push(chunk));
97
+ stdin.on("end", () => {
98
+ const data = [];
99
+ for (const tok of lex(chunks.join(""))) if (opt.json) data.push(tok);
100
+ else console.log(prettyToken(tok));
101
+ if (opt.json) console.log(JSON.stringify(data, null, indent));
102
+ done();
103
+ });
104
+ break;
105
+ }
106
+ case "cst": {
107
+ const chunks = [];
108
+ stdin.on("data", (chunk) => chunks.push(chunk));
109
+ stdin.on("end", () => {
110
+ const data = [];
111
+ for (const tok of new Parser().parse(chunks.join(""))) if (opt.json) data.push(tok);
112
+ else console.dir(tok, { depth: null });
113
+ if (opt.json) console.log(JSON.stringify(data, null, indent));
114
+ done();
115
+ });
116
+ break;
117
+ }
118
+ case void 0:
119
+ case "valid": {
120
+ const visitor = opt.visit ? (await import(resolve(opt.visit))).default : null;
121
+ let source = "";
122
+ stdin.on("data", (chunk) => source += chunk);
123
+ stdin.on("end", () => {
124
+ const lineCounter = new LineCounter();
125
+ const composer = new Composer({
126
+ version: opt.yaml,
127
+ merge: opt.merge
128
+ });
129
+ const parser = new Parser(lineCounter.addNewLine);
130
+ let hasDoc = false;
131
+ let reqDocEnd = false;
132
+ const data = [];
133
+ for (const tok of parser.parse(source)) composer.next(tok);
134
+ for (const doc of composer.end(false)) {
135
+ if (hasDoc && opt.single) return done(new UserError(UserError.SINGLE, "Input stream contains multiple documents"));
136
+ for (const error of doc.errors) {
137
+ prettifyError(source, lineCounter)(error);
138
+ if (opt.strict || mode === "valid") return done(error);
139
+ console.error(error);
140
+ }
141
+ for (const warning of doc.warnings) {
142
+ prettifyError(source, lineCounter)(warning);
143
+ console.error(warning);
144
+ }
145
+ if (visitor) visit(doc, visitor);
146
+ if (mode === "valid") doc.toJS();
147
+ else if (opt.json) data.push(doc);
148
+ else if (opt.doc) {
149
+ Object.defineProperties(doc, {
150
+ options: { enumerable: false },
151
+ schema: { enumerable: false }
152
+ });
153
+ console.dir(doc, { depth: null });
154
+ } else {
155
+ if (reqDocEnd) console.log("...");
156
+ try {
157
+ indent ||= 2;
158
+ const str = doc.toString({ indent });
159
+ console.log(str.endsWith("\n") ? str.slice(0, -1) : str);
160
+ } catch (error) {
161
+ done(error);
162
+ }
163
+ }
164
+ hasDoc = true;
165
+ reqDocEnd = !doc.directives?.docEnd;
166
+ }
167
+ if (opt.single && !hasDoc) return done(new UserError(UserError.SINGLE, "Input stream contained no documents"));
168
+ if (mode !== "valid" && opt.json) console.log(JSON.stringify(opt.single ? data[0] : data, null, indent));
169
+ done();
170
+ });
171
+ break;
172
+ }
173
+ default: {
174
+ const msg = `Unknown command: ${JSON.stringify(mode)}`;
175
+ done(new UserError(UserError.ARGS, msg));
176
+ }
177
+ }
178
+ }
179
+
180
+ //#endregion
181
+ export { UserError, cli, help };