zerocheck 0.0.1 → 0.1.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 +147 -31
- package/THIRD_PARTY_NOTICES +179 -0
- package/dist/index.js +17329 -672
- package/package.json +22 -8
package/README.md
CHANGED
|
@@ -1,56 +1,172 @@
|
|
|
1
|
-
# Zerocheck
|
|
1
|
+
# Zerocheck
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Zerocheck turns your team’s manual release checklist into repeatable browser tests.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Paste a checklist, review one drafted check and browser verification result per actionable item, then save readable YAML in your repository. Run those same files locally, in GitHub Actions, or in a hosted browser. Results, recordings, attempts and healing history are available in the web app, with screenshots and a summary in your pull request.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Setup
|
|
8
8
|
|
|
9
|
-
Requires Node 20
|
|
9
|
+
Requires Node.js 20.19 or newer and a Zerocheck project/account. Create a project in the web app’s Settings, then authorize a device or create a project token.
|
|
10
10
|
|
|
11
11
|
```sh
|
|
12
|
-
|
|
13
|
-
npx zerocheck
|
|
12
|
+
npm install --save-dev zerocheck@0.1.0
|
|
13
|
+
npx zerocheck login
|
|
14
|
+
npx zerocheck init --project your-project-id --url http://localhost:3000
|
|
15
|
+
npx zerocheck install
|
|
14
16
|
```
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
`install` downloads Chromium for local execution. Linux CI can use `zerocheck install --with-deps`. Hosted execution does not require a browser on your machine, but still uses the CLI and your Zerocheck account.
|
|
19
|
+
|
|
20
|
+
For unattended use, set `ZEROCHECK_TOKEN` to the project token. It overrides the device token saved in `~/.zerocheck/config.json`. `ZEROCHECK_API` selects your Zerocheck server and defaults to `https://app.tryzerocheck.com`. Never commit tokens or resolved test credentials.
|
|
21
|
+
|
|
22
|
+
## Import your release checklist
|
|
17
23
|
|
|
18
24
|
```sh
|
|
19
|
-
|
|
20
|
-
zerocheck
|
|
25
|
+
npx zerocheck import release-checklist.md --env dev
|
|
26
|
+
cat release-checklist.md | npx zerocheck import - --env staging
|
|
27
|
+
npx zerocheck import --env dev
|
|
21
28
|
```
|
|
22
29
|
|
|
23
|
-
|
|
30
|
+
The last command accepts an interactive paste; finish with Ctrl+D on a new line. Import supports text and Markdown. Each item retains its source line and one of these states:
|
|
31
|
+
|
|
32
|
+
- **Verified passing:** the exact draft completed in a browser and its expected outcome passed.
|
|
33
|
+
- **Check failed:** the requested outcome failed. Review the check and captured result; this alone does not diagnose a product bug.
|
|
34
|
+
- **Needs input:** an essential outcome, account, route or fixture is missing, or the item still needs a browser-executable interpretation.
|
|
35
|
+
- **Could not run:** execution could not complete; inspect the recorded reason.
|
|
24
36
|
|
|
25
|
-
|
|
26
|
-
| --- | --- |
|
|
27
|
-
| `zerocheck login` | Device-code auth. Opens a browser for approval; token stored at `~/.zerocheck/config.json` (mode 0600). |
|
|
28
|
-
| `zerocheck logout` | Revoke the current device's token. |
|
|
29
|
-
| `zerocheck whoami` | Show auth state + linked project. |
|
|
30
|
-
| `zerocheck run [file] --url <url>` | Run tests. Auto-generates starter tests on an empty project unless `--no-bootstrap`. |
|
|
31
|
-
| `zerocheck generate --url <url>` | AI-generate tests against a URL. `--save` to write them to `./zerocheck/tests/`. |
|
|
32
|
-
| `zerocheck discover --url <url>` | Crawl the app and draft an initial suite. |
|
|
33
|
-
| `zerocheck validate [path]` | Lint `.zc` files server-side. |
|
|
34
|
-
| `zerocheck doctor` | Config, token, backend reachability, version compat. |
|
|
37
|
+
Headings, notes, duplicates and unsupported items remain visible. Import does not silently discard difficult items or weaken a failed expectation.
|
|
35
38
|
|
|
36
|
-
|
|
39
|
+
The command prints the exact YAML for review. Save it with the single adoption command displayed at the end, or use `--save` when you want the import to save its displayed drafts immediately:
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
```sh
|
|
42
|
+
npx zerocheck import --draft IMPORT_ID
|
|
43
|
+
npx zerocheck import release-checklist.md --env dev --save
|
|
44
|
+
```
|
|
39
45
|
|
|
40
|
-
|
|
46
|
+
The same `--draft` command adopts a reviewed import from the web app. Drafted checks are saved in a unique import folder beneath the configured test directory. Their YAML bytes and revision are preserved. Existing conflicting files are never overwritten. Partial imports may be saved, but unresolved/failed items remain in the import report and the command exits nonzero.
|
|
41
47
|
|
|
42
|
-
|
|
48
|
+
Answer missing inputs together in a JSON file keyed by the displayed item IDs:
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
```json
|
|
51
|
+
{"item-3":"Use the existing demo product with SKU DEMO-1; expect a total of $12.00."}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
npx zerocheck import --draft IMPORT_ID --answers answers.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Only the answered unresolved items are drafted/verified again. Already completed items are preserved. Edit a drafted test’s expected behavior as a reviewed YAML change; changed YAML needs a new verification.
|
|
59
|
+
|
|
60
|
+
## One repository format, named environments
|
|
61
|
+
|
|
62
|
+
`zerocheck.yaml` configures the project. It is separate from the readable check files:
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
project: your-project-id
|
|
66
|
+
default_environment: dev
|
|
67
|
+
test_directory: zerocheck/tests
|
|
68
|
+
environments:
|
|
69
|
+
dev:
|
|
70
|
+
url: http://localhost:3000
|
|
71
|
+
staging:
|
|
72
|
+
url: https://staging.example.com
|
|
73
|
+
secrets:
|
|
74
|
+
EMAIL: ${ZEROCHECK_EMAIL}
|
|
75
|
+
PASSWORD: ${ZEROCHECK_PASSWORD}
|
|
76
|
+
login_steps:
|
|
77
|
+
- Navigate to /login
|
|
78
|
+
- Enter "${EMAIL}" into the Email field
|
|
79
|
+
- Enter "${PASSWORD}" into the Password field
|
|
80
|
+
- Click the Sign in button
|
|
81
|
+
- Verify the dashboard is visible
|
|
82
|
+
production:
|
|
83
|
+
url: https://example.com
|
|
84
|
+
execution:
|
|
85
|
+
retries: 1
|
|
86
|
+
```
|
|
45
87
|
|
|
46
|
-
|
|
88
|
+
Only explicitly referenced secret variables are read for execution. Missing variables fail clearly. Listing, reading, saving and validating checks do not require execution secrets.
|
|
47
89
|
|
|
48
|
-
|
|
90
|
+
Each check is one `zerocheck/v1` YAML file:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
version: zerocheck/v1
|
|
94
|
+
name: Release notes are available
|
|
95
|
+
blocks_merge: true
|
|
96
|
+
steps:
|
|
97
|
+
- Navigate to /releases
|
|
98
|
+
- Verify the Release notes heading is visible
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Repository files are authoritative. The web app shows synced revisions and exact run snapshots; it does not maintain a second independently edited suite. A run always uses the selected files’ current contents. Empty, missing, duplicate or invalid selections fail before execution; `run` never invents starter checks.
|
|
102
|
+
|
|
103
|
+
## Run and inspect
|
|
49
104
|
|
|
50
105
|
```sh
|
|
51
|
-
|
|
106
|
+
npx zerocheck validate
|
|
107
|
+
npx zerocheck run --env dev
|
|
108
|
+
npx zerocheck run zerocheck/tests/release.yaml --env staging --runner hosted
|
|
109
|
+
npx zerocheck run --env production --runner local --fail-on-flaky
|
|
110
|
+
npx zerocheck run --env staging --json .zerocheck/latest-run.json --junit .zerocheck/junit.xml
|
|
111
|
+
npx zerocheck results RUN_ID
|
|
112
|
+
npx zerocheck doctor --env staging
|
|
52
113
|
```
|
|
53
114
|
|
|
54
|
-
|
|
115
|
+
`local` is the default runner and can reach localhost and private networks available to your machine/CI job. `hosted` uses Zerocheck’s existing hosted browser and can reach targets available to that worker; it cannot reach your laptop’s localhost, and Zerocheck does not create a network tunnel. Runner location, environment and trigger are independent. Hosted interruptions produce an explicit error and require a new user-triggered run.
|
|
116
|
+
|
|
117
|
+
Results retain every attempt. A failed attempt followed by a pass, or a transient grounding failure recovered in the same browser, is **flaky / passed on retry**, even when CI succeeds. Step recovery details remain visible. `--fail-on-flaky` makes blocking flaky checks fail CI. `blocks_merge: false` explicitly makes a check non-blocking; setup errors and incomplete execution still fail the command.
|
|
118
|
+
|
|
119
|
+
Exit codes: **0** completed within the selected merge policy; **1** blocking test failure (or strict flaky result); **2** setup, incomplete execution or infrastructure error. Import exits nonzero while any actionable item remains unverified.
|
|
120
|
+
|
|
121
|
+
Learned targets persist in `.zerocheck/cache`. Local CLI and MCP share this cache; hosted execution uses its own persistent cache. A healed target is separate from a retry, and the result records target changes and their validation. Forms and login do not block target repairs. The engine saves only independently validated targets after a complete unchanged check; model-only outcomes leave repairs pending. It never reruns a submission solely to validate healing. Recovery before dispatch stays in the current browser. A full restart after application activity needs a trusted isolated-state integration; `retries: 1` does not itself establish safe replay. Include `.zerocheck/` in `.gitignore`; `init` adds it.
|
|
122
|
+
|
|
123
|
+
## GitHub Actions and PR comments
|
|
124
|
+
|
|
125
|
+
```sh
|
|
126
|
+
npx zerocheck init --github-actions
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The generated `.github/workflows/zerocheck.yml` pins the CLI version, restores the local target cache, runs staging checks, and runs the reporter and artifact upload even if checks fail. Set the repository secret `ZEROCHECK_TOKEN`, configure staging in `zerocheck.yaml`, and add only the test-secret variables referenced there. For localhost testing, add your app startup and fixture setup before the run step.
|
|
130
|
+
|
|
131
|
+
The workflow uses `pull_request`, not `pull_request_target`. It grants `contents: read` and `pull-requests: write`; it does not execute fork code with elevated secrets. Fork or read-only-token jobs keep their job summary and explain why a PR comment could not be posted.
|
|
132
|
+
|
|
133
|
+
The comment contains pass/fail/flaky results, failing steps, selected screenshots, recordings, environment, commit and a link to full results. One Zerocheck bot comment is updated per PR. Results from older commits cannot replace the current comment. `report` explicitly creates unguessable share links for the selected PR screenshots/recordings, so GitHub can render them without a Zerocheck login; other artifacts retain normal access controls.
|
|
134
|
+
|
|
135
|
+
```sh
|
|
136
|
+
npx zerocheck report --file .zerocheck/latest-run.json
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
`GITHUB_TOKEN`, `GITHUB_EVENT_PATH` and `GITHUB_STEP_SUMMARY` come from Actions. Outside Actions, supply `--repo owner/repository --pr NUMBER` and `GITHUB_TOKEN`. Without PR context the same formatter produces a job summary.
|
|
140
|
+
|
|
141
|
+
The template also supports a manual choice of runner and environment. Uncomment its schedule to run the same checks against staging on weekdays, or edit that explicit environment for a production schedule. Schedules do not enable a separate monitoring product.
|
|
142
|
+
|
|
143
|
+
## MCP for coding agents
|
|
144
|
+
|
|
145
|
+
Use the installed CLI as a stdio MCP server, with an explicit project directory:
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"mcpServers": {
|
|
150
|
+
"zerocheck": {
|
|
151
|
+
"command": "npx",
|
|
152
|
+
"args": ["--yes", "zerocheck@0.1.0", "mcp", "--project-dir", "/absolute/path/to/project"]
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Authenticate with `zerocheck login` first or provide `ZEROCHECK_TOKEN` through the MCP host’s environment/secret settings. stdout contains only MCP protocol messages; diagnostics use stderr.
|
|
159
|
+
|
|
160
|
+
Tools: `list_checks`, `read_check`, `save_check`, `import_checklist`, `answer_import`, `adopt_import`, `verify_check`, `run_checks`, `get_results`, and `cancel`. Existing check replacements require their current `expectedRevision`. File operations stay within the configured project, including symbolic-link checks.
|
|
161
|
+
|
|
162
|
+
Browser operations return job handles. Poll `get_results` with `kind: "job"` and `waitMs` up to 30000; inspect the returned run/draft ID for durable retrieval. `kind: "run"` reads a saved run after process restart; `kind: "import"` reads an uploaded import. Cancel with the job ID. Each MCP process permits one active browser job. Closing it cancels that job; cancellation cannot undo actions already performed.
|
|
163
|
+
|
|
164
|
+
## Data sent to Zerocheck
|
|
165
|
+
|
|
166
|
+
Local execution sends selected check YAML, the page context needed for AI (including screenshots/accessibility content), and run results/artifacts to Zerocheck. The browser still runs on your machine. Hosted execution additionally sends the URL, login steps and explicitly configured test secrets needed to run the check. The CLI never uploads your entire process environment. Browser screenshots may contain visible application data, and `report` shares the selected PR assets as described above.
|
|
167
|
+
|
|
168
|
+
## Repository development
|
|
169
|
+
|
|
170
|
+
The CLI bundles the shared engine source into `dist/index.js`; it has no unpublished engine-package dependency. From this repository, run `npm run build`, `npm run check`, and `npm test` in `packages/cli`. Tests include a real MCP client communicating with the bundled CLI over stdio. The generated workflow and documentation use version `0.1.0`; update that pin together with the package version for a release.
|
|
55
171
|
|
|
56
|
-
|
|
172
|
+
Hosted runs and imports return a queued handle when browsers are occupied; CLI and MCP keep polling until they finish. The queue holds 20 waiting jobs for up to five minutes and never automatically resumes interrupted jobs after restart. Recent imports is available in the web app’s Checks page.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
Third-party code bundled into the Zerocheck CLI
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@modelcontextprotocol/sdk
|
|
5
|
+
=========================
|
|
6
|
+
MIT License
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2024 Anthropic, PBC
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
ajv
|
|
30
|
+
===
|
|
31
|
+
The MIT License (MIT)
|
|
32
|
+
|
|
33
|
+
Copyright (c) 2015-2021 Evgeny Poberezkin
|
|
34
|
+
|
|
35
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
36
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
37
|
+
in the Software without restriction, including without limitation the rights
|
|
38
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
39
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
40
|
+
furnished to do so, subject to the following conditions:
|
|
41
|
+
|
|
42
|
+
The above copyright notice and this permission notice shall be included in all
|
|
43
|
+
copies or substantial portions of the Software.
|
|
44
|
+
|
|
45
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
46
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
47
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
48
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
49
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
50
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
51
|
+
SOFTWARE.
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
ajv-formats
|
|
56
|
+
===========
|
|
57
|
+
MIT License
|
|
58
|
+
|
|
59
|
+
Copyright (c) 2020 Evgeny Poberezkin
|
|
60
|
+
|
|
61
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
62
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
63
|
+
in the Software without restriction, including without limitation the rights
|
|
64
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
65
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
66
|
+
furnished to do so, subject to the following conditions:
|
|
67
|
+
|
|
68
|
+
The above copyright notice and this permission notice shall be included in all
|
|
69
|
+
copies or substantial portions of the Software.
|
|
70
|
+
|
|
71
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
72
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
73
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
74
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
75
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
76
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
77
|
+
SOFTWARE.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
fast-deep-equal
|
|
81
|
+
===============
|
|
82
|
+
MIT License
|
|
83
|
+
|
|
84
|
+
Copyright (c) 2017 Evgeny Poberezkin
|
|
85
|
+
|
|
86
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
87
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
88
|
+
in the Software without restriction, including without limitation the rights
|
|
89
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
90
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
91
|
+
furnished to do so, subject to the following conditions:
|
|
92
|
+
|
|
93
|
+
The above copyright notice and this permission notice shall be included in all
|
|
94
|
+
copies or substantial portions of the Software.
|
|
95
|
+
|
|
96
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
97
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
98
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
99
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
100
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
101
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
102
|
+
SOFTWARE.
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
fast-uri
|
|
106
|
+
========
|
|
107
|
+
Copyright (c) 2011-2021, Gary Court until https://github.com/garycourt/uri-js/commit/a1acf730b4bba3f1097c9f52e7d9d3aba8cdcaae
|
|
108
|
+
Copyright (c) 2021-present The Fastify team <https://github.com/fastify/fastify#team>
|
|
109
|
+
All rights reserved.
|
|
110
|
+
|
|
111
|
+
Redistribution and use in source and binary forms, with or without
|
|
112
|
+
modification, are permitted provided that the following conditions are met:
|
|
113
|
+
* Redistributions of source code must retain the above copyright
|
|
114
|
+
notice, this list of conditions and the following disclaimer.
|
|
115
|
+
* Redistributions in binary form must reproduce the above copyright
|
|
116
|
+
notice, this list of conditions and the following disclaimer in the
|
|
117
|
+
documentation and/or other materials provided with the distribution.
|
|
118
|
+
* The names of any contributors may not be used to endorse or promote
|
|
119
|
+
products derived from this software without specific prior written
|
|
120
|
+
permission.
|
|
121
|
+
|
|
122
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
123
|
+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
124
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
125
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY
|
|
126
|
+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
127
|
+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
128
|
+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
129
|
+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
130
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
131
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
132
|
+
|
|
133
|
+
* * *
|
|
134
|
+
|
|
135
|
+
The complete list of contributors can be found at:
|
|
136
|
+
- https://github.com/garycourt/uri-js/graphs/contributors
|
|
137
|
+
|
|
138
|
+
json-schema-traverse
|
|
139
|
+
====================
|
|
140
|
+
MIT License
|
|
141
|
+
|
|
142
|
+
Copyright (c) 2017 Evgeny Poberezkin
|
|
143
|
+
|
|
144
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
145
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
146
|
+
in the Software without restriction, including without limitation the rights
|
|
147
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
148
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
149
|
+
furnished to do so, subject to the following conditions:
|
|
150
|
+
|
|
151
|
+
The above copyright notice and this permission notice shall be included in all
|
|
152
|
+
copies or substantial portions of the Software.
|
|
153
|
+
|
|
154
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
155
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
156
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
157
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
158
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
159
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
160
|
+
SOFTWARE.
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
zod-to-json-schema
|
|
164
|
+
==================
|
|
165
|
+
ISC License
|
|
166
|
+
|
|
167
|
+
Copyright (c) 2020, Stefan Terdell
|
|
168
|
+
|
|
169
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
170
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
171
|
+
copyright notice and this permission notice appear in all copies.
|
|
172
|
+
|
|
173
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
174
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
175
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
176
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
177
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
178
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
179
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|