This commit is contained in:
Michael Zhang 2023-03-27 21:34:46 -05:00
parent 4625f018ca
commit 0dc50b636a
21 changed files with 2224 additions and 54 deletions

1
.gitignore vendored
View file

@ -3,3 +3,4 @@ node_modules
.direnv .direnv
.env .env
/generated /generated
/result*

View file

@ -1,8 +1,18 @@
.PHONY: all clean doc-watch doc-dependencies
.PHONY: all clean
all: all:
doc-watch:
mdbook serve docs --port 8100 --hostname 0.0.0.0
doc-dependencies: docs/src/generated/spec/index.md
generated/spec/meta.schema.json: spec/meta.schema.yml
yq . $< > $@
docs/src/generated/spec/index.md: generated/spec/meta.schema.json
mkdir -p generated/spec
node spec/generate.js
clean: clean:
rm -rf generated rm -rf generated

View file

@ -1,82 +1,109 @@
- CLI API - CLI API
- `mznotes install` : Install a script into the database - `mznotes install` : Install a script into the database
- `mznotes show` : Show the information about a particular node, by ID - `mznotes show` : Show the information about a particular node, by ID
- Database of nodes + code - Database of nodes + code
- Code - Code
- Code is all interface-based. Interface implementations give specific ways - Code is all interface-based. Interface implementations give specific ways
behaviors are implemented behaviors are implemented
- Standard interfaces: - Standard interfaces:
- Indexed - Indexed
- Node definition - Node definition
``` ```typescript
struct Node { type Node = {
metadata: KVStore, metadata: KVStore,
implements: Set<InterfaceURI>, interfaces: Set<InterfaceURI>,
edges: Set<(EdgeType, Edge)>, edges: Set<(EdgeType, Edge)>,
} }
``` ```
- Within the metadata kv store, keys are namespaced, according to the - Within the metadata kv store, keys are namespaced, according to the
application name. Application names must be registered ahead of time application name. Application names must be registered ahead of time
- Nodes implement interfaces, the code of which is fetched from the internet - Nodes implement interfaces, the code of which is fetched from the internet
and validated and validated
- Nodes are namespaced, although namespacing isn't the primary hierarchy - Nodes are namespaced, although namespacing isn't the primary hierarchy
protocol. protocol.
- This is needed because the database itself has a privileged namespace - This is needed because the database itself has a privileged namespace
- The privileged namespace is for keeping track of database state, for - The privileged namespace is for keeping track of database state, for
example which scripts are trusted example which scripts are trusted
- Database service: - Database service:
- IFTTT Events - IFTTT Events
- Local vs. distributed IFTTT events? - Local vs. distributed IFTTT events?
- Local means that ur particular device is repsonsible for running it - Local means that ur particular device is repsonsible for running it
- Distributed means any device can consume the event??? - Distributed means any device can consume the event???
- is this even a good idea? Maybe just have one dedicated worker - is this even a good idea? Maybe just have one dedicated worker
device. For example, may not want to run certain automation tasks device. For example, may not want to run certain automation tasks
on phone, while others may only be able to be run on phone on phone, while others may only be able to be run on phone
- Cron tasks - Cron tasks
- Sync protocol: - Sync protocol:
- After a modification, the modification gets written to a queue - After a modification, the modification gets written to a queue
- CRDT? - CRDT?
- Other privileged concepts: - Other privileged concepts:
- User: a pub/priv key pair - User: a pub/priv key pair
- Use cases - Sample apps
- Content / blob storage
- Exposed interfaces
- `Content`
- `upload() -> Writer`
- `get(node_id : NodeId) -> Reader`
- `Writer`
- `next_chunk(Vec<u8>)`
- `Reader`
- `next_chunk() -> Vec<u8>`
- Personal journaling (like Logseq) - Personal journaling (like Logseq)
- Weight / fitness tracking - Weight / fitness tracking
- Calendar app (store events) - Calendar app (store events)
- Git app (store code) - Git app (store code)
- File backup - File backup
- Chat / Mail? - Chat / Mail?
- Photo viewer + indexing using ML models for face detection / keywords - Photo viewer + indexing using ML models for face detection / keywords
- Not sure yet: - Not sure yet:
- Automatic sharing of database nodes? This seems like a bad idea for - Automatic sharing of database nodes? This seems like a bad idea for
multiple reasons. Maybe better to just have a specific app for multiple reasons. Maybe better to just have a specific app for
doing permission models doing permission models
- Other concerns - Other concerns
- Local protection using libsecret? - Local protection using libsecret?
- Migrations? - Migrations?
- If an application needs to migrate its data format, should we formalize - If an application needs to migrate its data format, should we formalize
this? this?
- Data migrations that don't need to create / delete nodes, only metadata - Data migrations that don't need to create / delete nodes, only metadata

