jsonvet 2.0.0__py3-none-win_amd64.whl
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.
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: jsonvet
|
|
3
|
+
Version: 2.0.0
|
|
4
|
+
Classifier: Environment :: Console
|
|
5
|
+
Classifier: Operating System :: OS Independent
|
|
6
|
+
Classifier: Programming Language :: Rust
|
|
7
|
+
Classifier: Topic :: Software Development :: Quality Assurance
|
|
8
|
+
Summary: Checks JSON, JSONC, JSON5, HuJSON and JSON Lines files for syntax errors and duplicate keys.
|
|
9
|
+
Keywords: json,json5,jsonc,lint,pre-commit
|
|
10
|
+
Home-Page: https://github.com/simonvanlierde/jsonvet
|
|
11
|
+
License-Expression: MIT
|
|
12
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
13
|
+
Project-URL: Changelog, https://github.com/simonvanlierde/jsonvet/blob/main/CHANGELOG.md
|
|
14
|
+
Project-URL: Source, https://github.com/simonvanlierde/jsonvet
|
|
15
|
+
|
|
16
|
+
# jsonvet
|
|
17
|
+
|
|
18
|
+
[](https://github.com/simonvanlierde/jsonvet/actions/workflows/ci.yml)
|
|
19
|
+
[](https://codecov.io/gh/simonvanlierde/jsonvet)
|
|
20
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
21
|
+
[](LICENSE)
|
|
22
|
+
[](https://github.com/simonvanlierde/jsonvet/releases/latest)
|
|
23
|
+
|
|
24
|
+
jsonvet checks JSON, I-JSON, JSONC, HuJSON (JWCC), JSON5 and JSON Lines files for syntax errors,
|
|
25
|
+
duplicate keys and the rules of each dialect. Every problem comes with its file, line, column and
|
|
26
|
+
rule, and a duplicate key with the JSONPath and position of both copies:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
config.json:4:5: error[duplicate-key] duplicate key $.server.port (first at 2:5)
|
|
30
|
+
package.json:3:1: error[syntax] comments are not allowed in json
|
|
31
|
+
events.jsonl:12:1: error[syntax] blank line; JSON Lines needs a value on every line
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
It is a pre-commit and prek hook, a command, and a Rust library. Until 2.0 it was check-json5, a
|
|
35
|
+
Python hook; 2.0 is a rewrite in Rust that keeps its verdicts (see
|
|
36
|
+
[Coming from check-json5](#coming-from-check-json5)).
|
|
37
|
+
|
|
38
|
+
## Use it as a hook
|
|
39
|
+
|
|
40
|
+
In `.pre-commit-config.yaml` (pre-commit or [prek](https://github.com/j178/prek)):
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
- repo: https://github.com/simonvanlierde/jsonvet
|
|
44
|
+
rev: v2.0.0
|
|
45
|
+
hooks:
|
|
46
|
+
- id: jsonvet
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The hook installs a prebuilt binary from PyPI, so it needs no Rust. It checks files by name:
|
|
50
|
+
`.json`, `.jsonc`, `.json5`, `.jsonl`, `.ndjson`, `.geojson`, `.jsonld`, `.hujson`, `.jwcc`,
|
|
51
|
+
`.code-workspace`, `.code-snippets`, `.webmanifest` and `.babelrc`. In GitHub Actions each problem
|
|
52
|
+
also becomes an annotation on the pull request.
|
|
53
|
+
|
|
54
|
+
## Dialects
|
|
55
|
+
|
|
56
|
+
Each file is checked in the dialect its extension implies, and `--dialect` or the config file can
|
|
57
|
+
choose another. Each step in JSON, JSONC, JWCC, JSON5 only adds syntax to the one before.
|
|
58
|
+
|
|
59
|
+
| Dialect | Adds to JSON | Default for |
|
|
60
|
+
| -------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
61
|
+
| `json` | nothing ([RFC 8259](https://www.rfc-editor.org/rfc/rfc8259)) | none; choose it with `--dialect` or `--strict` |
|
|
62
|
+
| `i-json` | stricter content ([RFC 7493](https://www.rfc-editor.org/rfc/rfc7493)): lone surrogates, noncharacters and numbers a double cannot hold are errors | none |
|
|
63
|
+
| `jsonc` | `//` and `/* */` comments | `.jsonc`, `.code-workspace`, `.code-snippets` |
|
|
64
|
+
| `jwcc` | comments and trailing commas ([HuJSON](https://github.com/tailscale/hujson)) | `.hujson`, `.jwcc` |
|
|
65
|
+
| `json5` | the [JSON5 1.0.0](https://spec.json5.org/) grammar | `.json`, `.json5`, `.geojson`, `.jsonld`, `.webmanifest`, `.babelrc` |
|
|
66
|
+
| `jsonl` | one JSON value per line ([JSON Lines](https://jsonlines.org/)) | `.jsonl`, `.ndjson` |
|
|
67
|
+
|
|
68
|
+
`.json` files default to JSON5, because most `.json` files that fail as JSON are config files
|
|
69
|
+
with comments. Hold the ones a strict parser reads, such as `package.json`, to JSON with
|
|
70
|
+
`--dialect json:package.json`.
|
|
71
|
+
|
|
72
|
+
## Rules
|
|
73
|
+
|
|
74
|
+
| Rule | Reports | Default |
|
|
75
|
+
| ----------------------- | ------------------------------------------------------------- | ------------------------------------------------ |
|
|
76
|
+
| `syntax` | the first syntax error; checking stops there | error |
|
|
77
|
+
| `duplicate-key` | a key repeated in one object, with both positions and its path | error |
|
|
78
|
+
| `invalid-number` | a number a double cannot hold, or an integer past ±(2⁵³ − 1) | error in `i-json`, off elsewhere |
|
|
79
|
+
| `invalid-code-point` | a lone surrogate or a noncharacter in a string | error in `i-json`, off elsewhere |
|
|
80
|
+
| `byte-order-mark` | a byte order mark at the start of the file | warning in `json` and `i-json`, error in `jsonl` |
|
|
81
|
+
| `missing-final-newline` | a JSON Lines file that does not end with a newline | warning in `jsonl` |
|
|
82
|
+
|
|
83
|
+
Warnings don't fail a run unless there are more than `--max-warnings N`.
|
|
84
|
+
|
|
85
|
+
## Options and configuration
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
--dialect DIALECT[:GLOB] check files matching GLOB (every file, without one) as DIALECT,
|
|
89
|
+
or as `auto`, the extension's default; the last match wins
|
|
90
|
+
--strict GLOB the same as --dialect json:GLOB, kept from check-json5
|
|
91
|
+
--error RULE, --warn RULE, --ignore RULE
|
|
92
|
+
--max-warnings N
|
|
93
|
+
--config FILE, --no-config
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
A glob without `/` matches the file name at any depth, and one with `/` matches the whole path.
|
|
97
|
+
`*` also matches `/`. Paths are matched as given on the command line, so relative to the working
|
|
98
|
+
directory, even for globs from a config file; pre-commit runs from the repository root.
|
|
99
|
+
|
|
100
|
+
Settings can also live in `jsonvet.toml`, or in a `[tool.jsonvet]` table in `pyproject.toml`.
|
|
101
|
+
jsonvet looks in the working directory and its parents up to the repository root, and the command
|
|
102
|
+
line wins:
|
|
103
|
+
|
|
104
|
+
```toml
|
|
105
|
+
rules = { byte-order-mark = "ignore", missing-final-newline = "error" }
|
|
106
|
+
|
|
107
|
+
# Checked in order; the last matching entry wins.
|
|
108
|
+
dialects = [
|
|
109
|
+
{ files = ".vscode/*.json", dialect = "jsonc" },
|
|
110
|
+
{ files = "package.json", dialect = "json" },
|
|
111
|
+
]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Exit status: 0 when no file has an error, 1 when one does, 2 for a usage error.
|
|
115
|
+
|
|
116
|
+
## Other ways to run it
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
uvx jsonvet config/*.json # from PyPI, without installing
|
|
120
|
+
pip install jsonvet # the same binary, as a Python package
|
|
121
|
+
cargo install jsonvet-cli # from source
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The library is the `jsonvet` crate:
|
|
125
|
+
|
|
126
|
+
```rust
|
|
127
|
+
use jsonvet::{check, Config, Dialect};
|
|
128
|
+
|
|
129
|
+
let report = check("{\"a\": 1, \"a\": 2}", &Config::new(Dialect::Json));
|
|
130
|
+
for problem in report.problems() {
|
|
131
|
+
let at = report.location(problem.offset());
|
|
132
|
+
println!("{}:{}: {}[{}] {problem}", at.line, at.column, problem.severity(), problem.rule());
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Coming from check-json5
|
|
137
|
+
|
|
138
|
+
Bump `rev` to `v2.0.0`. The `check-json5` hook id, the `check-json5` command and `--strict` keep
|
|
139
|
+
working until 3.0, and the `check-json5` package on PyPI now installs jsonvet.
|
|
140
|
+
|
|
141
|
+
2.0 gives the same pass or fail as 1.4.1 for every file, the same exit codes and the same
|
|
142
|
+
duplicate-key paths. Comparing both on 20,114 generated files in JSON5 and in strict mode, 40,228
|
|
143
|
+
runs in all, they agree on every one. What changes, and why, is listed in the
|
|
144
|
+
[CHANGELOG](CHANGELOG.md) and in [docs/design.md](docs/design.md):
|
|
145
|
+
|
|
146
|
+
- each line gains the severity and rule, as in `error[duplicate-key]`, and syntax errors use
|
|
147
|
+
jsonvet's own wording;
|
|
148
|
+
- the hook also checks `.jsonl` and `.ndjson` files;
|
|
149
|
+
- lines end at every JSON5 line terminator (LF, CR, CRLF, U+2028, U+2029), so positions after a
|
|
150
|
+
lone CR or U+2028 differ;
|
|
151
|
+
- the importable Python module is gone; the wheel brings the `jsonvet` and `check-json5` commands.
|
|
152
|
+
|
|
153
|
+
## Speed
|
|
154
|
+
|
|
155
|
+
Median wall time of one run over the files, from `uv run scripts/bench.py` on 12 cores of a
|
|
156
|
+
Ryzen 7 H 255 under Linux. Both tools give the same verdict in every case:
|
|
157
|
+
|
|
158
|
+
| Case | check-json5 1.4.1 | jsonvet 2.0 | Speed-up |
|
|
159
|
+
| -------------------------- | ----------------: | ----------: | -------: |
|
|
160
|
+
| 1,100 config files | 40 ms | 12.5 ms | 3x |
|
|
161
|
+
| 2.7 MB JSON | 41 ms | 9.8 ms | 4x |
|
|
162
|
+
| 2.7 MB JSON, duplicate key | 330 ms | 11.6 ms | 29x |
|
|
163
|
+
| 120 KB JSONC | 22 ms | 1.5 ms | 15x |
|
|
164
|
+
| 1.8 MB JSON5 | 11,641 ms | 8.3 ms | 1,398x |
|
|
165
|
+
|
|
166
|
+
1.4 sent JSON, and JSONC with its comments stripped, to Python's C parser, so those were
|
|
167
|
+
already fast. Any other JSON5 syntax went to a pure-Python parser, and so did the second pass
|
|
168
|
+
that finds a duplicate key's position. jsonvet does everything in one pass of one parser.
|
|
169
|
+
|
|
170
|
+
## How it is tested
|
|
171
|
+
|
|
172
|
+
- the [json5-tests](https://github.com/json5/json5-tests) suite, all 114 cases;
|
|
173
|
+
- a reviewed snapshot of edge cases in every dialect;
|
|
174
|
+
- property tests: no input makes it panic, every position lies on a character boundary and
|
|
175
|
+
matches a naive recount;
|
|
176
|
+
- fuzzing with cargo-fuzz, against serde_json and the json5 crate as references;
|
|
177
|
+
- the file-by-file comparison with check-json5 1.4.1 above, in CI;
|
|
178
|
+
- CI on Linux, macOS and Windows, plus the oldest supported Rust (1.88).
|
|
179
|
+
|
|
180
|
+
## Development
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
cargo test --workspace # tests, including json5-tests (git submodule)
|
|
184
|
+
cargo clippy --workspace --all-targets -- -D warnings
|
|
185
|
+
cargo fmt --all
|
|
186
|
+
uv run scripts/differential.py # compare with check-json5 1.4.1
|
|
187
|
+
uv run scripts/bench.py # time against check-json5 1.4.1
|
|
188
|
+
cargo +nightly fuzz run check # fuzzing, from fuzz/
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Clone with `--recurse-submodules`, or run `git submodule update --init` for the test suite.
|
|
192
|
+
|
|
193
|
+
## Credits
|
|
194
|
+
|
|
195
|
+
I (Simon van Lierde) started this as a fork of [check-json5](https://gitlab.com/bmares/check-json5)
|
|
196
|
+
by Ben Mares, which is based on the [pre-commit-hooks](https://github.com/pre-commit/pre-commit-hooks)
|
|
197
|
+
repository by Anthony Sottile and contributors. 2.0 is a rewrite in Rust.
|
|
198
|
+
|
|
199
|
+
## License
|
|
200
|
+
|
|
201
|
+
[MIT](LICENSE), like the projects it started from
|
|
202
|
+
([Ben Mares](https://gitlab.com/bmares/check-json5/-/blob/main/LICENSE),
|
|
203
|
+
[pre-commit-hooks](https://github.com/pre-commit/pre-commit-hooks/blob/main/LICENSE)).
|
|
204
|
+
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
jsonvet-2.0.0.data/scripts/check-json5.exe,sha256=IafZXqfG1UpoQekkGJxUG1-zPKNMbBE83hxQS9hMr8w,473088
|
|
2
|
+
jsonvet-2.0.0.data/scripts/jsonvet.exe,sha256=zKz_I4O-fTgNng8knYhPIFWNngL1oRf7U7qzU2FOikQ,473088
|
|
3
|
+
jsonvet-2.0.0.dist-info/METADATA,sha256=6vqsgtvD-d6LEjdXVq1rDI8HF6tcerMIAW5Z6Mk0078,10971
|
|
4
|
+
jsonvet-2.0.0.dist-info/WHEEL,sha256=8Aej0W0a6Cz6apA3IzJrTnxLRVLAt-w0Oh8SA3Con_c,94
|
|
5
|
+
jsonvet-2.0.0.dist-info/sboms/jsonvet-cli.cyclonedx.json,sha256=6oFNRPqyK4ElWo5m0em-XA9iOKV_5EM12zb9gq415Po,13300
|
|
6
|
+
jsonvet-2.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
{
|
|
2
|
+
"bomFormat": "CycloneDX",
|
|
3
|
+
"specVersion": "1.5",
|
|
4
|
+
"version": 1,
|
|
5
|
+
"serialNumber": "urn:uuid:ddf43bbc-0a20-4deb-ad78-6f3dd3317e44",
|
|
6
|
+
"metadata": {
|
|
7
|
+
"timestamp": "2026-10-13T22:35:22.879704900Z",
|
|
8
|
+
"tools": [
|
|
9
|
+
{
|
|
10
|
+
"vendor": "CycloneDX",
|
|
11
|
+
"name": "cargo-cyclonedx",
|
|
12
|
+
"version": "0.5.9"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"authors": [
|
|
16
|
+
{
|
|
17
|
+
"name": "Simon van Lierde"
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"component": {
|
|
21
|
+
"type": "application",
|
|
22
|
+
"bom-ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet-cli#2.0.0",
|
|
23
|
+
"author": "Simon van Lierde",
|
|
24
|
+
"name": "jsonvet-cli",
|
|
25
|
+
"version": "2.0.0",
|
|
26
|
+
"description": "The jsonvet command: checks JSON, JSONC, JSON5, HuJSON and JSON Lines files.",
|
|
27
|
+
"scope": "required",
|
|
28
|
+
"licenses": [
|
|
29
|
+
{
|
|
30
|
+
"expression": "MIT"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"purl": "pkg:cargo/jsonvet-cli@2.0.0?download_url=file://.",
|
|
34
|
+
"externalReferences": [
|
|
35
|
+
{
|
|
36
|
+
"type": "website",
|
|
37
|
+
"url": "https://github.com/simonvanlierde/jsonvet"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "vcs",
|
|
41
|
+
"url": "https://github.com/simonvanlierde/jsonvet"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"components": [
|
|
45
|
+
{
|
|
46
|
+
"type": "library",
|
|
47
|
+
"bom-ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet-cli#2.0.0 bin-target-0",
|
|
48
|
+
"name": "jsonvet_cli",
|
|
49
|
+
"version": "2.0.0",
|
|
50
|
+
"purl": "pkg:cargo/jsonvet-cli@2.0.0?download_url=file://.#src/lib.rs"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "application",
|
|
54
|
+
"bom-ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet-cli#2.0.0 bin-target-1",
|
|
55
|
+
"name": "check-json5",
|
|
56
|
+
"version": "2.0.0",
|
|
57
|
+
"purl": "pkg:cargo/jsonvet-cli@2.0.0?download_url=file://.#src/bin/check-json5.rs"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"type": "application",
|
|
61
|
+
"bom-ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet-cli#2.0.0 bin-target-2",
|
|
62
|
+
"name": "jsonvet",
|
|
63
|
+
"version": "2.0.0",
|
|
64
|
+
"purl": "pkg:cargo/jsonvet-cli@2.0.0?download_url=file://.#src/main.rs"
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"properties": [
|
|
69
|
+
{
|
|
70
|
+
"name": "cdx:rustc:sbom:target:all_targets",
|
|
71
|
+
"value": "true"
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
"components": [
|
|
76
|
+
{
|
|
77
|
+
"type": "library",
|
|
78
|
+
"bom-ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet#2.0.0",
|
|
79
|
+
"author": "Simon van Lierde",
|
|
80
|
+
"name": "jsonvet",
|
|
81
|
+
"version": "2.0.0",
|
|
82
|
+
"description": "Checks JSON, JSONC, JSON5, HuJSON and JSON Lines for syntax errors and duplicate keys, with exact positions.",
|
|
83
|
+
"scope": "required",
|
|
84
|
+
"licenses": [
|
|
85
|
+
{
|
|
86
|
+
"expression": "MIT"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
"purl": "pkg:cargo/jsonvet@2.0.0?download_url=file://..\\jsonvet",
|
|
90
|
+
"externalReferences": [
|
|
91
|
+
{
|
|
92
|
+
"type": "website",
|
|
93
|
+
"url": "https://github.com/simonvanlierde/jsonvet"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "vcs",
|
|
97
|
+
"url": "https://github.com/simonvanlierde/jsonvet"
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"type": "library",
|
|
103
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#lexopt@0.3.2",
|
|
104
|
+
"author": "Jan Verbeek <jan.verbeek@posteo.nl>",
|
|
105
|
+
"name": "lexopt",
|
|
106
|
+
"version": "0.3.2",
|
|
107
|
+
"description": "Minimalist pedantic command line parser",
|
|
108
|
+
"scope": "required",
|
|
109
|
+
"hashes": [
|
|
110
|
+
{
|
|
111
|
+
"alg": "SHA-256",
|
|
112
|
+
"content": "803ec87c9cfb29b9d2633f20cba1f488db3fd53f2158b1024cbefb47ba05d413"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"licenses": [
|
|
116
|
+
{
|
|
117
|
+
"expression": "MIT"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"purl": "pkg:cargo/lexopt@0.3.2",
|
|
121
|
+
"externalReferences": [
|
|
122
|
+
{
|
|
123
|
+
"type": "documentation",
|
|
124
|
+
"url": "https://docs.rs/lexopt"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"type": "vcs",
|
|
128
|
+
"url": "https://github.com/blyxxyz/lexopt"
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"type": "library",
|
|
134
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#memchr@2.8.3",
|
|
135
|
+
"author": "Andrew Gallant <jamslam@gmail.com>, bluss",
|
|
136
|
+
"name": "memchr",
|
|
137
|
+
"version": "2.8.3",
|
|
138
|
+
"description": "Provides extremely fast (uses SIMD on x86_64, aarch64 and wasm32) routines for 1, 2 or 3 byte search and single substring search. ",
|
|
139
|
+
"scope": "required",
|
|
140
|
+
"hashes": [
|
|
141
|
+
{
|
|
142
|
+
"alg": "SHA-256",
|
|
143
|
+
"content": "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
|
|
144
|
+
}
|
|
145
|
+
],
|
|
146
|
+
"licenses": [
|
|
147
|
+
{
|
|
148
|
+
"expression": "Unlicense OR MIT"
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
"purl": "pkg:cargo/memchr@2.8.3",
|
|
152
|
+
"externalReferences": [
|
|
153
|
+
{
|
|
154
|
+
"type": "documentation",
|
|
155
|
+
"url": "https://docs.rs/memchr/"
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"type": "website",
|
|
159
|
+
"url": "https://github.com/BurntSushi/memchr"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"type": "vcs",
|
|
163
|
+
"url": "https://github.com/BurntSushi/memchr"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"type": "library",
|
|
169
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.229",
|
|
170
|
+
"author": "Erick Tryzelaar <erick.tryzelaar@gmail.com>, David Tolnay <dtolnay@gmail.com>",
|
|
171
|
+
"name": "serde_core",
|
|
172
|
+
"version": "1.0.229",
|
|
173
|
+
"description": "Serde traits only, with no support for derive -- use the `serde` crate instead",
|
|
174
|
+
"scope": "required",
|
|
175
|
+
"hashes": [
|
|
176
|
+
{
|
|
177
|
+
"alg": "SHA-256",
|
|
178
|
+
"content": "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
|
|
179
|
+
}
|
|
180
|
+
],
|
|
181
|
+
"licenses": [
|
|
182
|
+
{
|
|
183
|
+
"expression": "MIT OR Apache-2.0"
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"purl": "pkg:cargo/serde_core@1.0.229",
|
|
187
|
+
"externalReferences": [
|
|
188
|
+
{
|
|
189
|
+
"type": "documentation",
|
|
190
|
+
"url": "https://docs.rs/serde_core"
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"type": "website",
|
|
194
|
+
"url": "https://serde.rs"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"type": "vcs",
|
|
198
|
+
"url": "https://github.com/serde-rs/serde"
|
|
199
|
+
}
|
|
200
|
+
]
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"type": "library",
|
|
204
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#serde_spanned@1.1.2",
|
|
205
|
+
"name": "serde_spanned",
|
|
206
|
+
"version": "1.1.2",
|
|
207
|
+
"description": "Serde-compatible spanned Value",
|
|
208
|
+
"scope": "required",
|
|
209
|
+
"hashes": [
|
|
210
|
+
{
|
|
211
|
+
"alg": "SHA-256",
|
|
212
|
+
"content": "4e7523beb55eece201a2356bee0bbca0d1ab466c14c07703b2e0ee6d42cb0c2c"
|
|
213
|
+
}
|
|
214
|
+
],
|
|
215
|
+
"licenses": [
|
|
216
|
+
{
|
|
217
|
+
"expression": "MIT OR Apache-2.0"
|
|
218
|
+
}
|
|
219
|
+
],
|
|
220
|
+
"purl": "pkg:cargo/serde_spanned@1.1.2",
|
|
221
|
+
"externalReferences": [
|
|
222
|
+
{
|
|
223
|
+
"type": "vcs",
|
|
224
|
+
"url": "https://github.com/toml-rs/toml"
|
|
225
|
+
}
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"type": "library",
|
|
230
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#toml@1.1.8+spec-1.1.0",
|
|
231
|
+
"name": "toml",
|
|
232
|
+
"version": "1.1.8+spec-1.1.0",
|
|
233
|
+
"description": "A native Rust encoder and decoder of TOML-formatted files and streams. Provides implementations of the standard Serialize/Deserialize traits for TOML data to facilitate deserializing and serializing Rust structures. ",
|
|
234
|
+
"scope": "required",
|
|
235
|
+
"hashes": [
|
|
236
|
+
{
|
|
237
|
+
"alg": "SHA-256",
|
|
238
|
+
"content": "20489e00e4d8741d6be680764cc12e270655e375a20d1011e844a9c3379e678d"
|
|
239
|
+
}
|
|
240
|
+
],
|
|
241
|
+
"licenses": [
|
|
242
|
+
{
|
|
243
|
+
"expression": "MIT OR Apache-2.0"
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"purl": "pkg:cargo/toml@1.1.8+spec-1.1.0",
|
|
247
|
+
"externalReferences": [
|
|
248
|
+
{
|
|
249
|
+
"type": "vcs",
|
|
250
|
+
"url": "https://github.com/toml-rs/toml"
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"type": "library",
|
|
256
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#toml_datetime@1.1.2+spec-1.1.0",
|
|
257
|
+
"name": "toml_datetime",
|
|
258
|
+
"version": "1.1.2+spec-1.1.0",
|
|
259
|
+
"description": "A TOML-compatible datetime type",
|
|
260
|
+
"scope": "required",
|
|
261
|
+
"hashes": [
|
|
262
|
+
{
|
|
263
|
+
"alg": "SHA-256",
|
|
264
|
+
"content": "2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053"
|
|
265
|
+
}
|
|
266
|
+
],
|
|
267
|
+
"licenses": [
|
|
268
|
+
{
|
|
269
|
+
"expression": "MIT OR Apache-2.0"
|
|
270
|
+
}
|
|
271
|
+
],
|
|
272
|
+
"purl": "pkg:cargo/toml_datetime@1.1.2+spec-1.1.0",
|
|
273
|
+
"externalReferences": [
|
|
274
|
+
{
|
|
275
|
+
"type": "vcs",
|
|
276
|
+
"url": "https://github.com/toml-rs/toml"
|
|
277
|
+
}
|
|
278
|
+
]
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"type": "library",
|
|
282
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#toml_parser@1.1.5+spec-1.1.0",
|
|
283
|
+
"name": "toml_parser",
|
|
284
|
+
"version": "1.1.5+spec-1.1.0",
|
|
285
|
+
"description": "Yet another format-preserving TOML parser.",
|
|
286
|
+
"scope": "required",
|
|
287
|
+
"hashes": [
|
|
288
|
+
{
|
|
289
|
+
"alg": "SHA-256",
|
|
290
|
+
"content": "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c"
|
|
291
|
+
}
|
|
292
|
+
],
|
|
293
|
+
"licenses": [
|
|
294
|
+
{
|
|
295
|
+
"expression": "MIT OR Apache-2.0"
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"purl": "pkg:cargo/toml_parser@1.1.5+spec-1.1.0",
|
|
299
|
+
"externalReferences": [
|
|
300
|
+
{
|
|
301
|
+
"type": "vcs",
|
|
302
|
+
"url": "https://github.com/toml-rs/toml"
|
|
303
|
+
}
|
|
304
|
+
]
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"type": "library",
|
|
308
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-general-category@1.1.0",
|
|
309
|
+
"author": "YesLogic Pty. Ltd. <info@yeslogic.com>",
|
|
310
|
+
"name": "unicode-general-category",
|
|
311
|
+
"version": "1.1.0",
|
|
312
|
+
"description": "Fast lookup of the Unicode General Category property for char",
|
|
313
|
+
"scope": "required",
|
|
314
|
+
"hashes": [
|
|
315
|
+
{
|
|
316
|
+
"alg": "SHA-256",
|
|
317
|
+
"content": "0b993bddc193ae5bd0d623b49ec06ac3e9312875fdae725a975c51db1cc1677f"
|
|
318
|
+
}
|
|
319
|
+
],
|
|
320
|
+
"licenses": [
|
|
321
|
+
{
|
|
322
|
+
"expression": "Apache-2.0"
|
|
323
|
+
}
|
|
324
|
+
],
|
|
325
|
+
"purl": "pkg:cargo/unicode-general-category@1.1.0",
|
|
326
|
+
"externalReferences": [
|
|
327
|
+
{
|
|
328
|
+
"type": "documentation",
|
|
329
|
+
"url": "https://docs.rs/unicode-general-category"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"type": "website",
|
|
333
|
+
"url": "https://github.com/yeslogic/unicode-general-category"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"type": "vcs",
|
|
337
|
+
"url": "https://github.com/yeslogic/unicode-general-category"
|
|
338
|
+
}
|
|
339
|
+
]
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
"type": "library",
|
|
343
|
+
"bom-ref": "registry+https://github.com/rust-lang/crates.io-index#winnow@1.0.4",
|
|
344
|
+
"name": "winnow",
|
|
345
|
+
"version": "1.0.4",
|
|
346
|
+
"description": "A byte-oriented, zero-copy, parser combinators library",
|
|
347
|
+
"scope": "required",
|
|
348
|
+
"hashes": [
|
|
349
|
+
{
|
|
350
|
+
"alg": "SHA-256",
|
|
351
|
+
"content": "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
|
|
352
|
+
}
|
|
353
|
+
],
|
|
354
|
+
"licenses": [
|
|
355
|
+
{
|
|
356
|
+
"expression": "MIT"
|
|
357
|
+
}
|
|
358
|
+
],
|
|
359
|
+
"purl": "pkg:cargo/winnow@1.0.4",
|
|
360
|
+
"externalReferences": [
|
|
361
|
+
{
|
|
362
|
+
"type": "vcs",
|
|
363
|
+
"url": "https://github.com/winnow-rs/winnow"
|
|
364
|
+
}
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
],
|
|
368
|
+
"dependencies": [
|
|
369
|
+
{
|
|
370
|
+
"ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet#2.0.0",
|
|
371
|
+
"dependsOn": [
|
|
372
|
+
"registry+https://github.com/rust-lang/crates.io-index#memchr@2.8.3",
|
|
373
|
+
"registry+https://github.com/rust-lang/crates.io-index#unicode-general-category@1.1.0"
|
|
374
|
+
]
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"ref": "path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet-cli#2.0.0",
|
|
378
|
+
"dependsOn": [
|
|
379
|
+
"path+file:///D:/a/jsonvet/jsonvet/crates/jsonvet#2.0.0",
|
|
380
|
+
"registry+https://github.com/rust-lang/crates.io-index#lexopt@0.3.2",
|
|
381
|
+
"registry+https://github.com/rust-lang/crates.io-index#toml@1.1.8+spec-1.1.0"
|
|
382
|
+
]
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#lexopt@0.3.2"
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#memchr@2.8.3"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.229"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#serde_spanned@1.1.2",
|
|
395
|
+
"dependsOn": [
|
|
396
|
+
"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.229"
|
|
397
|
+
]
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#toml@1.1.8+spec-1.1.0",
|
|
401
|
+
"dependsOn": [
|
|
402
|
+
"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.229",
|
|
403
|
+
"registry+https://github.com/rust-lang/crates.io-index#serde_spanned@1.1.2",
|
|
404
|
+
"registry+https://github.com/rust-lang/crates.io-index#toml_datetime@1.1.2+spec-1.1.0",
|
|
405
|
+
"registry+https://github.com/rust-lang/crates.io-index#toml_parser@1.1.5+spec-1.1.0",
|
|
406
|
+
"registry+https://github.com/rust-lang/crates.io-index#winnow@1.0.4"
|
|
407
|
+
]
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#toml_datetime@1.1.2+spec-1.1.0",
|
|
411
|
+
"dependsOn": [
|
|
412
|
+
"registry+https://github.com/rust-lang/crates.io-index#serde_core@1.0.229"
|
|
413
|
+
]
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#toml_parser@1.1.5+spec-1.1.0",
|
|
417
|
+
"dependsOn": [
|
|
418
|
+
"registry+https://github.com/rust-lang/crates.io-index#winnow@1.0.4"
|
|
419
|
+
]
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-general-category@1.1.0"
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
"ref": "registry+https://github.com/rust-lang/crates.io-index#winnow@1.0.4",
|
|
426
|
+
"dependsOn": [
|
|
427
|
+
"registry+https://github.com/rust-lang/crates.io-index#memchr@2.8.3"
|
|
428
|
+
]
|
|
429
|
+
}
|
|
430
|
+
]
|
|
431
|
+
}
|