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.
- package/README.md +65 -85
- package/{bin.mjs → bin.js} +1 -1
- package/dist/chunk-BYypO7fO.js +18 -0
- package/dist/cli.d.ts +10 -7
- package/dist/cli.js +181 -0
- package/dist/directives-CG6n4xSM.js +2856 -0
- package/dist/index.d.ts +335 -25
- package/dist/index.js +4 -49
- package/dist/line-counter-TFl552k_.js +3098 -0
- package/dist/public-api-BE74JyVm.js +79 -0
- package/dist/stringifyString-S_ITVLTO.d.ts +1306 -0
- package/dist/test-events.d.ts +6 -3
- package/dist/test-events.js +98 -124
- package/dist/util.d.ts +2 -16
- package/dist/util.js +2 -27
- package/package.json +20 -44
- package/browser/dist/compose/compose-collection.js +0 -88
- package/browser/dist/compose/compose-doc.js +0 -43
- package/browser/dist/compose/compose-node.js +0 -102
- package/browser/dist/compose/compose-scalar.js +0 -86
- package/browser/dist/compose/composer.js +0 -217
- package/browser/dist/compose/resolve-block-map.js +0 -115
- package/browser/dist/compose/resolve-block-scalar.js +0 -198
- package/browser/dist/compose/resolve-block-seq.js +0 -49
- package/browser/dist/compose/resolve-end.js +0 -37
- package/browser/dist/compose/resolve-flow-collection.js +0 -207
- package/browser/dist/compose/resolve-flow-scalar.js +0 -223
- package/browser/dist/compose/resolve-props.js +0 -146
- package/browser/dist/compose/util-contains-newline.js +0 -34
- package/browser/dist/compose/util-empty-scalar-position.js +0 -26
- package/browser/dist/compose/util-flow-indent-check.js +0 -15
- package/browser/dist/compose/util-map-includes.js +0 -13
- package/browser/dist/doc/Document.js +0 -335
- package/browser/dist/doc/anchors.js +0 -71
- package/browser/dist/doc/applyReviver.js +0 -55
- package/browser/dist/doc/createNode.js +0 -88
- package/browser/dist/doc/directives.js +0 -176
- package/browser/dist/errors.js +0 -57
- package/browser/dist/index.js +0 -17
- package/browser/dist/log.js +0 -11
- package/browser/dist/nodes/Alias.js +0 -114
- package/browser/dist/nodes/Collection.js +0 -147
- package/browser/dist/nodes/Node.js +0 -38
- package/browser/dist/nodes/Pair.js +0 -36
- package/browser/dist/nodes/Scalar.js +0 -24
- package/browser/dist/nodes/YAMLMap.js +0 -144
- package/browser/dist/nodes/YAMLSeq.js +0 -113
- package/browser/dist/nodes/addPairToJSMap.js +0 -63
- package/browser/dist/nodes/identity.js +0 -36
- package/browser/dist/nodes/toJS.js +0 -37
- package/browser/dist/parse/cst-scalar.js +0 -214
- package/browser/dist/parse/cst-stringify.js +0 -61
- package/browser/dist/parse/cst-visit.js +0 -97
- package/browser/dist/parse/cst.js +0 -98
- package/browser/dist/parse/lexer.js +0 -717
- package/browser/dist/parse/line-counter.js +0 -39
- package/browser/dist/parse/parser.js +0 -967
- package/browser/dist/public-api.js +0 -102
- package/browser/dist/schema/Schema.js +0 -37
- package/browser/dist/schema/common/map.js +0 -17
- package/browser/dist/schema/common/null.js +0 -15
- package/browser/dist/schema/common/seq.js +0 -17
- package/browser/dist/schema/common/string.js +0 -14
- package/browser/dist/schema/core/bool.js +0 -19
- package/browser/dist/schema/core/float.js +0 -43
- package/browser/dist/schema/core/int.js +0 -38
- package/browser/dist/schema/core/schema.js +0 -23
- package/browser/dist/schema/json/schema.js +0 -62
- package/browser/dist/schema/tags.js +0 -96
- package/browser/dist/schema/yaml-1.1/binary.js +0 -58
- package/browser/dist/schema/yaml-1.1/bool.js +0 -26
- package/browser/dist/schema/yaml-1.1/float.js +0 -46
- package/browser/dist/schema/yaml-1.1/int.js +0 -71
- package/browser/dist/schema/yaml-1.1/merge.js +0 -64
- package/browser/dist/schema/yaml-1.1/omap.js +0 -74
- package/browser/dist/schema/yaml-1.1/pairs.js +0 -78
- package/browser/dist/schema/yaml-1.1/schema.js +0 -39
- package/browser/dist/schema/yaml-1.1/set.js +0 -93
- package/browser/dist/schema/yaml-1.1/timestamp.js +0 -101
- package/browser/dist/stringify/foldFlowLines.js +0 -146
- package/browser/dist/stringify/stringify.js +0 -128
- package/browser/dist/stringify/stringifyCollection.js +0 -143
- package/browser/dist/stringify/stringifyComment.js +0 -20
- package/browser/dist/stringify/stringifyDocument.js +0 -85
- package/browser/dist/stringify/stringifyNumber.js +0 -24
- package/browser/dist/stringify/stringifyPair.js +0 -150
- package/browser/dist/stringify/stringifyString.js +0 -336
- package/browser/dist/util.js +0 -11
- package/browser/dist/visit.js +0 -233
- package/browser/index.js +0 -5
- package/browser/package.json +0 -3
- package/dist/cli.mjs +0 -201
- package/dist/compose/compose-collection.d.ts +0 -11
- package/dist/compose/compose-collection.js +0 -90
- package/dist/compose/compose-doc.d.ts +0 -7
- package/dist/compose/compose-doc.js +0 -45
- package/dist/compose/compose-node.d.ts +0 -29
- package/dist/compose/compose-node.js +0 -105
- package/dist/compose/compose-scalar.d.ts +0 -5
- package/dist/compose/compose-scalar.js +0 -88
- package/dist/compose/composer.d.ts +0 -63
- package/dist/compose/composer.js +0 -222
- package/dist/compose/resolve-block-map.d.ts +0 -6
- package/dist/compose/resolve-block-map.js +0 -117
- package/dist/compose/resolve-block-scalar.d.ts +0 -11
- package/dist/compose/resolve-block-scalar.js +0 -200
- package/dist/compose/resolve-block-seq.d.ts +0 -6
- package/dist/compose/resolve-block-seq.js +0 -51
- package/dist/compose/resolve-end.d.ts +0 -6
- package/dist/compose/resolve-end.js +0 -39
- package/dist/compose/resolve-flow-collection.d.ts +0 -7
- package/dist/compose/resolve-flow-collection.js +0 -209
- package/dist/compose/resolve-flow-scalar.d.ts +0 -10
- package/dist/compose/resolve-flow-scalar.js +0 -225
- package/dist/compose/resolve-props.d.ts +0 -23
- package/dist/compose/resolve-props.js +0 -148
- package/dist/compose/util-contains-newline.d.ts +0 -2
- package/dist/compose/util-contains-newline.js +0 -36
- package/dist/compose/util-empty-scalar-position.d.ts +0 -2
- package/dist/compose/util-empty-scalar-position.js +0 -28
- package/dist/compose/util-flow-indent-check.d.ts +0 -3
- package/dist/compose/util-flow-indent-check.js +0 -17
- package/dist/compose/util-map-includes.d.ts +0 -4
- package/dist/compose/util-map-includes.js +0 -15
- package/dist/doc/Document.d.ts +0 -141
- package/dist/doc/Document.js +0 -337
- package/dist/doc/anchors.d.ts +0 -24
- package/dist/doc/anchors.js +0 -76
- package/dist/doc/applyReviver.d.ts +0 -9
- package/dist/doc/applyReviver.js +0 -57
- package/dist/doc/createNode.d.ts +0 -17
- package/dist/doc/createNode.js +0 -90
- package/dist/doc/directives.d.ts +0 -49
- package/dist/doc/directives.js +0 -178
- package/dist/errors.d.ts +0 -21
- package/dist/errors.js +0 -62
- package/dist/log.d.ts +0 -3
- package/dist/log.js +0 -19
- package/dist/nodes/Alias.d.ts +0 -29
- package/dist/nodes/Alias.js +0 -116
- package/dist/nodes/Collection.d.ts +0 -73
- package/dist/nodes/Collection.js +0 -151
- package/dist/nodes/Node.d.ts +0 -53
- package/dist/nodes/Node.js +0 -40
- package/dist/nodes/Pair.d.ts +0 -22
- package/dist/nodes/Pair.js +0 -39
- package/dist/nodes/Scalar.d.ts +0 -43
- package/dist/nodes/Scalar.js +0 -27
- package/dist/nodes/YAMLMap.d.ts +0 -53
- package/dist/nodes/YAMLMap.js +0 -147
- package/dist/nodes/YAMLSeq.d.ts +0 -60
- package/dist/nodes/YAMLSeq.js +0 -115
- package/dist/nodes/addPairToJSMap.d.ts +0 -4
- package/dist/nodes/addPairToJSMap.js +0 -65
- package/dist/nodes/identity.d.ts +0 -23
- package/dist/nodes/identity.js +0 -53
- package/dist/nodes/toJS.d.ts +0 -29
- package/dist/nodes/toJS.js +0 -39
- package/dist/options.d.ts +0 -344
- package/dist/parse/cst-scalar.d.ts +0 -64
- package/dist/parse/cst-scalar.js +0 -218
- package/dist/parse/cst-stringify.d.ts +0 -8
- package/dist/parse/cst-stringify.js +0 -63
- package/dist/parse/cst-visit.d.ts +0 -39
- package/dist/parse/cst-visit.js +0 -99
- package/dist/parse/cst.d.ts +0 -109
- package/dist/parse/cst.js +0 -112
- package/dist/parse/lexer.d.ts +0 -87
- package/dist/parse/lexer.js +0 -719
- package/dist/parse/line-counter.d.ts +0 -22
- package/dist/parse/line-counter.js +0 -41
- package/dist/parse/parser.d.ts +0 -84
- package/dist/parse/parser.js +0 -972
- package/dist/public-api.d.ts +0 -44
- package/dist/public-api.js +0 -107
- package/dist/schema/Schema.d.ts +0 -17
- package/dist/schema/Schema.js +0 -39
- package/dist/schema/common/map.d.ts +0 -2
- package/dist/schema/common/map.js +0 -19
- package/dist/schema/common/null.d.ts +0 -4
- package/dist/schema/common/null.js +0 -17
- package/dist/schema/common/seq.d.ts +0 -2
- package/dist/schema/common/seq.js +0 -19
- package/dist/schema/common/string.d.ts +0 -2
- package/dist/schema/common/string.js +0 -16
- package/dist/schema/core/bool.d.ts +0 -4
- package/dist/schema/core/bool.js +0 -21
- package/dist/schema/core/float.d.ts +0 -4
- package/dist/schema/core/float.js +0 -47
- package/dist/schema/core/int.d.ts +0 -4
- package/dist/schema/core/int.js +0 -42
- package/dist/schema/core/schema.d.ts +0 -1
- package/dist/schema/core/schema.js +0 -25
- package/dist/schema/json/schema.d.ts +0 -2
- package/dist/schema/json/schema.js +0 -64
- package/dist/schema/json-schema.d.ts +0 -69
- package/dist/schema/tags.d.ts +0 -48
- package/dist/schema/tags.js +0 -99
- package/dist/schema/types.d.ts +0 -92
- package/dist/schema/yaml-1.1/binary.d.ts +0 -2
- package/dist/schema/yaml-1.1/binary.js +0 -70
- package/dist/schema/yaml-1.1/bool.d.ts +0 -7
- package/dist/schema/yaml-1.1/bool.js +0 -29
- package/dist/schema/yaml-1.1/float.d.ts +0 -4
- package/dist/schema/yaml-1.1/float.js +0 -50
- package/dist/schema/yaml-1.1/int.d.ts +0 -5
- package/dist/schema/yaml-1.1/int.js +0 -76
- package/dist/schema/yaml-1.1/merge.d.ts +0 -9
- package/dist/schema/yaml-1.1/merge.js +0 -68
- package/dist/schema/yaml-1.1/omap.d.ts +0 -22
- package/dist/schema/yaml-1.1/omap.js +0 -77
- package/dist/schema/yaml-1.1/pairs.d.ts +0 -10
- package/dist/schema/yaml-1.1/pairs.js +0 -82
- package/dist/schema/yaml-1.1/schema.d.ts +0 -1
- package/dist/schema/yaml-1.1/schema.js +0 -41
- package/dist/schema/yaml-1.1/set.d.ts +0 -28
- package/dist/schema/yaml-1.1/set.js +0 -96
- package/dist/schema/yaml-1.1/timestamp.d.ts +0 -6
- package/dist/schema/yaml-1.1/timestamp.js +0 -105
- package/dist/stringify/foldFlowLines.d.ts +0 -34
- package/dist/stringify/foldFlowLines.js +0 -151
- package/dist/stringify/stringify.d.ts +0 -21
- package/dist/stringify/stringify.js +0 -131
- package/dist/stringify/stringifyCollection.d.ts +0 -17
- package/dist/stringify/stringifyCollection.js +0 -145
- package/dist/stringify/stringifyComment.d.ts +0 -10
- package/dist/stringify/stringifyComment.js +0 -24
- package/dist/stringify/stringifyDocument.d.ts +0 -4
- package/dist/stringify/stringifyDocument.js +0 -87
- package/dist/stringify/stringifyNumber.d.ts +0 -2
- package/dist/stringify/stringifyNumber.js +0 -26
- package/dist/stringify/stringifyPair.d.ts +0 -3
- package/dist/stringify/stringifyPair.js +0 -152
- package/dist/stringify/stringifyString.d.ts +0 -9
- package/dist/stringify/stringifyString.js +0 -338
- package/dist/visit.d.ts +0 -102
- package/dist/visit.js +0 -236
- 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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
- [`#
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
108
|
+
Document,
|
|
109
|
+
parseAllDocuments,
|
|
110
|
+
parseDocument
|
|
81
111
|
} from 'yaml'
|
|
82
112
|
```
|
|
83
113
|
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
101
|
-
|
|
125
|
+
<!-- prettier-ignore -->
|
|
102
126
|
```js
|
|
103
|
-
import {
|
|
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
|
|
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
|
---
|
package/{bin.mjs → bin.js}
RENAMED
|
@@ -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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
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 };
|