1
docs/.gitignore vendored
View file

@ -1 +1,2 @@
book book
generated

View file

@ -4,3 +4,9 @@ language = "en"
multilingual = false multilingual = false
src = "src" src = "src"
title = "mznotes documentation" title = "mznotes documentation"
[output.html]
additional-css = ["custom.css"]
[preprocessor.tera]
command = "docs/make-then-tera.sh"

3
docs/custom.css Normal file
View file

@ -0,0 +1,3 @@
main table {
margin: unset !important;
}

87
docs/index.md Normal file
View file

@ -0,0 +1,87 @@
# Index
## Docs
- [docs/book.toml](docs/book.toml)
- [docs/make-then-tera.sh](docs/make-then-tera.sh)
### Book
- [docs/book/404.html](docs/book/404.html)
- [docs/book/ayu-highlight.css](docs/book/ayu-highlight.css)
- [docs/book/book.js](docs/book/book.js)
- [docs/book/clipboard.min.js](docs/book/clipboard.min.js)
- [docs/book/elasticlunr.min.js](docs/book/elasticlunr.min.js)
- [docs/book/favicon.png](docs/book/favicon.png)
- [docs/book/favicon.svg](docs/book/favicon.svg)
- [docs/book/highlight.css](docs/book/highlight.css)
- [docs/book/highlight.js](docs/book/highlight.js)
- [docs/book/index.html](docs/book/index.html)
- [docs/book/mark.min.js](docs/book/mark.min.js)
- [docs/book/print.html](docs/book/print.html)
- [docs/book/searcher.js](docs/book/searcher.js)
- [docs/book/searchindex.js](docs/book/searchindex.js)
- [docs/book/searchindex.json](docs/book/searchindex.json)
- [docs/book/tomorrow-night.css](docs/book/tomorrow-night.css)
### Src
- [docs/src/SUMMARY](docs/src/SUMMARY.md)
### Book
#### App
- [docs/book/app/sync.html](docs/book/app/sync.html)
#### Css
- [docs/book/css/chrome.css](docs/book/css/chrome.css)
- [docs/book/css/general.css](docs/book/css/general.css)
- [docs/book/css/print.css](docs/book/css/print.css)
- [docs/book/css/variables.css](docs/book/css/variables.css)
#### Dev
- [docs/book/dev/api.html](docs/book/dev/api.html)
- [docs/book/dev/meta_json.html](docs/book/dev/meta_json.html)
#### Lib
- [docs/book/lib/api_reference.html](docs/book/lib/api_reference.html)
#### Fonts
- [docs/book/fonts/OPEN-SANS-LICENSE.txt](docs/book/fonts/OPEN-SANS-LICENSE.txt)
- [docs/book/fonts/SOURCE-CODE-PRO-LICENSE.txt](docs/book/fonts/SOURCE-CODE-PRO-LICENSE.txt)
- [docs/book/fonts/fonts.css](docs/book/fonts/fonts.css)
- [docs/book/fonts/open-sans-v17-all-charsets-300.woff2](docs/book/fonts/open-sans-v17-all-charsets-300.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-300italic.woff2](docs/book/fonts/open-sans-v17-all-charsets-300italic.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-600.woff2](docs/book/fonts/open-sans-v17-all-charsets-600.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-600italic.woff2](docs/book/fonts/open-sans-v17-all-charsets-600italic.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-700.woff2](docs/book/fonts/open-sans-v17-all-charsets-700.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-700italic.woff2](docs/book/fonts/open-sans-v17-all-charsets-700italic.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-800.woff2](docs/book/fonts/open-sans-v17-all-charsets-800.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-800italic.woff2](docs/book/fonts/open-sans-v17-all-charsets-800italic.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-italic.woff2](docs/book/fonts/open-sans-v17-all-charsets-italic.woff2)
- [docs/book/fonts/open-sans-v17-all-charsets-regular.woff2](docs/book/fonts/open-sans-v17-all-charsets-regular.woff2)
- [docs/book/fonts/source-code-pro-v11-all-charsets-500.woff2](docs/book/fonts/source-code-pro-v11-all-charsets-500.woff2)
### Src
#### App
- [docs/src/app/sync](docs/src/app/sync.md)
#### Dev
- [docs/src/dev/api](docs/src/dev/api.md)
- [docs/src/dev/meta_json](docs/src/dev/meta_json.md)
#### Lib
- [docs/src/lib/api_reference](docs/src/lib/api_reference.md)
### Book
#### FontAwesome
##### Css
- [docs/book/FontAwesome/css/font-awesome.css](docs/book/FontAwesome/css/font-awesome.css)
##### Fonts
- [docs/book/FontAwesome/fonts/FontAwesome.ttf](docs/book/FontAwesome/fonts/FontAwesome.ttf)
- [docs/book/FontAwesome/fonts/fontawesome-webfont.eot](docs/book/FontAwesome/fonts/fontawesome-webfont.eot)
- [docs/book/FontAwesome/fonts/fontawesome-webfont.svg](docs/book/FontAwesome/fonts/fontawesome-webfont.svg)
- [docs/book/FontAwesome/fonts/fontawesome-webfont.ttf](docs/book/FontAwesome/fonts/fontawesome-webfont.ttf)
- [docs/book/FontAwesome/fonts/fontawesome-webfont.woff](docs/book/FontAwesome/fonts/fontawesome-webfont.woff)
- [docs/book/FontAwesome/fonts/fontawesome-webfont.woff2](docs/book/FontAwesome/fonts/fontawesome-webfont.woff2)

