diff --git a/examples/simple-agent/README.md b/examples/simple-agent/README.md
deleted file mode 100644
index 596d87e03..000000000
--- a/examples/simple-agent/README.md
+++ /dev/null
@@ -1,81 +0,0 @@
-# Simple Agent Local and Remote DWN Example
-
-## Installation
-
-### Build Web5 JS Bundles
-
-First, build the `web5-js` bundles for node and browser environments:
-
-```shell
-cd web5-js/
-npm install
-npm run build
-```
-
-The bundles are output to the `dist/` sub-directory.
-
-### Use Package Linking
-
-To enable use of the local `web5-js` package by `simple-agent`,
-use package linking. Package linking is a two-step process:
-
-1. First `npm link` in the `web5-js` package to create a symlink
-in the global folder `{prefix}/lib/node_modules/web5-js`:
- ```shell
- cd web5-js/
- npm link
- ```
-
-2. Next, in the `simple-agent` directory, run the command below to create a symbolic link from the globally-installed `web5-js` package to the `node_modules/` of the current directory:
- ```shell
- cd examples/simple-agent/
- npm link @tbd54566975/web5
- ```
-
-Now, whenever you start a `simple-agent` it will use the local
-development of `web5-js`.
-
-### Start Simple Agent(s)
-
-To test with remote DWNs, start at least one agent:
-
-```shell
-cd examples/simple-agent/
-npm install
-npm run serve -p 8085
-```
-
-The agent will be accessible on `http://localhost:8085`.
-
-If you want to test with multiple DWNs, start agents on ports `8086` and `8087`.
-
-### Start Test Dashboard Web Server
-
-To use the locally built bundles, a simple web server is started
-that serves the HTML and JS files from disk.
-
-```shell
-cd examples/test-dashboard/
-npm install
-npm run serve
-```
-
-The test dashboard site is accessible at `http://localhost:8080`.
-
-
-## Usage
-
-Navigate to [http://localhost:8080/simple-agent.html](http://localhost:8080/simple-agent.html) in a web browser.
-
-For Google Chrome,right-click somewhere in the page and select **Inspect** and then open your **Console**.
-
-When you refresh the page, you'll see the result of the writes and queries to the in-browser DWN.
-
-If you have at least one `simple-agent` running, you'll also see the result of writing to the "remote"
-DWNs.
-
-** Note that if you have the agent running on port 8085 shut down but one on ports 8086 or 8087 are up, the message
-will be successfully processed on the first one that is available. First 8085 is tried, then 8086, and finally 8087.
-Even though the message may be successfully processed on the port 8086 instance, your web browser will still report an
-`ERR_CONNECTION_REFUSED` message as a result of first trying 8085 before moving on to 8086. There is no way to disable
-this error reporting in a browser.
\ No newline at end of file
diff --git a/examples/simple-agent/etc/did.json b/examples/simple-agent/etc/did.json
deleted file mode 100644
index d18a28ca7..000000000
--- a/examples/simple-agent/etc/did.json
+++ /dev/null
@@ -1,106 +0,0 @@
-{
- "id": "did:ion:EiAa0ZGOuDaAz0IP9dtzfgcr9dqoVLMVjjce3qJVCeAE4g:eyJkZWx0YSI6eyJwYXRjaGVzIjpbeyJhY3Rpb24iOiJyZXBsYWNlIiwiZG9jdW1lbnQiOnsicHVibGljS2V5cyI6W3siaWQiOiJrZXktMSIsInB1YmxpY0tleUp3ayI6eyJjcnYiOiJzZWNwMjU2azEiLCJrdHkiOiJFQyIsIngiOiJPMzhYcDIzR3lNSHBMWTl0SXFFR1dla2MtYU8tYk5pUzQ3VFYtend5ZGMwIiwieSI6Il9OeG0tQ05zWHB3a2NiQ05pT0ZxWnFtUUpDQ2VQbnI3a3JrbklPc1hNd2MifSwicHVycG9zZXMiOlsiYXV0aGVudGljYXRpb24iXSwidHlwZSI6Ikpzb25XZWJLZXkyMDIwIn1dLCJzZXJ2aWNlcyI6W3siaWQiOiJkd24iLCJzZXJ2aWNlRW5kcG9pbnQiOnsibm9kZXMiOlsiaHR0cDovL2xvY2FsaG9zdDo4MDg1L2R3biIsImh0dHA6Ly9sb2NhbGhvc3Q6ODA4Ni9kd24iLCJodHRwOi8vbG9jYWxob3N0OjgwODcvZHduIl19LCJ0eXBlIjoiRGVjZW50cmFsaXplZFdlYk5vZGUifV19fV0sInVwZGF0ZUNvbW1pdG1lbnQiOiJFaURtQ3Utcmo2V2J6QURLcjhoc2FfSnZzd2QwaGdOYzNPVmo0NFkzZzJvUzVnIn0sInN1ZmZpeERhdGEiOnsiZGVsdGFIYXNoIjoiRWlBU3NvZlJ3VGtmOGZNa0RwRTJlZUJiTHZyVkNQT1VXUmdaY3lKQ3laamJSQSIsInJlY292ZXJ5Q29tbWl0bWVudCI6IkVpQ05NVHNrZDRScWZvcmY0QTRwdTZCbmtpUTBPVDA4WWpVM2hSY0VWRjBFOVEifX0",
- "internalId": "did:ion:EiAa0ZGOuDaAz0IP9dtzfgcr9dqoVLMVjjce3qJVCeAE4g",
- "methodData": [
- {
- "operation": "create",
- "content": {
- "publicKeys": [
- {
- "id": "dwn",
- "type": "JsonWebKey2020",
- "purposes": [
- "authentication"
- ],
- "publicKeyJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "O38Xp23GyMHpLY9tIqEGWekc-aO-bNiS47TV-zwydc0",
- "y": "_Nxm-CNsXpwkcbCNiOFqZqmQJCCePnr7krknIOsXMwc"
- }
- }
- ],
- "services": [
- {
- "id": "dwn",
- "type": "DecentralizedWebNode",
- "serviceEndpoint": {
- "nodes": [
- "http://localhost:8085/dwn",
- "http://localhost:8086/dwn",
- "http://localhost:8087/dwn"
- ]
- }
- }
- ]
- },
- "recovery": {
- "publicJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "Qgj67geHhA3P6Ez79hkRa1bAuTbcUk2QemvtGe-ygJs",
- "y": "ZNq6Cr2TTL_KScbNJC83N0reMi-SQTncZZuKdZfTQXU"
- },
- "privateJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "Qgj67geHhA3P6Ez79hkRa1bAuTbcUk2QemvtGe-ygJs",
- "y": "ZNq6Cr2TTL_KScbNJC83N0reMi-SQTncZZuKdZfTQXU",
- "d": "GzMNcabtFPNZLCqUq2rQNdLcZydDyfDaW2RVWzSb1sE"
- }
- },
- "update": {
- "publicJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "VE6eznCham9Ctc1zgiaqeXwiT1UXUE0NYtY3PBgJaq0",
- "y": "1Jqg3WVeRBT_ORvCSLNWMrg6uLK48PITzCfgeEdUqa4"
- },
- "privateJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "VE6eznCham9Ctc1zgiaqeXwiT1UXUE0NYtY3PBgJaq0",
- "y": "1Jqg3WVeRBT_ORvCSLNWMrg6uLK48PITzCfgeEdUqa4",
- "d": "BF1mlHYwdPosw5-D5yrK8xV5FkW9GwuUQfXuxrJfYOM"
- }
- }
- }
- ],
- "keys": [
- {
- "id": "dwn",
- "type": "JsonWebKey2020",
- "keyPair": {
- "publicJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "O38Xp23GyMHpLY9tIqEGWekc-aO-bNiS47TV-zwydc0",
- "y": "_Nxm-CNsXpwkcbCNiOFqZqmQJCCePnr7krknIOsXMwc"
- },
- "privateJwk": {
- "kty": "EC",
- "crv": "secp256k1",
- "x": "O38Xp23GyMHpLY9tIqEGWekc-aO-bNiS47TV-zwydc0",
- "y": "_Nxm-CNsXpwkcbCNiOFqZqmQJCCePnr7krknIOsXMwc",
- "d": "lEggFIYtZA6COZ20rgQbhvvzLKltD_CQS9U0xrhcLyA"
- }
- },
- "purposes": [
- "authentication"
- ]
- }
- ],
- "services": [
- {
- "id": "dwn",
- "type": "DecentralizedWebNode",
- "serviceEndpoint": {
- "nodes": [
- "http://localhost:8085/dwn",
- "http://localhost:8086/dwn",
- "http://localhost:8087/dwn"
- ]
- }
- }
- ]
-}
\ No newline at end of file
diff --git a/examples/simple-agent/package-lock.json b/examples/simple-agent/package-lock.json
deleted file mode 100644
index 91d68aad4..000000000
--- a/examples/simple-agent/package-lock.json
+++ /dev/null
@@ -1,2253 +0,0 @@
-{
- "name": "simple-agent",
- "version": "0.0.2",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "simple-agent",
- "version": "0.0.2",
- "license": "MIT",
- "dependencies": {
- "@koa/cors": "4.0.0",
- "@koa/router": "12.0.0",
- "@tbd54566975/web5": "0.3.1-unstable.e2dfe57-2023.3.23-19-07-37",
- "koa": "2.14.1",
- "koa-body": "6.0.1",
- "mkdirp": "2.1.5",
- "raw-body": "2.5.2"
- }
- },
- "node_modules/@assemblyscript/loader": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.9.4.tgz",
- "integrity": "sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA=="
- },
- "node_modules/@decentralized-identity/ion-sdk": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@decentralized-identity/ion-sdk/-/ion-sdk-0.6.0.tgz",
- "integrity": "sha512-dOwpl9YK5A3f2Cmw2NB8AlzzFlB2u3on/nFxsp2KxR8fQMLYeGNYnC5eOdSwInFgZNeQVgnNhKpZU1YiSf6hQA==",
- "dependencies": {
- "@noble/ed25519": "1.7.1",
- "@noble/secp256k1": "1.7.0",
- "canonicalize": "1.0.1",
- "multiformats": "9.9.0",
- "multihashes": "4.0.3",
- "uri-js": "4.4.0"
- }
- },
- "node_modules/@decentralized-identity/ion-sdk/node_modules/@noble/ed25519": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz",
- "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/@decentralized-identity/ion-sdk/node_modules/@noble/secp256k1": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.0.tgz",
- "integrity": "sha512-kbacwGSsH/CTout0ZnZWxnW1B+jH/7r/WAAKLBtrRJ/+CUH7lgmQzl3GTrQua3SGKWNSDsS6lmjnDpIJ5Dxyaw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/@decentralized-identity/ion-sdk/node_modules/multiformats": {
- "version": "9.9.0",
- "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz",
- "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="
- },
- "node_modules/@decentralized-identity/ion-tools": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@decentralized-identity/ion-tools/-/ion-tools-1.0.6.tgz",
- "integrity": "sha512-xi1QudddgxUBzkN0cyerIZxxrZvBCO1RB3xf/eEbh0ZeSZe/WMgAEPjS3ehfUwAsDMKnf2REC3CPk5SphBA9OA==",
- "dependencies": {
- "@decentralized-identity/ion-sdk": "0.6.0",
- "@noble/ed25519": "1.6.0",
- "@noble/secp256k1": "1.5.5",
- "cross-fetch": "3.1.5",
- "ion-pow-sdk": "1.0.16",
- "multiformats": "9.6.4"
- },
- "engines": {
- "node": ">= 16"
- }
- },
- "node_modules/@ipld/dag-cbor": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.1.tgz",
- "integrity": "sha512-XqG8VEzHjQDC/Qcy5Gyf1kvAav5VuAugc6c7VtdaRLI+3d8lJrUP3F76GYJNNXuEnRZ58cCBnNNglkIGTdg1+A==",
- "dependencies": {
- "cborg": "^1.6.0",
- "multiformats": "^9.5.4"
- }
- },
- "node_modules/@ipld/dag-pb": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz",
- "integrity": "sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg==",
- "dependencies": {
- "multiformats": "^9.5.4"
- }
- },
- "node_modules/@js-temporal/polyfill": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@js-temporal/polyfill/-/polyfill-0.4.3.tgz",
- "integrity": "sha512-6Fmjo/HlkyVCmJzAPnvtEWlcbQUSRhi8qlN9EtJA/wP7FqXsevLLrlojR44kzNzrRkpf7eDJ+z7b4xQD/Ycypw==",
- "dependencies": {
- "jsbi": "^4.1.0",
- "tslib": "^2.3.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@koa/cors": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-4.0.0.tgz",
- "integrity": "sha512-Y4RrbvGTlAaa04DBoPBWJqDR5gPj32OOz827ULXfgB1F7piD1MB/zwn8JR2LAnvdILhxUbXbkXGWuNVsFuVFCQ==",
- "dependencies": {
- "vary": "^1.1.2"
- },
- "engines": {
- "node": ">= 14.0.0"
- }
- },
- "node_modules/@koa/router": {
- "version": "12.0.0",
- "resolved": "https://registry.npmjs.org/@koa/router/-/router-12.0.0.tgz",
- "integrity": "sha512-cnnxeKHXlt7XARJptflGURdJaO+ITpNkOHmQu7NHmCoRinPbyvFzce/EG/E8Zy81yQ1W9MoSdtklc3nyaDReUw==",
- "dependencies": {
- "http-errors": "^2.0.0",
- "koa-compose": "^4.1.0",
- "methods": "^1.1.2",
- "path-to-regexp": "^6.2.1"
- },
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/@multiformats/base-x": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz",
- "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw=="
- },
- "node_modules/@multiformats/murmur3": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.1.3.tgz",
- "integrity": "sha512-wAPLUErGR8g6Lt+bAZn6218k9YQPym+sjszsXL6o4zfxbA22P+gxWZuuD9wDbwL55xrKO5idpcuQUX7/E3oHcw==",
- "dependencies": {
- "multiformats": "^9.5.4",
- "murmurhash3js-revisited": "^3.0.0"
- }
- },
- "node_modules/@noble/ed25519": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.6.0.tgz",
- "integrity": "sha512-UKju89WV37IUALIMfKhKW3psO8AqmrE/GvH6QbPKjzolQ98zM7WmGUeY+xdIgSf5tqPFf75ZCYMgym6E9Jsw3Q==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/@noble/secp256k1": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.5.5.tgz",
- "integrity": "sha512-sZ1W6gQzYnu45wPrWx8D3kwI2/U29VYTx9OjbDAd7jwRItJ0cSTMPRL/C8AWZFn9kWFLQGqEXVEE86w4Z8LpIQ==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/@protobufjs/aspromise": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
- "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
- },
- "node_modules/@protobufjs/base64": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
- "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
- },
- "node_modules/@protobufjs/codegen": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
- "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
- },
- "node_modules/@protobufjs/eventemitter": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
- "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
- },
- "node_modules/@protobufjs/fetch": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
- "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.1",
- "@protobufjs/inquire": "^1.1.0"
- }
- },
- "node_modules/@protobufjs/float": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
- "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
- },
- "node_modules/@protobufjs/inquire": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
- "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
- },
- "node_modules/@protobufjs/path": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
- "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
- },
- "node_modules/@protobufjs/pool": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
- "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
- },
- "node_modules/@protobufjs/utf8": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
- "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
- },
- "node_modules/@swc/helpers": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.3.8.tgz",
- "integrity": "sha512-aWItSZvJj4+GI6FWkjZR13xPNPctq2RRakzo+O6vN7bC2yjwdg5EFpgaSAUn95b7BGSgcflvzVDPoKmJv24IOg=="
- },
- "node_modules/@tbd54566975/dwn-sdk-js": {
- "version": "0.0.23",
- "resolved": "https://registry.npmjs.org/@tbd54566975/dwn-sdk-js/-/dwn-sdk-js-0.0.23.tgz",
- "integrity": "sha512-T0Z4lqaKDUkfjEYDQE9lYm8ubmML8NOOOaKiapdHeQ9CXhKD/sH8q0OsKknScsHqLEDI3H9nxiyQAtO47LSOpQ==",
- "dependencies": {
- "@ipld/dag-cbor": "7.0.1",
- "@js-temporal/polyfill": "0.4.3",
- "@noble/ed25519": "1.7.1",
- "@noble/secp256k1": "1.7.1",
- "@swc/helpers": "0.3.8",
- "@types/ms": "0.7.31",
- "@types/node": "^18.13.0",
- "@types/readable-stream": "^2.3.15",
- "@types/search-index": "3.2.0",
- "ajv": "8.11.0",
- "cross-fetch": "3.1.5",
- "date-fns": "2.28.0",
- "interface-blockstore": "2.0.3",
- "ipfs-unixfs": "6.0.9",
- "ipfs-unixfs-exporter": "7.0.11",
- "ipfs-unixfs-importer": "9.0.10",
- "level": "8.0.0",
- "lodash": "4.17.21",
- "lru-cache": "7.12.0",
- "ms": "2.1.3",
- "multiformats": "9.6.4",
- "randombytes": "2.1.0",
- "readable-stream": "^4.3.0",
- "search-index": "3.1.3",
- "uuid": "8.3.2",
- "varint": "6.0.0"
- },
- "engines": {
- "node": ">= 16"
- }
- },
- "node_modules/@tbd54566975/dwn-sdk-js/node_modules/@noble/ed25519": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@noble/ed25519/-/ed25519-1.7.1.tgz",
- "integrity": "sha512-Rk4SkJFaXZiznFyC/t77Q0NKS4FL7TLJJsVG2V2oiEq3kJVeTdxysEe/yRWSpnWMe808XRDJ+VFh5pt/FN5plw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/@tbd54566975/dwn-sdk-js/node_modules/@noble/secp256k1": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz",
- "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==",
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
- ]
- },
- "node_modules/@tbd54566975/web5": {
- "version": "0.3.1-unstable.e2dfe57-2023.3.23-19-07-37",
- "resolved": "https://registry.npmjs.org/@tbd54566975/web5/-/web5-0.3.1-unstable.e2dfe57-2023.3.23-19-07-37.tgz",
- "integrity": "sha512-bLoN61Yith4D7Im3d/Ske7zV9dOlH3P2foKu/9sjYR/mM4LmafSZhK9YGHh1/yvGZHjh6wt1H7G6ysVtrv9Xxg==",
- "dependencies": {
- "@decentralized-identity/ion-tools": "1.0.6",
- "@tbd54566975/dwn-sdk-js": "0.0.23",
- "cross-fetch": "3.1.5",
- "tweetnacl": "1.0.3"
- }
- },
- "node_modules/@types/abstract-leveldown": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.1.tgz",
- "integrity": "sha512-YK8irIC+eMrrmtGx0H4ISn9GgzLd9dojZWJaMbjp1YHLl2VqqNFBNrL5Q3KjGf4VE3sf/4hmq6EhQZ7kZp1NoQ=="
- },
- "node_modules/@types/accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
- "dependencies": {
- "@types/connect": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/co-body": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.0.tgz",
- "integrity": "sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==",
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*"
- }
- },
- "node_modules/@types/connect": {
- "version": "3.4.35",
- "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
- "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/content-disposition": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.5.tgz",
- "integrity": "sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA=="
- },
- "node_modules/@types/cookies": {
- "version": "0.7.7",
- "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz",
- "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==",
- "dependencies": {
- "@types/connect": "*",
- "@types/express": "*",
- "@types/keygrip": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/express": {
- "version": "4.17.17",
- "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz",
- "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
- "dependencies": {
- "@types/body-parser": "*",
- "@types/express-serve-static-core": "^4.17.33",
- "@types/qs": "*",
- "@types/serve-static": "*"
- }
- },
- "node_modules/@types/express-serve-static-core": {
- "version": "4.17.33",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz",
- "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==",
- "dependencies": {
- "@types/node": "*",
- "@types/qs": "*",
- "@types/range-parser": "*"
- }
- },
- "node_modules/@types/formidable": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@types/formidable/-/formidable-2.0.5.tgz",
- "integrity": "sha512-uvMcdn/KK3maPOaVUAc3HEYbCEhjaGFwww4EsX6IJfWIJ1tzHtDHczuImH3GKdusPnAAmzB07St90uabZeCKPA==",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/http-assert": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz",
- "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
- },
- "node_modules/@types/http-errors": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz",
- "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ=="
- },
- "node_modules/@types/keygrip": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz",
- "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
- },
- "node_modules/@types/koa": {
- "version": "2.13.6",
- "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.6.tgz",
- "integrity": "sha512-diYUfp/GqfWBAiwxHtYJ/FQYIXhlEhlyaU7lB/bWQrx4Il9lCET5UwpFy3StOAohfsxxvEQ11qIJgT1j2tfBvw==",
- "dependencies": {
- "@types/accepts": "*",
- "@types/content-disposition": "*",
- "@types/cookies": "*",
- "@types/http-assert": "*",
- "@types/http-errors": "*",
- "@types/keygrip": "*",
- "@types/koa-compose": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/koa-compose": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz",
- "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==",
- "dependencies": {
- "@types/koa": "*"
- }
- },
- "node_modules/@types/long": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz",
- "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA=="
- },
- "node_modules/@types/mime": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
- "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
- },
- "node_modules/@types/ms": {
- "version": "0.7.31",
- "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz",
- "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA=="
- },
- "node_modules/@types/node": {
- "version": "18.15.11",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
- "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q=="
- },
- "node_modules/@types/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
- },
- "node_modules/@types/range-parser": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
- "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
- },
- "node_modules/@types/readable-stream": {
- "version": "2.3.15",
- "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz",
- "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==",
- "dependencies": {
- "@types/node": "*",
- "safe-buffer": "~5.1.1"
- }
- },
- "node_modules/@types/search-index": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/@types/search-index/-/search-index-3.2.0.tgz",
- "integrity": "sha512-1JO0PjageEhvU8JZoiysPU+Ng19SAo0OzGW3ItybBwkeeIdTw40hRpCacir4pL0NsoyQkVF/hBax5uNVB90YUQ==",
- "dependencies": {
- "@types/abstract-leveldown": "*"
- }
- },
- "node_modules/@types/serve-static": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz",
- "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==",
- "dependencies": {
- "@types/mime": "*",
- "@types/node": "*"
- }
- },
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
- "dependencies": {
- "event-target-shim": "^5.0.0"
- },
- "engines": {
- "node": ">=6.5"
- }
- },
- "node_modules/abstract-level": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz",
- "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==",
- "dependencies": {
- "buffer": "^6.0.3",
- "catering": "^2.1.0",
- "is-buffer": "^2.0.5",
- "level-supports": "^4.0.0",
- "level-transcoder": "^1.0.1",
- "module-error": "^1.0.1",
- "queue-microtask": "^1.2.3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/abstract-leveldown": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz",
- "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==",
- "dependencies": {
- "buffer": "^6.0.3",
- "catering": "^2.0.0",
- "is-buffer": "^2.0.5",
- "level-concat-iterator": "^3.0.0",
- "level-supports": "^2.0.1",
- "queue-microtask": "^1.2.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/abstract-leveldown/node_modules/level-supports": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz",
- "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ajv": {
- "version": "8.11.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz",
- "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==",
- "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/asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
- "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/bl": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
- "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
- "dependencies": {
- "buffer": "^6.0.3",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/browser-level": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz",
- "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==",
- "dependencies": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.1",
- "module-error": "^1.0.2",
- "run-parallel-limit": "^1.1.0"
- }
- },
- "node_modules/buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "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": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cache-content-type": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz",
- "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==",
- "dependencies": {
- "mime-types": "^2.1.18",
- "ylru": "^1.2.0"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/canonicalize": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.1.tgz",
- "integrity": "sha512-N3cmB3QLhS5TJ5smKFf1w42rJXWe6C1qP01z4dxJiI5v269buii4fLHWETDyf7yEd0azGLNC63VxNMiPd2u0Cg=="
- },
- "node_modules/catering": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz",
- "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cborg": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.1.tgz",
- "integrity": "sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w==",
- "bin": {
- "cborg": "cli.js"
- }
- },
- "node_modules/charwise": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/charwise/-/charwise-3.0.1.tgz",
- "integrity": "sha512-RcdumNsM6fJZ5HHbYunqj2bpurVRGsXour3OR+SlLEHFhG6ALm54i6Osnh+OvO7kEoSBzwExpblYFH8zKQiEPw=="
- },
- "node_modules/classic-level": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz",
- "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==",
- "hasInstallScript": true,
- "dependencies": {
- "abstract-level": "^1.0.2",
- "catering": "^2.1.0",
- "module-error": "^1.0.1",
- "napi-macros": "~2.0.0",
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/co-body": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz",
- "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==",
- "dependencies": {
- "inflation": "^2.0.0",
- "qs": "^6.5.2",
- "raw-body": "^2.3.3",
- "type-is": "^1.6.16"
- }
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-disposition/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "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/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookies": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
- "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
- "dependencies": {
- "depd": "~2.0.0",
- "keygrip": "~1.1.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cross-fetch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
- "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
- "dependencies": {
- "node-fetch": "2.6.7"
- }
- },
- "node_modules/date-fns": {
- "version": "2.28.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz",
- "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==",
- "engines": {
- "node": ">=0.11"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/date-fns"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/debug/node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "node_modules/deep-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
- "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw=="
- },
- "node_modules/deferred-leveldown": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz",
- "integrity": "sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg==",
- "dependencies": {
- "abstract-leveldown": "^7.2.0",
- "inherits": "^2.0.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/dezalgo": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
- "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
- "dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/encoding-down": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-7.1.0.tgz",
- "integrity": "sha512-ky47X5jP84ryk5EQmvedQzELwVJPjCgXDQZGeb9F6r4PdChByCGHTBrVcF3h8ynKVJ1wVbkxTsDC8zBROPypgQ==",
- "dependencies": {
- "abstract-leveldown": "^7.2.0",
- "inherits": "^2.0.3",
- "level-codec": "^10.0.0",
- "level-errors": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/err-code": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz",
- "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA=="
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/event-target-shim": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/eventemitter3": {
- "version": "4.0.7",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
- "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
- },
- "node_modules/events": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
- "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
- "engines": {
- "node": ">=0.8.x"
- }
- },
- "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=="
- },
- "node_modules/fergies-inverted-index": {
- "version": "10.0.6",
- "resolved": "https://registry.npmjs.org/fergies-inverted-index/-/fergies-inverted-index-10.0.6.tgz",
- "integrity": "sha512-T0dXoUk7XYr/N4Vgcw8MDoKtSUedYp9KxPvyYLSFbqIxDoOBPXpOktSTDaA6ToU9u9o/7u4FXtd9vJ4AoQejZg==",
- "dependencies": {
- "charwise": "^3.0.1",
- "encoding-down": "^7.1.0",
- "level-js": "^6.1.0",
- "leveldown": "^6.1.0",
- "levelup": "^5.1.1",
- "traverse": "^0.6.6"
- }
- },
- "node_modules/formidable": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.1.tgz",
- "integrity": "sha512-0EcS9wCFEzLvfiks7omJ+SiYJAiD+TzK4Pcw1UlUoGnhUxDcMKjt0P7x8wEb0u6OHu8Nb98WG3nxtlF5C7bvUQ==",
- "dependencies": {
- "dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
- "once": "^1.4.0",
- "qs": "^6.11.0"
- },
- "funding": {
- "url": "https://ko-fi.com/tunnckoCore/commissions"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hamt-sharding": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-2.0.1.tgz",
- "integrity": "sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA==",
- "dependencies": {
- "sparse-array": "^1.3.1",
- "uint8arrays": "^3.0.0"
- },
- "engines": {
- "node": ">=10.0.0",
- "npm": ">=6.0.0"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/hash-wasm": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/hash-wasm/-/hash-wasm-4.4.1.tgz",
- "integrity": "sha512-6hbcJY74kQQOAoDQZgm0rku51jlf0f3+g+q+1CI3vNvabF27SQuVJm86FnMNMaw8WEjBeW4U5GWX1KsKd8qZCw=="
- },
- "node_modules/hexoid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
- "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/http-assert": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
- "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==",
- "dependencies": {
- "deep-equal": "~1.0.1",
- "http-errors": "~1.8.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-assert/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-assert/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-assert/node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
- "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/inflation": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz",
- "integrity": "sha512-m3xv4hJYR2oXw4o4Y5l6P5P16WYmazYof+el6Al3f+YlggGj6qT9kImBAnzDelRALnP5d3h4jGBPKzYCizjZZw==",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/interface-blockstore": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-2.0.3.tgz",
- "integrity": "sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w==",
- "dependencies": {
- "interface-store": "^2.0.2",
- "multiformats": "^9.0.4"
- }
- },
- "node_modules/interface-store": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz",
- "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg=="
- },
- "node_modules/ion-pow-sdk": {
- "version": "1.0.16",
- "resolved": "https://registry.npmjs.org/ion-pow-sdk/-/ion-pow-sdk-1.0.16.tgz",
- "integrity": "sha512-J5rwzf3Ntyv+mEUs+Mpor78E83hYsq8CDSf3SkxJXAajb4NYa3+medR7SoolpkMjEaMd2KeZg/+2w2XdrIrtwA==",
- "dependencies": {
- "buffer": "6.0.3",
- "cross-fetch": "3.1.2",
- "hash-wasm": "4.4.1"
- }
- },
- "node_modules/ion-pow-sdk/node_modules/cross-fetch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.2.tgz",
- "integrity": "sha512-+JhD65rDNqLbGmB3Gzs3HrEKC0aQnD+XA3SY6RjgkF88jV2q5cTc5+CwxlS3sdmLk98gpPt5CF9XRnPdlxZe6w==",
- "dependencies": {
- "node-fetch": "2.6.1"
- }
- },
- "node_modules/ion-pow-sdk/node_modules/node-fetch": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
- "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
- "engines": {
- "node": "4.x || >=6.0.0"
- }
- },
- "node_modules/ipfs-unixfs": {
- "version": "6.0.9",
- "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz",
- "integrity": "sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ==",
- "dependencies": {
- "err-code": "^3.0.1",
- "protobufjs": "^6.10.2"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/ipfs-unixfs-exporter": {
- "version": "7.0.11",
- "resolved": "https://registry.npmjs.org/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-7.0.11.tgz",
- "integrity": "sha512-qTYa69J7HbI2EIYNUddKPg9Y3rHkYZV0bNdmzZKA5+ZbwRVoUEuBW/cguEqTp22zHygh3sMnzYZFm0naVIdMgQ==",
- "dependencies": {
- "@ipld/dag-cbor": "^7.0.2",
- "@ipld/dag-pb": "^2.0.2",
- "@multiformats/murmur3": "^1.0.3",
- "err-code": "^3.0.1",
- "hamt-sharding": "^2.0.0",
- "interface-blockstore": "^2.0.3",
- "ipfs-unixfs": "^6.0.0",
- "it-last": "^1.0.5",
- "multiformats": "^9.4.2",
- "uint8arrays": "^3.0.0"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/ipfs-unixfs-exporter/node_modules/@ipld/dag-cbor": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz",
- "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==",
- "dependencies": {
- "cborg": "^1.6.0",
- "multiformats": "^9.5.4"
- }
- },
- "node_modules/ipfs-unixfs-importer": {
- "version": "9.0.10",
- "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz",
- "integrity": "sha512-W+tQTVcSmXtFh7FWYWwPBGXJ1xDgREbIyI1E5JzDcimZLIyT5gGMfxR3oKPxxWj+GKMpP5ilvMQrbsPzWcm3Fw==",
- "dependencies": {
- "@ipld/dag-pb": "^2.0.2",
- "@multiformats/murmur3": "^1.0.3",
- "bl": "^5.0.0",
- "err-code": "^3.0.1",
- "hamt-sharding": "^2.0.0",
- "interface-blockstore": "^2.0.3",
- "ipfs-unixfs": "^6.0.0",
- "it-all": "^1.0.5",
- "it-batch": "^1.0.8",
- "it-first": "^1.0.6",
- "it-parallel-batch": "^1.0.9",
- "merge-options": "^3.0.4",
- "multiformats": "^9.4.2",
- "rabin-wasm": "^0.1.4",
- "uint8arrays": "^3.0.0"
- },
- "engines": {
- "node": ">=16.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
- "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/it-all": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz",
- "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A=="
- },
- "node_modules/it-batch": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/it-batch/-/it-batch-1.0.9.tgz",
- "integrity": "sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA=="
- },
- "node_modules/it-first": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz",
- "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g=="
- },
- "node_modules/it-last": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz",
- "integrity": "sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q=="
- },
- "node_modules/it-parallel-batch": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz",
- "integrity": "sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ==",
- "dependencies": {
- "it-batch": "^1.0.9"
- }
- },
- "node_modules/jsbi": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-4.3.0.tgz",
- "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g=="
- },
- "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=="
- },
- "node_modules/keygrip": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
- "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
- "dependencies": {
- "tsscmp": "1.0.6"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/koa": {
- "version": "2.14.1",
- "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.1.tgz",
- "integrity": "sha512-USJFyZgi2l0wDgqkfD27gL4YGno7TfUkcmOe6UOLFOVuN+J7FwnNu4Dydl4CUQzraM1lBAiGed0M9OVJoT0Kqw==",
- "dependencies": {
- "accepts": "^1.3.5",
- "cache-content-type": "^1.0.0",
- "content-disposition": "~0.5.2",
- "content-type": "^1.0.4",
- "cookies": "~0.8.0",
- "debug": "^4.3.2",
- "delegates": "^1.0.0",
- "depd": "^2.0.0",
- "destroy": "^1.0.4",
- "encodeurl": "^1.0.2",
- "escape-html": "^1.0.3",
- "fresh": "~0.5.2",
- "http-assert": "^1.3.0",
- "http-errors": "^1.6.3",
- "is-generator-function": "^1.0.7",
- "koa-compose": "^4.1.0",
- "koa-convert": "^2.0.0",
- "on-finished": "^2.3.0",
- "only": "~0.0.2",
- "parseurl": "^1.3.2",
- "statuses": "^1.5.0",
- "type-is": "^1.6.16",
- "vary": "^1.1.2"
- },
- "engines": {
- "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
- }
- },
- "node_modules/koa-body": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/koa-body/-/koa-body-6.0.1.tgz",
- "integrity": "sha512-M8ZvMD8r+kPHy28aWP9VxL7kY8oPWA+C7ZgCljrCMeaU7uX6wsIQgDHskyrAr9sw+jqnIXyv4Mlxri5R4InIJg==",
- "dependencies": {
- "@types/co-body": "^6.1.0",
- "@types/formidable": "^2.0.5",
- "@types/koa": "^2.13.5",
- "co-body": "^6.1.0",
- "formidable": "^2.0.1",
- "zod": "^3.19.1"
- }
- },
- "node_modules/koa-compose": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz",
- "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw=="
- },
- "node_modules/koa-convert": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz",
- "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==",
- "dependencies": {
- "co": "^4.6.0",
- "koa-compose": "^4.1.0"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/koa/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/koa/node_modules/http-errors/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/koa/node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/level": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz",
- "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==",
- "dependencies": {
- "browser-level": "^1.0.1",
- "classic-level": "^1.2.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/level"
- }
- },
- "node_modules/level-codec": {
- "version": "10.0.0",
- "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-10.0.0.tgz",
- "integrity": "sha512-QW3VteVNAp6c/LuV6nDjg7XDXx9XHK4abmQarxZmlRSDyXYk20UdaJTSX6yzVvQ4i0JyWSB7jert0DsyD/kk6g==",
- "dependencies": {
- "buffer": "^6.0.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/level-concat-iterator": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz",
- "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==",
- "dependencies": {
- "catering": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/level-errors": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-3.0.1.tgz",
- "integrity": "sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/level-iterator-stream": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz",
- "integrity": "sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA==",
- "dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/level-iterator-stream/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/level-js": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/level-js/-/level-js-6.1.0.tgz",
- "integrity": "sha512-i7mPtkZm68aewfv0FnIUWvFUFfoyzIvVKnUmuQGrelEkP72vSPTaA1SGneWWoCV5KZJG4wlzbJLp1WxVNGuc6A==",
- "dependencies": {
- "abstract-leveldown": "^7.2.0",
- "buffer": "^6.0.3",
- "inherits": "^2.0.3",
- "ltgt": "^2.1.2",
- "run-parallel-limit": "^1.1.0"
- }
- },
- "node_modules/level-supports": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz",
- "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/level-transcoder": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz",
- "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==",
- "dependencies": {
- "buffer": "^6.0.3",
- "module-error": "^1.0.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/leveldown": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-6.1.1.tgz",
- "integrity": "sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A==",
- "hasInstallScript": true,
- "dependencies": {
- "abstract-leveldown": "^7.2.0",
- "napi-macros": "~2.0.0",
- "node-gyp-build": "^4.3.0"
- },
- "engines": {
- "node": ">=10.12.0"
- }
- },
- "node_modules/levelup": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/levelup/-/levelup-5.1.1.tgz",
- "integrity": "sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg==",
- "dependencies": {
- "catering": "^2.0.0",
- "deferred-leveldown": "^7.0.0",
- "level-errors": "^3.0.1",
- "level-iterator-stream": "^5.0.0",
- "level-supports": "^2.0.1",
- "queue-microtask": "^1.2.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/levelup/node_modules/level-supports": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz",
- "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/long": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
- "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
- },
- "node_modules/lru-cache": {
- "version": "7.12.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz",
- "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/ltgt": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz",
- "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA=="
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge-options": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz",
- "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==",
- "dependencies": {
- "is-plain-obj": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/mkdirp": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.5.tgz",
- "integrity": "sha512-jbjfql+shJtAPrFoKxHOXip4xS+kul9W3OzfzzrqueWK2QMGon2bFH2opl6W9EagBThjEz+iysyi/swOoVfB/w==",
- "bin": {
- "mkdirp": "dist/cjs/src/bin.js"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/module-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz",
- "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/multibase": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz",
- "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==",
- "deprecated": "This module has been superseded by the multiformats module",
- "dependencies": {
- "@multiformats/base-x": "^4.0.1"
- },
- "engines": {
- "node": ">=12.0.0",
- "npm": ">=6.0.0"
- }
- },
- "node_modules/multiformats": {
- "version": "9.6.4",
- "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.6.4.tgz",
- "integrity": "sha512-fCCB6XMrr6CqJiHNjfFNGT0v//dxOBMrOMqUIzpPc/mmITweLEyhvMpY9bF+jZ9z3vaMAau5E8B68DW77QMXkg=="
- },
- "node_modules/multihashes": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz",
- "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==",
- "dependencies": {
- "multibase": "^4.0.1",
- "uint8arrays": "^3.0.0",
- "varint": "^5.0.2"
- },
- "engines": {
- "node": ">=12.0.0",
- "npm": ">=6.0.0"
- }
- },
- "node_modules/multihashes/node_modules/varint": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz",
- "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow=="
- },
- "node_modules/murmurhash3js-revisited": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz",
- "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==",
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/napi-macros": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz",
- "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg=="
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ngraminator": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/ngraminator/-/ngraminator-3.0.2.tgz",
- "integrity": "sha512-+9RehP0EFeNxCyD53aeSFvF3OU6V0zcoZNRCXxvISl+nnlFcIZxSYdGhPaq8NDJTGlA4Ej5+NlkGopRSuuAwfw=="
- },
- "node_modules/node-fetch": {
- "version": "2.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
- "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-gyp-build": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
- "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
- "bin": {
- "node-gyp-build": "bin.js",
- "node-gyp-build-optional": "optional.js",
- "node-gyp-build-test": "build-test.js"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/only": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz",
- "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ=="
- },
- "node_modules/p-queue": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-7.3.4.tgz",
- "integrity": "sha512-esox8CWt0j9EZECFvkFl2WNPat8LN4t7WWeXq73D9ha0V96qPRufApZi4ZhPwXAln1uVVal429HVVKPa2X0yQg==",
- "dependencies": {
- "eventemitter3": "^4.0.7",
- "p-timeout": "^5.0.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-timeout": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz",
- "integrity": "sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
- "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
- },
- "node_modules/process": {
- "version": "0.11.10",
- "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
- "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
- "node_modules/protobufjs": {
- "version": "6.11.3",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz",
- "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==",
- "hasInstallScript": true,
- "dependencies": {
- "@protobufjs/aspromise": "^1.1.2",
- "@protobufjs/base64": "^1.1.2",
- "@protobufjs/codegen": "^2.0.4",
- "@protobufjs/eventemitter": "^1.1.0",
- "@protobufjs/fetch": "^1.1.0",
- "@protobufjs/float": "^1.0.2",
- "@protobufjs/inquire": "^1.1.0",
- "@protobufjs/path": "^1.1.2",
- "@protobufjs/pool": "^1.1.0",
- "@protobufjs/utf8": "^1.1.0",
- "@types/long": "^4.0.1",
- "@types/node": ">=13.7.0",
- "long": "^4.0.0"
- },
- "bin": {
- "pbjs": "bin/pbjs",
- "pbts": "bin/pbts"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.11.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.1.tgz",
- "integrity": "sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "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==",
- "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/rabin-wasm": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/rabin-wasm/-/rabin-wasm-0.1.5.tgz",
- "integrity": "sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==",
- "dependencies": {
- "@assemblyscript/loader": "^0.9.4",
- "bl": "^5.0.0",
- "debug": "^4.3.1",
- "minimist": "^1.2.5",
- "node-fetch": "^2.6.1",
- "readable-stream": "^3.6.0"
- },
- "bin": {
- "rabin-wasm": "cli/bin.js"
- }
- },
- "node_modules/rabin-wasm/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/raw-body": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
- "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/readable-stream": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz",
- "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==",
- "dependencies": {
- "abort-controller": "^3.0.0",
- "buffer": "^6.0.3",
- "events": "^3.3.0",
- "process": "^0.11.10"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- }
- },
- "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==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/run-parallel-limit": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz",
- "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==",
- "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": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/search-index": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/search-index/-/search-index-3.1.3.tgz",
- "integrity": "sha512-kck7BEbdmVV2NVIHCTg27I6NTDSQiyC1y/YTazmlzTN7+6o43eie0Vd3HBVyoqzDV0CnQeGv1k3XCDNo6mIaYQ==",
- "dependencies": {
- "fergies-inverted-index": "10.0.6",
- "level-js": "^6.1.0",
- "leveldown": "^6.1.1",
- "lru-cache": "^7.9.0",
- "ngraminator": "^3.0.1",
- "p-queue": "^7.2.0",
- "term-vector": "^1.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/sparse-array": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz",
- "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg=="
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "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/term-vector": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/term-vector/-/term-vector-1.0.0.tgz",
- "integrity": "sha512-P7xDawxO9T1yjR2oiTfgw7BzvyrdsbakUT6PJsgaAeFmSV+6h3fnXtmZJf4ynef6HVamYgs7Wf5I75UBV15ddQ==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
- },
- "node_modules/traverse": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
- "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/tslib": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
- "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
- },
- "node_modules/tsscmp": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
- "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
- "engines": {
- "node": ">=0.6.x"
- }
- },
- "node_modules/tweetnacl": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
- "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/uint8arrays": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz",
- "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==",
- "dependencies": {
- "multiformats": "^9.4.2"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
- "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
- "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/varint": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz",
- "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
- },
- "node_modules/ylru": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz",
- "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/zod": {
- "version": "3.21.4",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz",
- "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==",
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
- }
- }
-}
diff --git a/examples/simple-agent/package.json b/examples/simple-agent/package.json
deleted file mode 100644
index 581a17e32..000000000
--- a/examples/simple-agent/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "simple-agent",
- "version": "0.0.2",
- "description": "Simple example of an agent built using Web5 JS",
- "main": "src/index.js",
- "type": "module",
- "scripts": {
- "serve": "node src/index.js -p"
- },
- "keywords": [],
- "author": {
- "name": "Frank Hinek",
- "email": "frankhinek@tbd.email"
- },
- "license": "MIT",
- "dependencies": {
- "@koa/cors": "4.0.0",
- "@koa/router": "12.0.0",
- "@tbd54566975/web5": "0.5.0",
- "koa": "2.14.1",
- "koa-body": "6.0.1",
- "mkdirp": "2.1.5",
- "raw-body": "2.5.2"
- }
-}
diff --git a/examples/simple-agent/resources/test-protocol.json b/examples/simple-agent/resources/test-protocol.json
deleted file mode 100644
index 531adb34b..000000000
--- a/examples/simple-agent/resources/test-protocol.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "protocol": "test",
- "definition": {
- "labels": {
- "post": {
- "schema": "test/post"
- }
- },
- "records": {
- "post": {
- "allow": {
- "anyone": {
- "to": [
- "write"
- ]
- }
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/examples/simple-agent/src/index.js b/examples/simple-agent/src/index.js
deleted file mode 100644
index c148bb011..000000000
--- a/examples/simple-agent/src/index.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import Koa from 'koa';
-import Router from '@koa/router';
-import { koaBody } from 'koa-body';
-import cors from '@koa/cors';
-import {
- getPort,
- initializeProtocols,
- loadConfig,
- receiveHttp,
-} from './utils.js';
-
-await loadConfig();
-await initializeProtocols();
-
-const port = await getPort(process.argv);
-const router = new Router();
-const server = new Koa();
-
-router.post('/dwn', async (ctx, _next) => {
- try {
- const response = await receiveHttp(ctx);
-
- console.log('SIMPLE AGENT receiveHTTP response:', response);
-
- // // All DWN MessageReply responses contain a `status` object.
- // // DWN RecordsQuery responses contain an `entries` array of query results.
- // // DWN RecordsRead responses contain a data property which is a Readable stream.
- // const { message, ...retainedResponse } = response;
-
- // ctx.body = retainedResponse;
- // ctx.status = retainedResponse?.status?.code;
- // ctx.statusText = retainedResponse?.status?.detail;
- }
- catch(err) {
- console.error(err);
- ctx.status = 400;
- ctx.body = err;
- return;
- }
- return;
-});
-
-server
- .use(cors())
- .use(koaBody({
- multipart: true,
- }))
- .use(router.routes())
- .use(router.allowedMethods());
-
-
-server.listen(port);
-
-console.log(`listening on port ${port}`);
\ No newline at end of file
diff --git a/examples/simple-agent/src/utils.js b/examples/simple-agent/src/utils.js
deleted file mode 100644
index d2782cfc5..000000000
--- a/examples/simple-agent/src/utils.js
+++ /dev/null
@@ -1,119 +0,0 @@
-import getRawBody from 'raw-body';
-import { DataStoreLevel, Dwn, EventLogLevel, MessageStoreLevel } from '@tbd54566975/dwn-sdk-js';
-import { Web5 } from '@tbd54566975/web5';
-import fs from 'node:fs';
-import mkdirp from 'mkdirp';
-import { createRequire } from 'node:module';
-
-// Use custom names for the block, message, and data stores to make it possible to launch multiple simple agents
-// in the same directory. If you don't do this, you will get LevelDB lock errors.
-const port = await getPort(process.argv);
-const dataStore = new DataStoreLevel({ blockstoreLocation: `DATASTORE-${port}` });
-const eventLog = new EventLogLevel({ location: `EVENTLOG-${port}` });
-const messageStore = new MessageStoreLevel({
- blockstoreLocation : `MESSAGESTORE-${port}`,
- indexLocation : `INDEX-${port}`,
-});
-
-const dwnNode = await Dwn.create({ dataStore, eventLog, messageStore });
-
-export const web5 = new Web5({ dwn: { node: dwnNode }});
-
-const etcPath = './etc';
-const didStoragePath = `${etcPath}/did.json`;
-let didState;
-
-const require = createRequire(import.meta.url);
-const testProtocol = require('../resources/test-protocol.json');
-const protocols = [testProtocol];
-
-export async function getPort(processArgv) {
- const defaultPort = 8080;
-
- // Find the -p option and get the port number
- const portIndex = processArgv.indexOf('-p');
- let port = portIndex !== -1 ? processArgv[portIndex + 1] : null;
-
- // Use the port number provided, if valid, or fall back to the default
- port = (port && /^\d+$/.test(port)) ? parseInt(port) : defaultPort;
-
- return port;
-}
-
-export async function loadConfig() {
- if (!fs.existsSync(etcPath)) {
- // ensure that directory for persistent storage exists
- mkdirp.sync(etcPath);
- }
-
- if (fs.existsSync(didStoragePath)) {
- console.log('Importing existing DID and keys...');
- const didStateJson = fs.readFileSync(didStoragePath, { encoding: 'utf-8' });
- didState = JSON.parse(didStateJson);
- } else {
- console.log('Initializing operator DID and keys...');
- didState = await initOperatorDid();
- fs.writeFileSync(didStoragePath, JSON.stringify(didState, null, 2));
- }
- web5.did.manager.set(didState.id, {
- connected: true,
- endpoint: 'app://dwn',
- keys: { ['#dwn']: { keyPair: didState.keys[0].keyPair} },
- });
-}
-
-export async function initOperatorDid() {
- const operatorDid = await web5.did.create('ion', {
- services: [
- {
- 'id': 'dwn',
- 'type': 'DecentralizedWebNode',
- 'serviceEndpoint': {
- 'nodes': ['http://localhost:8085/dwn', 'http://localhost:8086/dwn', 'http://localhost:8087/dwn'],
- },
- },
- ],
- });
- return operatorDid;
-}
-
-export async function initializeProtocols() {
- for (let { protocol, definition } of protocols) {
- const queryResponse = await web5.dwn.protocols.query(didState.id, {
- author: didState.id,
- message: {
- filter: { protocol },
- },
- });
-
- const [ existingProtocol ] = queryResponse.entries;
-
- if (existingProtocol) {
- continue;
- }
-
- const _ = await web5.dwn.protocols.configure(didState.id, {
- author: didState.id,
- message: { protocol, definition },
- });
- }
-}
-
-export async function receiveHttp(ctx) {
- const encodedMessage = ctx.get(web5.transports.http.ENCODED_MESSAGE_HEADER);
- if (!encodedMessage) throw 'Message is missing or malformed';
-
- let { target, author, ...message } = await web5.transports.http.decodeMessage(encodedMessage);
-
- if (!author || !target || !message) {
- throw new Error('DWN-MESSAGE missing target, author, or message!');
- }
-
- const data = await getRawBody(ctx.req);
-
- return await web5.send(target, {
- author,
- data,
- message,
- });
-}
diff --git a/examples/test-dashboard/simple-agent.html b/examples/test-dashboard/simple-agent.html
deleted file mode 100644
index cff04b2c0..000000000
--- a/examples/test-dashboard/simple-agent.html
+++ /dev/null
@@ -1,334 +0,0 @@
-
-
-
-
-
-
-
- Local and Remote DWN Example
-
-
-
-
-
-
-
- Write Records
-
-
-
-
- Write Text Data
-
-
-
-
- Read Records
-
-
-
-
Write at least one record before running a query.
-
Query & Display
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/examples/simple-agent/.gitignore b/examples/web5-agent/.gitignore
similarity index 100%
rename from examples/simple-agent/.gitignore
rename to examples/web5-agent/.gitignore
diff --git a/examples/web5-agent/README.md b/examples/web5-agent/README.md
new file mode 100644
index 000000000..045dda009
--- /dev/null
+++ b/examples/web5-agent/README.md
@@ -0,0 +1,88 @@
+# Web5 Agent Example
+
+## Installation
+
+To run this example you'll need at least one instance of [dwn-server](https://github.com/TBD54566975/dwn-server)
+running locally.
+
+### Start DWN Server
+
+The server can be run in a Docker container or as a Node.js process. By default, the server listens on
+`http://localhost:3000`. Refer to the `dwn-server` [README](https://github.com/TBD54566975/dwn-server#README) for more detail on configuration options.
+
+**Using Docker**
+
+```shell
+docker run -p 3000:3000 ghcr.io/tbd54566975/dwn-server:main
+```
+
+**Using a Local Repository Clone**
+
+```shell
+git clone https://github.com/TBD54566975/dwn-server.git
+cd dwn-server/
+npm install && npm run server
+```
+
+### Start the Web5 Agent
+
+Start a web server that serves the in-browser Web5 Agent HTML and JS files from disk.
+
+```shell
+cd examples/web5-agent/
+npm install && npm run server
+```
+
+The Web5 Agent is now accessible at `http://localhost:8080`.
+
+## Usage
+
+Navigate to [http://localhost:8080/](http://localhost:8080/) in a web browser.
+
+When you load (or refresh) the page, you'll see the result of the CRUD operations happening live with the in-browser
+DWN and the `dwn-server` instance over HTTP.
+
+## Local Development
+
+If you want to use a local clone of the `web5-js` repository with the Web5 Agent example instead of a published
+package follow the steps below.
+
+### Build Web5 JS Bundles
+
+First, build the `web5-js` bundles for node and browser environments:
+
+```shell
+cd web5-js/
+npm install
+npm run build
+```
+
+The bundles are output to the `dist/` sub-directory.
+
+### Use Package Linking
+
+To enable use of the local `web5-js` package by `web5-agent`,
+use package linking. Package linking is a two-step process:
+
+1. First `npm link` in the `web5-js` package to create a symlink
+in the global folder `{prefix}/lib/node_modules/web5-js`:
+ ```shell
+ cd web5-js/
+ npm link
+ ```
+
+2. Next, in the `web5-agent` directory, run the commands below to install package dependencies, and create a symbolic
+ link from the globally-installed `web5-js` package to the `node_modules/` of the current directory:
+ ```shell
+ cd examples/web5-agent/
+ npm install
+ npm link @tbd54566975/web5
+ ```
+
+Then comment out the import of the published package and uncomment the local import, such that it reads:
+```javascript
+// import { Web5 } from 'https://unpkg.com/@tbd54566975/web5@0.6.0/dist/browser.mjs';
+import { Web5 } from './browser.mjs';
+```
+
+Now, whenever you use the `web5-agent` example it will use the local development instance of `web5-js`.
diff --git a/examples/web5-agent/assets/images/android-chrome-192x192.png b/examples/web5-agent/assets/images/android-chrome-192x192.png
new file mode 100644
index 000000000..547ade343
Binary files /dev/null and b/examples/web5-agent/assets/images/android-chrome-192x192.png differ
diff --git a/examples/web5-agent/assets/images/android-chrome-512x512.png b/examples/web5-agent/assets/images/android-chrome-512x512.png
new file mode 100644
index 000000000..112f2116e
Binary files /dev/null and b/examples/web5-agent/assets/images/android-chrome-512x512.png differ
diff --git a/examples/web5-agent/assets/images/apple-touch-icon.png b/examples/web5-agent/assets/images/apple-touch-icon.png
new file mode 100644
index 000000000..9c1be78da
Binary files /dev/null and b/examples/web5-agent/assets/images/apple-touch-icon.png differ
diff --git a/examples/web5-agent/assets/images/browserconfig.xml b/examples/web5-agent/assets/images/browserconfig.xml
new file mode 100644
index 000000000..3425fd721
--- /dev/null
+++ b/examples/web5-agent/assets/images/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #603cba
+
+
+
diff --git a/examples/web5-agent/assets/images/checked.svg b/examples/web5-agent/assets/images/checked.svg
new file mode 100644
index 000000000..a78af8286
--- /dev/null
+++ b/examples/web5-agent/assets/images/checked.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/web5-agent/assets/images/favicon-16x16.png b/examples/web5-agent/assets/images/favicon-16x16.png
new file mode 100644
index 000000000..2686cc473
Binary files /dev/null and b/examples/web5-agent/assets/images/favicon-16x16.png differ
diff --git a/examples/web5-agent/assets/images/favicon-32x32.png b/examples/web5-agent/assets/images/favicon-32x32.png
new file mode 100644
index 000000000..ea1c569fc
Binary files /dev/null and b/examples/web5-agent/assets/images/favicon-32x32.png differ
diff --git a/examples/web5-agent/assets/images/favicon.ico b/examples/web5-agent/assets/images/favicon.ico
new file mode 100644
index 000000000..909074cb4
Binary files /dev/null and b/examples/web5-agent/assets/images/favicon.ico differ
diff --git a/examples/web5-agent/assets/images/moon.svg b/examples/web5-agent/assets/images/moon.svg
new file mode 100644
index 000000000..fad89a4ea
--- /dev/null
+++ b/examples/web5-agent/assets/images/moon.svg
@@ -0,0 +1,7 @@
+
+
+
+ moon
+
+
+
diff --git a/examples/web5-agent/assets/images/mstile-144x144.png b/examples/web5-agent/assets/images/mstile-144x144.png
new file mode 100644
index 000000000..0839af45c
Binary files /dev/null and b/examples/web5-agent/assets/images/mstile-144x144.png differ
diff --git a/examples/web5-agent/assets/images/mstile-150x150.png b/examples/web5-agent/assets/images/mstile-150x150.png
new file mode 100644
index 000000000..888f05ffb
Binary files /dev/null and b/examples/web5-agent/assets/images/mstile-150x150.png differ
diff --git a/examples/web5-agent/assets/images/mstile-310x150.png b/examples/web5-agent/assets/images/mstile-310x150.png
new file mode 100644
index 000000000..07fb6c8f1
Binary files /dev/null and b/examples/web5-agent/assets/images/mstile-310x150.png differ
diff --git a/examples/web5-agent/assets/images/mstile-310x310.png b/examples/web5-agent/assets/images/mstile-310x310.png
new file mode 100644
index 000000000..d674c0438
Binary files /dev/null and b/examples/web5-agent/assets/images/mstile-310x310.png differ
diff --git a/examples/web5-agent/assets/images/mstile-70x70.png b/examples/web5-agent/assets/images/mstile-70x70.png
new file mode 100644
index 000000000..639d0a168
Binary files /dev/null and b/examples/web5-agent/assets/images/mstile-70x70.png differ
diff --git a/examples/web5-agent/assets/images/safari-pinned-tab.svg b/examples/web5-agent/assets/images/safari-pinned-tab.svg
new file mode 100644
index 000000000..873d17b91
--- /dev/null
+++ b/examples/web5-agent/assets/images/safari-pinned-tab.svg
@@ -0,0 +1,21 @@
+
+
+
+
+Created by potrace 1.14, written by Peter Selinger 2001-2017
+
+
+
+
+
+
diff --git a/examples/web5-agent/assets/images/site.webmanifest b/examples/web5-agent/assets/images/site.webmanifest
new file mode 100644
index 000000000..4b16fb0fd
--- /dev/null
+++ b/examples/web5-agent/assets/images/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/assets/images/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/assets/images/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/examples/web5-agent/assets/images/sun.svg b/examples/web5-agent/assets/images/sun.svg
new file mode 100644
index 000000000..0b18941cf
--- /dev/null
+++ b/examples/web5-agent/assets/images/sun.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/web5-agent/assets/images/unchecked.svg b/examples/web5-agent/assets/images/unchecked.svg
new file mode 100644
index 000000000..67023305b
--- /dev/null
+++ b/examples/web5-agent/assets/images/unchecked.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/web5-agent/assets/js/copy-to-clipboard.js b/examples/web5-agent/assets/js/copy-to-clipboard.js
new file mode 100644
index 000000000..d94a4f1ce
--- /dev/null
+++ b/examples/web5-agent/assets/js/copy-to-clipboard.js
@@ -0,0 +1,59 @@
+export function initCodeCopy() {
+ const codeBlocks = document.querySelectorAll('code[class*="language-"]');
+
+ codeBlocks.forEach((block) => {
+ const lang = parseLanguage(block);
+ const blockParent = block.parentElement;
+ const parentOfBlockParent = block.parentElement.parentElement;
+
+ // Only add to code blocks and not inline code snippets.
+ if (blockParent.tagName === 'PRE') {
+ const wrapper = document.createElement('div');
+ wrapper.className = 'code-wrapper';
+ parentOfBlockParent.insertBefore(wrapper, blockParent);
+ wrapper.append(block.parentElement);
+
+ const copyBtn = document.createElement('button');
+ copyBtn.setAttribute('class', 'copy-button');
+ copyBtn.setAttribute('data-lang', lang);
+ copyBtn.innerHTML = `${lang}
`;
+
+ wrapper.insertAdjacentElement('beforeend', copyBtn);
+ }
+ });
+
+ function parseLanguage(block) {
+ const className = block.className;
+ if (className.startsWith('language')) {
+ const [_prefix, lang] = className.split('-');
+ return lang;
+ }
+ }
+
+ function copy(e) {
+ const btn = e.currentTarget;
+ const lang = btn.dataset.lang;
+
+ const text = e.currentTarget.previousSibling.children[0].textContent;
+
+ navigator.clipboard.writeText(text)
+ .then(
+ () => {
+ btn.innerHTML = `copied!
`;
+ btn.setAttribute('style', 'opacity: 1');
+ },
+ () => alert('failed to copy'),
+ );
+
+ setTimeout(() => {
+ btn.removeAttribute('style');
+ btn.innerHTML = `${lang}
`;
+ }, 3000);
+ }
+
+ const copyButtons = document.querySelectorAll('.copy-button');
+
+ copyButtons.forEach((btn) => {
+ btn.addEventListener('click', copy);
+ });
+}
diff --git a/examples/web5-agent/assets/js/utils.js b/examples/web5-agent/assets/js/utils.js
new file mode 100644
index 000000000..8af45a901
--- /dev/null
+++ b/examples/web5-agent/assets/js/utils.js
@@ -0,0 +1,71 @@
+function setStdoutRowCounts(dateType) {
+ const stdoutElements = document.querySelectorAll(`[data-type="${dateType}"]`);
+
+ stdoutElements.forEach((element) => {
+ const stdoutScrollerElement = element.querySelector(':scope div.stdout-scroller');
+ const stdoutRowElements = stdoutScrollerElement.querySelectorAll(':scope > div');
+ const stdoutRowCount = stdoutRowElements.length;
+
+ const stdoutLineCountElement = element.querySelector(':scope div.stdout-line-count');
+ stdoutLineCountElement.textContent = `* ${stdoutRowCount} row${stdoutRowCount == 1 ? '' : 's' }`;
+ });
+}
+
+function generateStdoutElement(containerId, title) {
+ const containerElement = document.querySelector(`#${containerId}`);
+
+ // Create header element.
+ const stdoutHeader = document.createElement('div');
+ stdoutHeader.classList.add('stdout-header');
+ stdoutHeader.classList.add('stdout-clear');
+ const stdoutHeaderLeft = document.createElement('div');
+ stdoutHeaderLeft.classList.add('stdout-left');
+ stdoutHeaderLeft.textContent = title;
+ const stdoutHeaderRight = document.createElement('div');
+ stdoutHeaderRight.classList.add('stdout-right');
+ stdoutHeaderRight.classList.add('stdout-line-count');
+ stdoutHeader.appendChild(stdoutHeaderLeft);
+ stdoutHeader.appendChild(stdoutHeaderRight);
+
+ // Create scroller element.
+ const stdoutScroller = document.createElement('div');
+ stdoutScroller.classList.add('stdout-scroller');
+
+ // Create wrapper element
+ const stdoutWrapper = document.createElement('div');
+ stdoutWrapper.classList.add('stdout-wrapper');
+ stdoutWrapper.appendChild(stdoutHeader);
+ stdoutWrapper.appendChild(stdoutScroller);
+
+ // Create container element.
+ const stdoutContainer = document.createElement('div');
+ stdoutContainer.dataset.title = title;
+ stdoutContainer.dataset.type = 'stdout';
+ stdoutContainer.appendChild(stdoutWrapper);
+
+ containerElement.appendChild(stdoutContainer);
+}
+
+function appendStdoutLine(containerId, lineContent) {
+ const containerElement = document.querySelector(`#${containerId}`);
+ const stdoutScrollerElement = containerElement.querySelector(':scope div.stdout-scroller');
+
+ // Count the number of existing output rows.
+ const stdoutRowElements = stdoutScrollerElement.querySelectorAll(':scope > div');
+ const stdoutRowCount = stdoutRowElements.length;
+
+ // Create line container element.
+ const stdoutLineContainer = document.createElement('div');
+ stdoutLineContainer.classList.add('stdout-line-wrap');
+ stdoutLineContainer.dataset.line = stdoutRowCount + 1;
+
+ // Create line element.
+ const stdoutLine = document.createElement('div');
+ stdoutLine.classList.add('stdout-line-code');
+ stdoutLine.classList.add('stdout-nowrap');
+ stdoutLine.textContent = lineContent;
+
+ // Append elements.
+ stdoutLineContainer.appendChild(stdoutLine);
+ stdoutScrollerElement.appendChild(stdoutLineContainer);
+}
diff --git a/examples/web5-agent/assets/styles/dark.css b/examples/web5-agent/assets/styles/dark.css
new file mode 100644
index 000000000..cdf6a02ce
--- /dev/null
+++ b/examples/web5-agent/assets/styles/dark.css
@@ -0,0 +1,21 @@
+:root {
+ color-scheme: dark; /* stylelint-disable-line property-no-unknown */
+
+ --app-color-background: hsl(0, 0%, 10%);
+ --app-color-foreground: hsl(0, 0%, 96%);
+
+ /* Code snippets and output shared */
+ --color-code-border: rgb(26, 36, 51);
+
+ /* Code output examples */
+ --stdout-color-background: rgb(16, 22, 31);
+ --stdout-color-divider: rgb(25, 34, 48);
+ --stdout-color-foreground: rgb(224, 224, 224);
+ --stdout-color-header: rgb(30, 41, 58);
+ --stdout-color-line-background-active: rgb(42, 58, 81);
+ --stdout-color-line-background-even: rgb(13, 18, 26);
+ --stdout-color-line-background-hover: rgb(26, 36, 51);
+ --stdout-color-line-background-odd: rgb(19, 26, 36);
+ --stdout-color-line-code: rgb(144, 152, 159);
+ --stdout-color-line-number: rgb(93, 101, 108);
+}
diff --git a/examples/web5-agent/assets/styles/global.css b/examples/web5-agent/assets/styles/global.css
new file mode 100644
index 000000000..36ae3c69e
--- /dev/null
+++ b/examples/web5-agent/assets/styles/global.css
@@ -0,0 +1,75 @@
+@import url('reset.css');
+@import url('theme-switch.css');
+@import url('https://unpkg.com/prism-theme-night-owl@1.4.0/build/style.css');
+@import url('snippets.css');
+@import url('stdout.css');
+
+:root {
+ --font-family: 'IBM Plex Mono';
+ --color-tbd-blue: #24f2ff;
+ --color-tbd-purple: #9a1aff;
+ --color-tbd-yellow: rgb(255, 236, 25);
+ --color-tbd-red: rgb(255, 80, 53);
+}
+
+html,
+body {
+ font-family: var(--font-family);
+ color: var(--app-color-foreground);
+ background-color: var(--app-color-background);
+ transition: background-color 0.3s ease, color 0.3s ease;
+}
+
+body {
+ display: flex;
+ flex-direction: column;
+ overflow-x: hidden;
+ max-width: 900px;
+ min-height: 100vh;
+}
+
+@media only screen {
+ main {
+ margin: 0px auto;
+ max-width: 600px;
+ padding: 0px 1rem;
+ }
+}
+
+@media only screen and (min-width: 769px) {
+ main {
+ margin: 0px auto;
+ max-width: 768px;
+ padding: 0px 4rem;
+ }
+}
+
+@media only screen and (min-width: 1025px) {
+ main {
+ margin: 0px auto;
+ max-width: 1024px;
+ padding: 0px 6rem;
+ }
+}
+
+@media only screen and (min-width: 1281px) {
+ main {
+ margin: 0px auto;
+ max-width: 1280px;
+ padding: 0px 6rem;
+ }
+}
+
+/* Customization for Simple Agent Example */
+h2 {
+ margin: 2rem 0 1rem 0;
+}
+
+h3 {
+ margin: 1rem 0 1rem 0;
+}
+
+main p {
+ margin-bottom: 1rem;
+ margin-top: 1rem;
+}
diff --git a/examples/web5-agent/assets/styles/light.css b/examples/web5-agent/assets/styles/light.css
new file mode 100644
index 000000000..ab5d8b052
--- /dev/null
+++ b/examples/web5-agent/assets/styles/light.css
@@ -0,0 +1,21 @@
+:root {
+ color-scheme: light; /* stylelint-disable-line property-no-unknown */
+
+ --app-color-background: hsl(225, 16.9%, 85%);
+ --app-color-foreground: hsl(0, 0%, 0%);
+
+ /* Code snippets and output shared */
+ --color-code-border: rgb(236, 236, 236);
+
+ /* Code output examples */
+ --stdout-color-background: rgb(240, 240, 240);
+ --stdout-color-divider: rgb(253, 253, 253);
+ --stdout-color-foreground: rgb(64, 64, 64);
+ --stdout-color-header: rgb(255, 255, 255);
+ --stdout-color-line-code: rgb(64, 73, 79);
+ --stdout-color-line-background-active: rgb(255, 255, 255);
+ --stdout-color-line-background-even: rgb(236, 236, 236);
+ --stdout-color-line-background-hover: rgb(255, 255, 255);
+ --stdout-color-line-background-odd: rgb(244, 244, 244);
+ --stdout-color-line-number: rgb(18, 21, 23);
+}
diff --git a/examples/web5-agent/assets/styles/reset.css b/examples/web5-agent/assets/styles/reset.css
new file mode 100644
index 000000000..f1209094d
--- /dev/null
+++ b/examples/web5-agent/assets/styles/reset.css
@@ -0,0 +1,58 @@
+/*
+ 1. Use a more-intuitive box-sizing model.
+*/
+*, *::before, *::after {
+ box-sizing: border-box;
+}
+/*
+ 2. Remove default margin
+*/
+* {
+ margin: 0;
+}
+/*
+ 3. Allow percentage-based heights in the application
+*/
+html, body {
+ height: 100%;
+}
+/*
+ Typographic tweaks!
+ 4. Add accessible line-height
+ 5. Improve text rendering
+*/
+body {
+ line-height: 1.5;
+ -webkit-font-smoothing: antialiased;
+}
+/*
+ 6. Improve media defaults
+*/
+img, picture, video, canvas, svg {
+ display: block;
+ max-width: 100%;
+}
+/*
+ 7. Remove built-in form typography styles
+*/
+input, button, textarea, select {
+ font: inherit;
+}
+/*
+ 8. Avoid text overflows
+*/
+p, h1, h2, h3, h4, h5, h6 {
+ overflow-wrap: break-word;
+}
+/*
+ 9. Create a root stacking context
+*/
+#root, #__next {
+ isolation: isolate;
+}
+
+ul {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
\ No newline at end of file
diff --git a/examples/web5-agent/assets/styles/snippets.css b/examples/web5-agent/assets/styles/snippets.css
new file mode 100644
index 000000000..54641fc5f
--- /dev/null
+++ b/examples/web5-agent/assets/styles/snippets.css
@@ -0,0 +1,53 @@
+.code-wrapper {
+ border: 1px solid var(--color-code-border);
+ border-radius: 8px;
+ margin: 1rem 0;
+ overflow: hidden;
+ position: relative;
+}
+
+.code-wrapper > pre[class*="language-"] {
+ margin-top: 0;
+}
+
+.copy-button {
+ align-items: center;
+ background: transparent;
+ background-color: #131a24;
+ border: none;
+ color: rgb(230, 202, 168);
+ cursor: pointer;
+ display: flex;
+ line-height: 1rem;
+ position: absolute;
+ right: 5px;
+ top: 5px;
+}
+
+.copy-button svg {
+ margin-left: 0.25rem;
+ opacity: 0.5;
+ transition: opacity 0.3s;
+ width: 1rem;
+}
+
+.copy-button:hover svg {
+ opacity: 1;
+}
+
+:not(pre)>code[class*=language-],pre[class*=language-] {
+ color: #fff;
+ background: #131a24;
+}
+
+pre[class*=language-] {
+ margin-bottom: 0;
+ margin-top: 0;
+ overflow: auto;
+ padding: 1.5rem;
+}
+
+code[class*="language-"],
+ pre[class*="language-"] {
+ line-height: 1.6rem;
+}
diff --git a/examples/web5-agent/assets/styles/stdout.css b/examples/web5-agent/assets/styles/stdout.css
new file mode 100644
index 000000000..f3085fed8
--- /dev/null
+++ b/examples/web5-agent/assets/styles/stdout.css
@@ -0,0 +1,140 @@
+.stdout-wrapper {
+ background-color: var(--stdout-color-background);
+ border: 1px solid var(--color-code-border);
+ border-radius: 5px;
+ box-sizing: border-box;
+ color: var(--stdout-color-foreground);
+ display: block;
+ margin: 1rem 0;
+ padding: 5px;
+ position: relative;
+}
+
+.stdout-wrapper *,.stdout-wrapper :after,.stdout-wrapper :before {
+ background-color: transparent;
+ border: 0;
+ box-sizing: border-box;
+ font-size: 13px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ list-style: none;
+ margin: 0;
+ outline: 0;
+ padding: 0;
+}
+
+.stdout-wrapper .stdout-header {
+ background-color: var(--stdout-color-header);
+ border-radius: 3px;
+ color: var(--stdout-color-foreground);
+ margin: 0 0 5px 0;
+ padding: 6px 8px 4px 8px;
+}
+
+.stdout-wrapper .stdout-scroller {
+ display: grid;
+ grid-auto-rows: min-content;
+ margin: 0;
+ max-height: 600px;
+ overflow: hidden;
+ padding: 0;
+}
+
+
+.stdout-wrapper .stdout-scroller:hover {
+ overflow: auto;
+}
+
+.stdout-wrapper .stdout-scroller.stdout-nonums .stdout-line-wrap:after {
+ display: none;
+}
+
+.stdout-wrapper .stdout-scroller.stdout-nonums .stdout-line-code {
+ border-left: none;
+ margin-left: 0;
+ padding-left: 10px;
+}
+
+.stdout-wrapper .stdout-line-wrap {
+ border-radius: 3px;
+ display: grid;
+ grid-template-columns: 100% 1fr;
+ margin: 0;
+ overflow: visible;
+ padding: 0;
+ position: relative;
+}
+
+.stdout-wrapper .stdout-line-wrap .stdout-line-code {
+ border-left: 1px solid var(--stdout-color-divider);
+ color: var(--stdout-color-line-code);
+ margin-left: 60px;
+ padding: 2px 0 2px 10px;
+ padding-right: 0;
+}
+
+.stdout-wrapper .stdout-line-wrap:after {
+ color: var(--stdout-color-line-number);
+ content: attr(data-line);
+ cursor: default;
+ display: inline-block;
+ left: 0;
+ margin: 0;
+ padding: 2px 0;
+ position: absolute;
+ text-align: right;
+ top: 0;
+ user-select: none;
+ width: 50px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+}
+
+.stdout-wrapper .stdout-line-wrap:nth-child(odd) {
+ background-color: var(--stdout-color-line-background-odd);
+}
+
+.stdout-wrapper .stdout-line-wrap:nth-child(even) {
+ background-color: var(--stdout-color-line-background-even);
+}
+
+.stdout-wrapper .stdout-line-wrap:hover {
+ background-color: var(--stdout-color-line-background-hover);
+}
+
+.stdout-wrapper .stdout-line-wrap:active {
+ background-color: var(--stdout-color-line-background-active);
+}
+
+.stdout-left {
+ float: left;
+}
+
+.stdout-right {
+ float: right;
+}
+
+.stdout-clear:after {
+ border: none;
+ clear: both;
+ content: ".";
+ display: block;
+ height: 0;
+ margin: 0;
+ padding: 0;
+ visibility: hidden;
+}
+
+.stdout-nowrap {
+ white-space: pre;
+ word-break: keep-all;
+ word-wrap: normal;
+}
+
+.stdout-wordwrap {
+ white-space: pre-wrap;
+ word-break: break-all;
+ word-wrap: break-word;
+}
diff --git a/examples/web5-agent/assets/styles/theme-switch.css b/examples/web5-agent/assets/styles/theme-switch.css
new file mode 100644
index 000000000..dfc191a50
--- /dev/null
+++ b/examples/web5-agent/assets/styles/theme-switch.css
@@ -0,0 +1,107 @@
+/**
+ * Copyright 2019 Google LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+aside {
+ position: absolute;
+ right: 0;
+ padding: 0.5rem;
+ top: 0;
+ text-align: center;
+}
+
+dark-mode-toggle {
+ --dark-mode-toggle-remember-icon-checked: url("../images/checked.svg");
+ --dark-mode-toggle-remember-icon-unchecked: url("../images/unchecked.svg");
+ --dark-mode-toggle-remember-font: 0.75rem var(--font-family);
+ --dark-mode-toggle-legend-font: bold 0.85rem var(--font-family);
+ --dark-mode-toggle-label-font: 0.85rem var(--font-family);
+ --dark-mode-toggle-color: var(--text-color);
+ --dark-mode-toggle-background-color: none;
+
+ margin-bottom: 1.5rem;
+}
+
+dark-mode-toggle.slider::part(toggleLabel) {
+ display: inline-block;
+ position: relative;
+ height: calc(var(--dark-mode-toggle-icon-size, 1rem) * 2);
+ width: calc(var(--dark-mode-toggle-icon-size, 1rem) * 3.5);
+ background-color: #b7bbbd;
+ border-radius: var(--dark-mode-toggle-icon-size, 1rem);
+ transition: 0.4s;
+}
+
+dark-mode-toggle.slider::part(toggleLabel)::before {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ top: calc(var(--dark-mode-toggle-icon-size, 1rem) * 0.25);
+ left: calc(var(--dark-mode-toggle-icon-size, 1rem) * 0.25);
+ height: calc(var(--dark-mode-toggle-icon-icon-size, 1rem) * 1.5);
+ width: calc(var(--dark-mode-toggle-icon-icon-size, 1rem) * 1.5);
+ border-radius: 100%;
+ box-shadow: 0 0.15em 0.3em rgb(0 0 0 / 15%), 0 0.2em 0.5em rgb(0 0 0 / 30%);
+ background-color: #fff;
+ color: #333;
+ transition: 0.4s;
+ content: "";
+ background-position: center;
+ background-size: var(--dark-mode-toggle-icon-icon-size, 1rem);
+ background-image: var(--dark-mode-toggle-icon-light-icon, url("../images/sun.svg"));
+ box-sizing: border-box;
+}
+
+dark-mode-toggle.slider[mode="dark"]::part(toggleLabel) {
+ background-color: #4e5255;
+}
+
+dark-mode-toggle.slider[mode="dark"]::part(toggleLabel)::before {
+ left: calc(100% - var(--dark-mode-toggle-icon-size, 1rem) * 1.75);
+ border-color: #000;
+ background-color: #ccc;
+ color: #000;
+ background-size: var(--dark-mode-toggle-icon-size, 1rem);
+ background-image: var(--dark-mode-toggle-dark-icon, url("../images/moon.svg"));
+ filter: var(--dark-mode-toggle-icon-filter, invert(100%));
+ box-shadow: 0 0.5px hsl(0deg 0% 100% / 16%);
+}
+
+dark-mode-toggle.slider::part(toggleLabel)::after {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ top: calc(var(--dark-mode-toggle-icon-size, 1rem) * 0.25);
+ left: calc(100% - var(--dark-mode-toggle-icon-size, 1rem) * 1.75);
+ height: calc(var(--dark-mode-toggle-icon-size, 1rem) * 1.5);
+ width: calc(var(--dark-mode-toggle-icon-size, 1rem) * 1.5);
+ border-radius: 100%;
+ color: #333;
+ content: "";
+ background-position: center;
+ background-size: var(--dark-mode-toggle-icon-size, 1rem);
+ background-image: var(--dark-mode-toggle-dark-icon, url("../images/moon.svg"));
+ background-repeat: no-repeat;
+ box-sizing: border-box;
+ opacity: 0.5;
+}
+
+dark-mode-toggle.slider[mode="dark"]::part(toggleLabel)::after {
+ left: calc(var(--dark-mode-toggle-icon-size, 1rem) * 0.25);
+ background-image: var(--dark-mode-toggle-light-icon, url("../images/sun.svg"));
+ filter: var(--dark-mode-toggle-icon-filter, invert(100%));
+}
diff --git a/examples/web5-agent/index.html b/examples/web5-agent/index.html
new file mode 100644
index 000000000..37cb4548d
--- /dev/null
+++ b/examples/web5-agent/index.html
@@ -0,0 +1,646 @@
+
+
+
+
+
+
+
+
Web5 Agent Example
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create Web5 App Instance
+ const web5 = new Web5();
+
+ Create DID
+ let alice = await web5.did.create('ion');
+
+console.log('ID:', alice.internalId);
+console.log('ID (long form):', alice.id);
+
+
+ Associate DID with DWN Instance
+ web5.did.manager.set(alice.id, {
+ connected: true,
+ endpoint: 'app://dwn',
+ keys: {
+ ['#dwn']: {
+ keyPair: did.keys.find(key => key.id === 'dwn').keyPair
+ }
+ }
+});
+
+ CRUD with Browser DWN
+ We'll first start by creating, reading, updating, and deleting a record using a DWN running in your web browser.
+
+ Create a Record
+ let { record, status } = await web5.dwn.records.create(alice.id, {
+ author: alice.id,
+ data: 'Hello, world!',
+ message: {
+ dataFormat: 'text/plain'
+ }
+});
+
+console.log('Status:' status);
+console.log('Record ID:', record.id);
+
+
+ Read Record Data
+ console.log(await record.data.text());
+
+
+ Update Record
+ const updateResult = await record.update({data: "Hello, I'm updated!"});
+
+console.log(await record.data.text());
+
+
+ Delete Record
+ ({ status } = await record.delete());
+
+console.log('Status:' status);
+
+
+
+ Remote DWN Server
+
+ Now that we've seen how easy it is to work with records when the DWN is running in your browser, let's try something
+ a little more interesting. We'll create a second DID for Bob and walk through how Alice and Bob can send messages to
+ each other via a remote DWN server.
+
+
+ In a real-world scenario, this DWN server would likely be publicly addressable over the Internet. Alice and Bob
+ would each have a local Web5 Agent (e.g., browser, desktop, or mobile app) that would secure their keys and manage
+ their personal DWN datastore, and by using the remote DWN server, they can interact asynchronously even if their
+ local agent is offline.
+
+
+
+ Create DIDs with Services for Alice and Bob
+
+ We'll create new DIDs for Alice and Bob that have a service endpoint defined that points to the local DWN Server
+ instance you setup when following the examples
+ README . Make sure you
+ change the port number if you choose to override the default of 3000
.
+
+ alice = await web5.did.create('ion', {
+ services: [
+ {
+ 'id': 'dwn',
+ 'type': 'DecentralizedWebNode',
+ 'serviceEndpoint': {
+ 'nodes': ['http://localhost:3000']
+ }
+ }
+ ]
+});
+
+const bob = await web5.did.create('ion', {
+ services: [
+ {
+ 'id': 'dwn',
+ 'type': 'DecentralizedWebNode',
+ 'serviceEndpoint': {
+ 'nodes': ['http://localhost:3000']
+ }
+ }
+ ]
+});
+
+console.log('Alice ID:', alice.id);
+console.log('Bob ID:', bob.id);
+
+
+
+ If you resolve the DIDs created for
+ Alice
+ or
+ Bob
+ to a DID document, you'll find that each has DecentralizedWebNode
service
+ endpoint defined:
+
+ "service": [
+ {
+ "id": "#dwn",
+ "type": "DecentralizedWebNode",
+ "serviceEndpoint": {
+ "nodes": [
+ "http://localhost:3000"
+ ]
+ }
+ }
+],
+
+ When we construct a web5.dwn.records.create()
that targets Alice's or
+ Bob's DID, Web5 JS will resolve the DID document and find that the first DWN endpoint to connect to is
+ http://localhost:3000
. Consequently, the message will be transported
+ over HTTP since the target DID's DWN endpoint specifies the http
protocol in
+ its URL. In a real-world example, this endpoint would typically be reachable over the Internet using a public IP
+ address or DNS name that resolves to a public address.
+
+
+ Define and Configure a Protocol
+
+ By default, only the owner/controller of a DWN tenant is able to create, read, update, or delete records. This is
+ enforced by checking whether the message is signed by the tenant's DID. For this example scenario, to permit
+ Alice to create a record on Bob's DWN (and vice versa), we define a
+ test
protocol that permits anyone to read and write
+ test/post
messages. Other than perhaps a public social media use case,
+ in a real-world scenario you would not typically grant anyone
this
+ level of access.
+
+ const protocolDefinition = {
+ "labels": {
+ "post": {
+ "schema": "test/post"
+ }
+ },
+ "records": {
+ "post": {
+ "allow": {
+ "anyone": {
+ "to": [
+ "read",
+ "write"
+ ]
+ }
+ }
+ }
+ }
+}
+
+ The test
protocol needs to be configured for both Alice's and Bob's DWNs
+ to permit each to create and read messages to each other as follows.
+
+ ({ status } = await web5.dwn.protocols.configure(alice.id, {
+ author: alice.id,
+ message: {
+ protocol: 'test',
+ definition: protocolDefinition
+ }
+}));
+
+console.log('Configure Protocol Alice:', status);
+
+({ status } = await web5.dwn.protocols.configure(bob.id, {
+ author: bob.id,
+ message: {
+ protocol: 'test',
+ definition: protocolDefinition
+ }
+}));
+
+console.log('Configure Protocol Bob:', status);
+
+
+ Alice Creates a Record on Bob's DWN
+ Now that a protocol has been configured to permit Alice to message Bob, let's actually do that.
+ ({ record, status } = await web5.dwn.records.create(bob.id, {
+ author: alice.id,
+ data: 'Hi, Bob!',
+ message: {
+ recipient: bob.id,
+ protocol: 'test',
+ schema: 'test/post'
+ }
+}));
+
+ Bob Reads the Message Received from Alice
+ let { entries } = await web5.dwn.records.query(bob.id, {
+ author: bob.id,
+ filter: {
+ recipient: bob.id,
+ protocol: 'test',
+ schema: 'test/post'
+ }
+});
+
+entries.forEach(async record => {
+ console.log(await record.data.text());
+});
+
+
+ Bob Sends a Reply to Alice
+ ({ record, status } = await web5.dwn.records.create(alice.id, {
+ author: bob.id,
+ data: 'Hey, Alice! Message received.',
+ message: {
+ recipient: alice.id,
+ protocol: 'test',
+ schema: 'test/post'
+ }
+ }));
+
+ Alice Reads Bob's Reply
+ ({ entries } = await web5.dwn.records.query(alice.id, {
+ author: alice.id,
+ filter: {
+ recipient: alice.id,
+ protocol: 'test',
+ schema: 'test/post'
+ }
+ }));
+
+ entries.forEach(async record => {
+ console.log(await record.data.text());
+ });
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/test-dashboard/index.js b/examples/web5-agent/index.js
similarity index 100%
rename from examples/test-dashboard/index.js
rename to examples/web5-agent/index.js
diff --git a/examples/web5-agent/package-lock.json b/examples/web5-agent/package-lock.json
new file mode 100644
index 000000000..16191e3dc
--- /dev/null
+++ b/examples/web5-agent/package-lock.json
@@ -0,0 +1,1046 @@
+{
+ "name": "example-web5-agent",
+ "version": "0.0.1",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "example-web5-agent",
+ "version": "0.0.1",
+ "license": "MIT",
+ "dependencies": {
+ "koa": "2.14.1",
+ "koa-static": "5.0.0"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cache-content-type": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz",
+ "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==",
+ "dependencies": {
+ "mime-types": "^2.1.18",
+ "ylru": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookies": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
+ "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "keygrip": "~1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw=="
+ },
+ "node_modules/delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "dependencies": {
+ "has-symbols": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/http-assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
+ "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==",
+ "dependencies": {
+ "deep-equal": "~1.0.1",
+ "http-errors": "~1.8.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/http-assert/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-assert/node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/http-assert/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "dependencies": {
+ "has-tostringtag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/keygrip": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
+ "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
+ "dependencies": {
+ "tsscmp": "1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.1.tgz",
+ "integrity": "sha512-USJFyZgi2l0wDgqkfD27gL4YGno7TfUkcmOe6UOLFOVuN+J7FwnNu4Dydl4CUQzraM1lBAiGed0M9OVJoT0Kqw==",
+ "dependencies": {
+ "accepts": "^1.3.5",
+ "cache-content-type": "^1.0.0",
+ "content-disposition": "~0.5.2",
+ "content-type": "^1.0.4",
+ "cookies": "~0.8.0",
+ "debug": "^4.3.2",
+ "delegates": "^1.0.0",
+ "depd": "^2.0.0",
+ "destroy": "^1.0.4",
+ "encodeurl": "^1.0.2",
+ "escape-html": "^1.0.3",
+ "fresh": "~0.5.2",
+ "http-assert": "^1.3.0",
+ "http-errors": "^1.6.3",
+ "is-generator-function": "^1.0.7",
+ "koa-compose": "^4.1.0",
+ "koa-convert": "^2.0.0",
+ "on-finished": "^2.3.0",
+ "only": "~0.0.2",
+ "parseurl": "^1.3.2",
+ "statuses": "^1.5.0",
+ "type-is": "^1.6.16",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4"
+ }
+ },
+ "node_modules/koa-compose": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz",
+ "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw=="
+ },
+ "node_modules/koa-convert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz",
+ "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==",
+ "dependencies": {
+ "co": "^4.6.0",
+ "koa-compose": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/koa-send": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz",
+ "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==",
+ "dependencies": {
+ "debug": "^4.1.1",
+ "http-errors": "^1.7.3",
+ "resolve-path": "^1.4.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/koa-send/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/koa-send/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa-send/node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa-send/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/koa-send/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa-static": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz",
+ "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==",
+ "dependencies": {
+ "debug": "^3.1.0",
+ "koa-send": "^5.0.0"
+ },
+ "engines": {
+ "node": ">= 7.6.0"
+ }
+ },
+ "node_modules/koa-static/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/koa-static/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/koa/node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/koa/node_modules/http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa/node_modules/http-errors/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/koa/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/koa/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/only": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz",
+ "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ=="
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-path": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz",
+ "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==",
+ "dependencies": {
+ "http-errors": "~1.6.2",
+ "path-is-absolute": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/resolve-path/node_modules/depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/resolve-path/node_modules/http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "dependencies": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/resolve-path/node_modules/inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "node_modules/resolve-path/node_modules/setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "node_modules/resolve-path/node_modules/statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "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/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tsscmp": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
+ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==",
+ "engines": {
+ "node": ">=0.6.x"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/ylru": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz",
+ "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ }
+ },
+ "dependencies": {
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "requires": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ }
+ },
+ "cache-content-type": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz",
+ "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==",
+ "requires": {
+ "mime-types": "^2.1.18",
+ "ylru": "^1.2.0"
+ }
+ },
+ "co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "requires": {
+ "safe-buffer": "5.2.1"
+ }
+ },
+ "content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
+ },
+ "cookies": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
+ "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
+ "requires": {
+ "depd": "~2.0.0",
+ "keygrip": "~1.1.0"
+ }
+ },
+ "deep-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
+ "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw=="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "http-assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz",
+ "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==",
+ "requires": {
+ "deep-equal": "~1.0.1",
+ "http-errors": "~1.8.0"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
+ },
+ "http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "keygrip": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz",
+ "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==",
+ "requires": {
+ "tsscmp": "1.0.6"
+ }
+ },
+ "koa": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.1.tgz",
+ "integrity": "sha512-USJFyZgi2l0wDgqkfD27gL4YGno7TfUkcmOe6UOLFOVuN+J7FwnNu4Dydl4CUQzraM1lBAiGed0M9OVJoT0Kqw==",
+ "requires": {
+ "accepts": "^1.3.5",
+ "cache-content-type": "^1.0.0",
+ "content-disposition": "~0.5.2",
+ "content-type": "^1.0.4",
+ "cookies": "~0.8.0",
+ "debug": "^4.3.2",
+ "delegates": "^1.0.0",
+ "depd": "^2.0.0",
+ "destroy": "^1.0.4",
+ "encodeurl": "^1.0.2",
+ "escape-html": "^1.0.3",
+ "fresh": "~0.5.2",
+ "http-assert": "^1.3.0",
+ "http-errors": "^1.6.3",
+ "is-generator-function": "^1.0.7",
+ "koa-compose": "^4.1.0",
+ "koa-convert": "^2.0.0",
+ "on-finished": "^2.3.0",
+ "only": "~0.0.2",
+ "parseurl": "^1.3.2",
+ "statuses": "^1.5.0",
+ "type-is": "^1.6.16",
+ "vary": "^1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
+ }
+ }
+ },
+ "koa-compose": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz",
+ "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw=="
+ },
+ "koa-convert": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz",
+ "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==",
+ "requires": {
+ "co": "^4.6.0",
+ "koa-compose": "^4.1.0"
+ }
+ },
+ "koa-send": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz",
+ "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==",
+ "requires": {
+ "debug": "^4.1.1",
+ "http-errors": "^1.7.3",
+ "resolve-path": "^1.4.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
+ },
+ "http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
+ }
+ }
+ },
+ "koa-static": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz",
+ "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==",
+ "requires": {
+ "debug": "^3.1.0",
+ "koa-send": "^5.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ }
+ }
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "only": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz",
+ "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ=="
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+ },
+ "resolve-path": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz",
+ "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==",
+ "requires": {
+ "http-errors": "~1.6.2",
+ "path-is-absolute": "1.0.1"
+ },
+ "dependencies": {
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
+ },
+ "tsscmp": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
+ "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
+ },
+ "ylru": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz",
+ "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA=="
+ }
+ }
+}
diff --git a/examples/web5-agent/package.json b/examples/web5-agent/package.json
new file mode 100644
index 000000000..46b379297
--- /dev/null
+++ b/examples/web5-agent/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "example-web5-agent",
+ "version": "0.0.1",
+ "description": "Simple in-browser Web5 Agent to demonstrate using the Web5-js library",
+ "main": "index.js",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "server": "node index.js"
+ },
+ "keywords": [],
+ "author": {
+ "name": "Frank Hinek",
+ "email": "frankhinek@tbd.email"
+ },
+ "license": "MIT",
+ "dependencies": {
+ "koa": "2.14.1",
+ "koa-static": "5.0.0"
+ }
+}
diff --git a/examples/test-dashboard/desktop-agent-original.html b/examples/web5-proxy-agent/desktop-agent-original.html
similarity index 100%
rename from examples/test-dashboard/desktop-agent-original.html
rename to examples/web5-proxy-agent/desktop-agent-original.html
diff --git a/examples/test-dashboard/desktop-agent.html b/examples/web5-proxy-agent/index.html
similarity index 98%
rename from examples/test-dashboard/desktop-agent.html
rename to examples/web5-proxy-agent/index.html
index ce4aed003..99e6995bb 100644
--- a/examples/test-dashboard/desktop-agent.html
+++ b/examples/web5-proxy-agent/index.html
@@ -289,7 +289,6 @@