8
docs/make-then-tera.sh Executable file
View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
file=$(mktemp)
cp /dev/stdin $file
make doc-dependencies >/dev/stderr
mdbook-tera $@ < $file

View file

@ -7,8 +7,9 @@
# App Developers # App Developers
- [`meta.json`](./dev/meta_json.md) - [`meta.json`](./dev/meta_json.md)
- [API Reference](./generated/spec/meta.schema.md)
- [App API](./dev/api.md) - [App API](./dev/api.md)
# Core Library Developers # Core Library Developers
- [Library API](./lib/api.md) - [Library API Reference](./lib/api_reference.md)

View file

@ -2,4 +2,3 @@
This app synchronizes nodes across devices. This app synchronizes nodes across devices.

View file

@ -5,3 +5,9 @@
features. features.
[json5]: https://json5.org [json5]: https://json5.org
## API Reference
This is a rendered schema for how to write `meta.json` files.
[Documentation](./generated/spec)

View file

@ -1 +0,0 @@
# Library API

View file

@ -0,0 +1 @@
# Library API Reference

View file

@ -22,7 +22,16 @@
prisma-env = prisma-env =
import ./nix/prisma-env.nix { inherit (pkgs) prisma-engines; }; import ./nix/prisma-env.nix { inherit (pkgs) prisma-engines; };
toolchain = pkgs.fenix.default;
flakePkgs = rec {
mdbook-tera =
pkgs.callPackage ./nix/mdbook-tera.nix { inherit toolchain; };
};
in rec { in rec {
packages = flake-utils.lib.flattenTree flakePkgs;
devShell = pkgs.mkShell ({ devShell = pkgs.mkShell ({
packages = with pkgs; [ packages = with pkgs; [
cargo-deny cargo-deny
@ -32,8 +41,11 @@
cargo-watch cargo-watch
deno deno
mdbook
openssl openssl
yq
mdbook
flakePkgs.mdbook-tera
(python310.withPackages (p: with p; [ ipython numpy scipy sympy ])) (python310.withPackages (p: with p; [ ipython numpy scipy sympy ]))

22
nix/mdbook-tera.nix Normal file
View file

@ -0,0 +1,22 @@
{ lib, makeRustPlatform, toolchain, fetchFromGitHub }:
let rustPlatform = makeRustPlatform { inherit (toolchain) cargo rustc; };
in rustPlatform.buildRustPackage rec {
name = "mdbook-tera";
version = "0.5.1";
src = fetchFromGitHub {
owner = "avitex";
repo = name;
rev = "v${version}";
sha256 = "sha256-JxZWx0He0+hIPw4IPFMRg2dcQpwq8rCV6ujvX+n7RLk=";
};
cargoPatches = [ ./mdbook-tera.patch ];
cargoSha256 = "sha256-Y4U3lDgrRq8G+OGzi3MaAmXIrGwzMJZutK64wJKqFWk=";
# unknown lint: `rustdoc::missing_doc_code_examples
doCheck = false;
}

1313
nix/mdbook-tera.patch Normal file

File diff suppressed because it is too large Load diff

664
package-lock.json generated
View file

@ -15,9 +15,30 @@
}, },
"devDependencies": { "devDependencies": {
"@types/express": "^4.17.17", "@types/express": "^4.17.17",
"json-schema-static-docs": "^0.23.0",
"prisma": "^4.11.0", "prisma": "^4.11.0",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^5.0.2" "typescript": "^5.0.2",
"wetzel": "^0.2.3"
}
},
"node_modules/@apidevtools/json-schema-ref-parser": {
"version": "10.1.0",
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-10.1.0.tgz",
"integrity": "sha512-3e+viyMuXdrcK8v5pvP+SDoAQ77FH6OyRmuK48SZKmdHJRFm87RsSs8qm6kP39a/pOPURByJw+OXzQIqcfmKtA==",
"dev": true,
"dependencies": {
"@jsdevtools/ono": "^7.1.3",
"@types/json-schema": "^7.0.11",
"@types/lodash.clonedeep": "^4.5.7",
"js-yaml": "^4.1.0",
"lodash.clonedeep": "^4.5.0"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/philsturgeon"
} }
}, },
"node_modules/@cspotcode/source-map-support": { "node_modules/@cspotcode/source-map-support": {
@ -57,6 +78,47 @@
"@jridgewell/sourcemap-codec": "^1.4.10" "@jridgewell/sourcemap-codec": "^1.4.10"
} }
}, },
"node_modules/@jsdevtools/ono": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
"dev": true
},
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/@nodelib/fs.stat": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
"dev": true,
"engines": {
"node": ">= 8"
}
},
"node_modules/@nodelib/fs.walk": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"dev": true,
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
},
"engines": {
"node": ">= 8"
}
},
"node_modules/@prisma/client": { "node_modules/@prisma/client": {
"version": "4.11.0", "version": "4.11.0",
"resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.11.0.tgz", "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.11.0.tgz",
@ -155,6 +217,27 @@
"@types/range-parser": "*" "@types/range-parser": "*"
} }
}, },
"node_modules/@types/json-schema": {
"version": "7.0.11",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
"integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
"dev": true
},
"node_modules/@types/lodash": {
"version": "4.14.191",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.191.tgz",
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==",
"dev": true
},
"node_modules/@types/lodash.clonedeep": {
"version": "4.5.7",
"resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.7.tgz",
"integrity": "sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==",
"dev": true,
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@types/mime": { "node_modules/@types/mime": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
@ -220,17 +303,62 @@
"node": ">=0.4.0" "node": ">=0.4.0"
} }
}, },
"node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
"require-from-string": "^2.0.2",
"uri-js": "^4.2.2"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/ajv-formats": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
"dependencies": {
"ajv": "^8.0.0"
},
"peerDependencies": {
"ajv": "^8.0.0"
},
"peerDependenciesMeta": {
"ajv": {
"optional": true
}
}
},
"node_modules/arg": { "node_modules/arg": {
"version": "4.1.3", "version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true "dev": true
}, },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"node_modules/array-flatten": { "node_modules/array-flatten": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
}, },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"node_modules/body-parser": { "node_modules/body-parser": {
"version": "1.20.1", "version": "1.20.1",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
@ -254,6 +382,27 @@
"npm": "1.2.8000 || >= 1.4.16" "npm": "1.2.8000 || >= 1.4.16"
} }
}, },
"node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"dependencies": {
"fill-range": "^7.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/bytes": { "node_modules/bytes": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
@ -413,6 +562,55 @@
"node": ">= 0.10.0" "node": ">= 0.10.0"
} }
}, },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
"node_modules/fast-glob": {
"version": "3.2.12",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
"@nodelib/fs.walk": "^1.2.3",
"glob-parent": "^5.1.2",
"merge2": "^1.3.0",
"micromatch": "^4.0.4"
},
"engines": {
"node": ">=8.6.0"
}
},
"node_modules/fastq": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/finalhandler": { "node_modules/finalhandler": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
@ -446,6 +644,12 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
"node_modules/function-bind": { "node_modules/function-bind": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
@ -464,6 +668,66 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/glob": {
"version": "9.3.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz",
"integrity": "sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"minimatch": "^7.4.1",
"minipass": "^4.2.4",
"path-scurry": "^1.6.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
"dev": true,
"dependencies": {
"is-glob": "^4.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/handlebars": {
"version": "4.7.7",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
"integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
"dev": true,
"dependencies": {
"minimist": "^1.2.5",
"neo-async": "^2.6.0",
"source-map": "^0.6.1",
"wordwrap": "^1.0.0"
},
"bin": {
"handlebars": "bin/handlebars"
},
"engines": {
"node": ">=0.4.7"
},
"optionalDependencies": {
"uglify-js": "^3.1.4"
}
},
"node_modules/handlebars/node_modules/minimist": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has": { "node_modules/has": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@ -525,6 +789,134 @@
"node": ">= 0.10" "node": ">= 0.10"
} }
}, },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"dev": true,
"dependencies": {
"is-extglob": "^2.1.1"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
"engines": {
"node": ">=0.12.0"
}
},
"node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/json-schema-static-docs": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/json-schema-static-docs/-/json-schema-static-docs-0.23.0.tgz",
"integrity": "sha512-l8h5A6/kf8mOyJ3Slih8487OrAxLE9CadgxftQreB8zfdg+9OUir/ZBhhT5v3hJyPagX1GHt9IwdTZHJdNzhcw==",
"dev": true,
"dependencies": {
"@apidevtools/json-schema-ref-parser": "^10.1.0",
"ajv": "^8.12.0",
"ajv-formats": "^2.1.1",
"extend": "^3.0.2",
"fast-glob": "^3.2.12",
"handlebars": "^4.7.7",
"jsonpointer": "^5.0.1",
"lodash": ">=4.17.21",
"make-dir": "^3.1.0",
"mkdirp": "^2.1.6",
"rimraf": "^4.4.1",
"yaml": "^2.2.1"
},
"bin": {
"json-schema-static-docs": "cli.js"
},
"engines": {
"node": ">=14"
}
},
"node_modules/json-schema-static-docs/node_modules/jsonpointer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
"integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/json-schema-traverse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true
},
"node_modules/jsonpointer": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz",
"integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"node_modules/lodash.clonedeep": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
"dev": true
},
"node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
"engines": {
"node": ">=12"
}
},
"node_modules/make-dir": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"dependencies": {
"semver": "^6.0.0"
},
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/make-error": { "node_modules/make-error": {
"version": "1.3.6", "version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@ -544,6 +936,15 @@
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
}, },
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
"dev": true,
"engines": {
"node": ">= 8"
}
},
"node_modules/methods": { "node_modules/methods": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@ -552,6 +953,19 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
"dev": true,
"dependencies": {
"braces": "^3.0.2",
"picomatch": "^2.3.1"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/mime": { "node_modules/mime": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
@ -582,6 +996,51 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/minimatch": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz",
"integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/minimist": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.0.tgz",
"integrity": "sha512-ozllOyYiayzEgHCQKMPXKkOn9QRdeVe0TrIxLp+SJXMA0XNCL+yf4OtyPkB2JthzzYePYOTRnipBi3oOOa82sw==",
"dev": true
},
"node_modules/minipass": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
"integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/mkdirp": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz",
"integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==",
"dev": true,
"bin": {
"mkdirp": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/ms": { "node_modules/ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@ -595,6 +1054,12 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"node_modules/object-inspect": { "node_modules/object-inspect": {
"version": "1.12.3", "version": "1.12.3",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
@ -622,11 +1087,39 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/path-scurry": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz",
"integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==",
"dev": true,
"dependencies": {
"lru-cache": "^7.14.1",
"minipass": "^4.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-to-regexp": { "node_modules/path-to-regexp": {
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
}, },
"node_modules/picomatch": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"engines": {
"node": ">=8.6"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/prisma": { "node_modules/prisma": {
"version": "4.11.0", "version": "4.11.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-4.11.0.tgz", "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.11.0.tgz",
@ -656,6 +1149,15 @@
"node": ">= 0.10" "node": ">= 0.10"
} }
}, },
"node_modules/punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/qs": { "node_modules/qs": {
"version": "6.11.0", "version": "6.11.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
@ -670,6 +1172,26 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/range-parser": { "node_modules/range-parser": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@ -692,6 +1214,66 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/require-from-string": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true,
"engines": {
"iojs": ">=1.0.0",
"node": ">=0.10.0"
}
},
"node_modules/rimraf": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz",
"integrity": "sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==",
"dev": true,
"dependencies": {
"glob": "^9.2.0"
},
"bin": {
"rimraf": "dist/cjs/src/bin.js"
},
"engines": {
"node": ">=14"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"dependencies": {
"queue-microtask": "^1.2.2"
}
},
"node_modules/safe-buffer": { "node_modules/safe-buffer": {
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
@ -716,6 +1298,15 @@
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/send": { "node_modules/send": {
"version": "0.18.0", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
@ -776,6 +1367,15 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/statuses": { "node_modules/statuses": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
@ -784,6 +1384,18 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"dependencies": {
"is-number": "^7.0.0"
},
"engines": {
"node": ">=8.0"
}
},
"node_modules/toidentifier": { "node_modules/toidentifier": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@ -860,6 +1472,19 @@
"node": ">=12.20" "node": ">=12.20"
} }
}, },
"node_modules/uglify-js": {
"version": "3.17.4",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
"integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
"dev": true,
"optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/unpipe": { "node_modules/unpipe": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@ -868,6 +1493,15 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"dependencies": {
"punycode": "^2.1.0"
}
},
"node_modules/utils-merge": { "node_modules/utils-merge": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
@ -905,6 +1539,34 @@
"node": ">=6.0" "node": ">=6.0"
} }
}, },
"node_modules/wetzel": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/wetzel/-/wetzel-0.2.3.tgz",
"integrity": "sha512-eDu1nhDS0WSSMtkuG1Mgi4Vb8UqFW3pTod6csfJsYmTtyWJhSkogbDPxWQ0dzEUz5qZXdsnOeLFM4MBlYlXQtw==",
"dev": true,
"dependencies": {
"jsonpointer": "^4.1.0",
"minimist": "1.1.0"
},
"bin": {
"wetzel": "bin/wetzel.js"
}
},
"node_modules/wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true
},
"node_modules/yaml": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz",
"integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==",
"dev": true,
"engines": {
"node": ">= 14"
}
},
"node_modules/yn": { "node_modules/yn": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",

View file

@ -11,9 +11,11 @@
"license": "ISC", "license": "ISC",
"devDependencies": { "devDependencies": {
"@types/express": "^4.17.17", "@types/express": "^4.17.17",
"json-schema-static-docs": "^0.23.0",
"prisma": "^4.11.0", "prisma": "^4.11.0",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^5.0.2" "typescript": "^5.0.2",
"wetzel": "^0.2.3"
}, },
"dependencies": { "dependencies": {
"@prisma/client": "^4.11.0", "@prisma/client": "^4.11.0",

14
spec/generate.js Normal file
View file

@ -0,0 +1,14 @@
const JsonSchemaStaticDocs = require("json-schema-static-docs");
(async () => {
let jsonSchemaStaticDocs = new JsonSchemaStaticDocs({
inputPath: "./spec",
outputPath: "./docs/src/generated/spec",
ajvOptions: {
allowUnionTypes: true,
},
});
await jsonSchemaStaticDocs.generate();
console.log("Documents generated.");
})();

View file

@ -1,21 +0,0 @@
{
"$id": "https://example.com/person.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Person",
"type": "object",
"properties": {
"firstName": {
"type": "string",
"description": "The person's first name."
},
"lastName": {
"type": "string",
"description": "The person's last name."
},
"age": {
"description": "Age in years which must be equal to or greater than zero.",
"type": "integer",
"minimum": 0
}
}
}

17
spec/meta.schema.yml Normal file
View file

@ -0,0 +1,17 @@
$id: "https://example.com/person.schema.json"
$schema: "http://json-schema.org/draft-07/schema"
title: Application
type: object
properties:
name:
type: string
title: Name of the application
license:
type: [string, "null"]
title: SPDX Expression representing the license of the database.
description: |-
If the software uses a proprietary license, use `null` to indicate that.